(57)【特許請求の範囲】
【請求項１】
ネットワークにおいて輻輳管理を行う方法であって、
前記ネットワーク内の、スイッチ論理および輻輳通知論理を実装する処理回路を含むスイッチにおける輻輳状態を前記処理回路が監視することと、
前記処理回路が、前記スイッチにおいて、フロー・テーブル内のエントリのヘッダ・フィールド内のフラグであって、前記エントリに関連付けられたデータ・フローに関するデータのソースが、前記スイッチがデータを処理することができる速度より速くデータを送信していることを示す順方向輻輳フラグと、前記データ・フローに関するデータ要求の宛先が、前記スイッチが前記データ要求を処理することができる速度より速くデータを要求していることを示す逆方向輻輳フラグとを含む、前記フラグを検査することによって、前記輻輳状態が、前記スイッチに輻輳が存在することを示していると判定することと、
前記処理回路が、前記輻輳が前記スイッチにおいてソースから第１の速度で受信されたデータに関連し、前記順方向輻輳フラグが設定されていることに基づいて、前記スイッチから、前記第１の速度より遅い第２の速度で前記データを送信するよう前記ソースに要求する第１のメッセージを前記ソースに伝送することと、
前記処理回路が、前記輻輳が前記スイッチにおいて宛先から第３の速度で受信されたデータ要求に関連し、前記逆方向輻輳フラグが設定されていることに基づいて、前記スイッチから、前記第３の速度より遅い第４の速度で前記データ要求を送信するよう前記宛先に要求する第２のメッセージを前記宛先に伝送することと、
を含む方法。
【請求項２】
前記第１のメッセージの伝送に基づいて、
前記処理回路が、前記ネットワーク内の前記スイッチにおける前記輻輳状態を監視することと、
前記処理回路が、前記輻輳状態が、前記スイッチにおいて前記ソースから受信されたデータに関連する輻輳が前記スイッチにはもはや存在しないことを示しているとの判定に基づいて、前記スイッチから、前記第２の速度より速い第５の速度で前記データを送信するよう前記ソースに要求する第３のメッセージを前記ソースに伝送することと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第２のメッセージの伝送に基づいて、
前記処理回路が、前記ネットワーク内の前記スイッチにおける前記輻輳状態を監視することと、
前記処理回路が、前記輻輳状態が、前記スイッチにおいて前記宛先から受信されたデータ要求に関連する輻輳が前記スイッチにはもはや存在しないことを示しているとの判定に基づいて、前記スイッチから、前記第４の速度より速い第６の速度で前記データ要求を送信するよう前記宛先に要求する第４のメッセージを前記宛先に伝送することと
をさらに含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記スイッチがＯｐｅｎＦｌｏｗスイッチであり、前記ネットワークがＯｐｅｎＦｌｏｗネットワークである、請求項１乃至請求項３のいずれかに記載の方法。
【請求項５】
前記ソース及び前記宛先がＯｐｅｎＦｌｏｗスイッチである、請求項４に記載の方法。
【請求項６】
請求項１乃至請求項５のいずれか１項に記載の方法を実施するためにコンピュータによって実行される命令を含む、ネットワークにおける輻輳管理のためのコンピュータ・プログラム。
【請求項７】
ネットワークにおいて輻輳管理を行うためのシステムであって、前記システムは、
前記ネットワークに接続するように構成されたスイッチを含み、前記スイッチは、
コンピュータ可読コンピュータ命令を有するメモリと、
前記コンピュータ可読命令を実行して、
前記スイッチにおける輻輳状態を監視し、
前記スイッチにおいて、フロー・テーブル内のエントリのヘッダ・フィールド内のフラグであって、前記エントリに関連付けられたデータ・フローに関するデータのソースが、前記スイッチがデータを処理することができる速度より速くデータを送信していることを示す順方向輻輳フラグと、前記データ・フローに関するデータ要求の宛先が、前記スイッチが前記データ要求を処理することができる速度より速くデータを要求していることを示す逆方向輻輳フラグとを含む、前記フラグを検査することによって、前記輻輳状態が、前記スイッチに輻輳が存在することを示していると判定し、
前記輻輳が前記スイッチにおいてソースから第１の速度で受信されたデータに関連し、前記順方向輻輳フラグが設定されていることに基づいて、前記第１の速度より遅い第２の速度で前記データを送信するよう前記ソースに要求する第１のメッセージを前記ソースに伝送し、
前記輻輳が前記スイッチにおいて宛先から第３の速度で受信されたデータ要求に関連し、前記逆方向輻輳フラグが設定されていることに基づいて、前記第３の速度より遅い第４の速度で前記データ要求を送信するよう前記宛先に要求する第２のメッセージを前記宛先に伝送する
ためのプロセッサと
を含むシステム。
【請求項８】
前記命令が、
前記第１のメッセージの伝送に基づいて、
前記輻輳状態を監視することと、
前記輻輳状態が、前記スイッチにおいて前記ソースから受信されたデータに関連する輻輳が前記スイッチにはもはや存在しないことを示しているとの判定に基づいて、前記第２の速度より速い第５の速度で前記データを送信するよう前記ソースに要求する第３のメッセージを前記ソースに伝送することと
をさらに含む、請求項７に記載のシステム。
【請求項９】
前記命令が、
前記第２のメッセージの伝送に基づいて、
前記輻輳状態を監視することと、
前記輻輳状態が、前記スイッチにおいて前記宛先から受信されたデータ要求に関連する輻輳が前記スイッチにはもはや存在しないことを示しているとの判定に基づいて、前記第４の速度より速い第６の速度で前記データ要求を送信するよう前記宛先に要求する第４のメッセージを前記宛先に伝送することと
をさらに含む、請求項７又は請求項８に記載のシステム。
【請求項１０】
前記スイッチ、前記ソース及び前記宛先がＯｐｅｎＦｌｏｗスイッチであり、前記ネットワークがＯｐｅｎＦｌｏｗネットワークである、請求項７乃至請求項９のいずれかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・ネットワークに関し、より具体的には、ネットワークにおけるスケーラブルなフロー及び輻輳制御に関する。
【背景技術】
【０００２】
イーサネット（Ｅｔｈｅｒｎｅｔ）ネットワークは、典型的には、複数のネットワーク・スイッチを含むローカル・エリア・ネットワーク（ＬＡＮ）において用いられる。多数の通信プロトコルが開発されており、様々な環境のためにイーサネット・ネットワーク性能を拡張するように進化し続けている。例えば、データ・センタ・ブリッジング（ＤＣＢ）、コンバージド・エンハンスド・イーサネット（ＣＥＥ）又はデータ・センタ・イーサネット（ＤＣＥ）と呼ばれるイーサネットの拡張は、ＬＡＮとストレージ・エリア・ネットワーク（ＳＡＮ）との収束をサポートする。イーサネットと共にデータ・センタ環境で用いることができる他のプロトコルは、例えば、ファイバ・チャネル・オーバ・イーサネット（ＦＣｏＥ）、インターネット・ワイド・エリア・リモート・ダイレクト・メモリ・アクセス・プロトコル（ｉＷＡＲＰ）、リモート・ダイレクト・メモリ・アクセス・オーバ・コンバージド・イーサネット（ＲｏＣＥ）を含む。
【０００３】
ＯｐｅｎＦｌｏｗネットワーク環境では、スイッチは、スイッチ構成及び経路指定を制御するためにセキュア・リンクを介してそれぞれのコントローラに接続される。かかるコントローラは、典型的には、このような制御を、従来のイーサネット・ファブリックより高レベルのデータ完全性を維持する、セキュア・リンク上で送信されるデータ・パケットによって提供する。
【０００４】
典型的には、データ・パケットがスイッチによって特定のポートを通して転送される場合、パケットは、着信パケットと発信パケットの速度間に不均衡があると、スイッチ・バッファ内の待ち行列に入れられる。ネットワークの輻輳は、スイッチが担うデータがあまりにも多くてバッファ待ち行列のエントリが使い果たされたとき又はバッファがバッファ・サイズに対してあるレベルまで満杯になったときに発生する問題である。かかる輻輳は、サービスの質の低下を招き、パケットのドロップ、又は、パケットの待ち行列作成（ｑｕｅｕｉｎｇ）及び／若しくは伝送の遅延を引き起こすことになる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、ネットワークにおいて輻輳管理を行うための方法、コンピュータ・プログラム製品及びシステムを提供することである。
【課題を解決するための手段】
【０００６】
本発明の態様は、ネットワーク内のスイッチにおける輻輳状態を監視することを含む、ネットワークにおいて輻輳管理を行うための方法、コンピュータ・プログラム製品及びシステムを含む。輻輳状態が、スイッチに輻輳が存在することを示していることが判定される。輻輳状態がスイッチにおいてソースから第１の速度で受信されたデータに関連したものであることに基づいて、スイッチから、第１の速度より遅い第２の速度でデータを送信するようソースに要求する第１のメッセージがソースに伝送される。輻輳状態がスイッチにおいて宛先から第３の速度で受信されたデータ要求に関連したものであることに基づいて、スイッチから、第３の速度より遅い第４の速度でデータ要求を送信するよう宛先に要求する第２のメッセージが宛先に伝送される。
【０００７】
付加的な特徴及び利点は、本明細書において説明される実施形態を通して認識される。本発明の他の実施形態及び態様は、本明細書において詳細に説明され、特許請求される発明の一部とみなされる。本発明を利点及び特徴と共により良く理解するために、説明及び図面を参照されたい。
【０００８】
ここで本発明の実施形態を例示のみの目的で添付の図面を参照して説明する。
【図面の簡単な説明】
【０００９】
【図１】一実施形態により実装することができるＯｐｅｎＦｌｏｗ対応のスイッチ有するネットワークを含むシステムのブロック図を示す。
【図２】一実施形態によるＯｐｅｎＦｌｏｗ対応のスイッチのブロック図を示す。
【図３】実施形態において用いることができるＯｐｅｎＦｌｏｗフロー・スイッチング定義の例を示す。
【図４】一実施形態による、スイッチにおいて輻輳管理を行うためのプロセスを示す。
【発明を実施するための形態】
【００１０】
実施形態は、ネットワーク内のスイッチにおけるスケーラブルなフロー及び輻輳制御を提供することに向けられたものである。ネットワーク輻輳は、データ・フローが（例えばネットワーク・スイッチにおいて）該フローを出力又は経路指定することが可能な速度より速い速度でソースから受信されたときに生じ得る。ネットワークがＯｐｅｎＦｌｏｗネットワークである実施形態において、データ・パケットがスイッチによって特定のポートを通じて転送される場合、パケットは、着信パケットと発信パケットの速度間に不均衡があると、スイッチ・バッファ内の待ち行列に入れられる。ネットワークは、スイッチが担うデータがあまりにも多くてバッファ待ち行列のエントリが使い果たされたとき又はバッファがバッファ・サイズに対してあるレベルまで満杯になったときに問題になる。かかる輻輳は、サービスの質の低下を招き、パケットのドロップ、又は、パケットの待ち行列作成及び／若しくは伝送の遅延を引き起こすことになる。
【００１１】
現代のＯｐｅｎＦｌｏｗネットワークにおいては、フロー及び輻輳制御は、ネットワーク内の全てのスイッチに接続されたＯｐｅｎＦｌｏｗコントローラによって管理される。このフロー及び輻輳制御に対する集中型手法を、本明細書に記載のフロー及び輻輳制御の全て又は一部がＯｐｅｎＦｌｏｗ対応のスイッチ（本明細書においては「ＯｐｅｎＦｌｏｗスイッチ」とも呼ばれる）によって管理される実施形態と対比する。一実施形態において、輻輳を検出するＯｐｅｎＦｌｏｗスイッチは、該スイッチにおいて輻輳を生じさせている可能性があるソース及び／又は宛先に対して、ＯｐｅｎＦｌｏｗコントローラとは無関係にメッセージを送信する。スイッチにおける輻輳を軽減することで、ネットワーク全体としての輻輳の減少をもたらし得る。
【００１２】
ここで図１を参照して、ＯｐｅｎＦｌｏｗをサポートするネットワーク（即ち、ＯｐｅｎＦｌｏｗネットワーク）１０１を含むシステム１００の一例を以下、詳細に説明する。図１に示す例において、システム１００は、ＯｐｅｎＦｌｏｗ対応のスイッチ１０６を用いたネットワーク１０１上で通信するように構成された複数のサーバ１０２及びクライアント・システム１０４を含むデータ・センタ環境である。例示的な実施形態において、サーバ１０２は、ホスト又はホスト・システムとも呼ばれ、命令の読み出し及び実行、並びにシステム１００の種々のコンポーネントとの対話を扱うことが可能な少なくとも１つの処理回路（例えば、コンピュータ・プロセッサ／ＣＰＵ）を含む、高速処理デバイス（例えば、メインフレーム・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、手持ち型デバイス、埋込型コンピューティング・デバイス等）である。サーバ１０２は、１つ又は複数のデータ・ストレージ・システム１０８にアクセスして大量のデータを格納するように構成されたストーレージ・システム・サーバとすることができる。
【００１３】
クライアント・システム１０４は、処理回路と、キー／ボタン、タッチスクリーン、音声入力、表示装置及び音声出力などの入力／出力（Ｉ／Ｏ）インターフェースとを有する、様々なデスクトップ、ラップトップ、汎用コンピュータ・デバイス、移動体コンピューティング・デバイス、及び／又はネットワーク・デバイスを含むことができる。クライアント・システム１０４は、直接、又は１つ若しくは複数の無線アクセス・ポイント１１０を通じて無線で、１つ又は複数のスイッチ１０６にリンクすることができる。
【００１４】
データ・ストレージ・システム１０８は、任意の型式のコンピュータ可読ストレージ媒体を指し、１つ又は複数の二次ストレージ要素、例えば、ハードディスク・ドライブ（ＨＤＤ）、固体メモリ、テープ、又は、サーバ１０２の内部若しくは外部にあるストレージ・サブシステムを含むことができる。データ・ストレージ・システム１０８内に格納することができるデータの型式は、例えば、種々のファイル及びデータベースを含む。各々のサーバ１０２によって利用される複数のデータ・ストレージ・システム１０８が存在してもよく、これらはシステム１００の様々な場所に分散させることができる。
【００１５】
システム１００はまた、ネットワーク・コントローラ１１２も含み、これは、ネットワーク１０１内での経路指定の決定を行うように構成された中央ソフトウェア・デファインド・ネットワーク・コントローラである。ネットワーク・コントローラ１１２は、１つ又は複数のセキュア・リンク１０３を確立して、スイッチ１０６を構成し、スイッチ１０６間のリンク１０５の通信特性を確立する。例えば、ネットワーク・コントローラ１１２は、スイッチ１０６を、サーバ１０２とクライアント・システム１０４との間、並びに１つ又は複数のファイアウォール１１４と１つ又は複数の負荷分散装置１１６との間のデータ・フローのためにパケット経路指定パスを制御するように構成することができる。１つ又は複数のファイアウォール１１４は、ネットワーク１０１と１つ又は複数の外部ネットワーク１１８との間のアクセス及びネットワーク・トラフィックのフローを制限する。１つ又は複数の負荷分散装置１１６は、作業負荷を複数のコンピュータにわたって、例えばサーバ１０２間に、分散させることができる。
【００１６】
サーバ１０２、クライアント・システム１０４及びネットワーク・コントローラ１１２は、当技術分野で公知の種々のコンピュータ／通信ハードウェア及びソフトウェア技術、例えば、１つ又は複数の処理ユニット又は回路、取り外し可能媒体を含む揮発性及び不揮発性メモリ、電源、ネットワーク・インターフェース、サポート回路、オペレーティング・システム、等を含むことができる。ネットワーク・コントローラ１１２は、分離したコンポーネントとして描かれているが、ネットワーク構成機能は、別の選択肢として、１つ又は複数のサーバ１０２又はクライアント・システム１０４の中に独立型又は分散型形式で実装することができることが理解されるであろう。
【００１７】
ネットワーク１０１は、無線、有線及び／又は光ファイバのリンクの組合せを含むことができる。図１に示すネットワーク１０１は、説明のための簡略化された例を表す。ネットワーク１０１の実施形態は、１個のスイッチ１０６当たり数十個のポート及びリンクを有する多数のスイッチ１０６（例えば、数百個）を含むことができる。ネットワーク１０１は、サーバ１０２、クライアント・システム１０４、スイッチ１０６、ネットワーク・コントローラ１１２、ファイアウォール１１４及び負荷分散装置１１６の間でデータを伝送することを可能にする種々の公知の通信規格をサポートすることができる。通信プロトコルは、典型的には、物理層（レイヤ１）、リンク層（レイヤ２）、ネットワーク層（レイヤ３）、トランスポート層（レイヤ４）及びアプリケーション層（レイヤ５）などの１つ又は複数の層に実装することができる。例示的な実施形態において、ネットワーク１０１は、レイヤ２のプロトコルとしてＯｐｅｎＦｌｏｗをサポートする。スイッチ１０６は、専用ＯｐｅｎＦｌｏｗスイッチ、又はレイヤ２及びレイヤ３イーサネットもサポートするＯｐｅｎＦｌｏｗ対応の汎用スイッチとすることができる。
【００１８】
図２は、ＯｐｅｎＦｌｏｗをサポートする図１のスイッチ１０６のブロック図を示す。スイッチ１０６は、スイッチ論理２０２、輻輳通知論理２１８、セキュア・チャネル２０４、プロトコル・サポート２０５、フロー・テーブル２０６、種々の待ち行列２０９ａ−２０９ｎを含むバッファ２０８ａ−２０８ｎ、及びポート２１０ａ−２１０ｎを含む。スイッチ１０６は、種々のカウンタ又はタイマ２１１、例えば、待ち行列２０９ａ−２０９ｎ、フロー・テーブル２０６及び／又はフロー・テーブル・エントリに関連付けられたタイマなどを含む。スイッチ論理２０２及び輻輳通知論理２１８は、１つ又は複数の処理回路内に実装することができ、この場合、コンピュータ可読ストレージ媒体が、スイッチ論理２０２のための命令、並びにスイッチ１０６の動作をサポートするための種々の変数及び定数を保持するように構成される。スイッチ論理２０２は、パケットを、図１のネットワーク・コントローラ１１２によって定義されたフローとしてポート２１０ａ−２１０ｎ間で転送する。スイッチ論理２０２内に含めることができる輻輳通知論理２１８の実施形態は、輻輳に関してスイッチ１０６を監視し、スイッチ１０６において輻輳が検出されると修正動作を取る。
【００１９】
セキュア・チャネル２０４が、スイッチ１０６を図１のネットワーク・コントローラ１１２に接続する。セキュア・チャネル２０４は、コマンド及びパケットがＯｐｅｎＦｌｏｗプロトコルによってネットワーク・コントローラ１１２とスイッチ１０６との間で通信されることを可能にする。セキュア・チャネル２０４は、スイッチ１０６内に格納された実行可能命令としてソフトウェアで実装することができる。ＯｐｅｎＦｌｏｗ及び他のプロトコルの実装のためのプロトコル定義を確立するプロトコルの詳細は、プロトコル・サポート２０５内に格納することができる。プロトコル・サポート２０５は、１つ又は複数のサポートされたプロトコル形式を定義するソフトウェアとすることができる。プロトコル・サポート２０５は、スイッチ論理２０２による実行のための命令を保持するように構成されたコンピュータ可読ストレージ媒体、例えばフラッシュ・メモリにおいて具体化することができる。プロトコル・サポート２０５をソフトウェアとして実装することで、プロトコルの新バージョン又はバリエーションに関してフィールドでのアップデートが可能になり、ＯｐｅｎＦｌｏｗを既存の従来型ルータ又はスイッチの拡張として提供することができる。
【００２０】
フロー・テーブル２０６は、特定のアドレス、仮想ローカル・エリア・ネットワーク又はスイッチ・ポートに関連付けられる、サポートされる接続タイプを定義し、スイッチはこれを用いて、該スイッチにおいて受信されたデータ・フローを処理する。データ・フローは、ある種の方式で、例えばソース及び／又は宛先によってグループ分けされた、又はそれ以外の選択された基準によって定義された、データ・パケットのシーケンスである。各データ・フローは、フロー・テーブル２０６に基づいてポート及び関連付けられた待ち行列にマッピングすることができる。例えば、データ・フローは、特定のヘッダ形式に一致する全てのパケットとして定義される。
【００２１】
フロー・テーブル２０６内の各エントリ２１１は、特定のフローに関連付けられた１つ又は複数の規則２１２、動作２１４及び統計量２１６を含むことができる。規則２１２は、各フローを定義するものであり、パケット・ヘッダによって決定することができる。動作２１４は、パケットをどのように処理するかを定義する。統計量２１６は、各フローのサイズ（例えば、バイト数）、各フローに関するパケット数、及び、最後に一致したフローのパケットからの経過時間又は接続時間といった情報を追跡する。動作の例は、フローのパケットを１つ又は複数の特定のポート２１０ａ−２１０ｎに転送すること（例えば、ユニキャスト又はマルチキャスト）、フローのパケットをカプセル化して図１のネットワーク・コントローラ１１２へ転送すること、及びフローのパケットをドロップすることに関する命令を含む。フロー・テーブル２０６内のエントリ２１１は、図１のネットワーク・コントローラ１１２によって、セキュア・チャネル２０４を介して追加及び削除することができる。図１のネットワーク・コントローラ１１２は、エントリ２１１をフロー・テーブル２０６内に予めポピュレートすることができる。さらに、スイッチ１０６は、フロー・テーブル２０６内に対応するエントリ２１１が存在しないフローを受信すると、ネットワーク・コントローラ１１２からエントリ２１１を生成することを要求することができる。
【００２２】
バッファ２０８ａ−２０８ｎは、パケットがポート２１０ａ−２１０ｎ間で送信されるときに、待ち行列２０９ａ−２０９ｎ内にフローのための一時的ストレージを提供する。無損失構成において、ネットワークの輻輳が存在する場合、パケットをドロップするのではなく、関連付けられたポート２１０ａ−２１０ｎ及び図１のリンク１０５が使用可能になるまで、バッファ２０８ａ−２０８ｎがパケットを一時的に格納する。各々のバッファ２０８ａ−２０８ｎは、特定のポート、フロー又はサブネットワークに関連付けることができる。各々のバッファ２０８ａ−２０８ｎは、論理的には分離しているが、物理的に独立である必要はない。従って、バッファ２０８ａ−２０８ｎの１つが満杯のときでも、これがスイッチ１０６内の他のバッファ２０８ａ−２０８ｎの性能に悪影響を与えることはない。
【００２３】
例えば、ＯｐｅｎＦｌｏｗスイッチにおいて、各ポート２１０ａ−２１０ｎは、それぞれの待ち行列２０９ａ−２０９ｎにアタッチされる。動作中、スイッチ１０６がパケットを受信すると、スイッチ１０６は、フィールド（「マッチ・フィールド」と呼ばれる）を各フロー・テーブル２０６のフロー・エントリ内の対応するフィールドと比較することによって、パケットのマッチングを試みる。例示的なマッチ・フィールドは、進入ポート及びメタデータ・フィールド、並びに図３を参照して下記に説明するようなヘッダ・フィールドを含む。一実施形態において、マッチングは、第１のフロー・テーブルで開始し、さらなるフロー・テーブルに続くものとすることができる。
【００２４】
一致が見いだされない場合、スイッチ１０６は、スイッチ構成に基づいた動作を行うことができ、例えば、パケットをコントローラに転送する又はドロップすることができる。パケットがフロー・テーブル内のフロー・エントリに一致した場合、該フロー・エントリ、例えば動作フィールド２１４、に基づいて、対応する命令セットが実行される。例えば、あるパケットが出力動作を含むフロー・エントリに一致した場合、そのパケットは、そのフロー・エントリ内で特定されたポート２１０ａ−２１０ｎの１つに転送される。
【００２５】
一実施形態において、パケットをポートに転送することは、フロー内のパケットをポートにアタッチされた待ち行列にマッピングすることを含む。かかるフローは、その待ち行列の構成（例えば、最低速度）に従って処理される。
【００２６】
図３は、実施形態において用いることができるＯｐｅｎＦｌｏｗフロー・スイッチング定義３００の例を示す。ＯｐｅｎＦｌｏｗフロー・スイッチング定義３００は、フロー（本明細書においては「データ・フロー」とも言う）を定義する、多数のフィールドを含むパケット・ヘッダである。この例において、スイッチング定義３００は、最大１１個のタプル又はフィールドを含むフロー・ヘッダであるが、具体的なフローに応じて必ずしも全てのタプルが定義される必要はない。図３の例において、ＯｐｅｎＦｌｏｗフロー・スイッチング定義３００は、進入ポート３０２、イーサネット宛先アドレス３０４、イーサネット・ソース・アドレス３０６、イーサネット型式３０８、仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）優先順位３１０、ＶＬＡＮ識別子３１２、インターネット・プロトコル（ＩＰ）ソース・アドレス３１４、ＩＰ宛先アドレス３１６、ＩＰプロトコル３１８、伝送制御プロトコル（ＴＣＰ）／ユーザ・データグラム・プロトコル（ＵＤＰ）ソース・ポート３２０、ＴＣＰ／ＵＤＰ宛先ポート３２２、順方向輻輳フラグ３２４及び逆方向輻輳フラグ３２６を識別するためのタプルを含む。イーサネット宛先アドレス３０４は、従来のスイッチング及び経路指定において用いられるレイヤ２のイーサネット・ハードウェア・アドレス又は媒体アクセス制御（ＭＡＣ）アドレスを表すことができる。ＩＰ宛先アドレス３１６は、従来のスイッチング及び経路指定において用いられるレイヤ３のＩＰアドレスを表すことができる。フロー・スイッチングは、ＯｐｅｎＦｌｏｗフロー・スイッチング定義３００内のいずれかのタプルの組合せに関して定義することができ、特定のタプルの組合せがキーとしての役割を果たす。例えば、フローを、図２の規則２１２において、集約ＭＡＣサブネット、ＩＰサブネット、ポート、ＶＬＡＮ識別子等に関する完全一致又はワイルドカード一致によって定義することができる。一実施形態において、順方向輻輳フラグ３２４は、エントリに関連付けられたデータ・フローに関するデータのソースが、スイッチがデータを処理することができる速度より速くデータを送信していることを示すために用いられる。一実施形態において、逆方向輻輳フラグ３２６は、このデータ・フローに関するデータ要求の宛先が、スイッチがデータ要求を処理することができる速度より速くデータを要求していることを示すために用いられる。
【００２７】
図４は、一実施形態による、ネットワーク内のスイッチにおいて輻輳管理を行うためのプロセスを示す。一実施形態において、図４に示されるプロセスは、輻輳通知論理２１８によって行われる。ブロック４０２において、スイッチにおける輻輳状態が監視される。一実施形態において、監視は、スイッチ上に位置するバッファ２０８ａ−２０８ｎ及び／又は待ち行列２０９ａ−２０９ｎの全て又はサブセットを検査することによって行われる。ＯｐｅｎＦｌｏｗネットワークにおいて、各データ・フローは、例えばフロー・テーブル２０６によって、関連付けられたバッファ又は待ち行列にマッピングすることができる。一実施形態において、あるデータ・フローに関するデータ・パケットがスイッチにおいて受信されたとき、そのデータ・フローに関連付けられた１つ又は複数の待ち行列を検査して、それが指定数より多くのエントリを収容しているかどうか判定する。エントリの指定数は、実際の数に関して及び／又は満杯の待ち行列に対する割合に関して表すことができる。待ち行列がエントリの指定数を上回っていると判定されると、データ・フローに関連付けられたヘッダ内に順方向輻輳フラグ３２４又は逆方向輻輳フラグ３２６のいずれかが（例えば、待ち行列がデータ又はデータ要求のどちらを格納しているかに基づいて）設定される。別の実施形態において、待ち行列２０９ａ−２０９ｎの全て又はサブセットが定期的に検査され、待ち行列が指定数（この数は、待ち行列によって異なっていてもよい）よりも多くのエントリを収容しているとの判定に基づいて、どのデータ・フローがこの待ち行列に関連付けられるかが判定され、フロー・テーブル２０６内のそのデータ・フローに関するエントリ（例えば、ヘッダ又は規則２１２）内にフラグ（例えば、順方向輻輳フラグ３２４、逆方向輻輳フラグ３２６）が設定される。
【００２８】
一実施形態において、スイッチ（例えば、サーバ、クライアント・システム、コントローラ、別のスイッチ、又はネットワークに接続された他のコンポーネントにアタッチされたもの）は、ＯｐｅｎＦｌｏｗスイッチであり、ネットワークは、ＯｐｅｎＦｌｏｗネットワークである。一実施形態において、ソース及び宛先スイッチ（例えば、サーバ、クライアント・システム、コントローラ、別のスイッチ、又はネットワークに接続された他のコンポーネントにアタッチされたもの）は、ＯｐｅｎＦｌｏｗ対応のスイッチ及びＯｐｅｎＦｌｏｗ対応ではないスイッチの一方又は両方を含むことができる。
【００２９】
ブロック４０４において、スイッチに輻輳が存在することが判定される。一実施形態において、これはデータ・フローに関連付けられたフラグ（例えば、順方向輻輳フラグ３２４、逆方向輻輳フラグ３２６）を検査することによって判定される。一実施形態において、フラグは、そのデータ・フローに関するパケットがスイッチにおいて受信されるたびに（又はｘ回毎に）検査される。別の実施形態においては、フラグは定期的に検査される。さらに別の実施形態において、フラグが設定されたときに通知が送信される。
【００３０】
ブロック４０６において、輻輳がソースから受信されたデータに関連するものであるかどうかが判定される。一実施形態において、順方向輻輳フラグ３２４が設定されているとき、輻輳は、ソースから受信されたデータに関連する。
【００３１】
ブロック４０６において輻輳がソースから受信されたデータに関連するものであると判定された場合、ブロック４０８が実施される。代替的に、ブロック４０６において輻輳がソースから受信されたデータに関連するものではないと判定された場合、ブロック４１０が実施される。
【００３２】
ブロック４０８において、スイッチへのデータ伝送を減速するようにソースに要求するメッセージがソースに伝送される。一実施形態において、ひとたびメッセージがソースに送信されると、スイッチは、輻輳状態の監視を続ける。そのデータ・フローに関する輻輳がスイッチにはもはや存在しないと判定されると、より高速（例えば、元の速度と同じ速度又はその他の速度）でデータを送信するようソースに要求するメッセージがソースに伝送される。処理は、次にブロック４１０に続く。
【００３３】
ブロック４１０において、輻輳が宛先から受信されたデータ要求に関連するものであるかどうかが判定される。一実施形態において、逆方向輻輳フラグ３２６が設定されているとき、輻輳は、宛先から受信されたデータ要求に関連する。
【００３４】
ブロック４１０において輻輳が宛先から受信されたデータ要求に関連するものであると判定された場合、ブロック４１２が実施される。代替的に、ブロック４１０において輻輳が宛先から受信されたデータ要求に関連するものではないと判定された場合、処理はブロック４０２に続く。
【００３５】
ブロック４１２において、スイッチへのデータ要求伝送を減速するよう宛先に要求するメッセージが宛先に伝送される。一実施形態において、ひとたびメッセージが宛先に送信されると、スイッチは、輻輳状態の監視を続ける。そのデータ・フローに関する輻輳がスイッチにはもはや存在しないと判定されと、より高速（例えば、元の速度と同じ速度又はその他の速度）でデータ要求を送信するよう宛先に要求するメッセージが宛先に伝送される。処理は、次にブロック４０２に続く。
【００３６】
一実施形態において、データ又はデータ・パケットの伝送を減速する（又は加速する）ようにソース又は宛先に要求する１つ又は複数のメッセージは、物理フレーム内に挿入されてネットワークを介してソース（例えば、スイッチ又はスイッチにアタッチされたコンポーネント）に送信される。一実施形態において、物理フレームは、順方向明示的輻輳通知（ＦＥＣＮ）又は逆方向明示的輻輳通知（ＢＥＣＮ）フレームである。ＦＥＣＮ及びＢＥＣＮフレームは、制御フレームであるので、ネットワークによって及び／又は受信スイッチにおいて、これらにより高い優先順位を与えることができ、従って、これらは、データ又はデータ要求フレームより高い優先順位で（例えば、先に）処理され、その結果、これらのメッセージの待ち時間はより短いものとなる。データ用の仮想プレーン及び制御用の別の仮想プレーンを利用することによって、異なる優先順位をＳＤＮ内に実装することができる。
【００３７】
実施形態において、監視及びフラグ設定を行う（例えば、ブロック４０２）論理は、メッセージを送るかどうかを判定してメッセージを送信する（例えば、ブロック４０４−４１２）論理とは無関係に実行される。
【００３８】
一実施形態において、監視することは、スイッチが着信データ又は要求をより高速で処理することが可能である（例えば、待ち行列が閾値を下回る）ことを示すフラグを設定する。この場合、スイッチは、現在の速度より高速でデータを送信するようソース及び／又は宛先に要求することができる。
【００３９】
技術的な効果は、ネットワーク（例えば、ＯｐｅｎＦｌｏｗネットワーク）内のスイッチにおいてフロー制御及び輻輳管理を実装する能力を含む。
【００４０】
当業者であれば理解するように、本開示の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においてはこれらの全てを一般に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本開示の態様は、コンピュータ可読プログラム・コードが組み入れられた１つ又は複数のコンピュータ可読媒体内として具体化されたコンピュータ・プログラム製品の形を取ることができる。
【００４１】
１つ又は複数のコンピュータ可読媒体の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置、若しくはデバイス、又は上記のもののいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、以下のもの：即ち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを収容又は格納することができる任意の有形媒体とすることができる。
【００４２】
コンピュータ可読信号媒体は、例えばベースバンド内に又は搬送波の一部として、具体化されたコンピュータ可読プログラム・コードをその中に有する、伝搬されるデータ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光又はそれらのいずれかの適切な組み合わせを含む、種々の形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを伝達し、伝搬し、又は搬送することができる任意のコンピュータ可読媒体とすることができる。
【００４３】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のもののいずれかの適切な組み合わせを含む、任意の適切な媒体を用いて伝送することができる。
【００４４】
本発明の態様の操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、ＳｍａｌｌＴａｌｋ、Ｃ＋＋等のようなオブジェクト指向型プログラミング言語、及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。一番最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が為される場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００４５】
本発明の態様は、以下、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。
【００４６】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【００４７】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【００４８】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で生じることがあることにも留意されたい。例えば、連続して示された２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図中のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【００４９】
本明細書で用いられる用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、文脈が明らかにそうでないことを示さない限り、複数形も同様に含むことを意図したものである。「含む（comprise）」及び／又は「含んでいる（comprising）」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を指定するが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はこれらの群の存在又は付加を排除するものではないことがさらに理解されるであろう。
【００５０】
以下の特許請求の範囲における全ての「手段又はステップと機能との組み合わせ」要素の対応する構造、材料、動作、及び均等物は、その機能を、明確に特許請求された他の請求要素との組み合わせで実行するためのあらゆる構造、材料、又は動作を含むことが意図されている。本発明の説明は、例証及び説明を目的として提示されたものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。本発明の範囲及び趣旨から逸脱しない多くの修正及び変形が当業者には明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するために、そして、当業者が、企図した特定の用途に適した種々の修正を伴う種々の実施形態に関して本発明を理解できるように、選択及び説明したものである。
【００５１】
本明細書に示すフロー図は、単なる一例である。この図又はその中に記載されたステップ（又は動作）に対する、本発明の趣旨から逸脱しない多くの変形が存在し得る。例えば、ステップを異なる順序で行うことも、又はステップを追加、削除若しくは修正することもできる。これらの変形は全て、特許請求される発明の一部とみなされる。
【００５２】
本発明の好ましい実施形態を説明したが、現在及び将来の当業者が以下の特許請求の範囲内に入る様々な改良及び拡張を行うことができることが理解されるであろう。これら特許請求の範囲は、最初に記載された発明に対する適正な保護を維持するものと解釈すべきである。
【符号の説明】
【００５３】
１００：システム
１０１：ネットワーク
１０２：サーバ
１０３：セキュア・リンク
１０４：クライアント・システム
１０５：リンク
１０６：スイッチ
１０８：データ・ストレージ・システム
１１０：無線アクセス・ポイント
１１２：ネットワーク・コントローラ
１１４：ファイアウォール
１１６：負荷分散装置
１１８：外部ネットワーク
２０９ａ、２０９ｂ、２０９ｃ、２０９ｄ、２０９ｎ：待ち行列
【図１】
0006670109.tif 000002
【図２】
0006670109.tif 000003
【図３】
0006670109.tif 000004
【図４】
0006670109.tif 000005