(57)【要約】      （修正有）【課題】ネットワーク環境においてパケット交換をサポートするシステムおよび方法を提供する。【解決手段】システムは、ネットワーキング装置上のイングレスバッファを含む。１つ以上の仮想出力キューを含むイングレスバッファは、ネットワーキング装置上の入力ポートで受信した１つ以上の入来パケットを格納する。さらに、システムは、イングレスバッファに関連付けられたパケットフラッシュエンジンを含む。パケットフラッシュエンジンは、イングレスバッファにおける１つの当該仮想出力キューに格納されたパケットをフラッシュするように、および、パケットがフラッシュされたことを１つ以上の出力スケジューラに通知するように動作し、各出力スケジューラは出力ポートに関連付けられる。【選択図】図４
2020114009.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク環境においてパケット交換をサポートするためのシステムであって、
ネットワーキング装置上のイングレスバッファを含み、１つ以上の仮想出力キューを含む前記イングレスバッファは、前記ネットワーキング装置上の入力ポートで受信された１つ以上の入来パケットを格納するように動作し、前記システムはさらに、
前記イングレスバッファに関連付けられたパケットフラッシュエンジンを含み、前記パケットフラッシュエンジンは、
前記イングレスバッファにおける１つの前記仮想出力キューに格納されたパケットをフラッシュするように、および
前記パケットがフラッシュされたことを１つ以上の出力スケジューラに通知するように動作し、各出力スケジューラは出力ポートに関連付けられる、システム。
【請求項２】
前記ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである、請求項１に記載のシステム。
【請求項３】
前記仮想出力キューは、
前記仮想出力キューに関連付けられた１つ以上のバッファに入来パケットをエンキューするように、および
エンキューされた前記入来パケットの到着について前記１つ以上の出力スケジューラに知らせるように動作する、請求項１または２に記載のシステム。
【請求項４】
各前記出力スケジューラは出力ポートアービタであり、前記出力ポートアービタは、
前記出力ポートアービタに関連付けられた出力ポートにパケットを発送するように前記入力ポートをスケジュールするように、および
前記出力ポートアービタに関連付けられたスコアボードを更新するように動作する、先行する請求項のいずれか１項に記載のシステム。
【請求項５】
前記出力スケジューラは、前記パケットがフラッシュされたという通知を前記パケットフラッシュエンジンから受信した後で、スコアボードを更新するように動作する、先行する請求項のいずれか１項に記載のシステム。
【請求項６】
前記パケットフラッシュエンジンは、フラッシュされるべきパケットを格納するバッファのリンクされたリストを前記仮想出力キューの先頭からウォークスルーするために、階層的プロセスを使用するように動作する、先行する請求項のいずれか１項に記載のシステム。
【請求項７】
前記イングレスバッファは、マルチキャストパケットが前記マルチキャストパケット用の宛先リストにおけるすべての仮想出力キューからデキューされるまで、前記マルチキャストパケットに関連付けられたバッファを解放するように動作する、先行する請求項のいずれか１項に記載のシステム。
【請求項８】
前記入力ポートでのリンク状態変化を取り扱うために、前記イングレスバッファに格納された１つ以上のパケットがフラッシュされる、先行する請求項のいずれか１項に記載のシステム。
【請求項９】
前記イングレスバッファにおける各仮想出力キューは１つ以上のタイマーに関連付けられ、パケットが前記仮想出力キューの先頭に挿入されると、前記１つ以上のタイマーが始動する、先行する請求項のいずれか１項に記載のシステム。
【請求項１０】
前記タイマーが満了する前に前記パケットが出力ポートに送信されるようにスケジュールされていない場合、前記パケットはフラッシュされる、請求項９に記載のシステム。
【請求項１１】
ネットワーク環境においてパケット交換をサポートするための方法であって、
ネットワーキング装置上のイングレスバッファを介して、前記ネットワーキング装置上の入力ポートで受信された１つ以上の入来パケットを格納するステップを含み、前記イングレスバッファは１つ以上の仮想出力キューを含み、前記方法はさらに、
前記イングレスバッファに関連付けられたパケットフラッシュエンジンを介して、前記イングレスバッファにおける１つの前記仮想出力キューに格納されたパケットをフラッシュするステップと、
前記パケットがフラッシュされたことを１つ以上の出力スケジューラに通知するステップとを含み、各出力スケジューラは出力ポートに関連付けられる、方法。
【請求項１２】
前記ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである、請求項１１に記載の方法。
【請求項１３】
前記仮想出力キューを介して、前記仮想出力キューに関連付けられた１つ以上のバッファに入来パケットをエンキューするステップと、
エンキューされた前記入来パケットの到着について前記１つ以上の出力アービタに知らせるステップとをさらに含む、請求項１１または１２に記載の方法。
【請求項１４】
各前記出力スケジューラが出力ポートアービタであることを可能にするステップをさらに含み、前記出力ポートアービタは、
前記出力ポートアービタに関連付けられた出力ポートにパケットを発送するように前記入力ポートをスケジュールするように、および
前記出力ポートアービタに関連付けられたスコアボードを更新するように動作する、請求項１１〜１３のいずれか１項に記載の方法。
【請求項１５】
前記パケットがフラッシュされたという通知を前記パケットフラッシュエンジンから受信した後で、前記出力スケジューラを介してスコアボードを更新するステップをさらに含む、請求項１１〜１４のいずれか１項に記載の方法。
【請求項１６】
フラッシュされるべきパケットを格納するバッファのリンクされたリストを前記仮想出力キューの先頭からウォークスルーするために、前記パケットフラッシュエンジンを介して階層的プロセスを使用するステップをさらに含む、請求項１１〜１５のいずれか１項に記載の方法。
【請求項１７】
マルチキャストパケットが前記マルチキャストパケット用の宛先リストにおけるすべての仮想出力キューからデキューされるまで、前記マルチキャストパケットに関連付けられたバッファを解放するステップをさらに含む、請求項１１〜１６のいずれか１項に記載の方法。
【請求項１８】
前記入力ポートでのリンク状態変化を取り扱うために、前記イングレスバッファに格納された１つ以上のパケットをフラッシュするステップをさらに含む、請求項１１〜１７のいずれか１項に記載の方法。
【請求項１９】
１つ以上のタイマーを、前記イングレスバッファにおける各仮想出力キューに関連付けるステップをさらに含み、
パケットが前記仮想出力キューの先頭に挿入されると、前記１つ以上のタイマーが始動し、
前記タイマーが満了する前に前記パケットが出力ポートに送信されるようにスケジュールされていない場合、前記パケットはフラッシュされる、請求項１１〜１８のいずれか１項に記載の方法。
【請求項２０】
命令を格納する、非一時的なマシン読取可能記憶媒体であって、前記命令は、実行されると、システムに複数のステップを行なわせ、前記複数のステップは、
ネットワーキング装置上のイングレスバッファを介して、前記ネットワーキング装置上の入力ポートで受信された１つ以上の入来パケットを格納するステップを含み、前記イングレスバッファは１つ以上の仮想出力キューを含み、前記複数のステップはさらに、
前記イングレスバッファに関連付けられたパケットフラッシュエンジンを介して、前記イングレスバッファにおける１つの前記仮想出力キューに格納されたパケットをフラッシュするステップと、
前記パケットがフラッシュされたことを１つ以上の出力スケジューラに通知するステップとを含み、各出力スケジューラは出力ポートに関連付けられる、非一時的なマシン読取可能記憶媒体。
【請求項２１】
ネットワーク環境においてパケット交換をサポートするための方法であって、
ネットワーキング装置上のイングレスバッファに、入力ポートで受信された１つ以上のパケットを格納するステップを含み、前記入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられ、前記方法はさらに、
前記イングレスバッファにおけるバッファリソースを、前記複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、前記複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てするステップと、
前記第１のソースＶＬおよび前記第２のソースＶＬのために、初期クレジット更新を前記入力ポートに送信するステップとを含む、方法。
【請求項２２】
前記ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである、請求項２１に記載の方法。
【請求項２３】
前記イングレスバッファは複数の仮想出力キューを含み、各前記仮想出力キューは、出力ポートをターゲットとする１つ以上のパケットを格納するように動作する、請求項２１または２２に記載の方法。
【請求項２４】
前記第１のソースＶＬに関連付けられ、最も高い占有率を有する仮想出力キューを選択するステップをさらに含む、請求項２３に記載の方法。
【請求項２５】
前記仮想出力キューから１つ以上のパケットをフラッシュするステップをさらに含む、請求項２４に記載の方法。
【請求項２６】
前記１つ以上のパケットを格納するバッファのリンクされたリストを前記仮想出力キューの先頭からウォークスルーするステップをさらに含む、請求項２４または２５に記載のシステム。
【請求項２７】
バッファ再割当て動作を開始するために管理エージェントを使用するステップをさらに含む、請求項２１〜２６のいずれか１項に記載の方法。
【請求項２８】
前記イングレスバッファを介して、ソースＶＬごとに利用可能なバッファスペースを前記入力ポートに宣伝するステップをさらに含む、請求項２１〜２７のいずれか１項に記載の方法。
【請求項２９】
前記初期クレジット更新に基づいて、前記入力ポートを介して、許容された最大クレジットを設定するステップをさらに含む、請求項２１〜２８のいずれか１項に記載の方法。
【請求項３０】
前記許容された最大クレジットに基づいて、前記入力ポートを介して、利用可能なクレジットを外部ソースに宣伝するステップをさらに含む、請求項２９に記載の方法。
【請求項３１】
ネットワーク環境においてパケット交換をサポートするためのシステムであって、
ネットワーキング装置上のイングレスバッファを含み、前記イングレスバッファは、
前記ネットワーキング装置上の入力ポートで受信された１つ以上の入来パケットを格納するように動作し、前記入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられ、前記イングレスバッファはさらに、
前記イングレスバッファにおけるバッファリソースを、前記複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、前記複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てするように、および
前記第１のソースＶＬおよび前記第２のソースＶＬのために、初期クレジット更新を前記入力ポートに送信するように動作する、システム。
【請求項３２】
前記ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである、請求項３１に記載のシステム。
【請求項３３】
前記イングレスバッファは複数の仮想出力キューを含み、各前記仮想出力キューは、出力ポートをターゲットとする１つ以上のパケットを格納するように動作する、請求項３１または３２に記載のシステム。
【請求項３４】
前記イングレスバッファは、前記第１のソースＶＬに関連付けられ、最も高い占有率を有する仮想出力キューを選択するように動作する、請求項３３に記載のシステム。
【請求項３５】
前記イングレスバッファは、前記仮想出力キューから１つ以上のパケットをフラッシュするためにパケットフラッシュエンジンを使用するように動作する、請求項３４に記載のシステム。
【請求項３６】
前記パケットフラッシュエンジンは、前記１つ以上のパケットを格納するバッファのリンクされたリストを前記仮想出力キューの先頭からウォークスルーするように動作する、請求項３５に記載のシステム。
【請求項３７】
バッファ再割当て動作を開始するように動作する管理エージェントをさらに含む、請求項３１〜３６のいずれか１項に記載のシステム。
【請求項３８】
前記イングレスバッファは、ソースＶＬごとに利用可能なバッファスペースを前記入力ポートに宣伝するように動作する、請求項３１〜３７のいずれか１項に記載のシステム。
【請求項３９】
前記入力ポートは、
前記初期クレジット更新に基づいて、許容された最大クレジットを設定するように、および
前記許容された最大クレジットに基づいて、利用可能なクレジットを外部ソースに宣伝するように動作する、請求項３１〜３８のいずれか１項に記載のシステム。
【請求項４０】
命令を格納する、非一時的なマシン読取可能記憶媒体であって、前記命令は、実行されると、システムに複数のステップを行なわせ、前記複数のステップは、
ネットワーキング装置上のイングレスバッファに、入力ポートで受信された１つ以上の
パケットを格納するステップを含み、前記入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられ、前記複数のステップはさらに、
前記イングレスバッファにおけるバッファリソースを、前記複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、前記複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てするステップと、
前記第１のソースＶＬおよび前記第２のソースＶＬのために、初期クレジット更新を前記入力ポートに送信するステップとを含む、非一時的なマシン読取可能記憶媒体。
【請求項４１】
コンピュータ読取可能記憶媒体に格納された命令を含み、前記命令は、実行されると、１つ以上のコンピュータシステムに請求項１１〜１９または２１〜３０のいずれか１項に記載の方法を行なわせる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示：
この特許文献の開示の一部は、著作権保護の対象となる資料を含む。この特許文献または特許開示は特許商標庁の特許ファイルまたは記録に記載されているため、著作権保有者は、何人によるその複写複製に対して異議はないが、その他の場合には如何なるときもすべての著作権を保有する。
【０００２】
発明の分野：
この発明は一般にコンピュータシステムに関し、特にクラウド環境における高性能システムに関する。
【背景技術】
【０００３】
背景：
より大きいクラウドコンピューティングアーキテクチャが導入されるにつれて、従来のネットワークおよびストレージに関する性能および管理上の障害が、重大な問題になってきた。オラクルによって設計されたシステムなどの設計システムは、優れた処理速度、著しくより迅速なデプロイメント、徹底分析用のインスタント画像、および扱いやすいビッグデータ能力を提供できる。これは、この発明の実施形態が取り組むよう意図されている一般領域である。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要：
ここに説明されるのは、ネットワーク環境においてパケット交換をサポートできるシステムおよび方法である。システムは、ネットワーキング装置上のイングレスバッファを含み得る。１つ以上の仮想出力キューを含むイングレスバッファは、ネットワーキング装置上の入力ポートで受信された１つ以上の入来パケットを格納するように動作する。さらに、システムは、イングレスバッファに関連付けられたパケットフラッシュエンジンを含み得る。当該パケットフラッシュエンジンは、イングレスバッファにおける１つの当該仮想出力キューに格納されたパケットをフラッシュするように、および、パケットがフラッシュされたことを１つ以上の出力スケジューラに通知するように動作し、各出力スケジューラは出力ポートに関連付けられる。加えて、入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられる。さらに、イングレスバッファは、イングレスバッファにおけるバッファリソースを、複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てするように、および、第１のソースＶＬおよび第２のソースＶＬのために、初期クレジット更新を入力ポートに送信するように動作する。
【図面の簡単な説明】
【０００５】
【図１】この発明の一実施形態に従った、ネットワーク環境において高性能システムをサポートする図である。
【図２】この発明の一実施形態に従った、高性能システムにおいてネットワークスイッチをサポートする図である。
【図３】この発明の一実施形態に従った、高性能システムにおいて仮想出力キュー（virtual output queue：ＶＯＱ）リソースを管理する図である。
【図４】この発明の一実施形態に従った、高性能システムにおいて仮想出力キュー（ＶＯＱ）リソースを管理するための例示的なフローチャートである。
【図５】この発明の一実施形態に従った、高性能システムにおいてバッファ再割当てをサポートする図である。
【図６】この発明の一実施形態に従った、高性能システムにおいてバッファ再割当てをサポートするための例示的なフローチャートである。
【発明を実施するための形態】
【０００６】
詳細な説明：
同じ参照符号は同様の要素を示す添付図面の図において、この発明を限定のためではなく例示のために説明する。なお、この開示における「ある」または「１つの」または「いくつかの」実施形態への参照は必ずしも同じ実施形態に対するものではなく、そのような参照は少なくとも１つを意味する。
【０００７】
以下のようなこの発明の説明は、高性能ネットワーキング装置についての一例として、インフィニバンド（InfiniBand：ＩＢ）ネットワークスイッチを使用する。他のタイプの高性能ネットワーキング装置が何ら限定されることなく使用され得るということは、当業者には明らかであろう。
【０００８】
ここに説明されるのは、クラウド環境などのネットワーク環境においてパケット交換をサポートできるシステムおよび方法である。
【０００９】
高性能システム
図１は、この発明の一実施形態に従った、ネットワーク環境において高性能システムをサポートする図を示す。図１に示すように、高性能システム１００は、ネットワークスイッチファブリック１１０を介して相互接続された複数のホストマシン１０１〜１０３（またはサーバ）を含み得る。
【００１０】
高性能システム１００におけるネットワークスイッチファブリック１１０は、さまざまなホストマシン１０１〜１０３上で実行中のさまざまな仮想マシン（virtual machine：
ＶＭ）１１１〜１１３（および／または仮想化されたアプリケーション）間でトラフィックの動きを方向付けることを担い得る。
【００１１】
この発明の一実施形態によれば、ネットワークスイッチファブリック１１０はインフィニバンド（ＩＢ）プロトコルに基づくことができ、それは、ピア・ツー・ピアクレジット交換を管理でき、損失のないエンド・ツー・エンド接続性を提供する。このため、ネットワークスイッチファブリック１１０におけるさまざまなネットワーキング装置は、高性能システム１００においてデータ転送をサポートするための異なる条件下でクレジット整合性を維持することができる。
【００１２】
加えて、さまざまなＶＭ１１１〜１１３（および／またはアプリケーション）間のトラフィックのためのサービス品質（quality of service：ＱｏＳ）を提供するために、物理的なＩＢリンクは各々、複数の仮想リンク（virtual link：ＶＬ）に分割され得る。たとえば、ホストマシン１０１〜１０３間のネットワークパケットストリーム１２０は、異なるＶＭ１１１〜１１３およびアプリケーションが望み得る異なるサービスの集まりを表わし得る。さらに、異なるソース宛先ペア間の集められたネットワークパイプ内で送信される個々のパケットストリーム１２０は、異なるサービス要件（さらには相反するサービス要件）を満たすことができる。
【００１３】
インフィニバンド（ＩＢ）ネットワークスイッチ
図２は、この発明の一実施形態に従った、高性能システムにおいてネットワークスイッ
チをサポートする図を示す。図２に示すように、高性能システム２００におけるＩＢネットワークスイッチ２２０などのネットワーク装置は、さまざまなトラフィックソース２０１および２１１からさまざまなトラフィック宛先２０８および２１８にデータトラフィックを方向付けることを担い得る。
【００１４】
たとえば、入力ポート２０２、２１２、出力ポート２０７、２１７などの多数のポートをサポートするＩＢネットワークスイッチ２２０は、クロスバー（ＸＢＡＲ）ファブリック２１０に基づくことができる。
【００１５】
図２に示すように、入力ポート２０２は、ソースＶＬ２２１を使用してトラフィックソース２０１からさまざまな入来データパケットを受信でき、入力ポート２１２は、ソースＶＬ２３１を使用してトラフィックソース２１１からさまざまなデータパケットを受信できる。また、出力ポート２０７は、宛先ＶＬ２２７を使用してトラフィック宛先２０８に送出データパケットを送信でき、出力ポート２１７は、宛先ＶＬ２３７を使用してトラフィック宛先２１８に送出データパケットを送信できる。
【００１６】
さらに、ＩＢスイッチ２２０は異なるＱｏＳ要望を満たすことができ、それは、利用可能なネットワークファブリックリソースの最適な使用をサポートする。たとえば、ＩＢスイッチ２２０は、アプリケーションに関連付けられたトラフィックのサービスレベル（service level：ＳＬ）に基づいて、あるパケット用の入来ＶＬ（すなわちソースＶＬ）を
、そのパケット用の異なる送出ＶＬ（すなわち宛先ＶＬ）に再マッピングしてもよい。
【００１７】
この発明の一実施形態によれば、入力ポート２０２または２１２の各々は、入来パケットごとに出力ポートを決定できる入力ポートパケット分類器２０３または２１３を利用することができる。たとえば、入力ポートパケット分類器２０３は、入力ポート２０２で受信されたパケットごとに出力ポートを決定でき（および、１つ以上のパケットを除去するためにポートフィルタ２０４を使用でき）、入力ポートパケット分類器２１３は、入力ポート２１２で受信されたパケットごとに出力ポートを決定できる（および、１つ以上のパケットを除去するためにポートフィルタ２１４を使用できる）。
【００１８】
加えて、入力ポートパケット分類器２０３または２１３は、入力ポート２０２または２１２に到着した（マルチキャスティングおよびブロードキャスティング用などの）マルチ宛先パケットごとに、複数の出力宛先ポートを決定できる。ポートフィルタ２０４または２１４は、所与のパケット用のポートリストから１つ以上の宛先ポートを除去することができる。さらに、宛先ポートがすべてリストから除去された場合、マルチ宛先パケットはドロップされてもよい。その他の場合、パケットは、（入力ポートパケット分類器２０３または２１３によって）元々分類されたポートリストの部分集合であり得る利用可能な宛先ポートのためにキューに入れられ得る。
【００１９】
入力ポートベースでは、入力ポート２０２または２１２は、受信したパケットを（たとえば出力ポート２０７または２１７を介して）トラフィック宛先２０８または２１８に送信する前に、受信したパケットをイングレスバッファ、たとえば仮想出力キュー（ＶＯＱ）２０５または２１５に格納することができる。図２に示すように、入力ポート２０２で受信されたパケットはＶＯＱ２０５に格納可能であり、入力ポート２１２で受信されたパケットはＶＯＱ２１５に格納可能である。
【００２０】
加えて、イングレスバッファの各々（たとえばＶＯＱ２０５または２１５）は多くのキューを含んでいてもよく、それらは各々、出力ポートに関連付けられた宛先ＶＬ（たとえば、出力ポート２０７上のＶＬ２２７、出力ポート２１７上のＶＬ２３７）をターゲットとするパケットを取り扱うことを担い得る。このため、入力ポートベースでのキューの総
数は、出力ポートの数と、各出力ポート上でサポートされる宛先ＶＬの数との積であり得る。その結果、ポートの数と各ポート上でサポートされるＶＬの数とが大きい場合、システムは、入力ポート２０２または２１２ごとに多数のキューを必要とするかもしれない。
【００２１】
この発明の一実施形態によれば、ＶＯＱ２０５および２１５は共有メモリ構造を使用して実現可能であり、ＶＯＱ２０５および２１５における各キューの利用はトラフィックに依存し得る。たとえば、ＶＯＱリソースは、入来パケットがキューに入れられる（すなわち、ネットワークパケットの受信）と消費され、パケットがデキューされる（すなわち、出力ポートへのパケットの配信）と最終的に解放されるメモリブロックの数を表わし得る。このため、ＶＯＱリソースの利用は、トラフィックパターンの関数になり得る。
【００２２】
この発明の一実施形態によれば、システムは、入力ポート２０２および２１２をスケジュールし、ＶＯＱ２０５および２１５に格納されたパケットの出力ポート２０７および２１７への動きを方向付けることができる。イングレスバッファにおける各キューの排出速度は、パケットがターゲットとする宛先ＶＬおよび出力ポートに依存し得る。
【００２３】
図２に示すように、各出力ポート２０７または２１７は、（出力ポートＸＢＡＲアービタ２０６または２１６などの）出力スケジューラを利用することができる。出力ポートＸＢＡＲアービタ２０６または２１６は、さまざまなＶＯＱの充填度、および宛先ＶＬ上の利用可能なクレジット、といったさまざまな基準に基づいて、パケットの動きに関する決定を下すことができる。
【００２４】
この発明の一実施形態によれば、ＩＢネットワークスイッチ２２０は、異なる条件下でクレジット整合性を維持することができる。図２に示すように、ＩＢネットワークスイッチ２２０の受信側では、クレジットは、入来パケットの入来ソースＶＬ２２１および２３１に基づいて整合して維持され、ＩＢネットワークスイッチ２２０の送信側では、クレジットは、送出パケットの宛先ＶＬ２２７および２３７に基づいて整合して維持され得る。
【００２５】
さらに、入力ポートベースでは、各入来パケットをキューに入れることは、パケットのソースＶＬに基づいて行なわれ得る。このため、システムは、ソースＶＬ２２１または２３１に基づいてさまざまなクレジットアカウンティング動作を行なうことができる。たとえば、クレジットアカウンティングのために、ＶＯＱセットが、ＩＢネットワークスイッチ２２０における各ソースＶＬに割当てられ得る。
【００２６】
ＶＯＱリソースの管理
この発明の一実施形態によれば、システムは、異なる条件（エラー取り扱い、リンク状態変化、およびバッファ再割当てなど）下でＶＯＱリソースを管理するためのフレームワークを提供することができる。
【００２７】
図３は、この発明の一実施形態に従った、高性能システムにおいてＶＯＱリソースを管理する図を示す。図３に示すように、ＩＢネットワークスイッチ３００における入力ポート３０２は、トラフィックソース３０１などのリモート送信側に１つ以上のクレジットを宣伝でき、リモート送信側から１つ以上のデータパケットを受信する。
【００２８】
入力ポート３０２は、入来パケットごとに１つ以上の宛先（たとえば出力ポート３０７または３１７）を決定できる（および、１つ以上のパケットを除去するためにポートフィルタ３０４を使用できる）入力パケット分類器３０３を利用することができる。さらに、入力ポート３０２は、クロスバー（ＸＢＡＲ）ファブリック３１０を介してパケットを異なるリモート受信側（トラフィック宛先３０８および３１８など）に発送する前に、受信したパケットを、一組のＶＯＱを含むイングレスバッファ３０５に格納することができる
。
【００２９】
図３に示すように、イングレスバッファ３０５におけるＶＯＱ３１１は、パケットフラッシュエンジン３２０に関連付けられ、それは、パケットをフラッシュする（パケットをフラッシュするためのさまざまなタイプのイベントを管理することを含む）低レベルプロセスの上に抽象化層を提供する。また、イングレスバッファ３１５におけるＶＯＱ３２１は、異なるパケットフラッシュエンジン（図示せず）に関連付けられ得る。
【００３０】
たとえば、ＶＯＱ３１１に格納されたパケットは複数のバッファを生成でき、それらはリンクされたリストとしてつながれ得る。階層的プロセスに基づくパケットフラッシュエンジン３２０は、バッファのリンクされたリストをＶＯＱ３１１の先頭からウォークスルーでき、バッファのリンクされたリストを１つずつデキューする。パケット全体がＶＯＱ３１１からいったん解放されると、パケットフラッシュエンジン３２０は、（たとえば、パケットフラッシュイベント３２２を出力ポートアービタ３０６および３１６に知らせることによって）さまざまな出力ポート３０７および３１７に通知することができる。
【００３１】
加えて、マルチキャストパケットがイングレスバッファ３０５からデキューされるべき場合、マルチキャストパケットは順次、宛先リストにおけるさまざまなＶＯＱにエンキューされ、そこからデキューされる必要がある。このため、宛先リストの一部である最後のＶＯＱからマルチキャストパケットがデキューされるまで、パケットフラッシュエンジン３２０は、ＶＯＱ３１１におけるバッファを解放しないかもしれない。
【００３２】
この発明の一実施形態によれば、システムは、出力ポートアービタ３０６および３１６がＶＯＱリソースの変化の背後にある異なる条件にとらわれないように、出力ポートアービタ３０６および３１６などのさまざまな出力スケジューラに抽象化を提供することができる。たとえば、ＶＯＱリソースは、寿命制限の先頭（head of lifetime limit：ＨＬＬ）タイムアウト満了などのさまざまなエラー条件、およびさまざまなリンク状態変化を取り扱うために再利用されてもよい。
【００３３】
（ポートおよび関連付けられたＶＬ間の）非ブロック挙動を提供するために、単一の入力ポート３０２でのＶＯＱリソースの再利用が、異なる出力スケジューラ（入力ポート３０２からスケジュールされたトラフィックを有する出力アービタ３０６および３１６など）とともに行なわれ得る。このため、抽象化は、出力ポートアービタ３０６および３１６とイングレスバッファ３０５におけるＶＯＱとを同期状態に保つことができる。
【００３４】
図３に示すように、パケットが到着すると、イングレスバッファ３０５は、イングレスバッファ３０５（たとえばＶＯＱ３１１）におけるバッファにパケットをエンキューすることができ、（たとえば、パケット到着イベント３１２を出力ポートアービタ３０６および３１６に知らせることによって）さまざまな出力ポート３０７および３１７に通知する。
【００３５】
さらに、出力ポートアービタ３０６または３１６はそれに応じて、それ自体の記録を更新できる。たとえば、出力ポートアービタ３０６はスコアボード３０９においてパケットカウント（または長さ）をインクリメントでき、出力ポートアービタ３１６はスコアボード３１９においてパケットカウント（または長さ）をインクリメントできる。後に、パケットがスケジュールされ、クロスバー３１０ファブリックを通って進んだ後で、出力スケジューラ３０６および３１６は、たとえばスコアボード３０９または３１９においてパケットカウント（または長さ）をデクリメントすることによって、スコアボードを再び修正することができる。
【００３６】
一方、パケットがフラッシュされる（または除去される）と、イングレスバッファ３０５（たとえばＶＯＱ３１１）は、そのバッファからパケットをデキューすることができ、（たとえば、パケットフラッシュイベント３２２を出力ポートアービタ３０６および３１６にパケットに知らせることによって）さまざまな出力ポート３０７および３１７に通知する。次に、出力ポート３０７または３１７は、スコアボード３０９または３１９からパケットカウント（または長さ）をデクリメントできる（または、それに応じてスコアボード３０９または３１９の内容を修正する）。
【００３７】
この発明の一実施形態によれば、システムは、上述の抽象化を使用して、ＨＬＬ満了条件などのさまざまなエラー条件を取り扱い、それらから回復することができる。たとえば、ＨＬＬ満了は、出力ポートが長期間不足状態になると起こり得る。また、ＨＬＬ満了は、上流ポートでの輻輳および／またはＶＬの失速が長期間起こった後に起こり得る。
【００３８】
ＨＬＬ満了を取り扱うために、システムは、失速したパケットをＶＯＱの先頭から、他のＶＯＱおよびポートをブロックすることなく潔く削除することができる。ＨＬＬ報告をサポートするために、ＨＬＬ満了を取り扱うために削除されたパケットは、さまざまなパケット統計を伴うフットプリントを有することができ、必要とされるさまざまなロジックに関連付けられた必要なバッファクレジットのみを消費することができる。
【００３９】
さらに、ＨＬＬ満了の繰り返しはキューを完全に無効にすることができ、ＶＯＱ全体がフラッシュされることをもたらし得る。たとえば、システムは、パケットフラッシュエンジン３２０を繰り返し使用することによって、パケットフラッシュ動作を再帰的に行なうことができる。
【００４０】
加えて、システムは、マルチキャスト複製とともにＨＬＬ満了を取り扱うことができる。ハードウェアベースのマルチキャスト複製では、ＨＬＬベースのパケットフラッシングは、ＶＯＱベースでサポートされ得る。さらに、宛先リストにおける出力ポートがサービスされた後で、パケットは、あるＶＯＱからデキューされて別のＶＯＱにエンキューされ得る。システムは、キューにおいて提示されたパケットのタイプを無視する上述の抽象化を利用することができる。このため、マルチキャストパケットは、ユニキャストパケットが取り扱われるのと同じ態様で取り扱われ得る。
【００４１】
この発明の一実施形態によれば、システムは、ＶＯＱごとに一組のタイマー（ＨＬＬタイマーなど）を提供することができる。たとえば、パケットがキューの先頭でどれくらいの時間ステージされたかをチェックできるタイマーが、新たなパケットがキューの先頭に挿入されるたびに始動してもよい。
【００４２】
パケットが出力ポートへの送信のためにスケジュールされる前にタイマーが満了した場合、システムはパケットを削除されるべきであるとしてマークすることができ、パケットをフラッシュするためにパケットフラッシュエンジン３２０を使用することができる。一方、タイマーが満了する前にパケットが送信のためにスケジュールされた場合、タイマーはリセットされ、次のパケットの到着を待つことができる。
【００４３】
この発明の一実施形態によれば、システムは、上述の抽象化を使用して、さまざまなリンク状態変化を取り扱うことができる。
【００４４】
図３に示すように、入力ポート３０２は受信したパケットをイングレスバッファ３０５に格納でき、同じ入力ポート３０２が複数の出力ポート３０７および３１７のために働くことができる。入力ポート３０２に関連付けられたイングレスリンクがアップダウンすると、古くなったデータがイングレスバッファ３０５において提示され得る（たとえば、イ
ングレスリンクがアップに戻る前に出力ポートが長期間失速される場合）。
【００４５】
さらに、動作ＶＬ（たとえば、サポートされるＶＬの数）およびそれらの初期クレジット割当て（たとえば、ポートＭＴＵなど）といったさまざまなリンクレベルパラメータは、入力ポート３０２でのリンク状態が変化すると、変化するかもしれない。なぜなら、これらのリンクレベルパラメータは、動作のためにＶＯＱがどのようにセットアップされるかに密接に結び付けられ得るためである。
【００４６】
さまざまなリンク状態変化を取り扱うために、システムは、ＶＯＱにおいて提示された古くなったパケットをフラッシュするためにパケットフラッシュエンジン３２０を使用することができる。たとえば、フラッシュ動作は、タイマーを小さい値に瞬間的に減少させることによって行なわれ得る。加えて、パケットフラッシュ動作は、イングレスバッファ３０５が完全に空になるまで、すべてのＶＯＱにわたって再帰的に行なわれ得る。このため、システムは、イングレスバッファ３０５（またはＶＯＱ）が提示された古くなったデータを有していないことを確認できる。
【００４７】
加えて、入力ポート３０２でリンク状態変化が起こると、マルチキャストパケットは、それが宛先リストにおける新たなＶＯＱに移動された後に毎回フラッシュされ得る。また、出力ポートアービタ３０６および３２６とイングレスバッファ３０５におけるＶＯＱとを同期状態に保つために、エンキューする動作およびフラッシュする動作は順次行なわれ得る。
【００４８】
図４は、この発明の一実施形態に従った、高性能システムにおいてＶＯＱリソースを管理するための例示的なフローチャートを示す。図４に示すように、ステップ４０１で、ネットワーキング装置上のイングレスバッファは、ネットワーキング装置上の入力ポートで受信された１つ以上の入来パケットを格納でき、イングレスバッファは１つ以上の仮想出力キューを含む。さらに、ステップ４０２で、システムは、パケットが到着したことを１つ以上の出力スケジューラに通知でき、各出力スケジューラは出力ポートに関連付けられる。次に、ステップ４０３で、イングレスバッファに関連付けられたパケットフラッシュエンジンは、イングレスバッファにおける１つの当該仮想出力キューに格納されたパケットをフラッシュできる。加えて、ステップ４０４で、システムは、パケットがフラッシュされたことを１つ以上の出力スケジューラに通知でき、各出力スケジューラは出力ポートに関連付けられる。
【００４９】
バッファのライブ再割当て
図５は、この発明の一実施形態に従った、高性能システムにおいてバッファ再割当てをサポートする図を示す。図５に示すように、入力ポート５０２は、トラフィックソース５０１などのリモート送信側に１つ以上のクレジットを宣伝できる。次に、入力ポート５０２は、リモート送信側から、異なるソースＶＬ（たとえばＶＬ５２１〜５２３）を介して、１つ以上のパケットを受信できる。
【００５０】
入力ポート５０２は、入来パケットごとに１つ以上の宛先（たとえば出力ポート５０７または５１７）を決定できる（および、１つ以上のパケットを除去するためにポートフィルタ５０４を使用できる）入力パケット分類器５０３を利用することができる。また、入力ポート５０２は、ＩＢリンク上の外部ソースに宣伝されるクレジットを維持するために、クレジット状態管理プロセス５１２（すなわち、クレジット状態管理ユニットまたはブロック）を使用することができる。
【００５１】
さらに、入力ポート５０２は、クロスバー（ＸＢＡＲ）ファブリック５１０を介してパケットを異なるリモート受信側（たとえばトラフィック宛先５０８および５１８）に発送
する前に、受信したパケットを、一組のＶＯＱ（ＶＯＱ５１１など）を含むイングレスバッファ５０５に格納することができる。また、別の入力ポート（図示せず）は、受信したパケットを、同様に一組のＶＯＱを含む異なるイングレスバッファ５１５に格納することができる。
【００５２】
加えて、各イングレスバッファ５０５または５１５は、（各バッファの充満度または空き具合に基づいて定義され得る）ソースＶＬごとの現在のバッファ占有率、ソースＶＬごとに許容された最大バッファ、ソースＶＬごとの現在参加中のＶＯＱのリスト、およびそれらの相対的なキュー深さ、といった異なるクレジット状態を維持することができる。
【００５３】
この発明の一実施形態によれば、システムは、前述の節で説明されたような抽象化に基づいて、ＶＯＱリソースの再割当ておよび／または再分割をサポートすることができる。
【００５４】
（さまざまなポートおよびＶＬ間の）非ブロック挙動を提供するために、入力ポート５０２でのＶＯＱリソースの再割当てが、すべての出力スケジューラ（入力ポート５０２からスケジュールされたトラフィックを有する出力ポートアービタ５０６および５１６など）とともに管理され得る。
【００５５】
ＶＯＱリソースの再割当ておよび／または再分割は、ソースおよび／または宛先ＶＬベースのバッファリング要件の変化、ならびに、ＱｏＳ要件に対するアプリケーションの必要性の変化、といった異なる理由によって起こり得る。それは、より多くのバッファ／クレジットが、あるＶＬに、他のＶＬを犠牲にして割当てられることをもたらし得る。
【００５６】
加えて、ＶＯＱリソースの再割当ておよび／または再分割は、リンク状態変化の後で起こり得る。ＶＯＱリソースの再割当ておよび／または再分割は、リンク状態変化の場合に古くなったパケットをＶＯＱからフラッシュすることを伴い得る。たとえば、リンクが戻った後に新しい一組の動作ＶＬがネゴシエートされた場合、古いパケットは遅い排出速度のためにキューに残ったままかもしれない。一方、アプリケーションは、古くなったパケットを完全にフラッシュする代わりに、リンクがダウンする前にパケットの最後の一組を保ちたいかもしれない。
【００５７】
図５に示すように、イングレスバッファ５０５は、物理的な入力ポート５０２におけるリンククレジット管理プロセス５１２に初期クレジット更新を宣伝できる。たとえば、ソースＶＬごとに利用可能な最大バッファスペースについての更新がある場合、ＶＯＱ５１１は、ソースＶＬごとに利用可能なバッファスペースを物理的な入力ポート５０２に宣伝できる。次に、リンククレジット管理プロセス５１２は、宣伝された最大の許容値を保つことができ、それに応じてリンククレジットを管理する。
【００５８】
この発明の一実施形態によれば、初期クレジット更新は、初期化中、およびバッファの再分割の完了後、といった異なるシナリオにおいてトリガされ得る。各場合について、物理的な入力ポート５０２におけるリンククレジット管理プロセス５１２は、更新を開始するプロセスにとらわれない。
【００５９】
ソフトウェアおよび／またはファームウェアによって開始され得る再分割要求をイングレスバッファ５０５が受信すると、システムは、バッファサイズが減少されるＶＬを選ぶことができる。次に、システムは、ＶＯＱの先頭から１つ以上のパケットをフラッシュすることによって、ＶＬに関連付けられたバッファサイズを減少させることができる。たとえば、システムは、（たとえばキューの充満度または空き具合に基づく）最も高い占有率を有する出力ポート上のＶＬに関連付けられたＶＯＱを選ぶことができる。
【００６０】
次に、ＶＯＱは、更新されたＶＬ（バッファサイズが増加されるＶＬ、およびバッファサイズが減少されるＶＬを含む）のために、更新値を有する初期クレジット更新を送信することができる。加えて、任意の時点での１つ以上のパケットの受信により、ソースＶＬ５２１〜５２３に関連付けられたバッファサイズがその最大許容バッファサイズを上回る場合、これらのパケットは潔くドロップされ得る。
【００６１】
この発明の一実施形態によれば、各ＶＯＱは、パケットフラッシュを取り扱うためのさまざまなタイプのイベントを管理できるパケットフラッシュエンジン５２０に関連付けられ得る。ソフトウェア／ファームウェアによって開始された再分割要求が受信されると、パケットフラッシュハードウェアエンジン５２０は、以下のリスト１に示すようなシーケンスを行なうことができる。
【００６２】
【数１】
2020114009.tif 000003
【００６３】
リスト１
加えて、システムは、ＶＯＱリソースの変化の前後の異なる要件に気づいている管理エージント５２５を提供できる。このため、システムは、大抵のＶＬでのトラフィックは途切れずに進むことができ、最小の一組のパケットしか損失しない、ということを保証できる。
【００６４】
図６は、この発明の一実施形態に従った、高性能システムにおいてバッファ再割当てをサポートするための例示的なフローチャートを示す。図６に示すように、ステップ６０１で、システムは、ネットワーキング装置上のイングレスバッファに、入力ポートで受信された１つ以上のパケットを格納でき、入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられる。さらに、ステップ６０２で、システムは、イングレスバッファにおけるバッファリソースを、複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てできる。次に、ステップ６０３で、イングレスバッファは、第１のソースＶＬおよび第２のソースＶＬのために、初期クレジット更新を入力ポートに送信できる。
【００６５】
この発明の別の実施形態では、ネットワーク環境においてパケット交換をサポートするための方法であって、ネットワーキング装置上のイングレスバッファに、入力ポートで受
信された１つ以上のパケットを格納するステップを含み、入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられ、当該方法はさらに、イングレスバッファにおけるバッファリソースを、複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てするステップと、第１のソースＶＬおよび第２のソースＶＬのために、初期クレジット更新を入力ポートに送信するステップとを含む、方法が提供される。
【００６６】
この発明の別の実施形態では、その方法において、ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである。
【００６７】
この発明の別の実施形態では、その方法において、イングレスバッファは複数の仮想出力キューを含み、各当該仮想出力キューは、出力ポートをターゲットとする１つ以上のパケットを格納するように動作する。
【００６８】
この発明の別の実施形態では、その方法は、第１のソースＶＬに関連付けられ、最も高い占有率を有する仮想出力キューを選択するステップをさらに含む。
【００６９】
この発明の別の実施形態では、その方法は、当該仮想出力キューから１つ以上のパケットをフラッシュするステップをさらに含む。
【００７０】
この発明の別の実施形態では、その方法は、当該１つ以上のパケットを格納するバッファのリンクされたリストを当該仮想出力キューの先頭からウォークスルーするステップをさらに含む。
【００７１】
この発明の別の実施形態では、その方法は、バッファ再割当て動作を開始するために管理エージェントを使用するステップをさらに含む。
【００７２】
この発明の別の実施形態では、その方法は、イングレスバッファを介して、ソースＶＬごとに利用可能なバッファスペースを入力ポートに宣伝するステップをさらに含む。
【００７３】
この発明の別の実施形態では、その方法は、初期クレジット更新に基づいて、入力ポートを介して、許容された最大クレジットを設定するステップをさらに含む。
【００７４】
この発明の別の実施形態では、その方法は、許容された最大クレジットに基づいて、入力ポートを介して、利用可能なクレジットを外部ソースに宣伝するステップをさらに含む。
【００７５】
この発明の一実施形態では、ネットワーク環境においてパケット交換をサポートするためのシステムであって、ネットワーキング装置上のイングレスバッファを含み、イングレスバッファは、ネットワーキング装置上の入力ポートで受信された１つ以上の入来パケットを格納するように動作し、入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられ、当該イングレスバッファはさらに、イングレスバッファにおけるバッファリソースを、複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てするように、および、第１のソースＶＬおよび第２のソースＶＬのために、初期クレジット更新を入力ポートに送信するように動作する、システムが提供される。
【００７６】
この発明の別の実施形態では、そのシステムにおいて、ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである。
【００７７】
この発明の別の実施形態では、そのシステムにおいて、イングレスバッファは複数の仮想出力キューを含み、各当該仮想出力キューは、出力ポートをターゲットとする１つ以上のパケットを格納するように動作する。
【００７８】
この発明の別の実施形態では、そのシステムにおいて、イングレスバッファは、第１のソースＶＬに関連付けられ、最も高い占有率を有する仮想出力キューを選択するように動作する。
【００７９】
この発明の別の実施形態では、そのシステムにおいて、イングレスバッファは、当該仮想出力キューから１つ以上のパケットをフラッシュするためにパケットフラッシュエンジンを使用するように動作する。
【００８０】
この発明の別の実施形態では、そのシステムにおいて、パケットフラッシュエンジンは、当該１つ以上のパケットを格納するバッファのリンクされたリストを当該仮想出力キューの先頭からウォークスルーするように動作する。
【００８１】
この発明の別の実施形態では、そのシステムは、バッファ再割当て動作を開始するように動作する管理エージェントを含む。
【００８２】
この発明の別の実施形態では、そのシステムにおいて、イングレスバッファは、ソースＶＬごとに利用可能なバッファスペースを入力ポートに宣伝するように動作する。
【００８３】
この発明の別の実施形態では、そのシステムにおいて、入力ポートは、初期クレジット更新に基づいて、許容された最大クレジットを設定するように、および、許容された最大クレジットに基づいて、利用可能なクレジットを外部ソースに宣伝するように動作する。
【００８４】
この発明の一実施形態では、命令を格納する、非一時的なマシン読取可能記憶媒体であって、当該命令は、実行されると、システムに複数のステップを行なわせ、当該複数のステップは、ネットワーキング装置上のイングレスバッファに、入力ポートで受信された１つ以上のパケットを格納するステップを含み、入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられ、当該複数のステップはさらに、イングレスバッファにおけるバッファリソースを、複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てするステップと、第１のソースＶＬおよび第２のソースＶＬのために、初期クレジット更新を入力ポートに送信するステップとを含む、非一時的なマシン読取可能記憶媒体が提供される。
【００８５】
この発明の一実施形態では、コンピュータ読取可能記憶媒体に格納された命令を含み、当該命令は、実行されると、１つ以上のコンピュータシステムに上述の方法を行なわせる、コンピュータプログラムが提供される。
【００８６】
本発明の多くの特徴は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せにおいて、当該ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを使用して、もしくは当該ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せの助けを得て行なわれ得る。したがって、本発明の特徴は、（たとえば、１つ以上のプロセッサを含む）処理システムを使用して実現されてもよい。
【００８７】
本発明の特徴は、ここに提示された特徴のいずれかを行なうように処理システムをプログラミングするために使用可能な命令が格納された記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラム製品において、当該コンピュータプログラム製品を使用して、もしくは当該コンピュータプログラム製品の助けを得て実現され得る。記憶媒体
は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気カードまたは光カード、ナノシステム（分子メモリＩＣを含む）、もしくは、命令および／またはデータを格納するために好適な任意のタイプの媒体またはデバイスを含み得るものの、それらに限定されない。
【００８８】
マシン読取可能媒体のうちのいずれか１つに格納されて、本発明の特徴は、処理システムのハードウェアを制御するために、および、処理システムが本発明の結果を利用する他のメカニズムとやりとりすることを可能にするために、ソフトウェアおよび／またはファームウェアに組込まれ得る。そのようなソフトウェアまたはファームウェアは、アプリケーションコード、デバイスドライバ、オペレーティングシステム、および実行環境／コンテナを含み得るものの、それらに限定されない。
【００８９】
この発明の特徴はまた、たとえば、特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）などのハードウェアコンポーネントを使用して、ハードウ
ェアで実現されてもよい。ここに説明された機能を行なうようなハードウェア状態マシンの実現は、当業者には明らかであろう。
【００９０】
加えて、本発明は、本開示の教示に従ってプログラミングされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取可能記憶媒体を含む、１つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを使用して、便利に実現されてもよい。ソフトウェア技術の当業者には明らかであるように、本開示の教示に基づいて、適切なソフトウェアコーディングを、熟練したプログラマーによって容易に準備することができる。
【００９１】
本発明のさまざまな実施形態が上に説明されてきたが、それらは限定のためではなく例示のために提示されたことが理解されるべきである。形態および詳細におけるさまざまな変更を、この発明の精神および範囲から逸脱することなくそこで行なうことができるということは、当業者には明らかであろう。
【００９２】
本発明は、特定された機能およびそれらの関係の実行を示す機能構築ブロックの助けを得て、上に説明されてきた。これらの機能構築ブロックの境界はしばしば、説明の便宜上、ここに任意に定義されてきた。特定された機能およびそれらの関係が適切に実行される限り、代替的な境界を定義することができる。あらゆるそのような代替的な境界はこのため、この発明の範囲および精神内にある。
【００９３】
この発明の前述の説明は、例示および説明のために提供されてきた。それは、網羅的であるよう、またはこの発明を開示された形態そのものに限定するよう意図されてはいない。本発明の広さおよび範囲は、上述の例示的な実施形態のいずれによっても限定されるべきでない。当業者には、多くの修正および変形が明らかであろう。修正および変形は、開示された特徴のあらゆる関連する組合せを含む。実施形態は、この発明の原理およびその実際的な適用を最良に説明するために選択および説明されたものであり、それにより、他の当業者が、特定の使用に好適なさまざまな修正を考慮して、さまざまな実施形態についてこの発明を理解することを可能にする。この発明の範囲は、請求項およびそれらの均等物によって定義されることが意図されている。
【図１】
2020114009.tif 000004
【図２】
2020114009.tif 000005
【図３】
2020114009.tif 000006
【図４】
2020114009.tif 000007
【図５】
2020114009.tif 000008
【図６】
2020114009.tif 000009
【手続補正書】
【提出日】令和2年4月9日(2020.4.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク環境においてパケット交換をサポートするための方法であって、
ネットワーキング装置上のイングレスバッファに、入力ポートで受信された１つ以上のパケットを格納するステップを含み、前記入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられ、前記方法はさらに、
前記イングレスバッファにおけるバッファリソースを、前記複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、前記複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てするステップと、
前記第１のソースＶＬおよび前記第２のソースＶＬのために、初期クレジット更新を前記入力ポートに送信するステップとを含む、方法。
【請求項２】
前記ネットワーキング装置は、クロスバーファブリックを含むネットワークスイッチである、請求項１に記載の方法。
【請求項３】
前記イングレスバッファは複数の仮想出力キューを含み、各前記仮想出力キューは、出力ポートをターゲットとする１つ以上のパケットを格納するように動作する、請求項１または２に記載の方法。
【請求項４】
前記第１のソースＶＬに関連付けられ、最も高い占有率を有する仮想出力キューを選択するステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記仮想出力キューから１つ以上のパケットをフラッシュするステップをさらに含む、請求項４に記載の方法。
【請求項６】
前記１つ以上のパケットを格納するバッファのリンクされたリストを前記仮想出力キューの先頭からウォークスルーするステップをさらに含む、請求項４または５に記載のシステム。
【請求項７】
バッファ再割当て動作を開始するために管理エージェントを使用するステップをさらに含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記イングレスバッファを介して、ソースＶＬごとに利用可能なバッファスペースを前記入力ポートに宣伝するステップをさらに含む、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記初期クレジット更新に基づいて、前記入力ポートを介して、許容された最大クレジットを設定するステップをさらに含む、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記許容された最大クレジットに基づいて、前記入力ポートを介して、利用可能なクレジットを外部ソースに宣伝するステップをさらに含む、請求項９に記載の方法。
【請求項１１】
コンピュータ読取可能記憶媒体に格納された命令を含み、前記命令は、実行されると、１つ以上のコンピュータシステムに請求項１〜１０のいずれか１項に記載の方法を行なわせる、コンピュータプログラム。
【請求項１２】
ネットワーク環境においてパケット交換をサポートするためのシステムであって、
ネットワーキング装置上のイングレスバッファを含み、前記イングレスバッファは、
前記ネットワーキング装置上の入力ポートで受信された１つ以上の入来パケットを格納するように動作し、前記入力ポートは複数のソース仮想レーン（ＶＬ）に関連付けられ、前記イングレスバッファはさらに、
前記イングレスバッファにおけるバッファリソースを、前記複数のソースＶＬにおける第１のソースＶＬに関連付けられることから、前記複数のソースＶＬにおける第２のソースＶＬに関連付けられることに再割当てするように、および
前記第１のソースＶＬおよび前記第２のソースＶＬのために、初期クレジット更新を前記入力ポートに送信するように動作する、システム。
【外国語明細書】
2020114009000001.pdf