特許第6986588号(P6986588)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許6986588ネットワーキング装置において効率的な仮想出力キュー(VOQ)パケットフラッシングスキームをサポートするためのシステムおよび方法
<>
  • 特許6986588-ネットワーキング装置において効率的な仮想出力キュー(VOQ)パケットフラッシングスキームをサポートするためのシステムおよび方法 図000003
  • 特許6986588-ネットワーキング装置において効率的な仮想出力キュー(VOQ)パケットフラッシングスキームをサポートするためのシステムおよび方法 図000004
  • 特許6986588-ネットワーキング装置において効率的な仮想出力キュー(VOQ)パケットフラッシングスキームをサポートするためのシステムおよび方法 図000005
  • 特許6986588-ネットワーキング装置において効率的な仮想出力キュー(VOQ)パケットフラッシングスキームをサポートするためのシステムおよび方法 図000006
  • 特許6986588-ネットワーキング装置において効率的な仮想出力キュー(VOQ)パケットフラッシングスキームをサポートするためのシステムおよび方法 図000007
  • 特許6986588-ネットワーキング装置において効率的な仮想出力キュー(VOQ)パケットフラッシングスキームをサポートするためのシステムおよび方法 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6986588
(24)【登録日】2021年12月1日
(45)【発行日】2021年12月22日
(54)【発明の名称】ネットワーキング装置において効率的な仮想出力キュー(VOQ)パケットフラッシングスキームをサポートするためのシステムおよび方法
(51)【国際特許分類】
   H04L 12/70 20130101AFI20211213BHJP
   H04L 12/725 20130101ALI20211213BHJP
【FI】
   H04L12/70 Z
   H04L12/725
【請求項の数】12
【外国語出願】
【全頁数】17
(21)【出願番号】特願2020-55982(P2020-55982)
(22)【出願日】2020年3月26日
(62)【分割の表示】特願2017-533833(P2017-533833)の分割
【原出願日】2015年12月2日
(65)【公開番号】特開2020-114009(P2020-114009A)
(43)【公開日】2020年7月27日
【審査請求日】2020年4月9日
(31)【優先権主張番号】14/584,831
(32)【優先日】2014年12月29日
(33)【優先権主張国】US
(31)【優先権主張番号】14/584,847
(32)【優先日】2014年12月29日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】スリニバサン,アルビンド
(72)【発明者】
【氏名】カスティル,カルロス
【審査官】 宮島 郁美
(56)【参考文献】
【文献】 特表2011−517903(JP,A)
【文献】 特開2000−196609(JP,A)
【文献】 特開2001−223742(JP,A)
【文献】 米国特許出願公開第2001/0043564(US,A1)
【文献】 特開平11−239163(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00−12/955,29/00
G06F13/00
(57)【特許請求の範囲】
【請求項1】
ネットワーク環境においてパケット交換をサポートするための方法であって、
ネットワーキング装置入力ポート複数のソース仮想レーン(VL)に関連付けるステップと
前記ネットワーキング装置のイングレスバッファが、前記イングレスバッファの複数の仮想出力キュー(VOQ)ごとにクレジット状態を管理するステップとを備え、各VOQは共有メモリのリソースを備え、前記クレジット状態は、前記VOQの前記リソースがどの程度消費されているかに基づく現在のバッファ占有率を含み、
前記複数のソースVLのうちの第1のソースVLを前記複数のVOQのうちの第1のVOQに関連付けるステップと、
前記入力ポートで受信したパケットを前記第1のVOQに格納するステップと、
前記第1のVOQに格納したパケットをデキューすることで、前記第1のVOQのリソースの少なくとも一部を解放するステップと、
前記解放した前記第1のVOQの少なくとも一部のVOQリソースを、前記複数のソースVLのうちの第2のソースVLに関連付けられた、前記複数のVOQのうちの第2のVOQに割当てするステップと、
前記第1のソースVLおよび前記第2のソースVLのために、初期クレジット更新を前記入力ポートに送信するステップとを備え、前記初期クレジット更新は、前記再割当てによって生じた前記第1のVOQおよび前記第2のVOQのクレジット状態に対する変更を反映する、方法。
【請求項2】
前記ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである、請求項1に記載の方法。
【請求項3】
前記複数のVOQの各VOQは、出力ポートをターゲットとする1つ以上のパケットを格納するように動作する、請求項1または2に記載の方法。
【請求項4】
前記第1のソースVLに関連付けられ、最も高いバッファ占有率を有するVOQを選択するステップをさらに含む、請求項3に記載の方法。
【請求項5】
前記再割当ては、アプリケーションのサービス品質(QoS)要望の変更に応じて実行される、請求項4に記載の方法。
【請求項6】
前記デキューすることは、記パケットを格納するバッファのリンクされたリストを前記第1のVOQの先頭からウォークスルーすることを含む、請求項4または5に記載のシステム。
【請求項7】
バッファ再割当てを開始するために管理エージェントを使用するステップをさらに含む、請求項1〜6のいずれか1項に記載の方法。
【請求項8】
前記イングレスバッファを介して、ソースVLごとに利用可能なバッファスペースを前記入力ポートに宣伝するステップをさらに含む、請求項1〜7のいずれか1項に記載の方法。
【請求項9】
前記初期クレジット更新に基づいて、前記入力ポートを介して、許容された最大クレジットを設定するステップをさらに含む、請求項1〜8のいずれか1項に記載の方法。
【請求項10】
前記許容された最大クレジットに基づいて、前記入力ポートを介して、前記イングレスバッファによって管理される前記クレジット状態が反映されるように、利用可能なクレジットを外部ソースに宣伝するステップをさらに含む、請求項9に記載の方法。
【請求項11】
コンピュータ読取可能記憶媒体に格納された命令を含み、前記命令は、実行されると、1つ以上のコンピュータシステムに請求項1〜10のいずれか1項に記載の方法を行なわせる、コンピュータプログラム。
【請求項12】
ネットワーク環境においてパケット交換をサポートするためのネットワークキング装置であって、
マイクロプロセッサおよび共有メモリと、
入力ポートおよび複数のソース仮想レーン(VL)とを備え、前記入力ポートは、前記複数のソースVLのうちの第1のソースVLおよび第2のソースVLと関連付けられており、
前記共有メモリ上に実装されるイングレスバッファを備え、前記イングレスバッファは複数の仮想出力キュー(VOQ)リソースを含み、前記イングレスバッファは複数のVOQごとにクレジット状態を管理するように動作し、
前記第1のソースVLは、前記複数のVOQのうちの第1のVOQに関連付けられ、前記第2のソースVLは、前記複数のVOQのうちの第2のVOQに関連付けられ、
前記イングレスバッファは、
記入力ポートで受信したパケットを前記第1のVOQに格納するように動作し
前記第1のVOQに格納したパケットをデキューすることで、前記第1のVOQのリソースの少なくとも一部を解放するように動作し、
前記解放した前記第1のVOQの少なくとも一部のVOQリソースを、前記複数のソースVLのうちの第1のソースVLに関連付けられ、前記複数のソースVLのうちの第2のソースVLに再割当てするように動作し、
前記第1のソースVLおよび前記第2のソースVLのために、初期クレジット更新を前記入力ポートに送信するように動作し、前記初期クレジット更新は、前記再割当てによって生じた前記第1のVOQおよび前記第2のVOQのクレジット状態に対する変更を反映するネットワークキング装置
【発明の詳細な説明】
【技術分野】
【0001】
著作権表示:
この特許文献の開示の一部は、著作権保護の対象となる資料を含む。この特許文献または特許開示は特許商標庁の特許ファイルまたは記録に記載されているため、著作権保有者は、何人によるその複写複製に対して異議はないが、その他の場合には如何なるときもすべての著作権を保有する。
【0002】
発明の分野:
この発明は一般にコンピュータシステムに関し、特にクラウド環境における高性能システムに関する。
【背景技術】
【0003】
背景:
より大きいクラウドコンピューティングアーキテクチャが導入されるにつれて、従来のネットワークおよびストレージに関する性能および管理上の障害が、重大な問題になってきた。オラクルによって設計されたシステムなどの設計システムは、優れた処理速度、著しくより迅速なデプロイメント、徹底分析用のインスタント画像、および扱いやすいビッグデータ能力を提供できる。これは、この発明の実施形態が取り組むよう意図されている一般領域である。
【発明の概要】
【課題を解決するための手段】
【0004】
概要:
ここに説明されるのは、ネットワーク環境においてパケット交換をサポートできるシステムおよび方法である。システムは、ネットワーキング装置上のイングレスバッファを含み得る。1つ以上の仮想出力キューを含むイングレスバッファは、ネットワーキング装置上の入力ポートで受信された1つ以上の入来パケットを格納するように動作する。さらに、システムは、イングレスバッファに関連付けられたパケットフラッシュエンジンを含み得る。当該パケットフラッシュエンジンは、イングレスバッファにおける1つの当該仮想出力キューに格納されたパケットをフラッシュするように、および、パケットがフラッシュされたことを1つ以上の出力スケジューラに通知するように動作し、各出力スケジューラは出力ポートに関連付けられる。加えて、入力ポートは複数のソース仮想レーン(VL)に関連付けられる。さらに、イングレスバッファは、イングレスバッファにおけるバッファリソースを、複数のソースVLにおける第1のソースVLに関連付けられることから、複数のソースVLにおける第2のソースVLに関連付けられることに再割当てするように、および、第1のソースVLおよび第2のソースVLのために、初期クレジット更新を入力ポートに送信するように動作する。
【図面の簡単な説明】
【0005】
図1】この発明の一実施形態に従った、ネットワーク環境において高性能システムをサポートする図である。
図2】この発明の一実施形態に従った、高性能システムにおいてネットワークスイッチをサポートする図である。
図3】この発明の一実施形態に従った、高性能システムにおいて仮想出力キュー(virtual output queue:VOQ)リソースを管理する図である。
図4】この発明の一実施形態に従った、高性能システムにおいて仮想出力キュー(VOQ)リソースを管理するための例示的なフローチャートである。
図5】この発明の一実施形態に従った、高性能システムにおいてバッファ再割当てをサポートする図である。
図6】この発明の一実施形態に従った、高性能システムにおいてバッファ再割当てをサポートするための例示的なフローチャートである。
【発明を実施するための形態】
【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または214は、所与のパケット用のポートリストから1つ以上の宛先ポートを除去することができる。さらに、宛先ポートがすべてリストから除去された場合、マルチ宛先パケットはドロップされてもよい。その他の場合、パケットは、(入力ポートパケット分類器203または213によって)元々分類されたポートリストの部分集合であり得る利用可能な宛先ポートのためにキューに入れられ得る。
【0019】
入力ポートベースでは、入力ポート202または212は、受信したパケットを(たとえば出力ポート207または217を介して)トラフィック宛先208または218に送信する前に、受信したパケットをイングレスバッファ、たとえば仮想出力キュー(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】
VOQリソースの管理
この発明の一実施形態によれば、システムは、異なる条件(エラー取り扱い、リンク状態変化、およびバッファ再割当てなど)下でVOQリソースを管理するためのフレームワークを提供することができる。
【0027】
図3は、この発明の一実施形態に従った、高性能システムにおいてVOQリソースを管理する図を示す。図3に示すように、IBネットワークスイッチ300における入力ポート302は、トラフィックソース301などのリモート送信側に1つ以上のクレジットを宣伝でき、リモート送信側から1つ以上のデータパケットを受信する。
【0028】
入力ポート302は、入来パケットごとに1つ以上の宛先(たとえば出力ポート307または317)を決定できる(および、1つ以上のパケットを除去するためにポートフィルタ304を使用できる)入力パケット分類器303を利用することができる。さらに、入力ポート302は、クロスバー(XBAR)ファブリック310を介してパケットを異なるリモート受信側(トラフィック宛先308および318など)に発送する前に、受信したパケットを、一組のVOQを含むイングレスバッファ305に格納することができる
【0029】
図3に示すように、イングレスバッファ305におけるVOQ311は、パケットフラッシュエンジン320に関連付けられ、それは、パケットをフラッシュする(パケットをフラッシュするためのさまざまなタイプのイベントを管理することを含む)低レベルプロセスの上に抽象化層を提供する。また、イングレスバッファ315におけるVOQ321は、異なるパケットフラッシュエンジン(図示せず)に関連付けられ得る。
【0030】
たとえば、VOQ311に格納されたパケットは複数のバッファを生成でき、それらはリンクされたリストとしてつながれ得る。階層的プロセスに基づくパケットフラッシュエンジン320は、バッファのリンクされたリストをVOQ311の先頭からウォークスルーでき、バッファのリンクされたリストを1つずつデキューする。パケット全体がVOQ311からいったん解放されると、パケットフラッシュエンジン320は、(たとえば、パケットフラッシュイベント322を出力ポートアービタ306および316に知らせることによって)さまざまな出力ポート307および317に通知することができる。
【0031】
加えて、マルチキャストパケットがイングレスバッファ305からデキューされるべき場合、マルチキャストパケットは順次、宛先リストにおけるさまざまなVOQにエンキューされ、そこからデキューされる必要がある。このため、宛先リストの一部である最後のVOQからマルチキャストパケットがデキューされるまで、パケットフラッシュエンジン320は、VOQ311におけるバッファを解放しないかもしれない。
【0032】
この発明の一実施形態によれば、システムは、出力ポートアービタ306および316がVOQリソースの変化の背後にある異なる条件にとらわれないように、出力ポートアービタ306および316などのさまざまな出力スケジューラに抽象化を提供することができる。たとえば、VOQリソースは、寿命制限の先頭(head of lifetime limit:HLL)タイムアウト満了などのさまざまなエラー条件、およびさまざまなリンク状態変化を取り扱うために再利用されてもよい。
【0033】
(ポートおよび関連付けられたVL間の)非ブロック挙動を提供するために、単一の入力ポート302でのVOQリソースの再利用が、異なる出力スケジューラ(入力ポート302からスケジュールされたトラフィックを有する出力アービタ306および316など)とともに行なわれ得る。このため、抽象化は、出力ポートアービタ306および316とイングレスバッファ305におけるVOQとを同期状態に保つことができる。
【0034】
図3に示すように、パケットが到着すると、イングレスバッファ305は、イングレスバッファ305(たとえばVOQ311)におけるバッファにパケットをエンキューすることができ、(たとえば、パケット到着イベント312を出力ポートアービタ306および316に知らせることによって)さまざまな出力ポート307および317に通知する。
【0035】
さらに、出力ポートアービタ306または316はそれに応じて、それ自体の記録を更新できる。たとえば、出力ポートアービタ306はスコアボード309においてパケットカウント(または長さ)をインクリメントでき、出力ポートアービタ316はスコアボード319においてパケットカウント(または長さ)をインクリメントできる。後に、パケットがスケジュールされ、クロスバー310ファブリックを通って進んだ後で、出力スケジューラ306および316は、たとえばスコアボード309または319においてパケットカウント(または長さ)をデクリメントすることによって、スコアボードを再び修正することができる。
【0036】
一方、パケットがフラッシュされる(または除去される)と、イングレスバッファ305(たとえばVOQ311)は、そのバッファからパケットをデキューすることができ、(たとえば、パケットフラッシュイベント322を出力ポートアービタ306および316にパケットに知らせることによって)さまざまな出力ポート307および317に通知する。次に、出力ポート307または317は、スコアボード309または319からパケットカウント(または長さ)をデクリメントできる(または、それに応じてスコアボード309または319の内容を修正する)。
【0037】
この発明の一実施形態によれば、システムは、上述の抽象化を使用して、HLL満了条件などのさまざまなエラー条件を取り扱い、それらから回復することができる。たとえば、HLL満了は、出力ポートが長期間不足状態になると起こり得る。また、HLL満了は、上流ポートでの輻輳および/またはVLの失速が長期間起こった後に起こり得る。
【0038】
HLL満了を取り扱うために、システムは、失速したパケットをVOQの先頭から、他のVOQおよびポートをブロックすることなく潔く削除することができる。HLL報告をサポートするために、HLL満了を取り扱うために削除されたパケットは、さまざまなパケット統計を伴うフットプリントを有することができ、必要とされるさまざまなロジックに関連付けられた必要なバッファクレジットのみを消費することができる。
【0039】
さらに、HLL満了の繰り返しはキューを完全に無効にすることができ、VOQ全体がフラッシュされることをもたらし得る。たとえば、システムは、パケットフラッシュエンジン320を繰り返し使用することによって、パケットフラッシュ動作を再帰的に行なうことができる。
【0040】
加えて、システムは、マルチキャスト複製とともにHLL満了を取り扱うことができる。ハードウェアベースのマルチキャスト複製では、HLLベースのパケットフラッシングは、VOQベースでサポートされ得る。さらに、宛先リストにおける出力ポートがサービスされた後で、パケットは、あるVOQからデキューされて別のVOQにエンキューされ得る。システムは、キューにおいて提示されたパケットのタイプを無視する上述の抽象化を利用することができる。このため、マルチキャストパケットは、ユニキャストパケットが取り扱われるのと同じ態様で取り扱われ得る。
【0041】
この発明の一実施形態によれば、システムは、VOQごとに一組のタイマー(HLLタイマーなど)を提供することができる。たとえば、パケットがキューの先頭でどれくらいの時間ステージされたかをチェックできるタイマーが、新たなパケットがキューの先頭に挿入されるたびに始動してもよい。
【0042】
パケットが出力ポートへの送信のためにスケジュールされる前にタイマーが満了した場合、システムはパケットを削除されるべきであるとしてマークすることができ、パケットをフラッシュするためにパケットフラッシュエンジン320を使用することができる。一方、タイマーが満了する前にパケットが送信のためにスケジュールされた場合、タイマーはリセットされ、次のパケットの到着を待つことができる。
【0043】
この発明の一実施形態によれば、システムは、上述の抽象化を使用して、さまざまなリンク状態変化を取り扱うことができる。
【0044】
図3に示すように、入力ポート302は受信したパケットをイングレスバッファ305に格納でき、同じ入力ポート302が複数の出力ポート307および317のために働くことができる。入力ポート302に関連付けられたイングレスリンクがアップダウンすると、古くなったデータがイングレスバッファ305において提示され得る(たとえば、イ
ングレスリンクがアップに戻る前に出力ポートが長期間失速される場合)。
【0045】
さらに、動作VL(たとえば、サポートされるVLの数)およびそれらの初期クレジット割当て(たとえば、ポートMTUなど)といったさまざまなリンクレベルパラメータは、入力ポート302でのリンク状態が変化すると、変化するかもしれない。なぜなら、これらのリンクレベルパラメータは、動作のためにVOQがどのようにセットアップされるかに密接に結び付けられ得るためである。
【0046】
さまざまなリンク状態変化を取り扱うために、システムは、VOQにおいて提示された古くなったパケットをフラッシュするためにパケットフラッシュエンジン320を使用することができる。たとえば、フラッシュ動作は、タイマーを小さい値に瞬間的に減少させることによって行なわれ得る。加えて、パケットフラッシュ動作は、イングレスバッファ305が完全に空になるまで、すべてのVOQにわたって再帰的に行なわれ得る。このため、システムは、イングレスバッファ305(またはVOQ)が提示された古くなったデータを有していないことを確認できる。
【0047】
加えて、入力ポート302でリンク状態変化が起こると、マルチキャストパケットは、それが宛先リストにおける新たなVOQに移動された後に毎回フラッシュされ得る。また、出力ポートアービタ306および326とイングレスバッファ305におけるVOQとを同期状態に保つために、エンキューする動作およびフラッシュする動作は順次行なわれ得る。
【0048】
図4は、この発明の一実施形態に従った、高性能システムにおいてVOQリソースを管理するための例示的なフローチャートを示す。図4に示すように、ステップ401で、ネットワーキング装置上のイングレスバッファは、ネットワーキング装置上の入力ポートで受信された1つ以上の入来パケットを格納でき、イングレスバッファは1つ以上の仮想出力キューを含む。さらに、ステップ402で、システムは、パケットが到着したことを1つ以上の出力スケジューラに通知でき、各出力スケジューラは出力ポートに関連付けられる。次に、ステップ403で、イングレスバッファに関連付けられたパケットフラッシュエンジンは、イングレスバッファにおける1つの当該仮想出力キューに格納されたパケットをフラッシュできる。加えて、ステップ404で、システムは、パケットがフラッシュされたことを1つ以上の出力スケジューラに通知でき、各出力スケジューラは出力ポートに関連付けられる。
【0049】
バッファのライブ再割当て
図5は、この発明の一実施形態に従った、高性能システムにおいてバッファ再割当てをサポートする図を示す。図5に示すように、入力ポート502は、トラフィックソース501などのリモート送信側に1つ以上のクレジットを宣伝できる。次に、入力ポート502は、リモート送信側から、異なるソースVL(たとえばVL521〜523)を介して、1つ以上のパケットを受信できる。
【0050】
入力ポート502は、入来パケットごとに1つ以上の宛先(たとえば出力ポート507または517)を決定できる(および、1つ以上のパケットを除去するためにポートフィルタ504を使用できる)入力パケット分類器503を利用することができる。また、入力ポート502は、IBリンク上の外部ソースに宣伝されるクレジットを維持するために、クレジット状態管理プロセス512(すなわち、クレジット状態管理ユニットまたはブロック)を使用することができる。
【0051】
さらに、入力ポート502は、クロスバー(XBAR)ファブリック510を介してパケットを異なるリモート受信側(たとえばトラフィック宛先508および518)に発送
する前に、受信したパケットを、一組のVOQ(VOQ511など)を含むイングレスバッファ505に格納することができる。また、別の入力ポート(図示せず)は、受信したパケットを、同様に一組のVOQを含む異なるイングレスバッファ515に格納することができる。
【0052】
加えて、各イングレスバッファ505または515は、(各バッファの充満度または空き具合に基づいて定義され得る)ソースVLごとの現在のバッファ占有率、ソースVLごとに許容された最大バッファ、ソースVLごとの現在参加中のVOQのリスト、およびそれらの相対的なキュー深さ、といった異なるクレジット状態を維持することができる。
【0053】
この発明の一実施形態によれば、システムは、前述の節で説明されたような抽象化に基づいて、VOQリソースの再割当ておよび/または再分割をサポートすることができる。
【0054】
(さまざまなポートおよびVL間の)非ブロック挙動を提供するために、入力ポート502でのVOQリソースの再割当てが、すべての出力スケジューラ(入力ポート502からスケジュールされたトラフィックを有する出力ポートアービタ506および516など)とともに管理され得る。
【0055】
VOQリソースの再割当ておよび/または再分割は、ソースおよび/または宛先VLベースのバッファリング要件の変化、ならびに、QoS要件に対するアプリケーションの必要性の変化、といった異なる理由によって起こり得る。それは、より多くのバッファ/クレジットが、あるVLに、他のVLを犠牲にして割当てられることをもたらし得る。
【0056】
加えて、VOQリソースの再割当ておよび/または再分割は、リンク状態変化の後で起こり得る。VOQリソースの再割当ておよび/または再分割は、リンク状態変化の場合に古くなったパケットをVOQからフラッシュすることを伴い得る。たとえば、リンクが戻った後に新しい一組の動作VLがネゴシエートされた場合、古いパケットは遅い排出速度のためにキューに残ったままかもしれない。一方、アプリケーションは、古くなったパケットを完全にフラッシュする代わりに、リンクがダウンする前にパケットの最後の一組を保ちたいかもしれない。
【0057】
図5に示すように、イングレスバッファ505は、物理的な入力ポート502におけるリンククレジット管理プロセス512に初期クレジット更新を宣伝できる。たとえば、ソースVLごとに利用可能な最大バッファスペースについての更新がある場合、VOQ511は、ソースVLごとに利用可能なバッファスペースを物理的な入力ポート502に宣伝できる。次に、リンククレジット管理プロセス512は、宣伝された最大の許容値を保つことができ、それに応じてリンククレジットを管理する。
【0058】
この発明の一実施形態によれば、初期クレジット更新は、初期化中、およびバッファの再分割の完了後、といった異なるシナリオにおいてトリガされ得る。各場合について、物理的な入力ポート502におけるリンククレジット管理プロセス512は、更新を開始するプロセスにとらわれない。
【0059】
ソフトウェアおよび/またはファームウェアによって開始され得る再分割要求をイングレスバッファ505が受信すると、システムは、バッファサイズが減少されるVLを選ぶことができる。次に、システムは、VOQの先頭から1つ以上のパケットをフラッシュすることによって、VLに関連付けられたバッファサイズを減少させることができる。たとえば、システムは、(たとえばキューの充満度または空き具合に基づく)最も高い占有率を有する出力ポート上のVLに関連付けられたVOQを選ぶことができる。
【0060】
次に、VOQは、更新されたVL(バッファサイズが増加されるVL、およびバッファサイズが減少されるVLを含む)のために、更新値を有する初期クレジット更新を送信することができる。加えて、任意の時点での1つ以上のパケットの受信により、ソースVL521〜523に関連付けられたバッファサイズがその最大許容バッファサイズを上回る場合、これらのパケットは潔くドロップされ得る。
【0061】
この発明の一実施形態によれば、各VOQは、パケットフラッシュを取り扱うためのさまざまなタイプのイベントを管理できるパケットフラッシュエンジン520に関連付けられ得る。ソフトウェア/ファームウェアによって開始された再分割要求が受信されると、パケットフラッシュハードウェアエンジン520は、以下のリスト1に示すようなシーケンスを行なうことができる。
【0062】
【数1】
【0063】
リスト1
加えて、システムは、VOQリソースの変化の前後の異なる要件に気づいている管理エージント525を提供できる。このため、システムは、大抵のVLでのトラフィックは途切れずに進むことができ、最小の一組のパケットしか損失しない、ということを保証できる。
【0064】
図6は、この発明の一実施形態に従った、高性能システムにおいてバッファ再割当てをサポートするための例示的なフローチャートを示す。図6に示すように、ステップ601で、システムは、ネットワーキング装置上のイングレスバッファに、入力ポートで受信された1つ以上のパケットを格納でき、入力ポートは複数のソース仮想レーン(VL)に関連付けられる。さらに、ステップ602で、システムは、イングレスバッファにおけるバッファリソースを、複数のソースVLにおける第1のソースVLに関連付けられることから、複数のソースVLにおける第2のソースVLに関連付けられることに再割当てできる。次に、ステップ603で、イングレスバッファは、第1のソースVLおよび第2のソースVLのために、初期クレジット更新を入力ポートに送信できる。
【0065】
この発明の別の実施形態では、ネットワーク環境においてパケット交換をサポートするための方法であって、ネットワーキング装置上のイングレスバッファに、入力ポートで受
信された1つ以上のパケットを格納するステップを含み、入力ポートは複数のソース仮想レーン(VL)に関連付けられ、当該方法はさらに、イングレスバッファにおけるバッファリソースを、複数のソースVLにおける第1のソースVLに関連付けられることから、複数のソースVLにおける第2のソースVLに関連付けられることに再割当てするステップと、第1のソースVLおよび第2のソースVLのために、初期クレジット更新を入力ポートに送信するステップとを含む、方法が提供される。
【0066】
この発明の別の実施形態では、その方法において、ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである。
【0067】
この発明の別の実施形態では、その方法において、イングレスバッファは複数の仮想出力キューを含み、各当該仮想出力キューは、出力ポートをターゲットとする1つ以上のパケットを格納するように動作する。
【0068】
この発明の別の実施形態では、その方法は、第1のソースVLに関連付けられ、最も高い占有率を有する仮想出力キューを選択するステップをさらに含む。
【0069】
この発明の別の実施形態では、その方法は、当該仮想出力キューから1つ以上のパケットをフラッシュするステップをさらに含む。
【0070】
この発明の別の実施形態では、その方法は、当該1つ以上のパケットを格納するバッファのリンクされたリストを当該仮想出力キューの先頭からウォークスルーするステップをさらに含む。
【0071】
この発明の別の実施形態では、その方法は、バッファ再割当て動作を開始するために管理エージェントを使用するステップをさらに含む。
【0072】
この発明の別の実施形態では、その方法は、イングレスバッファを介して、ソースVLごとに利用可能なバッファスペースを入力ポートに宣伝するステップをさらに含む。
【0073】
この発明の別の実施形態では、その方法は、初期クレジット更新に基づいて、入力ポートを介して、許容された最大クレジットを設定するステップをさらに含む。
【0074】
この発明の別の実施形態では、その方法は、許容された最大クレジットに基づいて、入力ポートを介して、利用可能なクレジットを外部ソースに宣伝するステップをさらに含む。
【0075】
この発明の一実施形態では、ネットワーク環境においてパケット交換をサポートするためのシステムであって、ネットワーキング装置上のイングレスバッファを含み、イングレスバッファは、ネットワーキング装置上の入力ポートで受信された1つ以上の入来パケットを格納するように動作し、入力ポートは複数のソース仮想レーン(VL)に関連付けられ、当該イングレスバッファはさらに、イングレスバッファにおけるバッファリソースを、複数のソースVLにおける第1のソースVLに関連付けられることから、複数のソースVLにおける第2のソースVLに関連付けられることに再割当てするように、および、第1のソースVLおよび第2のソースVLのために、初期クレジット更新を入力ポートに送信するように動作する、システムが提供される。
【0076】
この発明の別の実施形態では、そのシステムにおいて、ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである。
【0077】
この発明の別の実施形態では、そのシステムにおいて、イングレスバッファは複数の仮想出力キューを含み、各当該仮想出力キューは、出力ポートをターゲットとする1つ以上のパケットを格納するように動作する。
【0078】
この発明の別の実施形態では、そのシステムにおいて、イングレスバッファは、第1のソースVLに関連付けられ、最も高い占有率を有する仮想出力キューを選択するように動作する。
【0079】
この発明の別の実施形態では、そのシステムにおいて、イングレスバッファは、当該仮想出力キューから1つ以上のパケットをフラッシュするためにパケットフラッシュエンジンを使用するように動作する。
【0080】
この発明の別の実施形態では、そのシステムにおいて、パケットフラッシュエンジンは、当該1つ以上のパケットを格納するバッファのリンクされたリストを当該仮想出力キューの先頭からウォークスルーするように動作する。
【0081】
この発明の別の実施形態では、そのシステムは、バッファ再割当て動作を開始するように動作する管理エージェントを含む。
【0082】
この発明の別の実施形態では、そのシステムにおいて、イングレスバッファは、ソースVLごとに利用可能なバッファスペースを入力ポートに宣伝するように動作する。
【0083】
この発明の別の実施形態では、そのシステムにおいて、入力ポートは、初期クレジット更新に基づいて、許容された最大クレジットを設定するように、および、許容された最大クレジットに基づいて、利用可能なクレジットを外部ソースに宣伝するように動作する。
【0084】
この発明の一実施形態では、命令を格納する、非一時的なマシン読取可能記憶媒体であって、当該命令は、実行されると、システムに複数のステップを行なわせ、当該複数のステップは、ネットワーキング装置上のイングレスバッファに、入力ポートで受信された1つ以上のパケットを格納するステップを含み、入力ポートは複数のソース仮想レーン(VL)に関連付けられ、当該複数のステップはさらに、イングレスバッファにおけるバッファリソースを、複数のソースVLにおける第1のソースVLに関連付けられることから、複数のソースVLにおける第2のソースVLに関連付けられることに再割当てするステップと、第1のソースVLおよび第2のソースVLのために、初期クレジット更新を入力ポートに送信するステップとを含む、非一時的なマシン読取可能記憶媒体が提供される。
【0085】
この発明の一実施形態では、コンピュータ読取可能記憶媒体に格納された命令を含み、当該命令は、実行されると、1つ以上のコンピュータシステムに上述の方法を行なわせる、コンピュータプログラムが提供される。
【0086】
本発明の多くの特徴は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せにおいて、当該ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを使用して、もしくは当該ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せの助けを得て行なわれ得る。したがって、本発明の特徴は、(たとえば、1つ以上のプロセッサを含む)処理システムを使用して実現されてもよい。
【0087】
本発明の特徴は、ここに提示された特徴のいずれかを行なうように処理システムをプログラミングするために使用可能な命令が格納された記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラム製品において、当該コンピュータプログラム製品を使用して、もしくは当該コンピュータプログラム製品の助けを得て実現され得る。記憶媒体
は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気カードまたは光カード、ナノシステム(分子メモリICを含む)、もしくは、命令および/またはデータを格納するために好適な任意のタイプの媒体またはデバイスを含み得るものの、それらに限定されない。
【0088】
マシン読取可能媒体のうちのいずれか1つに格納されて、本発明の特徴は、処理システムのハードウェアを制御するために、および、処理システムが本発明の結果を利用する他のメカニズムとやりとりすることを可能にするために、ソフトウェアおよび/またはファームウェアに組込まれ得る。そのようなソフトウェアまたはファームウェアは、アプリケーションコード、デバイスドライバ、オペレーティングシステム、および実行環境/コンテナを含み得るものの、それらに限定されない。
【0089】
この発明の特徴はまた、たとえば、特定用途向け集積回路(application specific integrated circuit:ASIC)などのハードウェアコンポーネントを使用して、ハードウ
ェアで実現されてもよい。ここに説明された機能を行なうようなハードウェア状態マシンの実現は、当業者には明らかであろう。
【0090】
加えて、本発明は、本開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取可能記憶媒体を含む、1つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを使用して、便利に実現されてもよい。ソフトウェア技術の当業者には明らかであるように、本開示の教示に基づいて、適切なソフトウェアコーディングを、熟練したプログラマーによって容易に準備することができる。
【0091】
本発明のさまざまな実施形態が上に説明されてきたが、それらは限定のためではなく例示のために提示されたことが理解されるべきである。形態および詳細におけるさまざまな変更を、この発明の精神および範囲から逸脱することなくそこで行なうことができるということは、当業者には明らかであろう。
【0092】
本発明は、特定された機能およびそれらの関係の実行を示す機能構築ブロックの助けを得て、上に説明されてきた。これらの機能構築ブロックの境界はしばしば、説明の便宜上、ここに任意に定義されてきた。特定された機能およびそれらの関係が適切に実行される限り、代替的な境界を定義することができる。あらゆるそのような代替的な境界はこのため、この発明の範囲および精神内にある。
【0093】
この発明の前述の説明は、例示および説明のために提供されてきた。それは、網羅的であるよう、またはこの発明を開示された形態そのものに限定するよう意図されてはいない。本発明の広さおよび範囲は、上述の例示的な実施形態のいずれによっても限定されるべきでない。当業者には、多くの修正および変形が明らかであろう。修正および変形は、開示された特徴のあらゆる関連する組合せを含む。実施形態は、この発明の原理およびその実際的な適用を最良に説明するために選択および説明されたものであり、それにより、他の当業者が、特定の使用に好適なさまざまな修正を考慮して、さまざまな実施形態についてこの発明を理解することを可能にする。この発明の範囲は、請求項およびそれらの均等物によって定義されることが意図されている。
図1
図2
図3
図4
図5
図6