(57)【特許請求の範囲】
【請求項１】
１または複数の他のネットワークノードと通信するネットワークコントローラであって、
所定のＶＬ優先度およびネットワーク帯域幅の割り当て分が対応付けられている複数の仮想レーン（複数のＶＬ）で複数のパケットを送信する送信回路と、
前記複数のＶＬで送信される複数のパケットが消費する帯域幅を測定する帯域幅モニタリングモジュールと、
前記帯域幅の測定値と前記ネットワーク帯域幅の割り当て分との比較に基づき、前記ＶＬ優先度を調整するアービタモジュールであり、前記アービタモジュールは、それぞれに対応付けられている前記ＶＬ優先度を有するＶＬの間でアービトレーションを実行する複数のアービタサブモジュールを含む、アービタモジュールと、
を備え、
前記ＶＬ優先度の調整は、前記帯域幅の測定値が前記ネットワーク帯域幅の割り当て分を超えている場合、事前に定められた範囲内の複数の優先度から選択される最低値まで前記ＶＬ優先度を下げることを含み、
前記送信回路は、前記アービトレーションの結果選択されたＶＬのうちから調整された前記ＶＬ優先度に基づいて選択されるＶＬで前記複数のパケットを送信する
ネットワークコントローラ。
【請求項２】
前記複数のＶＬのそれぞれには一の帯域幅モニタリンググループが割り当てられ、
前記ＶＬ優先度の調整は、複数の帯域幅モニタリンググループのそれぞれに割り当てられているＶＬの間でそれぞれ追加のアービトレーションを行うことにより挙げられる各１つのＶＬを、該ＶＬが有するＶＬ優先度に対応するアービタサブモジュールに提供することを含む
請求項１に記載のネットワークコントローラ。
【請求項３】
前記ＶＬ優先度の調整は、前記帯域幅の測定値が前記ネットワーク帯域幅の割り当て分を超えている場合、前記複数のＶＬにおける送信を禁止するべく前記複数のＶＬをアービトレーションの対象外とすることを含む
請求項１又は２に記載のネットワークコントローラ。
【請求項４】
第１の仮想レーンでの前記複数のパケットの送信を中断して、第２の仮想レーンで複数のパケットを送信するプリエンプションモジュールをさらに備え、
前記第２の仮想レーンには、特定されたレイテンシ感度が対応付けられている
請求項１から３のいずれか一項に記載のネットワークコントローラ。
【請求項５】
中断される前記第１の仮想レーンの前記複数のパケットの優先度は、送信される前記第２の仮想レーンの前記複数のパケットの優先度よりも低い
請求項４に記載のネットワークコントローラ。
【請求項６】
前記プリエンプションモジュールはさらに、中断された前記複数のパケットの残りのフラグメントの送信を再開する
請求項４に記載のネットワークコントローラ。
【請求項７】
前記複数のパケットのうち第２のパケットにおいてフローコントロールデジットを使い果たすと、前記複数のパケットのうち第１のパケットを前記第２のパケットにインターリーブするインターリーブモジュールをさらに備える
請求項１から３のいずれか一項に記載のネットワークコントローラ。
【請求項８】
前記複数の仮想レーンのそれぞれにはトラフィッククラスが対応付けられている
請求項１から３のいずれか一項に記載のネットワークコントローラ。
【請求項９】
前記ネットワークコントローラはネットワークファブリックスイッチで用いられ、前記ネットワークコントローラは、ネットワークのファブリックマネージャから仮想レーン構成情報を受信し、前記仮想レーン構成情報は、前記所定のＶＬ優先度、前記ネットワーク帯域幅の割り当て分、および、前記レイテンシ感度を含む
請求項４に記載のネットワークコントローラ。
【請求項１０】
前記ネットワークコントローラが、さらにプロセッサを有するネットワークノードで用いられ、前記ネットワークノードはシステムオンチップ（ＳｏＣ）で組み込まれる
請求項１から３のいずれか一項に記載のネットワークコントローラ。
【請求項１１】
改善されたネットワーク通信のための方法であって、
所定のＶＬ優先度およびネットワーク帯域幅の割り当て分が対応付けられている複数の仮想レーン（複数のＶＬ）で送信される複数のパケットが消費する帯域幅を測定する段階と、
前記帯域幅の測定値と前記ネットワーク帯域幅の割り当て分との比較に基づき、前記ＶＬ優先度を調整する段階であり、前記調整する段階は、前記ＶＬ優先度として割り当て可能な複数の優先度のそれぞれについて、対応する前記ＶＬ優先度を有するＶＬの間でアービトレーションを実行する段階を有する、段階と、
前記アービトレーションの結果選択されたＶＬのうちから調整された前記ＶＬ優先度に基づいて選択されるＶＬで前記複数のパケットを送信する段階と
を備え、
前記調整する段階はさらに、前記帯域幅の測定値が前記ネットワーク帯域幅の割り当て分を超えている場合、事前に定められた範囲内の複数の優先度から選択される最低値まで前記ＶＬ優先度を下げる段階を有する方法。
【請求項１２】
前記複数のＶＬのそれぞれには一の帯域幅モニタリンググループが割り当てられ、
前記調整する段階はさらに、複数の帯域幅モニタリンググループのそれぞれに割り当てられているＶＬの間でそれぞれ追加のアービトレーションを行うことにより各１つのＶＬを挙げる段階を有する
請求項１１に記載の方法。
【請求項１３】
前記調整する段階はさらに、前記帯域幅の測定値が前記ネットワーク帯域幅の割り当て分を超えている場合、前記複数のＶＬにおける送信を禁止するべく前記複数のＶＬをアービトレーションの対象外とする段階を有する
請求項１１又は１２に記載の方法。
【請求項１４】
第１の仮想レーンでの前記複数のパケットの送信を中断して、第２の仮想レーンで複数のパケットを送信する段階をさらに備え、
前記第２の仮想レーンには、特定されたレイテンシ感度が対応付けられている
請求項１１から１３のいずれか一項に記載の方法。
【請求項１５】
中断される前記第１の仮想レーンの前記複数のパケットの優先度は、送信される前記第２の仮想レーンの前記複数のパケットの優先度よりも低い
請求項１４に記載の方法。
【請求項１６】
中断された前記複数のパケットの残りのフラグメントの送信を再開する段階をさらに備える
請求項１４に記載の方法。
【請求項１７】
前記複数のパケットのうち第２のパケットにおいてフローコントロールデジットを使い果たすと前記複数のパケットのうち第１のパケットを前記第２のパケットにインターリーブする段階をさらに備える
請求項１１から１３のいずれか一項に記載の方法。
【請求項１８】
ネットワークのネットワークファブリックマネージャから仮想レーン構成情報を受信する段階をさらに備え、
前記仮想レーン構成情報は、前記所定のＶＬ優先度、前記ネットワーク帯域幅の割り当て分、および、前記レイテンシ感度を含む
請求項１４に記載の方法。
【請求項１９】
プログラムであって、コンピュータが実行すると、改善されたネットワーク通信のための複数の処理が実行され、前記複数の処理は、
所定のＶＬ優先度およびネットワーク帯域幅の割り当て分が対応付けられている複数の仮想レーン（複数のＶＬ）で送信される複数のパケットが消費する帯域幅を測定することと、
前記帯域幅の測定値と前記ネットワーク帯域幅の割り当て分との比較に基づき前記ＶＬ優先度を調整することであり、前記調整することはさらに、前記ＶＬ優先度として割り当て可能な複数の優先度のそれぞれについて、対応する前記ＶＬ優先度を有するＶＬの間でアービトレーションを実行することを含む、前記調整することと、
前記アービトレーションの結果選択されたＶＬのうちから調整された前記ＶＬ優先度に基づいて選択されるＶＬで前記複数のパケットを送信することと
を含み、
前記調整することはさらに、前記帯域幅の測定値が前記ネットワーク帯域幅の割り当て分を超えている場合、事前に定められた範囲内の複数の優先度から選択される最低値まで前記ＶＬ優先度を下げることを含むプログラム。
【請求項２０】
前記複数のＶＬのそれぞれには一の帯域幅モニタリンググループが割り当てられ、
前記調整することはさらに、複数の帯域幅モニタリンググループのそれぞれに割り当てられているＶＬの間でそれぞれ追加のアービトレーションを行うことにより各１つのＶＬを挙げることを含む
請求項１９に記載のプログラム。
【請求項２１】
前記調整することはさらに、前記帯域幅の測定値が前記ネットワーク帯域幅の割り当て分を超えている場合、前記複数のＶＬにおける送信を禁止するべくアービトレーションの対象外とすることを含む
請求項１９又は２０に記載のプログラム。
【請求項２２】
第１の仮想レーンでの前記複数のパケットの送信を中断して、第２の仮想レーンで複数のパケットを送信することをさらに含み、前記第２の仮想レーンには、特定されたレイテンシ感度が対応付けられている
請求項１９から２１のいずれか一項に記載のプログラム。
【請求項２３】
中断された前記第１の仮想レーンの前記複数のパケットの優先度は、送信される前記第２の仮想レーンの前記複数のパケットの優先度よりも低い
請求項２２に記載のプログラム。
【請求項２４】
中断された前記複数のパケットの残りのフラグメントの送信を再開することをさらに含む
請求項２２に記載のプログラム。
【請求項２５】
前記複数のパケットのうち第２のパケットにおいてフローコントロールデジットを使い果たすと、前記複数のパケットのうち第１のパケットを前記第２のパケットにインターリーブすることをさらに含む
請求項１９から２１のいずれか一項に記載のプログラム。
【請求項２６】
ネットワークのネットワークファブリックマネージャから仮想レーン構成情報を受信することをさらに含み、
前記仮想レーン構成情報は、前記所定のＶＬ優先度、前記ネットワーク帯域幅の割り当て分、および、前記レイテンシ感度を含む
請求項２２に記載のプログラム。
【請求項２７】
請求項１１から１８のいずれか一項に記載の方法を実行するための手段を備えるシステムであって、改善されたネットワーク通信のためのシステム。
【請求項２８】
請求項１９から２６のいずれか一項に記載のプログラムを格納するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ネットワークシステムの改善に関し、より具体的には、優先度および帯域幅割り当てに基づくトラフィッククラスアービトレーションに関する。
【背景技術】
【０００２】
ハイパフォーマンスコンピューティング（ＨＰＣ）アプリケーションは、例えば、Ｉｎｆｉｎｉｂａｎｄ（商標）等のＨＰＣファブリックネットワーク通信技術を利用することが多い。このようなＨＰＣファブリックには、管理トラフィック、ストレージトラフィック、アプリケーショントラフィック等、複数の異なる種類のトラフィックが含まれる場合がある。さらに、複数の異なるサービス品質（ＱｏＳ）レベルならびに複数の異なる優先度およびレイテンシ要件に対応付けられている複数の異なるクラスのアプリケーショントラフィックが存在する場合がある。従来のネットワークファブリックスイッチの機能は一般的に、優先度、帯域幅の占有割合およびユーザのネットワークトラフィックのレイテンシについてのユーザ設定要求に近づけることのみである。
【図面の簡単な説明】
【０００３】
請求の対象としている主題の特徴および利点は、以下に記載する当該主題の実施形態の詳細な説明から明らかであろう。以下に記載する実施形態の説明は、添付図面に基づき解釈されるべきである。添付図面は以下の通りである。
【図１】本開示のさまざまな実施形態に係る、ネットワークシステムの上位図である。
【図２】本開示のさまざまな実施形態に係る、ネットワークノードのブロック図である。
【図３】本開示のさまざまな実施形態に係る、ネットワークコントローラのブロック図である。
【図４】本開示のさまざまな実施形態に係るパケットフレームを示す図である。
【図５】本開示のさまざまな実施形態に係る仮想レーングループテーブルを示す図である。
【図６】本開示に係る一実施形態例の処理を説明するためのフローチャートである。  以下に記載する＜発明を実施するための形態＞では実施形態例を参照しているが、当業者には多くの代替例、変形例および変更例が明らかであろう。
【発明を実施するための形態】
【０００４】
本開示では概して、ストレージ、ハイパフォーマンスコンピューティング（ＨＰＣ）およびイーサネット（登録商標）ベースファブリックインターコネクトを含む高性能アプリケーションで利用される改善されたネットワーク通信用のシステム、デバイス、方法およびコンピュータ可読媒体を提供する。ネットワークコントローラは、以下でより詳細に説明するが、仮想レーンに対応付けられている複数のトラフィッククラス間でパケットのアービトレーションおよびプリエンプションを実現するようネットワークノード、例えば、スイッチの一部として構成されているとしてよい。アービトレーションは、仮想レーンに対する帯域幅（ＢＷ）割り当てと消費ＢＷの測定値との比較に基づき、優先度を調整することによって実行されるとしてよい。プリエンプションは、仮想レーンを通って送信されるパケットの相対的な優先度およびレイテンシ感度に基づき実行されるとしてよい。このため、複数の優先度レベルを設定するべく、そして、低優先度トラフィックの帯域幅が不足しないように高優先度トラフィックが消費し得る帯域幅の量を特定するべく、ルールが設けられるとしてよい。高優先度トラフィックは、一般的に帯域幅が低く、このため他のトラフィックに比べて優先度を与えられるとしてよい。高優先度トラフィックが割り当てられた帯域幅制限を超えることがあっても他のトラフィックから帯域幅を奪う心配がない。
【０００５】
図１は、本開示のさまざまな実施形態に係るネットワークシステム１００を示す図である。ネットワークシステム１００は概して、少なくとも１つのネットワークノード部１０２（本明細書では「ソースノード１０２」または「送信ノード」とも呼ばれる）、少なくとも１つの中間ノード部１２２（本明細書では、「スイッチノード」とも呼ばれる）およびエンドノード部１２６（本明細書では「受信ノード」とも呼ばれる）を備える。各ノード部は、図示されているように、通信リンク１２４ａおよび１２４ｂを介して互いに通信するよう構成されている。ソースノード１０２、中間ノード１２２およびエンドノード１２６は、ネットワークファブリック、例えば、ＨＰＣファブリックにリンクパートナーとして含まれているとしてよい。図１の図示内容は説明を簡単にするためのものであり、ネットワークファブリックは複数の中間ノード部および／またはエンドノード部を含み、それぞれが直列および／または並列に、互いにおよび／またはソースノード１０２と接続されており、例えば、トーラスネットワークトポロジー、リングトポロジー、Ｃｌｏｓトポロジー、Ｆａｔ  Ｔｒｅｅトポロジー等を形成し得ると理解されたい。ソースノード１０２、中間ノード１２２および／またはエンドノード１２６はそれぞれ、コンピュータノード部（例えば、ホストサーバシステム、ラップトップ、タブレット、ワークステーション等）、スイッチ、ルータ、ブリッジ、ハブ、ファブリックインターコネクト、ネットワークストレージデバイス、ネットワークアタッチトデバイス、不揮発性メモリ（ＮＶＭ）ストレージデバイス等を構成するとしてよい。
【０００６】
「ソースノード」および「エンドノード」という用語は説明を簡略化するために用いられる用語であり、一方向性の送信フローを暗示することを意味したものではないと理解されたい。本明細書では全二重（フルデュプレックス）接続の片側に言及することが多いが、記載する処理は逆方向（例えば、エンドノード１２６からソースノード１０２）にも応用可能である。
【０００７】
ユーザまたはネットワーク管理者１４０（またはその他の適切なエンティティ）が、例えば、パケットの形態で複数の異なる種類のトラフィックが送信され得るネットワークファブリック１００について任意の数のトラフィッククラス（ＴＣ）を定義するとしてよい。トラフィッククラスは、ノード部同士の間で先験的に定義されるサービス品質（ＱｏＳ）レベルと定義されるとしてよい。より一般的には、トラフィッククラスは、コンピュータネットワークトラフィックをカテゴリー化したものを表すとしてよい。例えば、特定のアプリケーション（例えば、音声／動画）は、適切に動作するために特定のレベルのパケットスループットを必要とするとしてよい。一方、一般的なウェブ閲覧および電子メール等の他のアプリケーションは、音声および／または動画アプリケーションのスループットは必要としない場合がある。このため、トラフィッククラスの構築は、例えば、一のトラフィッククラスにおけるパケット転送が他のクラスの転送よりも優先度が高くなるように行われるとしてよい。また、特定のトラフィック、例えば、ストレージトラフィックは、ゼロパケットロス特性を必要とし得る特別なトラフィッククラスが割り当てられるとしてよい。一方、他のトラフィッククラスは、ベストエフォート方式でサービス提供を受けるとしてもよい。ゼロパケットロス挙動等が必要になる特定のトラフィッククラスではフロー制御または輻輳管理を可能にするとしてよい。 
【０００８】
一部の実施形態において、リンク１２４ａ、１２４ｂは、複数の異なるトラフィッククラス（ＴＣ）と対応付けられ得る任意の数の仮想レーン（ＶＬ）または仮想レーングループ（ＶＬＧ）を有するように構成されているとしてよい。例えば、仮想レーン１はＴＣ１−３を搬送するよう構成されるとしてよく、仮想レーン２はＴＣ４および５を搬送するよう構成されるとしてよい。しかし、一部の実施形態において、ＶＬが対応付けられるＴＣは１つのみであるというような制限が課されることもある。
【０００９】
これに加えて、一部の実施形態において、複数のＶＬがＴＣに対応付けられるとしてもよい。このため、例えば、ＶＬ０−１がＴＣ０−４に対応付けられ、ＶＬ２−３がＴＣ５−１６に対応付けられるとしてもよい。
【００１０】
ユーザ／管理者１４０はさらに、ＴＣ同士の間の相対的な優先度、および、各ＴＣに提供されるリンク帯域幅の割り当て分を定義するための仕様を提供するとしてよい。ファブリックマネージャ１５０は、これらの仕様を、アービトレーションプリエンプションロジックが利用できるよう、デバイスレベル（例えば、ノード１０２、１２２、１２６）にマッピングするよう構成されているとしてよい。これについては以下で説明する。このため、各ＶＬまたは各ＶＬＧは、優先度が定義されており、ネットワークまたはリンク帯域幅の割り当て分が割り当てられているとしてよい。
【００１１】
ソースノード１０２、中間ノード１２２およびエンドノード１２６は、例えば、イーサネット（登録商標）通信プロトコルを用いて、リンク１２４ａおよび１２４ｂを介して互いに通信し合うとしてよい。イーサネット（登録商標）通信プロトコルは、トランスミッションコントロールプロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）を用いて通信を実現することが可能としてよい。イーサネット（登録商標）プロトコルは、米国電気電子学会（ＩＥＥＥ）が公開しているイーサネット（登録商標）規格である「ＩＥＥＥ８０２．３規格」（２００２年３月公開）および／または当該規格の後発バージョン、例えば、イーサネット（登録商標）用ＩＥＥＥ８０２．３規格（２０１２年公開）と互換性を持つか、または、これらに準拠しているとしてよい。イーサネット（登録商標）プロトコルはさらに、媒体アクセス制御（ＭＡＣ）ブリッジおよび仮想ブリッジローカルエリアネットワーク用のＩＥＥＥ規格である「ＩＥＥＥ８０２．１Ｑ規格」（２００５年公開）または当該規格の後発バージョン、例えば、ＩＥＥＥ８０２．１Ｑ規格（２０１１年公開）と互換性を持つか、または、これらに準拠しているとしてよい。言うまでもなく、他の実施形態では、ソースノード１０２、中間ノード１２２およびエンドノード１２６は、例えば、上述したイーサネット（登録商標）通信プロトコルと同様または異なる独自および／またはカスタマイズされた通信プロトコルを用いて互いに通信するとしてもよい。
【００１２】
図２は、本開示のさまざまな実施形態に係るネットワークノード２００を示すブロック図である。ノード２００は、図１のノード１０２、１２２および／または１２６を表しているとしてよく、ネットワークコントローラ２０４（例えば、ネットワークインターフェースカード等）、システムプロセッサ２０６（例えば、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ社製のマルチコア汎用プロセッサ等）およびシステムメモリ２０８を有するとしてよい。システムメモリ２０８は、１または複数のバッファ２３８を含むとしてよい。各バッファは、少なくとも部分的に、ネットワークコントローラ２０４および／またはシステムプロセッサ２０６によって構築および／または制御されるとしてよい。
【００１３】
ネットワークコントローラ２０４は、通信リンク１２４ａ、１２４ｂを介してノード同士をインターフェースするよう一般的に構成されているＰＨＹ回路２１０を有する。ＰＨＹ回路２１０は、上述したＩＥＥＥ８０２．３イーサネット（登録商標）通信プロトコルと互換性を持つか、または、準拠しているとしてよい。当該プロトコルは、例えば、１０ＧＢＡＳＥ−Ｔ、１０ＧＢＡＳＥ−ＫＲ、４０ＧＢＡＳＥ−ＫＲ４、４０ＧＢＡＳＥ−ＣＲ４、１００ＧＢＡＳＥ−ＣＲ１０、１００ＧＢＡＳＥ−ＣＲ４、１００ＧＢＡＳＥ−ＫＲ４、および／または、１００ＧＢＡＳＥ−ＫＰ４を含み、および／または、上述したＩＥＥＥ８０２．３イーサネット（登録商標）通信プロトコルに準拠している、および／または、後に開発された任意の通信プロトコルに準拠している他のＰＨＹ回路を含むとしてよい。ＰＨＹ回路２１０は、データパケットおよび／またはフレームをリンク１２４ａ、１２４ｂを介して送信するよう構成されている送信回路（Ｔｘ）２１２、および、データパケットおよび／またはフレームをリンク１２４ａ、１２４ｂを介して受信するよう構成されている受信回路（Ｒｘ）２１４を有する。言うまでもなく、ＰＨＹ回路２１０はさらに、アナログデジタル変換およびデジタルアナログ変換、データのエンコードおよびデコード、アナログ寄生容量除去（例えば、クロストーク除去）、および受信データの回復を実行するよう構成されているエンコード／デコード回路（不図示）を有するとしてよい。Ｒｘ回路２１４は、データ受信タイミングの調整を行うよう構成されているフェーズロックループ回路（ＰＬＬ、不図示）を含むとしてよい。
【００１４】
通信リンク１２４ａおよび／または１２４ｂはそれぞれ、例えば、銅製のＴｗｉｎａｘケーブル、プリント配線基板上のバックプレーン配線、光ファイバケーブル、銅製のツイストペアケーブル等を例えば含む媒体依存性インターフェースを有するとしてよい。一部の実施形態において、通信リンク１２４ａおよび１２４ｂはそれぞれ、例えば、ノード１０２、１２２、１２６のＴｘおよびＲｘ２１２／２１４の間に複数の別個の接続を設ける複数の論理チャネルおよび／または物理チャネル（例えば、差動対チャネル）を有するとしてよい。中間ノード１２２（例えば、スイッチまたはルータ）の場合、中間ノード内には明示的なネットワークコントローラ２０４は存在しないとしてよい。しかし、ネットワークコントローラ２０４について図示されている機能ブロックは、スイッチまたはルータのロジックまたはシリコンの一部として含まれているとしてよい。本明細書で用いる場合、「リンクレベル」とは、例えば、リンク１２４ａを介したソースノード１０２と中間ノード１２２との間のフレーム通信を意味する。このため、この文脈では、「リンク」とは、リンク１２４ａを介したノード１０２とノード１２２との間のフレーム送信を含む。例えば、ノード１０２のＴＸ回路は、リンク１２４ａを介して、ノード１２２のＲＸ回路にフレームを送信する。
【００１５】
ネットワークコントローラ２０４はさらに、上述したイーサネット（登録商標）通信プロトコルで定義されているように、中間ノード１２２および／またはエンドノード１２６との通信のためにアドレッシングプロトコルおよびアクセス制御プロトコルを提供するように構成されている媒体アクセス制御（ＭＡＣ）モジュール２２０を有する（例えば、ＭＡＣモジュール２２０はレイヤ２デバイスであってよい）。
【００１６】
ネットワークコントローラ２０４はさらに、リンク１２４ａ、１２４ｂで各仮想レーン２３０が消費する帯域幅を測定するよう概して構成されている帯域幅モニタリングモジュール２１８を有するとしてよい。ネットワークコントローラ２０４はさらに、仮想レーンの優先度を、当該レーンの帯域幅の割り当て分と帯域幅の測定値との比較に基づいて調整するよう概して構成されている優先度アービタモジュール２１６を有するとしてよい。ネットワークコントローラ１０４はさらに、高優先度パケットのために低優先度パケットの送信を中断するよう概して構成されているプリエンプションインターリーブモジュール２２８を有するとしてよい。モジュール２１６、２１８および２２８のそれぞれは、以下でより詳細に説明する。一部の実施形態において、ノードは図２に図示したモジュールの一部を含み得るので、図示したモジュールの全てがいずれの実施形態でも必要なわけではないと理解されたい。一部の実施形態において、ネットワークノード１０２、１２２、１２６のさまざまなコンポーネント、回路およびモジュール（ネットワークコントローラ２０４、プロセッサ２０６および／または他のシステムを含む）は、システムオンチップ（ＳｏＣ）アーキテクチャで組み合わせるとしてよい。ＳｏＣは、サーバシステムまたはＣＰＵの一部として含まれているとしてよい。
【００１７】
図３は、本開示のさまざまな実施形態に係るネットワークコントローラ２０４の一部を示すより詳細なブロック図（３００）である。複数の（Ｋ個の）仮想レーン２３０（つまり、ＶＬ０からＶＬ  Ｋ−１）は、ネットワークコントローラ２０４に対する入力として設けられている。各仮想レーンにはトラフィッククラスが対応付けられているとしてよい。帯域幅モニタリングモジュール２１８は、複数の（Ｎ個の）帯域幅計測部３２０を含むものとして図示されている。各帯域幅計測部３２０は、選択された仮想レーングループが消費する帯域幅を測定するよう構成されている。一部の実施形態において、測定の対象として、ＶＬグループ選択モジュール３０２によって最高でＮ個の仮想レーングループが選択されるとしてよい。仮想レーングループ（ＶＬＧ）は、入力として設けられるＫ個の仮想レーンのいずれかを含むとしてよい。例えば、第１のＶＬＧは、ＶＬ０、ＶＬ２およびＶＬ３を含むとしてよく、一方で、第２のＶＬＧは、ＶＬ１、ＶＬ５およびＶＬ  Ｋ−１を含むとしてよい。言うまでもなく、任意のその他のグループ分けおよび組み合わせが可能であり、最高でＮ個の異なるグループおよび最高でＫ個の異なるＶＬが可能である。このため、各ＶＬは、Ｎ個の帯域幅計測部３２０のうち１つに割り当てられるとしてよい。一部の実施形態において、複数のＶＬが一の帯域幅計測部に割り当てられるとしてよい。しかし、一般的に、一のＶＬが複数の帯域幅計測部３０２に割り当てられることはないとしてよい。一部の実施形態において、帯域幅計測部３０２は、トークンバケット、リーキーバケット、スライディングウィンドウ、または、所定時間内に消費される帯域幅の利用量を測定するよう構成されている任意のその他の公知のメカニズムを用いて実装されるとしてよい。
【００１８】
優先度アービタモジュール２１６は、本例において、高優先度、中優先度、低優先度およびオーバー帯域幅という４つの優先度レベルのうち１つについてアービトレーションするようそれぞれが構成されている４個のアービタサブモジュール２１６ａ、２１６ｂ、２１６ｃ、２１６ｄを含むものとして図示されている。他の実施形態では利用するアービタサブモジュールおよび対応付けられている優先度レベルの数は任意であると理解されたい。 優先度アービタモジュール２１６はさらに、特に１または複数のＶＬまたはＶＬＧが割り当てられた帯域幅制限を超えた場合に、帯域幅モニタリングに基づき、複数のＶＬまたはＶＬＧがリンク帯域幅を共有する方法を制御するよう構成されている優先度グループ選択モジュール３０４を含むものとして図示されている。割り当てられた帯域幅を超えたＶＬまたはＶＬＧは、本開示では「非適合」という用語で説明する。超えていない場合には「適合」と見なされる。例えば、ＶＬ０にＸビット毎秒を割り当てられているが、ネットワークがＸビット毎秒を超えるパケットレートでトラフィックを送信しようと試みる場合、ＶＬ０は非適合と分類される。ＶＬ／ＶＬＧの適合または非適合のいずれかへの分類は、時間の経過と共に帯域幅モニタリングの結果に基づき変化するとしてよい。
【００１９】
トラフィックが適合している場合、帯域幅モニタリングは何も役割を持たないとしてよい。適合トラフィックのためのアービトレーションポリシーでは、所与のグループ（ＶＬＧ）の優先度レベル（例えば、高優先度、中優先度および低優先度）において、例えばモジュール３０４によって事前に割り当てられた優先度を適用するとしてよい。一の優先度レベルにおいて、各優先度アービタサブモジュール２１６ａ、２１６ｂ、２１６ｃは、当該優先度に割り当てられたＶＬを選択する上でラウンドロビン方式を採用するとしてよい。一部の実施形態において、ラウンドロビン方式に代えて、多くの他の公知の代替方法のいずれか、例えば、最長未使用期間方式を利用するとしてよい。しかし、帯域幅割り当てを超えるグループには、例えば、モジュール３０４によって、可能な限り低い優先度レベルが割り当てられるとしてよい。この最低優先度レベル（例えば、オーバーＢＷ優先度レベル）は、適合トラフィックに割り当てられた優先度レベル（例えば、２１６ａ、２１６ｂ、２１６ｃ）のいずれよりも低い。
【００２０】
処理について説明すると、各ＶＬには、Ｎ個の帯域幅計測部３２０のうち１つに対応付けられているＮ個の帯域幅モニタリンググループのうち１つが割り当てられるとしてよい。第１の実施形態例において、各ＶＬに対して、当該ＶＬが割り当てられている帯域幅計測部が帯域幅チェックを実行する。このチェックによって、割り当てられている帯域幅利用量をＶＬが超過しているか否かを判断する。割り当てられている帯域幅利用量を超過していない場合（つまり、ＶＬがＢＷチェックに合格する場合）、当該ＶＬを、アービトレーション候補として、当該ＶＬについて割り当てられた優先度レベル（例えば、高優先度、中優先度および低優先度）に対応付けられている優先度アービタサブモジュールに提供する。割り当てられている帯域幅利用量を超過している場合（つまり、ＶＬがＢＷチェックに不合格となる場合）、当該ＶＬは、最低優先度レベル、例えば、オーバー帯域幅レベルが割り当てられ、アービトレーション候補としてオーバー帯域幅優先度アービタサブモジュール２１６ｄに提供される。アービタサブモジュール２１６ａ、２１６ｂ、２１６ｃおよび２１６ｄはそれぞれ、当該サブモジュールに対応付けられている優先度レベル（例えば、高優先度、中優先度、低優先度およびオーバー帯域幅）を持つ候補全ての間でアービトレーションを実行する。
【００２１】
第２の実施形態例において、各ＶＬは、Ｎ個の帯域幅計測部３２０のうち１つに対応付けられているＮ個の帯域幅モニタリンググループのうち１つに割り当てられているが、各帯域幅モニタリンググループは、当該グループについて１つのＶＬを候補として挙げるべく、割り当てられているＶＬの間でアービトレーションを行う。あるグループについて結果として得られるＶＬ候補は、割り当てられている帯域幅利用量を当該ＶＬが超えているか否かを判断するべく帯域幅チェックを行う。割り当てられている帯域幅利用量を超過していない場合、当該ＶＬを、アービトレーション候補として、当該ＶＬについて割り当てられた優先度レベル（例えば、高優先度、中優先度および低優先度）に対応付けられている優先度アービタサブモジュールに提供する。割り当てられている帯域幅利用量を超過している場合、当該ＶＬは、最低優先度レベル、例えば、オーバー帯域幅レベルが割り当てられ、アービトレーション候補としてオーバー帯域幅優先度アービタサブモジュール２１６ｄに提供される。
【００２２】
以下に記載する説明は、上述した第１の実施形態例と第２の実施形態例の相違点を明確にするためのものである。以下の記載について、ＶＬは６個（ＶＬ０−５）であり、帯域幅モニタリンググループが２個（ＢＷ０およびＢＷ１）である。ＶＬ０−３はＢＷ０に割り当てられ、ＶＬ４−５はＢＷ１に割り当てられる。さらに、この説明について、全てのＶＬは利用可能帯域幅のうち１０％が割り当てられており、全てがこの制限を超えている。このため、第１の実施形態例では、ＶＬ０−５はすべてＢＷチェックに不合格となり、オーバーＢＷ優先度アービトレーション２１６ｄに進み、利用可能帯域幅のうちそれぞれに与えられる割り当て分は等しい（１／６）。しかし、第２の実施形態例では、ＢＷ０モニタリンググループは、ＶＬ０−３のうち第１の候補を選び、ＢＷ１モニタリンググループは、ＶＬ４−５のうち第２の候補を選ぶ。どちらの候補もＢＷチェックに不合格となり、オーバーＢＷ優先度アービトレーション２１６ｄに進み、同率（それぞれ１／２）で選択され、ＶＬ０−３のそれぞれには利用可能帯域幅のうち１／８が与えられ（４個のＶＬが帯域幅の半分を共有する）、ＶＬ４−５のそれぞれには利用可能帯域幅のうち１／４が与えられる（２つのＶＬは帯域幅のうち残りの半分を共有する）。
【００２３】
一部の実施形態において、ＶＬが帯域幅チェックで不合格となると、送信を禁止されるとしてよい（例えば、どのアービトレーションでも候補として利用できなくなる）。このため、オーバー帯域幅優先度アービタサブモジュール２１６ｄが除外される。
【００２４】
各アービタサブモジュール２１６ａ、２１６ｂ、２１６ｃ、２１６ｄが実行するアービトレーションは、他のサブモジュールが実行するアービトレーションとは無関係であるとしてよい。例えば、低優先度アービタサブモジュール２１６ｃが行う選択は、当該選択を不適切とする高優先度候補があるか否かをチェックすることなく、行うことができる。このような独立したアービトレーションプロセスは、実装で選択され得るラウンドロビン方式または最長未使用期間方式を含む多数の公知のアービトレーション方式のいずれかを利用するとしてよい。各優先度レベルにおいてアービトレーションの結果選択されたＶＬ（例えば、アービトレーションに「勝利」したＶＬ）にはこの後、それぞれの優先度レベルに基づき追加ステージのアービトレーションが実行されるとしてよい。この追加ステージでは、最高優先度候補は、低優先度候補よりも優先され、送信対象として選択される３０８。
【００２５】
プリエンプションインターリーブモジュール２２８は、別のステージのアービトレーションプロセスにおいて、パケットプリエンプションおよびインターリーブを実行するように構成されているとしてよい。パケットプリエンプションを用いて、高優先度でレイテンシ高感度のトラフィックのレイテンシを低減するとしてよい。特定の種類のデータおよびアプリケーションは、他に比べて、パケットレイテンシに対する感度が高いとしてよい。例えば、ボイスオーバーＩＰアプリケーションにおけるオーディオストリームは、レイテンシに対する感度が比較的高いとしてよい。これは、双方向で会話をしているユーザは普通、オーディオ送信のレイテンシに気を取られること、または、イライラすることが多いためである。一部の実施形態において、レイテンシ感度は、一の種類のトラフィックについて定量化され対応付けられるとしてよい。感度は、例えば、許容可能な時間遅延または相対的な重要度として、表現され得る。
【００２６】
現在アクティブなパケットにおいてフラグメンテーションが発生した場合、インターリーブを利用してリンクにおける帯域幅の損失を低減するとしてよい。 フラグメンテーションが発生するのは、例えば、上流ノード（例えば、現在のノードとソースノード１０２との間の他の中間ノード１２２）のプリエンプションインターリーブモジュールによってプリエンプションが適用される場合であるとしてよい。ユーザまたはネットワーク管理者は、特定のＶＬまたはＶＬＧがレイテンシ高感度トラフィックを搬送すると特定するとしてよい。プリエンプションインターリーブモジュール２２８は、高優先度パケットを送信するべく低優先度パケットの送信を中断することによって、これらのＶＬＧに含まれるパケットによる他のＶＬＧに含まれるパケットのプリエンプションを可能にするように構成されているとしてよい。高優先度パケットの送信が完了すると、プリエンプションされたパケットの送信を再開する。一部の実施形態において、任意の優先度のパケットを他のアクティブなパケットへインターリーブすることが、このアクティブなパケットにおいて送信するフローコントロールデジット（ＦＬＩＴ：フリット）が無くなると（例えば、使い果たすと）、許可されるとしてよい。尚、ＦＬＩＴ（フリット）は、フロー制御の対象である送信可能情報の最小単位である。
【００２７】
このため、複数の優先度レベルを設定すること、および、低優先度トラフィックの帯域幅不足を制御するべく高優先度トラフィックによって消費され得る帯域幅の量を特定することを目的として、ルールが設定されるとしてよい。ルールが定める内容によると、例えば、相対的に低いレイテンシと共に相対的に低い帯域幅を必要とするトラフィッククラスは最高優先度に設定されるが、保証される帯域幅は低くするとしてよく、例えば、利用可能帯域幅の１０％が当該クラスに保証される。このトラフィックを生成しているノードがこの低帯域幅予測に従っている限り、当該トラフィッククラスは最高優先度を維持する。プログラミングエラーまたは悪意のいずれかによって１または複数のノードがこのトラフィックを異常な量で送信し始めると、このトラフィッククラスは、帯域幅保証を超え、その優先度は下がる。高優先度トラフィックは、低い帯域幅が定められており、このため、万が一非適合状態になっても他のトラフィックの帯域幅が不足し得るという心配がなく、他のトラフィックよりも優先されているとしてよい。
【００２８】
一部の実施形態において、非適合パケットは、送信すべき適合パケットが他に無い場合にのみ送信されるので、これらのパケットが他の適合トラフィックから帯域幅を取り上げることはないため、帯域幅モニタリング部２１８によってカウントされないとしてよい。帯域幅チェックはパケット境界で実行されるとしてよく、パケットがアービトレーションに勝利しない限り、繰り返し行われるとしてよい。アービトレーションに勝利するべく待機している間に、非適合パケットが適合パケットとなる場合がある。この場合、このパケットの優先度は、最低優先度から元々割り当てられた優先度に戻る。パケットの送信途中で帯域幅制限を超過すると、当該パケットは、適合パケットとしての送信を終了するとしてよく、リンク下流でのパケットフラグメンテーションを抑制するべく、同一優先度またはより低い優先度の別のパケットに譲らない。しかし、一部の実施形態において、帯域幅チェックはＦＬＩＴ（フリット）境界でも実行されるとしてよい。このような場合、パケットは、当該パケットの途中で優先度をオーバーＢＷに変更するとしてよく、（低優先度レベルの）他のパケットがプリエンプションするとしてよい。
【００２９】
図４は、本開示のさまざまな実施形態に係るパケットフレームを示す図である。フレーム４００は、１または複数のデータパケットを中間ノード１２２および／またはエンドノード１２６に転送するべくソースノード１０２が生成するとしてよい。このため、フレーム４００は、「送信ノード」フレーム形式と見なされるとしてよい。フレーム４００は概して、ヘッダ部分４０２、および、ペイロード部分４０４を含む。ヘッダ部分４０２は、長さが２０バイトであるとしてよく、ＨＰＣネットワークファブリックの特徴をサポートする上で適切なサイズであるとしてよい。図示しているフレーム形式は、最高で４キロバイトまでのペイロードを収容するとしてよい。ソースおよびデスティネーションのアドレスまたはロケーションＩＤ（ＳＬＩＤ４０６、ＤＬＩＤ４０８）はそれぞれ、１６ビットの長さであり、４８ＫのロケーションＩＤを超えるロケーションアドレッシング機能を実現する。仮想レーン（ＶＬ）フィールド４１０は、このパケットの送信に対応付けられている仮想レーンを特定するよう構成されているとしてよい。同図では、ＶＬフィールド４１０は長さが４ビットであり、１６個のレーンが可能である。
【００３０】
図５は、本開示のさまざまな実施形態に係る仮想レーングループテーブル５００を示す図である。ＶＬ５０２の各グループは、例えば、ファブリックマネージャによって帯域幅について制限または割り当て分が与えられているとしてよい。帯域幅モニタリングに基づいて、各アービトレーションサイクルにおいて各グループが割り当てられたリンク帯域幅を超えたか否かをチェックするとしてよい。実装毎に、サポートすべきグループの数を決定するとしてよい。帯域幅の分配は、複数の異なるグループ間で共有するリンク帯域幅の利用割合に基づいて、割り当てられるとしてよい。テーブル５００は、帯域幅割り当て５０４をどのように５つの異なるＶＬグループ５０２に割り当てるかの例を示す。本例では、全てのグループの帯域幅制限の合計がリンク帯域幅の１００％を超えてもよいとしている。これが許容されるのは、ファブリックマネージャは管理トラフィックについて相対的に高い制限を特定している（本例では、ＶＬグループ４）が、このように高い帯域幅を消費するのは非常にまれであると予測しているためである。このため、管理トラフィックは必要な場合には、要求される帯域幅を持つことが可能である。残りのトラフィックについての帯域幅割り当て（本例では、ＶＬグループ０−３）は、管理トラフィックは通常は最低限に抑えられるので、他の種類のトラフィック（ＶＬグループ０−３）に対して特定する制限値の合計が１００％になると仮定して割り当てられるとしてよい。
【００３１】
図６は、本開示に係る一実施形態例の処理６００を示すフローチャートである。これらの処理によって、ネットワーク通信を改善する方法を提供する。処理６２０において、複数の仮想レーンのそれぞれで送信するパケットが消費する帯域幅を測定する。仮想レーンには、所定のＶＬ優先度およびネットワーク帯域幅の割り当て分が対応付けられている。処理６３０において、帯域幅の測定値とネットワーク帯域幅の割り当て分との比較に基づいてＶＬ優先度を調整する。この調整には、帯域幅の測定値がネットワーク帯域幅の割り当て分を超えている場合、ある範囲内の優先度（事前に定められるとしてよい）から選択される最低値までＶＬ優先度を下げることが含まれるとしてよい。処理６４０において、調整後のＶＬ優先度に基づいてパケットを送信する。
【００３２】
上記の説明では、システムアーキテクチャおよび方法の例も記載した。本開示は変形が可能である。ホストプロセッサ２０６は、１または複数のプロセッサコアを含むとしてよく、システムソフトウェアを実行するよう構成されているとしてよい。システムソフトウェアは、例えば、オペレーティングシステムコード（例えば、ＯＳカーネルコード）およびローカルエリアネットワーク（ＬＡＮ）ドライバコードを含むとしてよい。ＬＡＮドライバコードは、ネットワークコントローラ２０４の動作を少なくとも部分的に制御するよう構成されているとしてよい。システムメモリは、ネットワークコントローラ２０４が送受信する１または複数のデータパケットを格納するよう構成されているＩ／Ｏメモリバッファを含むとしてよい。チップセット回路は概して、プロセッサ、ネットワークコントローラ２０４およびシステムメモリ２０８の間の通信を制御する「ノースブリッジ」回路（不図示）を含むとしてよい。
【００３３】
ノード１０２および／またはリンクパートナー１２２または１２６はさらに、システムリソースを管理し、例えば、ノード１０２で実行されているタスクを制御するオペレーティングシステム（ＯＳ、不図示）を含むとしてよい。ＯＳは、他のオペレーティングシステムも利用され得るが、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、ＨＰ−ＵＸ、Ｌｉｎｕｘ（登録商標）またはＵＮＩＸ（登録商標）を用いて実装されるとしてよい。一部の実施形態において、ＯＳに代えて仮想マシンモニタ（またはハイパーバイザ）を利用するとしてよい。仮想マシンモニタは、１または複数の処理ユニットで実行されるさまざまなオペレーティングシステム（仮想マシン）に対して下位ハードウェアについての抽象化レイヤを提供し得る。オペレーティングシステムおよび／または仮想マシンは、１または複数のプロトコルスタックを実装するとしてよい。プロトコルスタックは１または複数のプログラムを実行してパケットを処理するとしてよい。プロトコルスタックの例として、ネットワークを介して送受信するパケットを取り扱う（例えば、処理または生成する）ための１または複数のプログラムを含むＴＣＰ／ＩＰ（トランスポートコントロールプロトコル／インターネットプロトコル）プロトコルスタックが挙げられる。プロトコルスタックは、これに代えて、例えば、ＴＣＰオフロードエンジンおよび／またはネットワークコントローラ２０４等の専用サブシステムで構成されるとしてもよい。ＴＣＰオフロードエンジン回路は、ホストのＣＰＵおよび／またはソフトウェアを関与させることなく、例えば、パケット転送、パケット分割、パケット再構築、エラーチェック、送信確認応答、送信再試行等を実施するように構成されているとしてよい。
【００３４】
システムメモリ２０８は、半導体ファームウェアメモリ、プログラミング可能なメモリ、不揮発性メモリ、リードオンリーメモリ、電気的プログラミング可能なメモリ、ランダムアクセスメモリ、フラッシュメモリ、磁気ディスクメモリおよび／または光ディスクメモリといった種類のメモリのうち１または複数を含むとしてよい。これに加えて、または、これに代えて、システムメモリは、他のおよび／または後発の種類のコンピュータ可読メモリを含むとしてよい。
【００３５】
本明細書で説明した処理の実施形態は、１または複数のプロセッサによって実行されると方法を実施する命令を、個別または組み合わせて格納している１または複数の有形のコンピュータ可読記憶媒体を備えるシステムで実装され得る。プロセッサは、例えば、ネットワークコントローラ２０４内の処理ユニットおよび／またはプログラミング可能な回路、システムプロセッサ２０６および／または他の処理ユニットまたはプログラミング可能な回路を含むとしてよい。このため、本明細書で説明する方法に応じた処理は、複数の異なる物理的な場所にある処理構造等、複数の物理デバイス間に分散していることが意図されている。ストレージデバイは、任意の種類の有形のストレージデバイス、非一時的ストレージデバイス、例えば、任意の種類のディスク、例えば、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）および光磁気ディスク、半導体デバイス、例えば、リードオンリーメモリ（ＲＯＭ）、ダイナミックＲＡＭおよびスタティックＲＡＭ等のランダムアクセスメモリ（ＲＡＭ）、消去可能プログラミング可能リードオンリーメモリ（ＥＰＲＯＭ）、電気的消去可能プログラミング可能リードオンリ―メモリ（ＥＥＰＲＯＭ），フラッシュメモリ、磁気カードまたは光カード、または、電子命令を格納するのに適した任意の種類のストレージデバイスを含むとしてよい。
【００３６】
本明細書で用いる場合、「モジュール」は、単独または任意の組み合わせで、回路および／またはコードおよび／または命令セット（例えば、ソフトウェア、ファームウェア等）を含むとしてよい。「回路（ｃｉｒｃｕｉｔｒｙ、ｃｉｒｃｕｉｔ）」という用語は、本明細書の任意の実施形態で用いられる場合、例えば、単独または任意の組み合わせで、ハードワイヤード回路、プログラミング可能な回路、ステートマシン回路および／またはプログラミング可能な回路が実行する命令を格納しているファームウェアを含むとしてよい。回路は、集積回路チップ等の集積回路として具現化されるとしてよい。このため、ネットワークコントローラ（またはネットワークノードまたはネットワークスイッチ）は、スタンドアロン集積回路として具現化されるか、または、プロセッサまたはＣＰＵをさらに含み得る集積回路に複数のコンポーネントの１つとして組み込まれるとしてよい。一部の実施形態において、ネットワークコントローラまたは他のシステムのさまざまなコンポーネント、回路およびモジュールは、システムオンチップ（ＳｏＣ）アーキテクチャで組み合わせるとしてよい。ＳｏＣは、サーバシステムまたはＣＰＵの一部として含まれるとしてよい。
【００３７】
このため、本開示は、イーサネット（登録商標）ネットワーク通信を改善することが可能なシステム、デバイス、方法およびコンピュータ可読媒体を提供する。以下に記載する例は、さらなる実施形態に関する。
【００３８】
例１によると、１または複数の他のネットワークノードと通信するネットワークコントローラが提供される。ネットワークコントローラは、所定のＶＬ優先度およびネットワーク帯域幅の割り当て分が対応付けられている複数の仮想レーン（ＶＬ）で複数のパケットを送信するよう構成されている送信回路と、複数のＶＬで送信される複数のパケットが消費する帯域幅を測定するよう構成されている帯域幅モニタリングモジュールと、帯域幅の測定値とネットワーク帯域幅の割り当て分との比較に基づき、ＶＬ優先度を調整するよう構成されているアービタモジュールとを備えるとしてよい。送信回路は、調整されたＶＬ優先度に基づき複数のパケットを送信する。
【００３９】
例２は、例１の主題を含むとしてよく、ＶＬ優先度の調整は、帯域幅の測定値がネットワーク帯域幅の割り当て分を超えている場合、ある範囲内の複数の優先度から選択される最低値までＶＬ優先度を下げることを含む。
【００４０】
例３は、例１および２の主題を含むとしてよく、ＶＬ優先度の調整は、帯域幅の測定値がネットワーク帯域幅の割り当て分を超えている場合、ＶＬにおける送信を禁止することを含む。
【００４１】
例４は、例１−３の主題を含むとしてよく、さらに、第１の仮想レーンでの複数のパケットの送信を中断して、第２の仮想レーンで複数のパケットを送信するプリエンプションモジュールを含む。第２の仮想レーンは、特定されたレイテンシ感度に対応付けられている。
【００４２】
例５は、例１−４の主題を含むとしてよく、中断される第１の仮想レーンの複数のパケットの優先度は、送信される第２の仮想レーンの複数のパケットの優先度よりも低い。
【００４３】
例６は、例１−５の主題を含むとしてよく、プリエンプションモジュールはさらに、中断されたパケットの残りのフラグメントの送信を再開する。
【００４４】
例７は、例１−６の主題を含むとしてよく、複数のパケットのうち第２のパケットにおいてフローコントロールデジットを使い果たすと、複数のパケットのうち第１のパケットを第２のパケットにインターリーブするインターリーブモジュールをさらに備える。
【００４５】
例８は、例１−７の主題を含むとしてよく、複数の仮想レーンのそれぞれにはトラフィッククラスが対応付けられている。
【００４６】
例９ａは、例１−８の主題を含むとしてよく、コントローラはネットワークファブリックスイッチで用いられ、コントローラは、ネットワークファブリックのファブリックマネージャから仮想レーン構成情報を受信し、仮想レーン構成情報は、所定のＶＬ優先度、ネットワーク帯域幅の割り当て分、および、レイテンシ感度を含む。
【００４７】
例９ｂは、例１−８の主題を含むとしてよく、ネットワークコントローラが、さらにプロセッサを有するネットワークノードで用いられ、ネットワークノードはシステムオンチップ（ＳｏＣ）で組み込まれる。
【００４８】
例１０によると、改善されたネットワーク通信のための方法が提供される。当該方法は、所定のＶＬ優先度およびネットワーク帯域幅の割り当て分が対応付けられている複数の仮想レーン（ＶＬ）で送信される複数のパケットが消費する帯域幅を測定する段階と、帯域幅の測定値とネットワーク帯域幅の割り当て分との比較に基づきＶＬ優先度を調整する段階と、調整されたＶＬ優先度に基づいて複数のパケットを送信する段階とを備えるとしてよい。
【００４９】
例１１は、例１０の主題を含むとしてよく、調整する段階はさらに、帯域幅の測定値がネットワーク帯域幅の割り当て分を超えている場合、ある範囲内の複数の優先度から選択される最低値までＶＬ優先度を下げる段階を有する。
【００５０】
例１２は、例１０および１１の主題を含むとしてよく、調整する段階はさらに、帯域幅の測定値がネットワーク帯域幅の割り当て分を超えている場合、ＶＬにおける送信を禁止する段階を有する。
【００５１】
例１３は、例１０−１２の主題を含むとしてよく、第１の仮想レーンでの複数のパケットの送信を中断して、第２の仮想レーンで複数のパケットを送信する段階をさらに備える。第２の仮想レーンは、特定されたレイテンシ感度が対応付けられている。
【００５２】
例１４は、例１０−１３の主題を含むとしてよく、中断される第１の仮想レーンの複数のパケットの優先度は、送信される第２の仮想レーンの複数のパケットの優先度よりも低い。
【００５３】
例１５は、例１０−１４の主題を含むとしてよく、中断されたパケットの残りのフラグメントの送信を再開する段階をさらに備える。
【００５４】
例１６は、例１０−１５の主題を含むとしてよく、複数のパケットのうち第２のパケットにおいてフローコントロールデジットを使い果たすと、複数のパケットのうち第１のパケットを第２のパケットにインターリーブする段階をさらに備える。
【００５５】
例１７は、例１０−１６の主題を含むとしてよく、複数の仮想レーンのそれぞれにトラフィッククラスを対応付ける段階をさらに備える。
【００５６】
例１８は、例１０−１７の主題を含むとしてよく、ネットワークのネットワークファブリックマネージャから仮想レーン構成情報を受信する段階をさらに備える。仮想レーン構成情報は、所定のＶＬ優先度、ネットワーク帯域幅の割り当て分、および、レイテンシ感度を含む。
【００５７】
例１９によると、複数の命令を格納している少なくとも１つのコンピュータ可読記憶媒体が提供される。当該複数の命令は、プロセッサが実行すると、ネットワーク通信を改善するべく以下の処理が実行される。上記の処理は、所定のＶＬ優先度およびネットワーク帯域幅の割り当て分に対応付けられている複数の仮想レーン（ＶＬ）で送信される複数のパケットが消費する帯域幅を測定することと、帯域幅の測定値とネットワーク帯域幅の割り当て分との比較に基づきＶＬ優先度を調整することと、調整されたＶＬ優先度に基づいて複数のパケットを送信することとを含むとしてよい。
【００５８】
例２０は、例１９の主題を含むとしてよく、調整することはさらに、帯域幅の測定値がネットワーク帯域幅の割り当て分を超えている場合、ある範囲内の複数の優先度から選択される最低値までＶＬ優先度を下げることを含む。
【００５９】
例２１は、例１９および２０の主題を含むとしてよく、調整することはさらに、帯域幅の測定値がネットワーク帯域幅の割り当て分を超えている場合、ＶＬにおける送信を禁止することを含む。
【００６０】
例２２は、例１９−２１の主題を含むとしてよく、第１の仮想レーンでの複数のパケットの送信を中断して、第２の仮想レーンで複数のパケットを送信することをさらに含む。第２の仮想レーンには、特定されたレイテンシ感度が対応付けられている。
【００６１】
例２３は、例１９−２２の主題を含むとしてよく、中断される第１の仮想レーンの複数のパケットの優先度は、送信される第２の仮想レーンの複数のパケットの優先度よりも低い。
【００６２】
例２４は、例１９−２３の主題を含むとしてよく、中断されたパケットの残りのフラグメントの送信を再開することをさらに含む。
【００６３】
例２５は、例１９−２４の主題を含むとしてよく、複数のパケットのうち第２のパケットにおいてフローコントロールデジットを使い果たすと、複数のパケットのうち第１のパケットを第２のパケットにインターリーブすることをさらに含む。
【００６４】
例２６は、例１９−２５の主題を含むとしてよく、複数の仮想レーンのそれぞれにトラフィッククラスを対応付けることをさらに含む。
【００６５】
例２７は、例１９−２６の主題を含むとしてよく、ネットワークのネットワークファブリックマネージャから仮想レーン構成情報を受信することをさらに含む。仮想レーン構成情報は、所定のＶＬ優先度、ネットワーク帯域幅の割り当て分、および、レイテンシ感度を含む。
【００６６】
例２８によると、改善されたネットワーク通信のためのシステムが提供される。当該システムは、所定のＶＬ優先度およびネットワーク帯域幅の割り当て分に対応付けられている複数の仮想レーン（ＶＬ）で送信される複数のパケットが消費する帯域幅を測定する手段と、帯域幅の測定値とネットワーク帯域幅の割り当て分との比較に基づきＶＬ優先度を調整する手段と、調整されたＶＬ優先度に基づいて複数のパケットを送信する手段とを備えるとしてよい。
【００６７】
例２９は、例２８の主題を含むとしてよく、調整する手段はさらに、帯域幅の測定値がネットワーク帯域幅の割り当て分を超えている場合、ある範囲内の優先度から選択される最低値までＶＬ優先度を下げる手段を有する。
【００６８】
例３０は、例２８および２９の主題を含むとしてよく、調整する手段はさらに、帯域幅の測定値がネットワーク帯域幅の割り当て分を超えている場合、ＶＬにおける送信を禁止する手段を有する。
【００６９】
例３１は、例２８−３０の主題を含むとしてよく、第１の仮想レーンでの複数のパケットの送信を中断して、第２の仮想レーンで複数のパケットを送信する手段をさらに備える。第２の仮想レーンには、特定されたレイテンシ感度が対応付けられている。
【００７０】
例３２は、例２８−３１の主題を含むとしてよく、中断される第１の仮想レーンの複数のパケットの優先度は、送信される第２の仮想レーンの複数のパケットの優先度よりも低い。
【００７１】
例３３は、例２８−３２の主題を含むとしてよく、中断されたパケットの残りのフラグメントの送信を再開する手段をさらに備える。
【００７２】
例３４は、例２８−３３の主題を含むとしてよく、複数のパケットのうち第２のパケットにおいてフローコントロールデジットを使い果たすと、複数のパケットのうち第１のパケットを第２のパケットにインターリーブする手段をさらに備える。
【００７３】
例３５は、例２８−３４の主題を含むとしてよく、複数の仮想レーンのそれぞれにトラフィッククラスを対応付ける手段をさらに備える。
【００７４】
例３６は、例２８−３５の主題を含むとしてよく、ネットワークのネットワークファブリックマネージャから仮想レーン構成情報を受信する手段をさらに備える。仮想レーン構成情報は、所定のＶＬ優先度、ネットワーク帯域幅の割り当て分、および、レイテンシ感度を含む。
【００７５】
本明細書で用いた用語および表現は、説明のための用語として用いられており、限定のためではない。これらの用語および表現を利用する際、図示および記載した特徴の均等物（またはその一部）を排除することを意図したものではなく、請求項の範囲内でさまざまな変形が可能であると考えられたい。本明細書ではさまざまな特徴、側面および実施形態を説明してきた。記載した特徴、側面および実施形態は、当業者であれば理解するであろうが、互いに組み合わせることが可能であり、変更および変形が可能である。このため、本開示はこのような組み合わせ、変更および変形を含むものと考えるべきである。
【図１】
0006420354.tif 000002
【図２】
0006420354.tif 000003
【図３】
0006420354.tif 000004
【図４】
0006420354.tif 000005
【図５】
0006420354.tif 000006
【図６】
0006420354.tif 000007