(57)【特許請求の範囲】
【請求項１】
ネットワークに接続され、パケットの転送処理を行う１つ以上のスイッチと、
前記スイッチを制御するコントローラと
を具備し、
前記パケットは、前記ネットワークの端末間で送受信される通常パケットと、前記コントローラから供給されるカプセル化パケットとを含み、
前記スイッチは、
複数のフローエントリを保持することが可能なフローテーブルと、
前記フローエントリに従って前記パケットの転送を制御するローカル管理部と
を備え、
前記複数のフローエントリの各々は、
前記パケットの通信フローを識別するためのマッチ条件と、前記パケットに対する処理を示すアクションとを含み、
前記コントローラは、
前記通信フローの経路上に存在する１つ以上の通過スイッチのフローテーブルに格納される１つ以上の登録用フローエントリを生成し、
１つ以上の前記登録用フローエントリと前記通常パケットとを関連付けて前記カプセル化パケットを生成し、
前記カプセル化パケットを前記通過スイッチの内の１つに送信し、
前記通過スイッチは、
前記カプセル化パケットの受信に応答して、前記登録用フローエントリを前記カプセル化パケットの中から１つ抽出して新規フローエントリとして前記通過スイッチの前記フローテーブルに格納し、
前記新規フローエントリに示されているアクションを、前記カプセル化パケットに対して実行する
通信システム。
【請求項２】
請求項１に記載の通信システムにおいて、
前記スイッチは、
前記通常パケットの受信に応答して前記フローテーブルを参照し、
受信した前記通常パケットの通信フローに合致するマッチ条件を含むフローエントリが、前記フローテーブルに登録されていないとき、前記通常パケットを前記コントローラに供給する
通信システム。
【請求項３】
請求項２に記載の通信システムにおいて、
前記コントローラは、
前記通常パケットの受信に応答して、前記通常パケットが転送されるネットワーク上の経路を特定し、
特定した前記経路上にある１つ以上の前記通過スイッチの位置に基づいて１つ以上の前記登録用フローエントリを生成したのち、１つ以上の前記登録用フローエントリを含む前記カプセル化パケットを形成し、
前記通常パケットを供給した前記スイッチを第１通過スイッチとして、前記第１通過スイッチに前記カプセル化パケットを供給する
通信システム。
【請求項４】
請求項１から３のいずれか１項に記載の通信システムにおいて、
前記通過スイッチは、
前記カプセル化パケットに、前記登録用フローエントリが２個以上含まれているとき、前記登録用フローエントリが１つ抽出されたあとの前記カプセル化パケットを、前記経路上の次の通過スイッチに送信し、
前記カプセル化パケットに、１個の前記登録用フローエントリが含まれているとき、前記カプセル化パケットに含まれる前記通常パケットを、宛先の前記端末に送信する
通信システム。
【請求項５】
請求項１から４のいずれか１項に記載の通信システムにおいて、
前記通過スイッチは、
前記通常パケットの受信に応答して前記フローテーブルを参照し、受信した前記通常パケットの通信フローに合致するマッチ条件を含むフローエントリが、前記フローテーブルに登録されているとき、登録されている前記フローエントリのアクションに従って前記通常パケットに対する処理を実行する
通信システム。
【請求項６】
（ａ）ネットワークの端末間で送受信される通常パケット、または、コントローラから供給されるカプセル化パケットの転送処理を行うパケット転送処理ステップと、
（ｂ）前記カプセル化パケットを供給するカプセル化パケット供給ステップと
を具備し、
前記パケット転送処理ステップは、
（ａ−１）スイッチに備えられたフローテーブルに保持されているフローエントリを読み出すステップと、
（ａ−２）読み出した前記フローエントリに示される前記通常パケットまたは前記カプセル化パケットの通信フローを識別するためのマッチ条件と、前記通常パケットまたは前記カプセル化パケットに対する処理を示すアクションとを特定するステップと、
（ａ−３）前記フローエントリに従って前記通常パケットまたは前記カプセル化パケットの転送を制御するステップと
を含み、
前記カプセル化パケット供給ステップは、
（ｂ−１）前記通信フローの経路上に存在する１つ以上の通過スイッチのフローテーブルに格納される１つ以上の登録用フローエントリを生成するステップと、
（ｂ−２）１つ以上の前記登録用フローエントリと前記通常パケットとを関連付けて前記カプセル化パケットを生成するステップと、
（ｂ−３）前記カプセル化パケットを前記通過スイッチの内の１つに送信に送信するステップと
を含み、
前記（ａ−１）ステップは、
前記通過スイッチが、前記カプセル化パケットを受信したときに、前記登録用フローエントリを前記カプセル化パケットの中から１つ抽出するステップと
抽出した前記登録用フローエントリを新規フローエントリとして前記通過スイッチの前記フローテーブルに格納するステップと
を含み、
前記（ａ−２）ステップは、
前記新規フローエントリに示されているアクションを、前記カプセル化パケットに対して実行するステップ
を含む
通信方法。
【請求項７】
請求項６に記載の通信方法において、
前記（ａ−１）ステップは、
前記通常パケットの受信に応答して前記フローテーブルを参照するステップと、
受信した前記通常パケットの通信フローに合致するマッチ条件を含むフローエントリが、前記フローテーブルに登録されていないとき、前記通常パケットを前記コントローラに供給するステップと
を含む
通信方法。
【請求項８】
請求項７に記載の通信方法において、
前記（ｂ−１）ステップは、
前記コントローラが前記通常パケットの受信に応答して、前記通常パケットが転送されるネットワーク上の経路を特定するステップと、
特定した前記経路上にある前記通過スイッチの位置に基づいて１つ以上の前記登録用フローエントリを生成したのち、１つ以上の前記登録用フローエントリを含む前記カプセル化パケットを形成するステップ
を含み、
前記（ｂ−２）ステップは
前記通常パケットを供給した前記スイッチを第１通過スイッチとして、前記第１通過スイッチに前記カプセル化パケットを供給するステップを含む
通信方法。
【請求項９】
請求項６から８のいずれか１項に記載の通信方法において、
前記パケット転送処理ステップは、さらに、
（ａ−４）前記カプセル化パケットに、前記登録用フローエントリが２個以上含まれているとき、前記登録用フローエントリが１つ抽出されたあとの前記カプセル化パケットを、前記経路上の次の通過スイッチに送信するステップと、
（ａ−５）前記カプセル化パケットに、１個の前記登録用フローエントリが含まれているとき、前記カプセル化パケットに含まれる前記通常パケットを、宛先の端末に送信するステップと
を含む
通信方法。
【請求項１０】
請求項６から９のいずれか１項に記載の通信方法において、
前記パケット転送処理ステップは、さらに、
（ａ−６）前記通常パケットの受信に応答して前記フローテーブルを参照し、受信した前記通常パケットの通信フローに合致するマッチ条件を含むフローエントリが、前記フローテーブルに登録されているとき、登録されている前記フローエントリのアクションに従って前記通常パケットに対する処理を実行するステップを含む
通信方法。
【請求項１１】
コンピュータを、パケットの転送処理を行うスイッチとして機能させるための手順を示すスイッチプログラムであって、前記パケットは、ネットワークの端末間で送受信される通常パケットまたはコントローラから供給されるカプセル化パケットとを含み、
（ａ）前記通常パケットの通信フローの経路上に存在する１つ以上の通過スイッチのフローテーブルに格納される登録用フローエントリと前記通常パケットとが関連付けられた前記カプセル化パケットを受信するステップと、
（ｂ）前記通過スイッチが、前記カプセル化パケットを受信したときに、前記登録用フローエントリを前記カプセル化パケットの中から１つ抽出するステップと、
（ｃ）抽出した前記登録用フローエントリを新規フローエントリとして前記通過スイッチの前記フローテーブルに格納するステップと、
（ｄ）前記新規フローエントリに示される、前記通常パケットまたは前記カプセル化パケットに対する処理を示すアクションを特定するステップと、
（ｅ）特定した前記アクションに従って前記通常パケットまたは前記カプセル化パケットの転送を制御するステップと
を具備し、
前記（ｅ）ステップは、
前記新規フローエントリに示されているアクションを、前記カプセル化パケットに対して実行するステップ
を含む
スイッチプログラム。
【請求項１２】
請求項１１に記載のスイッチプログラムにおいて、さらに、
（ｆ）前記通常パケットの受信に応答して前記フローテーブルを参照するステップと、
（ｇ）受信した前記通常パケットの通信フローに合致するマッチ条件を含むフローエントリが、前記フローテーブルに登録されていないとき、前記通常パケットを前記コントローラに供給するステップと
を含む
スイッチプログラム。
【請求項１３】
請求項１２に記載のスイッチプログラムにおいて、さらに、
（ｈ）前記カプセル化パケットに、前記登録用フローエントリが２個以上含まれているとき、前記登録用フローエントリが１つ抽出されたあとの前記カプセル化パケットを、前記経路上の次の通過スイッチに送信するステップと、
（ｉ）前記カプセル化パケットに、１個の前記登録用フローエントリが含まれているとき、前記カプセル化パケットに含まれる前記通常パケットを、宛先の端末に送信するステップと
を含む
スイッチプログラム。
【請求項１４】
コンピュータを、パケットの転送処理を行うコントローラとして機能させるための手順を示すコントローラプログラムであって、前記パケットは、ネットワークの端末間で送受信される通常パケットまたは前記コントローラから供給されるカプセル化パケットとを含み、
（ａ）通信フローの経路上に存在する１つ以上の通過スイッチのフローテーブルに格納される１つ以上の登録用フローエントリを生成するステップと、
（ｂ）１つ以上の前記登録用フローエントリと前記通常パケットとを関連付けて前記カプセル化パケットを生成するステップと、
（ｃ）前記カプセル化パケットを前記通過スイッチの内の１つに送信するステップと
を具備し、
前記（ａ）ステップは、
前記コントローラが前記通常パケットの受信に応答して、前記通常パケットが転送されるネットワーク上の経路を特定するステップと、
特定した前記経路上にある前記通過スイッチの位置に基づいて１つ以上の前記登録用フローエントリを生成したのち、１つ以上の前記登録用フローエントリを含む前記カプセル化パケットを形成するステップ
を含み、
前記（ｂ）ステップは
前記通常パケットを供給した前記スイッチを第１通過スイッチとして、前記第１通過スイッチに前記カプセル化パケットを供給するステップを含む
コントローラプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＯｐｅｎＦｌｏｗ通信システムおよびＯｐｅｎＦｌｏｗ通信方法に関する。
【背景技術】
【０００２】
コンピュータ・ネットワークに関する様々な技術が知られている（例えば、特許文献１〜４参照）。特許文献１には、ＩＰ／ＭＡＣ発信元アドレス、宛先アドレスおよび出力物理ポート番号が登録されたＩＰフローテーブルに関する技術が記載されている。特許文献２には、記憶されたルーティング情報に基づいて他の通信装置までの経路を決定し、また、その記憶されたルーティング情報を更新情報に従って更新する通信装置に関する技術が記載されている。特許文献３には、経路情報の変更を受け、経路テーブルの該当情報を登録・削除・変更するパケット中継装置に関する技術が記載されている。特許文献４には、設定された経路情報をパケットに付加して、中継装置に送信する伝送経路情報付加機能に関する技術が記載されている。また、受信したパケットから経路情報を抽出し、パケットが自己宛でない場合には、他の中継装置に対してパケットを転送する中継装置に関する技術が記載されている。【０００３】
イーサネット（登録商標）などのコンピュータ・ネットワークは、スイッチ（あるいはルータ）が自立動作する分散型である。そのために、ネットワークで起きている事象を正確かつ迅速に把握することが難しく、障害発生箇所の特定や障害からの復帰に時間がかかるという点で問題視されている。また、個々のスイッチが自立動作するに足る能力を備えていなければならないため、スイッチの機能が複雑化している。【０００４】
そのような問題を低減するために、ＯｐｅｎＦｌｏｗと呼ばれる新しいネットワーク・アーキテクチャが提唱されている（例えば、非特許文献１参照）。ＯｐｅｎＦｌｏｗは、電話網のようにネットワークを集中管理することで、ネットワークの可視化を高いレベルで実現している。また、ＯｐｅｎＦｌｏｗでは、スイッチに求められる機能を相対的に少なくできる。そのため、スイッチを低廉化してネットワーク全体の設備コストを下げることができる。【０００５】
図１は、ＯｐｅｎＦｌｏｗに基づくネットワーク（以下、ＯｐｅｎＦｌｏｗ通信システムと記載する）の構成を示すブロック図である。ＯｐｅｎＦｌｏｗ通信システムは、ＯｐｅｎＦｌｏｗコントローラ１０と、ＯｐｅｎＦｌｏｗスイッチ１１と、それらを結ぶリンク１３とを主な構成要素としている。図１には、複数のＯｐｅｎＦｌｏｗスイッチ１１を備えるＯｐｅｎＦｌｏｗ通信システムを例示している。以下の説明では、複数のＯｐｅｎＦｌｏｗスイッチ１１を区別する場合には、枝番号を付して、例えば第１ＯｐｅｎＦｌｏｗスイッチ１１−１のように記載する。【０００６】
ＯｐｅｎＦｌｏｗコントローラ１０は複数の役割を担う。ＯｐｅｎＦｌｏｗコントローラ１０は、ネットワーク・トポロジの認識、配下のＯｐｅｎＦｌｏｗスイッチ１１の制御、ＯｐｅｎＦｌｏｗスイッチ１１の障害監視、リンク１３の障害監視、パケット４０の通信路の決定などを実行する。【０００７】
ＯｐｅｎＦｌｏｗスイッチ１１は、既存のイーサネット（登録商標）・スイッチやＩＰルータと同様に、隣接する端末１２や別のＯｐｅｎＦｌｏｗスイッチ１１からのパケット４０を中継する役割を担う。なお、以下の説明では、複数の端末１２を区別する場合には、枝番号を付して、例えば第１端末１２−１のように記載する。【０００８】
図２は、ＯｐｅｎＦｌｏｗスイッチ１１の構造を示すブロック図である。ＯｐｅｎＦｌｏｗスイッチ１１は、入力ポート２０と、出力ポート２１と、ローカル管理部２２と、フローテーブル２３と、パケットスイッチ２４とを主な構成要素として備えている。【０００９】
入力ポート２０は、別のＯｐｅｎＦｌｏｗスイッチ１１または端末１２から、パケット４０を受信する。出力ポート２１は、別のＯｐｅｎＦｌｏｗスイッチ１１、または、端末１２へパケット４０を送信する。【００１０】
ローカル管理部２２は、ＯｐｅｎＦｌｏｗコントローラ１０と通信し、ＯｐｅｎＦｌｏｗコントローラ１０からの指示に従ってフローテーブル２３を更新する。また、ローカル管理部２２は、ＯｐｅｎＦｌｏｗコントローラ１０から指示されたパケット４０を、パケットスイッチ２４に供給する。さらに、ローカル管理部２２は、外部から入力ポート２０を介して受信したパケット４０を、必要に応じてＯｐｅｎＦｌｏｗコントローラ１０に送信する。【００１１】
パケットスイッチ２４は、フローテーブル２３の検索によって得られた出力ポート２１、または、ローカル管理部２２から指示された出力ポート２１に向けて、パケット４０を転送する。フローテーブル２３は、ＯｐｅｎＦｌｏｗスイッチ１１に入力されたパケット４０の扱いを決定する。【００１２】
図３は、フローテーブル２３の構造を示すブロック図である。フローテーブル２３は、１つ以上のフローエントリ３０の集合である。各々のフローエントリ３０は、マッチ条件３１とアクション３２の、２つのフィールドを含んでいる。【００１３】
ＯｐｅｎＦｌｏｗスイッチ１１は、パケット４０を外部から受信するたびに、フローテーブル２３の中のマッチ条件３１とパケット４０を比較照合する。例えば、あるマッチ条件３１が成立していた場合、そのマッチ条件３１に対応するアクション３２を、そのパケット４０に適用する。パケット４０が全てのマッチ条件３１を満たさなかった場合、ＯｐｅｎＦｌｏｗスイッチ１１は、そのパケット４０をＯｐｅｎＦｌｏｗコントローラ１０に送信する。各々のマッチ条件３１には、
ネットワーク層（ＩＰ）のプロトコル番号
送信元／宛先アドレス
トランスポート層（ＴＣＰまたはＵＤＰ）の送信元／宛先ポート番号
データリンク層（イーサネット（登録商標））の宛先／送信元ＭＡＣアドレス
タイプ値
ＶＬＡＮ−ＩＤなどについての条件式
などのうち、１個以上を含めることができる。【００１４】
アクション３２には、“特定の出力ポート２１にパケット４０を出力する”という動作や、“パケット４０を廃棄する”という動作などが定義される。【００１５】
図４は、ＯｐｅｎＦｌｏｗコントローラ１０およびＯｐｅｎＦｌｏｗスイッチ１１の動作を示すフローチャートである。図４は、上述の図１に示すＯｐｅｎＦｌｏｗ通信システムにおいて、第１端末１２−１を送信元とし、第３端末１２−３を宛先とする通信フローを示している。また、全てのＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３は初期状態で空（Ｅｍｐｔｙ）であるとする。【００１６】
第１端末１２−１は、フローに属する最初のパケット４０を送信する。ステップＳ１において、第１ＯｐｅｎＦｌｏｗスイッチ１１−１は、そのパケット４０を入力ポート２０で受信する。その後、ステップＳ２において、第１ＯｐｅｎＦｌｏｗスイッチ１１−１は、そのパケット４０に合致するマッチ条件３１が、フローテーブル２３の中に存在するか調べる。この時点では、フローテーブル２３は空であるので、フローテーブル２３の検索は失敗し（Ｎｏの矢印）、ステップＳ３において、第１ＯｐｅｎＦｌｏｗスイッチ１１−１は、パケット４０をＯｐｅｎＦｌｏｗコントローラ１０に送信する。【００１７】
ステップＳ１１において、ＯｐｅｎＦｌｏｗコントローラ１０は、第１ＯｐｅｎＦｌｏｗスイッチ１１−１からパケット４０を受信する。ステップＳ１２において、ＯｐｅｎＦｌｏｗコントローラ１０は、パケット４０の中から送信元の端末１２（第１端末１２−１）と宛先の端末１２（第３端末１２−３）のアドレスなどを抽出して、パケット４０を転送するための経路を算出する。ＯｐｅｎＦｌｏｗコントローラ１０は、ネットワークのトポロジを把握しているため、適切な経路を導出することができる。図１を参照すると、パケット４０の通信路として、
第１ＯｐｅｎＦｌｏｗスイッチ１１−１  →
→  第２ＯｐｅｎＦｌｏｗスイッチ１１−２  →
→  第３ＯｐｅｎＦｌｏｗスイッチ１１−３
の経路が選択される。【００１８】
ステップＳ１３において、ＯｐｅｎＦｌｏｗコントローラ１０は経路計算後、その経路上の全てのＯｐｅｎＦｌｏｗスイッチ１１に対し、フローテーブル２３を更新する指示を発行する。【００１９】
ステップＳ４において、第１ＯｐｅｎＦｌｏｗスイッチ１１−１〜第３ＯｐｅｎＦｌｏｗスイッチ１１−３のそれぞれは、ＯｐｅｎＦｌｏｗコントローラ１０からの指示に従って、フローテーブル２３に新しいフローエントリ３０を追加する。【００２０】
図５は、新しいフローエントリ３０が追加されたフローテーブル２３の構成を示すブロック図である。図５の（ａ）は、追加される前の状態を示し、図５の（ｂ）は、追加された後の第１ＯｐｅｎＦｌｏｗスイッチ１１−１〜第３ＯｐｅｎＦｌｏｗスイッチ１１−３のフローテーブル２３の内容を示している。【００２１】
図４に戻り、ステップＳ１４において、ＯｐｅｎＦｌｏｗコントローラ１０は、パケット４０を第１ＯｐｅｎＦｌｏｗスイッチ１１−１に返送する。この際ＯｐｅｎＦｌｏｗコントローラ１０は、第１ＯｐｅｎＦｌｏｗスイッチ１１−１に対し、第２ＯｐｅｎＦｌｏｗスイッチ１１−２につながる出力ポート２１を通じてそのパケット４０を送信するように指示する。この理由は、第２ＯｐｅｎＦｌｏｗスイッチ１１−２が経路上の２番目に位置しているからである。【００２２】
ステップＳ６において、第１ＯｐｅｎＦｌｏｗスイッチ１１−１は、ＯｐｅｎＦｌｏｗコントローラ１０からの指示に従って、返却されたパケット４０を第２ＯｐｅｎＦｌｏｗスイッチ１１−２に向けて送出する。【００２３】
次に、第２ＯｐｅｎＦｌｏｗスイッチ１１−２の処理に移る。第２ＯｐｅｎＦｌｏｗスイッチ１１−２は、ステップＳ１で第１ＯｐｅｎＦｌｏｗスイッチ１１−１からパケットを受信し、ステップＳ２で、そのパケット４０に合致するマッチ条件３１がフローテーブル２３の中に存在するか調べる。この時点では、第２ＯｐｅｎＦｌｏｗスイッチ１１−２のフローテーブル２３は、上述の図５の（ｂ）中央のように設定されている。そのため、フローテーブル２３の検索は成功し（ステップＳ２でＹｅｓの矢印）、合致したマッチ条件３１に対応するアクション３２がパケット４０に適用される（ステップＳ５）。【００２４】
図５を参照すると、ここではアクション３２は「第３ＯｐｅｎＦｌｏｗスイッチ１１−３に向けて出力」であるから、そのパケット４０は第３ＯｐｅｎＦｌｏｗスイッチ１１−３につながる出力ポート２１を通じて第３ＯｐｅｎＦｌｏｗスイッチ１１−３に送信される。第３ＯｐｅｎＦｌｏｗスイッチ１１−３の動作は第２ＯｐｅｎＦｌｏｗスイッチ１１−２と同様であるので、説明を省略する。【００２５】
以上のようにフローの最初のパケット４０は中継され、最終的に宛先の第３端末１２−３に届けられる。同じフローに属する後続のパケット４０は、ＯｐｅｎＦｌｏｗコントローラ１０を経由することなく、第１ＯｐｅｎＦｌｏｗスイッチ１１−１、第２ＯｐｅｎＦｌｏｗスイッチ１１−２、第３ＯｐｅｎＦｌｏｗスイッチ１１−３を順に通って宛先に転送される。【００２６】
具体的には、これらのＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３には、パケット４０に合致するマッチ条件３１が、この時点では登録されている。したがって、図４のステップＳ５に進む。そして、合致したマッチ条件３１に対応するアクション３２がパケット４０に適用され、上記のフローが実現する。
【先行技術文献】
【特許文献】
【００２７】
【特許文献１】特開２０００−２９５２７４号公報
【特許文献２】特開２００５−１９１９２２号公報
【特許文献３】特開２００５−３５４５７９号公報
【特許文献４】特開平１１−３４１０６０号公報
【非特許文献】
【００２８】
【非特許文献１】Ｔｈｅ  ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｃｏｎｓｏｒｔｉｕｍ  （ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／）
【発明の概要】
【００２９】
数百台以上のスイッチから構成される大規模ネットワークにおいては、パケット４０がスイッチを何段も経由して転送される場合がある。このような場合、ＯｐｅｎＦｌｏｗコントローラ１０は新しいフローが発生するたびに経路上の多数のＯｐｅｎＦｌｏｗスイッチ１１のそれぞれに対してフローテーブル２３の更新を指示することになる。
【００３０】
例えば、経路上に平均１０台のスイッチが介在し、秒間１万の新規フローが発生している状況では、フローテーブル２３の更新頻度は毎秒１０万回になる。１台のＯｐｅｎＦｌｏｗコントローラ１０のみで前記の処理を行うことは現実的ではないため、一般的には複数台のＯｐｅｎＦｌｏｗコントローラ１０を配置して負荷分散する手法が採用される。しかし、そのような手法は、ＯｐｅｎＦｌｏｗコントローラ１０の台数増加に伴う設備コスト・管理コストの上昇を招くだけでなく、複数のＯｐｅｎＦｌｏｗコントローラ１０の間で同期を取る仕組みが別途必要になりＯｐｅｎＦｌｏｗコントローラ１０が複雑化するといった弊害をもたらす。
【００３１】
本発明は、上述の事情に鑑みてなされたものであり、その目的は、ネットワークの規模や構成を変更することなしに、ＯｐｅｎＦｌｏｗコントローラ１０がＯｐｅｎＦｌｏｗスイッチ１１に対して行うフローテーブル２３の更新指示の回数を削減することによって、ＯｐｅｎＦｌｏｗコントローラ１０の処理負荷を下げることである。
【００３２】
上記の課題を解決するために、ネットワークに接続され、パケットの転送処理を行う１つ以上のスイッチと、スイッチを制御するコントローラとを具備する通信システムを構成する。そのパケットは、ネットワークの端末間で送受信される通常パケットと、コントローラから供給されるカプセル化パケットとを含むことが好ましい。そのスイッチは、複数のフローエントリを保持することが可能なフローテーブルと、フローエントリに従ってパケットの転送を制御するローカル管理部とを備えることが好ましい。複数のフローエントリの各々は、パケットの通信フローを識別するためのマッチ条件と、パケットに対する処理を示すアクションとを含むことが好ましい。
ここにおいて、コントローラは、通信フローの経路上に存在する１つ以上の通過スイッチのフローテーブルに格納される１つ以上の登録用フローエントリを生成し、１つ以上の登録用フローエントリと通常パケットとを関連付けてカプセル化パケットを生成し、そのカプセル化パケットを通過スイッチの内の１つに送信する。そして、通過スイッチは、カプセル化パケットの受信に応答して、登録用フローエントリをカプセル化パケットの中から１つ抽出して新規フローエントリとして通過スイッチのフローテーブルに格納し、新規フローエントリに示されているアクションを、カプセル化パケットに対して実行する。
【００３３】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、ＯｐｅｎＦｌｏｗコントローラ１０の処理負荷を低減させることができるＯｐｅｎＦｌｏｗ通信システムを構築することができる。
【００３４】
本発明によれば、ＯｐｅｎＦｌｏｗコントローラ１０が、パケット４０の経路情報を経路上の１番目のＯｐｅｎＦｌｏｗスイッチ１１に送信し、経路に沿って経路情報をパケット４０とともに中継しながら、経路上のＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３に経路情報を記録していく。このような構成・動作により、ＯｐｅｎＦｌｏｗコントローラ１０が、ＯｐｅｎＦｌｏｗスイッチ１１に対して行うフローテーブル２３の更新指示の回数を削減することができる。
【図面の簡単な説明】
【００３５】
上記発明の目的、効果、特徴は、添付される図面と連携して実施の形態の記述から、より明らかになる。【００３６】
【図１】図１は、ＯｐｅｎＦｌｏｗに基づくネットワークの構成を示すブロック図である。
【図２】図２は、ＯｐｅｎＦｌｏｗスイッチ１１の構造を示すブロック図である。
【図３】図３は、フローテーブル２３の構造を示すブロック図である。
【図４】図４は、ＯｐｅｎＦｌｏｗコントローラ１０およびＯｐｅｎＦｌｏｗスイッチ１１の動作を示すフローチャートである。
【図５】図５は、新しいフローエントリ３０が追加されたフローテーブル２３の構成を示すブロック図である。
【図６】図６は、本実施形態のＯｐｅｎＦｌｏｗ通信システムの構成を例示するブロック図である。
【図７】図７は、本実施形態のＯｐｅｎＦｌｏｗコントローラ１０とＯｐｅｎＦｌｏｗスイッチ１１の構成と接続関係とを例示するブロック図である。
【図８】図８は、本実施形態のＯｐｅｎＦｌｏｗ通信システムの動作を例示するフローチャートである。
【図９】図９は、本実施形態のＯｐｅｎＦｌｏｗ通信システムの動作を例示するフローチャートである。
【図１０】図１０は、ＯｐｅｎＦｌｏｗコントローラ１０が生成するカプセル化パケット５０の構造を例示するブロック図である。
【図１１】図１１は、第１カプセル化パケット５０−１と、第２カプセル化パケット５０−２との構成を例示する図である。
【図１２】図１２は、第２カプセル化パケット５０−２に対する処理を例示するブロック図である。
【図１３】図１３は、第３カプセル化パケット５０−３に対する処理を例示するブロック図である。
【図１４】図１４は、第２実施形態のＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３に保持されるフローエントリ３０の構成を例示するブロック図である。
【図１５】図１５は、第２実施形態のＯｐｅｎＦｌｏｗ通信システムの動作を例示するフローチャートである。
【発明を実施するための形態】
【００３７】
以下、本発明の実施の形態を図面に基づいて説明する。なお、実施の形態を説明するための図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００３８】
［第１実施形態］
図６は、本実施形態のＯｐｅｎＦｌｏｗ通信システムにおけるＯｐｅｎＦｌｏｗコントローラ１０とＯｐｅｎＦｌｏｗスイッチ１１の構成を例示するブロック図である。なお、本実施形態において、全体的なＯｐｅｎＦｌｏｗ通信システムの構成は、上述の図１と同様である。また、ＯｐｅｎＦｌｏｗの現仕様では、データリンク層のプロトコルとしてイーサネット（登録商標）を、ネットワーク層およびトランスポート層のプロトコルとしてＴＣＰ／ＩＰもしくはＵＤＰ／ＩＰを想定しているが、本実施形態では、ネットワークプロトコルに関する制約は無い。また、以下の説明において、ＯｐｅｎＦｌｏｗ通信システムに配置された複数のＯｐｅｎＦｌｏｗスイッチ１１や端末１２を区別する場合には、枝番号を付して、例えば第１ＯｐｅｎＦｌｏｗスイッチ１１−１のように記載する。
【００３９】
図６を参照すると、本実施形態のＯｐｅｎＦｌｏｗコントローラ１０は、カプセル化パケット生成部１４を含んでいる。カプセル化パケット生成部１４の動作に関しては後述する。また、ＯｐｅｎＦｌｏｗスイッチ１１は、入力ポート２０と、出力ポート２１と、ローカル管理部２２と、フローテーブル２３と、パケットスイッチ２４とを含んでいる。
【００４０】
入力ポート２０は、ＯｐｅｎＦｌｏｗコントローラ１０または別のＯｐｅｎＦｌｏｗスイッチ１１から、パケット４０を受信する。パケット４０は、通常パケット４１またはカプセル化パケット５０のいずれかである。また、入力ポート２０は、端末１２から通常パケット４１を受信する。出力ポート２１は、ＯｐｅｎＦｌｏｗコントローラ１０または別のＯｐｅｎＦｌｏｗスイッチ１１へ、通常パケット４１またはカプセル化パケット５０を送信する。また出力ポート２１は、端末１２へ通常パケット４１を送信する。
【００４１】
ローカル管理部２２は、ＯｐｅｎＦｌｏｗコントローラ１０と通信し、そのＯｐｅｎＦｌｏｗコントローラ１０からの指示に従って、フローテーブル２３を更新する。また、ローカル管理部２２は、ＯｐｅｎＦｌｏｗコントローラ１０から指示された通常パケット４１またはカプセル化パケット５０を、パケットスイッチ２４に供給する。さらに、ローカル管理部２２は、外部から入力ポート２０を介して供給された通常パケット４１またはカプセル化パケット５０を、必要に応じてＯｐｅｎＦｌｏｗコントローラ１０に送信する。
【００４２】
パケットスイッチ２４は、フローテーブル２３を参照して得られた出力ポート２１に向けて通常パケット４１またはカプセル化パケット５０を転送する。また、パケットスイッチ２４は、ローカル管理部２２から指示された出力ポート２１に向けて通常パケット４１またはカプセル化パケット５０を転送する。
【００４３】
図７は、本実施形態のＯｐｅｎＦｌｏｗコントローラ１０とＯｐｅｎＦｌｏｗスイッチ１１の構成と接続関係とを例示するブロック図である。図７を参照すると、ＯｐｅｎＦｌｏｗコントローラ１０は、コントローラ側プロセッサ６０と、コントローラ側メモリ６２と、コントローラ側ネットワークインターフェース６３とを備え、それらはコントローラ側バス６１を介して接続されている。
【００４４】
コントローラ側プロセッサ６０（ＣＰＵ：中央処理装置）は、ＯｐｅｎＦｌｏｗコントローラ１０に備えられた様々な装置の制御やデータの計算・加工を行なう。コントローラ側プロセッサ６０は、コントローラ側メモリ６２に記憶されたプログラムを実行する機能を有し、入力装置（図示されず）やＨＤＤなどの記憶装置からデータを受け取り、演算・加工した上で、出力装置（図示されず）や記憶装置に出力する。コントローラ側ネットワークインターフェース６３は、ＯｐｅｎＦｌｏｗコントローラ１０とＯｐｅｎＦｌｏｗスイッチ１１を結ぶリンク１３に接続するためのインターフェースである。
【００４５】
コントローラ側メモリ６２は、コントローラ側プロセッサ６０が直接読み書きできる半導体記憶装置である。コントローラ側メモリ６２は、ＯｐｅｎＦｌｏｗコントローラ１０内で扱われるデータやプログラムを記憶する。コントローラ側メモリ６２は、ＯｐｅｎＦｌｏｗスイッチ制御プログラム７０と、カプセル化パケット生成プログラム７３とを含んでいる。ＯｐｅｎＦｌｏｗスイッチ制御プログラム７０は、ＯｐｅｎＦｌｏｗスイッチ１１の制御を実現するための手順を示している。カプセル化パケット生成プログラム７３は、カプセル化パケットを生成するための手順を示している。
【００４６】
ＯｐｅｎＦｌｏｗスイッチ１１は、第１ネットワークインターフェース６４と、第２ネットワークインターフェース６５と、スイッチ側プロセッサ６６と、スイッチ側メモリ６８とを備え、それらはスイッチ側バス６７を介して接続されている。
【００４７】
第１ネットワークインターフェース６４と第２ネットワークインターフェース６５は、ＯｐｅｎＦｌｏｗスイッチ１１をリンク１３に接続するためのインターフェースである。なお、第１ネットワークインターフェース６４と第２ネットワークインターフェース６５とが、１つに集約されていても良い。スイッチ側プロセッサ６６は、ＯｐｅｎＦｌｏｗスイッチ１１に備えられた様々な装置の制御や、ＯｐｅｎＦｌｏｗスイッチ１１で扱うデータの計算・加工を行なう。また、スイッチ側プロセッサ６６は、スイッチ側メモリ６８に記憶されたプログラムを実行する機能を有し、入力装置（図示されず）やＨＤＤなどの記憶装置からデータを受け取り、演算・加工した上で、出力装置（図示されず）や記憶装置に出力する。
【００４８】
スイッチ側メモリ６８は、スイッチ側プロセッサ６６が直接読み書きできる半導体記憶装置である。スイッチ側プロセッサ６６は、ＯｐｅｎＦｌｏｗスイッチ１１内で扱われるデータやプログラムを記憶する。スイッチ側メモリ６８は、ローカル管理プログラム７１と、パケットスイッチプログラム７２と、フローテーブル２３とを含んでいる。
【００４９】
ローカル管理プログラム７１は、ＯｐｅｎＦｌｏｗスイッチ１１のローカル管理部２２を実現するための手順を示している。パケットスイッチプログラム７２は、ＯｐｅｎＦｌｏｗスイッチ１１のパケットスイッチ２４を実現するための手順を示している。フローテーブル２３は、ＯｐｅｎＦｌｏｗスイッチ１１に入力されたパケット４０の扱いを決定するための情報を保持している。なお、本実施形態において、ＯｐｅｎＦｌｏｗコントローラ１０やＯｐｅｎＦｌｏｗスイッチ１１で実行される各コンピュータプログラムは、専用のハードウェアで実現することも可能である。
【００５０】
図８および図９は、本実施形態のＯｐｅｎＦｌｏｗ通信システムの動作を例示するフローチャートである。以下に説明する動作は、ＯｐｅｎＦｌｏｗ通信システムの端末１２から、他のノードを宛先とするパケット（通常パケット４１）が出力されると開始する。ステップＳ１０１において、ＯｐｅｎＦｌｏｗスイッチ１１は、通常パケット４１またはカプセル化パケット５０を、入力ポート２０を介して受信する。
【００５１】
ステップＳ１０２において、ＯｐｅｎＦｌｏｗスイッチ１１は、受信したパケット４０が、通常パケット４１であるかカプセル化パケット５０であるかを判定する。なお、カプセル化パケット５０の構成については後述する。その判定の結果、受信したパケット４０がカプセル化パケット５０のときは、処理は図９のステップＳ３０１に進み、受信したパケット４０が通常パケット４１のときは、処理はステップＳ１０３に進む。ここでは、受信したパケット４０が通常パケット４１の場合について説明をする。
【００５２】
ステップＳ１０３において、ＯｐｅｎＦｌｏｗスイッチ１１は、その通常パケット４１に合致するマッチ条件３１がフローテーブル２３の中に存在するかを調べる。その通常パケット４１に合致するマッチ条件３１がフローテーブル２３の中に存在するときは、処理はステップＳ１０５に進み、合致するマッチ条件３１がフローテーブル２３の中に存在しないときは、処理はステップＳ１０４に進む。
【００５３】
ステップＳ１０５において、ＯｐｅｎＦｌｏｗスイッチ１１は、受信したパケット４０が通常パケット４１であり、かつ、その通常パケット４１に合致するマッチ条件３１がフローテーブル２３の中に存在するので、そのＯｐｅｎＦｌｏｗスイッチ１１は、合致したマッチ条件３１に対応するアクション３２を通常パケット４１に適用する。
【００５４】
ステップＳ１０４において、ＯｐｅｎＦｌｏｗスイッチ１１（第１ＯｐｅｎＦｌｏｗスイッチ１１−１）は、受信したパケット４０が通常パケット４１であり、かつ、その通常パケット４１に合致するマッチ条件３１がフローテーブル２３の中に存在しないので、その通常パケット４１をＯｐｅｎＦｌｏｗコントローラ１０に送信する。以降は、処理がＯｐｅｎＦｌｏｗコントローラ１０に移る。
【００５５】
ステップＳ２０１において、ＯｐｅｎＦｌｏｗコントローラ１０は、ＯｐｅｎＦｌｏｗスイッチ１１から供給される通常パケット４１を受信する。ステップＳ２０２において、ＯｐｅｎＦｌｏｗコントローラ１０は、通常パケット４１の中から送信元の端末１２（第１端末１２−１）と宛先の端末１２（第３端末１２−３）のアドレスなどを抽出して、通常パケット４１を送受信するための経路を算出する。ステップＳ２０３において、ＯｐｅｎＦｌｏｗコントローラ１０は、経路計算後、カプセル化パケット５０を生成する。
【００５６】
図１０は、ＯｐｅｎＦｌｏｗコントローラ１０が生成するカプセル化パケット５０の構造を例示するブロック図である。カプセル化パケット５０は、ヘッダ５１と、１つ以上の登録フローエントリ５２と、通常パケット４１とを含んでいる。
【００５７】
ヘッダ５１は、ＯｐｅｎＦｌｏｗスイッチ１１が、通常パケット４１とカプセル化パケット５０を区別するための識別子を含む。区別の方法としては、カプセル化パケット５０に特殊な宛先アドレス、もしくは送信元アドレスを割り当てる方法や、イーサネット（登録商標）のタイプ値やＶＬＡＮ−ＩＤ、ＭＰＬＳラベルで識別する方法などがあるが、それらに限定されない。
【００５８】
第Ｘ登録フローエントリ５２−Ｘ（１≦Ｘ≦Ｎ）は、経路上のＸ番目のＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３に追加される。その登録フローエントリ５２は、フローエントリ３０としてフローテーブル２３に保持される。なお、第Ｘ登録フローエントリ５２−Ｘ（１≦Ｘ≦Ｎ）のＮは、カプセル化パケット５０に含まれる登録フローエントリ５２の個数である。したがって、第Ｘ登録フローエントリ５２−Ｘ（１≦Ｘ≦Ｎ）の内容は、従来のＯｐｅｎＦｌｏｗにおいて、経路上のＸ番目のＯｐｅｎＦｌｏｗスイッチ１１に追加されるフローエントリ３０の内容と同一である。
【００５９】
図８に戻り、ステップＳ２０４において、ＯｐｅｎＦｌｏｗコントローラ１０は、生成したカプセル化パケット５０を経路上の１番目のＯｐｅｎＦｌｏｗスイッチ１１（第１ＯｐｅｎＦｌｏｗスイッチ１１−１）に送信する。以降は、処理がＯｐｅｎＦｌｏｗスイッチ１１に移る。
【００６０】
ＯｐｅｎＦｌｏｗスイッチ１１は、ステップＳ１０１において、ＯｐｅｎＦｌｏｗコントローラ１０からカプセル化パケット５０を受信する。ステップＳ１０２において、ＯｐｅｎＦｌｏｗスイッチ１１は、入力ポート２０を介して受信したパケット４０が、通常パケット４１であるかカプセル化パケット５０であるかを判定する。このとき、受信したパケット４０はカプセル化パケット５０であるので、処理は図９のステップＳ３０１に進む。
【００６１】
ステップＳ３０１において、ＯｐｅｎＦｌｏｗスイッチ１１は、そのカプセル化パケット５０の中から、自身に対応する登録フローエントリ５２を参照し、その登録フローエントリ５２の内容を、自身のフローテーブル２３に追加する。換言すると、ＯｐｅｎＦｌｏｗスイッチ１１は、参照によって得られた登録フローエントリ５２の情報を、そのＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３のフローエントリ３０として保持する。
【００６２】
ステップＳ３０２において、ＯｐｅｎＦｌｏｗスイッチ１１は、カプセル化パケット５０の中の、自身に対応する登録フローエントリ５２の中からアクション３２を取り出す。以下の説明においては、取り出したアクション３２を、格納済アクションと呼称する。（この呼称は、本実施形態の動作に関する理解を容易にするための形式的なものである。）
ステップＳ３０３において、ＯｐｅｎＦｌｏｗスイッチ１１は、カプセル化パケット５０に含まれる登録フローエントリ５２の個数が１つであるかを判定する。その判定の結果、複数の登録フローエントリ５２が含まれているときは、処理はステップＳ３０４に進み、登録フローエントリ５２が１つのときは、処理はステップＳ３０５に進む。
【００６３】
ステップＳ３０４において、ＯｐｅｎＦｌｏｗスイッチ１１は、受信したカプセル化パケット５０を元にして、フローテーブル２３に追加した登録フローエントリ５２を、そのカプセル化パケット５０から削除して、新しいカプセル化パケット５０を生成する。換言すると、各ＯｐｅｎＦｌｏｗスイッチ１１において、受信したカプセル化パケット５０から、そのＯｐｅｎＦｌｏｗスイッチ１１に対応する登録フローエントリ５２を除去したものが、新しいカプセル化パケット５０となる。
【００６４】
ステップＳ３０６において、ＯｐｅｎＦｌｏｗスイッチ１１は、新しいカプセル化パケット５０に、格納済アクションを適用する。
【００６５】
ステップＳ３０５においては、ＯｐｅｎＦｌｏｗスイッチ１１は、受信したカプセル化パケット５０の中から通常パケット４１を取り出し、その通常パケット４１に格納済アクションを適用する。
【００６６】
本実施形態が適用されていないＯｐｅｎＦｌｏｗ通信システムのＯｐｅｎＦｌｏｗコントローラ１０は、経路上の全てのＯｐｅｎＦｌｏｗスイッチ１１に対してフローテーブル２３の更新を指示しなければならなかった。上述のように、本実施形態のＯｐｅｎＦｌｏｗ通信システムのＯｐｅｎＦｌｏｗコントローラ１０は、経路上の１番目のＯｐｅｎＦｌｏｗスイッチ１１に対してだけ経路情報を送信するため、複数のＯｐｅｎＦｌｏｗスイッチ１１に対してフローテーブル２３の更新の指示を行わなくて済む。それゆえ、本実施形態のＯｐｅｎＦｌｏｗ通信システムにおいては、ＯｐｅｎＦｌｏｗコントローラ１０の処理負荷を、低減させることができる。
【００６７】
以下に、具体的なカプセル化パケット５０の構成を例示して、本実施形態の動作について説明を行う。以下の説明では、上述の図１のＯｐｅｎＦｌｏｗ通信システムにおいて、第１端末１２−１を送信元とし、第３端末１２−３を宛先とした場合のパケット通信の通信フローを例示する。また、本実施形態の動作に対する理解を容易にするために、ＯｐｅｎＦｌｏｗ通信システム上の全てのＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３は、初期状態で空（Ｅｍｐｔｙ）であるとする。
【００６８】
端末１２（第１端末１２−１）が、フローに属する最初の通常パケット４１を送信したとき、ＯｐｅｎＦｌｏｗスイッチ１１（第１ＯｐｅｎＦｌｏｗスイッチ１１−１）が、その通常パケット４１を入力ポート２０を介して受信する。ＯｐｅｎＦｌｏｗスイッチ１１（第１ＯｐｅｎＦｌｏｗスイッチ１１−１）は、入力ポート２０を介して受信したパケット４０が、通常パケット４１であるかカプセル化パケット５０であるかを判定する。最初の時点では、そのパケット４０は、第１端末１２−１から到着した通常パケット４１であってカプセル化パケット５０ではない。したがって、この判定結果はＮｏ（偽）となる。また、最初の時点では、フローテーブル２３は空であるので、フローテーブル２３の検索は失敗する。
【００６９】
ＯｐｅｎＦｌｏｗスイッチ１１（第１ＯｐｅｎＦｌｏｗスイッチ１１−１）は、受信したパケット４０が通常パケット４１であり、かつ、その通常パケット４１に合致するマッチ条件３１がフローテーブル２３の中に存在しないので、その通常パケット４１をＯｐｅｎＦｌｏｗコントローラ１０に送信する。以降は、処理がＯｐｅｎＦｌｏｗコントローラ１０に移る。
【００７０】
ＯｐｅｎＦｌｏｗコントローラ１０は、第１ＯｐｅｎＦｌｏｗスイッチ１１−１から供給される通常パケット４１を受信する。ＯｐｅｎＦｌｏｗコントローラ１０は、通常パケット４１の中から送信元の端末１２（第１端末１２−１）と宛先の端末１２（第３端末１２−３）のアドレスなどを抽出して、通常パケット４１を転送するための経路を算出する。本実施形態では、通常パケット４１の通信路として、
第１ＯｐｅｎＦｌｏｗスイッチ１１−１
→  第２ＯｐｅｎＦｌｏｗスイッチ１１−２
→  第３ＯｐｅｎＦｌｏｗスイッチ１１−３
の経路が選択されものとする。ここにおいて、ＯｐｅｎＦｌｏｗコントローラ１０は、上述のステップＳ２０３までの動作を実行して経路計算をした後、カプセル化パケット５０を生成する。
【００７１】
図１１は、ＯｐｅｎＦｌｏｗコントローラ１０が生成するカプセル化パケット５０（以下、第１カプセル化パケット５０−１と記載する）と、第１ＯｐｅｎＦｌｏｗスイッチ１１−１が出力するカプセル化パケット５０（以下、第２カプセル化パケット５０−２と記載する）の構成を例示している。ＯｐｅｎＦｌｏｗコントローラ１０によって生成されたカプセル化パケット５０の内容は、図１１の第１カプセル化パケット５０−１のようになる。図１１に示されているように、ＯｐｅｎＦｌｏｗコントローラ１０は、生成したカプセル化パケット５０（第１カプセル化パケット５０−１）を、経路上の１番目のＯｐｅｎＦｌｏｗスイッチ１１（第１ＯｐｅｎＦｌｏｗスイッチ１１−１）に送信する。以降は、処理がＯｐｅｎＦｌｏｗスイッチ１１に移る。
【００７２】
ＯｐｅｎＦｌｏｗスイッチ１１は、ＯｐｅｎＦｌｏｗコントローラ１０からカプセル化パケット５０（第１カプセル化パケット５０−１）を受信する。ＯｐｅｎＦｌｏｗスイッチ１１（第１ＯｐｅｎＦｌｏｗスイッチ１１−１）は、入力ポート２０を介して受信したパケット４０が、通常パケット４１であるかカプセル化パケット５０であるかを判定する。このとき、受信したパケット４０はカプセル化パケット５０であるので、第１ＯｐｅｎＦｌｏｗスイッチ１１−１は、そのカプセル化パケット５０の中から先頭の登録フローエントリ５２（第１登録フローエントリ５２−１）を取り出して、それを自身のフローテーブル２３に追加する。換言すると、第１ＯｐｅｎＦｌｏｗスイッチ１１−１は、第１登録フローエントリ５２−１を、その第１ＯｐｅｎＦｌｏｗスイッチ１１−１のフローテーブル２３のフローエントリ３０として保持する。
【００７３】
第１ＯｐｅｎＦｌｏｗスイッチ１１−１は、この時点での格納済アクションの内容は、第１登録フローエントリ５２−１のアクション３２に等しく、『第２ＯｐｅｎＦｌｏｗスイッチ１１−２に向けて出力』となる。また、カプセル化パケット５０に含まれる登録フローエントリ５２の個数が、複数なので、ＯｐｅｎＦｌｏｗスイッチ１１は、受信したカプセル化パケット５０を基にして、フローテーブル２３に追加した登録フローエントリ５２をそのカプセル化パケット５０から削除して、新しいカプセル化パケット５０を生成する。ＯｐｅｎＦｌｏｗスイッチ１１は、新しいカプセル化パケット５０に、格納済アクションを適用する。上述のように、この時点での格納済アクションは『第２ＯｐｅｎＦｌｏｗスイッチ１１−２に向けて出力』であるから、新しいカプセル化パケット５０（第２カプセル化パケット５０−２）は第２ＯｐｅｎＦｌｏｗスイッチ１１−２につながる出力ポート２１を通じて第２ＯｐｅｎＦｌｏｗスイッチ１１−２に送信される。
【００７４】
図１２は、第２カプセル化パケット５０−２に対する処理を例示するブロック図である。別のＯｐｅｎＦｌｏｗスイッチ１１（第２ＯｐｅｎＦｌｏｗスイッチ１１−２）は、前段のＯｐｅｎＦｌｏｗスイッチ１１（第１ＯｐｅｎＦｌｏｗスイッチ１１−１）からパケット４０（第２カプセル化パケット５０−２）を受信する。受信後にそのパケット４０がカプセル化パケット５０であるか判定し、上述のステップＳ３０１からステップＳ３０４までの処理を実行する
第２ＯｐｅｎＦｌｏｗスイッチ１１−２は、第３カプセル化パケット５０−３を生成する。この時点での格納済アクションは『第３ＯｐｅｎＦｌｏｗスイッチ１１−３に向けて出力』であるから、新しいカプセル化パケット５０（第３カプセル化パケット５０−３）は、第３ＯｐｅｎＦｌｏｗスイッチ１１−３に送信される。
【００７５】
図１３は、第３カプセル化パケット５０−３に対する処理を例示するブロック図である。第３ＯｐｅｎＦｌｏｗスイッチ１１−３は、第２ＯｐｅｎＦｌｏｗスイッチ１１−２からカプセル化パケット５０（第３カプセル化パケット５０−３）を受信する。この時点でのアクションは『第３端末１２−３に向けて出力』となる。第３ＯｐｅｎＦｌｏｗスイッチ１１−３が受信したカプセル化パケット５０（第３カプセル化パケット５０−３）に含まれる登録フローエントリ５２の個数は、１である。従って、受信したカプセル化パケット５０の中から通常パケット４１を取り出し、その通常パケット４１に格納済アクションを適用する。上述のように、この時点でのアクションは『第３端末１２−３に向けて出力』であるから、その通常パケット４１は、第３端末１２−３に送信される。
【００７６】
以上のようにフローの最初の通常パケット４１は中継され、最終的に宛先の第３端末１２−３に届けられる。最終的には、第１ＯｐｅｎＦｌｏｗスイッチ１１−１〜第３ＯｐｅｎＦｌｏｗスイッチ１１−３のフローテーブル２３の内容は、図５の（ｂ）のようになる。
【００７７】
同じフローに属する後続の通常パケット４１は、ＯｐｅｎＦｌｏｗコントローラ１０を経由することなく、第１ＯｐｅｎＦｌｏｗスイッチ１１−１、第２ＯｐｅｎＦｌｏｗスイッチ１１−２、第３ＯｐｅｎＦｌｏｗスイッチ１１−３を順に通って宛先に転送される。このように動作する理由は、これらのＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３には通常パケット４１に合致するマッチ条件３１がこの時点では登録されており、図８のフローチャートにおいてステップＳ１０３の判定結果が真となってステップＳ１０５に分岐し、合致したマッチ条件３１に対応するアクション３２が通常パケット４１に適用されるからである。
【００７８】
なお、図８のフローチャートにおいて、ステップＳ１０２とステップＳ１０３の実行は順不同である。上述の動作説明とは逆に、ステップＳ１０２よりもステップＳ１０３を先に実行しても差し支えない。
【００７９】
［第２実施形態］
以下に、図面を参照して本発明の第２実施形態について説明を行う。以下に述べる第２実施形態のＯｐｅｎＦｌｏｗ通信システムは、受信したパケット４０が、通常パケット４１であるかカプセル化パケット５０であるかの判定をＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３を参照して実行する。
【００８０】
図１４は、第２実施形態のＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３に保持されるフローエントリ３０の構成を例示するブロック図である。第２実施形態では、図１４のフローエントリ３０をあらかじめ全てのＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３に登録しておく。
【００８１】
図１５は、第２実施形態のＯｐｅｎＦｌｏｗ通信システムの動作を例示するフローチャートである。第２実施形態の動作は、第１実施形態の動作と異なり、通常パケット４１とカプセル化パケット５０とを判別するステップを、フローテーブル２３のフローエントリ３０に基づいて実行している。以下では、ＯｐｅｎＦｌｏｗコントローラ１０から供給されるカプセル化パケット５０が、ＯｐｅｎＦｌｏｗスイッチ１１に入力された場合に対応して、第２実施形態におけるＯｐｅｎＦｌｏｗスイッチ１１の動作を、図１５のフローチャートを用いて説明する。
【００８２】
ステップＳ１０１において、ＯｐｅｎＦｌｏｗスイッチ１１は、入力ポート２０を介して供給されたパケット４０（この場合におけるカプセル化パケット５０）を受信する。ステップＳ１０３において、その通常パケット４１に合致するマッチ条件３１がフローテーブル２３の中に存在するかを調べる。前述のように、全てのＯｐｅｎＦｌｏｗスイッチ１１のフローテーブル２３には、図１４のフローエントリ３０が登録されている。また、受信したパケット４０は、カプセル化パケット５０である。したがって、フローテーブル２３の検索は成功し、処理はステップＳ１０７に進む。
【００８３】
ステップＳ１０７において、合致したマッチ条件３１に対応するアクション３２を読み出す。そのアクション３２は『カプセル化パケット５０として処理』になる。ゆえに、ステップＳ１０７の判定結果はＹｅｓ（真）となり、そのパケット４０はカプセル化パケット５０として処理される。以降の処理は、第１の実施例のものと同様である。
【００８４】
以上、本願発明の実施の形態を具体的に説明した。本願発明は上述の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。当業者は上記実施例の様々な変形を容易に実施することができる。したがって、本発明は上記実施例に限定されることはなく、請求項やその均等物によって参酌される最も広い範囲で解釈される。また、この出願は、２００９年３月９日に出願された日本出願特願２００９−０５５７３９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
0005408243.tif 000002
【図２】
0005408243.tif 000003
【図３】
0005408243.tif 000004
【図４】
0005408243.tif 000005
【図５】
0005408243.tif 000006
【図６】
0005408243.tif 000007
【図７】
0005408243.tif 000008
【図８】
0005408243.tif 000009
【図９】
0005408243.tif 000010
【図１０】
0005408243.tif 000011
【図１１】
0005408243.tif 000012
【図１２】
0005408243.tif 000013
【図１３】
0005408243.tif 000014
【図１４】
0005408243.tif 000015
【図１５】
0005408243.tif 000016