(57)【特許請求の範囲】
【請求項１】
ネットワーク・エンドポイント・システムによって実装されるネットワーク・プロトコル・スタックのアプリケーション層で動作しているデータ・コンシューマの代わりに、種々の優先順位のネットワーク・データを受信するように適合されたネットワーク・エンドポイント・システムであって、
前記ネットワーク・データを含むネットワーク・フレームを受信するように適合されたネットワーク・インターフェース・カードと、
各々が関連付けられた優先順位を有する複数のネットワーク・データ処理チャネルと、
前記ネットワーク・データの優先順位に従って優先順位ベースで前記ネットワーク・データを前記ネットワーク・インターフェース・カードから前記複数のデータ処理チャネルに転送するように適合された優先順位処理論理と、
を含み、
前記複数のネットワーク・データ処理チャネルは、前記ネットワーク・データに対応するバッファ記述子を含んだ複数のリング・バッファを含み、
前記優先順位処理論理は、前記ネットワーク・フレームを検査し、前記ネットワーク・データ優先順位に従って優先順位ベースで前記バッファ記述子を前記複数のリング・バッファに配送するように適合された前記ネットワーク・インターフェース・カードにおける優先順位マッピング論理により実施され、
前記優先順位処理論理は、前記ネットワーク・データ優先順位に従って優先順位ベースで前記複数のリング・バッファ内の前記バッファ記述子を処理するように適合された前記システム内のネットワーク・インターフェース・カード・デバイス・ドライバにおけるリング・バッファ選択論理によってさらに実施され、
前記優先順位マッピング論理は、前記バッファ記述子を前記ネットワーク・データ優先順位に応じたリング・バッファに配送する、システム。
【請求項２】
前記ネットワーク・データ優先順位は、前記ネットワーク・フレーム内の優先順位インジケータ・フィールドによって示される、請求項１に記載のシステム。
【請求項３】
前記システム内の前記ネットワーク・インターフェース・カード又はネットワーク・インターフェース・カード・デバイス・ドライバは、前記フレームのリンク層部分内のリンク層優先順位インジケータ又は前記フレームのネットワーク・パケット部分内のネットワーク層優先順位インジケータのうちの１つとして、前記優先順位インジケータ・フィールドを検査するために、前記優先順位処理論理を実装する、請求項２に記載のシステム。
【請求項４】
前記複数のネットワーク・データ処理チャネルは、前記ネットワーク・データに対応するバッファ記述子を処理するように適合された複数のカーネル・プロトコル・スタック・チャネルを含み、
前記優先順位処理論理は、前記ネットワーク・データ優先順位に従って優先順位ベースで前記バッファ記述子を前記カーネル・プロトコル・スタック・チャネルに配送するように適合された前記システム内のネットワーク・インターフェース・カード・デバイス・ドライバにおけるチャネル選択論理によって実施される、
請求項１に記載のシステム。
【請求項５】
前記複数のカーネル・プロトコル・スタック・チャネルは、前記ネットワーク・データ優先順位に従って優先順位ベースで前記バッファ記述子をエンキューするように適合された複数のバッファ記述子キューを含む、請求項４に記載のシステム。
【請求項６】
前記複数のカーネル・プロトコル・スタック・チャネルは、優先順位付けされたバッファ記述子処理スレッドを含む、請求項４に記載のシステム。
【請求項７】
ネットワーク・エンドポイント・システムによって実装されるネットワーク・プロトコル・スタックのアプリケーション層で動作しているデータ・コンシューマの代わりに、種々の優先順位のネットワーク・データを受信するように適合されたネットワーク・エンドポイント・システムであって、
前記ネットワーク・データを含むネットワーク・フレームを受信するように適合されたネットワーク・インターフェース・カードと、
各々が関連付けられた優先順位を有する複数のネットワーク・データ処理チャネルと、
前記ネットワーク・データの優先順位に従って優先順位ベースで前記ネットワーク・データを前記ネットワーク・インターフェース・カードから前記複数のデータ処理チャネルに転送するように適合された優先順位処理論理と、
を含み、
前記複数のネットワーク・データ処理チャネルは、前記ネットワーク・データに対応するバッファ記述子を含んだ複数のリング・バッファを含み、
前記複数のネットワーク・データ処理チャネルは、前記ネットワーク・データに対応するバッファ記述子を処理するように適合された複数のカーネル・プロトコル・スタック・チャネルをさらに含み、
前記優先順位処理論理は、前記ネットワーク・フレームを検査し、前記ネットワーク・データ優先順位に従って優先順位ベースで前記バッファ記述子を前記複数のリング・バッファに配送するように適合された前記ネットワーク・インターフェース・カードにおける優先順位マッピング論理によって実施され、
前記優先順位処理論理は、前記ネットワーク・データ優先順位に従って優先順位ベースで前記複数のリング・バッファ内の前記バッファ記述子を処理するように適合された前記システム内のネットワーク・インターフェース・カード・デバイス・ドライバにおけるリング・バッファ選択論理によってさらに実施され、
前記優先順位処理論理は、前記ネットワーク・データ優先順位に従って優先順位ベースで前記複数のリング・バッファ上の前記バッファ記述子を前記カーネル・プロトコル・スタック・チャネルに配送するように適合された前記ネットワーク・インターフェース・カード・デバイス・ドライバにおけるチャネル選択論理によってさらに実施され、
前記優先順位マッピング論理は、前記バッファ記述子を前記ネットワーク・データ優先順位に応じたリング・バッファに配送する、システム。
【請求項８】
前記ネットワーク・データ優先順位及びメモリ可用性に従って優先順位ベースで前記バッファ記述子を割り当てるように適合されたバッファ割り当て論理をさらに含む、請求項１に記載のシステム。
【請求項９】
前記データ・コンシューマはネットワーク・データ・ソースとしても働き、前記優先順位処理論理は、前記ネットワーク・データ優先順位に従って優先順位ベースで前記ネットワーク・データを前記複数のデータ処理チャネルから前記ネットワーク・インターフェース・カードに転送するようにさらに適合される、請求項１乃至８のいずれか１項に記載のシステム。
【請求項１０】
ネットワーク・プロトコル・スタックのアプリケーション層で動作しているデータ・コンシューマの代わりに、種々の優先順位のネットワーク・データを受信する方法であって、
ネットワーク・インターフェース・カードにおいて前記ネットワーク・データを含むネットワーク・フレームを受信するステップと、
各々が関連付けられた優先順位を有する複数のネットワーク・データ処理チャネルを提供するステップと、
前記ネットワーク・データの優先順位に従って優先順位ベースで前記ネットワーク・データを前記ネットワーク・インターフェース・カードから前記複数のネットワーク・データ処理チャネルに転送するように、優先順位処理を行なうステップと、
を含み、
前記複数のネットワーク・データ処理チャネルは、前記ネットワーク・データに対応するバッファ記述子を含んだ複数のリング・バッファを含み、
前記優先順位処理論理は、前記ネットワーク・フレームを検査し、前記ネットワーク・データ優先順位に従って優先順位ベースで前記バッファ記述子を前記複数のリング・バッファに配送するように適合された前記ネットワーク・インターフェース・カードにおける優先順位マッピング論理により実施され、
前記優先順位処理論理は、前記ネットワーク・データ優先順位に従って優先順位ベースで前記複数のリング・バッファ内の前記バッファ記述子を処理するように適合された前記システム内のネットワーク・インターフェース・カード・デバイス・ドライバにおけるリング・バッファ選択論理によってさらに実施され、
前記優先順位マッピング論理は、前記バッファ記述子を前記ネットワーク・データ優先順位に応じたリング・バッファに配送する、方法。
【請求項１１】
１つ又は複数のコンピュータ使用可能媒体と、
ネットワーク・インターフェース・カードにおいてネットワーク・データを含むネットワーク・フレームを受信し、
各々が関連付けられた優先順位を有する複数のネットワーク・データ処理チャネルを提供し、
前記ネットワーク・データの優先順位に従って優先順位ベースで前記ネットワーク・データを前記ネットワーク・インターフェース・カードから前記複数のネットワーク・データ処理チャネルに転送するように優先順位処理を行なう、
ことによって、ネットワーク・プロトコル・スタックのアプリケーション層で動作しているデータ・コンシューマの代わりに種々の優先順位のネットワーク・データを受信するように、データ処理プラットフォームをプログラミングするための前記コンピュータ使用可能媒体と関連付けられた手段と、
を含み、
前記複数のネットワーク・データ処理チャネルは、前記ネットワーク・データに対応するバッファ記述子を含んだ複数のリング・バッファを含み、
前記優先順位処理論理は、前記ネットワーク・フレームを検査し、前記ネットワーク・データ優先順位に従って優先順位ベースで前記バッファ記述子を前記複数のリング・バッファに配送するように適合された前記ネットワーク・インターフェース・カードにおける優先順位マッピング論理により実施され、
前記優先順位処理論理は、前記ネットワーク・データ優先順位に従って優先順位ベースで前記複数のリング・バッファ内の前記バッファ記述子を処理するように適合された前記システム内のネットワーク・インターフェース・カード・デバイス・ドライバにおけるリング・バッファ選択論理によってさらに実施され、
前記優先順位マッピング論理は、前記バッファ記述子を前記ネットワーク・データ優先順位に応じたリング・バッファに配送する、コンピュータ。
【請求項１２】
請求項１０の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル・ネットワーク、及び内部の情報トラフィックの処理に関する。より特定的には、本発明は、インターネット・プロトコル（ＩＰ）ネットワークにおけるエンドポイント間で交換されるデータについての差別化されたサービス品質（quality of service、ＱｏＳ）レベルを提供することに関する。
【背景技術】
【０００２】
背景として、現代のＩＰネットワークにおいては、優先順位付けされたデータの伝送サービスを提供するために、種々のＱｏＳ機構が実装されてきた。全てのデータを同等に扱う「ベスト・エフォート（best effort）型」通信モードを用いる代わりに、これらのＱｏＳ機構は、ネットワーク・トラフィックを差別化されたサービス・カテゴリに優先順位付けする。従って、高優先順位のトラフィック（例えば、音声通信、ビデオ／オーディオ・ストリーム等）を定義して他のネットワーク・データよりも高い優先順位で処理することができ、これによりパケットのドロップ、待ち時間、ジッタ等といった望ましくないネットワーク伝送の問題が低減される。周知のＱｏＳ機構は、ＩＥＥＥ（Institute of Electrical and Electronics Engineers、米国電気電子学会）８０２．１ｐ規格によって定められるリンク・レベルのトラフィック優先順位付けスキームと、ＲＳＶＰ（ReSource reserVation Procotol）及びdiffserv（differentiatedservice、差別化されたサービス）によって実装されるネットワーク・レベルの優先順位付けスキームとを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記のＱｏＳ機構は、ＩＰネットワーク内のルーティング・ノード間のデータ伝送ではうまくいくが、エンドポイント・システムが、受信するパケットをタイムリーに処理できないときには、ネットワーク・エンドポイント内にボトルネック（bottleneck）が生じる恐れがある。これは、例えば、デバイス／システム・キュー（待ち行列）が一杯であり、メモリが少なく（low）、処理リソースに過度の負荷がかかっているときに生じ得る。その結果、高優先順位のパケットが、通常の優先順位又は低い優先順位のパケットの後にドロップされる又はブロックされることがあり、これによりＱｏＳスキームの目的が達せられなくなる。
【課題を解決するための手段】
【０００４】
ネットワークにおける強化されたエンド・ツー・エンドのＱｏＳをサポートするための、ネットワークで用いるためのネットワーク・エンドポイント・システム及び関連した方法、並びにコンピュータ・プログラム製品が提供される。
【０００５】
第１の態様によると、ネットワーク・エンドポイント・システムは、ネットワーク・エンドポイント・システムによって実装されるネットワーク・プロトコル・スタックのアプリケーション層で動作しているデータ・コンシューマの代わりに、種々の優先順位のネットワーク・データを受信するように適合される。ネットワーク・エンドポイント・システムは、ネットワーク・データを含むネットワーク・フレームを受信するように適合されたネットワーク・インターフェース・コントローラと、各々が関連付けられた優先順位を有する複数のネットワーク・データ処理チャネルと、ネットワーク・データ優先順位に従って優先順位ベースで、ネットワーク・データをネットワーク・インターフェース・コントローラから複数のデータ処理チャネルに転送するように適合された優先順位処理論理とを含む。
【０００６】
ネットワークＱｏＳの提供を改善し、ネットワーク・エンドポイントと関連したボトルネックを低減又は排除することができるようにするための機構が提供されることが好ましい。入ってくる高優先順位のパケットを効率的に処理し、かつ、それらのＱｏＳレベルに十分な考慮が与えられることを可能にする技術が提供されることが好ましい。
【０００７】
例示的な開示された実施形態によると、ネットワーク・データの優先順位は、ネットワーク・フレーム内の優先順位インジケータ・フィールドによって示すことができる。システム内のネットワーク・インターフェース・コントローラ又はネットワーク・インターフェース・コントローラのデバイス・ドライバは、フレームのリンク層部分内のリンク層優先順位インジケータ、又は、フレームのネットワーク・パケット部分内のネットワーク層優先順位インジケータのうちの１つとして、優先順位インジケータ・フィールドを検査するように、優先順位処理論理を実装することができる。複数のネットワーク・データ処理チャネルが、ネットワーク・データに対応するバッファ記述子を含んだ複数のリング・バッファを含むことができる。次いで、優先順位処理論理は、ネットワーク・フレームを検査し、ネットワーク・データ優先順位に従って優先順位ベースでバッファ記述子を複数のリング・バッファに配送するように適合された、ネットワーク・インターフェース・コントローラにおける優先順位マッピング論理によって実施される。優先順位処理論理は、ネットワーク・データ優先順位に従って優先順位ベースで複数のリング・バッファ内のバッファ記述子を処理するように適合された、システム内のネットワーク・インターフェース・コントローラ・デバイス・ドライバにおけるリング・バッファ選択論理によってさらに実施される。代替的に、複数のネットワーク・データ処理チャネルは、ネットワーク・データに対応するバッファ記述子を処理するように適合された複数のカーネル・プロトコル・スタック・チャネルを含むことができる。その場合、優先順位処理論理は、ネットワーク・データ優先順位に従って優先順位ベースでバッファ記述子をカーネル・プロトコル・スタック・チャネルに配送するように適合された、システム内のネットワーク・インターフェース・コントローラ・デバイス・ドライバにおけるチャネル選択論理によって実施される。複数のカーネル・プロトコル・スタック・チャネルは、ネットワーク・データ優先順位に従って優先順位ベースでバッファ記述子をエンキューするように適合された複数のバッファ記述子キューを含むことができる。
【０００８】
代替的に、複数のカーネル・プロトコル・スタック・チャネルは、優先順位付けされたバッファ記述子処理スレッドを含むことができる。システムは、ネットワーク・データ優先順位及びメモリ可用性に従って優先順位ベースでバッファ記述子を割り当てるように適合されたバッファ割り当て論理をさらに含むことができる。システムのデータ・コンシューマがネットワーク・データ・ソースとしても働く場合、優先順位処理論理は、ネットワーク・データ優先順位に従って優先順位ベースでネットワーク・データを複数のデータ処理チャネルからネットワーク・インターフェース・コントローラに転送するようにさらに適合させることができる。
【０００９】
別の態様によると、ネットワーク・インターフェース・コントローラにおいてネットワーク・データを含むネットワーク・フレームを受信することと、各々が関連付けられた優先順位を有する複数のネットワーク・データ処理チャネルを提供することと、ネットワーク優先順位に従って優先順位ベースでネットワーク・データをネットワーク・インターフェース・コントローラから複数のネットワーク・データ処理チャネルに転送するように、優先順位処理を行なうこととを含む、ネットワーク・プロトコル・スタックのアプリケーション層で動作しているデータ・コンシューマの代わりに、種々の優先順位のネットワーク・データを受信する方法が提供される。
【００１０】
別の態様によると、１つ又は複数のコンピュータ使用可能媒体と、ネットワーク・インターフェース・コントローラにおいてネットワーク・データを含むネットワーク・フレームを受信し、各々が関連付けられた優先順位を有する複数のネットワーク・データ処理チャネルを提供し、ネットワーク優先順位に従って優先順位ベースでネットワーク・データをネットワーク・インターフェース・コントローラから複数のネットワーク・データ処理チャネルに転送するように優先順位処理を行なうことによって、ネットワーク・プロトコル・スタックのアプリケーション層で動作しているデータ・コンシューマの代わりに種々の優先順位のネットワーク・データを受信するように、データ処理プラットフォームをプログラミングするためのコンピュータ使用可能媒体と関連付けられた手段とを含むコンピュータ・プログラム製品が提供される。
【００１１】
更に別の態様において、ネットワークにおける強化されたエンド・ツー・エンドＱｏＳをサポートするために、ネットワーク・インターフェース・コントローラ及びネットワーク・ノードが提供される。ネットワーク・インターフェース・コントローラは、ネットワーク・リンクからネットワーク・データを含むネットワーク・フレームを受信するように適合されたフレーム受信機と、ネットワーク・データをホスト・ネットワーク・エンドポイント・システムに提供するように適合された複数のホスト入力／出力ユニットと、ネットワーク・データ優先順位に従ってネットワーク・データをホスト・ネットワーク・エンドポイント・システムの複数のデータ処理チャネルに転送するように適合されたネットワーク・インターフェース・コントローラにおける優先順位マッピング論理とを含む。ネットワーク・ノードは、ネットワークのエッジからネットワーク・データを含むネットワーク・フレームを受信するように適合された第１のリンク・インターフェースと、ネットワーク・フレームをネットワーク・エンドポイント・システムに送るように適合された第２のリンク・インターフェースと、ネットワーク・データ優先順位に対応する優先順位インジケータについてのネットワーク・フレームのネットワーク層部分を検査し、対応する優先順位インジケータをネットワーク・フレームのリンク層部分に挿入するように適合された優先順位挿入論理とを含む。
【００１２】
ここで、本発明の好ましい実施形態を、ほんの一例として、以下の図面を参照して説明する。
【図面の簡単な説明】
【００１３】
【図１】例示的なＩＰネットワークを示す機能ブロック図である。
【図２】従来技術のＩＰネットワーク・ホストにおける例示的なネットワーク・データ処理を示す機能ブロック図である。
【図３】図２の従来技術のＩＰネットワーク・ホストによって行なわれるネットワーク・データ処理のさらなる図を示す機能ブロック図である。
【図４】図２の従来技術のＩＰネットワーク・ホストによって行なわれるネットワーク・データ処理の更に別の図を示す機能ブロック図である。
【図５】第１の例示的な改善されたＩＰネットワーク・ホストによって行なわれる例示的なネットワーク・データ処理を示す機能ブロック図である。
【図６】図５のＩＰネットワーク・ホストによって行なわれる例示的なフレーム受信処理を示すフロー図である。
【図７】図５のＩＰネットワーク・ホストによって行なわれる例示的なフレーム伝送処理を示すフロー図である。
【図８】第２の例示的な改善されたＩＰネットワーク・ホストによって行なわれる例示的なネットワーク・データ処理を示す機能ブロック図である。
【図９】図８のＩＰネットワーク・ホストによって行なわれる例示的なフレーム受信処理を示すフロー図である。
【図１０】図８のＩＰネットワーク・ホストによって行なわれる例示的なフレーム伝送処理を示すフロー図である。
【図１１】第３の例示的な改善されたＩＰネットワーク・ホストによって行なわれる例示的なネットワーク・データ処理を示す機能ブロック図である。
【図１２】図１１のＩＰネットワーク・ホストによって行なわれる例示的なフレーム受信処理を示すフロー図である。
【図１３】図１１のＩＰネットワーク・ホストによって行なわれる例示的なフレーム伝送処理を示すフロー図である。
【図１４】本発明の一実施形態による、ＩＰｖ４ネットワーク層パケットをカプセル封入するリンク層イーサネット・フレームの図である。
【図１５】図８の第２の例示的な改善されたＩＰネットワーク・ホストの第１の代替的な実装を示す機能ブロック図である。
【図１６】図８の第２の例示的な改善されたＩＰネットワーク・ホストの第２の代替的な実装を示す機能ブロック図である。
【図１７】図５−図１１の改善されたＩＰネットワーク・ホストを実装するためのシステムを提供するために用い得る例示的なデータ処理ハードウェアを示す機能ブロック図である。
【図１８】図５−図１１のネットワーク・ホストのソフトウェア及び／又はファームウェアのコンピュータ・プログラム製品の実装に用い得る例示的な記憶媒体の図である。
【発明を実施するための形態】
【００１４】
ここで、幾つかの図の全てにおいて同様の参照番号が同様の要素を示す図面を参照すると、図１は、ＩＰネットワーク４内に配置されたネットワーク・エンドポイント・システム２を示す。ＩＰネットワーク４は、エッジ・ノード８と共に１つ又は複数の内部ルーティング・ノード６を含むように、ほんの一例として示されている。ルーティング・ノードは、ルータ、スイッチ、ハブ、又はネットワーク・エンドポイントに向けてパケットを送ることができる何らかの他のネットワーク・デバイスとして実装することができる。エッジ・ノード８は、内部ルーティング・ノード６と大部分の点で類似しているが、ネットワーク４と、参照番号１０で示される１つ又は複数の他のネットワークとの間のインターフェースとして働くように適合される。ネットワーク１０は、様々な優先順位のデータ・パケットをエンドポイント・システム２に送ることができると考えられる、ネットワーク４から１つ又は複数の遠隔エンドポイント・システム１２までの経路を提供する。エッジ・ノード８は、ネットワーク４のエッジから、ネットワーク・データを含むネットワーク・フレームを受信するように適合された第１のリンク・インターフェース８Ａと、ネットワーク・フレームをネットワーク・エンドポイント・システム２に送るように適合された第２のリンク・インターフェース８Ｂとを含む。
【００１５】
ネットワーク４は、ＩＰネットワーク層プロトコルをサポートする種々のコネクションレス型（又はコネクション型）ネットワーク化技術のいずれかを用いて実装することができる。物理レベルにおいては、電気配線、光ファイバ・ケーブル、無線リンク、又はそれらの任意の組み合わせによって、ネットワーク４を含む種々の要素間を相互接続することができる。データ・リンク・レベルにおいては、ネットワーク４は、媒体アクセス制御（Media Access Control、ＭＡＣ）フレーミング、又はいずれかの他の適切なデータ・リンク・レベル・プロトコルを実装することができる。この種のＩＰネットワークは、イーサネット（８０２．３）及び無線プロトコル（８０２．１１）などの規格のＩＥＥＥ８０２．ｘファミリーに従って構築されたものを含む。ネットワーク４はさらに、上記の背景として述べられたものの１つのようなＱｏＳ機構を実装するように考えられる。
【００１６】
従来のＩＰネットワーク・エンドポイントとは違って、エンドポイント２は、ネットワーク４内に実装されたＱｏＳスキームを保護する方法で、異なる優先順位を有するパケットを処理するように適合される。これがどのように達成されるかを説明する前に、従来のＩＰネットワーク・ホストによって行なわれるネットワーク・パケットの処理を再検討することが有用であろう。こうしたホストは、図２に参照番号２０で示される。ホスト２０は、ネットワーク・リンク２４に接続されたネットワーク・インターフェース・カード（ＮＩＣ）２２を含む。ネットワーク・リンク２４は、有線ベースのものであっても又は無線のものであってもよく、ＩＰパケットをカプセル封入するリンク層フレーム（例えば、イーサネット・フレーム）を運ぶ。ＮＩＣ２２は、ＮＩＣとオペレーティング・システムのカーネル・プロトコル・スタック２８との間でフレーム・データを転送する役割を担うオペレーティング・システムのＮＩＣデバイス・ドライバ２６によって管理される。
【００１７】
カーネル・プロトコル・スタック２８は、その各々がデータ・ソース又はデータ・シンクとして働くことができる、アプリケーション３０１、３０２及び３０３のような１つ又は複数のアプリケーションとの間でデータを転送する役割を担う。示されるように、アプリケーション３０１、３０２及び３０３は、それらが処理するネットワーク・トラフィックに関連して異なる優先順位を有することができる。例えば、アプリケーション３０１は、対話式テレビ会議又は音声通信に関与する高優先順位の遅延感受性アプリケーションとすることができ、アプリケーション３０2は、ストリーミング・マルチメディア又はビジネスに不可欠なトラフィック処理に関与する中優先順位の負荷制御型アプリケーションとすることができ、アプリケーション３０３は、ファイル転送、ウェブ・ブラウジング等に関与する低優先順位のベストエフォート型アプリケーションとすることができる。
【００１８】
ＮＩＣ２２とカーネル・プロトコル・スタック２８との間でフレーム・データを転送するのを助ける一対のリング・バッファが、ホスト２０のメモリ内にある。一方のリング・バッファ３２は、フレーム伝送（ＴＸ）のために用いられ、他方のリング・バッファ３４は、フレーム受信（ＲＸ）のために用いられる。各々のリング・バッファは、ホスト・メモリ内のフレーム含有バッファへのポインタを含むバッファ記述子の円形ＦＩＦＯ（first in, first out）キューを表す。伝送リング・バッファ３２において、フレーム伝送と関連付けられたデータを含むバッファの伝送が参照される。受信リング・バッファ３４において、フレーム受信と関連付けられたデータを含むバッファの受信が参照される。各々のリング・バッファ３２及び３４は、エンキューされた（キューに入れられた）バッファ記述子を読み書きするための一対のポインタを有する。伝送リング・バッファ３２は、伝送バッファ記述子を書き込むために現在のキュー・スロットを識別するホスト書き込みポインタ（「ＨＯＳＴ  ＷＲＩＴＥ」）と、伝送バッファ記述子を読み取るために現在のキュー・スロットを識別するＮＩＣ読み取りポインタ（「ＮＩＣ  ＲＥＡＤ」）とを有する。受信リング・バッファ３４は、受信バッファ記述子を書き込むために現在のキュー・スロットを識別するＮＩＣ書き込みポインタ（「ＮＩＣ  ＷＲＩＴＥ」）と、受信バッファ記述子を読み取るために現在のキュー・スロットを識別するホスト読み取りポインタ（「ＨＯＳＴ  ＲＥＡＤ」）とを有する。
【００１９】
パケット受信の際、ネットワーク・インターフェース・カード（ＮＩＣ）２２は、ネットワーク・リンク２４から、ＩＰパケットを含むリンク層フレームを受信する。説明のためだけに、ＮＩＣ２２は、これが常駐するネットワーク・ホストと共にバスマスタ（bus mastering）ＤＭＡ（ダイレクト・メモリ・アクセス）データ転送を行ない得る最新のインターフェース・カードであると考えられる。他のタイプのＮＩＣを用いることもできる。バスマスタ機能をもたないＮＩＣの場合、ＮＩＣデバイス・ドライバは、データ転送をサポートする必要がある。従って、ＮＩＣ２２は、ネットワーク・リンク媒体にアクセスするための送受信機２２１と、ホスト入力／出力（Ｉ／Ｏ）ユニット２２２と、パケット受信メモリ２２３と、パケット伝送メモリ２２４と、フレーム・プロセッサ２２５とを含むことができる。ここでさらに図３を参照すると、受信フレームが、ローカル受信バッファ（ＮＩＣの受信メモリ２２３内に配置される）内に配置され、ＮＩＣプロセッサ２２５が、ホスト２０へのＤＭＡ転送（ＮＩＣ  Ｉ／Ｏユニット２２２を介する）を開始する。フレーム・コンテンツは、ホスト・バス３６によって転送され、ホスト・メモリ３８内のバッファに書き込まれる。ＮＩＣプロセッサ２２５は、ＮＩＣプロセッサ２２５がホスト２０から既に取り出した次の空いたバッファ記述子を調べることによって、フレームの開始のためのメモリ・アドレスを決定する。ＮＩＣ２２は、既に取り出したバッファ記述子を修正し、その長さなどの新しいフレームについての情報、チェックサム情報等を付加し、次いで、ホスト・メモリ３８への修正されたバッファ記述子のＤＭＡ転送を開始する。特に、図４にさらに示されるように、修正されたバッファ記述子は、そのリング・バッファのＮＩＣ書き込みポインタの現在の値を用いて、ホスト受信リング・バッファ３４内に配置される。ＮＩＣ２２がホスト・オペレーティング・システムと対話するようにどのように構成されるかによって、ＮＩＣは、ＮＩＣデバイス・ドライバ２６を呼び出して受信リング・バッファ３４上の修正されたバッファ記述子を読み取るハードウェア割り込みをもたらし、新しいフレームを検索し、これを処理してホストのカーネル・プロトコル・スタックにすることができる。効率のために、こうした割り込みは、通常、ＮＩＣ２２によって何らかの数の受信フレームが処理され、それらのバッファ記述子が受信リング・バッファ３４にＤＭＡバースト転送された後にもたらされる。割り込みの処理中、ＮＩＣデバイス・ドライバ２６は、受信リング・バッファのホスト読み取りポインタを用いて、最後の割り込み以来、ＮＩＣ２２によって受信リング・バッファ３４内に配置された全ての修正されたバッファ記述子を見つける。次に、デバイス・ドライバ２６は、さらなる処理のために修正されたバッファ記述子をカーネル・プロトコル・スタック２８に渡し、割り込みから戻る。ＮＩＣデバイス・ドライバ２６を呼び出して受信リング・バッファ３４を処理するために、ハードウェア割り込みの代わりに、ポーリングを用い得ることに留意されたい。
【００２０】
パケットの伝送中、上記のプロセスが実質的に逆にされる。伝送される新しいフレーム・データがホスト・メモリ３８のバッファ内にあることが、ホスト・オペレーティング・システムに知らされる。オペレーティング・システムは、そうするためにホスト書き込みポインタを用いて、フレームについてのバッファ記述子を構築し、それを伝送リング・バッファ３２内に配置する。ＮＩＣデバイス・ドライバ２６は、新しいバッファ記述子を取り出し、処理する準備ができたことをＮＩＣ２２に通知する。効率のために、通常、ＮＩＣ２２には、伝送のために何らかの数のフレームを処理する準備ができた後に通知がなされる。ＮＩＣプロセッサ２２５は、伝送リング・バッファ３２からの新しいバッファ記述子のＤＭＡバースト転送を開始し、それらを処理する。新しいフレームを保持するバッファのメモリ・アドレスを決定した後、ＮＩＣプロセッサ２２５は、ホスト・バス３６を通したフレーム・コンテンツのＤＭＡ転送を開始する。フレーム・コンテンツは、ＮＩＣ  Ｉ／Ｏユニット２２２を介して受信され、ＮＩＣの伝送メモリ２２４内のローカル伝送バッファに配置される。所定のフレームの全セグメントが到着すると、ＮＩＣ２２は、そのフレームをネットワーク・ライン２４に伝送する。ホスト・オペレーティング・システムと対話するようにＮＩＣ２２がどのように構成されるかによって、ＮＩＣは、ホスト２０への割り込みをもたらし、フレーム伝送が完了したことを示す。
【００２１】
上記の背景として説明されたように、上述のフレーム処理手順の欠点は、ＱｏＳ優先順位を満足のいくように処理できないことである。フレーム受信中、入ってくるフレームは、それらがＮＩＣ２２から受信された順序で、受信リング・バッファ３２上でエンキューされる（参照することにより）。これは、そのデータが高優先順位のアプリケーション３０１用のものである高優先順位フレームに、中程度の優先順位のアプリケーション３０２又は低優先順位アプリケーション３０３用のものであるより低い優先順位のフレームが組み入れられている可能性があること意味する。ネットワーク・トラフィックの頻繁なバースト的性質を考えると、受信リング・バッファ３２上で高優先順位フレームがエンキューされ、続いて幾つかの低優先順位フレームのバーストがエンキューされ、続いて再び別の高優先順位フレームがエンキューされることがある。ＮＩＣデバイス・ドライバ２６は、受信リング・バッファ３２上のバッファ記述子を連続的に処理する（ホスト読み取りポインタをインクリメントすることによって）ので、デバイス・ドライバが低優先順位フレームを処理する間、高優先順位アプリケーション３０１は、望ましくない通信待ち時間を蒙ることがある。フレーム伝送中、出ていくフレームは、それらがカーネル・プロトコル・スタック２８から受信された順序で、伝送リング・バッファ３４上でエンキューされる。これは、高優先順位のアプリケーション３０１から生じる高優先順位のフレームに、中程度の優先順位のアプリケーション３０２又は低優先順位のアプリケーション３０３からのより低い優先順位のフレームが組み入れられる可能性があることを意味する。同様に、ネットワーク・トラフィックの頻繁なバースト的性質を考えると、伝送リング・バッファ３４上で高優先順位フレームがエンキューされ、続いて幾つかの低優先順位フレームのバーストがエンキューされ、続いて再び別の高優先順位フレームがエンキューされることがある。
【００２２】
ＮＩＣプロセッサ２２５は、伝送リング・バッファ３４上のバッファ記述子を連続的に処理する（ＮＩＣ読み取りポインタをインクリメントすることによって）ので、ＮＩＣが低優先順位フレームを処理する間、高優先順位アプリケーション３０１は、望ましくない通信待ち時間を蒙ることがある。
【００２３】
本開示は、上述の問題を克服し、サポートが強化されたエンド・ツー・エンド型ネットワークＱｏＳを提供するために、図１のネットワーク・エンドポイント・システム２を改善することができる幾つかの方法を示す。各々の技術は、異なるＱｏＳ優先順位を有するフレームを別個に処理するのに多数のネットワーク・データ処理チャネルの使用を必要とするので、より高い優先順位のフレームがより低い優先順位のフレームの後にブロックされることはない。図５に示される１つの実装において、ネットワーク・エンドポイント・システム２は、図２のネットワーク・ホスト２０と大部分の点で同一である改善されたＩＰネットワーク・ホスト２０Ａとして具体化される（実質的に対応する参照番号を用いて示されるように）。しかしながら、図２に示されるような単一の対の送信／受信バッファ３２／３４だけではなく、ネットワーク・ホスト２０Ａ及びＮＩＣ  ２２Ａは、多数の対の送信／受信リング・バッファ３２Ａ１／３４Ａ１、３２Ａ２／３４Ａ２、及び３２Ａ３／３４Ａ３をサポートする。各々のリング・バッファ対は、所定のＱｏＳ優先順位と関連付けることができるドライバ・レベルのフレーム処理チャネルを表す。図５において、リング・バッファ対３２Ａ１／３４Ａ１（各々のリング・バッファは、それぞれＨＴＸ及びＨＲＸと表記される）は高優先順位レベルに対応し、リング・バッファ対３２Ａ２／３４Ａ２（各々のリング・バッファは、それぞれＭＴＸ及びＭＲＸと表記される）は中程度の優先順位レベルに対応し、リング・バッファ対３２Ａ３／３４Ａ３（各々のリング・バッファは、それぞれＬＴＸ及びＬＲＸと表記される）は低優先順位レベルに対応する。それ以上の優先順位レベルが必要とされる場合には、付加的なリング・バッファ対を追加することができ、ここでの３つのリング・バッファ対の記述は、任意のものであり、例示の目的のためのものにすぎないことが認識されるであろう。図５のＮＩＣプロセッサ２２Ａ５は、これが、送信／受信バッファ３２Ａ１／３４Ａ１、３２Ａ２／３４Ａ２、及び３２Ａ３／３４Ａ３を異なるＱｏＳ優先順位と関連付ける優先順位マッピング論理２２Ａ６を含むという点で、図２の従来のＮＩＣプロセッサ２２５とは異なる。
【００２４】
ここでさらに図６のフロー図を参照すると、フレームを受信するとき（ステップ５Ａ−１）、ＮＩＣ優先順位マッピング論理２２Ａ６は、入ってくるフレームの各々におけるＱｏＳ情報を読み取り（ステップ５Ａ−２）、処理のためにフレームを正しい受信リング・バッファ３４Ａ１、３４Ａ２又は３４Ａ３内に（参照することによって）配置する（ステップ５Ａ−３）。ＮＩＣデバイス・ドライバ２６Ａも、リング・バッファ選択論理２６Ａ１を含むように修正される。フレーム受信に続いて、ＮＩＣデバイス・ドライバ２６Ａが呼び出されると、リング・バッファ選択論理２６Ａ１は、受信リング・バッファ３４Ａ１、３４Ａ２及び３４Ａ３をそれぞれの優先順位の順序で処理する（ステップ５Ａ−４）。特に、ＮＩＣハードウェア割り込み又はＮＩＣポーリング操作に応答してＮＩＣデバイス・ドライバ２６Ａが呼び出される度に、ＮＩＣデバイス・ドライバ２６Ａは、最初に、高優先順位の受信リング・バッファＡ１を処理し、高優先順位アプリケーション３０Ａ１に配送するために、その上にある全ての高優先順位のバッファ記述子をカーネル・プロトコル・スタック２８Ａに渡す。次いで、同様の処理が、中程度の優先順位の受信リング・バッファ３４Ａ２上で行なわれ、続いて低優先順位の受信リング・バッファ３４Ａ３上で行なわれる。これにより、異なる優先順位のフレームをインターリーブ処理した結果生じるデバイスのボトルネックが除去され、こうしたフレームを、それらの相対的なＱｏＳ優先順位に従ってカーネル・プロトコル・スタックによって処理することが可能になる。
【００２５】
ここで図７のフロー図をさらに参照すると、パケットを送ったとき、ＮＩＣデバイス・ドライバのリング・バッファ選択論理２６Ａ１が、カーネル・プロトコル・スタック２８Ａから受信したバッファ記述子の優先順位を評価し（ステップ５Ｂ−１）、それらを対応する伝送リング・バッファ３２Ａ１、３２Ａ２、又は３２Ａ３上に配置する。ステップ５Ｂ−３において、新しいフレームを伝送する準備ができたことがＮＩＣ  ２２Ａに通知された後、ＮＩＣの優先順位マッピング論理２２Ａ６は、最初に、高優先順位の伝送リング・バッファ３２Ａ１を処理するので、高優先順位のフレームは、中程度の優先順位及び低優先順位のフレームより前に伝送される。次いで、同様の処理が、中程度の優先順位の伝送リング・バッファ３２Ａ２において行なわれ、続いて低優先順位の伝送リング・バッファ３２Ａ３上で行なわれる。これにより、異なる優先順位のフレームをインターリーブ処理した結果生じるデバイスのボトルネックが除去され、こうしたフレームを、それらの相対的なＱｏＳ優先順位に従ってカーネル・プロトコル・スタックによって処理することが可能になり、これにより、ＱｏＳが強化された伝送がもたらされる（ステップ５Ｂ−４）。
【００２６】
図８は、ネットワーク・エンドポイント・システム２が、図５のネットワーク・ホスト２０Ａと大部分の点で同一である改善されたＩＰネットワーク・ホスト２０Ｂにおいて具体化される、代替的な実装を示す（実質的に対応する参照番号を用いて示されるように）。しかしながら、受信／伝送リング・バッファ３２Ｂ１／３４Ｂ１、３２Ｂ２／３４Ｂ２及び３２Ｂ３／３４Ｂ３の各々は、カーネル・プロトコル・スタック２８Ｂ内のプロトコル・スタック・レベルのフレーム優先順位チャネルと関連付けられる。ＮＩＣデバイス・ドライバ２６Ｂは、上述の関連付けを実施するためのチャネル選択論理２６Ｂ２をさらに含む。受信リング・バッファ３４Ｂ１、３４Ｂ２及び３４Ｂ３は、それぞれカーネル・プロトコル伝送チャネル２８Ｂ４、２８Ｂ５及び２８Ｂ６と関連付けられる。
【００２７】
ここで図９のフロー図をさらに参照すると、フレーム受信中（ステップ６Ａ−１）、ＮＩＣ優先順位マッピング論理２２Ｂ６が、入ってくるフレームの各々におけるＱｏＳ情報を読み取り（ステップ６Ａ−２）、処理のためにフレームを正しい受信リング・バッファ３４Ｂ１、３４Ｂ２、又は３４Ｂ３内に（参照することによって）配置する（ステップ６Ａ−３）。ＮＩＣハードウェア割り込み又はＮＩＣポーリング操作に応答してＮＩＣデバイス・ドライバ２６Ｂが呼び出される度に、リング・バッファ選択論理２６Ｂ１は、それぞれの優先順位の順序で、受信リング・バッファ３４Ｂ１、３４Ｂ２及び３４Ｂ３を処理する（ステップ６Ａ−４）。次に、ＮＩＣ  ２６Ｂは、バッファ記述子を、それぞれの優先順位に従って優先順位付けされた受信リング・バッファ３４Ａ１、３４Ａ２及び３４Ａ３から優先順位付けされた受信チャネル２８Ｂ１、２８Ｂ２及び２８Ｂ３に転送する（ステップ６Ａ−５）。特に、ＮＩＣデバイス・ドライバのチャネル選択論理２６Ｂ２は、バッファ記述子を、高優先順位の受信リング・バッファ３４Ｂ１から高優先順位の受信チャネル２８Ｂ１に転送する。同様に、中程度の優先順位のバッファ記述子は、中程度の優先順位の受信リング・バッファ３４Ｂ２から中程度の優先順位の受信チャネル２８Ｂ２に転送され、低優先順位のバッファ記述子は、低優先順位の受信リング・バッファ３４Ｂ３から低優先順位の受信チャネル２８Ｂ３に転送される。
【００２８】
ここで図１０のフロー図をさらに参照すると、フレーム伝送中、バッファ記述子は、伝送チャネル２８Ｂ４、２８Ｂ５及び２８Ｂ６から受信され（ステップ６Ｂ−１）、優先順位ベースで、対応する伝送リング・バッファ３２Ｂ１、３２Ｂ２、又は３２Ｂ３上に配置される（ステップ６Ｂ−２）。特に、ＮＩＣデバイス・ドライバのチャネル選択論理２６Ｂ２は、バッファ記述子を高優先順位の伝送チャネル２８Ｂ４から高優先順位の伝送リング・バッファ３２Ｂ１に転送する。同様に、中程度の優先順位のバッファ記述子は、中程度の優先順位の伝送チャネル２８Ｂ５から中程度の優先順位の伝送リング・バッファ３２Ｂ２に転送され、低優先順位のバッファ記述子は、低優先順位の伝送チャネル２８Ｂ６から低優先順位の伝送リング・バッファ３２Ｂ３に転送される。ステップ６Ｂ−３において、新しいフレームを伝送する準備ができたことがＮＩＣ  ２２Ｂに通知された後、ＮＩＣの優先順位マッピング論理２２Ｂ６は、最初に、高優先順位の伝送リング・バッファ３２Ｂ１を処理するので、高優先順位のフレームは、中程度の優先順位及び低優先順位のフレームより前に伝送される。次いで、同様の処理が、中程度の優先順位の伝送リング・バッファ３２Ｂ２上で行なわれ、続いて低優先順位の伝送リング・バッファ３２Ｂ３上で行なわれる。これにより、異なる優先順位のフレームをインターリーブ処理した結果生じるデバイスのボトルネックが除去され、こうしたフレームを、相対的なＱｏＳ優先順位に従ってカーネル・プロトコル・スタックによって処理することが可能になり、これにより、ＱｏＳが強化された伝送がもたらされる（ステップ６Ｂ−４）。
【００２９】
カーネル・プロトコル・チャネル２８Ｂ１、２８Ｂ２、２８Ｂ３、２８Ｂ４、２８Ｂ５及び２８Ｂ６それ自体に、それらを優先度（preference）を有した状態で実行させる重み付けを与えることができる。例えば、チャネル２８Ｂ１、２８Ｂ２、２８Ｂ３、２８Ｂ４、２８Ｂ５及び２８Ｂ６についてのチャネル処理は、別個の実行スレッドにおいて実施することができ、スレッドに異なる優先順位レベルで実行させるスレッド優先順位インジケータ（例えば、優先順位付けされた実行スレッドのような）を用いて、チャネル重み付けを達成することができる。同様に、優先順位は、メモリが少ないときにより低い優先順位のタスク／パケットと関連した要求がドロップされるように、データ・バッファ割り当て要求を通知することもできる。例えば、ＮＩＣデバイス・ドライバ２２Ｂは、これが受信リング・バッファ３４Ｂ１、３４Ｂ２及び３４Ｂ３を処理した後に新しいバッファ記述子の割り当てを担当することができる。ホスト・オペレーティング・システム内のバッファ割り当て機構４１（例えば、カーネル・プロトコル・スタック２８Ｂの一部として）を実装することができるので、低メモリ状態が存在するとき、高優先順位の受信リング・バッファ３４Ｂ１についてのバッファ割り当て要求だけが与えられる一方で、中程度の優先順位及び低優先順位の受信リング・バッファ３４Ｂ２及び３４Ｂ３についてのバッファ割り当て要求は、より多くのメモリが使用可能になるまでドロップされる。伝送側において、類似したバッファ割り当て処理を行なうことができる。このように、図８の実装を用いる際、専用の高優先順位リング・バッファ３２Ｂ１及び３４Ｂ１、カーネル・プロトコル・チャネル２８Ｂ１及び２８Ｂ４における高優先順位のスレッド処理、並びに低メモリ状態の際のメモリ割り当て優先度の組み合わせのために、高優先順位データは、強化されたＱｏＳの利益を受けることになる。カーネル・プロトコル・チャネル処理の例示的な実施が、図１５及び図１６と関連して下記により詳細に説明される。
【００３０】
図１１は、ネットワーク・エンドポイント・システム２が、図８のネットワーク・ホスト２０Ｂと大部分の点で同一である改善されたＩＰネットワーク・ホスト２０Ｃ（実質的に対応する参照番号を用いて示されるような）において具体化される代替的な実装を示す。しかしながら、標準的なＮＩＣ  ２２Ｃは、単一の組の送信／受信リング・バッファ３２Ｃ／３４Ｃ（図２−図４により上述されたような）を用いる。ＮＩＣデバイス・ドライバ２６Ｃは、リング・バッファ選択論理を必要としないが、代わりに送信／受信リング・バッファ３２Ｃ／３４Ｃにおけるバッファ記述子のＱｏＳ優先順位を決定するための優先順位マッピング論理２６Ｃ１を有する。ＮＩＣデバイス・ドライバ２６Ｃはまた、優先順位付けされたバッファ記述子を、異なるカーネル・プロトコル・チャネル、すなわちカーネル・プロトコル受信チャネル２８Ｃ１、２８Ｃ２及び２８Ｃ３、並びに、カーネル・プロトコル伝送チャネル２８Ｃ４、２８Ｃ５及び２８Ｃ６と関連付けるためのチャネル選択論理２６Ｃ２も含む。
【００３１】
ここで図１２のフロー図をさらに参照すると、フレーム受信中（ステップ７Ａ−１）、ＮＩＣ優先順位マッピング論理２２Ｃ１は、入ってくるフレームの各々におけるＱｏＳ情報を読み取り（ステップ７Ａ−２）、処理のためにフレームを受信リング・バッファ３４Ｃ内に（参照することによって）配置する（ステップ７Ａ−３）。バッファ記述子が参照するフレームは、フレームの優先順位を示すＱｏＳインジケータを含むことに留意されたい。ＮＩＣハードウェア割り込み又はＮＩＣポーリング操作に応答してＮＩＣデバイス・ドライバ２６Ｃが呼び出される度に、バッファ記述子は、受信リング・バッファ３４Ｃ上で処理され、それぞれの優先順位に従って優先順位付けされた受信チャネル２８Ｃ１、２８Ｃ２及び２８Ｃ３に配送される（ステップ７Ａ−４）。特に、ＮＩＣデバイス・ドライバの優先順位マッピング論理２６Ｃ１及びチャネル選択論理２６Ｃ２は、それぞれ受信リング・バッファ３４Ｃ上のバッファ記述子を検査し、それらの優先順位を決定する。高優先順位のバッファ記述子が、特定されて高優先順位の受信チャネル２８Ｃ１に転送される。同様に、中程度の優先順位のバッファ記述子が特定されて中程度の優先順位の受信チャネル２８Ｃ２に転送され、低優先順位のバッファ記述子が特定されて低優先順位の受信チャネル２８Ｃ３に転送される。このように、ＮＩＣデバイス・ドライバ２６Ｃは、入ってくるフレームを正しい優先順位のカーネル・プロトコル・チャネルと関連付ける。図８と関連して上述したように、これらのカーネル・プロトコル・チャネルは、異なる優先順位を有する異なる実行スレッドにおいて動作できる。
【００３２】
ここで図１３のフロー図をさらに参照すると、フレーム受信中、バッファ記述子は、伝送チャネル２８Ｃ４、２８Ｃ５及び２８Ｃ６から受信され（ステップ７Ｂ−１）、フレームの優先順位の順序で伝送リング・バッファ３２Ｃ上に配置される（ステップ７Ｂ−２）。特に、ＮＩＣデバイス・ドライバのチャネル選択論理２６Ｃ２は、最初に、バッファ記述子を高優先順位の伝送チャネル２８Ｃ４から伝送リング・バッファ３２Ｃに転送する。同様に、次いで、中程度の優先順位のバッファ記述子が中程度の優先順位の伝送チャネル２８Ｃ５から伝送リング・バッファ３２Ｃに転送され、低優先順位のバッファ記述子が低優先順位の伝送チャネル２８Ｃ６から伝送リング・バッファ３２Ｃに転送される。従って、種々の優先順位を有するカーネル・プロトコル・チャネルによる伝送のために、送信フレームがＮＩＣ  ２２Ｃに与えられる。特に、ステップ７Ｂ−３において、新しいフレームを伝送する準備ができたことがＮＩＣ  ２２Ｃに通知された後、ＮＩＣの優先順位マッピング論理２２Ｃ１は、高優先順位のフレームが中程度の優先順位及び低優先順位のフレームより前に伝送されるように、伝送リング・バッファ３２Ｃ上の優先順位の順に並べられたバッファ記述子を処理する。これにより、異なる優先順位のフレームをインターリーブ処理した結果生じるデバイス・ドライバのボトルネックが除去され、こうしたフレームを、相対的なＱｏＳ優先順位に従ってネットワーク・リンク２４Ｃに伝送することが可能になり、よって、ＱｏＳが強化された伝送がもたらされる（ステップ７Ｂ−４）。
【００３３】
図５、図８及び図１１に示される実装のいずれにおいても、この情報がまだ存在していない場合には、優先順位インジケータをリンク層フレームに挿入する優先順位挿入論理４２と共に、ネットワーク４の入口に位置する図１に示されるエッジ・ルータ８を実装することができる。これは、ネットワーク４において、diffservのようなネットワーク・レベルのＱｏＳ機構が用いられる事例である。ＮＩＣは、従来より、リンク層フレームを検査するが、フレームによりカプセル封入されたＩＰネットワーク層パケットのＩＰアドレス部分だけしか検査しないいので、リンク層優先順位インジケータが必要とされる。図１４の例示的なイーサネット・フレーム４４に示されるように、ＩＥＥＥ８０２．１Ｑ／８０２．１Ｐ規格に従って、リンク層優先順位インジケータを挿入することができる。特に、イーサネット・フレーム４４（「ＴＣＩ−ＵＳＥＲ  ＰＲＩＯＲＩＴＹ」と表記される）のＩＥＥＥ８０２．１Ｑ  ＴＣＩ（タグ制御情報）フィールドに、ＩＥＥＥ８０２．１Ｐのユーザ優先順位ビットを挿入することができる。他のリンク層優先順位インジケータを用いることもできる。優先順位挿入論理４４は、フレーム４４のＩＰパケット部分を検査し、内部のネットワーク・レベルのＱｏＳ優先順位インジケータの値を求める。図１４において、フレーム４４は、ＩＰｖ４（インターネット・プロトコル・バージョン４）ネットワーク層パケット４６をカプセル封入するように示される。パケット４６のＴＯＳ（Type of Service、サービス・タイプ）フィールドが、diffserv型ＱｏＳ管理のために用いられる。パケット４６のＴＯＳフィールドにおけるＱｏＳ情報の値を求めた後、優先順位挿入論理４４は、これを対応するリンク層のＱｏＳ値にマッピングし、この値をフレーム４４のＴＣＩ−ＵＳＥＲ  ＰＲＩＯＲＩＴＹフィールドに挿入する。
【００３４】
代替的に、エッジ・ルータの挿入リンク層優先順位インジケータを有する代わりに、ＮＩＣ  ２２Ａ、２２Ｂ及び２２Ｃのいずれも、そのネットワーク・レベルの優先順位インジケータについてのカプセル封入されたＩＰパッケージ４６を検査するように適合させることができる。ＮＩＣ  ２２Ａ、２２Ｂ及び２２Ｃがこの検査をサポートするように適合されていない場合、それぞれのＮＩＣデバイス・ドライバ２６Ａ、２６Ｂ及び２６Ｃによって優先順位の分類を行なうことができる。
【００３５】
ここで図１５及び図１６を参照すると、図８のＩＰネットワーク・ホスト２０Ｂによって用いられるカーネル・プロトコル・チャネルを実装するための２つの代替的な技術が示される。ほんの一例として、図１５及び図１６は、複数のリング・バッファ及び複数のカーネル・プロトコル・チャネルを用いるＩＰネットワーク・ホスト２０Ｂにおいて、どのようにマルチ・チャネル・フレーム処理を実行できるかを示す。単一のリング・バッファ対だけが存在することを除いては、図１１のＩＰネットワーク・ホスト２０Ｃにおいて同じカーネル・プロトコル処理技術を用い得ることに留意されたい。
【００３６】
図１５においては、３つの受信リンクバッファ３４Ｂ１、３４Ｂ２及び３４Ｂ３が、ネットワーク・リンク２４Ｂにおいてフレームを受信した後にＮＩＣ  ２２Ｂからバッファ記述子を受信するように示される。上述のように、ＮＩＣ  ２２Ｂが、種々の優先順位のバッファ記述子をリング・バッファ３４Ｂ１、３４Ｂ２及び３４Ｂ３に書き込んだ後、ＮＩＣデバイス・ドライバ２６Ｂを呼び出して（典型的には、ハードウェア割り込みを介して）、バッファ記述子を取り出し、それらをカーネル・プロトコル・スタック２８Ｂに送る。Ｌｉｎｕｘ（登録商標）カーネル・バージョン２．６のような幾つかのオペレーティング・システムにおいては、ハードウェア割り込みとの関連で実行されているＮＩＣデバイス・ドライバは、受信リング・バッファ上のバッファ記述子をｃｐｕごと（per-CPU）のバックログ・キュー（backlog queue）に転送する。エンキュー操作に続いて、デバイス・ドライバは、バックログ・キューを処理するように、ソフトウェア割り込み（softirq）をスケジュールし、次に、ハードウェア割り込みを終了する。ソフトウェア割り込みが呼び出されると、ソフトウェア割り込みは、バックログ・キュー上のバッファ記述子を処理し、それらがカーネル・プロトコル・スタックを受信キューに渡すようにする。（Ｌｉｎｕｘは、合衆国、他の国、又はその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標である）。
【００３７】
図１５の実装において、カーネル・プロトコル・チャネル２８Ｂ１、２８Ｂ２及び２８Ｂ３は、１組の優先順位付けされたバックログ・キュー及び対応する組の受信キュー５０として実装される。特に、高優先順位のカーネル・プロトコル・チャネル２８Ｂ１については、高優先順位のバックログ・キュー４８１及び高優先順位の受信キュー５０１がある。同様に、中程度の優先順位のカーネル・プロトコル・チャネル２８Ｂ２については、中程度の優先順位のバックログ・キュー４８２及び中程度の優先順位の受信キュー５０２があり、低優先順位のカーネル・プロトコル・チャネル２８Ｂ３については、低優先順位のバックログ・キュー４８３及び高優先順位の受信キュー５０３がある。
【００３８】
図１６においては、カーネル・プロトコル・チャネル２８１、２８２、及び２８３が、幾分異なるように処理される。単一のバックログ・キュー４８及び受信キュー５０だけが用いられる。次に、マルチスレッドのバッファ記述子を処理するように、多数のレベルのソフトウェア割り込み論理５２によって、パケット受信中に優先順位付けされたバッファ記述子を処理することができる。特に、図１６のＩＰネットワーク・ホスト２０Ｂは、高優先順位のソフトウェア割り込み５２１、中程度の優先順位のソフトウェア割り込み５２２、及び必要に応じて低優先順位のソフトウェア割り込み５２３を実施することができる。これらの割り込みは、対応する高い、中程度の、及び低いスレッド優先順位レベルで実行され得る。ＮＩＣデバイス・ドライバ２６Ｂは、高優先順位、中程度の優先順位、及び低優先順位のバッファ記述子をバックログ・キュー４８上に連続的に配置した後、実行のためにソフトウェア割り込み５２１、５２２、及び５２３を別個にスケジュールすることができる。優先順位が高いため、高優先順位のソフトウェア割り込み５２１は、最初に実行され、高優先順位のバッファ記述子を処理する。時間がある場合、高優先順位のソフトウェア割り込み５２２は、引き続き中程度の優先順位及び低優先順位のバッファ記述子を処理することもできる。他の場合には、これらのバッファ記述子は、中程度の優先順位のソフトウェア割り込み５２２によって処理され、必要に応じて引き続き低優先順位のソフトウェア割り込み５２３によって処理され得る。図１６のより上位の層の処理５４は、図１５におけるものと同じである。
【００３９】
以上の通り、エンド・ツー・エンド型ネットワークＱｏＳを強化するための技術が開示された。上述の概念は、データ処理システム、マシン実装方法、及び、必要な機能を行なうようにデータ処理システムを制御するのに用いるためにプログラミング論理が１つ又は複数のマシン使用可能媒体によって与えられコンピュータ・プログラム製品のいずれかにおいて、様々に具体化できることが理解されるであろう。データ処理システム及びマシン実装方法に関連して、図１７は、ネットワーク・エンドポイント・システム２を実装するために用いることができる例示的なハードウェア環境１００を示す。ハードウェア環境１００は、ＣＰＵ又は他のデータ処理リソース１０２と、データ処理コアを提供するメイン・メモリ１０４と、表示モニタ１０７への視覚出力情報を生成するためのグラフィックス・カード１０６と、周辺記憶装置１０８と、他の周辺装置１１０と、上記の要素を相互接続するバス・インフラストラクチャ１１２とを含む。ネットワーク・エンドポイント・システム２のソフトウェア・コンポーネントをメイン・メモリ１０４内にロードすることができる。ＵＳＢバス・コントローラ、ＳＣＳＩディスク・コントローラ、及びＮＩＣを含むことができる種々のＩ／Ｏ（入力／出力）リソースを、周辺装置１１０により設けることができる。モニタ１０７は、ユーザ・インターフェースの一部として実装することができる。
【００４０】
マシン可読媒体及びプログラミング論理を有するコンピュータ・プログラム製品に関連して、プログラミング論理を格納するための例示的なデータ記憶媒体が、図１８に参照番号２００で示される。媒体２００は、コンパクト・ディスク−読み取り専用メモリ（ＣＤ−ＲＯＭ）ディスク、コンパクト・ディスク−読み取り／書き込み（ＣＤ−Ｒ／Ｗ）ディスク、及びデジタル多目的ディスク（ＤＶＤ）などの、市販のソフトウェア販売に通常用いられるタイプの携帯型光記憶ディスクとして示される。こうした媒体は、ネットワーク・エンドポイント・システム２を、単独で又は必要な機能を組み込んだ別のソフトウェア製品と共に格納することができる。プログラミング論理は、（フロッピー・ディスク、フラッシュ・メモリ・スティック等といった）携帯型磁気媒体、或いはドライブ・システム（例えば、ディスク・ドライブ）と組み合わされた磁気媒体、或いはランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、若しくは他の半導体又はソリッド・ステート・メモリのような、データ処理プラットフォームに組み込まれた媒体によって提供することもできる。さらに広い意味では、媒体は、いずれかの電子、磁気、光学、電磁、赤外線、或いは半導体システム又は装置若しくはデバイス、伝送又は伝搬媒体（ネットワークのような）、或いはデータ処理システム、コンピュータ、又は他の命令実行システム、装置若しくはデバイスによって又はそれらと共に用いるためにプログラミング論理を収容し、格納し、通信し、伝播し、又は搬送することが可能な他のエンティティ（信号を含む）を含むことができる。本発明は、ハードウェア論理及びソフトウェア要素を組み合わせて具体化できること、及び、ソフトウェア要素は、これらに限られるものではないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含み得ることも理解されるであろう。
【００４１】
本発明の種々の実施形態を説明したが、本発明に従って多くの変形及び代替的な実施形態を実装できることが明らかである。従って、本発明は、添付の特許請求の範囲及びその均等物の趣旨に合致する場合を除いて、どのような形であっても限定されるべきではないことが理解される。
【符号の説明】
【００４２】
２：ネットワーク・エンドポイント・システム
４：ＩＰネットワーク
６：ルーティング・ノード
８：エッジ・ノード
１０：他のネットワーク
２０、２０Ａ、２０Ｂ、２０Ｃ：ネットワーク・ホスト
２２、２２Ａ、２２Ｂ、２２Ｃ：ネットワーク・インターフェース・カード（ＮＩＣ）
２２１、２２Ａ１、２２Ｂ１、２２Ｃ１：送受信機
２２２、２２Ａ２、２２Ｂ２、２２Ｃ２：ホスト入力／出力（Ｉ／Ｏ）
２２３、２２Ａ３、２２Ｂ３、２２Ｃ３：受信メモリ
２２４、２２Ａ４、２２Ｂ４、２２Ｃ４：伝送メモリ
２２５、２２Ａ５、２２Ｂ５、２２Ｃ５：フレーム処理
２２Ａ６、２２Ｂ６、２６Ｃ１：優先順位マッピング論理
２４、２４Ａ、２４Ｂ、２４Ｃ：ネットワーク・リンク
２６、２６Ａ、２６Ｂ、２６Ｃ：ＮＩＣデバイス・ドライバ
２６Ａ１、２６Ｂ１：リング・バッファ選択論理
２６Ｂ２、２６Ｃ２：チャネル選択論理
２８、２８Ａ、２８Ｂ、２８Ｃ：カーネル・プロトコル・スタック
２８１、２８２、２８３：カーネル・プロトコル・チャネル
２８Ｂ１、２８Ｂ２、２８Ｂ３、２８Ｃ１、２８Ｃ２、２８Ｃ３：カーネル・プロトコル受信チャネル
２８Ｂ４、２８Ｂ５、２８Ｂ６、２８Ｃ４、２８Ｃ５、２８Ｃ６：カーネル・プロトコル伝送チャネル
３０１、３０２、３０３、３０Ａ１、３０Ａ２、３０Ａ３、３０Ｂ１、３０Ｂ２、３０Ｂ３、３０Ｃ１、３０Ｃ２、３０Ｃ３：アプリケーション
３２、３２Ａ１、３２Ａ２、３２Ａ３、３２Ｂ１、３２Ｂ２、３２Ｂ３、３２Ｃ：伝送リング・バッファ
３４、３４Ａ１、３４Ａ２、３４Ａ３、３４Ｂ１、３４Ｂ２、３４Ｂ３、３４Ｃ：受信リング・バッファ
４８、４８１、４８２、４８３：バックログ・キュー
５０、５０１、５０２、５０３：受信キュー
５２、５２１、５２２、５２３：ソフトウェア割り込み
１００：ハードウェア環境
１０２：データ処理リソース
１０４：メイン・メモリ
１０７：モニタ
１１０：周辺装置
【図１】
0005398707.tif 000002
【図２】
0005398707.tif 000003
【図３】
0005398707.tif 000004
【図４】
0005398707.tif 000005
【図５】
0005398707.tif 000006
【図６】
0005398707.tif 000007
【図７】
0005398707.tif 000008
【図８】
0005398707.tif 000009
【図９】
0005398707.tif 000010
【図１０】
0005398707.tif 000011
【図１１】
0005398707.tif 000012
【図１２】
0005398707.tif 000013
【図１３】
0005398707.tif 000014
【図１４】
0005398707.tif 000015
【図１５】
0005398707.tif 000016
【図１６】
0005398707.tif 000017
【図１７】
0005398707.tif 000018
【図１８】
0005398707.tif 000019