(57)【特許請求の範囲】
【請求項１】
所定のルーティングプロトコルにより隣接するスイッチと情報交換を行って転送テーブルを生成し、該転送テーブルを参照してパケットを転送する第１のスイッチと、
所定のコントローラからの指示に従いパケットを転送する第２のスイッチと、
前記第２のスイッチに指示を与えるコントローラと、
前記コントローラに、前記第２のスイッチに対する指定した経路でのパケット転送指示と、前記第１のスイッチを仮想化したスイッチで構成された仮想ネットワークの生成とを指示し、前記仮想ネットワークにマッピングされた第２のスイッチと前記第１のスイッチ間で前記所定のルーティングプロトコルによる情報交換を行わせることで、予め計算した経路に沿ったパケット転送を行わせる統合コントローラと、
を含む通信システム。
【請求項２】
さらに、前記第１のスイッチの情報を収集するネットワーク管理装置を含み、
前記ネットワーク管理装置及び前記コントローラから、前記第１、第２のスイッチによって構成されるネットワークのトポロジ情報を収集し、前記第１、第２のスイッチによって構成されるネットワークをまたがる経路を計算する請求項１の通信システム。
【請求項３】
前記統合コントローラは、前記コントローラに、前記第１のスイッチを仮想化したスイッチで構成され、かつ、前記第２のスイッチ間のリンクコストを反映させた仮想ネットワークを生成させる請求項１又は２の通信システム。
【請求項４】
前記第２のスイッチはオープンフロースイッチであり、
前記統合コントローラは、前記コントローラに、前記計算した経路上の前記第２のスイッチへのフローエントリの設定を行わせることで、前記計算した経路に沿ったパケット転送を行わせる請求項１から３いずれか一の通信システム。
【請求項５】
前記第１のスイッチはＩＳ−ＩＳ（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ  ｔｏ  Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ）を用いて経路を決定するスイッチであり、
前記統合コントローラは、前記コントローラを介して、前記第２のスイッチから前記第１のスイッチに宛ててＩＳ−ＩＳパケットを出力させることにより、前記第１、第２のスイッチ間で、ＩＳ−ＩＳを用いて情報交換を行わせる請求項１から４いずれか一の通信システム。
【請求項６】
前記第１のスイッチはＴＲＩＬＬスイッチである請求項５の通信システム。
【請求項７】
所定のルーティングプロトコルにより隣接するスイッチと情報交換を行って転送テーブルを生成し、該転送テーブルを参照してパケットを転送する第１のスイッチと、所定のコントローラからの指示に従いパケットを転送する第２のスイッチと、を含むネットワークの前記第２のスイッチに指示を与えるコントローラに対し、前記第２のスイッチに対する指定した経路でのパケット転送指示と、前記第１のスイッチを仮想化したスイッチで構成された仮想ネットワークの生成とを指示し、前記仮想ネットワークにマッピングされた第２のスイッチと前記第１のスイッチ間で前記所定のルーティングプロトコルによる情報交換を行わせることで、予め計算した経路に沿ったパケット転送を行わせる統合コントローラ。
【請求項８】
前記第１のスイッチの情報を収集するネットワーク管理装置及び前記コントローラから、前記第１、第２のスイッチによって構成されるネットワークのトポロジ情報を収集し、前記第１、第２のスイッチによって構成されるネットワークをまたがる経路を計算する請求項７の統合コントローラ。
【請求項９】
前記コントローラに、前記第１のスイッチを仮想化したスイッチで構成され、かつ、前記第２のスイッチ間のリンクコストを反映させた仮想ネットワークを生成させる請求項７又は８の統合コントローラ。
【請求項１０】
前記第２のスイッチはオープンフロースイッチであり、
前記コントローラに、前記計算した経路上の前記第２のスイッチへのフローエントリの設定を行わせることで、前記計算した経路に沿ったパケット転送を行わせる請求項７から９いずれか一の統合コントローラ。
【請求項１１】
前記第１のスイッチはＩＳ−ＩＳ（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ  ｔｏ  Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ）を用いて経路を決定するスイッチであり、
前記コントローラを介して、前記第２のスイッチから前記第１のスイッチに宛ててＩＳ−ＩＳパケットを出力させることにより、前記第１、第２のスイッチ間で、ＩＳ−ＩＳを用いて情報交換を行わせる請求項７から１０いずれか一の統合コントローラ。
【請求項１２】
所定のルーティングプロトコルにより隣接するスイッチと情報交換を行って転送テーブルを生成し、該転送テーブルを参照してパケットを転送する第１のスイッチと、
所定のコントローラからの指示に従いパケットを転送する第２のスイッチと、を含むネットワークの前記第２のスイッチに指示を与えるコントローラに対し、前記第２のスイッチに対する指定した経路でのパケット転送指示と、前記第１のスイッチを仮想化したスイッチで構成された仮想ネットワークの生成とを指示するステップと、
前記仮想ネットワークにマッピングされた第２のスイッチと前記第１のスイッチ間で前記所定のルーティングプロトコルによる情報交換を行わせるステップとを含み、
前記第１、第２のスイッチに、予め計算した経路に沿ったパケット転送を行わせるパケット転送方法。
【請求項１３】
所定のルーティングプロトコルにより隣接するスイッチと情報交換を行って転送テーブルを生成し、該転送テーブルを参照してパケットを転送する第１のスイッチと、
所定のコントローラからの指示に従いパケットを転送する第２のスイッチと、を含むネットワークの前記第２のスイッチに指示を与えるコントローラに対して指示を与えるコンピュータに、
前記第２のスイッチに対する指定した経路でのパケット転送指示と、前記第１のスイッチを仮想化したスイッチで構成された仮想ネットワークの生成とを指示する処理と、
前記仮想ネットワークにマッピングされた第２のスイッチと前記第１のスイッチ間で前記所定のルーティングプロトコルによる情報交換を行わせる処理と、を実行させ、
前記第１、第２のスイッチに、予め計算した経路に沿ったパケット転送を行わせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１３−０４５２６３号（２０１３年  ３月  ７日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、通信システム、統合コントローラ、パケット転送方法及びプログラムに関し、特に、集中制御型のネットワークと自律制御型のネットワークとをそれぞれ制御する通信システム、統合コントローラ、パケット転送方法及びプログラムに関する。
【背景技術】
【０００２】
近年ＯｐｅｎＦｌｏｗという技術が提案されている（非特許文献１、２参照）。ＯｐｅｎＦｌｏｗでは、パケット転送と経路制御の機能が分離されており、ネットワーク機器がパケット転送を担当し、ネットワーク機器の外部に置かれたコントローラが経路制御を担当する。これにより、外部からの制御が容易になり、柔軟性に富んだネットワークを構築することが可能になる。【０００３】
図１４にＯｐｅｎＦｌｏｗ  １．０．０の基本的な構成例を示す。図１４では、ネットワーク機器の例としてスイッチを示す。ＯｐｅｎＦｌｏｗは、ＯｐｅｎＦｌｏｗプロトコルをサポートしたネットワーク機器と、外部に置かれたコントローラで構成される。ネットワーク機器とコントローラは、セキュアチャンネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）で接続されており、ＯｐｅｎＦｌｏｗプロトコルで通信を行う。ＯｐｅｎＦｌｏｗでは、ネットワーク機器のパケット転送と経路制御は分離されており、ネットワーク機器はパケット転送を行い、コントローラはネットワーク機器の経路制御を行う。具体的には、コントローラはスイッチに、マッチ条件（図１４のＨｅａｄｅｒ  Ｆｉｅｌｄ）、統計情報（図１４のＣｏｕｎｔｅｒ）、処理内容（図１４のＡｃｔｉｏｎ）を対応付けたフローエントリを設定し、スイッチは、設定されたフローエントリの中から、受信パケットに適合するマッチ条件を持つエントリを検索し、該当するエントリが見つかった場合、そのエントリの処理内容（図１４のＡｃｔｉｏｎ）を受信パケットに適用する。【０００４】
一方、柔軟性に富んだネットワークを構築する方法として、ＴＲＩＬＬという技術が提案されている（非特許文献３）。ＴＲＩＬＬでは、ネットワーク機器がパケット転送と経路制御の機能を持つ。ＴＲＩＬＬでは、ネットワーク機器が受信したイーサネット（登録商標）フレームを別のイーサネットフレームでカプセル化し、新たな宛先ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）と送信元ＭＡＣアドレス及びＶＬＡＮタグを付加する。さらに、ＴＲＩＬＬでは、ＩｎｇｌｅｓｓスイッチやＥｇｌｅｓｓスイッチ等の情報を格納する独自のＴＲＩＬＬヘッダも加える。【０００５】
以下、図１５を参照して、ＴＲＩＬＬによる処理の流れを示す。
（１）ＴＲＩＬＬスイッチＡは、ノードＡからパケットを受信する。ＴＲＩＬＬスイッチＡは、フォワーディングテーブルを検索し、元のイーサネットヘッダの情報を基に入力ＲＢｒｉｄｇｅ（Ｒｏｕｔｉｎｇ  Ｂｒｉｄｇｅ）と出力ＲＢｒｉｄｇｅのＮｉｃｋｎａｍｅを調べる。ＴＲＩＬＬスイッチＡは、前記ＲＢｒｉｄｇｅのＮｉｃｋｎａｍｅを設定したＴＲＩＬＬヘッダを加え、新しいイーサネットヘッダでカプセル化を行いネクストホップであるＴＲＩＬＬスイッチＢへ送信する。
（２）ＴＲＩＬＬスイッチＢは、フォワーディングテーブルを検索し、イーサネットヘッダの宛先ＭＡＣアドレスと送信元ＭＡＣアドレスを書き変えて、ネクストホップであるＴＲＩＬＬスイッチＤへ送信する。
（３）ＴＲＩＬＬスイッチＤは、フォワーディングテーブルを検索し、宛先であるノードＢが自身の配下に接続されていることが分かるとＴＲＩＬＬヘッダと外側のイーサネットヘッダを外してからノードＢへ送信する。【０００６】
ＴＲＩＬＬでは、フォワーディングテーブルの生成のためにＩＳ−ＩＳ（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ  ｔｏ  Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ）を用いている。ＴＲＩＬＬスイッチはお互いにＩＳ−ＩＳパケットを送受信することでフォワーディングテーブルを生成する。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、［ｏｎｌｉｎｅ］、［平成２５（２０１３）年２月２３日検索］、インターネット〈URL:http://www.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”  Ｖｅｒｓｉｏｎ  １．０．０  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１）、［ｏｎｌｉｎｅ］、［平成２５（２０１３）年２月２３日検索］、インターネット〈URL:http://www.openflow.org/documents/openflow-spec-v1.0.0.pdf〉
【非特許文献３】“Ｔｒａｎｓｐａｒｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  ｏｆ  Ｌｏｔｓ  ｏｆ  Ｌｉｎｋｓ  （ＴＲＩＬＬ）”、［ｏｎｌｉｎｅ］、［平成２５（２０１３）年２月２３日検索］、インターネット〈URL:http://datatracker.ietf.org/wg/ＴＲＩＬＬ/〉
【発明の概要】
【発明が解決しようとする課題】
【０００８】
以下の分析は、本発明によって与えられたものである。非特許文献１、２のＯｐｅｎＦｌｏｗコントローラは、ＯｐｅｎＦｌｏｗスイッチのリンクコストを基に経路計算を行い、最小コストの経路上のＯｐｅｎＦｌｏｗスイッチに前記経路に沿った転送を実現するフローエントリ（制御情報）を設定する。その際に、ＯｐｅｎＦｌｏｗコントローラは、自身の制御下に無く、ＯｐｅｎＦｌｏｗに非対応なスイッチのトポロジやリンクコストについては、もとより収集できないため、経路計算の際にも使用しない。【０００９】
一方、ＴＲＩＬＬ（Ｔｒａｎｓｐａｒｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｏｆ  Ｌｏｔｓ  ｏｆ  Ｌｉｎｋｓ）スイッチでは、ＴＲＩＬＬスイッチ間でリンクコスト情報を交換し合い、各ＴＲＩＬＬスイッチが自律的に経路計算を行い、パケットの宛先までの最小コストの経路を使用する。【００１０】
ここで、図２のようなＯｐｅｎＦｌｏｗネットワークとＴＲＩＬＬネットワークが隣接し、且つ、複数の隣接点が存在するネットワークにおいて、パケットの宛先までの経路が複数存在する場合を考える。ＯｐｅｎＦｌｏｗコントローラはＴＲＩＬＬネットワーク内のトポロジやリンクコスト情報を取得できないため、ＴＲＩＬＬネットワークの情報を経路制御に使用することが出来ない。また、ＴＲＩＬＬスイッチは、ＯｐｅｎＦｌｏｗスイッチからトポロジやリンクコスト情報を取得することはできないため、ＯｐｅｎＦｌｏｗネットワークの情報を経路計算に使用することができない。【００１１】
ここで、ＯｐｅｎＦｌｏｗコントローラ内にソフトウェアでＴＲＩＬＬスイッチを作り、ＯｐｅｎＦｌｏｗネットワーク全体を一つのＴＲＩＬＬスイッチとして動作させる方法が考えられる。しかし、ＯｐｅｎＦｌｏｗネットワーク全体を一つのＴＲＩＬＬスイッチとして動作させる方法では、最小コストの経路を選択できない場合がある。【００１２】
具体例として図４〜図７を用いて説明する。図４は物理トポロジを示しており、図５と図６は、図４のスイッチ間のリンクコストを表している。図４において、ノードＣからノードＡへの最小コストの経路は、図７に示すように「ノードＣ→ＴＲＩＬＬスイッチ５０−４→ＴＲＩＬＬスイッチ５０−１→ＯｐｅｎＦｌｏｗスイッチ４０−５→ＯｐｅｎＦｌｏｗスイッチ４０−３→ＯｐｅｎＦｌｏｗスイッチ４０−１→ノードＡ」となる。ノードＣからノードＢへの最小コストの経路は、「ノードＣ→ＴＲＩＬＬスイッチ５０−４→ＴＲＩＬＬスイッチ５０−２→ＯｐｅｎＦｌｏｗスイッチ４０−６→ＯｐｅｎＦｌｏｗスイッチ４０−４→ＯｐｅｎＦｌｏｗスイッチ４０−２→ノードＢ」となる。【００１３】
図４において、ＯｐｅｎＦｌｏｗネットワークを一つのＴＲＩＬＬスイッチであると見做すと、ノードＣからノードＢへの最小コストの経路は、「ノードＣ→ＴＲＩＬＬスイッチ５０−４→ＴＲＩＬＬスイッチ５０−１→ＯｐｅｎＦｌｏｗスイッチ４０−５」というようになり、本来の最小コストの経路とは異なる経路となる。【００１４】
本発明は、上記上位装置からの示された経路でパケットを転送するネットワークと自律制御型で経路制御を行うネットワークとを接続した環境における経路制御手段の提供に貢献する通信システム、統合コントローラ、パケット転送方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
第１の視点によれば、所定のルーティングプロトコルにより隣接するスイッチと情報交換を行って転送テーブルを生成し、該転送テーブルを参照してパケットを転送する第１のスイッチと、所定のコントローラからの指示に従いパケットを転送する第２のスイッチと、前記第２のスイッチに指示を与えるコントローラと、前記コントローラに、前記第２のスイッチに対する指定した経路でのパケット転送指示と、前記第１のスイッチを仮想化したスイッチで構成された仮想ネットワークの生成とを指示し、前記仮想ネットワークにマッピングされた第２のスイッチと前記第１のスイッチ間で前記所定のルーティングプロトコルによる情報交換を行わせることで、予め計算した経路に沿ったパケット転送を行わせる統合コントローラと、を含む通信システムが提供される。【００１６】
第２の視点によれば、所定のルーティングプロトコルにより隣接するスイッチと情報交換を行って転送テーブルを生成し、該転送テーブルを参照してパケットを転送する第１のスイッチと、所定のコントローラからの指示に従いパケットを転送する第２のスイッチと、前記第２のスイッチに指示を与えるコントローラと、に接続され、前記第１、第２のスイッチから収集した情報に基づいて、前記コントローラに、前記第２のスイッチに対する指定した経路でのパケット転送指示と、前記第１のスイッチを仮想化したスイッチで構成された仮想ネットワークの生成とを指示し、前記仮想ネットワークにマッピングされた第２のスイッチと前記第１のスイッチ間で前記所定のルーティングプロトコルによる情報交換を行わせることで、予め計算した経路に沿ったパケット転送を行わせる統合コントローラが提供される。【００１７】
第３の視点によれば、所定のルーティングプロトコルにより隣接するスイッチと情報交換を行って転送テーブルを生成し、該転送テーブルを参照してパケットを転送する第１のスイッチと、所定の制御装置からの指示に従いパケットを転送する第２のスイッチと、を含むネットワークの前記第２のスイッチに指示を与えるコントローラに対し、前記第２のスイッチに対する指定した経路でのパケット転送指示と、前記第１のスイッチを仮想化したスイッチで構成された仮想ネットワークの生成とを指示するステップと、前記仮想ネットワークにマッピングされた第２のスイッチと前記第１のスイッチ間で前記所定のルーティングプロトコルによる情報交換を行わせるステップとを含み、前記第１、第２のスイッチに、予め計算した経路に沿ったパケット転送を行わせるパケット転送方法が提供される。本方法は、前記ネットワーク管理装置と前記コントローラとをそれぞれ制御する統合コントローラという、特定の機械に結びつけられている。【００１８】
第４の視点によれば、所定のルーティングプロトコルにより隣接するスイッチと情報交換を行って転送テーブルを生成し、該転送テーブルを参照してパケットを転送する第１のスイッチと、所定の制御装置からの指示に従いパケットを転送する第２のスイッチと、を含むネットワークの前記第２のスイッチに指示を与えるコントローラに対して指示を与えるコンピュータに、前記第２のスイッチに対する指定した経路でのパケット転送指示と、前記第１のスイッチを仮想化したスイッチで構成された仮想ネットワークの生成とを指示する処理と、前記仮想ネットワークにマッピングされた第２のスイッチと前記第１のスイッチ間で前記所定のルーティングプロトコルによる情報交換を行わせる処理と、を実行させ、前記第１、第２のスイッチに、予め計算した経路に沿ったパケット転送を行わせるためのプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１９】
本発明によれば、上位装置から示された経路でパケットを転送するネットワークと自律制御型で経路制御を行うネットワークとを接続した環境における経路制御手段の提供（豊富化）に貢献することが可能となる。
【図面の簡単な説明】
【００２０】
【図１】一実施形態の構成を示す図である。
【図２】第１の実施形態の通信システムの動作概要を説明するための図である。
【図３】第１の実施形態の通信システムの構成を示すブロック図である。
【図４】第１の実施形態の通信システムの動作を説明するためのネットワークトポロジの例である。
【図５】図４のＯｐｅｎＦｌｏｗスイッチ間のリンクコストをまとめた表である。
【図６】図４のＯｐｅｎＦｌｏｗスイッチとＴＲＩＬＬスイッチ間のリンクコストをまとめた表である。
【図７】図４に、図６のリンクコストに基づくノード間の最小コスト経路を重ねて表した図である。
【図８】第１の実施形態の統合コントローラからの指示によって、ＯｐｅｎＦｌｏｗスイッチを仮想ネットワークに置き換えたネットワークトポロジの例である。
【図９】図７の仮想ＴＲＩＬＬスイッチ間のリンクコストをまとめた表である。
【図１０】図４のＯｐｅｎＦｌｏｗスイッチ間のリンクコストをまとめた別の表である。
【図１１】図４に、図１０のリンクコストに基づくノード間の最小コスト経路を重ねて表した図である。
【図１２】第２の実施形態の統合コントローラからの指示によって、ＯｐｅｎＦｌｏｗスイッチを仮想ネットワークに置き換えたネットワークトポロジの例である。
【図１３】図１０の仮想ＴＲＩＬＬスイッチ間のリンクコストをまとめた表である。
【図１４】非特許文献１、２のＯｐｅｎＦｌｏｗを説明するための図である。
【図１５】非特許文献３のＴＲＩＬＬを説明するための図である。
【発明を実施するための形態】
【００２１】
はじめに本願開示の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本願開示を図示の態様に限定することを意図するものではない。
【００２２】
本願開示の一実施形態において、図１に示すように、所定のルーティングプロトコルにより隣接するスイッチと情報交換を行って転送テーブルを生成し、該転送テーブルを参照してパケットを転送する第１のスイッチ５０ａと、所定のコントローラからの指示に従いパケットを転送する第２のスイッチ４０ａと、前記第２のスイッチ４０ａに指示を与えるコントローラ２０ａと、統合コントローラ１０ａと、を含む構成にて実現できる。より具体的には、統合コントローラ１０ａは、前記コントローラ２０ａに対し、前記第２のスイッチ４０ａに対する指定した経路でのパケット転送指示と、前記第１のスイッチ５０ａを仮想化したスイッチで構成された仮想ネットワークの生成とを指示する。そして、前記コントローラ２０ａは、前記仮想ネットワークにマッピングされた第２のスイッチ４０ａと前記第１のスイッチ５０ａ間で前記所定のルーティングプロトコルによる情報交換を行わせることで、予め計算した経路に沿ったパケット転送を行わせる。
【００２３】
以上のようにすることで、第１、第２のネットワークをまたがった任意の経路でパケットを転送させることが可能となる。その理由は、統合コントローラ１０ａからの指示に基づき、コントローラ２０ａが第２のスイッチ４０ａに、指定した経路による転送を指示すると共に、前記第２のスイッチ４０ａを仮想的な第１のスイッチとして動作させ第１のスイッチ５０ａと経路に関する情報交換を行うようにしたことにある。
【００２４】
［第１の実施形態］
続いて、第１の実施形態について図面を参照して詳細に説明する。図２は、第１の実施形態の通信システムの動作概要を説明するための図である。図２を参照すると、ＯｐｅｎＦｌｏｗスイッチが保持するフローテーブルの内容を操作することによりＯｐｅｎＦｌｏｗスイッチを制御するＯｐｅｎＦｌｏｗコントローラ２０とＴＲＩＬＬネットワークの情報を収集するＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）マネージャ３０（ネットワーク管理装置に相当）と、ＯｐｅｎＦｌｏｗコントローラ２０とＳＮＭＰマネージャ３０とを制御する統合コントローラ１０と、ＯｐｅｎＦｌｏｗスイッチが配置されたＯｐｅｎＦｌｏｗネットワークと、ＴＲＩＬＬスイッチが配置されたＴＲＩＬＬネットワークと、を含む構成が示されている。
【００２５】
（１）ＯｐｅｎＦｌｏｗコントローラ２０は、ＯｐｅｎＦｌｏｗスイッチからリンクコスト情報とトポロジ情報とを収集し、データベースに保存する。
【００２６】
（２）ＳＮＭＰマネージャ３０は、ＴＲＩＬＬスイッチからリンクコスト情報とトポロジ情報とを収集し、データベースに保存する。
【００２７】
（３）統合コントローラ１０は、ＯｐｅｎＦｌｏｗコントローラ２０からＯｐｅｎＦｌｏｗネットワークのトポロジ情報とリンクコスト情報を取得し、ＳＮＭＰマネージャ３０からＴＲＩＬＬネットワークのトポロジ情報とリンクコスト情報とサーバ情報を取得し、データベースに保存する。
【００２８】
（４）統合コントローラ１０は、データベースに保存した情報からノードＡ（又はノードＢ）とノードＣ（又はノードＤ）間の最小コストの経路を計算する。
【００２９】
（５）統合コントローラ１０は、最小コストの経路で通信を行うフローを設定するようにＯｐｅｎＦｌｏｗコントローラ２０に対して指示する。ＯｐｅｎＦｌｏｗコントローラ２０は、統合コントローラからの指示に従い、前記最小コストの経路上のＯｐｅｎＦｌｏｗスイッチに対して、前記最小コストの経路に沿ったパケット転送を行わせるフローエントリを設定する。
【００３０】
（６）統合コントローラ１０は、ＯｐｅｎＦｌｏｗコントローラ２０に対して仮想ネットワークの生成を指示する。ＯｐｅｎＦｌｏｗネットワークは統合コントローラの指示に従い、１又は複数のＯｐｅｎＦｌｏｗスイッチをＴＲＩＬＬスイッチに置き換え、かつ、リンクコストに変更が生じないような仮想ネットワークを生成する。
【００３１】
（７）ＯｐｅｎＦｌｏｗコントローラ２０は、ＯｐｅｎＦｌｏｗスイッチに対し仮想ネットワークのリンクコスト情報を送信するよう指示する。ＯｐｅｎＦｌｏｗスイッチは、仮想ネットワークの情報をＴＲＩＬＬスイッチに対して送信する。ＴＲＩＬＬスイッチは、仮想ネットワークをＴＲＩＬＬネットワークと認識し、経路計算を行う。
【００３２】
続いて、図３を参照して、上記した通信システムを構成する各機器の詳細構成について説明する。図３は、第１の実施形態の通信システムの構成を示すブロック図である。図３を参照すると、統合コントローラ１０と、ＯｐｅｎＦｌｏｗコントローラ２０と、ＳＮＭＰマネージャ３０と、ＯｐｅｎＦｌｏｗスイッチ４０と、ＴＲＩＬＬスイッチ５０を接続した構成が示されている。
【００３３】
統合コントローラ１０は、ＯｐｅｎＦｌｏｗコントローラ制御部１１と、ＳＮＭＰマネージャ制御部１２と、経路計算部１３と、スイッチ情報記憶部１４と、を備えている。このような統合コントローラ１０は、サーバマシン、又は、当該サーバマシン上で動作する仮想マシンにより構成できる。統合コントローラ１０と、ＯｐｅｎＦｌｏｗコントローラ２０又はＳＮＭＰマネージャ３０は専用線もしくは通常のネットワークで接続されている。なお、図２、図３の例では、ＯｐｅｎＦｌｏｗコントローラ２０又はＳＮＭＰマネージャ３０はそれぞれ１つとなっているが、統合コントローラ１０は、複数のＯｐｅｎＦｌｏｗコントローラ及び複数のＳＮＭＰマネージャを管理することができる。
【００３４】
ＯｐｅｎＦｌｏｗコントローラ制御部１１は、ネットワークを介してＯｐｅｎＦｌｏｗコントローラ２０を制御する。ＳＮＭＰマネージャ制御部１２は、ネットワークを介してＳＮＭＰマネージャ３０を制御する。経路計算部１３は、図４に示すようなノード間の経路を計算する。スイッチ情報記憶部１４は、ＯｐｅｎＦｌｏｗコントローラ２０とＳＮＭＰマネージャ３０から取得したトポロジやリンクコスト情報を記憶する。
【００３５】
ＯｐｅｎＦｌｏｗコントローラ２０は、ＯｐｅｎＦｌｏｗスイッチ制御部２１と、仮想ネットワーク生成部２２と、スイッチ情報記憶部２３と、を備えている。このようなＯｐｅｎＦｌｏｗコントローラ２０は、サーバマシン又は当該サーバマシン上で動作する仮想マシンにより構成できる。また、ＯｐｅｎＦｌｏｗコントローラ２０が、統合コントローラ１０と同じマシン上で動作することも可能である。また、ＯｐｅｎＦｌｏｗコントローラ２０は、複数のＯｐｅｎＦｌｏｗスイッチを管理することができ、ＯｐｅｎＦｌｏｗスイッチと専用線又は通常のネットワークを利用したセキュアチャンネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）で接続されている。
【００３６】
ＯｐｅｎＦｌｏｗスイッチ制御部２１は、セキュアチャンネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）を介してＯｐｅｎＦｌｏｗスイッチのフローテーブルの内容を書換えることによりＯｐｅｎＦｌｏｗスイッチ４０を制御する。仮想ネットワーク生成部２２は、統合コントローラ１０の指示に従い、ＯｐｅｎＦｌｏｗスイッチ間のリンクコストを反映させた仮想ネットワーク（図８、図１２参照）を生成する。スイッチ情報記憶部２３はＯｐｅｎＦｌｏｗスイッチ４０から取得した情報を記憶する。
【００３７】
ＳＮＭＰマネージャ３０は、ＴＲＩＬＬスイッチ制御部３１と、スイッチ情報記憶部３２と、を備えている。このようなＳＮＭＰマネージャ３０は、サーバマシン又は当該サーバマシン上で動作する仮想マシンにより構成できる。また、ＳＮＭＰマネージャ３０は、統合コントローラ１０と同じマシン上で動作することも可能である。また、ＳＮＭＰマネージャ３０は、ＳＮＭＰを使用して複数のＴＲＩＬＬスイッチを管理することができ、ＴＲＩＬＬスイッチと専用線又は通常のネットワークで接続されている。
【００３８】
ＴＲＩＬＬスイッチ制御部３１は、ネットワークを介してＴＲＩＬＬスイッチ５０を制御する。スイッチ情報記憶部３２は、ＴＲＩＬＬスイッチ５０から取得した情報を記憶する。
【００３９】
ＯｐｅｎＦｌｏｗスイッチ４０は、パケット処理部４１と、カプセル処理部４２とを備えている。
【００４０】
パケット処理部４１は、図示省略するフローテーブルに設定されたフローエントリ（制御情報）を参照して受信パケットをＯｐｅｎＦｌｏｗスイッチ４０の物理ポートやＯｐｅｎＦｌｏｗコントローラ２０へ転送する。カプセル処理部４２は、ＴＲＩＬＬスイッチ側のポートから入出力されるパケットに対して、ＴＲＩＬＬ用ヘッダのカプセル化とカプセル解除を行う。
【００４１】
ＴＲＩＬＬスイッチ５０は、パケット処理部５１と、カプセル処理部５２と、経路計算部５３と、フォワーディングテーブル５４とを備えている。
【００４２】
パケット処理部５１は、ＴＲＩＬＬスイッチ５０の物理ポートやＳＮＭＰマネージャ３０からパケットを受信すると、フォワーディングテーブル５４を参照して、ＴＲＩＬＬスイッチ５０の物理ポートやＳＮＭＰマネージャ３０にパケットを送信する。カプセル処理部５２は、ＴＲＩＬＬ用ヘッダのカプセル化とカプセル解除を行う。経路計算部５３は、ネットワーク内の経路を計算し、経路情報をフォワーディングテーブル５４へ保存する。フォワーディングテーブル５４は、経路情報を記憶する。
【００４３】
なお、図３に示した統合コントローラ１０、ＯｐｅｎＦｌｏｗコントローラ２０及びＳＮＭＰマネージャ３０の各部（処理手段）は、これらの装置を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【００４４】
続いて、本実施形態の動作について図面を参照して詳細に説明する。以下、図４に示すネットワークトポロジを用いて本実施形態の動作を詳細に説明する。また、各スイッチ間のリンクコストとしては、図５、図６の値が得られているものとする。図５は、図４のＯｐｅｎＦｌｏｗスイッチ間のリンクコストをまとめた表であり、図６は、図４のＯｐｅｎＦｌｏｗスイッチとＴＲＩＬＬスイッチ間のリンクコストをまとめた表である。
【００４５】
ＯｐｅｎＦｌｏｗコントローラ２０は、自身が管理しているＯｐｅｎＦｌｏｗスイッチ４０−１〜４０−７からトポロジとリンクコストの情報を取得し、スイッチ情報記憶部２３へ保存する（図２の（１）参照）。
【００４６】
ＳＮＭＰマネージャ３０は、自身が管理しているＴＲＩＬＬスイッチ５０−１〜５０−５からトポロジとリンクコストの情報を取得し、スイッチ情報記憶部３２へ保存する（図２の（２）参照）。
【００４７】
統合コントローラ１０は、ＯｐｅｎＦｌｏｗコントローラ２０とＳＮＭＰマネージャ３０が保持しているトポロジとリンクコストの情報を取得し、スイッチ情報記憶部１４へ保存する（図２の（３）参照）。
【００４８】
経路計算部１３は、スイッチ情報記憶部１４に保存されている情報を基に、エッジスイッチ間の最小コストの経路を計算する（図２の（４）参照）。図５と図６のリンクコストを用いると、ＯｐｅｎＦｌｏｗスイッチ４０−１からＴＲＩＬＬスイッチ５０−４までの最小コストの経路は、「ＯｐｅｎＦｌｏｗスイッチ４０−１→ＯｐｅｎＦｌｏｗスイッチ４０−３→ＯｐｅｎＦｌｏｗスイッチ４０−５→ＴＲＩＬＬスイッチ５０−１→ＴＲＩＬＬスイッチ５０−４」となる。同様に、ＯｐｅｎＦｌｏｗスイッチ４０−１からＴＲＩＬＬスイッチ５０−５までの最小コストの経路は、「ＯｐｅｎＦｌｏｗスイッチ４０−１→ＯｐｅｎＦｌｏｗスイッチ４０−３→ＯｐｅｎＦｌｏｗスイッチ４０−６→ＴＲＩＬＬスイッチ５０−２→ＴＲＩＬＬスイッチ５０−５」となる（図７参照）。
【００４９】
また、ＯｐｅｎＦｌｏｗスイッチ４０−２からＴＲＩＬＬスイッチ５０−４までの最小コストの経路は、「ＯｐｅｎＦｌｏｗスイッチ４０−２→ＯｐｅｎＦｌｏｗスイッチ４０−４→ＯｐｅｎＦｌｏｗスイッチ４０−６→ＴＲＩＬＬスイッチ５０−２→ＴＲＩＬＬスイッチ５０−４」となる。ＯｐｅｎＦｌｏｗスイッチ４０−２からＴＲＩＬＬスイッチ５０−５までの最小コストの経路は、「ＯｐｅｎＦｌｏｗスイッチ４０−２→ＯｐｅｎＦｌｏｗスイッチ４０−４→ＯｐｅｎＦｌｏｗスイッチ４０−７→ＴＲＩＬＬスイッチ５０−３→ＴＲＩＬＬスイッチ５０−５」となる（図７参照）。
【００５０】
ＯｐｅｎＦｌｏｗコントローラ制御部１１は、ＯｐｅｎＦｌｏｗコントローラ２０に対し、ＯｐｅｎＦｌｏｗスイッチ４０に経路計算部１３が算出した経路に沿ったパケット転送を行わせるフローエントリ（制御情報）の設定を指示する（図２の（５））。ＯｐｅｎＦｌｏｗコントローラ２０のＯｐｅｎＦｌｏｗスイッチ制御部２１は、統合コントローラ１０から受信した指示に従い、ＯｐｅｎＦｌｏｗスイッチ４０へフローエントリを設定する。例えば、図７の最短経路上のＯｐｅｎＦｌｏｗスイッチに、該当パケットを矢線に沿って転送させるフローエントリ（制御情報）が設定される。
【００５１】
次に、ＯｐｅｎＦｌｏｗコントローラ制御部１１は、経路計算部１３が算出した経路に基づき、ＯｐｅｎＦｌｏｗコントローラ２０に対して図８のトポロジと図９のリンクコストを持つ仮想ネットワークの生成を指示する（図２の（６））。
【００５２】
ＯｐｅｎＦｌｏｗコントローラ２０の仮想ネットワーク生成部２２は、統合コントローラ１０からの指示に従い、仮想ネットワークを生成する。
【００５３】
仮想ネットワークは、図８に示すように、仮想ＴＲＩＬＬスイッチによって構成される。仮想ＴＲＩＬＬスイッチは、ＯｐｅｎＦｌｏｗコントローラ２０内でソフトウェアによって実現される仮想的なＴＲＩＬＬスイッチである。
【００５４】
仮想ＴＲＩＬＬスイッチは、リンクコストの情報を持ち、ＩＳ−ＩＳパケットを送受信することでお互いのリンクコストの情報を交換する。仮想ＴＲＩＬＬスイッチは、ＯｐｅｎＦｌｏｗスイッチに対してマッピングされる場合があり、マッピング先のＯｐｅｎＦｌｏｗスイッチに対してＩＳ−ＩＳパケットを送信する。本実施形態では、図８の仮想ＴＲＩＬＬスイッチ６０−３は、ＯｐｅｎＦｌｏｗスイッチ４０−５にマッピングされる。同様に、図８の仮想ＴＲＩＬＬスイッチ６０−４は、ＯｐｅｎＦｌｏｗスイッチ４０−６にマッピングされる。同様に、図８の仮想ＴＲＩＬＬスイッチ６０−５は、ＯｐｅｎＦｌｏｗスイッチ４０−７にマッピングされる。また、仮想ＴＲＩＬＬスイッチ６０−１は、経路計算部１３が算出した経路に基づき、ＯｐｅｎＦｌｏｗ４０−１及びＯｐｅｎＦｌｏｗ４０−３を集約して生成される（リンクコストは加算される）。同様に、仮想ＴＲＩＬＬスイッチ６０−２は、経路計算部１３が算出した経路に基づき、ＯｐｅｎＦｌｏｗ４０−２及びＯｐｅｎＦｌｏｗ４０−４を集約して生成される（リンクコストは加算される）。
【００５５】
仮想ＴＲＩＬＬスイッチ６０−３〜６０−５は、ＩＳ―ＩＳパケットを生成すると、マッピング先のＯｐｅｎＦｌｏｗスイッチに対し、前記生成したＩＳ―ＩＳパケットを送信するようにＯｐｅｎＦｌｏｗスイッチ制御部２１に依頼する。
【００５６】
ＯｐｅｎＦｌｏｗスイッチ制御部２１は、例えば、仮想ＴＲＩＬＬスイッチ６０−３にマッピングされたＯｐｅｎＦｌｏｗスイッチ４０−５に対して、ＯｐｅｎＦｌｏｗプロトコルのパケット送信メッセージ（非特許文献２の「Ｐａｃｋｅｔ−Ｏｕｔメッセージ」）と一緒にＩＳ−ＩＳパケットを送信する。パケット送信メッセージには、ＴＲＩＬＬスイッチ５０−１が接続されているＯｐｅｎＦｌｏｗスイッチ４０−５の物理ポートへのパケット送信要求を設定する。
【００５７】
同様に、ＯｐｅｎＦｌｏｗスイッチ制御部２１は、ＯｐｅｎＦｌｏｗスイッチ４０−６に対して、ＯｐｅｎＦｌｏｗプロトコルのパケット送信メッセージと一緒にＩＳ−ＩＳパケットを送信する。パケット送信メッセージには、ＴＲＩＬＬスイッチ５０−２が接続されているＯｐｅｎＦｌｏｗスイッチ４０−６の物理ポートへのパケット送信要求を設定する。
【００５８】
同様に、ＯｐｅｎＦｌｏｗスイッチ制御部２１は、ＯｐｅｎＦｌｏｗスイッチ４０−７に対して、ＯｐｅｎＦｌｏｗプロトコルのパケット送信メッセージと一緒にＩＳ−ＩＳパケットを送信する。パケット送信メッセージには、ＴＲＩＬＬスイッチ５０−３が接続されているＯｐｅｎＦｌｏｗスイッチ４０−７の物理ポートへのパケット送信要求を設定する。
【００５９】
ＯｐｅｎＦｌｏｗスイッチ４０−５のパケット処理部４１は、ＯｐｅｎＦｌｏｗコントローラ２０からＯｐｅｎＦｌｏｗプロトコルのパケット送信メッセージを受信すると、同メッセージで指定されたＴＲＩＬＬスイッチ５０−１に対し、ＩＳ−ＩＳパケットを送信する。
【００６０】
同様に、ＯｐｅｎＦｌｏｗスイッチ４０−６のパケット処理部４１は、ＯｐｅｎＦｌｏｗコントローラ２０からＯｐｅｎＦｌｏｗプロトコルのパケット送信メッセージを受信すると、同メッセージで指定されたＴＲＩＬＬスイッチ５０−２へＩＳ−ＩＳパケットを送信する。
【００６１】
ＯｐｅｎＦｌｏｗスイッチ４０−７のパケット処理部４１は、ＯｐｅｎＦｌｏｗコントローラ２０からＯｐｅｎＦｌｏｗプロトコルのパケット送信メッセージを受信すると、同メッセージで指定されたＴＲＩＬＬスイッチ５０−３へＩＳ−ＩＳパケットを送信する（図２の（７）参照）。
【００６２】
ＴＲＩＬＬスイッチ５０−１〜５０−３のパケット処理部５１は、ＯｐｅｎＦｌｏｗスイッチ４０−５〜４０−７からＩＳ−ＩＳパケットを受信すると、ＩＳ−ＩＳパケットを解析し、リンクコストの情報を取得する。
【００６３】
ＴＲＩＬＬスイッチ５０−１〜５０−３の経路計算部５３は、リンクコストを基に経路計算を行い、フォワーディングテーブル５４を更新する。
【００６４】
ＴＲＩＬＬスイッチ５０−１〜５０−５は、ＴＲＩＬＬスイッチ間でＩＳ−ＩＳパケットを送受信することで、自身のフォワーディングテーブルを更新する。
【００６５】
例えば、ＴＲＩＬＬスイッチ５０−４の経路計算部５３は、フォワーディングテーブル５４に、「宛先スイッチが仮想ＴＲＩＬＬスイッチ６０−１の場合のネクストホップはＴＲＩＬＬスイッチ５０−１」と「宛先スイッチが仮想ＴＲＩＬＬスイッチ６０−２の場合のネクストホップはＴＲＩＬＬスイッチ５０−２」という情報を保存する。
【００６６】
以上により、最小コストの経路でパケットを転送するための準備が完了する。
【００６７】
その後、ノードＣからノードＡ宛のパケットを受信すると、ＴＲＩＬＬスイッチ５０−４は、フォワーディングテーブル５４を検索し、ノードＡが仮想ＴＲＩＬＬスイッチ６０−１に接続されていることと、仮想ＴＲＩＬＬスイッチ６０−１へ送信する場合のネクストホップはＴＲＩＬＬスイッチ５０−１であるという内容を得る。
【００６８】
そして、ＴＲＩＬＬスイッチ５０−４のカプセル処理部５２は、パケットをＴＲＩＬＬヘッダとイーサネットヘッダでカプセル化する。次にパケット処理部５１が、カプセル化したパケットをＴＲＩＬＬスイッチ５０−１へ送信する。
【００６９】
ＴＲＩＬＬスイッチ５０−１は、自身のフォワーディングテーブル５４を検索し、ＴＲＩＬＬスイッチ５０−４から受信したパケットを仮想ＴＲＩＬＬスイッチ６０−３へと送信する。
【００７０】
ここで、仮想ＴＲＩＬＬスイッチ６０−３は仮想的なＴＲＩＬＬスイッチであり、実際にはＯｐｅｎＦｌｏｗスイッチ４０−５がＴＲＩＬＬスイッチ５０−１からパケットを受信する。
【００７１】
ＯｐｅｎＦｌｏｗスイッチ４０−５において、カプセル処理部４２は、イーサネットヘッダとＴＲＩＬＬヘッダによってカプセル化されたパケットを元に戻す。
【００７２】
パケット処理部４１は、元のパケットのイーサネットヘッダと、自身のフローテーブルを照合して宛先へと転送する。
【００７３】
次に、ノードＡからノードＣへパケットが最小コストの経路で転送される仕組みについて説明する。
【００７４】
ＴＲＩＬＬスイッチ５０−１〜５０−３は、ＯｐｅｎＦｌｏｗスイッチ４０−５〜４０−７に対してもＩＳ−ＩＳパケットを送信する。
【００７５】
ＯｐｅｎＦｌｏｗスイッチ４０−５〜４０−７のパケット処理部４１は、ＩＳ−ＩＳパケットを受信すると、ＯｐｅｎＦｌｏｗコントローラ２０に対し、ＯｐｅｎＦｌｏｗのＰａｃｋｅｔ−Ｉｎメッセージを用いて、受信したパケットを送信する。
【００７６】
ＯｐｅｎＦｌｏｗコントローラ２０のＯｐｅｎＦｌｏｗスイッチ制御部２１は、ＯｐｅｎＦｌｏｗスイッチ４０−５〜４０−７からＩＳ−ＩＳパケットを受信すると、ＩＳ−ＩＳパケットを解析し、ＩＳ−ＩＳパケットに設定されていたスイッチの情報をスイッチ情報記憶部２３に保存する。
【００７７】
ＯｐｅｎＦｌｏｗスイッチ制御部２１は、スイッチ情報記憶部２３に保存されている情報を基に、送信元ＭＡＣアドレスがノードＡのＭＡＣアドレス、宛先ＭＡＣアドレスがノードＣのＭＡＣアドレスのパケットを受信すると、送信元ＲＢｒｉｄｇｅ  Ｎｉｃｋｎａｍｅに仮想ＴＲＩＬＬスイッチ６０−１のＲＢｒｉｄｇｅ  Ｎｉｃｋｎａｍｅ、送信先ＲＢｒｉｄｇｅ  ＮｉｃｋｎａｍｅにＴＲＩＬＬスイッチ５０−４のＲＢｒｉｄｇｅ  Ｎｉｃｋｎａｍｅを設定したＴＲＩＬＬヘッダと、送信元ＭＡＣアドレスに仮想ＴＲＩＬＬスイッチ６０−３のＭＡＣアドレス、送信先ＭＡＣアドレスにＴＲＩＬＬスイッチ５０−１のＭＡＣアドレスを設定したイーサネットヘッダを付加するというカプセル化ルールを生成する。
【００７８】
ＯｐｅｎＦｌｏｗスイッチ制御部２１は、ＯｐｅｎＦｌｏｗスイッチ４０−５のカプセル処理部４２に対して前記カプセル化ルールを設定する。
【００７９】
その後、ノードＡがノードＣに対してパケットを送信し、ＯｐｅｎＦｌｏｗスイッチ４０−５が、送信元ＭＡＣアドレスにノードＡのＭＡＣアドレス、宛先ＭＡＣアドレスにノードＣのＭＡＣアドレスが設定されているパケットを受信する。
【００８０】
ＯｐｅｎＦｌｏｗスイッチ４０−５のカプセル処理部４２は、カプセル化ルールに従い、受信したパケットに対して、送信元ＲＢｒｉｄｇｅ  Ｎｉｃｋｎａｍｅに仮想ＴＲＩＬＬスイッチ６０−１のＲＢｒｉｄｇｅ  Ｎｉｃｋｎａｍｅ、送信先ＲＢｒｉｄｇｅ  ＮｉｃｋｎａｍｅにＴＲＩＬＬスイッチ５０−４のＲＢｒｉｄｇｅ  Ｎｉｃｋｎａｍｅを設定したＴＲＩＬＬヘッダと、送信元ＭＡＣアドレスに仮想ＴＲＩＬＬスイッチ６０−３のＭＡＣアドレス、送信先ＭＡＣアドレスにＴＲＩＬＬスイッチ５０−１のＭＡＣアドレスを設定したイーサネットヘッダを付加する。
【００８１】
パケット処理部４１は、コントローラ２０から設定されたフローエントリに従い、ＴＲＩＬＬスイッチ５０−１へ対して、カプセル化したパケットを送信する。
【００８２】
ＴＲＩＬＬスイッチ５０−１は、フォワーディングテーブル５４を参照して、ＯｐｅｎＦｌｏｗスイッチ４０−５から受信したパケットをＴＲＩＬＬの処理に従い、ＴＲＩＬＬスイッチ５０−４へ送信する。
【００８３】
ＴＲＩＬＬスイッチ５０−４は、宛先ＭＡＣアドレスであるノードＣが自身に接続されていることを調べ、受信したパケットからイーサネットヘッダとＴＲＩＬＬヘッダを外し、ノードＣへ送信する。
【００８４】
以上説明したように、本実施形態によれば、ＯｐｅｎＦｌｏｗネットワークとＴＲＩＬＬネットワークが混在した環境においても、統合コントローラが意図した経路で、パケットを転送することが可能となる。
【００８５】
［第２の実施形態］
上記した第１の実施形態では、図５、図６のリンクコストに前提として説明したが、リンクコストによっては、さらに、仮想ネットワークの集約度を高めることも可能である。以下、仮想ネットワークのエッジの仮想ＴＲＩＬＬスイッチを集約した第２の実施形態について図面を参照して詳細に説明する。本実施形態の基本的な構成は、第１の実施形態と同様であるので、以下、その相違点を中心に説明する。
【００８６】
図１０は、図４のＯｐｅｎＦｌｏｗスイッチ間のリンクコストをまとめた別の表である。統合コントローラ１０のＯｐｅｎＦｌｏｗコントローラ制御部１１は、ＯｐｅｎＦｌｏｗコントローラ２０から図１０に示すリンクコストを取得し、スイッチ情報記憶部１４に保存する。
【００８７】
経路計算部１３は、スイッチ情報記憶部１４に保存された図１０のリンクコストを用いて最小コストの経路を計算する。この場合、ＯｐｅｎＦｌｏｗスイッチ４０−１からＴＲＩＬＬスイッチ５０−４までの最小コストの経路は、「ＯｐｅｎＦｌｏｗスイッチ４０−１→ＯｐｅｎＦｌｏｗスイッチ４０−３→ＯｐｅｎＦｌｏｗスイッチ４０−５→ＴＲＩＬＬスイッチ５０−１→ＴＲＩＬＬスイッチ５０−４」となる。同様に、ＯｐｅｎＦｌｏｗスイッチ４０−１からＴＲＩＬＬスイッチ５０−５までの最小コストの経路は、「ＯｐｅｎＦｌｏｗスイッチ４０−１→ＯｐｅｎＦｌｏｗスイッチ４０−３→ＯｐｅｎＦｌｏｗスイッチ４０−６→ＴＲＩＬＬスイッチ５０−２→ＴＲＩＬＬスイッチ５０−５」となる（図１１参照）。
【００８８】
ＯｐｅｎＦｌｏｗスイッチ４０−２からＴＲＩＬＬスイッチ５０−４までの最小コストの経路は、「ＯｐｅｎＦｌｏｗスイッチ４０−２→ＯｐｅｎＦｌｏｗスイッチ４０−４→ＯｐｅｎＦｌｏｗスイッチ４０−５→ＴＲＩＬＬスイッチ５０−１→ＴＲＩＬＬスイッチ５０−４」となる。同様に、ＯｐｅｎＦｌｏｗスイッチ４０−２からＴＲＩＬＬスイッチ５０−５までの最小コストの経路は、「ＯｐｅｎＦｌｏｗスイッチ４０−２→ＯｐｅｎＦｌｏｗスイッチ４０−４→ＯｐｅｎＦｌｏｗスイッチ４０−６→ＴＲＩＬＬスイッチ５０−２→ＴＲＩＬＬスイッチ５０−５」となる（図１１参照）。
【００８９】
前記の経路の場合、図１１を参照すると、ＯｐｅｎＦｌｏｗスイッチ４０−１からＴＲＩＬＬスイッチ５０−４までの経路（ノードＡ−ノードＣの経路）と、ＯｐｅｎＦｌｏｗスイッチ４０−２からＴＲＩＬＬスイッチ５０−４までの経路（ノードＢ−ノードＣの経路）は共に、ＯｐｅｎＦｌｏｗスイッチ４０−５とＴＲＩＬＬスイッチ５０−１を経由する。また、ＯｐｅｎＦｌｏｗスイッチ４０−１からＴＲＩＬＬスイッチ５０−５までの経路（ノードＡ−ノードＤの経路）と、ＯｐｅｎＦｌｏｗスイッチ４０−２からＴＲＩＬＬスイッチ５０−５までの経路（ノードＢ−ノードＤの経路）は共に、ＯｐｅｎＦｌｏｗスイッチ４０−６とＴＲＩＬＬスイッチ５０−２を経由する。
【００９０】
このような場合、ＯｐｅｎＦｌｏｗコントローラ制御部１１は、ＯｐｅｎＦｌｏｗコントローラ２０に対して図１２に示す仮想ＴＲＩＬＬスイッチのトポロジと図１３に示すリンクコストを持つ仮想ネットワークの生成を指示する。ＯｐｅｎＦｌｏｗスイッチ４０−１とＯｐｅｎＦｌｏｗスイッチ４０−２は、ＴＲＩＬＬスイッチ５０−４とＴＲＩＬＬスイッチ５０−５までの経路で同じ隣接点を経由するため、仮想ネットワークにおいては一つの仮想ＴＲＩＬＬスイッチに集約することができる。
【００９１】
ＯｐｅｎＦｌｏｗコントローラ２０において仮想ネットワーク生成部２２は、図１２のトポロジと図１３のリンクコストを持つ仮想ＴＲＩＬＬスイッチを生成する。仮想ＴＲＩＬＬスイッチ７０−２は、ＯｐｅｎＦｌｏｗスイッチ４０−５にマッピングされる。仮想ＴＲＩＬＬスイッチ７０−３は、ＯｐｅｎＦｌｏｗスイッチ４０−６にマッピングされる。仮想ＴＲＩＬＬスイッチ７０−４は、ＯｐｅｎＦｌｏｗスイッチ４０−７にマッピングされる。さらに、前述のＯｐｅｎＦｌｏｗスイッチ４０−１とＯｐｅｎＦｌｏｗスイッチ４０−２とは集約できるとの考え方に基づき、仮想ＴＲＩＬＬスイッチ７０−１は、ＯｐｅｎＦｌｏｗ４０−１〜ＯｐｅｎＦｌｏｗ４０−４を集約して生成される（リンクコストは加算される）。
【００９２】
図１２の仮想ＴＲＩＬＬスイッチ７０−２〜７０−４は、ＩＳ―ＩＳパケットを生成し、マッピング先のＯｐｅｎＦｌｏｗスイッチに送信するようにＯｐｅｎＦｌｏｗスイッチ制御部２１に依頼する。
【００９３】
ＯｐｅｎＦｌｏｗスイッチ制御部２１は、前記ＩＳ−ＩＳパケットをＯｐｅｎＦｌｏｗスイッチ４０−５〜４０−７に対してパケット送信要求メッセージ（非特許文献２の「Ｐａｃｋｅｔ−Ｏｕｔメッセージ」）と一緒に送信する。
【００９４】
ＯｐｅｎＦｌｏｗスイッチ４０−５のパケット処理部４１は、パケット送信要求メッセージに従い、ＯｐｅｎＦｌｏｗコントローラ２０から受信したＩＳ−ＩＳパケットをＴＲＩＬＬスイッチ５０−１へ送信する。同様に、ＯｐｅｎＦｌｏｗスイッチ４０−６のパケット処理部４１は、パケット送信要求メッセージに従い、ＯｐｅｎＦｌｏｗコントローラ２０から受信したＩＳ−ＩＳパケットをＴＲＩＬＬスイッチ５０−２へ送信する。同様に、ＯｐｅｎＦｌｏｗスイッチ４０−７のパケット処理部４１は、パケット送信要求メッセージに従い、ＯｐｅｎＦｌｏｗコントローラ２０から受信したＩＳ−ＩＳパケットをＴＲＩＬＬスイッチ５０−３へ送信する。
【００９５】
前記ＩＳ−ＩＳパケットを受信したＴＲＩＬＬスイッチ５０−１〜５０−３のパケット処理部５１は、それぞれ、ＯｐｅｎＦｌｏｗスイッチ４０−５〜４０−７が送信したＩＳ−ＩＳパケットを受信して解析する。
【００９６】
具体的には、経路計算部５３は、ＩＳ−ＩＳパケットに設定されていた情報を基に経路を計算し、フォワーディングテーブル５４の経路情報を更新する。
【００９７】
以上により、最小コストの経路でパケットを転送するための準備が完了する。
【００９８】
その後、例えば、ＴＲＩＬＬスイッチ５０−４のパケット処理部５１が、ノードＣからノードＡ宛のパケットを受信すると、フォワーディングテーブル５４を検索し、ノードＡが仮想ＴＲＩＬＬスイッチ７０−１に接続されていることと、仮想ＴＲＩＬＬスイッチ７０−１へ送信する場合のネクストホップはＴＲＩＬＬスイッチ５０−１であることを調べる。
【００９９】
ＴＲＩＬＬスイッチ５０−４のカプセル処理部５２は、ＴＲＩＬＬヘッダとイーサネットヘッダで受信パケットをカプセル化する。
【０１００】
ＴＲＩＬＬスイッチ５０−４のパケット処理部５１は、カプセル化したパケットをＴＲＩＬＬスイッチ５０−１へ送信する。
【０１０１】
ＴＲＩＬＬスイッチ５０−１は、自身のフォワーディングテーブル５４を検索し、ＴＲＩＬＬスイッチ５０−４から受信したパケットを仮想ＴＲＩＬＬスイッチ７０−２へと送信する。
【０１０２】
ここで、仮想ＴＲＩＬＬスイッチ７０−２は仮想的なＴＲＩＬＬスイッチであり、実際にはＯｐｅｎＦｌｏｗスイッチ４０−５がＴＲＩＬＬスイッチ５０−１からパケットを受信する。
【０１０３】
ＯｐｅｎＦｌｏｗスイッチ４０−５のカプセル処理部４２は、イーサネットヘッダとＴＲＩＬＬヘッダによってカプセル化されたパケットを元に戻す。
【０１０４】
ＯｐｅｎＦｌｏｗスイッチ４０−５のパケット処理部４１は、元のパケットのイーサネットヘッダと、自身のフローテーブルを照合して宛先へと転送する。
【０１０５】
以上説明したように、仮想ネットワークは、リンクコストとこれに基づく経路計算結果に応じて、適当なサイズに集約することができる。本実施形態によれば、第１の実施形態と比較して、ＴＲＩＬＬスイッチにおける経路選択処理が簡単化されるという利点が得られる。このことは、図１３のリンクコスト一覧表において仮想ＴＲＩＬＬスイッチ７０−１と仮想ＴＲＩＬＬスイッチ７０−３との間の経路が最小コストであることを容易に読み取れることからも明らかである。
【０１０６】
以上、本発明の実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成や要素の構成は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【０１０７】
また、上記した実施形態では、ＯｐｅｎＦｌｏｗネットワークと、ＴＲＩＬＬネットワークが接続された構成を例に挙げて説明したが、その他の集中制御型のネットワークと、自律制御型のネットワークの組合せにも本発明を適用することが可能である。例えば、ＴＲＩＬＬネットワークに代えて、ＩＥＥＥ８０２．１ａｑで規定されているＳＰＢ（Ｓｈｏｒｔｅｓｔ  Ｐａｔｈ  Ｂｒｉｄｇｉｎｇ）ネットワークを配置した構成にも適用することが可能である。
【０１０８】
また、上記した実施形態では、経路計算部１３がリンクコストを用いて最小コストの経路を計算するものとして説明したが、最小コストの経路以外の経路を計算してもよい。例えば、特定のユーザのみ最小コストの経路を割り当て、その他のユーザには、それ以外の経路を割り当てるといった制御を行ってもよい。また、リンクコストに限らず、ＯｐｅｎＦｌｏｗスイッチなどからもたらされるフロートラヒック情報（図１４の中央「Ｃｏｕｎｔｅｒ」参照）を考慮に入れて経路を計算してもよい。
【０１０９】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点による通信システム参照）
［第２の形態］
第１の形態の通信システムにおいて、
さらに、前記第１のスイッチの情報を収集するネットワーク管理装置を含み、
前記ネットワーク管理装置及び前記コントローラから、前記第１、第２のスイッチによって構成されるネットワークのトポロジ情報を収集し、前記第１、第２のスイッチによって構成されるネットワークをまたがる経路を計算する通信システム。
［第３の形態］
第１又は第２の形態の通信システムにおいて、
前記統合コントローラは、前記コントローラに、前記第１のスイッチを仮想化したスイッチで構成され、かつ、前記第２スイッチ間のリンクコストを反映させた仮想ネットワークを生成させる通信システム。
［第４の形態］
第１から第３いずれか一の形態の通信システムにおいて、
前記第２のスイッチはオープンフロースイッチであり、
前記統合コントローラは、前記コントローラに、前記計算した経路上の前記第２のスイッチへのフローエントリの設定を行わせることで、前記計算した経路に沿ったパケット転送を行わせる通信システム。
［第５の形態］
第１から第４いずれか一の形態の通信システムにおいて、
前記第１のスイッチはＩＳ−ＩＳ（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ  ｔｏ  Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ）を用いて経路を決定するスイッチであり、
前記統合コントローラは、前記コントローラを介して、前記第２のスイッチから前記第１のスイッチに宛ててＩＳ−ＩＳパケットを出力させることにより、前記第１、第２のスイッチ間で、ＩＳ−ＩＳを用いて情報交換を行わせる通信システム。
［第６の形態］
第５の形態の通信システムにおいて、
前記第１のスイッチはＴＲＩＬＬスイッチである通信システム。
［第７の形態］
（上記第２の視点による統合コントローラ参照）
［第８の形態］
（上記第３の視点によるパケット転送方法参照）
［第９の形態］
（上記第４の視点によるプログラム参照）
なお、上記第７〜第９の形態は、第１の形態と同様に、第２〜第６の形態に展開することが可能である。
【０１１０】
なお、上記の非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１１１】
１０、１０ａ  統合コントローラ
１１  ＯｐｅｎＦｌｏｗコントローラ制御部
１２  ＳＮＭＰマネージャ制御部
１３  経路計算部
１４  スイッチ情報記憶部
２０  ＯｐｅｎＦｌｏｗコントローラ
２０ａ  コントローラ
２１  ＯｐｅｎＦｌｏｗスイッチ制御部
２２  仮想ネットワーク生成部
２３  スイッチ情報記憶部
３０  ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）マネージャ
３１  ＴＲＩＬＬスイッチ制御部
３２  スイッチ情報記憶部
４０、４０−１〜４０−７  ＯｐｅｎＦｌｏｗスイッチ
４０ａ  第２のスイッチ
４１  パケット処理部
４２  カプセル処理部
５０、５０−１〜５０−５  ＴＲＩＬＬスイッチ
５０ａ  第１のスイッチ
５１  パケット処理部
５２  カプセル処理部
５３  経路計算部
５４  フォワーディングテーブル
６０−１〜６０−５、７０−１〜７０−４  仮想ＴＲＩＬＬスイッチ
【図１】
0005950019.tif 000002
【図２】
0005950019.tif 000003
【図３】
0005950019.tif 000004
【図４】
0005950019.tif 000005
【図５】
0005950019.tif 000006
【図６】
0005950019.tif 000007
【図７】
0005950019.tif 000008
【図８】
0005950019.tif 000009
【図９】
0005950019.tif 000010
【図１０】
0005950019.tif 000011
【図１１】
0005950019.tif 000012
【図１２】
0005950019.tif 000013
【図１３】
0005950019.tif 000014
【図１４】
0005950019.tif 000015
【図１５】
0005950019.tif 000016