(57)【要約】  １つの通信データに対して、複数のスイッチがフローエントリの検索を行えるようにして、検索対象のフローエントリ数の上限を増やす。具体的には、制御サーバは、スイッチグループに属する複数のスイッチの各々の内部のフローテーブルに、フローエントリを分散して登録する。スイッチグループに属する各スイッチは、通信データを取得した際に、フローテーブルに登録されたフローエントリのいずれかに通信データが適合するか確認する。いずれかのフローエントリに通信データが適合した場合、そのフローエントリに定義された転送方式に従って、通信データを転送する。いずれのフローエントリにも通信データが適合しない場合、スイッチ間リンクを介して、同じスイッチグループに属する「フローテーブル未検索のスイッチ」に通信データを転送する。フローテーブル未検索のスイッチが存在しない場合、制御サーバに対して、通信データの転送方式の問い合わせを行う。
2012049925.tif 000002
【特許請求の範囲】
【請求項１】
入力リンクより通信データを入力した際に、内部のフローテーブルに登録されたフローエントリのいずれかに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送し、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、スイッチ間リンクを介して接続されたスイッチに前記通信データを転送する第１のスイッチと、
前記第１のスイッチと同じスイッチグループに属し、前記第１のスイッチからスイッチ間リンクを介して前記通信データを受信した際に、内部のフローテーブルに登録されたフローエントリのいずれかに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送する第２のスイッチと、
前記第１のスイッチのフローテーブルにフローエントリを登録し、前記第１のスイッチのフローテーブルにフローエントリすることができなくなった場合、前記第２のスイッチのフローテーブルに、前記第１のスイッチのフローテーブルに登録すべきフローエントリを登録する制御サーバと
を含む
スイッチシステム。
【請求項２】
請求項１に記載のスイッチシステムであって、
前記第２のスイッチは、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、前記制御サーバに対して、前記通信データの転送方式の問い合わせを行い、
前記制御サーバは、前記通信データの転送方式の問い合わせに応じて、前記第１のスイッチ及び前記第２のスイッチのいずれかのフローテーブルに、前記通信データの転送方式を定義したフローエントリを登録する
スイッチシステム。
【請求項３】
請求項１に記載のスイッチシステムであって、
前記第１のスイッチ及び前記第２のスイッチと同じスイッチグループに属し、前記第２のスイッチからスイッチ間リンクを介して前記通信データを受信した際に、内部のフローテーブルに登録されたフローエントリのいずれかに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送する第３のスイッチ
を更に含み、
前記第２のスイッチは、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、スイッチ間リンクを介して前記第３のスイッチに前記通信データを転送し、
前記第３のスイッチは、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、前記制御サーバに対して、前記通信データの転送方式の問い合わせを行い、
前記制御サーバは、前記通信データの転送方式の問い合わせに応じて、前記第１のスイッチ、前記第２のスイッチ、及び前記第３のスイッチのいずれかのフローテーブルに、前記通信データの転送方式を定義したフローエントリを登録する
スイッチシステム。
【請求項４】
スイッチグループを形成するスイッチであって、
所定のマッチ条件に適合する通信データの転送方式を定義したフローエントリが登録されるフローテーブルと、
通信データを取得した際に、前記フローテーブルに登録されたフローエントリのいずれかに前記通信データが適合するか確認し、いずれかのフローエントリに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送し、いずれのフローエントリにも前記通信データが適合しない場合、スイッチ間リンクを介して、前記スイッチグループに属するフローテーブル未検索のスイッチに前記通信データを転送する転送処理部と、
前記スイッチグループに属するフローテーブル未検索のスイッチが存在しない場合、制御サーバに対して、前記通信データの転送方式の問い合わせを行い、前記制御サーバからの制御により、前記フローテーブルに、前記通信データの転送方式を定義したフローエントリを登録する制御メッセージ処理部と
を具備する
スイッチ。
【請求項５】
制御サーバにおいて、第１のスイッチのフローテーブルにフローエントリを登録することと、
前記制御サーバにおいて、前記第１のスイッチのフローテーブルにフローエントリすることができなくなった場合、前記第１のスイッチと同じスイッチグループに属する第２のスイッチのフローテーブルに、前記第１のスイッチのフローテーブルに登録すべきフローエントリを登録することと、
前記第１のスイッチにおいて、入力リンクより通信データを入力した際に、内部のフローテーブルに登録されたフローエントリのいずれかに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送することと、
前記第１のスイッチにおいて、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、スイッチ間リンクを介して、前記第２のスイッチに前記通信データを転送することと、
前記第２のスイッチにおいて、前記第１のスイッチからスイッチ間リンクを介して前記通信データを受信した際に、内部のフローテーブルに登録されたフローエントリのいずれかに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送することと
を含む
データ転送方法。
【請求項６】
請求項５に記載のデータ転送方法であって、
前記第２のスイッチにおいて、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、前記制御サーバに対して、前記通信データの転送方式の問い合わせを行うことと、
前記制御サーバにおいて、前記通信データの転送方式の問い合わせに応じて、前記第１のスイッチ及び前記第２のスイッチのいずれかのフローテーブルに、前記通信データの転送方式を定義したフローエントリを登録するうことと
を更に含む
データ転送方法。
【請求項７】
請求項５に記載のデータ転送方法であって、
前記第２のスイッチにおいて、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、スイッチ間リンクを介して、前記第１のスイッチ及び前記第２のスイッチと同じスイッチグループに属する第３のスイッチに、前記通信データを転送することと、
前記第３のスイッチにおいて、前記第２のスイッチからスイッチ間リンクを介して前記通信データを受信した際に、内部のフローテーブルに登録されたフローエントリのいずれかに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送することと、
前記第３のスイッチにおいて、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、前記制御サーバに対して、前記通信データの転送方式の問い合わせを行うことと、
前記制御サーバにおいて、前記通信データの転送方式の問い合わせに応じて、前記第１のスイッチ、前記第２のスイッチ、及び前記第３のスイッチのいずれかのフローテーブルに、前記通信データの転送方式を定義したフローエントリを登録することと
を更に含む
データ転送方法。
【請求項８】
スイッチグループを形成するスイッチにより実行されるプログラムを格納した記憶媒体であって、
制御サーバからの制御により、スイッチの内部のフローテーブルに、所定のマッチ条件に適合する通信データの転送方式を定義したフローエントリを登録するステップと、
通信データを取得した際に、前記フローテーブルに登録されたフローエントリのいずれかに前記通信データが適合するか確認するステップと、
いずれかのフローエントリに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送するステップと、
いずれのフローエントリにも前記通信データが適合しない場合、スイッチ間リンクを介して、前記スイッチグループに属するフローテーブル未検索のスイッチに前記通信データを転送するステップと、
前記スイッチグループに属するフローテーブル未検索のスイッチが存在しない場合、前記制御サーバに対して、前記通信データの転送方式の問い合わせを行うステップと
をスイッチに実行させるためのプログラムを格納した
記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スイッチシステムに関し、特にオープンフロー（ＯｐｅｎＦｌｏｗ）技術を用いたスイッチシステムに関する。
【背景技術】
【０００２】
ネットワーク通信の経路制御方式の１つとして、通信機器の制御プロトコルであるオープンフロー（ＯｐｅｎＦｌｏｗ）技術を使用した経路制御方式が研究されている。オープンフロー技術の詳細については、非特許文献１、２に記載されている。オープンフロー技術による経路制御が行われるネットワークを、オープンフローネットワークと呼ぶ。【０００３】
オープンフローネットワークでは、ＯＦＣ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）等のコントローラが、ＯＦＳ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）等のスイッチのフローテーブル（Ｆｌｏｗ  Ｔａｂｌｅ）を操作することによりスイッチの挙動を制御する。コントローラとスイッチの間は、コントローラがオープンフロープロトコルに準拠した制御メッセージを用いてスイッチを制御するためのセキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）により接続されている。【０００４】
オープンフローネットワークにおけるスイッチとは、オープンフローネットワークを形成し、コントローラの制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入力側エッジスイッチでのパケット（通信データ）の受信から出力側エッジスイッチでの送信までのパケットの一連の流れをフロー（Ｆｌｏｗ）と呼ぶ。【０００５】
フローテーブルとは、所定のマッチ条件（ルール）に適合するパケット群（パケット系列）に対して行うべき所定の処理（アクション）を定義したフローエントリ（Ｆｌｏｗ  ｅｎｔｒｙ）が登録されたテーブルである。【０００６】
フローエントリのルールは、パケットの各プロトコル階層のヘッダ（ｈｅａｄｅｒ）領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組合せにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローエントリのルールとして使用可能である。【０００７】
フローエントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった動作を示す。例えば、スイッチは、フローエントリのアクションに出力ポートの識別情報（出力ポート番号等）が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチは、フローエントリのアクションにヘッダ情報が示されていれば、当該ヘッダ情報に基づいてパケットのヘッダを書き換える。【０００８】
オープンフローネットワークにおけるスイッチは、フローテーブルに登録されたフローエントリのルールに適合するパケット群に対して、当該フローエントリのアクションを実行する。【０００９】
しかし、スイッチに内蔵されるフローテーブル用のメモリ容量に限りがあることから、スイッチが登録できるフローエントリ数には上限があり、上限に達した場合は新規にフローエントリが登録できず、通信データが制御サーバからの制御に従った方式で転送されなくなるという課題がある。【００１０】
また、フローエントリの種類を細かく定義すると、登録すべきフローエントリの数が増大するため、フローテーブル用のメモリ容量が足りなくなる可能性がある。従って、フローエントリ数の上限とは別に、システム設計に使用可能なフロー種類の上限を生じさせていた。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】“Ｔｈｅ  ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｃｏｎｓｏｒｔｉｕｍ”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／＞
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０．０  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１）  Ｄｅｃｅｍｂｅｒ  ３１，  ２００９”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．０．０．ｐｄｆ＞
【発明の概要】
【００１２】
本発明の目的は、制御サーバからスイッチにフローエントリをフローテーブルを登録する際に、スイッチからフローテーブルに空きがないことを示すエラーメッセージが戻ってきた場合、制御サーバがスイッチグループ内の別のスイッチに該当フローエントリを登録することができるスイッチシステムを提供することである。
【００１３】
本発明の他の目的は、通信データをスイッチが転送する際、フローテーブル内の全てのフローエントリを検索した後、転送方法が決定しなかった場合は、その通信データをスイッチグループ内の別のスイッチへ転送し、そのスイッチで再びフローテーブル内のフローエントリの検索を続けることができるスイッチシステムを提供することである。
【００１４】
本発明のスイッチシステムは、第１のスイッチと、第２のスイッチと、制御サーバとを含む。第１のスイッチは、入力リンクより通信データを入力した際に、内部のフローテーブルに登録されたフローエントリのいずれかに通信データが適合した場合、当該フローエントリに定義された転送方式に従って、通信データを転送する。また、第１のスイッチは、内部のフローテーブルに登録されたフローエントリのいずれにも通信データが適合しない場合、スイッチ間リンクを介して接続されたスイッチ（ここでは、第２のスイッチ）に通信データを転送する。第２のスイッチは、第１のスイッチと同じスイッチグループに属し、第１のスイッチからスイッチ間リンクを介して通信データを受信した際に、内部のフローテーブルに登録されたフローエントリのいずれかに通信データが適合した場合、当該フローエントリに定義された転送方式に従って、通信データを転送する。制御サーバは、第１のスイッチのフローテーブルにフローエントリを登録し、第１のスイッチのフローテーブルにフローエントリすることができなくなった場合、第２のスイッチのフローテーブルに、第１のスイッチのフローテーブルに登録すべきフローエントリを登録する。
【００１５】
本発明に係るスイッチは、スイッチグループを形成するスイッチであって、フローテーブルと、転送処理部と、制御メッセージ処理部とを備える。フローテーブルには、所定のマッチ条件に適合する通信データの転送方式を定義したフローエントリが登録される。転送処理部は、通信データを取得した際に、フローテーブルに登録されたフローエントリのいずれかに通信データが適合するか確認し、いずれかのフローエントリに通信データが適合した場合、当該フローエントリに定義された転送方式に従って、通信データを転送し、いずれのフローエントリにも通信データが適合しない場合、スイッチ間リンクを介して、スイッチグループに属するフローテーブル未検索のスイッチに通信データを転送する。制御メッセージ処理部は、スイッチグループに属するフローテーブル未検索のスイッチが存在しない場合、制御サーバに対して、通信データの転送方式の問い合わせを行い、制御サーバからの制御により、フローテーブルに、通信データの転送方式を定義したフローエントリを登録する。
【００１６】
本発明のデータ転送方法では、制御サーバにおいて、第１のスイッチのフローテーブルにフローエントリを登録する。また、制御サーバにおいて、第１のスイッチのフローテーブルにフローエントリすることができなくなった場合、第１のスイッチと同じスイッチグループに属する第２のスイッチのフローテーブルに、第１のスイッチのフローテーブルに登録すべきフローエントリを登録する。また、第１のスイッチにおいて、入力リンクより通信データを入力した際に、内部のフローテーブルに登録されたフローエントリのいずれかに通信データが適合した場合、当該フローエントリに定義された転送方式に従って、通信データを転送する。また、第１のスイッチにおいて、内部のフローテーブルに登録されたフローエントリのいずれにも通信データが適合しない場合、スイッチ間リンクを介して、第２のスイッチに通信データを転送する。また、第２のスイッチにおいて、第１のスイッチからスイッチ間リンクを介して通信データを受信した際に、内部のフローテーブルに登録されたフローエントリのいずれかに通信データが適合した場合、当該フローエントリに定義された転送方式に従って、通信データを転送する。
【００１７】
本発明のプログラムは、スイッチグループを形成するスイッチにより実行されるプログラムであって、制御サーバからの制御により、スイッチの内部のフローテーブルに、所定のマッチ条件に適合する通信データの転送方式を定義したフローエントリを登録するステップと、通信データを取得した際に、フローテーブルに登録されたフローエントリのいずれかに通信データが適合するか確認するステップと、いずれかのフローエントリに通信データが適合した場合、当該フローエントリに定義された転送方式に従って、通信データを転送するステップと、いずれのフローエントリにも通信データが適合しない場合、スイッチ間リンクを介して、スイッチグループに属するフローテーブル未検索のスイッチに通信データを転送するステップと、スイッチグループに属するフローテーブル未検索のスイッチが存在しない場合、制御サーバに対して、通信データの転送方式の問い合わせを行うステップとをスイッチに実行させるためのプログラムである。なお、本発明のプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００１８】
これにより、１つの通信データに対して、複数のスイッチでフローエントリの検索を行うことができるようになり、検索をかけるフローエントリ数の上限を増やすことが可能となる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１実施形態におけるスイッチシステムの構成例を示す図である。
【図２】既存のオープンフロー技術におけるスイッチシステムの動作を示すフローチャートである。
【図３Ａ】本発明の第１実施形態におけるスイッチシステムの動作を示すフローチャートである。
【図３Ｂ】本発明の第１実施形態におけるスイッチシステムの動作を示すフローチャートである。
【図４】本発明の第２実施形態におけるスイッチシステムの構成例を示す図である。
【図５Ａ】本発明の第２実施形態におけるスイッチシステムの動作を示すフローチャートである。
【図５Ｂ】本発明の第２実施形態におけるスイッチシステムの動作を示すフローチャートである。
【発明を実施するための形態】
【００２０】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００２１】
［スイッチシステムの構成］
図１に示すように、本発明の第１実施形態におけるスイッチシステムでは、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ：ｎはスイッチの台数）と、制御サーバ２０を含む。
【００２２】
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の各々は、自身が保持するフローテーブル内のフローエントリの情報に従って、通信データを転送する。
【００２３】
各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、オープンフロー技術に従い、同一（共通）の制御サーバ２０による経路制御を受けており、スイッチグループを形成する。
【００２４】
ここでは、各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、同一（共通）の制御サーバ２０による経路制御を受け、１つのスイッチグループを形成するものとしている。しかし、実際には、所定の条件を設定して、更にスイッチグループを細分化しても良い。
【００２５】
図１には、本発明の第１実施形態におけるスイッチシステムの最小構成の例として、スイッチ１０−１とスイッチ１０−２が示されており、この２台によってスイッチグループが形成されている。
【００２６】
また、各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、制御リンク１００（１００−ｉ、ｉ＝１〜ｎ）と、スイッチ間リンク２００（２００−ｉ、ｉ＝１〜ｍ：ｍは任意）と、入力リンク３００（３００−ｉ、ｉ＝１〜ｎ）と、出力リンク４００（４００−ｉ、ｉ＝１〜ｎ）とに接続されている。すなわち、各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、各リンクに接続するための端子（ポート）を備える。
【００２７】
制御リンク１００は、スイッチ１０と制御サーバ２０とを接続する通信回線である。
【００２８】
スイッチ間リンク２００は、同じスイッチグループに属するスイッチ１０同士を接続する通信回線である。
【００２９】
入力リンク３００は、スイッチ１０に通信データを入力するための通信回線である。
【００３０】
出力リンク４００は、スイッチ１０から通信データを出力するための通信回線である。
【００３１】
制御リンク１００、入力リンク３００、及び出力リンク４００は、スイッチ１０毎に存在している。スイッチ間リンク２００は、スイッチ１０とスイッチ間リンクにより直接接続しているスイッチの数だけ存在している。
【００３２】
制御サーバ２０は、各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）に対して、通信データのマッチ条件（ルール）と所定の処理（アクション）とを定義したフローエントリの登録要求を送信する。フローエントリの登録の内容には、フローエントリの新規登録、変更、削除を含むものとする。制御サーバ２０は、オープンフロー技術において、コントローラーとも呼ばれる。
【００３３】
各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、制御メッセージ処理部１１（１１−ｉ、ｉ＝１〜ｎ）と、フローテーブル１２（１２−ｉ、ｉ＝１〜ｎ）と、転送処理部１３（１３−ｉ、ｉ＝１〜ｎ）を備える。
【００３４】
ここでは、スイッチ１０−１は、制御メッセージ処理部１１−１と、フローテーブル１２−１を備える。また、スイッチ１０−２は、制御メッセージ処理部１１−２と、フローテーブル１２−２を備える。
【００３５】
制御メッセージ処理部１１は、制御サーバ２０からフローエントリの登録要求を受信すると、フローテーブル１２に当該フローエントリを登録する。
【００３６】
制御サーバ２０と制御メッセージ処理部１１とは、制御リンク１００を介して接続されている。
【００３７】
ここでは、制御サーバ２０とスイッチ１０−１の内部の制御メッセージ処理部１１−１とは、制御リンク１００−１を介して接続されている。また、制御サーバ２０とスイッチ１０−２の内部の制御メッセージ処理部１１−２とは、制御リンク１００−２を介して接続されている。
【００３８】
各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、互いにスイッチ間リンク２００により接続されている。
【００３９】
ここでは、スイッチ１０−１とスイッチ１０−２とは、スイッチ間リンク２００−１により接続されている。例えば、転送処理部１３−１と転送処理部１３−２とが、スイッチ間リンク２００−１により接続されている。
【００４０】
フローテーブル１２は、所定のマッチ条件（ルール）に適合する通信データに対して行うべき所定の処理（アクション）を定義したフローエントリが登録されたテーブルである。ここでは、フローエントリに、所定の処理（アクション）として「通信データの転送方式」が定義されているものとする。転送方式の例として、転送先（次段のノード）に接続された出力リンクの指定等が考えられる。
【００４１】
フローテーブル１２用のメモリ容量は、それぞれ最大Ｎ個のフローエントリを登録できる容量があるものとする。なお、実際には、各フローテーブル１２用のメモリ容量は、少なくともＮ個のフローエントリを登録できる容量があれば良い。
【００４２】
転送処理部１３は、入力リンク３００から通信データを入力し、当該通信データについて、フローテーブル１２を検索し、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）した場合、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００から出力する。
【００４３】
ここでは、スイッチ１０−１の内部の転送処理部１３−１は、入力リンク３００−１から通信データを入力し、当該通信データについて、フローテーブル１２−１を検索し、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）した場合、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００−１から出力する。
【００４４】
［ハードウェアの例示］
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の例として、オープンフロースイッチを想定している。オープンフロースイッチの例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）、マルチレイヤスイッチ（ｍｕｌｔｉ−ｌａｙｅｒ  ｓｗｉｔｃｈ）等が考えられる。マルチレイヤスイッチは、サポートするＯＳＩ参照モデルの層毎に、更に細かく分類されている。主な種別としては、ネットワーク層（第３層）のデータを読むレイヤ３スイッチ、トランスポート層（第４層）のデータを読むレイヤ４スイッチ、アプリケーション層（第７層）のデータを読むレイヤ７スイッチ（アプリケーションスイッチ）がある。なお、オープンフローネットワークでは、一般的なルータやスイッチングハブ等の中継装置をオープンフロースイッチとして使用することもできる。また、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、物理マシン上に構築された仮想スイッチでも良い。また、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の代替例として、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、ロードバランサ（ｌｏａｄ  ｂａｌａｎｃｅｒ：負荷分散装置）、帯域制御装置（ｐａｃｋｅｔ  ｓｈａｐｅｒ）、セキュリティ監視制御装置（ＳＣＡＤＡ：Ｓｕｐｅｒｖｉｓｏｒｙ  Ｃｏｎｔｒｏｌ  Ａｎｄ  Ｄａｔａ  Ａｃｑｕｉｓｉｔｉｏｎ）、ゲートキーパー（ｇａｔｅｋｅｅｐｅｒ）、基地局（ｂａｓｅ  ｓｔａｔｉｏｎ）、アクセスポイント（ＡＰ：Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、通信衛星（ＣＳ：Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ）、或いは、複数の通信ポートを有する計算機等も考えられる。
【００４５】
制御サーバ２０の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、制御サーバ２０は、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。
【００４６】
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の各々、及び制御サーバ２０を接続するネットワークの例として、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を想定している。他の例として、インターネット、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等も考えられる。
【００４７】
図示しないが、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の各々、及び制御サーバ２０は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、通信用インターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）とによって実現される。
【００４８】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラー、或いは、専用の機能を有する半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））等が考えられる。
【００４９】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【００５０】
上記の通信用インターフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００５１】
但し、実際には、これらの例に限定されない。
【００５２】
［既存のオープンフロー技術におけるスイッチシステムの動作］
既存のオープンフロー技術におけるスイッチシステムでは、スイッチ１０−１とスイッチ１０−２とは、スイッチ間リンク２００−１により接続されておらず、互いに連携していないことが多い。すなわち、スイッチ１０−１とスイッチ１０−２とは、完全に独立して稼働している。
【００５３】
制御サーバ２０は、スイッチ１０−１に対して制御リンク１００−１及び制御メッセージ処理部１１−１を介してフローエントリを登録していく。
【００５４】
登録エントリ数がＮ個に達した際、スイッチ１０−１の内部の制御メッセージ処理部１１−１は、これ以上エントリ登録できない旨を示す「エントリ不可」のメッセージを、制御リンク１００−１を介して制御サーバ２０へ伝える。
【００５５】
制御サーバ２０は、スイッチ１０−１からの「エントリ不可」のメッセージを受けると、Ｎ＋１番目以降のフローエントリＮ＋１を、スイッチ１０−１へ登録できなくなる。
【００５６】
スイッチ１０−１の内部の転送処理部１３−１は、入力リンク３００−１より入力された通信データについて、フローテーブル１２−１内のフローエントリを１番目のフローエントリ１からＮ番目のフローエントリＮまで検索し、いずれにも該当しない場合には、当該通信データを転送できない状態となる。
【００５７】
［既存のオープンフロー技術におけるスイッチシステムの動作の詳細］
図２を参照して、既存のオープンフロー技術におけるスイッチシステムの動作の詳細について説明する。
【００５８】
（１）ステップＳ１
スイッチ１０−１の内部の転送処理部１３−１は、入力リンク３００−１より入力された通信データを取得する。
【００５９】
（２）ステップＳ２
転送処理部１３−１は、通信データについて、フローテーブル１２−１内のフローエントリを１番目のフローエントリ１からＮ番目のフローエントリＮまで検索し、いずれかのフローエントリに一致するか確認する。例えば、転送処理部１３−１は、通信データが、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）した場合、フローエントリに一致したと判断する。
【００６０】
（３）ステップＳ３
転送処理部１３−１は、通信データが、フローテーブル１２−１内のいずれかのフローエントリに一致した場合、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００−１から出力する。
【００６１】
（４）ステップＳ４
反対に、転送処理部１３−１は、通信データが、フローテーブル１２−１内のいずれのフローエントリにも一致しない場合、フローテーブル１２−１へのフローエントリ登録が不可であるか確認する。例えば、転送処理部１３−１は、フローテーブル１２−１用のメモリ容量を確認し、容量に空き（余裕）がなければ、フローエントリ登録が不可であると判断する。
【００６２】
（５）ステップＳ５
転送処理部１３−１は、フローテーブル１２−１へのフローエントリ登録が不可でなければ、当該通信データに対する転送方式を制御サーバ２０に問い合わせる。その理由は、通信データが、フローテーブル１２−１内のいずれのフローエントリにも一致しない場合、当該通信データが、初めて受信した種類のパケットであるためにフローエントリが未登録の「最初のパケット（ｆｉｒｓｔ  ｐａｃｋｅｔ）」である可能性が高いためである。
【００６３】
（６）ステップＳ６
制御サーバ２０は、スイッチ１０−１からの問い合わせに対して、当該通信データに対する転送方式があるか確認する。
【００６４】
（７）ステップＳ７
制御サーバ２０は、当該通信データに対する転送方式がある場合、当該通信データのマッチ条件と転送方式とを定義したフローエントリの登録要求を送信する。スイッチ１０−１の内部の制御メッセージ処理部１１−１は、制御サーバ２０からフローエントリの登録要求を受信すると、フローテーブル１２−１に当該フローエントリを登録する。これにより、転送処理部１３−１は、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００−１から出力する。
【００６５】
（８）ステップＳ８
転送処理部１３−１は、フローテーブル１２−１へのフローエントリ登録が不可の場合や、制御サーバ２０に問い合わせた結果、当該通信データに対する転送方式がない場合、当該通信データに対して何もしない、或いはドロップ（廃棄）する。すなわち、転送処理部１３−１は、当該通信データを転送できない。
【００６６】
［本発明の第１実施形態スイッチシステムの動作］
本発明の第１実施形態スイッチシステムでは、スイッチ１０−１とスイッチ１０−２とは、スイッチ間リンク２００−１により接続されており、互いに連携している。
【００６７】
制御サーバ２０は、スイッチ１０−１に対して、制御リンク１００−１及び制御メッセージ処理部１１−１を介してフローエントリを登録していく。
【００６８】
登録エントリ数がＮ個に達した際、スイッチ１０−１の内部の制御メッセージ処理部１１−１は、これ以上エントリ登録できない旨を示す「エントリ不可」のメッセージを、制御リンク１００−１を介して制御サーバ２０へ伝える。
【００６９】
制御サーバ２０は、スイッチ１０−１からの「エントリ不可」のメッセージを受けると、Ｎ＋１番目以降のフローエントリＮ＋１を、スイッチ１０−１と同じスイッチグループに属するスイッチ１０−２に対して制御リンク１００−２を介して登録していく。
【００７０】
その後、スイッチ１０−１の内部の転送処理部１３−１は、入力リンク３００−１より入力された通信データについて、フローテーブル３０内のフローエントリを１番目のフローエントリ１からＮ番目のフローエントリＮまで検索し、いずれにも該当しない場合には、当該通信データを、スイッチ間リンク２００−１を経由してスイッチ１０−２へ転送する。
【００７１】
このとき、転送処理部１３−１は、当該通信データについて制御サーバ２０に問い合わせ、制御サーバ２０からの指示を受けて、当該通信データを、スイッチ間リンク２００−１を経由してスイッチ１０−２へ転送するようにしても良い。
【００７２】
或いは、転送処理部１３−１は、「通信データがいずれにも該当しない場合には、当該通信データを、スイッチ間リンク２００−１を経由してスイッチ１０−２へ転送する旨の転送方式」を定義したスイッチ間転送用エントリを、事前にフローテーブル１２−１に登録しておくようにしても良い。なお、このスイッチ間転送用エントリについては、制御サーバ２０が、スイッチ１０−１の起動時等に、自動的に制御リンク１００−１及び制御メッセージ処理部１１−１を介してフローテーブル１２−１に登録するようにしても良い。
【００７３】
スイッチ１０−２は、通信データについて、フローテーブル１２−２に登録されているフローエントリＮ＋１から検索を継続し、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）した場合は、そのフローエントリに定義された所定の処理（アクション）の内容に従って、通信データの転送を行う。
【００７４】
［本実施形態におけるスイッチシステムの動作の詳細］
図３Ａ、図３Ｂを参照して、本発明の第１実施形態におけるスイッチシステムの動作の詳細について説明する。
【００７５】
（１）ステップＳ１０１
スイッチ１０−１の内部の転送処理部１３−１は、入力リンク３００−１より入力された通信データを取得する。
【００７６】
（２）ステップＳ１０２
転送処理部１３−１は、通信データについて、フローテーブル１２−１内のフローエントリを１番目のフローエントリ１からＮ番目のフローエントリＮまで検索し、いずれかのフローエントリに一致するか確認する。例えば、転送処理部１３−１は、通信データが、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）した場合、フローエントリに一致したと判断する。
【００７７】
（３）ステップＳ１０３
転送処理部１３−１は、通信データが、フローテーブル１２−１内のいずれかのフローエントリに一致した場合、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００−１から出力する。
【００７８】
（４）ステップＳ１０４
反対に、転送処理部１３−１は、通信データが、フローテーブル１２−１内のいずれのフローエントリにも一致しない場合、スイッチ間リンク２００−１を介して、当該通信データをスイッチ１０−２に転送する。すなわち、転送処理部１３−１は、制御サーバ２０の代わりに、又は制御サーバ２０よりも優先的に、当該通信データを、同一スイッチグループに属するスイッチ１０−２に転送するようにする。なお、実際には、転送処理部１３−１は、当該通信データを保持したまま、スイッチ１０−２に対して、当該通信データに一致するフローエントリを問い合わせるようにしても良い。
【００７９】
（５）ステップＳ１０５
スイッチ１０−２の内部の転送処理部１３−２は、スイッチ１０−１から転送された通信データについて、フローテーブル１２−２内のフローエントリをＮ＋１番目のフローエントリＮ＋１から２Ｎ番目のフローエントリ２Ｎまで検索し、いずれかのフローエントリに一致するか確認する。例えば、転送処理部１３−２は、通信データが、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）した場合、フローエントリに一致したと判断する。
【００８０】
（６）ステップＳ１０６
転送処理部１３−２は、通信データが、フローテーブル１２−２内のいずれかのフローエントリに一致した場合、当該フローエントリに定義された転送方式を参照し、当該通信データを転送元のスイッチ１０−１から出力する必要があるか確認する。すなわち、転送処理部１３−２は、当該フローエントリに定義された転送方式において、転送元のスイッチ１０−１から出力する旨が定義されているか確認する。例えば、スイッチ１０−１の配下のノードに転送する場合や、送信元アドレスをスイッチ１０−１のアドレスにする必要がある場合等が考えられる。
【００８１】
（７）ステップＳ１０７
転送処理部１３−２は、通信データを転送元のスイッチ１０−１から出力する必要がある場合、当該フローエントリに定義された転送方式に従って、スイッチ間リンク２００−１を介して、当該通信データを転送元のスイッチ１０−１に転送する。スイッチ１０−１の内部の転送処理部１３−１は、当該通信データを出力リンク４００−１から出力する。なお、実際には、転送処理部１３−１は、当該通信データを保持したまま、スイッチ１０−２から、当該通信データに一致するフローエントリに関する応答を受信し、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００−１から出力するようにしても良い。
【００８２】
（８）ステップＳ１０８
反対に、転送処理部１３−２は、通信データを転送元のスイッチ１０−１から出力する必要がない場合、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００−２から出力する。
【００８３】
（９）ステップＳ１０９
また、転送処理部１３−２は、通信データが、フローテーブル１２−２内のいずれのフローエントリにも一致しない場合、フローテーブル１２−２へのフローエントリ登録が不可であるか確認する。例えば、転送処理部１３−２は、フローテーブル１２−２用のメモリ容量を確認し、容量に空き（余裕）がなければ、フローエントリ登録が不可であると判断する。或いは、転送処理部１３−２は、制御サーバ２０への「エントリ不可」のメッセージの送信記録（ログ）の有無により、フローテーブル１２−２へのフローエントリ登録が不可であるか確認するようにしても良い。このとき、転送処理部１３−２は、スイッチ１０−１に対しても、フローテーブル１２−１へのフローエントリ登録が不可であるか問い合わせて、フローテーブル１２−１へのフローエントリ登録が不可であるか確認するようにしても良い。
【００８４】
（１０）ステップＳ１１０
転送処理部１３−２は、フローテーブル１２−２へのフローエントリ登録が不可でなければ、当該通信データに対する転送方式を制御サーバ２０に問い合わせる。その理由は、通信データが、フローテーブル１２−２内のいずれのフローエントリにも一致しない場合、当該通信データが、初めて受信した種類のパケットであるためにフローエントリが未登録の「最初のパケット（ｆｉｒｓｔ  ｐａｃｋｅｔ）」である可能性が高いためである。
【００８５】
（１１）ステップＳ１１１
制御サーバ２０は、スイッチ１０−２からの問い合わせに対して、当該通信データに対する転送方式があるか確認する。
【００８６】
（１２）ステップＳ１１２
制御サーバ２０は、当該通信データに対する転送方式がある場合、該当するスイッチ１０（ここでは、スイッチ１０−１又はスイッチ１０−２のいずれか）に対して、当該通信データのマッチ条件と転送方式とを定義したフローエントリの登録要求を送信する。なお、制御サーバ２０は、スイッチ１０−１から「エントリ不可」のメッセージを受信していれば、当然にスイッチ１０−２に対して、当該通信データのマッチ条件と転送方式とを定義したフローエントリの登録要求を送信することになる。該当するスイッチ１０の内部の制御メッセージ処理部１１は、制御サーバ２０からフローエントリの登録要求を受信すると、フローテーブル１２に当該フローエントリを登録する。これにより、該当するスイッチ１０の内部の転送処理部１３は、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００から出力する。
【００８７】
（１３）ステップＳ１１３
転送処理部１３−２は、フローテーブル１２−２へのフローエントリ登録が不可の場合や、制御サーバ２０に問い合わせた結果、当該通信データに対する転送方式がない場合、当該通信データに対して何もしない、或いはドロップ（廃棄）する。
【００８８】
［本実施形態の効果］
既存のオープンフロー技術におけるスイッチシステムと比較して、以下のような効果が得られる。
【００８９】
本実施形態では、スイッチに内蔵されるフローテーブル用のメモリ容量を超える分を他のスイッチのフローテーブル用メモリを使用することとなり、１台のスイッチのフローテーブルには収まりきらないエントリ数の登録が必要となった場合でも複数のスイッチを用いてフローエントリの登録が可能となる。
【００９０】
なお、スイッチグループを形成するスイッチは２台でなく、３台以上を組合せて同等の方法でフローテーブルの登録を行うことも可能である。
【００９１】
＜第２実施形態＞
以下に、本発明の第２実施形態について説明する。
【００９２】
本実施形態では、３台以上のスイッチを組み合せてスイッチグループを形成する。
【００９３】
［スイッチシステムの構成］
図４に示すように、本発明の第２実施形態におけるスイッチシステムでは、スイッチ１０（１０−ｉ、ｉ＝１〜ｎ：ｎはスイッチの数）と、制御サーバ２０を含む。
【００９４】
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）及び制御サーバ２０については、基本的に第１実施形態と同様である。
【００９５】
スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の各々は、自身が保持するフローテーブル内のフローエントリの情報に従って、通信データを転送する。
【００９６】
各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、オープンフロー技術に従い、同一（共通）の制御サーバ２０による経路制御を受けており、スイッチグループを形成する。
【００９７】
また、各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、制御リンク１００（１００−ｉ、ｉ＝１〜ｎ）と、スイッチ間リンク２００（２００−ｉ、ｉ＝１〜ｍ：ｍはｎ−１以上）と、入力リンク３００（３００−ｉ、ｉ＝１〜ｎ）と、出力リンク４００（４００−ｉ、ｉ＝１〜ｎ）とに接続されている。すなわち、各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、各リンクに接続するための端子（ポート）を備える。
【００９８】
制御リンク１００は、スイッチ１０と制御サーバ２０とを接続する通信回線である。
【００９９】
スイッチ間リンク２００は、同じスイッチグループに属するスイッチ１０同士を接続する通信回線である。
【０１００】
入力リンク３００は、スイッチ１０に通信データを入力するための通信回線である。
【０１０１】
出力リンク４００は、スイッチ１０から通信データを出力するための通信回線である。
【０１０２】
制御リンク１００、入力リンク３００、及び出力リンク４００は、スイッチ１０毎に存在している。スイッチ間リンク２００は、スイッチ１０とスイッチ間リンクにより直接接続しているスイッチの数だけ存在している。
【０１０３】
制御サーバ２０は、各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）に対して、通信データのマッチ条件（ルール）と所定の処理（アクション）とを定義したフローエントリの登録要求を送信する。フローエントリの登録の内容には、フローエントリの新規登録、変更、削除を含むものとする。制御サーバ２０は、オープンフロー技術において、コントローラーとも呼ばれる。
【０１０４】
各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、制御メッセージ処理部１１（１１−ｉ、ｉ＝１〜ｎ）と、フローテーブル１２（１２−ｉ、ｉ＝１〜ｎ）と、転送処理部１３（１３−ｉ、ｉ＝１〜ｎ）を備える。
【０１０５】
制御メッセージ処理部１１は、制御サーバ２０からフローエントリの登録要求を受信すると、フローテーブル１２に当該フローエントリを登録する。
【０１０６】
制御サーバ２０と制御メッセージ処理部１１とは、制御リンク１００を介して接続されている。
【０１０７】
フローテーブル１２は、所定のマッチ条件（ルール）に適合する通信データに対して行うべき所定の処理（アクション）を定義したフローエントリが登録されたテーブルである。
【０１０８】
転送処理部１３は、入力リンク３００から通信データを入力し、当該通信データについて、フローテーブル１２を検索し、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）した場合、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００から出力する。
【０１０９】
各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、互いにスイッチ間リンク２００により接続されている。例えば、各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）の内部の転送処理部１３（１３−ｉ、ｉ＝１〜ｎ）が、互いにスイッチ間リンク２００により接続されている。
【０１１０】
各スイッチ１０（１０−ｉ、ｉ＝１〜ｎ）は、スイッチ間リンク２００を介して、複数のスイッチ１０と接続されていても良い。例えば、スイッチ１０−１は、スイッチ１０−２及びスイッチ１０−３の両方と、それぞれ個別のスイッチ間リンク２００により接続されていても良い。
【０１１１】
ここでは、スイッチ１０−１は、実際に通信データを入力した最初のスイッチである。スイッチ１０−２以降のスイッチは、スイッチ１０−１と同様の機能を有するスイッチである。便宜上、スイッチ１０−２以降のスイッチを、代替スイッチと呼ぶ。
【０１１２】
［本実施形態におけるスイッチシステムの動作の詳細］
図５Ａ、図５Ｂを参照して、本発明の第２実施形態におけるスイッチシステムの動作の詳細について説明する。
【０１１３】
（１）ステップＳ２０１
スイッチ１０−１の内部の転送処理部１３−１は、入力リンク３００−１より入力された通信データを取得する。
【０１１４】
（２）ステップＳ２０２
転送処理部１３−１は、通信データについて、フローテーブル１２−１内のフローエントリを１番目のフローエントリ１からＮ番目のフローエントリＮまで検索し、いずれかのフローエントリに一致するか確認する。例えば、転送処理部１３−１は、通信データが、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）した場合、フローエントリに一致したと判断する。
【０１１５】
（３）ステップＳ２０３
転送処理部１３−１は、通信データが、フローテーブル１２−１内のいずれかのフローエントリに一致した場合、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００−１から出力する。
【０１１６】
（４）ステップＳ２０４
反対に、転送処理部１３−１は、通信データが、フローテーブル１２−１内のいずれのフローエントリにも一致しない場合、スイッチ間リンク２００により接続されている代替のスイッチ１０−ｘ（２≦ｘ≦ｎ）が存在するか確認する。
【０１１７】
（５）ステップＳ２０５
転送処理部１３−１は、スイッチ１０−ｘが存在する場合、スイッチ間リンク２００を介して、当該通信データをスイッチ１０−ｘに転送する。すなわち、転送処理部１３−１は、制御サーバ２０の代わりに、又は制御サーバ２０よりも優先的に、当該通信データを、同一スイッチグループに属するスイッチ１０−ｘに転送するようにする。このとき、転送処理部１３−１は、スイッチ１０−１の内部のフローテーブル１２−１が検索済みであることを示すために、スイッチ１０−１の識別情報を、当該通信データと共に送信するようにしても良い。なお、実際には、転送処理部１３−１は、当該通信データを保持したまま、スイッチ１０−ｘに対して、当該通信データに一致するフローエントリを問い合わせるようにしても良い。
【０１１８】
（６）ステップＳ２０６
スイッチ１０−ｘの内部の転送処理部１３−ｘは、スイッチ１０−１から転送された通信データについて、フローテーブル１２−ｘ内のフローエントリを（ｘ−１）Ｎ＋１番目のフローエントリ（ｘ−１）Ｎ＋１からｘＮ番目のフローエントリｘＮまで検索し、いずれかのフローエントリに一致するか確認する。例えば、転送処理部１３−ｘは、通信データが、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）した場合、フローエントリに一致したと判断する。反対に、転送処理部１３−ｘは、通信データが、フローテーブル１２−ｘ内のいずれのフローエントリにも一致しない場合、スイッチ間リンク２００により接続されている代替スイッチ１０−（ｘ＋１）が存在するか確認する。すなわち、転送処理部１３−ｘは、通信データが、いずれかのフローエントリのマッチ条件に適合（Ｈｉｔ）するか、同一スイッチグループに属する新規のスイッチ１０がなくなるまで（最後のスイッチ１０−ｎに到達するまで）、同様の処理を繰り返す。
【０１１９】
（７）ステップＳ２０７
転送処理部１３−ｘは、通信データが、フローテーブル１２−ｘ内のいずれかのフローエントリに一致した場合、当該フローエントリに定義された転送方式を参照し、当該通信データを転送元のスイッチ１０−ｙ（１≦ｙ＜ｘ）から出力する必要があるか確認する。転送元のスイッチ１０−ｙは、スイッチ１０−１でも良い。すなわち、転送処理部１３−ｘは、当該フローエントリに定義された転送方式において、転送元のスイッチ１０−ｙから出力する旨が定義されているか確認する。例えば、スイッチ１０−ｙの配下のノードに転送する場合や、送信元アドレスをスイッチ１０−ｙのアドレスにする必要がある場合等が考えられる。
【０１２０】
（８）ステップＳ２０８
転送処理部１３−ｘは、通信データを転送元のスイッチ１０−ｙから出力する必要がある場合、当該フローエントリに定義された転送方式に従って、スイッチ間リンク２００を介して、当該通信データを転送元のスイッチ１０−ｙに転送する。スイッチ１０−ｙの内部の転送処理部１３−ｙは、当該通信データを出力リンク４００−ｙから出力する。なお、実際には、転送処理部１３−ｙは、当該通信データを保持したまま、スイッチ１０−ｘから、当該通信データに一致するフローエントリに関する応答を受信し、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００−ｙから出力するようにしても良い。
【０１２１】
（９）ステップＳ２０９
反対に、転送処理部１３−ｘは、通信データを転送元のスイッチ１０−ｙから出力する必要がない場合、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００−ｘから出力する。
【０１２２】
（１０）ステップＳ２１０
通信データが、いずれのフローエントリのマッチ条件にも適合（Ｈｉｔ）せず、同一スイッチグループに属する最後のスイッチ１０−ｎに到達した場合、スイッチ１０−ｎの内部の転送処理部１３−ｎは、フローテーブル１２−ｎへのフローエントリ登録が不可であるか確認する。例えば、転送処理部１３−ｎは、フローテーブル１２−ｎ用のメモリ容量を確認し、容量に空き（余裕）がなければ、フローエントリ登録が不可であると判断する。或いは、転送処理部１３−ｎは、制御サーバ２０への「エントリ不可」のメッセージの送信記録（ログ）の有無により、フローテーブル１２−ｎへのフローエントリ登録が不可であるか確認するようにしても良い。このとき、転送処理部１３−ｎは、スイッチ１０−ｎ以外の全てのスイッチ１０に対しても、そのスイッチ１０の内部のフローテーブル１２へのフローエントリ登録が不可であるか問い合わせて、そのフローテーブル１２へのフローエントリ登録が不可であるか確認するようにしても良い。
【０１２３】
（１１）ステップＳ２１１
転送処理部１３−ｎは、フローテーブル１２−ｎへのフローエントリ登録が不可でなければ、当該通信データに対する転送方式を制御サーバ２０に問い合わせる。その理由は、通信データが、フローテーブル１２−ｎ内のいずれのフローエントリにも一致しない場合、当該通信データが、初めて受信した種類のパケットであるためにフローエントリが未登録の「最初のパケット（ｆｉｒｓｔ  ｐａｃｋｅｔ）」である可能性が高いためである。
【０１２４】
（１２）ステップＳ２１２
制御サーバ２０は、スイッチ１０−ｎからの問い合わせに対して、当該通信データに対する転送方式があるか確認する。
【０１２５】
（１３）ステップＳ２１３
制御サーバ２０は、当該通信データに対する転送方式がある場合、該当するスイッチ１０（ここでは、スイッチ１０−１〜スイッチ１０−ｎのいずれか）に対して、当該通信データのマッチ条件と転送方式とを定義したフローエントリの登録要求を送信する。なお、制御サーバ２０は、スイッチ１０−ｎ以外の全てのスイッチ１０から「エントリ不可」のメッセージを受信していれば、当然にスイッチ１０−ｎに対して、当該通信データのマッチ条件と転送方式とを定義したフローエントリの登録要求を送信することになる。該当するスイッチ１０の内部の制御メッセージ処理部１１は、制御サーバ２０からフローエントリの登録要求を受信すると、フローテーブル１２に当該フローエントリを登録する。これにより、該当するスイッチ１０の内部の転送処理部１３は、当該フローエントリに定義された転送方式に従って、当該通信データを出力リンク４００から出力する。
【０１２６】
（１４）ステップＳ２１４
転送処理部１３−ｎは、フローテーブル１２−ｎへのフローエントリ登録が不可の場合や、制御サーバ２０に問い合わせた結果、当該通信データに対する転送方式がない場合、当該通信データに対して何もしない、或いはドロップ（廃棄）する。
【０１２７】
＜本発明の特徴＞
以上のように、本発明は、スイッチシステムにおける通信データの転送装置、及び転送方式に関する。
【０１２８】
本発明では、制御サーバからスイッチ内のフローテーブルにフローエントリを登録する際に、スイッチからフローテーブルに空きがないことを示すエラーメッセージが戻ってきた場合、制御サーバはスイッチグループ内の別のスイッチに該当フローエントリを登録する。
【０１２９】
すなわち、本発明は、制御サーバ及びスイッチによって構成されるスイッチシステムにおいて、制御サーバからスイッチの内部のフローテーブルに通信データの転送方式を定義するフローエントリを登録する際、そのスイッチのフローテーブルにフローエントリを登録するための空き容量がないことが判明した場合、制御サーバが他のスイッチのフローテーブルへフローエントリを登録することを特徴とする。
【０１３０】
また、本発明では、複数のスイッチを１つのスイッチグループとして組合せ、１台のスイッチのフローテーブルに登録しきれないフローエントリ数が存在する場合、スイッチグループ内の他のスイッチの内部のフローテーブルにフローエントリを登録しておき、通信データの転送方式があるスイッチでフローエントリを検索した結果で決定できなかった場合はスイッチグループ内の他のスイッチに通信データを転送することで、フローエントリの検索を継続する運用が可能となる。
【０１３１】
すなわち、本発明では、通信データをスイッチが転送する際、そのスイッチのフローテーブル内の全てのフローエントリを検索した後、転送方式が決定しなかった場合は、その通信データをスイッチグループ内の別のスイッチへ転送し、そのスイッチで再びフローテーブル内のフローエントリの検索を続ける。
【０１３２】
これにより、１つの通信データに対して、複数のスイッチでフローエントリの検索を行えるため、１つの通信データに対して検索をかけるフローエントリ数の上限を増やすことが可能となる。
【０１３３】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【０１３４】
（付記１）
入力リンクより通信データを入力した際に、前記フローテーブルに登録されたフローエントリのいずれかに前記通信データが適合するか確認し、いずれかのフローエントリに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送し、いずれのフローエントリにも前記通信データが適合しない場合、スイッチ間リンクを介して接続されたスイッチに前記通信データを転送する第１のスイッチと、
前記第１のスイッチと同じスイッチグループに属し、前記第１のスイッチからスイッチ間リンクを介して前記通信データを受信した際に、前記フローテーブルに登録されたフローエントリのいずれかに前記通信データが適合するか確認し、いずれかのフローエントリに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送する第２のスイッチと、
前記第１のスイッチのフローテーブルにフローエントリを登録し、前記第１のスイッチのフローテーブルにフローエントリすることができなくなった場合、前記第２のスイッチのフローテーブルに、前記第１のスイッチのフローテーブルに登録すべきフローエントリを登録する制御サーバと
を含む
スイッチシステム。
【０１３５】
（付記２）
付記１に記載のスイッチシステムであって、
前記第２のスイッチは、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、前記制御サーバに対して、前記通信データの転送方式の問い合わせを行い、
前記制御サーバは、前記通信データの転送方式の問い合わせに応じて、前記スイッチグループに属するいずれかのスイッチのフローテーブルに、前記通信データの転送方式を定義したフローエントリを登録する
スイッチシステム。
【０１３６】
（付記３）
付記１に記載のスイッチシステムであって、
前記第１のスイッチ及び前記第２のスイッチと同じスイッチグループに属し、前記第２のスイッチからスイッチ間リンクを介して前記通信データを受信した際に、内部のフローテーブルに登録されたフローエントリのいずれかに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送する第３のスイッチ
を更に含み、
前記第２のスイッチは、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、スイッチ間リンクを介して前記第３のスイッチに前記通信データを転送し、
前記第３のスイッチは、内部のフローテーブルに登録されたフローエントリのいずれにも前記通信データが適合しない場合、前記制御サーバに対して、前記通信データの転送方式の問い合わせを行い、
前記制御サーバは、前記通信データの転送方式の問い合わせに応じて、前記スイッチグループに属するいずれかのスイッチのフローテーブルに、前記通信データの転送方式を定義したフローエントリを登録する
スイッチシステム。
【０１３７】
（付記４）
付記１乃至３のいずれかに記載のスイッチシステムであって、
前記スイッチグループに属するスイッチは、
所定のマッチ条件に適合する通信データの転送方式を定義したフローエントリが登録されるフローテーブルと、
入力リンクより通信データを入力した際に、前記フローテーブルに登録されたフローエントリのいずれかに前記通信データが適合するか確認し、いずれかのフローエントリに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送し、いずれのフローエントリにも前記通信データが適合しない場合、スイッチ間リンクを介して、前記スイッチグループに属するフローテーブル未検索のスイッチに前記通信データを転送する転送処理部と、
前記スイッチグループに属するフローテーブル未検索のスイッチが存在しない場合、前記制御サーバに対して、前記通信データの転送方式の問い合わせを行い、前記制御サーバからの制御により、前記フローテーブルに、前記通信データの転送方式を定義したフローエントリを登録する制御メッセージ処理部と
を具備する
スイッチシステム。
【０１３８】
なお、上記において、第２のスイッチ及び第３のスイッチは、それぞれ複数でも良い。
【０１３９】
（付記５）
スイッチグループを形成し、入力リンクより通信データを入力した際に、前記フローテーブルに登録されたフローエントリのいずれかに前記通信データが適合するか確認し、いずれかのフローエントリに前記通信データが適合した場合、当該フローエントリに定義された転送方式に従って、前記通信データを転送し、いずれのフローエントリにも前記通信データが適合しない場合、スイッチ間リンクを介して接続された代替スイッチがあれば、前記代替スイッチに前記通信データを転送し、スイッチ間リンクを介して接続された代替スイッチがなければ、前記制御サーバに対して、前記通信データの転送方式の問い合わせを行う複数のスイッチと、
前記複数のスイッチのいずれかのフローテーブルにフローエントリを登録し、当該スイッチのフローテーブルにフローエントリすることができなくなった場合、前記スイッチグループを形成する他のスイッチのフローテーブルに、前記スイッチのフローテーブルに登録すべきフローエントリを登録する制御サーバと
を含む
スイッチシステム。
【０１４０】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０１４１】
なお、本出願は、日本出願番号２０１０−２３２５９７に基づく優先権を主張するものであり、日本出願番号２０１０−２３２５９７における開示内容は引用により本出願に組み込まれる。
【図１】
2012049925.tif 000003
【図２】
2012049925.tif 000004
【図３Ａ】
2012049925.tif 000005
【図３Ｂ】
2012049925.tif 000006
【図４】
2012049925.tif 000007
【図５Ａ】
2012049925.tif 000008
【図５Ｂ】
2012049925.tif 000009
【国際調査報告】
2012049925.tif 000010
2012049925.tif 000011
2012049925.tif 000012