(58)【調査した分野】(Int.Cl.,DB名)
前記複数の入力ポートで受信された1つ以上のパケットを格納するために、複数の仮想出力キューを使用するステップをさらに含み、各前記入力ポートは、前記仮想出力キューのうちの1つ以上に関連付けられる、請求項1または2に記載の方法。
仮想出力キューに格納された1つ以上のパケットを出力ポートに発送するように入力ポートをスケジュールするために、出力スケジューラを使用するステップをさらに含む、請求項3に記載の方法。
1つ以上のパケットを前記仮想出力キューにエンキューする前に前記1つ以上のパケットをチェックするために、入力ポートパケット分類器を介して前記出力ポートフィルタマスクを使用するステップをさらに含む、請求項1に記載の方法。
前記入力ポートのうちの1つを介して、前記出力ポートをターゲットとする1つ以上のパケットが仮想出力キューにエンキューすることを防止するステップをさらに含む、請求項1〜6のいずれか1項に記載の方法。
前記出力ポートがアップしている場合、前記1つ以上のクレジットを可能にすることは、リモートトラフィック宛先から受信される1つ以上の初期クレジットを含む、請求項10〜12のいずれか1項に記載の方法。
前記出力ポートがダウンしている場合、前記1つ以上のクレジットは、前記出力ポートによって構成される1つ以上のリンクダウンクレジットを含む、請求項10〜13のいずれか1項に記載の方法。
前記出力スケジューラを介して、前記1つ以上のクレジットを、利用可能な最大クレジットとなるように設定するステップをさらに含む、請求項10〜14のいずれか1項に記載の方法。
マシン読取可能なフォーマットの命令を含み、前記命令は、実行されると、システムに請求項1〜19のいずれか1項に記載の方法を行なわせる、コンピュータプログラム。
【発明を実施するための形態】
【0006】
詳細な説明:
同じ参照符号は同様の要素を示す添付図面の図において、この発明を限定のためではなく例示のために説明する。なお、この開示における「ある」または「1つの」または「いくつかの」実施形態への参照は必ずしも同じ実施形態に対するものではなく、そのような参照は少なくとも1つを意味する。
【0007】
以下のようなこの発明の説明は、高性能ネットワーキング装置についての一例として、インフィニバンド(InfiniBand:IB)ネットワークスイッチを使用する。他のタイプの高性能ネットワーキング装置が何ら限定されることなく使用され得るということは、当業者には明らかであろう。
【0008】
ここに説明されるのは、クラウド環境などのネットワーク環境においてパケット交換をサポートできるシステムおよび方法である。
【0009】
高性能システム
図1は、この発明の一実施形態に従った、ネットワーク環境において高性能システムをサポートする図を示す。
図1に示すように、高性能システム100は、ネットワークスイッチファブリック110を介して相互接続された複数のホストマシン101〜103(またはサーバ)を含み得る。
【0010】
高性能システム100におけるネットワークスイッチファブリック110は、さまざまなホストマシン101〜103上で実行中のさまざまな仮想マシン(virtual machine:VM)111〜113(および/または仮想化されたアプリケーション)間でトラフィックの動きを方向付けることを担い得る。
【0011】
この発明の一実施形態によれば、ネットワークスイッチファブリック110はインフィニバンド(IB)プロトコルに基づくことができ、それは、ピア・ツー・ピアクレジット交換を管理でき、損失のないエンド・ツー・エンド接続性を提供する。このため、ネットワークスイッチファブリック110におけるさまざまなネットワーキング装置は、高性能システム100においてデータ転送をサポートするための異なる条件下でクレジット整合性を維持することができる。
【0012】
加えて、さまざまなVM111〜113(および/またはアプリケーション)間のトラフィックのためのサービス品質(quality of service:QoS)を提供するために、物理的なIBリンクは各々、複数の仮想リンク(virtual link:VL)に分割され得る。たとえば、ホストマシン101〜103間のネットワークパケットストリーム120は、異なるVM111〜113およびアプリケーションが望み得る異なるサービスの集まりを表わし得る。さらに、異なるソース宛先ペア間の集められたネットワークパイプ内で送信される個々のパケットストリーム120は、異なるサービス要件(さらには相反するサービス要件)を満たすことができる。
【0013】
インフィニバンド(IB)ネットワークスイッチ
図2は、この発明の一実施形態に従った、高性能システムにおいてネットワークスイッチをサポートする図を示す。
図2に示すように、高性能システム200におけるIBネットワークスイッチ220などのネットワーク装置は、さまざまなトラフィックソース201および211からさまざまなトラフィック宛先208および218にデータトラフィックを方向付けることを担い得る。
【0014】
たとえば、入力ポート202、212、出力ポート207、217などの多数のポートをサポートするIBネットワークスイッチ220は、クロスバー(XBAR)ファブリック210に基づくことができる。
【0015】
図2に示すように、入力ポート202は、ソースVL221を使用してトラフィックソース201からさまざまな入来データパケットを受信でき、入力ポート212は、ソースVL231を使用してトラフィックソース211からさまざまなデータパケットを受信できる。また、出力ポート207は、宛先VL227を使用してトラフィック宛先208に送出データパケットを送信でき、出力ポート217は、宛先VL237を使用してトラフィック宛先218に送出データパケットを送信できる。
【0016】
さらに、IBスイッチ220は異なるQoS要望を満たすことができ、それは、利用可能なネットワークファブリックリソースの最適な使用をサポートする。たとえば、IBスイッチ220は、アプリケーションに関連付けられたトラフィックのサービスレベル(service level:SL)に基づいて、あるパケット用の入来VL(すなわちソースVL)を、そのパケット用の異なる送出VL(すなわち宛先VL)に再マッピングしてもよい。
【0017】
この発明の一実施形態によれば、入力ポート202または212の各々は、入来パケットごとに出力ポートを決定できる入力ポートパケット分類器203または213を利用することができる。たとえば、入力ポートパケット分類器203は、入力ポート202で受信されたパケットごとに出力ポートを決定でき(および、1つ以上のパケットを除去するためにポートフィルタ204を使用でき)、入力ポートパケット分類器213は、入力ポート212で受信されたパケットごとに出力ポートを決定できる(および、1つ以上のパケットを除去するためにポートフィルタ214を使用できる)。
【0018】
加えて、入力ポート分類器203または213は、入力ポート202または212に到着した(マルチキャスティングおよびブロードキャスティング用などの)マルチ宛先パケットごとに、複数の出力宛先ポートを決定できる。ポートフィルタ204は、所与のパケット用のポートリストから1つ以上の宛先ポートを除去することができる。さらに、宛先ポートがすべてリストから除去された場合、マルチ宛先パケットはドロップされてもよい。その他の場合、パケットは、(入力ポートパケット分類器によって)元々分類されたポートリストの部分集合であり得る利用可能な宛先ポートのためにキューに入れられ得る。
【0019】
入力ポートベースでは、入力ポート202または212は、受信したパケットを(たとえば出力ポート207または217を介して)トラフィック宛先208または218に送信する前に、受信したパケットをイングレスバッファ、たとえば仮想出力キュー(virtual output queue:VOQ)205または215に格納することができる。
図2に示すように、入力ポート202で受信されたパケットはVOQ205に格納可能であり、入力ポート212で受信されたパケットはVOQ215に格納可能である。
【0020】
加えて、イングレスバッファの各々(たとえばVOQ205または215)は多くのキューを含んでいてもよく、それらは各々、出力ポートに関連付けられた宛先VL(たとえば、出力ポート207上のVL227、出力ポート217上のVL237)をターゲットとするパケットを取り扱うことを担い得る。このため、入力ポートベースでのキューの総数は、出力ポートの数と、各出力ポート上でサポートされる宛先VLの数との積であり得る。その結果、ポートの数と各ポート上でサポートされるVLの数とが大きい場合、システムは、入力ポート202または212ごとに多数のキューを必要とするかもしれない。
【0021】
この発明の一実施形態によれば、VOQ205および215は共有メモリ構造を使用して実現可能であり、VOQ205および215における各キューの利用はトラフィックに依存し得る。たとえば、VOQリソースは、入来パケットがキューに入れられる(すなわち、ネットワークパケットの受信)と消費され、パケットがデキューされる(すなわち、出力ポートへのパケットの配信)と最終的に解放されるメモリブロックの数を表わし得る。このため、VOQリソースの利用は、トラフィックパターンの関数になり得る。
【0022】
この発明の一実施形態によれば、システムは、入力ポート202および212をスケジュールし、VOQ205および215に格納されたパケットの出力ポート207および217への動きを方向付けることができる。イングレスバッファにおける各キューの排出速度は、パケットがターゲットとする宛先VLおよび出力ポートに依存し得る。
【0023】
図2に示すように、各出力ポート207または217は、(出力ポートXBARアービタ206または216などの)出力スケジューラを利用することができる。出力ポートXBARアービタ206または216は、さまざまなVOQの充満度、および宛先VL上の利用可能なクレジット、といったさまざまな基準に基づいて、パケットの動きに関する決定を下すことができる。
【0024】
この発明の一実施形態によれば、IBネットワークスイッチ220は、異なる条件下でクレジット整合性を維持することができる。
図2に示すように、IBネットワークスイッチ220の受信側では、クレジットは、入来パケットの入来ソースVL221および231に基づいて整合して維持され、IBネットワークスイッチ220の送信側では、クレジットは、送出パケットの宛先VL227および237に基づいて整合して維持され得る。
【0025】
さらに、入力ポートベースでは、各入来パケットをキューに入れることは、パケットのソースVLに基づいて行なわれ得る。このため、システムは、ソースVL221または231に基づいてさまざまなクレジットアカウンティング動作を行なうことができる。たとえば、クレジットアカウンティングのために、VOQセットが、IBネットワークスイッチ220における各ソースVLに割当てられ得る。
【0026】
ネットワークスイッチにおけるリンク状態変化
図3は、この発明の一実施形態に従った、ネットワーク環境においてリンク状態変化を取り扱う図を示す。
図3に示すように、高性能システム300では、IBネットワークスイッチにおけるデータフローは、クロスバー(XBAR)ファブリック310を介して、入力ポート302および出力ポート307を伴い得る。
【0027】
入力ポート302は、トラフィックソース301などのリモート送信側に1つ以上のクレジットを宣伝でき、リモート送信側から1つ以上のデータパケットを受信する。出力ポート307は、トラフィック宛先308などのリモート受信側に1つ以上のデータパケットを送信でき、リモート受信側から1つ以上のクレジットを受信する。
【0028】
さらに、入力ポート302は、入来パケットごとに1つ以上の宛先を決定できる(および、1つ以上のパケットを除去するためにポートフィルタ304を使用できる)入力パケット分類器303を利用することができる。加えて、入力ポート302は、パケットを異なる出力ポートに発送する前に、受信したパケットを仮想出力キュー(VOQ)305などのイングレスバッファに格納することができる。
【0029】
図3に示すように、VOQ305は複数のキュー311〜313を含むことができ、それらは各々、出力ポート上の異なる宛先VLをターゲットとするパケットを格納できる。たとえば、キュー313は、出力ポート307上の宛先VL322をターゲットとするパケットを格納することを担い得る。
【0030】
この発明の一実施形態によれば、トラフィックソース301は、トラフィックソース301がパケットを送信したときにトラフィック宛先308が到達可能かどうか知らないかもしれない。このため、出力ポート307がダウンした場合、トラフィックソース301はより多くのパケットを絶えず送信するかもしれず、それは、最終的にドロップされ得るパケットのためにVOQリソースを必要以上に多く(さらには無駄に)利用することをもたらし得る。
【0031】
たとえば、出力ポート307がダウンしている場合、出力ポート307は、到着したパケット323を排出し得る。パケット323が排出されるにつれて、放出されたクレジット324が、入力ポート302上のソースVL321に戻され得る。トラフィックソース301は出力ポート307がダウンしたことに気づかないかもしれないため、トラフィックソース301は、十分なクレジットが利用可能である限り、仮により多くのパケットが最終的に出力ポート307で排出され得るとしても、これらのパケットを入力ポート302に送信するかもし続けるかもしれない。
【0032】
また、同じVOQ構造の一部である他の出力ポートは、VOQリソースを利用できないかもしれない。なぜなら、ソースVL321に関連付けられたVOQリソースが、最終的に出力ポート307でドロップされるパケットによって絶えず消費されるかもしれないためである。
【0033】
さらに、出力ポート307がダウンした場合、高レベルアプリケーション320がリンク状態変化を取り扱うことができるようになるには、長い時間がかかるかもしれない。なぜなら、高レベルアプリケーション320のためのタイムアウト330設定は、比較的大きい傾向があるためである。一方、トラフィックソース301は、高速(たとえば、1秒あたり100G)でパケットを送信し続けるかもしれない。このため、入来トラフィックはVOQリソースを容易に圧倒し得る。
【0034】
この発明の一実施形態によれば、出力ポート307は、リンク状態管理309を行ない、リンク状態変化について入力ポート302に通知することができる。たとえば、リンク状態変化を検出した出力ポート307は、たとえば出力ポートアービタ306を介して、すべてのVOQ(たとえばVOQ305)にわたって状態変化通知325をブロードキャストすることができる。リンク状態管理309は、たとえば、各リンクの各ステータスを記述するリンク状態データベーステーブルへのアクセスと、各状態の変化の検出とを含む。最終的に、状態変化通知325は、入力ポート302(およびさまざまな他の入力ポート)に到達してもよい。
【0035】
図3に示すように、入力ポート302は、受信されたパケットが、ダウンしている出力ポート307で提示されることを防止できる。たとえば、入力パケット分類器303は、受信されたパケットをVOQ305に入れる前の最終チェックとして、マスク(たとえば、ブロードキャスト信号に基づいた出力ポートフィルタマスク)を構成し、および/または使用することができる。
【0036】
加えて、入力ポート302は、出力ポート307をターゲットとするパケットを、それらがVOQ305にエンキューされる前にドロップしてもよい。出力ポート307がダウンすることによってドロップされるこれらのパケットは、VOQスペースをまったく消費しないかもしれない。これに対応して、これらのドロップされたパケットに関連付けられたクレジットが、トラフィックソース301に直ちに戻され得る。
【0037】
このため、システムは、最終的にドロップされ得るパケットを格納するためにVOQリソースが浪費されることを防止できる。
【0038】
図4は、この発明の一実施形態に従った、高性能システムにおいてデータフローを管理する図を示す。
図4に示すように、高性能システム400におけるIBネットワークスイッチ420などのネットワーク装置は、トラフィックソース401および411などのさまざまなリモート送信側から、トラフィック宛先408および418などのさまざまなリモート受信側に、トラフィックを方向付けることを担い得る。
【0039】
さらに、クロスバー(XBAR)ファブリック410に基づくIBネットワークスイッチ420は、入力ポート402、412、および出力ポート407、417などの(複数のVLを有する)多数のポートをサポートすることができる。
【0040】
図4に示すように、入力ポート402または412の各々は、トラフィックソース401または411に1つ以上のクレジットを宣伝でき、トラフィックソース401または411から1つ以上のデータパケットを受信する。出力ポート407または417の各々は、トラフィック宛先408または418に1つ以上のデータパケットを送信でき、トラフィック宛先408または418から1つ以上のクレジットを受信する。
【0041】
加えて、入力ポート402および412の各々は、入来パケットごとに出力ポートを決定できる入力ポートパケット分類器403または413を利用することができる。入力ポートベースでは、パケットは、(出力ポート407または417を介して)トラフィック宛先408または418に送信される前に、イングレスバッファ、たとえば仮想出力キュー(VOQ)405または415に格納され得る。
【0042】
この発明の一実施形態によれば、1つ以上の出力ポート407または417がリンク状態変化(リンクアップ/ダウンなど)を経験している間、システムはデータフローおよびVOQリソースを管理することができる。
【0043】
図4に示すように、各出力ポート407または417は、リンク状態管理409および419を行なうことができる。出力ポート407または417がリンク状態の任意の変化を検出すると、出力ポート407または417は、出力ポートアービタ406または416などの出力スケジューラに通知することができ、それは、すべてのVOQ405および415にわたって(最終的には異なる入力ポート402および412に)状態変化通知をブロードキャストすることができる。
【0044】
さらに、状態変化通知を受信した入力ポート402または412は、受信されたパケットが、出力ポート407または417で提示されることを防止できる。たとえば、入力パケット分類器403または413は、ブロードキャスト信号に基づいて出力ポートフィルタマスクを構成し、パケットをVOQ405または415に入れる前の最終チェックとして、そのマスクをポートフィルタ404または414のために使用することができる。
【0045】
加えて、入力ポート402または412は、出力ポート407または417をターゲットとするパケットを、これらのパケットがVOQ405または415に入れられる前にドロップすることができる。出力ポート407または417でのリンク状態変化によりドロップされるこれらのパケットは、VOQスペースをまったく消費しないかもしれない。これに対応して、これらのパケットに関連付けられたクレジットが、直ちに戻され得る。
【0046】
このため、高性能システム400は、最終的にドロップされ得るパケットを格納するためにVOQリソースが浪費されることを防止できる。
【0047】
図5は、この発明の一実施形態に従った、ネットワークスイッチにおいてリンク状態変化を取り扱うための例示的なフローチャートを示す。
図5に示すように、ステップ501で、システムは、複数の入力ポートおよび複数の出力ポートに関連付けられたネットワーキング装置を準備できる。たとえば、システムはネットワーキング装置を活性化し、ネットワーキング装置はそれに応じて動作の準備ができるようになる。さらに、ステップ502で、システムは、ネットワーキング装置に関連付けられた出力ポートでリンク状態変化を検出できる。次に、ステップ503で、出力ポートは、出力ポートでのリンク状態変化を1つ以上の入力ポートに通知できる。
【0048】
ネットワークスイッチにおけるクレジット管理
図6は、この発明の一実施形態に従った、ネットワーク環境においてリンク状態変化を取り扱うためのクレジットを管理する図を示す。
図6に示すように、高性能システム600では、IBネットワークスイッチにおけるデータフローは、クロスバー(XBAR)ファブリック610を介して、入力ポート602および出力ポート607を伴い得る。
【0049】
入力ポート602は、トラフィックソース601などのリモート送信側に1つ以上のクレジットを宣伝でき、リモート送信側から1つ以上のデータパケットを受信する。出力ポート607は、トラフィック宛先608などのリモート受信側に1つ以上のデータパケットを送信でき、リモート受信側から1つ以上のクレジットを受信する。
【0050】
加えて、入力ポート602は、入来パケットごとに1つ以上の宛先を決定できる(および、1つ以上のパケットを除去するためにポートフィルタ604を使用できる)入力ポートパケット分類器603を利用することができる。入力ポートベースでは、パケットは、宛先に送信される前に、仮想出力キュー(VOQ)605などのイングレスバッファに格納され得る。
【0051】
図6に示すように、仮想出力キュー(VOQ)605などのイングレスバッファは複数のキュー611〜613を含み得る。たとえば、キュー613は、出力ポート607上の宛先VL622をターゲットとするパケットを格納できる。
【0052】
この発明の一実施形態によれば、出力ポートアービタ606などの出力スケジューラは、(複数のキュー611〜613以外のキューを含む)異なるVOQから出力ポート607へのさまざまなパケットの配信をスケジュールできる。
【0053】
さらに、出力ポートアービタ606は、さまざまな基準(利用可能なクレジット626など)に基づいて、ネットワークスイッチ上の異なる入力ポートからある入力ポートを選択でき、出力ポート607をターゲットとする1つ以上のパケットを配信するための宛先VLを選択できる。
【0054】
この発明の一実施形態によれば、システムは、さまざまな出力ポートクロスバーアービタ内のスケジューリング層に抽象化を提供できるフレームワークを提供できる。出力スケジューラが任意の物理的なリンク状態変化にとらわれないように、システムは、利用可能なクレジット626を出力スケジューラに提示することによってリンク状態抽象化を達成できる。
【0055】
図6に示すように、クレジット整合性を維持するために、出力ポートアービタ606は、そのスケジューリング決定に達する際に利用可能なクレジット626を考慮することができる。加えて、リンク関連状態管理609全体は、物理的な出力ポート607内で行なわれ得る。また、出力ポート607は、クレジット状態管理629を独立して行なうことができる。
【0056】
この発明の一実施形態によれば、システムは、出力ポートアービタ606に最大クレジット値を示すために、インターフェイス639を出力ポート607上に提供することができる。たとえば、インターフェイス639は、ポートロジックと出力ポートアービタ606との間に存在し得る。
【0057】
出力ポートアービタ606が初期クレジット628を受信すると、出力ポートアービタ606は、(新しい一組の初期値が次回提示されるまで)初期クレジット628についての値を、消費され得る最大クレジットとしてロックすることができる。
【0058】
このため、システムは、リンク状態変化およびパケットスケジューリングの非同期的性質に起因するさまざまな潜在的な競合状態を防止することができる(たとえば、これらの状態は、インフライトパケットと、クレジットが戻される際のそれらのオーバーフローとによって生じ得る)。
【0059】
たとえば、トラフィックが動いている状態でリンクがアップしている(すなわちアクティブである)場合、リモート宛先608から来る値に基づいて、初期クレジット628についてのすべての更新が出力ポートアービタ606に提示され得る。たとえば、これらの値は、インターフェイス639を簡単に通過できる。次に、リモート宛先608によって提供された情報に基づいて、出力ポートアービタ606は、利用可能なクレジット626の値を導き出すことができる。
【0060】
図6に示すように、出力ポート607とリモートトラフィック宛先608とのリンクがアクティブである場合(すなわち、出力ポート607がアップしている場合)、出力ポートアービタ606は、キュー613に格納された1つ以上のパケットを出力ポート607上の選択された宛先VL622に配信するように入力ポート602をスケジュールすることができる。
【0061】
次に、送出パケット(またはデータ)が排出されるにつれて、リモートトラフィック宛先608はクレジットを出力ポート607に放出することができる。加えて、出力ポートアービタ606は、放出されたクレジットを使用して、XBARファブリック610を通して、出力ポート607上の選択された宛先VL622により多くのパケットを配信するようにキュー613をスケジュールすることができる。
【0062】
この発明の一実施形態によれば、IBプロトコルを使用して、パケットの動きはクレジットの利用可能性に基づくことができ、それが欠けていることは、IBネットワークスイッチにおけるVOQでのパケットの動きをブロックし得る。さらに、VOQのブロック挙動は、ソース(または入力ポート)から宛先(または出力ポート)へのトラフィックフローに依存して、VOQリソースを必要以上に多く(さらには無駄に)利用することをもたらし得る。
【0063】
たとえば、出力ポート607とリモートトラフィック宛先608とのリンクがイナクティブになった場合(すなわち、出力ポート607がダウンしている場合)、リモートトラフィック宛先608からのクレジットの放出も停まるかもしれない(すなわち、利用可能なクレジットの現在値は任意の状態になり得る)。利用可能なクレジットがない(またはほんの少ししかない)ことが起こり得る。その場合、VOQ605にエンキューされたパケットは、利用可能なクレジットがないため、VOQ605から出ることができないかもしれない。
【0064】
図6に示すように、出力ポート607上のリンクがダウンした場合、抽象化を維持するためにインターフェイス639を使用することができる。出力ポート607上のリンク状態管理609(状態マシン)は、リンクがアップしている場合に宣伝される初期クレジット628と同じ(または類似した)態様で、新しい一組の初期クレジット(たとえば、リンクダウンクレジット627)を宣伝することができる。
【0065】
この発明の一実施形態によれば、システムは、リンクダウンクレジット627について宣伝される値が十分に大きくなり得る、ということを保証できる。たとえば、値は、出力ポート607でのターンアラウンドタイムに基づいて推定され得る。次に、出力ポートアービタ606は、リンクダウンクレジット627を、新しい最大数として自動追尾することができる。
【0066】
新しいクレジットが利用可能である状態で、VOQ605は、出力ポート607へのパケット(またはデータ)の送信を開始することができる。データが物理的な出力ポート607に向かって動くにつれて、パケット623がドロップされ、クレジット624が出力ポートアービタ606に戻され得る。これは、(出力ポートがダウンしている場合でさえ)ブロック挙動を防止するために、出力ポートアービタ606は利用可能なクレジットを常に有する、ということを保証する。
【0067】
さらに、リンクが再びアップに戻った場合、クレジットフローは新しい初期クレジット628の宣伝と同じプロセスをたどり、それは連続するトラフィックの動きを可能にする。
【0068】
この発明の一実施形態によれば、システムは、異なる条件下でのさまざまなデッドロックシナリオを回避するために、クレジットのフローを管理できる。たとえば、デッドロックは、VOQ605が出力ポート用のパケットで満たされる場合に起こるかもしれず、それは最終的にソースVL621についてのバックアップを引き起こすかもしれない。デッドロックはまた、マルチキャストパケットが係わっている場合に起こるかもしれない。たとえば、複製順序リストの先頭にあるポートがダウンした場合、それらのポートは、依然としてアクティブであるポートをブロックし始めるかもしれない。なぜなら、マルチキャストパケットは、1つずつ複製されるため、前進を得られないかもしれないためである。
【0069】
このため、システムは、VOQ605におけるパケットを排出することによって、ブロック挙動(さらにはデッドロック)を回避することができる。また、システムは、アクティブな出力ポート間の非ブロック挙動を、他のポートが遷移を経験している間に提供することができる。
【0070】
図7は、この発明の一実施形態に従った、ネットワークスイッチにおいてクレジット管理をサポートする図を示す。
図7に示すように、高性能システム700において、IBネットワークスイッチ720などのネットワーク装置は、トラフィックソース701および711などのさまざまなリモート送信側から、トラフィック宛先708および718などのさまざまなリモート受信側に、トラフィックを方向付けることを担い得る。
【0071】
さらに、クロスバー(XBAR)ファブリック710に基づくIBネットワークスイッチ720は、入力ポート702、712、および出力ポート707、717などの(複数のVLを有する)多数のポートをサポートすることができる。
【0072】
入力ポート702または712の各々は、トラフィックソース701または711に1つ以上のクレジットを宣伝でき、トラフィックソース701または711から1つ以上のデータパケットを受信する。出力ポート707または717の各々は、トラフィック宛先708または718に1つ以上のデータパケットを送信でき、トラフィック宛先708または718から1つ以上のクレジットを受信する。
【0073】
加えて、入力ポート702および712の各々は、入来パケットごとに1つ以上の出力ポートを決定できる(および、1つ以上のパケットを除去するためにポートフィルタ704または714を使用できる)入力ポートパケット分類器703または713を利用することができる。入力ポートベースでは、パケットは、(出力ポート707または717を介して)トラフィック宛先708または718に送信される前に、仮想出力キュー(VOQ)705または715などのイングレスバッファに格納され得る。
【0074】
この発明の一実施形態によれば、出力ポートアービタ706および716などの異なる出力スケジューラは、異なるVOQ705および715から出力ポート707および717へのさまざまなパケットの配信をスケジュールできる。また、システムは、異なる条件下でのさまざまなデッドロックシナリオを回避するために、クレジットのフローを管理できる。
【0075】
図7に示すように、出力ポート707または717は、クレジット状態管理729または739を行なうことができる。加えて、システムは、出力XBARアービタ706または716に最大クレジット値を示すために、インターフェイス730または740を出力ポート707または717上に提供することができる。初期クレジット728または738がアービタ706または716に提示されると、アービタ706または716は、(新しい一組の初期値が次回提示されるまで)初期クレジット728または738の値を、消費され得る最大クレジットとしてロックすることができる。
【0076】
トラフィックが動いている状態でリンクがアップしている(すなわちアクティブである)場合、リモート宛先708または718から来る値に基づいて、初期クレジット728または738についてのすべての更新が出力ポートアービタ706または716に提示され得る。
【0077】
一方、リンクがダウンした場合、許容された最大クレジットの現在値は任意の状態になり得る。利用可能なクレジットがない(またはほんの少ししかない)ことが起こり得る。
【0078】
図7に示すように、出力ポート707または717上のリンクがダウンした場合、抽象化を維持するためにインターフェイス730または740を使用することができる。出力ポート707または717上のリンク状態管理709または719(状態マシン)は、リンクがアップしている場合に宣伝される初期クレジット728または738と同じ(または類似した)態様で、新しい一組の初期クレジット(たとえば、リンクダウンクレジット727または737)を宣伝することができる。
【0079】
次に、VOQ705および715は、出力ポート707または717へのパケット(またはデータ)の送信を開始することができる。データが物理的な出力ポート707または717に向かって動くにつれて、パケットがドロップされ、クレジットが出力ポートアービタ706または716に戻され得る。これは、出力ポートがダウンしている場合でさえ、アービタ706または716は利用可能なクレジットを常に有する、ということを保証し、それはブロック挙動を防止する。
【0080】
このため、VOQ705および715におけるパケットを排出することによって、システムは、VOQ705および715における、ならびに他の出力ポート間でのブロック挙動(さらにはデッドロック)を回避することができる。
【0081】
さらに、リンクが再びアップに戻った場合、クレジットフローは新しい初期クレジット728または738の宣伝と同じプロセスをたどることができ、それは連続するトラフィックの動きを可能にする。
【0082】
図8は、この発明の一実施形態に従った、ネットワークスイッチにおいてクレジット管理をサポートするための例示的なフローチャートを示す。
図8に示すように、ステップ801で、システムは、複数の入力ポートおよび複数の出力ポートを含むネットワーキング装置上の出力ポートでリンク状態変化を検出できる。さらに、ステップ802で、出力ポートは、1つ以上のクレジットを出力スケジューラに提供できる。次に、ステップ803で、出力スケジューラは、1つ以上のクレジットに基づいて、出力ポートをターゲットとする1つ以上のパケットが1つ以上の仮想出力キューからデキューされることを可能にする。
【0083】
この発明の一実施形態では、ネットワーク環境においてパケット交換をサポートするための方法であって、複数の入力ポートおよび複数の出力ポートを含むネットワーキング装置上の出力ポートでリンク状態変化を検出するステップと、出力ポートを介して、1つ以上のクレジットを出力スケジューラに提供するステップと、1つ以上のクレジットに基づいて、出力スケジューラを介して、出力ポートをターゲットとする1つ以上のパケットが1つ以上の仮想出力キューからデキューされることを可能にするステップとを含む、方法が提供される。
【0084】
この発明の別の実施形態では、その方法において、ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである。
【0085】
この発明の別の実施形態では、その方法は、1つ以上の入力ポートを介して、当該1つ以上のパケットを当該1つ以上の当該仮想出力キューに格納するステップを含む。
【0086】
この発明の別の実施形態では、その方法において、出力ポートがアップしている場合、当該1つ以上のクレジットを可能にすることは、リモートトラフィック宛先から受信される1つ以上の初期クレジットを含む。
【0087】
この発明の別の実施形態では、その方法において、出力ポートがダウンしている場合、当該1つ以上のクレジットは、出力ポートによって構成される1つ以上のリンクダウンクレジットを含む。
【0088】
この発明の別の実施形態では、その方法は、出力スケジューラを介して、1つ以上のクレジットを、利用可能な最大クレジットとなるように設定するステップを含む。
【0089】
この発明の別の実施形態では、その方法は、利用可能な最大クレジットに基づいて、出力スケジューラを介して、利用可能なクレジットを導き出すステップを含む。
【0090】
この発明の別の実施形態では、その方法は、出力スケジューラが、利用可能なクレジットに基づいて、宛先仮想レーンを選択するステップをさらに含む。
【0091】
この発明の別の実施形態では、その方法は、仮想出力キューからの当該1つ以上のパケットを、出力ポート上の宛先仮想レーンに向けて発送するステップをさらに含む。
【0092】
この発明の別の実施形態では、その方法は、出力ポートで当該1つ以上のパケットを排出するステップと、入力ポート上の1つ以上のソース仮想レーンに1つ以上のクレジットを戻すステップとをさらに含む。
【0093】
この発明の一実施形態では、前述の方法のいずれかにおける、ネットワーク環境においてパケット交換をサポートするためのシステムであって、ネットワーキング装置は、ネットワーキング装置上の出力ポートでリンク状態変化を検出し、出力ポートを介して、1つ以上のクレジットを出力スケジューラに提供し、1つ以上のクレジットに基づいて、出力スケジューラを介して、出力ポートをターゲットとする1つ以上のパケットが1つ以上の仮想出力キューからデキューされることを可能にするように動作可能である、システムが提供される。
【0094】
この発明の別の実施形態では、ネットワーク環境においてパケット交換をサポートするためのシステムであって、複数の入力ポートおよび複数の出力ポートを有するネットワーキング装置を含み、ネットワーキング装置は、ネットワーキング装置上の出力ポートでリンク状態変化を検出し、出力ポートを介して、1つ以上のクレジットを出力スケジューラに提供し、1つ以上のクレジットに基づいて、出力スケジューラを介して、出力ポートをターゲットとする1つ以上のパケットが1つ以上の仮想出力キューからデキューされることを可能にするように動作可能である、システムが提供される。
【0095】
この発明の別の実施形態では、そのシステムにおいて、ネットワーキング装置は、クロスバーファブリックを有するネットワークスイッチである。
【0096】
この発明の別の実施形態では、そのシステムにおいて、1つ以上の入力ポートは、当該1つ以上のパケットを当該1つ以上の当該仮想出力キューに格納するように動作可能である。
【0097】
この発明の別の実施形態では、そのシステムにおいて、出力ポートがアップしている場合、当該1つ以上のクレジットは、リモートトラフィック宛先から受信される1つ以上の初期クレジットである。
【0098】
この発明の別の実施形態では、そのシステムにおいて、出力ポートがダウンしている場合、当該1つ以上のクレジットは、1つ以上のリンクダウンクレジットである。
【0099】
この発明の別の実施形態では、そのシステムにおいて、出力スケジューラは、1つ以上のクレジットを、利用可能な最大クレジットとなるように設定するように動作可能である。
【0100】
この発明の別の実施形態では、そのシステムにおいて、出力スケジューラは、利用可能な最大クレジットに基づいて、利用可能なクレジットを導き出すように動作可能である。
【0101】
この発明の別の実施形態では、そのシステムにおいて、出力スケジューラは、利用可能なクレジットに基づいて、宛先仮想レーンを選択するように動作可能である。
【0102】
この発明の別の実施形態では、そのシステムにおいて、ネットワーキング装置は、仮想出力キューからの当該1つ以上のパケットを、出力ポート上の宛先仮想レーンに向けて発送し、出力ポートで当該1つ以上のパケットを排出し、入力ポート上の1つ以上のソース仮想レーンに1つ以上のクレジットを戻すように動作可能である。
【0103】
この発明の一実施形態では、命令を格納する、非一時的なマシン読取可能記憶媒体であって、当該命令は、実行されると、システムに複数のステップを行なわせ、当該複数のステップは、複数の入力ポートおよび複数の出力ポートを含むネットワーキング装置上の出力ポートでリンク状態変化を検出するステップと、出力ポートを介して、1つ以上のクレジットを出力スケジューラに提供するステップと、1つ以上のクレジットに基づいて、出力スケジューラを介して、出力ポートをターゲットとする1つ以上のパケットが1つ以上の仮想出力キューからデキューされることを可能にするステップとを含む、非一時的なマシン読取可能記憶媒体が提供される。
【0104】
この発明の一実施形態では、マシン読取可能なフォーマットの命令を含み、当該命令は、実行されると、システムに上述の方法を行なわせる、コンピュータプログラムが提供される。
【0105】
本発明の多くの特徴は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せにおいて、当該ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを使用して、もしくは当該ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せの助けを得て行なわれ得る。したがって、本発明の特徴は、(たとえば、1つ以上のプロセッサを含む)処理システムを使用して実現されてもよい。
【0106】
本発明の特徴は、ここに提示された特徴のいずれかを行なうように処理システムをプログラミングするために使用可能な命令が格納された記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラム製品において、当該コンピュータプログラム製品を使用して、もしくは当該コンピュータプログラム製品の助けを得て実現され得る。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気カードまたは光カード、ナノシステム(分子メモリICを含む)、もしくは、命令および/またはデータを格納するために好適な任意のタイプの媒体またはデバイスを含み得るものの、それらに限定されない。
【0107】
マシン読取可能媒体のうちのいずれか1つに格納されて、本発明の特徴は、処理システムのハードウェアを制御するために、および、処理システムが本発明の結果を利用する他のメカニズムとやりとりすることを可能にするために、ソフトウェアおよび/またはファームウェアに組込まれ得る。そのようなソフトウェアまたはファームウェアは、アプリケーションコード、デバイスドライバ、オペレーティングシステム、および実行環境/コンテナを含み得るものの、それらに限定されない。
【0108】
この発明の特徴はまた、たとえば、特定用途向け集積回路(application specific integrated circuit:ASIC)などのハードウェアコンポーネントを使用して、ハードウェアで実現されてもよい。ここに説明された機能を行なうようなハードウェア状態マシンの実現は、当業者には明らかであろう。
【0109】
加えて、本発明は、本開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取可能記憶媒体を含む、1つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを使用して、便利に実現されてもよい。ソフトウェア技術の当業者には明らかであるように、本開示の教示に基づいて、適切なソフトウェアコーディングを、熟練したプログラマーによって容易に準備することができる。
【0110】
本発明のさまざまな実施形態が上に説明されてきたが、それらは限定のためではなく例示のために提示されたことが理解されるべきである。形態および詳細におけるさまざまな変更を、この発明の精神および範囲から逸脱することなくそこで行なうことができるということは、当業者には明らかであろう。
【0111】
本発明は、特定された機能およびそれらの関係の実行を示す機能構築ブロックの助けを得て、上に説明されてきた。これらの機能構築ブロックの境界はしばしば、説明の便宜上、ここに任意に定義されてきた。特定された機能およびそれらの関係が適切に実行される限り、代替的な境界を定義することができる。あらゆるそのような代替的な境界はこのため、この発明の範囲および精神内にある。
【0112】
この発明の前述の説明は、例示および説明のために提供されてきた。それは、網羅的であるよう、またはこの発明を開示された形態そのものに限定するよう意図されてはいない。本発明の広さおよび範囲は、上述の例示的な実施形態のいずれによっても限定されるべきでない。当業者には、多くの修正および変形が明らかであろう。修正および変形は、開示された特徴のあらゆる関連する組合せを含む。実施形態は、この発明の原理およびその実際的な適用を最良に説明するために選択および説明されたものであり、それにより、他の当業者が、特定の使用に好適なさまざまな修正を考慮して、さまざまな実施形態についてこの発明を理解することを可能にする。この発明の範囲は、請求項およびそれらの均等物によって定義されることが意図されている。