(57)【要約】本発明によるコンピュータシステムは、複数のノードからパケットが転送される前に、複数のスイッチのそれぞれに対してフローエントリを設定するコントローラと、フローエントリで規定された宛先アドレスを含む受信パケットを、受信パケットの送信元アドレスに関わらず、フローエントリで規定された宛先装置に転送するスイッチとを具備する。
2012033041.tif 000002
【特許請求の範囲】
【請求項１】
コントローラと、
それぞれが、前記コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行う複数のスイッチと、
前記複数のスイッチのそれぞれを介して通信を行う複数のノードと
を具備し、
前記コントローラは、前記フローエントリのルールとして宛先アドレスを設定し、前記フローエントリのアクションとして宛先装置への転送処理を設定し、
前記複数のスイッチのそれぞれは、自身に設定されたフローエントリに従い、前記宛先アドレスを含む受信パケットを、前記受信パケットの送信元アドレスに関わらず前記宛先装置に転送する
コンピュータシステム。
【請求項２】
前記コントローラは、前記複数のノード間においてパケットが転送される前に、前記複数のスイッチのそれぞれに対して前記フローエントリを設定する
コンピュータシステム。
【請求項３】
請求項１又は２に記載のコンピュータシステムにおいて、
前記コントローラは、前記複数のノードのうちの第１ノードからの第１ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）要求によって、前記第１ノードの第１ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを取得し、前記第１ＭＡＣアドレスをフローエントリのルールとして前記複数のスイッチのそれぞれに設定する
コンピュータシステム。
【請求項４】
請求項３に記載のコンピュータシステムにおいて、
前記コントローラは、前記第１ノードから他のノード宛の前記第１ＡＲＰ要求に対する応答として、前記他のノードのＭＡＣアドレスを送信元としたＡＲＰ応答を前記第１ノードに送信する
コンピュータシステム。
【請求項５】
請求項２又は３に記載のコンピュータシステムにおいて、
前記コントローラは、第２ＡＲＰ要求を発行し、前記第２ＡＲＰ要求に対する応答に基づいて取得した第２ノードの第２ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを前記フローエントリのルールとして前記複数のスイッチのそれぞれに設定する
コンピュータシステム。
【請求項６】
請求項４に記載のコンピュータシステムにおいて、
前記コントローラは、前記他のノードから送信された前記第１ノード宛の第３ＡＲＰ要求に対するＡＲＰ応答を、前記他のノードに送信する
コンピュータシステム。
【請求項７】
請求項１から６のいずれか１項に記載のコンピュータシステムにおいて、
前記複数のスイッチは、前記複数のノードに直接接続される複数の第１スイッチを備え、
前記コントローラは、前記複数の第１スイッチのうち、任意に選択したスイッチに前記フローエントリを設定し、他のスイッチには設定しない
コンピュータシステム。
【請求項８】
請求項１から７のいずれか１項に記載のコンピュータシステムにおいて、
前記コントローラは、受信パケットをＥＣＭＰ（Ｅｑｕａｌ  Ｃｏｓｔ  Ｍｕｌｔｉ  ｐａｔｈ）ルーティングさせる前記フローエントリを前記複数のスイッチのそれぞれに設定する
コンピュータシステム。
【請求項９】
コントローラが、複数のスイッチのそれぞれに対してフローエントリを設定するステップと、
前記複数のスイッチのそれぞれが、前記コントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うステップと、
前記複数のノードのそれぞれが、前記複数のスイッチのそれぞれを介して通信を行うステップと
を具備し、
前記フローエントリを設定するステップは、
前記コントローラが、前記フローエントリのルールとして宛先アドレスを設定するステップと、
前記フローエントリのアクションとして宛先装置への転送処理を設定するステップと
を備え、
前記通信を行うステップは、前記複数のスイッチのそれぞれが、前記宛先アドレスを含む受信パケットを、前記受信パケットの送信元アドレスに関わらず前記宛先装置に転送するステップを備える
通信方法。
【請求項１０】
請求項９に記載の通信方法において、
前記フローエントリを設定するステップは、前記複数のノード間においてパケットが転送される前に行われる
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、及びコンピュータシステムにおける通信方法に関し、特に、オープンフロー技術を用いたコンピュータシステムに関する。
【背景技術】
【０００２】
Ｅｔｈｅｒｎｅｔ（登録商標）の通信では、Ｓｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ（ＳＴＰ）により、ネットワークで使用できる物理リンクの柔軟性がなくなって、マルチパス通信ができなくなってきている。【０００３】
この問題を解決するために、ＯｐｅｎＦｌｏｗによる経路制御が提案されている（非特許文献１参照）。ＯｐｅｎＦｌｏｗ技術を利用したコンピュータシステムについては、例えば、特開２００３−２２９９１３に記載されている（特許文献１参照）。この技術に対応したネットワークスイッチ（以下、プログラマブルフロースイッチ（ＰＦＳ）と称す。）は、プロトコル種別やポート番号等の詳細な情報をフローテーブルに保持し、フローの制御を行うことができる。尚、ＰＦＳは、オープンフロースイッチとも称す。【０００４】
図１は、ＯｐｅｎＦｌｏｗ技術を利用したコンピュータシステムの構成の一例を示す図である。図１を参照して、プログラマブルフローコントローラ（ＰＦＣ、オープンフローコントローラとも称す）１００は、単一のサブネット（Ｐ−Ｆｌｏｗ  Ｎｅｔｗｏｒｋ）内のＰＦＳ２００、３００に対してフローエントリを設定することで、当該サブネット内のフロー制御を行う。【０００５】
ＰＦＳ２００、３００は、自身が保持するフローテーブルを参照し、受信パケットのヘッダ情報に応じたフローエントリで規定されたアクション（例えばパケットデータの中継や破棄）を実行する。詳細には、ＰＦＳ２００、３００は、ＨＯＳＴ４００間で転送されるパケットを受信した際、受信パケットのヘッダ情報が、自身のフローテーブルに設定されたフローエントリ（内のルール）に適合（一致）する場合、当該フローエントリで規定されたアクションを実行する。一方、受信パケットのヘッダ情報が、フローテーブルに設定されたフローエントリ（内のルール）に適合（一致）しない場合、ＰＦＳ２００、３００は、受信パケットをファーストパケットと認識し、当該ファーストパケットの受信をＰＦＣ１００に通知するとともに、当該パケットのヘッダ情報をＰＦＣ１００に送信する。ＰＦＣ１００は、通知されたヘッダ情報に対応するフローエントリ（フロー＋アクション）を、ファーストパケットの通知元であるＰＦＳに設定する。【０００６】
このように、従来のオープンフロー技術では、ＨＯＳＴ４００間で転送されるパケットをＰＦＳ２００、３００で受信した後、ＰＦＣ１００によって、当該ＨＯＳＴ４００間で送受信されるパケットに対する転送制御が行われる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−２２９９１３
【非特許文献】
【０００８】
【非特許文献１】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０．０  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１）  Ｄｅｃｅｍｂｅｒ  ３１，  ２００９
【発明の概要】
【０００９】
従来のＯｐｅｎＦｌｏｗ技術によるＰＦＣは、転送されたパケットの宛先端末と送信元端末との間の経路を設定し、その経路上のスイッチにフローエントリを設定している。又、宛先が同じでも、送信元が異なるパケットが発生する度に送受信端末間の経路及びフローエントリの設定を行う必要がある。このため、ＯｐｅｎＦｌｏｗ技術を利用した場合、システム全体のリソース（フローエントリー数）を大量に消費する恐れがあった。
【００１０】
本発明によるコンピュータシステムは、コントローラと、それぞれが、コントローラによって設定されたフローエントリに適合する受信パケットに対し、フローエントリで規定された中継動作を行う複数のスイッチと、複数のスイッチのそれぞれを介して通信を行う複数のノードとを具備する。コントローラは、フローエントリのルールとして宛先アドレスを設定する。又、コントローラは、フローエントリのアクションとして宛先装置への転送処理を設定する。複数のスイッチのそれぞれは、自身に設定されたフローエントリに従い、宛先アドレスを含む受信パケットを、当該受信パケットの送信元アドレスに関わらずフローエントリに設定された宛先装置に転送する。
【００１１】
又、コントローラは、複数のノード間においてパケットが転送される前に、複数のスイッチのそれぞれに対してフローエントリを設定することが好ましい。
【００１２】
又、コントローラは、複数のノードのうちの第１ノードからの第１ＡＲＰ要求によって、第１ノードの第１ＭＡＣアドレスを取得し、第１ＭＡＣアドレスをフローエントリのルールとしてノード複数のスイッチのそれぞれに設定することが好ましい。
【００１３】
又、コントローラは、第１ノードから他のノード宛の第１ＡＲＰ要求に対する応答として、他のノードのＭＡＣアドレスを送信元としたＡＲＰ応答を第１ノードに送信することが好ましい。
【００１４】
又、コントローラは、複数のノードのうちの第１ノードからの第１ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）要求によって、第１ノード（ＶＭ１）の第１ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを取得し、第１ＭＡＣアドレスをフローエントリのルールとしてノード複数のスイッチのそれぞれに設定する。更に、コントローラは、第２ＡＲＰ要求を発行し、第２ＡＲＰ要求に対する応答に基づいて取得した第２ノードの第２ＭＡＣアドレスをフローエントリのルールとして複数のスイッチのそれぞれに設定することが好ましい。
【００１５】
又、コントローラは、第１ノードから他のノード宛の第１ＡＲＰ要求に対する応答として、他のノードのＭＡＣアドレスを送信元としたＡＲＰ応答を第１ノードに送信する。更に、コントローラは、他のノードから送信された第１ノード宛の第３ＡＲＰ要求に対するＡＲＰ応答を、他のノードに送信することが好ましい。
【００１６】
又、複数のスイッチは、複数のノードに直接接続される複数の第１スイッチを備えることが好ましい。この場合、コントローラは、複数の第１スイッチのうち、任意に選択したスイッチにフローエントリを設定し、他のスイッチには設定しないことが好ましい。
【００１７】
又、コントローラは、受信パケットをＥＣＭＰ（Ｅｑｕａｌ  Ｃｏｓｔ  Ｍｕｌｔｉ  ｐａｔｈ）ルーティングさせるフローエントリを複数のスイッチのそれぞれに設定することが好ましい。
【００１８】
本発明による通信方法は、コントローラが、複数のスイッチのそれぞれに対してフローエントリを設定するステップと、複数のスイッチのそれぞれが、コントローラによって設定されたフローエントリに適合する受信パケットに対し、フローエントリで規定された中継動作を行うステップと、複数のノードのそれぞれが、ノード複数のスイッチのそれぞれを介して通信を行うステップとを具備する。フローエントリを設定するステップは、コントローラが、フローエントリのルールとして宛先アドレスを設定するステップと、フローエントリのアクションとして宛先装置への転送処理を設定するステップとを備える。そして、通信を行うステップは、複数のスイッチのそれぞれが、当該宛先アドレスを含む受信パケットを、当該受信パケットの送信元アドレスに関わらず宛先装置に転送するステップを備える。
【００１９】
又、上述のフローエントリを設定するステップは、複数のノード間においてパケットが転送される前に行われることが好ましい。
【００２０】
本発明によれば、ＯｐｅｎＦｌｏｗ技術を利用したコンピュータシステム全体におけるリソースの消費量を低減することできる。
【図面の簡単な説明】
【００２１】
上記発明の目的、効果、特徴は、添付される図面と連携して実施の形態の記述から、より明らかになる。
【図１】図１は、オープンフロー技術を利用したコンピュータシステムの構成の一例を示す図である。
【図２】図２は、本発明によるコンピュータシステムの構成の一例を示す図である。
【図３Ａ】図３Ａは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図３Ｂ】図３Ｂは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図３Ｃ】図３Ｃは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図３Ｄ】図３Ｄは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図３Ｅ】図３Ｅは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図３Ｆ】図３Ｆは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図３Ｇ】図３Ｇは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図３Ｈ】図３Ｈは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図３Ｉ】図３Ｉは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図３Ｊ】図３Ｊは、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の一例を示す図である。
【図４】図４は、本発明によるフロー制御によって複数に分割された論理ネットワークの構成を示す図である。
【発明を実施するための形態】
【００２２】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。
【００２３】
（コンピュータシステムの構成）
図２を参照して、本発明によるコンピュータシステムの構成を説明する。図２は、本発明によるコンピュータシステムの構成の一例を示す図である。本発明によるコンピュータシステムは、通信ネットワークを介して接続される、プログラマブルフローコントローラ１０（以下、ＰＦＣ１０と称す）、複数のプログラマブルフロースイッチ２０−１〜２０−３、３０−１〜３０−３（以下、ＰＦＳ２０−１〜２０−３、３０−１〜３０−３と称す）、物理サーバ４０−１〜４０−５（以下、ＳＶ４０−１〜４０−５と称す）、ストレージ５０を具備する。尚、ＰＦＳ２０−１〜２０−３、３０−１〜３０−３を区別せずに説明する場合、それぞれＰＦＳ２０、ＰＦＳ３０と称す。又、ＳＶ４０−１〜４０−５を区別せずに説明する場合、それぞれＳＶ４０と称す。
【００２４】
ＳＶ４０やストレージ５０は、図示しないＣＰＵ、主記憶装置、及び外部記憶装置を備えるコンピュータ装置であり、外部記憶装置に格納されたプログラムを実行することで、他のＳＶ４０との間で通信を行う。ＳＶ４０間の通信は、ＰＦＳ２０、３０を介して行われる。ＳＶ４０は、実行するプログラムに応じて、Ｗｅｂサーバ、ファイルサーバ、アプリケーションサーバ、あるいはクライアント端末等に例示される機能を実現する。例えば、ＳＶ４０がＷｅｂサーバとして機能する場合、図示しないクライアント端末の要求に従い、記憶装置（図示なし）内のＨＴＭＬ文書や画像データを他のＳＶ４０（例示：クライアント端末）に転送する。
【００２５】
ＳＶ４０は、ＣＰＵ（図示なし）や記憶装置（図示なし）の使用領域を論理分割又は物理分割することで実現される仮想マシンＶＭを備える。図２に示す一例では、ＳＶ４０−１において仮想マシンＶＭ１、ＶＭ２が実現され、ＳＶ４０−２において仮想マシンＶＭ３、ＶＭ４が実現され、ＳＶ４０−３において仮想マシンＶＭ５、ＶＭ６が実現され、ＳＶ４０−４において仮想マシンＶＭ７、ＶＭ８が実現される。仮想マシンＶＭ１〜ＶＭ８は、それぞれのサーバ上におけるホストオペレーションシステム（ＨＯＳ）上でエミュレートされたゲストオペレーションシステム（ＧＯＳ）又はＧＯＳ上で動作するソフトウェアによって実現されてもよい。
【００２６】
仮想マシンＶＭは、仮想マシンモニタによって管理される仮想スイッチ（図示なし）及び物理ＮＩＣ（図示なし）を介して他の装置（例えば外部ネットワーク上のコンピュータ装置や、他の物理サーバ４０内の仮想マシンＶＭ）とデータの送受信を行う。本実施の形態では、一例としてＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）に従ったパケット通信が行われる。
【００２７】
又、本発明に係る仮想スイッチ（図示なし）は、後述するオープンフロー技術によって制御されても良いし、従来どおりのスイッチング動作（レイヤ２）を行っても良い。更に、仮想マシンＶＭ１〜ＶＭ８のそれぞれと物理サーバ外部とはブリッジ接続されている。すなわち、仮想マシンＶＭ１〜ＶＭ８のＭＡＣアドレスやＩＰアドレスによって外部から直接通信が可能である。
【００２８】
ＰＦＣ１０は、オープンフロー技術により、システム内の通信を制御する。オープンフロー技術とは、コントローラ（ここではＰＦＣ１０）が、ルーティングポリシー（フローエントリ：フロー＋アクション）に従い、マルチレイヤ及びフロー単位の経路情報をＰＦＳ２０、３０に設定し、経路制御やノード制御を行う技術を示す。これにより、経路制御機能がルータやスイッチから分離され、コントローラによる集中制御によって最適なルーティング、トラフィック管理が可能となる。オープンフロー技術が適用されるＰＦＳ２０、３０は、従来のルータやスイッチのようにホップ単位の通信ではなく、ＥＮＤ２ＥＮＤのフローとして通信を取り扱う。
【００２９】
ＰＦＣ１０は、図示しないＣＰＵ及び記憶装置を備えるコンピュータによって実現される。ＰＦＣ１０におけるフロー制御処理は、図示しない記憶装置に格納されたプログラムを実行することで実現され、ＰＦＳ２０、３０のそれぞれにフローエントリ（フロー＋アクション）を設定することで当該ＰＦＳ２０、３０の動作（例えばパケットデータの中継動作）を制御する。
【００３０】
又、本発明によるＰＦＣ１０には、端末間（例えば仮想マシンＶＭ間）においてパケット転送が行われる前に、ＨＯＳＴ端末（ＳＶ４０やストレージ５０）や仮想マシンＶＭのＭＡＣアドレスが設定される。例えば、ＰＦＣ１０は、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）によってＨＯＳＴ端末や仮想マシンＶＭのＭＡＣアドレスを事前に取得する。
【００３１】
ＰＦＣ１０は、取得したＭＡＣアドレスをルールとしたフローエントリを作成し、当該フローエントリをネットワーク内の全てのＰＦＳ２０、３０に設定する。例えば、ＰＦＣ１０は、仮想マシンＶＭ１のＭＡＣアドレスを宛先とするパケットの転送先装置を指定するとともに当該パケットを転送させるフローエントリをＰＦＳ毎に作成し、ネットワーク内の全てのスイッチＰＦＳ２０、３０に設定する。本発明では、宛先ＭＡＣアドレスのみでフローを制御しているため、送信元に関係なくフローエントリに設定されたルール（宛先ＭＡＣアドレス）に適合したパケットの転送先が決まる。このため、パケットの送信元を意識することなく、フロー制御を行うことが可能となる。すなわち、本発明によれば、宛先端末に応じた最適な経路を設定することでパケット転送のためのマルチパスが形成されるため、最適なマルチパス運用が可能となる。又、従来のように、ＰＦＳにおけるファーストパケットの受信を待つことなく、フローエントリを設定できることから、ネットワークのスループットを向上させることが可能となる。更に、本発明では、端末間でパケット転送が行われる前、すなわちシステム運用が行われる前に、フローエントリの生成及び設定が行われるため、運用中におけるフロー制御のための処理負荷は従来に比べて軽減される。
【００３２】
又、ＰＦＣ１０は、取得したＭＡＣアドレスをルールとしたフローエントリを作成し、当該フローエントリを、ネットワーク内のＰＦＳ２０、３０において任意に選択されたＰＦＳ２０、３０に設定し、他のＰＦＳには設定しなくても良い。例えば、仮想マシンＶＭ１のＭＡＣアドレスをルールとしたフローエントリが、ＨＯＳＴ端末（ＳＶ４０やストレージ５０）に直接接続されたＰＦＳ３０のうちの選択された一部に設定される。この際、フローエントリが設定されないＰＦＳ３０が仮想マシンＶＭ１宛てのパケットを受信した場合、当該パケットはどこへも転送されずに破棄される。これにより、パケットの転送先を論理的に区分することができるため、１つの物理ネットワークを複数の論理ネットワークに分割して運用することが可能となる。尚、特定ＭＡＣアドレス宛のパケットを破棄することを規定したフローエントリを特定のＰＦＳに設定した場合も、同様な効果が得られる。
【００３３】
ＰＦＳ２０、３０は、フローエントリが設定されるフローテーブル（図示なし）を保持し、設定されたフローエントリに従って受信パケットに対する処理（例えば中継処理や破棄）を行う。ＰＦＳ３０は、ＨＯＳＴ端末（ＳＶ４０やストレージ５０）に直接接続される１段目のスイッチであり、例えばトップ・オブ・ラック（ＴＯＲ）スイッチ等が好適である。又、ＰＦＳ２０はＨＯＳＴ端末から見て２段目以降に接続されるＬ２スイッチやＬ３スイッチ、例えばＣＯＲＥスイッチが好適である。
【００３４】
ＰＦＳ２０、３０は、自身が保持するフローテーブル（図示なし）を参照し、受信パケットのヘッダ情報（特に宛先ＭＡＣアドレス）に応じたフローエントリで規定されたアクション（例えばパケットデータの中継や破棄）を実行する。詳細には、ＰＦＳ２０、３０は、受信パケットのヘッダ情報が、自身のフローテーブルに設定されたフローエントリで規定されたフローに適合（一致）する場合、当該フローエントリで規定されたアクションを実行する。又、ＰＦＳ２０、３０は、受信パケットのヘッダ情報が、フローテーブルに設定されたフローエントリで規定されたフローに適合（一致）しない場合、当該パケットに対する処理を行わない。この際、ＰＦＳ２０、３０は、当該パケットを受信したことをＰＦＣ１０に通知しても良いし、当該パケットを破棄しても良い。
【００３５】
フローエントリには、フロー（パケットデータ）を特定するための情報（以下、ルールと称す）として、例えば、ＴＣＰ／ＩＰのパケットデータにおけるヘッダ情報に含まれる、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルのレイヤ１からレイヤ４のアドレスや識別子の組み合わせが規定される。例えば、レイヤ１の物理ポート、レイヤ２のＭＡＣアドレス、レイヤ３のＩＰアドレス、レイヤ４のポート番号、ＶＬＡＮタグのそれぞれの組み合わせがルールとしてフローエントリに設定される。ただし、本発明では、送信元のＭＡＣアドレスやＩＰアドレスはフローエントリに設定されず、宛先ＭＡＣアドレスは必ずフローエントリに設定される。ここで、フローエントリに設定されるポート番号等の識別子やアドレス等は、所定の範囲が設定されても構わない。例えば、仮想マシンＶＭ１、ＶＭ２のＭＡＣアドレスを宛先ＭＡＣアドレスとしてフローエントリのルールに設定されてもよい。
【００３６】
フローエントリで規定されるアクションは、例えばＴＣＰ／  ＩＰのパケットデータを処理する方法が規定される。例えば、受信パケットデータを中継するか否かを示す情報や、中継する場合はその送信先が設定される。又、アクションは、パケットデータの複製や、破棄することを指示する情報が設定されてもよい。
【００３７】
（コンピュータシステムにおけるフロー設定方法及び通信方法）
次に、図３Ａ〜図３Ｊを参照して、本発明によるコンピュータシステムにおけるフロー設定方法及び通信方法の詳細を説明する。以下では、一例として仮想マシンＶＭ１宛のフロー設定及び仮想マシンＶＭ５宛てのフロー設定について説明する。又、仮想マシンＶＭ１〜ＶＭ８、物理サーバ４０−１〜４０−５、ストレージ５０のそれぞれを区別しない場合、ノードと総称して説明する。
【００３８】
ＰＦＣ１０は、システムの構成が完了した時点（又はシステム構成が変更された時点）において、従来のフローコントローラと同様な方法によって、システム内のトポロジを把握する。ここで把握されるトポロジ情報は、ＰＦＳ２０、３０、ノード（仮想マシンＶＭ１〜ＶＭ８、物理サーバ４０−１〜４０−５、ストレージ５０）、図示しない外部ネットワーク（例えばインターネット）等の接続状況に関する情報を含む。具体的には、トポロジ情報として、ＰＦＳ２０、３０、ノードを特定する装置識別子に、当該装置のポート数やポート接続先情報が対応付けられてＰＦＣ１０の記憶装置に記録される。ポート接続先情報は、接続相手を特定する接続種別（スイッチ／ノード／外部ネットワーク）や接続先を特定する情報（スイッチの場合はスイッチＩＤ、ノードの場合はＭＡＣアドレス、外部ネットワークの場合は外部ネットワークＩＤ）が含まれる。
【００３９】
図３Ａを参照して、ＰＦＣ１０は、ノードからのＡＲＰリクエストをトラップしてリクエスト元ノードのロケーション（ＭＡＣアドレス）を取得（学習）する。例えば、仮想マシンＶＭ１から仮想マシンＶＭ５宛てのＡＲＰリクエストがＰＦＣ１０に送信される。ＰＦＣ１０は、受信したＡＲＰリクエストから送信元ノードである仮想マシンＶＭ１のＭＡＣアドレスを抽出する。ＰＦＣ１０は、当該ＭＡＣアドレスを宛先とするルールを規定してフローエントリを作成する。この際、システム内の全てのＰＦＳ２０、３０に対するフローエントリが作成される。尚、ＭＡＣアドレスに対するフローエントリは、予めＰＦＣ１０の記憶装置に設定されていても良い。
【００４０】
図３Ｂを参照して、ノードのロケーション（ＭＡＣアドレス）を学習したＰＦＣ１０は、当該ノード宛の経路を登録する。例えば、ＰＦＣ１０は、仮想マシンＶＭ１のＭＡＣアドレスを宛先としたパケットの転送及びその転送先装置を規定したフローエントリを、全てのＰＦＳ２０、３０に設定する。この際、ＰＦＳ３０−１には、仮想マシンＶＭ１に接続された物理ポートを出力先とするフローエントリが設定され、当該ＰＦＳ３０−１以外の第１段目のＰＦＳ３０には、２段目以降のＰＦＳ２０に対してロードバランスされるようなフローエントリが設定されることが好ましい。例えば、ＰＦＳ３０には、ＰＦＳ３０向けにＥＣＭＰ（Ｅｑｕａｌ  Ｃｏｓｔ  Ｍｕｌｔｉ  ｐａｔｈ）ルーティングさせるフローエントリが設定されることが好適である。
【００４１】
通常のレイヤ２による学習（Ｌ２ラーニング）では、ＦＬＯＯＤＩＮＧによりＬＯＯＰが発生する場合や、ロードバランスによって期待通りの学習ができない場合がある。しかし、本発明では、オープンフロー技術を利用しているため、このような問題は発生しない。
【００４２】
図３Ｃを参照して、フローエントリを設定したＰＦＣ１０は、ＭＡＣアドレスの取得（学習）の際にノードからリクエストされた宛先に対するＡＲＰリクエストを、当該ノードを除く全ノードに対してＡＲＰリクエストを送信する。例えば、ＰＦＣ１０は、図３Ａで示したＡＲＰリクエストの宛先である仮想マシンＶＭ５宛てのＡＲＰリクエストを、リクエスト元の仮想マシンＶＭ１を除く全ノード（仮想マシンＶＭ２〜ＶＭ８、ＳＶ４０−５、ストレージ５０）に送信する。
【００４３】
図３Ｄを参照して、ＰＦＣ１０は、図３Ｃで示したＡＲＰリクエストに対する応答（ＡＲＰリプライ）によって、宛先ノードのロケーション（ＭＡＣアドレス）を取得（学習）する。本一例では、仮想マシンＶＭ５からＡＲＰリプライが送信され、これをトラップすることで、ＰＦＣ１０は仮想マシンＶＭ５のロケーション（ＭＡＣアドレス）を取得する。
【００４４】
図３Ｅを参照して、ノードのロケーション（ＭＡＣアドレス）を取得（学習）したＰＦＣ１０は、当該ノード宛の経路を登録する。ここでは、ＰＦＣ１０は、仮想マシンＶＭ５のＭＡＣアドレスを宛先としたパケットの転送及びその転送先装置を規定したフローエントリを、全てのＰＦＳ２０、３０に設定する。この際、上述と同様に、ＨＯＳＴ端末から見て第１段目のＰＦＳ３０には、２段目以降のＰＦＳ２０に対してロードバランスされるようなフローエントリが設定されることが好ましい。
【００４５】
図３Ｆを参照して、ＰＦＣ１０は、図３Ａで示したノードからのＡＲＰリクエストに対する代理応答を行う。ここでは、ＰＦＣ１０は、送信元を仮想マシンＶＭ５のＭＡＣアドレスとし、宛先を仮想マシンＶＭ１としたＡＲＰリプライを発行する。仮想マシンＶＭ１は、自身が送信したＡＲＰリクエストに対するＡＲＰリプライを受信することで、リクエストした仮想マシンＶＭ５のＭＡＣアドレスを取得する。
【００４６】
以上の動作により、ＡＲＰリクエストの宛先ノードとリクエスト元のノードのそれぞれを宛先としたパケットに対する処理内容（フローエントリ）が、システム内の全てのＰＦＳ２０、３０に設定される。図３Ｇに示す一例では、上述の動作により仮想マシンＶＭ１、ＶＭ５宛てのパケットに対するフローエントリが全てのＰＦＳ２０、３０に設定される。これにより、仮想マシンＶＭ１宛ての通信、及び仮想マシンＶＭ５宛ての通信が正常に行われる。この際、それぞれに送信されるパケットは、送信元に関わらず、宛先ＭＡＣアドレスによって規定されるフローエントリに従った経路を通って送信されることとなる。
【００４７】
又、従来のＥｔｈｅｒｎｅｔ（登録商標）によるＳｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌでは単一のツリー構造を構成するために、使用しない物理リンクを作り出していた。このため、Ｅｔｈｅｒｎｅｔ（登録商標）では特定のノード間で複数の経路を持つことができなかったが、本発明では、宛先に応じたパケット転送先がＰＦＳ毎に設定されることでマルチパスが形成され、負荷分散が実現される。例えば、上述の一例の場合、仮想マシンＶＭ１向けの通信、及び仮想マシンＶＭ５向けの通信のそれぞれにおいてフローエントリに従ったマルチパスが形成され負荷分散が実現される。
【００４８】
上記の一例では、フローエントリで規定されたＥＣＭＰによるロードバランスを利用したが、これに限らず、Ｌｉｎｋ  Ａｇｇｒｅｇａｔｉｏｎ、あるいはフローエントリ毎に負荷分散する方法でも構わない。
【００４９】
一方、ＡＲＰリクエストを送信したリクエスト元ノードとその宛先ノードとの双方向通信を可能とするため、当該宛先ノードは、ＰＦＣ１０から当該リクエスト元のロケーション（ＭＡＣアドレス）を取得（学習）する。詳細には、図３Ｈを参照して、仮想マシンＶＭ５から仮想マシンＶＭ１宛てのＡＲＰリクエストがＰＦＣ１０に送信される。図３Ｉを参照して、既に仮想マシンＶＭ１のロケーション（ＭＡＣアドレス）を保持しているＰＦＣ１０は、仮想マシンＶＭ５に対し、送信元を仮想マシンＶＭ１のＭＡＣアドレスとしたＡＲＰリプライを送信する。仮想マシンＶＭ５は、これをトラップすることで仮想マシンＶＭ１のロケーション（ＭＡＣアドレス）を取得する。これにより、図３Ｊに示すように、仮想マシンＶＭ５は仮想マシンＶＭ１宛てにパケットデータを送信することが可能となる。尚、仮想マシンＶ１宛てのフローエントリと仮想マシンＶ５宛てのフローエントリはそれぞれ独立的に設定されているため、仮想マシンＶ１から仮想マシンＶ５に向かう通信経路と、その逆方向の通信経路は、同じ経路になるとは限らない。
【００５０】
以上のような動作により、仮想マシンＶＭ１、ＶＭ５の両者は相互のロケーション（ＭＡＣアドレス）を取得（学習）するとともに、仮想マシンＶＭ１、ＶＭ５のそれぞれに宛てたパケットに対する転送先が全てのＰＦＳ２０、３０に設定される。これにより、仮想マシンＶＭ１と仮想マシンＶＭ５との間において双方向通信が可能となる。
【００５１】
本発明では、宛先ＭＡＣアドレスベースでフローエントリを設定しているため、フローエントリの設定の際、送信元のロケーションを必要としない。このため、ノード間の通信が開始される前にフローエントリを設定することができる。又、従来のように、ノード間の通信経路に対してフローエントリを設定する必要がなく、宛先ＭＡＣアドレスの対するフローエントリをＰＦＳ毎に設定すればよいため、コンピュータシステム全体におけるリソースの消費量を低減することできる。
【００５２】
次に、図４を参照して、本発明によるコンピュータシステムの応用例について説明する。上述の例では、ノード宛のパケットに対するフローエントリを全てのＰＦＳ２０、３０に設定したが、これに限らず、フローエントリを設定するノードをノードに直接接続するＰＦＳ３０のうちの一部としてもよい。
【００５３】
図４に示すコンピュータシステムは、ネットワーク５００に、接続された上位スイッチ（ＰＦＳ２０−１、２０−２）、図示しないＨＯＳＴ端末（例えばＳＶ４０）に直接接続されたＰＦＳ３０−１、３０−２、３０−３、及びノードＳ、Ａを備える。ここで、ノードＡは、ＰＦＳ３０−２を介して当該システムに接続され、ノードＳは、ＰＦＳ３０−３を介して当該システムに接続される。
【００５４】
本一例では、図示しないＰＦＣ１０によって、ノードＳ宛のフローを制御するフローエントリがＰＦＳ２０−１、２０−２、３０−３に設定され、ノードＡ宛のフローを制御するフローエントリがＰＦＳ２０−１、２０−２、３０−１、３０−２に設定されている。この場合、ノードＳ宛のパケットは、ＰＦＳ２０−１、２０−２、３０−３のいずれかを通る通信経路を経てノードＳに至り、ノードＡ宛のパケットは、ＰＦＳ２０−１、２０−２、３０−１、３０−２のいずれかを通る通信経路を経てノードＡに至る。すなわち、ノードＳは、ＰＦＳ２０−１、２０−２、３０−３で構築される論理ネットワークに収容され、ノードＡは、ＰＦＳ２０−１、２０−２、３０−１、３０−２で構築される論理ネットワークに収容されることとなる。
【００５５】
以上のように、図４に示すコンピュータシステムは、１つの物理ネットワークを構成するが、フローエントリの設定を選択的に行うことで、２つの論理ネットワークに分割されることとなる。これにより１つの物理トポロジを複数のＶＬＡＮとして取り扱うことが可能となる。
【００５６】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。図２では、２段構成のＰＦＳ群を備えるシステムを一例としたが、これに限らず、更に多数段のＰＦＳ群を備えていても構わない。又、ＰＦＳ２０には、従来と同様にレイヤ３（Ｌ３）スイッチを介して外部ネットワークが接続されていても構わない。
【００５７】
尚、本出願は、日本出願番号２０１０−２０２４６８に基づき、日本出願番号２０１０−２０２４６８における開示内容は引用により本出願に組み込まれる。
【図１】
2012033041.tif 000003
【図２】
2012033041.tif 000004
【図３Ａ】
2012033041.tif 000005
【図３Ｂ】
2012033041.tif 000006
【図３Ｃ】
2012033041.tif 000007
【図３Ｄ】
2012033041.tif 000008
【図３Ｅ】
2012033041.tif 000009
【図３Ｆ】
2012033041.tif 000010
【図３Ｇ】
2012033041.tif 000011
【図３Ｈ】
2012033041.tif 000012
【図３Ｉ】
2012033041.tif 000013
【図３Ｊ】
2012033041.tif 000014
【図４】
2012033041.tif 000015
【国際調査報告】
2012033041.tif 000016
2012033041.tif 000017
2012033041.tif 000018
2012033041.tif 000019