(57)【特許請求の範囲】
【請求項１】
複数のパケット転送装置と、
前記パケット転送装置を制御する制御装置とを備え、
前記制御装置は、
前記制御装置または前記パケット転送装置の各ポート間の接続情報を含むトポロジー情報を記憶するトポロジー情報記憶手段と、
前記トポロジー情報から、前記制御装置または前記パケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定手段と、
前記接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送る応答要求送信手段と、
前記接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する応答受信手段とを含み、
前記パケット転送装置は、
受信した前記応答要求の内容に基づいて、前記応答要求を他のパケット転送装置に転送するか否かを判定する転送判定手段と、
前記応答要求を他のパケット転送装置に転送すると判定された場合、前記応答要求の内容に基づいて、前記応答要求を他のパケット転送装置に転送する転送手段と、
前記応答要求を他のパケット転送装置に転送しないと判定された場合、自パケット転送装置のポートの情報を含み、前記制御装置への経路に沿って送られる前記応答を返す応答送信手段とを含む
ことを特徴とする通信システム。
【請求項２】
制御装置は、
接続先未探索ポートの接続先となるパケット転送装置から受信した応答に含まれる該パケット転送装置のポートの情報をトポロジー情報に追加し、さらに、該パケット転送装置のポートのうち該パケット転送装置が応答要求を受信したポート以外のポートの接続先が未探索である場合に該ポートが未探索であるという情報を前記トポロジー情報に追加するトポロジー情報追加手段を含む
請求項１に記載の通信システム。
【請求項３】
応答要求送信手段は、接続先未探索ポート特定手段によって接続先未探索ポートがないと判定された場合に、応答要求の送信を停止する
請求項１または請求項２に記載の通信システム。
【請求項４】
応答要求送信手段は、
制御装置のポートから接続先未探索ポートまでの経路上の各パケット転送装置が応答要求を出力するポートの情報を順にならべた列を、応答要求の転送経路として該応答要求に記述し、
転送手段は、応答要求に記述された転送経路に沿って該応答要求を転送し、
応答送信手段は、前記応答要求に記述された転送経路に基づいて、制御装置に応答を送る経路を判定する
請求項１から請求項３のうちのいずれか１項に記載の通信システム。
【請求項５】
制御装置は、
トポロジー情報に基づいて制御装置と各パケット転送装置間の経路である制御チャネルを決定する制御チャネル決定手段と、
前記制御チャネルを各パケット転送装置へ通知する制御チャネル通知を送信する制御チャネル通知送信手段とを含み、
パケット転送装置は、
前記制御チャネル通知を受信したときに、該制御チャネル通知に基づいて、前記制御装置と自パケット転送装置との間の制御チャネルを記憶する制御チャネル記憶手段を含む
請求項１から請求項４のうちのいずれか１項に記載の通信システム。
【請求項６】
複数のパケット転送装置を制御する制御装置であって、
該制御装置または前記パケット転送装置の各ポート間の接続情報を含むトポロジー情報を記憶するトポロジー情報記憶手段と、
前記トポロジー情報から、該制御装置または前記パケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定手段と、
前記接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送る応答要求送信手段と、
前記接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する応答受信手段とを備える
ことを特徴とする制御装置。
【請求項７】
接続先未探索ポートの接続先となるパケット転送装置から受信した応答に含まれる該パケット転送装置のポートの情報をトポロジー情報に追加し、さらに、該パケット転送装置のポートのうち該パケット転送装置が応答要求を受信したポート以外のポートの接続先が未探索である場合に該ポートが未探索であるという情報を前記トポロジー情報に追加するトポロジー情報追加手段を備える
請求項６に記載の制御装置。
【請求項８】
制御装置によって制御されるパケット転送装置であって、
接続先が未探索である接続先未探索ポートの接続先への応答要求であって、前記制御装置が送信した応答要求を受信すると、前記応答要求の内容に基づいて、前記応答要求を他のパケット転送装置に転送するか否かを判定する転送判定手段と、
前記応答要求を他のパケット転送装置に転送すると判定された場合、前記応答要求の内容に基づいて、前記応答要求を他のパケット転送装置に転送する転送手段と、
前記応答要求を他のパケット転送装置に転送しないと判定された場合、自パケット転送装置のポートの情報を含み、前記制御装置への経路に沿って送られる応答を返す応答送信手段とを備える
ことを特徴とするパケット転送装置。
【請求項９】
複数のパケット転送装置を制御する制御装置が、該制御装置または前記パケット転送装置の各ポート間の接続情報を含むトポロジー情報から、該制御装置または前記パケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定し、
前記接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送り、
前記接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する
ことを特徴とするポート情報収集方法。
【請求項１０】
複数のパケット転送装置を制御するコンピュータに搭載される制御装置用プログラムであって、
該コンピュータに、
該コンピュータまたは前記パケット転送装置の各ポート間の接続情報を含むトポロジー情報から、該コンピュータまたは前記パケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定処理、
前記接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送る応答要求送信処理、および、
前記接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する応答受信処理
を実行させるための制御装置用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のパケット転送装置と各パケット転送装置を制御する制御装置とを含む通信システム、および、その通信システムに適用されるパケット転送装置、制御装置、ポート情報収集方法、制御装置用プログラムに関する。
【背景技術】
【０００２】
パケットを転送する複数のスイッチと、各スイッチを制御する制御装置とを備え、制御装置が各スイッチにフローエントリ情報を設定し、各スイッチが受信したパケットをフローエントリ情報に従って転送する通信システムがある。フローエントリ情報とは、受信したパケットのヘッダに応じて、そのパケットをどのように処理するか（転送、廃棄、書換え等）を規定した情報である。このような通信システムでは、制御装置がスイッチを制御するために用いる制御チャネルが必要となる。例えば、スイッチは、フローエントリ情報に規定されていないパケットを受信した場合には、その旨を制御装置に通知し、制御装置は、そのパケットに応じたフローエントリ情報をそのスイッチに送信する。制御チャネルは、このようなスイッチから制御装置への通知や、制御装置からスイッチに対するフローエントリ情報の送信等に用いられる。制御装置がスイッチを制御するためのプロトコルは、オープンフローと呼ばれている。なお、スイッチは、パケットを転送するパケット転送装置であるということができる。制御チャネルは、オープンフローにおける“Secure channel”に相当する。また、オープンフローにおいて、制御装置は「コントローラ」と呼ばれる。【０００３】
オープンフローの仕様が非特許文献１に記載されている。このオープンフローの仕様には、制御装置とスイッチとがポート番号６６３３番のＴＣＰ（Transmission Control Protocol ）においてＳＳＬ（Secure Socket Layer）を用いて通信することが記載されている。このことから、一般的に、オープンフローを適用した通信システムでは、複数のスイッチが順次パケットを転送していく通信ネットワークと、制御装置と各スイッチとの制御チャネルとなる通信ネットワークとが別個に設けられている。図２７は、オープンフローを適用した一般的な通信システムの例を示す説明図である。図２７に示す各スイッチ９２は、受信したパケットをフローエントリ情報に基づいて他のスイッチに転送するときには、パケット転送用通信ネットワーク９４を用いる。また、制御チャネルとなる制御用通信ネットワーク９３が、パケット転送用通信ネットワーク９４とは別に設けられ、制御装置９１は、制御用通信ネットワーク９３を介して、個々のスイッチ９２を制御する。制御用通信ネットワーク９３には、例えば、ＳＴＰ（Spanning Tree Protocol），ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol ），ＲＩＰ（Routing Information Protocol），ＯＳＰＦ（Open Shortest Path First）等のルーティングプロトコルが使用される。【０００４】
また、図２７に例示する通信システムでは、スイッチ群のトポロジーが変更された場合、通信システム内で各スイッチが制御フレームの送受信を行い、新たなトポロジーを把握する。トポロジーを把握するための制御フレームの例として、例えば、ＳＴＰにおけるＢＰＤＵ（Bridge Protocol Data Unit ）等がある。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】“OpenFlow Switch Specification Version 0.9.0”，“4.4 Encryption”、２００９年７月２０日、[平成２１年１０月６日検索]、インターネット<http://www.openflowswitch.org/documents/openflow-spec-v0.9.0.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
オープンフローを適用した一般的な通信システム（図２７参照）では、制御用通信ネットワーク９３と、パケット転送用通信ネットワーク９４を用いる。しかし、複数のパケット転送装置と各パケット転送装置を制御する制御装置とを含む通信システムにおいて、各パケット転送装置がパケット転送に用いる通信ネットワークと、制御装置が各パケット転送装置を制御するために用いる通信ネットワークとを一種類にまとめることが好ましい。【０００７】
そこで、本発明は、複数のパケット転送装置と各パケット転送装置を制御する制御装置とを含む通信システムであって、各パケット転送装置がパケット転送に用いる通信ネットワークと、制御装置が各パケット転送装置を制御するために用いる通信ネットワークとを一種類にまとめることができる通信システム、および、その通信システムに適用されるパケット転送装置、制御装置、ポート情報収集方法、制御装置用プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明による通信システムは、複数のパケット転送装置と、パケット転送装置を制御する制御装置とを備え、制御装置が、制御装置またはパケット転送装置の各ポート間の接続情報を含むトポロジー情報を記憶するトポロジー情報記憶手段と、トポロジー情報から、制御装置またはパケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定手段と、接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送る応答要求送信手段と、接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する応答受信手段とを含み、パケット転送装置が、受信した応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送するか否かを判定する転送判定手段と、応答要求を他のパケット転送装置に転送すると判定された場合、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送する転送手段と、応答要求を他のパケット転送装置に転送しないと判定された場合、自パケット転送装置のポートの情報を含み、制御装置への経路に沿って送られる応答を返す応答送信手段とを含むことを特徴とする。【０００９】
また、本発明による制御装置は、複数のパケット転送装置を制御する制御装置であって、該制御装置またはパケット転送装置の各ポート間の接続情報を含むトポロジー情報を記憶するトポロジー情報記憶手段と、トポロジー情報から、該制御装置またはパケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定手段と、接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送る応答要求送信手段と、接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する応答受信手段とを備えることを特徴とする。【００１０】
また、本発明によるパケット転送装置は、制御装置によって制御されるパケット転送装置であって、接続先が未探索である接続先未探索ポートの接続先への応答要求であって、制御装置が送信した応答要求を受信すると、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送するか否かを判定する転送判定手段と、応答要求を他のパケット転送装置に転送すると判定された場合、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送する転送手段と、応答要求を他のパケット転送装置に転送しないと判定された場合、自パケット転送装置のポートの情報を含み、制御装置への経路に沿って送られる応答を返す応答送信手段とを備えることを特徴とする。【００１１】
また、本発明によるポート情報収集方法は、複数のパケット転送装置を制御する制御装置が、該制御装置またはパケット転送装置の各ポート間の接続情報を含むトポロジー情報から、該制御装置またはパケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定し、接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送り、接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信することを特徴とする。【００１２】
また、本発明による制御装置用プログラムは、複数のパケット転送装置を制御するコンピュータに搭載される制御装置用プログラムであって、該コンピュータに、該コンピュータまたはパケット転送装置の各ポート間の接続情報を含むトポロジー情報から、該コンピュータまたはパケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定処理、接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送る応答要求送信処理、および、接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する応答受信処理を実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複数のパケット転送装置と各パケット転送装置を制御する制御装置とを含む通信システムにおいて、各パケット転送装置がパケット転送に用いる通信ネットワークと、制御装置が各パケット転送装置を制御するために用いる通信ネットワークとを一種類にまとめることができる。
【図面の簡単な説明】
【００１４】
【図１】制御装置がトポロジー情報を保持していない状態からトンネリングによる通信を行うまでの過程を模式的に示した説明図である。
【図２】本発明の通信システムが備える制御装置およびスイッチの構成例を示すブロック図である。
【図３】ソースルーティングの例を示す説明図である。
【図４】特定パケットのフォーマットの例を示す説明図である。
【図５】request パケットに含まれる情報の例を示す説明図である。
【図６】reply パケットに含まれる情報の例を示す説明図である。
【図７】setup パケットに含まれる情報の例を示す説明図である。
【図８】tunnelパケットに含まれる情報の例を示す説明図である。
【図９】制御装置がトポロジー情報を生成し、制御チャネルを形成する過程を示す模式図である。
【図１０】制御装置がトポロジー情報を生成し、制御チャネルを形成する過程を示す模式図である。
【図１１】制御装置がトポロジー情報を生成し、制御チャネルを形成する過程を示す模式図である。
【図１２】制御装置がトポロジー情報を生成し、制御チャネルを形成する過程を示す模式図である。
【図１３】制御装置がトポロジー情報を生成し、制御チャネルを形成する過程を示す模式図である。
【図１４】制御装置およびスイッチがrequest パケットおよびreply パケットを送受信する経過の例を示す説明図である。
【図１５】トポロジー情報の生成過程の例を示す説明図である。
【図１６】トポロジー情報の生成過程の例を示す説明図である。
【図１７】トポロジー情報の生成過程の例を示す説明図である。
【図１８】トポロジー情報の生成過程の例を示す説明図である。
【図１９】トポロジー情報の生成過程の例を示す説明図である。
【図２０】トポロジー情報の生成過程の例を示す説明図である。
【図２１】トポロジー情報の生成過程の例を示す説明図である。
【図２２】制御装置の処理経過の例を示すフローチャートである。
【図２３】スイッチの処理経過の例を示すフローチャートである。
【図２４】本発明の通信システムの最小構成の例を示すブロック図である。
【図２５】本発明の制御装置の最小構成の例を示すブロック図である。
【図２６】本発明のパケット転送装置の最小構成の例を示すブロック図である。
【図２７】オープンフローを適用した一般的な通信システムの例を示す説明図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を、図面を参照して説明する。
本発明の通信システムは、パケットを転送する複数のパケット転送装置と、その複数のスイッチを制御する制御装置とを備える。制御装置が、パケット転送装置に対してフローエントリ情報を送信し、パケット転送装置は、パケット受信時に、そのフローエントリ情報に従って、パケットを処理する。この結果、いずれかのパケット転送装置に接続された端末装置が、他のパケット転送装置に接続された別の端末装置に対してパケットを任意の経路で送信したり、同報したりすることが可能となる。
【００１６】
本発明におけるパケット転送装置は、例えば、オープンフローにおけるスイッチであり、本発明における制御装置は、例えば、オープンフローにおけるコントローラである。以下、パケット転送装置および制御装置が、それぞれ、オープンフローにおけるスイッチおよびコントローラである場合を例にして説明する。ただし、本発明はオープンフロー以外にも適用可能である。通信ネットワーク上の各パケット転送装置を制御装置が集中管理する構成の通信システムであれば、本発明を適用することができる。
【００１７】
本発明の通信システムは、制御装置（コントローラ）とスイッチとの間に制御用に特化した通信ネットワークを備えない。制御装置は、少なくとも１つのスイッチに接続されていればよい。制御装置は、各スイッチがパケット転送に用いる通信ネットワークを用いて、個々のスイッチとの間に制御チャネルを設ける。具体的には、制御装置は、制御装置から見て制御装置自身に接続されているスイッチ以降の各スイッチとの間で、各スイッチがパケット転送に用いる通信ネットワークのリンクを利用して制御チャネルを形成する。そして、制御装置は、制御チャネルを介して、トンネリングにより各スイッチと通信を行い、個々のスイッチを制御する。すなわち、本発明では、制御装置が、各スイッチがパケット転送に用いる通信ネットワークを利用して、個々のスイッチとの間でスター構造のオーバレイネットワークを形成しているということができる。
【００１８】
また、本発明の通信システムでは、制御装置が制御装置自身および各スイッチのポート同士の接続関係を表すトポロジー情報を保持する。個々のスイッチは、トポロジー情報を保持しなくてよい。制御装置は、初期状態においては、トポロジー情報を保持しておらず、スイッチに対して、ポートの接続状態に関する問い合わせを行い、トポロジー情報を作成する。制御装置は、スイッチ群のトポロジーを把握すると、スイッチとの間の制御チャネルとなる経路を個々のスイッチ毎にそれぞれ決定し、各スイッチに対して、制御装置までの経路を通知するためのパケットを送信する。この結果、制御装置は、各スイッチへの制御チャネルを認識可能となり、各スイッチも制御装置への制御チャネルを認識可能となる。この後、スイッチと制御装置が通信を行う場合、制御チャネルを介して、トンネリングにより通信を行う。
【００１９】
図１は、制御装置がトポロジー情報を保持していない状態から、制御装置とスイッチとがトンネリングによる通信を行うまでの過程を模式的に示した説明図である。図１（ａ）は、本発明の通信システムの初期状態を模式的に示している。この状態では、制御装置１０は、スイッチ群の少なくとも１つのスイッチに接続されているが、どのスイッチのどのポートに接続されているかは認識していない状態である。
【００２０】
制御装置１０は、トポロジー情報に基づいて、制御装置自身またはスイッチのポートのうち、リンクアップしているポートであってどのスイッチのどのポートに接続されているのかが未知のポートを特定する。以下、このポートを接続先未探索ポートと記す。そして、制御装置１０は、スイッチに対してリンクアップしているポートを問い合わせるパケット（以下、request パケットと記す。）が接続先未探索ポートから出力されるように、request パケットを送信する（図１（ｂ）参照）。初期状態においてはトポロジー情報を保持していないので、制御装置１０は、どのスイッチに接続されているのか不明な制御装置１０自身のポートを接続先未探索ポートとして特定し、その接続先未探索ポートからrequest パケットを送信する。なお、リンクアップしているポートとは、他のスイッチに接続されているポートである。
【００２１】
request パケットを受信したスイッチ２０は、制御装置１０に対して、リンクアップしているポートを示す情報と、そのスイッチがrequest パケットを受信したポートを示す情報と、スイッチ２０自身の識別情報とを含むパケット（以下、reply パケットと記す。）を、request パケットを受信したポートから制御装置１０に返す（図１（ｃ）参照）。
【００２２】
本発明では、制御装置１０は、reply パケットに基づいてトポロジー情報を生成し、保持する。さらに、制御装置１０は、そのトポロジー情報に基づいて接続先未探索ポートを特定し、接続先未探索ポートから出力されるようにrequest パケットを送信する。接続先未探索ポートがスイッチ２０のポートである場合、制御装置１０は、着目している接続先未探索ポートを有するスイッチ２０がrequest パケットを接続先未探索ポートから出力するように、ソースルーティングによりrequest パケットを各スイッチに転送させる。このrequest パケットを受信したスイッチ２０も、request パケットを受信したポートからreply パケットを送信し、制御装置１０は、そのreply パケットの内容をトポロジー情報に反映させる。
【００２３】
このように、制御装置１０は、接続先未探索ポートの特定、request パケットの送信、reply パケットの受信、およびトポロジー情報の作成を繰り返す。そして、制御装置１０は、トポロジー情報から接続先未探索ポートを特定できなくなったときに、トポロジー情報が完成したと判定する。
【００２４】
そして、制御装置１０は、トポロジー情報に基づいて、スイッチ毎に、制御チャネルとなる経路を決定する。この結果、制御装置１０がスイッチ毎の制御チャネルを認識した状態となる。そして、制御装置１０は、スイッチ毎に、制御チャネルとなる経路を通知するためのパケット（以下、setup パケットと記す。）を送信する（図１（ｄ）参照）。setup パケットを受信した個々のスイッチ２０は、setup パケットに基づいて、スイッチ２０自身から制御装置１０までの制御チャネルとなる経路を記憶する。この結果、各スイッチ２０は、それぞれ制御装置１０までの制御チャネルを認識可能な状態となる。
【００２５】
以降、制御装置１０がスイッチ２０に対する制御を行うための通信は、個々のスイッチ２０毎に定められた制御チャネルを介して、トンネリングにより行われる（図１（ｅ）参照）。例えば、あるスイッチ２０が、フローエントリ情報に規定されていないパケットを受信した場合には、その旨を制御装置１０に通知する。このとき、スイッチ２０は、制御チャネルを介して、トンネリングにより、この通知を行う。また、この通知を受けた制御装置１０は、フローエントリ情報を生成し、そのスイッチに送信する。このとき、制御装置１０は、制御チャネルを介して、トンネリングによりフローエントリ情報を送信する。このように、制御装置１０とスイッチ２０との間で制御チャネルを介してトンネリングにより送受信されるパケットを、以下、tunnelパケットと記す。
【００２６】
また、制御装置１０は、定期的にトポロジー情報を作成し直す。例えば、制御装置１０が初期状態でrequest パケットの生成を開始してから一定期間が経過したときに、トポロジー情報を削除して初期状態に戻し、再度、request パケットの生成を開始して、収集したreply パケットに基づいて新たにトポロジー情報を作成し、さらに、setup パケットを個々のスイッチに送信する。制御装置１０は、この動作を繰り返す。定期的にトポロジー情報を作成し直すことで、スイッチ間の接続関係が変更されても、その変更をトポロジー情報に反映させることができる。
【００２７】
request パケット、reply パケット、setup パケットおよびtunnelパケットを特定パケットと記す。スイッチ２０は、特定パケットに対しては、スイッチ間で転送されるデータパケットとは異なる処理を行う。スイッチ２０は、端末（図示せず）同士が授受するデータパケットを受信した場合、フローエントリ情報に従って転送し、フローエントリ情報にデータパケットのフローが規定されていなければ、その旨を制御装置１０に通知する。一方、特定パケットに関しては、スイッチ２０は、このような処理を行わず、request パケット、reply パケット、setup パケットおよびtunnelパケットに応じた処理を行う。また、各スイッチは、データパケットと特定パケットとでは、特定パケットに対する処理を優先する。特定パケットに対する処理を優先することで、通信システムのＱｏＳ（Quality of Service）を保証することができる。
【００２８】
また、特定パケットには、その特定パケットの送信元からのホップ数に応じたカウント値が記述される。このカウント値をポートカウントと記す。
【００２９】
図２は、本発明の通信システムが備える制御装置およびスイッチの構成例を示すブロック図である。図２では、通信システムが４つのスイッチ２０ａ〜２０ｄを備える場合を例示しているが、スイッチの台数や、スイッチのトポロジーは特に限定されない。また、図２では、制御装置１０に２台のスイッチ２０ａ，２０ｂが接続されている場合を例示しているが、制御装置１０に接続されるスイッチの台数は１台であっても、３台以上であってもよい。制御装置１０には、少なくとも１台のスイッチが接続されていればよい。
【００３０】
制御装置１０は、制御装置側特定パケット送受信部１１と、トポロジー探索部１２と、トポロジー保持部１３と、制御チャネル経路決定部１４と、制御装置側制御メッセージトンネリング部１５とを備える。
【００３１】
制御装置側特定パケット送受信部１１（以下、特定パケット送受信部１１と記す。）は、特定パケットの送信および受信を行う。具体的には、特定パケット送受信部１１は、request パケット、setup パケットおよびtunnelパケットを送信し、reply パケットおよびtunnelパケットを受信する。
【００３２】
特定パケット送受信部１１は、スイッチからreply パケットを受信した場合には、そのreply パケットをトポロジー探索部１２に出力する。特定パケット送受信部１１は、スイッチからtunnelパケットを受信した場合には、そのtunnelパケットを制御装置側制御メッセージトンネリング処理部１５に出力する。
【００３３】
特定パケット送受信部１１が送信するrequest パケット、setup パケットおよびtunnelパケットは、ソースルーティングによって順次、経路上のスイッチに転送されていき、宛先となるスイッチに到達する。request パケットを生成するトポロジー探索部１２は、制御装置１０自身の出力ポート、および宛先となるスイッチまでの経路上の各スイッチにおける出力ポートを順にrequest パケット内に記述し、特定パケット送受信部１１は、その出力ポート列の最初に記述された制御装置１０自身のポートからrequest パケットを送信する。また、setup パケットを生成する制御チャネル経路決定部１４は、制御装置１０自身の出力ポート、および宛先となるスイッチまでの制御チャネル上の各スイッチにおける出力ポートを順にsetup パケット内に記述し、特定パケット送受信部１１は、その出力ポート列の最初に記述された制御装置１０自身のポートからsetup パケットを送信する。同様に、スイッチに送るtunnelパケットを生成する制御装置側制御メッセージトンネリング処理部１５は、制御装置１０自身の出力ポート、および宛先となるスイッチまでの制御チャネル上の各スイッチにおける出力ポートを順にtunnelパケット内に記述し、特定パケット送受信部１１は、その出力ポート列の最初に記述された制御装置１０自身のポートから、そのtunnelパケットを送信する。ソースルーティングについては、後述する。
【００３４】
なお、ここでは便宜的に、ポートを特定パケットに記述すると説明しているが、具体的には、制御装置１０および各スイッチにおけるポート識別情報（例えば、ポート識別番号）を特定パケットに記述する。従って、出力ポート列は、ポート識別情報の並びである。以下の説明では、ポート識別情報として、番号（ポート識別番号）を用いる場合を例にする。
【００３５】
トポロジー探索部１２は、接続先未探索ポートを特定し、request パケットを生成して、特定パケット送受信部１１に送信させる。また、そのrequest パケットに対する応答としてスイッチから送信されたreply パケットが入力されると、そのreply パケットに基づいて、トポロジー情報を作成し、トポロジー保持部１３に記憶させる。トポロジー探索部１２は、この処理を、トポロジー情報から接続先未探索ポートを特定できなくなるまで繰り返す。
【００３６】
初期状態では、トポロジー探索部１２は、接続先未探索ポートとして、制御装置１０自身のリンクアップしているポートを選択する。そして、トポロジー探索部１２は、接続先未探索ポートとして選択したポートを出力ポートとしてrequest パケットに記述するとともに、その出力ポート列の長さ（すなわち、記述した出力ポートの数）と、ポートカウントの初期値を記述する。この場合、出力ポートは制御装置１０自身のポートのみであるので、出力ポート列の長さは１である。また、接続先未探索ポートとして選択したポートが複数存在する場合には、トポロジー探索部１２は、個々の接続先未探索ポート毎にrequest パケットを生成する。すなわち、接続先未探索ポートとrequest パケットとは一対一に対応する。特定パケット送受信部１１は、個々のrequest パケットを、request パケット内に記述されたポートから送信する。
【００３７】
また、reply パケットを受信して、トポロジー情報を作成している場合には、トポロジー探索部１２は、そのトポロジー情報を参照し、トポロジー情報に記述されたスイッチのリンクアップしているポートのうち、どのスイッチのどのポートに接続しているかが未知のポートを接続先未探索ポートとして特定する。さらに、トポロジー探索部１２は、制御装置１０から着目している接続先未探索ポートを有するスイッチまでの経路を、作成済みのトポロジー情報から特定する。トポロジー探索部１２は、その経路に応じた制御装置１０自身の出力ポートおよび各スイッチの出力ポートを順にrequest パケットに記述するとともに、その出力ポート列の長さ（すなわち、記述した出力ポートの数）と、ポートカウントの初期値を記述する。この場合も、トポロジー探索部１２は、接続先未探索ポート毎にrequest パケットを生成する。特定パケット送受信部１１は、個々のrequest パケットを、request パケット内に記述された最初のポートから送信する。
【００３８】
トポロジー探索部１２は、request パケットへの応答として各スイッチから得たreply パケットに基づいてトポロジー情報を生成する。reply パケットには、reply パケットの送信元のスイッチにおけるリンクアップしているポートを示す情報の他に、そのスイッチの識別情報と、reply パケットの起因となったrequest パケットをそのスイッチが受信したポートの情報が含まれている。トポロジー探索部１２は、request パケットに対応する接続先未探索ポートに、reply パケットの送信元のスイッチのポートであって、そのスイッチがrequest パケットを受信したポートが接続されていると判定し、そのポート同士の接続関係をトポロジー情報に追加する。
【００３９】
トポロジー探索部１２がrequest パケットの生成を開始することにより、制御装置１０によるrequest パケットの送信、reply パケットの受信、トポロジー情報作成、setup パケットの送信という一連の処理が開始する。トポロジー探索部１２は、定期的にトポロジー情報を削除し、request パケットの生成を開始することにより、この一連の処理を開始させる。
【００４０】
トポロジー保持部１３は、トポロジー情報を記憶する記憶装置である。
【００４１】
制御チャネル経路決定部１４は、トポロジー情報の完成後にトポロジー情報を参照して、制御チャネルをスイッチ毎に決定する。この制御チャネルの決定方法は、特に限定されない。例えば、制御チャネル経路決定部１４は、ダイクストラ法により、スイッチまでの最短経路を計算し、その経路を制御チャネルとして決定してもよい。そして、制御チャネル経路決定部１４は、スイッチ毎にsetup パケットを生成する。このとき、制御チャネル経路決定部１４は、制御装置１０自身の出力ポート、およびsetup パケットの宛先となるスイッチまでの制御チャネル上の各スイッチにおける出力ポートを順に、setup パケットに記述する。さらに、制御チャネル経路決定部１４は、setup パケットに、その出力ポート列の長さ（すなわち、記述した出力ポートの数）と、ポートカウントの初期値を記述する。そして、特定パケット送受信部１１にそのsetup パケットを送信させる。
【００４２】
制御装置側制御メッセージトンネリング処理部１５（以下、制御メッセージトンネリング処理部１５と記す。）は、制御装置１０とスイッチ間との間で授受する制御メッセージをトンネリングにより送受信する。すなわち、制御メッセージトンネリング処理部１５は、スイッチに送信する制御メッセージ（例えば、フローエントリ情報）を暗号化し、カプセル化したtunnelパケットを生成する。このとき、制御メッセージトンネリング処理部１５は、制御装置１０自身の出力ポート、およびtunnelパケットの宛先となるスイッチまでの制御チャネル上の各スイッチにおける出力ポートを順に、tunnelパケットに記述する。さらに、制御メッセージトンネリング処理部１５は、tunnelパケットに、その出力ポート列の長さと、ポートカウントの初期値を記述する。そして、特定パケット送受信部１１にそのtunnelパケットを送信させる。
【００４３】
また、特定パケット送受信部１１がスイッチからtunnelパケットを受信し、そのtunnelパケットを制御メッセージトンネリング処理部１５に出力した場合、制御メッセージトンネリング処理部１５は、そのtunnelパケットに含まれている制御メッセージをデカプセル化し、さらに、その制御メッセージを復号する。
【００４４】
なお、本実施形態では、ポートカウントの初期値を０とする場合を例にして説明するが、ポートカウントの初期値は０以外であってもよい。
【００４５】
特定パケット送受信部１１、トポロジー探索部１２、トポロジー保持部１３、制御チャネル経路決定部１４および制御メッセージトンネリング部１５は、それぞれ別々のユニットで実現されていてもよい。
【００４６】
また、特定パケット送受信部１１、トポロジー探索部１２、制御チャネル経路決定部１４および制御メッセージトンネリング部１５は、制御装置用プログラムに従って動作するコンピュータのＣＰＵによって実現されていてもよい。この場合、例えば、コンピュータのプログラム記憶装置（図示略）が制御装置用プログラムを記憶し、ＣＰＵがそのプログラムを読み込んで、そのプログラムに従って、特定パケット送受信部１１、トポロジー探索部１２、制御チャネル経路決定部１４および制御メッセージトンネリング部１５として動作すればよい。
【００４７】
次に、スイッチの構成について説明する。各スイッチ２０ａ〜２０ｄの構成は、同様である。以下、スイッチ２０ａを例にして説明する。
【００４８】
スイッチ２０ａは、スイッチ側特定パケット送受信部２１と、情報提供部２３と、経路保持部２４と、スイッチ側制御メッセージトンネリング部２５とを備える。
【００４９】
スイッチ側特定パケット送受信部２１（以下、特定パケット送受信部２１と記す。）は、特定パケットの転送、受信、送信を行う。
【００５０】
特定パケット送受信部２１は、特定パケットを受信した場合、その特定パケットに記述された出力ポート列の長さと、ポートカウントとを比較し、スイッチ２０ａ自身が特定パケットの宛先になっているか否かを判定する。本実施形態では、ポートカウントの初期値を０としているので、受信した特定パケット内のポートカウントに１加算した値と、出力ポート列の長さとが一致していれば、スイッチ２０ａ自身が特定パケットの宛先になっていると判定し、特定パケット内のポートカウントに１加算した値が出力ポート列の長さより小さければ、宛先になっていないと判定すればよい。なお、出力ポートの列の長さとは、特定パケット内に記述された出力ポートの数である。特定パケット送受信部２１は、スイッチ２０ａ自身が宛先でないと判定した場合、特定パケット内の出力ポート列に記述されたポートのうち、ポートカウントから定まるポートを、その特定パケットを受信したスイッチ２０ａ自身のポートに書き換える。本実施形態では、特定パケットに記述されたポートカウントの値をｋとすると、出力ポート列内でｋ＋１番目に記述されたポートを、特定パケットを受信したスイッチ２０ａ自身のポートに書き換える。また、特定パケット送受信部２１は、出力ポート列において、ｋ＋２番目のポート（すなわち、書き換えたポートの次のポート）を特定する。このポートが、スイッチ２０ａ自身から特定パケットを送信すべきポートである。また、特定パケット送受信部２１は、特定パケット内に記述されたポートカウントの値に１を加算する。そして、特定パケット送受信部２１は、特定したポートから特定パケットを送信する。この結果、ポートカウントがインクリメントされた特定パケットが転送される。
【００５１】
また、スイッチ２０ａ自身が特定パケットの宛先になっていると判定した場合、特定パケット送受信部２１は、特定パケットがrequest パケットであれば、そのrequest パケットを情報提供部２３に出力し、特定パケットがsetup パケットであれば、そのsetup パケットを経路保持部２４に出力し、特定パケットがtunnelパケットであれば、そのtunnelパケットをスイッチ側制御メッセージトンネリング部２５に出力する。
【００５２】
また、特定パケット送受信部２１は、reply パケットを送信する。後述するように、reply パケットを生成する情報提供部２３は、制御装置１０までの経路上の各スイッチにおける出力ポートを順にreply パケットに記述する。特定パケット送受信部２１は、その出力ポート列の最初に記述されたスイッチ２０ａ自身のポートからreply パケットを送信する。
【００５３】
情報提供部２３は、特定パケット送受信部２１からrequest パケットを入力されると、reply パケットとして、スイッチ２０ａ自身のリンクアップしているポートを示す情報と、スイッチ２０ａがそのrequest パケットを受信したポートを示す情報と、スイッチ２０ａの識別情報とを含むパケットを作成する。さらに、情報提供部２３は、そのスイッチ自身から制御装置１０までの経路上の各スイッチにおける出力ポートを順にreply パケットに記述する。この出力ポート列は、以下のように定めればよい。すなわち、情報提供部２３は、入力されたrequest パケットに記述された出力ポート列の最後のポートを、スイッチがそのrequest パケットを受信したポートに書き換える。さらに、情報提供部２３は、その書き換え後の出力ポート列内のポートの順を逆順に並べ替え、並べ替えた出力ポート列をreply パケットに記述する。また、情報提供部２３は、その出力ポート列の長さ、およびポートカウントの初期値もreply パケットに記述し、そのreply パケットを特定パケット送受信部２１に送信させる。この結果、スイッチは、request パケットを受信したポートから、そのrequest パケットに対するreply パケットを送信する。
【００５４】
経路保持部２４は、特定パケット送受信部２１からsetup パケットを入力されると、そのsetup パケットから制御装置１０までの制御チャネルとなる経路を記憶する。具体的には、経路保持部２４は、入力されたsetup パケットに記述された出力ポート列の最後のポートを、スイッチがそのsetup パケットを受信したポートに書き換える。そして、経路保持部２４は、その書き換え後の出力ポート列内のポートの順を逆順に並べ替え、並べ替えた出力ポート列を、制御チャネルとなる経路を表す情報として記憶する。
【００５５】
スイッチ側制御メッセージトンネリング部２５（以下、制御メッセージトンネリング部２５と記す。）は、制御装置１０とスイッチ間との間で授受する制御メッセージをトンネリングにより送受信する。すなわち、制御メッセージトンネリング部２５は、制御装置１０に送信する制御メッセージ（例えば、フローエントリ情報に規定されていないパケットを受信した旨のメッセージ）を暗号化し、カプセル化したtunnelパケットを生成する。このとき、制御メッセージトンネリング部２５は、制御装置１０までの制御チャネルを表す出力ポート列を経路保持部２４から読み取り、その出力ポート列をtunnelパケットに記述する。さらに、制御メッセージトンネリング部２５は、tunnelパケットに、その出力ポート列の長さと、ポートカウントの初期値を記述する。そして、特定パケット送受信部２１にそのtunnelパケットを送信させる。
【００５６】
また、特定パケット送受信部２１からtunnelパケットが入力された場合、制御メッセージトンネリング部２５は、そのtunnelパケットに含まれている制御メッセージ（例えば、フローエントリ情報）をデカプセル化し、さらに、その制御メッセージを復号する。
【００５７】
特定パケット送受信部２１、情報提供部２３、経路保持部２４および制御メッセージトンネリング部２５は、それぞれ別々のユニットで実現されていてもよい。
【００５８】
また、特定パケット送受信部２１、情報提供部２３、経路保持部２４および制御メッセージトンネリング部２５は、パケット転送装置用プログラムに従って動作するコンピュータのＣＰＵによって実現されていてもよい。この場合、例えば、コンピュータのプログラム記憶装置（図示略）がパケット転送装置用プログラムを記憶し、ＣＰＵがそのプログラムを読み込んで、そのプログラムに従って、特定パケット送受信部２１、情報提供部２３、経路保持部２４および制御メッセージトンネリング部２５として動作すればよい。
【００５９】
次に、本発明におけるソースルーティングについて説明する。ソースルーティングとは、送信元となるノードがパケット内に通信経路を記述し、中継ノードがパケット内に記述された通信経路に従ってパケットを転送するパケット転送方法である。ソースルーティングでは、中継ノードは、予め用意された経路情報を保持しておく必要がない。本発明の通信システムは、特定パケット内に、個々のノードが特定パケットを送信すべき出力ポートを順に並べた出力ポート列を記述する。そして、制御装置１０や各スイッチは、その出力ポート列に記述されたポートから特定パケットを送信することで、ソースルーティングを実現する。なお、制御装置１０や各スイッチは、自ノードに関する出力ポートが出力ポート列の何番目に記述されているのかを、ポートカウントによって判断する。以下、ソースルーティングの具体例を示す。
【００６０】
図３は、制御装置がスイッチに対してsetup パケットを送信する場合のソースルーティングの例を示す説明図である。ただし、説明を簡単にするため、図３に示すスイッチのトポロジーは、図２に示すトポロジーと異なるものとしている。図３に示す各スイッチ２０Ａ〜２０Ｄは、図２に示す各スイッチ２０ａ〜２０ｄと同様の構成である。また、図３において、制御装置１０および各スイッチ２０Ａ〜２０Ｄの近傍に示す数字は、各装置におけるポート識別番号である。また、以下の説明において、ポート識別番号がｎであるポートを、＃ｎと記す。
【００６１】
ここでは、制御装置１０がスイッチ２０Ｄを宛先としてsetup パケットを送信する場合を例にする。この例では、制御装置１０は、まず、ポートカウントを初期値０に設定し、｛２，３，２，１｝という出力ポート列を記述したsetup パケットを送信する。ここで、出力ポート列の先頭が“２”であるので、制御装置１０は、制御装置１０のポート＃２からsetup パケットを送信する（図３（ａ）参照）。
【００６２】
スイッチ２０Ａは、このsetup パケットをポート＃１で受信する。すると、スイッチ２０Ａは、ポートカウントの値が０であるので、出力ポート列内の１番目のポート識別番号を、setup パケットを受信したポート＃１のポート識別番号に書き換える。また、スイッチ２０Ａは、ポートカウントの値が０であるので、スイッチ２０Ａがsetup パケットを送信すべきポートが、出力ポート列内の２番目に記述されていると判定し、２番目に記述されたポート識別番号“３”を特定する。そして、スイッチ２０Ａは、ポートカウントの値を０から１に更新し、setup パケットをスイッチ２０Ａのポート＃３から送信する。このsetup パケット内に記述された出力ポート列は、｛１，３，２，１｝である（図３（ｂ）参照）。
【００６３】
スイッチ２０Ｂは、このsetup パケットをポート＃１で受信する。すると、スイッチ２０Ｂは、ポートカウントの値が１であるので、出力ポート列内の２番目のポート識別番号を、setup パケットを受信したポート＃１のポート識別番号に書き換える。また、スイッチ２０Ｂは、ポートカウントの値が１であるので、スイッチ２０Ｂがsetup パケットを送信すべきポートが、出力ポート列内の３番目に記述されていると判定し、３番目に記述されたポート識別番号“２”を特定する。そして、スイッチ２０Ｂは、ポートカウントの値を１から２に更新し、setup パケットをスイッチ２０Ｂのポート＃２から送信する。このsetup パケット内に記述された出力ポート列は、｛１，１，２，１｝である（図３（ｃ）参照）。
【００６４】
スイッチ２０Ｃは、このsetup パケットをポート＃３で受信する。すると、スイッチ２０Ｃは、ポートカウントの値が２であるので、出力ポート列内の３番目のポート識別番号を、setup パケットを受信したポート＃３のポート識別番号に書き換える。また、スイッチ２０Ｃは、ポートカウントの値が２であるので、スイッチ２０Ｃがsetup パケットを送信すべきポートが、出力ポート列内の４番目に記述されていると判定し、４番目に記述されたポート識別番号“１”を特定する。そして、スイッチ２０Ｃは、ポートカウントの値を２から３に更新し、setup パケットをスイッチ２０Ｃのポート＃１から送信する。このsetup パケット内に記述された出力ポート列は、｛１，１，３，１｝である（図３（ｄ）参照）。
【００６５】
スイッチ２０Ｄは、このsetup パケットをポート＃２で受信する。スイッチ２０Ｄは、ポートカウントの値が３であり、出力ポート列内のポート識別番号の数が４個であることから、スイッチ２０Ｄ自身が宛先であると判定する。そして、スイッチ２０Ｄは、setup パケット内の出力ポート列｛１，１，３，１｝の最後のポート識別番号“１”を、setup パケットを受信したポート＃２のポート識別番号に書き換える。その結果、出力ポート列は、｛１，１，３，２｝となる。スイッチ２０Ｄは、この出力ポート列を逆順に並べ替え、並べ替え後の出力ポート列｛２，３，１，１｝を、制御装置１０までの制御チャネルを表す出力ポート列として記憶する。
【００６６】
ここでは、制御装置がスイッチに対してsetup パケットを送信する場合を例に説明したが、制御装置がスイッチ２０Ｄに対してtunnelパケットやrequest パケットを送信する場合におけるスイッチ２０Ａ〜２０Ｃの動作も、同様である。この結果、スイッチ２０Ｄは、｛１，１，３，１｝という出力ポート列が記述されたtunnelパケットやrequest パケットをポート＃２で受信する。
【００６７】
ただし、スイッチ２０Ｄは、tunnelパケットを受信した場合、tunnelパケット内の出力ポート列に対する処理を行わなくてよい。
【００６８】
また、スイッチ２０Ｄは、request パケットを受信した場合、以下のように動作する。スイッチ２０Ｄは、ポートカウントの値が３であり、出力ポート列内のポート識別番号の数が４個であることから、スイッチ２０Ｄ自身が宛先であると判定する。そして、スイッチ２０Ｄは、request パケット内に記述された出力ポート列｛１，１，３，１｝の最後のポート識別番号を、そのrequest パケットを受信したポート＃２の識別番号に書き換える。その結果、出力ポート列は、｛１，１，３，２｝となる。この出力ポート列を逆順に並べ替え、並べ替え後の出力ポート列｛２，３，１，１｝を、reply パケットに記述し、｛２，３，１，１｝の１番目に対応するポート＃２からreply パケットを送信する。reply パケットを受信したときのスイッチの動作は、setup パケットやtunnelパケットを受信したときの動作と同様であり、このreply パケットは、制御装置１０に到達する。
【００６９】
ここでは、制御装置１０がスイッチ２０Ｄを宛先として、特定パケットを送信する場合を例示したが、他のスイッチを宛先とする場合も、各スイッチは、上記の説明と同様に動作する。
【００７０】
また、各スイッチが、制御装置１０までの制御チャネルとして記憶した出力ポート列をtunnelパケットに記述し、そのtunnelパケットを送信する場合も、他のスイッチは、上記と同様の動作を行って、tunnelパケットを制御装置１０まで順次転送する。
【００７１】
なお、図３では、ポートカウントの初期値を０とする場合を例にして説明した。各スイッチが、出力ポート列中の何番目のポート識別番号を書き換えるかという判定や、特定パケットをどのポートから転送するかという判定を行う方法は、ポートカウントの初期値に応じて予め定めておけばよい。また、特定パケットを受信したスイッチが、自身が宛先であるか否かを判定する方法も、ポートカウントの初期値に応じて予め定めておけばよい。
【００７２】
次に、特定パケットのフォーマットの例について説明する。特定パケットのフォーマットの例を図４に示す。図４に示す例では、イーサネット（登録商標）フレームのフォーマットで特定パケットを実現する場合の例を示している。図４において括弧書きで示した値は、バイト数を表す。イーサネットフレームフォーマットでは宛先ＭＡＣアドレス５１および送信元ＭＡＣアドレス５２が設けられる。しかし、本発明の通信システムは、特定パケットの送受信では、これらのアドレスは用いずに、上述のようにソースルーティングにより特定パケットを送信する。また、特定パケットでは、イーサネットフレームフォーマットにおけるタイプ５３に、特定パケットであることを示す値が格納される。制御装置１０や各スイッチは、特定パケットを生成する場合、特定パケットであることを示す値をタイプ５３に格納する。また、制御装置１０や各スイッチは、パケット受信時に、特定パケットであることを示す値がタイプ５３に格納されていることを条件に、受信したパケットが特定パケットであると判定する。
【００７３】
また、イーサネットフレームフォーマットのデータ５４には、特定パケットの種類を表すタイプ６１、第１データ長６２、出力ポート列の長さ６３、ポートカウント６４、出力ポート列６５、第２データ長６６、および特定パケットのデータ６７が含まれる。以下、イーサネットフレームフォーマットにおけるタイプ５３と区別するために、特定パケットの種類を表すタイプ６１を種別６１と記す。また、イーサネットフレームフォーマットにおけるデータ５４と区別するために、特定パケットのデータ６７を特定パケットデータ６７と記す。また、第１データ長６２（図４においてLengthと記す。）には、第１データ長６２以降の情報全体のデータ長が格納される。第２データ長６６（図４においてDataLengthと記す。）には、第２データ長６６以降の情報全体のデータ長が格納される。
【００７４】
出力ポート列の長さ６３（図４においてPortsLength と記す。）は、出力ポート列に含まれるポートの数である。より具体的には、出力ポート列に含まれるポート識別番号の数である。
【００７５】
ポートカウント６４（図４においてPortsCountと記す。）は、特定パケットの送信元からのホップ数に応じたカウント値である。
【００７６】
出力ポート列６５には、ポート識別番号が並べて格納される。
【００７７】
以下、特定パケットの種類毎に、イーサネットフレームフォーマットにおけるデータ５４に含まれる情報の例を示す。ただし、第１データ長６２、出力ポート列の長さ６３、ポートカウント６４、出力ポート列６５、第２データ長６６に関しては、説明を省略する。
【００７８】
図５は、request パケットに含まれる情報の例を示す説明図である。種別６１には、request パケットであることを示す値が格納される。制御装置１０は、request パケット生成時に、request パケットであることを示す値を種別６１に格納する。また、各スイッチは、パケット受信時に、request パケットであることを示す値が種別６１に格納されていることを条件に、受信したパケットがrequest パケットであると判定する。
【００７９】
request パケットでは、特定パケットデータ６７はＮＵＬＬである。
【００８０】
図６は、reply パケットに含まれる情報の例を示す説明図である。種別６１には、reply パケットであることを示す値が格納される。各スイッチは、reply パケット生成時に、reply パケットであることを示す値を種別６１に格納する。また、制御装置１０は、パケット受信時に、reply パケットであることを示す値が種別６１に格納されていることを条件に、受信したパケットがreply パケットであると判定する。
【００８１】
reply パケットでは、特定パケットデータ６７に、リンクアップしているポートを示す情報と、スイッチがrequest パケットを受信したポートを示す情報と、reply パケットの送信元となるスイッチの識別情報とが格納される。reply パケットを送信するスイッチは、reply パケット生成時にこれらの情報を特定パケットデータ６７に格納する。なお、図６に示す例では、“DataPathID”がスイッチの識別情報に該当する。また、“Requested_Port”が、request パケットの受信ポートに該当する。また、“Port#n_Status ”は、ポート識別番号がｎであるポートがリンクアップしているか否かを表している。例えば、スイッチは、リンクアップしているポートに関しては、Port#n_Status ＝１とし、リンクアップしていないポートに関しては、Port#n_Status ＝０とするように、“Port#n_Status ”の値をポート毎に定めればよい。よって、ポート毎に定められた“Port#n_Status ”の集合から、リンクアップしているポートを特定することができる。ただし、他の表現方法で、リンクアップしているポートが記述されてもよい。
【００８２】
図７は、setup パケットに含まれる情報の例を示す説明図である。種別６１には、setup パケットであることを示す値が格納される。制御装置１０は、setup パケット生成時に、setup パケットであることを示す値を種別６１に格納する。また、各スイッチは、パケット受信時に、setup パケットであることを示す値が種別６１に格納されていることを条件に、受信したパケットがsetup パケットであると判定する。
【００８３】
setup パケットでは、特定パケットデータ６７はＮＵＬＬである。
【００８４】
図８は、tunnelパケットに含まれる情報の例を示す説明図である。種別６１には、tunnelパケットであることを示す値が格納される。制御装置１０や各スイッチは、tunnelパケット生成時に、tunnelパケットであることを示す値を種別６１に格納する。また、制御装置１０や各スイッチは、パケット受信時に、tunnelパケットであることを示す値が種別６１に格納されていることを条件に、受信したパケットがtunnelパケットであると判定する。
【００８５】
tunnelパケットでは、特定パケットデータ６７に、制御メッセージが格納される。具体的には、オープンフローの一般的な通信システムにおいて制御メッセージとして送受信される制御パケットが格納される。従って、本発明の通信システムにおいても、一般的な通信システムと同様に、制御装置とスイッチとの間で制御メッセージの授受を行うことができる。
【００８６】
次に、動作について説明する。
図９から図１３までの各説明図は、制御装置がトポロジー情報を生成し、制御チャネルを形成する過程を示す模式図である。図９から図１３までの各図では、便宜的に、制御装置を符号Ａで表し、各スイッチを符号Ｂ〜Ｅで表す。制御装置Ａおよび個々のスイッチＢ〜Ｅの構成は、図２に示す構成と同様である。また、図９から図１３までの各図において、制御装置Ａおよび各スイッチＢの近傍に示す数字は、ポート識別番号を意味する。また、図９から図１３までの各図において、接続先未探索ポートと判定されるポートのポート識別番号は、円で囲んで示す。また、以下の説明において、制御装置ＡおよびスイッチＢ〜Ｅの各ポートを、制御装置やスイッチの符号とポート識別番号とともに“＃ｎ＠Ａ”，“＃ｎ＠Ｂ”等のように記すことがある。“＃”の次の数は、ポート識別番号を表し、“＠”の次の符号は、制御装置または各スイッチのいずれかを表す。例えば、“＃１＠Ａ”は、制御装置１０のポート＃１を意味し、“＃２＠Ｂ”は、スイッチＢのポート＃２を意味する。
【００８７】
また、図１４は、制御装置ＡおよびスイッチＢ〜Ｄが、request パケットおよびreply パケットを送受信する経過の例を示す説明図である。図１４において、破線の矢印はrequest パケットの送受信を表し、実線の矢印はreply パケットの送受信を表す。また、図１４に示す各矢印の両端に“＃”とともに示した番号は、request パケットやreply パケットを送信または受信したポートのポート識別番号を表す。なお、図１４は、request パケットおよびreply パケットを送受信する経過の一例であり、各パケットの送信順序は、図１４に示す順序に限定されない。例えば、図１４では、制御装置Ａが、スイッチＤとの間でrequest パケットおよびreply パケットの送受信を行ってから、スイッチＢとの間でrequest パケットおよびreply パケットの送受信を行う場合を示しているが、この順序は逆であってもよい。また、制御装置Ａが、スイッチＢとスイッチＤの双方に並列にrequest パケットの送信を行い、それぞれのスイッチから連続してreply パケットを受信してもよい。
【００８８】
初期状態において、制御装置Ａのトポロジー探索部１２は、制御装置Ａのリンクアップしているポートであって、どのスイッチのどのポートに接続されているか未知のポートを、接続先未探索ポートとして選択する。本例では、トポロジー探索部１２は、＃１＠Ａ（制御装置Ａのポート＃１）と、＃２＠Ａ（制御装置Ａのポート＃２）とを選択する（図９参照）。そして、制御装置Ａの特定パケット送受信部１１は、その接続先未探索ポート＃１＠Ａ，＃２＠Ａから、それぞれrequest パケットを送信する（図９、図１４参照）。なお、トポロジー探索部１２は、＃１＠Ａから送信するrequest パケットには、ソースルーティングのための出力ポート列として｛＃１｝を記述し、同様に、＃２＠Ａから送信するrequest パケットには、出力ポート列として｛＃２｝を記述する。
【００８９】
スイッチＤの特定パケット送受信部２１は、＃１＠Ａから送信されたrequest パケットを＃１＠Ｄ（スイッチＤのポート＃１）で受信する。そして、スイッチＤの情報提供部２３は、スイッチＤ自身の識別情報と、request パケットの受信ポート＃１を示す情報と、スイッチＤにおいてリンクアップしているポートの情報とを含むreply パケットを生成する。このとき、情報提供部２３は、スイッチＤにおいてリンクアップしているポートの情報として＃１，＃２，＃３を示す情報をreply パケットに記述する。また、情報提供部２３は、このreply パケットに、ソースルーティングのための出力ポート列として｛＃１｝を記述する。そして、スイッチＤの特定パケット送受信部２１は、request パケットを受信した＃１＠Ｄからreply パケットを送信する（図１０参照）。図１４では、このreply パケットを“reply(src:#1@D,ports:#1,#2,#3)”と記載している。
【００９０】
同様に、スイッチＢの特定パケット送受信部２１は、＃２＠Ａから送信されたrequest パケットを＃２＠Ｂ（スイッチＢのポート＃２）で受信する。そして、スイッチＢの情報提供部２３は、スイッチＢ自身の識別情報と、request パケットの受信ポート＃２を示す情報と、スイッチＢにおいてリンクアップしているポートの情報とを含むreply パケットを生成する。このとき、情報提供部２３は、スイッチＢにおいてリンクアップしているポートの情報として＃１，＃２，＃３を示す情報をreply パケットに記述する。また、情報提供部２３は、このreply パケットに、ソースルーティングのための出力ポート列として｛＃２｝を記述する。そして、スイッチＢの特定パケット送受信部２１は、request パケットを受信した＃２＠Ｂからreply パケットを送信する（図１０参照）。図１４では、このreply パケットを“reply(src:#2@B,ports:#1,#2,#3)”と記載している。
【００９１】
制御装置Ａの特定パケット送受信部１１は、request パケットを送信した制御装置Ａのポートで、そのrequest パケットに応じてスイッチから送信されたreply パケットを受信する。そして、制御装置Ａのトポロジー探索部１２は、そのrequest パケット送信の際に選択した接続先未探索ポートに、reply パケットの送信元のスイッチのポートであって、そのスイッチがrequest パケットを受信したポートが接続されると判定し、その接続関係をトポロジー情報としてトポロジー保持部１３に記憶させる。さらに、制御スイッチＡのトポロジー探索部１２は、reply パケットの送信元のスイッチのポートから接続先未探索ポートを選択し、接続先未探索ポートから送信されるrequest パケットを生成する。トポロジー探索部１２は、このrequest パケットに対し、制御装置Ａの出力ポート、および、選択した接続先未探索ポートまでの経路を形成する各スイッチの出力ポートを記述すればよい。そして、制御装置Ａの特定パケット送受信部１１は、このrequest パケットを送信する。
【００９２】
上記の例では、制御装置Ａの特定パケット送受信部１１は、＃１＠Ｄから送信されたreply パケットを＃１＠Ａで受信する。そして、制御装置Ａのトポロジー探索部１２は、request パケット送信時に選択した接続先未探索ポート＃１＠Ａに＃１＠Ｄが接続されていると判定し、トポロジー保持部１３に記憶させる。さらに、トポロジー探索部１２は、そのreply パケットの送信元のスイッチＤのポート＃１，＃２，＃３のうち、接続先未探索ポートとして＃２，＃３を選択する（図１１参照）。トポロジー探索部１２は、接続先未探索ポート＃２＠Ｄから送信されるrequest パケットを生成する。トポロジー探索部１２は、このrequest パケットに対して、ソースルーティングのための出力ポート列として｛＃１，＃２｝を記述し、制御装置Ａの特定パケット送受信部１１は、１番目に記述された＃１からrequest パケットを送信する。スイッチＤの特定パケット送受信部２１は、このrequest パケットを受信し、出力ポート列の２番目に記述された＃２からrequest パケットを転送する（図１１、図１４参照）。また、制御装置Ａのトポロジー探索部１２は、接続先未探索ポート＃３＠Ｄから送信されるrequest パケットを生成する。トポロジー探索部１２は、このrequest パケットに対して、ソースルーティングのための出力ポート列として｛＃１，＃３｝を記述し、制御装置Ａの特定パケット送受信部１１は、１番目に記述された＃１からrequest パケットを送信する。スイッチＤの特定パケット送受信部２１は、このrequest パケットを受信し、出力ポート列の２番目に記述された＃３からrequest パケットを転送する（図１１、図１４参照）。
【００９３】
また、同様に、制御装置Ａは、＃２＠Ｂから送信されたreply パケットを＃２＠Ａで受信する。そして、制御装置Ａは、接続先未探索ポート＃２＠Ａに＃２＠Ｂが接続されていると判定し、記憶する。さらに、制御装置Ａは、そのreply パケットの送信元のスイッチＢのポート＃１，＃２，＃３のうち、接続先未探索ポートとして＃１，＃３を選択する（図１１参照）。制御装置Ａは、接続先未探索ポート＃１＠Ｂから送信されるrequest パケットを生成する。制御装置Ａは、このrequest パケットに対して、ソースルーティングのための出力ポート列として｛＃２，＃１｝を記述し、１番目に記述した＃２からrequest パケットを送信する。スイッチＢは、このrequest パケットを受信し、出力ポート列の２番目に記述された＃１からrequest パケットを転送する（図１１、図１４参照）。また、制御装置Ａは、接続先未探索ポート＃３＠Ｂから送信されるrequest パケットを生成する。制御装置Ａは、このrequest パケットに対して、ソースルーティングのための出力ポート列として｛＃２，＃３｝を記述し、１番目に記述した＃２からrequest パケットを送信する。スイッチＢは、このrequest パケットを受信し、出力ポート列の２番目に記述された＃３からrequest パケットを転送する（図１１、図１４参照）。
【００９４】
スイッチＣの特定パケット送受信部２１は、＃２＠Ｄから転送されたrequest パケットを＃１＠Ｃで受信し、＃３＠Ｂから転送されたrequest パケットを＃２＠Ｃで受信する。そして、スイッチＣの情報提供部２３は、スイッチＣ自身の識別情報と、request パケットの受信ポートを示す情報と、スイッチＣにおいてリンクアップしているポートの情報とを含むreply パケットを、request パケットの受信ポート毎に作成する。このとき、情報提供部２３は、各reply パケットに対して、スイッチＣにおいてリンクアップしているポートの情報として＃１，＃２を記述する。本例では、情報提供部２３は、＃２＠Ｄから転送されたrequest パケットに対するreply パケットには、出力ポート列として｛１，１｝を記述する。スイッチＣの特定パケット送受信部２１は、reply パケットを＃１から送信し、スイッチＤはこのreply パケットを＃１から送信し、reply パケットは、制御装置Ａに到達する（図１２、図１４参照）。図１４では、このreply パケットを“reply(src:#1@C,ports:#1,#2)”と記載している。同様に、スイッチＣは、＃３＠Ｂから転送されたrequest パケットに対するreply パケットには、出力ポート列として｛２，２｝を記述する。スイッチＣは、reply パケットを＃２から送信し、スイッチＢはこのreply パケットを＃２から送信し、reply パケットは、制御装置Ａに到達する（図１２、図１４参照）。図１４では、このreply パケットを“reply(src:#2@C,ports:#1,#2)”と記載している。
【００９５】
なお、制御装置Ａが受信するreply パケット“reply(src:#1@C,ports:#1,#2)”、“reply(src:#2@C,ports:#1,#2)”は、いずれもスイッチＣのポートとして＃１，＃２があるという情報を含む。従って、制御装置Ａが受信するreply パケットの内容には重複する内容が存在する。制御装置Ａは、このような重複する情報を残したままトポロジー情報を生成してもよい。あるいは、重複がなくなるように、情報の一部を削除してからトポロジー情報を生成してもよい。
【００９６】
スイッチＥの動作も、スイッチＣと同様である。すなわち、スイッチＥの特定パケット送受信部２１は、＃３＠Ｄから転送されたrequest パケットを＃１＠Ｅで受信し、＃１＠Ｂから転送されたrequest パケットを＃２＠Ｅで受信する。そして、スイッチＥの情報提供部２３は、スイッチＥ自身の識別情報と、request パケットの受信ポートを示す情報と、スイッチＥにおいてリンクアップしているポートの情報とを含むreply パケットを、request パケットの受信ポート毎に作成する。このとき、情報提供部２３は、各reply パケットに対して、スイッチＥにおいてリンクアップしているポートの情報として＃１，＃２を記述する。本例では、情報提供部２３は、＃３＠Ｄから転送されたrequest パケットに対するreply パケットには、出力ポート列として｛１，１｝を記述する。スイッチＥの特定パケット送受信部２１は、reply パケットを＃１から送信し、スイッチＤはこのreply パケットを＃１から送信し、reply パケットは、制御装置Ａに到達する（図１２、図１４参照）。図１４では、このreply パケットを“reply(src:#1@E,ports:#1,#2)”と記載している。同様に、スイッチＥは、＃１＠Ｂから転送されたrequest パケットに対するreply パケットには、出力ポート列として｛２，２｝を記述する。スイッチＥは、reply パケットを＃２から送信し、スイッチＢはこのreply パケットを＃２から送信し、reply パケットは、制御装置Ａに到達する（図１２、図１４参照）。図１４では、このreply パケットを“reply(src:#2@E,ports:#1,#2)”と記載している。
【００９７】
制御装置Ａの特定パケット送受信部１１は、＃１＠Ｃから送信されたreply パケットを＃１＠Ａで受信する。そして、制御装置Ａのトポロジー探索部１２は、request パケット送信時に選択した接続先未探索ポート＃２＠Ｄに＃１＠Ｃが接続されていると判定し、トポロジー情報に追加する。同様に、制御装置Ａは、＃２＠Ｃから送信されたreply パケットを＃２＠Ａで受信する。そして、制御装置Ａは、request パケット送信時に選択した接続先未探索ポート＃３＠Ｂに＃２＠Ｃが接続されていると判定し、トポロジー情報に追加する。
【００９８】
また、制御装置Ａの特定パケット送受信部１１は、＃１＠Ｅから送信されたreply パケットを＃１＠Ａで受信する。そして、制御装置Ａのトポロジー探索部１２は、request パケット送信時に選択した接続先未探索ポート＃３＠Ｄに＃１＠Ｅが接続されていると判定し、トポロジー情報に追加する。同様に、制御装置Ａは、＃２＠Ｅから送信されたreply パケットを＃２＠Ａで受信する。そして、制御装置Ａは、request パケット送信時に選択した接続先未探索ポート＃１＠Ｂに＃２＠Ｅが接続されていると判定し、トポロジー情報に追加する。
【００９９】
この結果、トポロジー情報において接続先未探索ポートが存在しなくなり、制御装置Ａのトポロジー探索部１２はトポロジー情報が完成したと判定する。そして、制御装置Ａの制御チャネル経路決定部１４は、スイッチ毎に制御チャネルを決定する。制御チャネル経路決定部１４は、例えば、ダイクストラ法によりスイッチまでの最短経路を計算し、その経路を制御チャネルとして決定する（図１３参照）。さらに、制御装置Ａの制御チャネル経路決定部１４は、各スイッチＢ〜Ｅに対してsetup パケットを生成し、特定パケット送受信部１１が、各スイッチＢ〜Ｅ宛のsetup パケットをそれぞれ送信する。各スイッチＢ〜Ｅの経路保持部２４は、setup パケットを受信すると、setup パケットに基づいて制御装置Ａまでの経路を制御チャネルとして記憶する。なお、図１３では、制御装置ＡがスイッチＣ，Ｅに対して決定した制御チャネルを太線のリンクで例示しているが、スイッチＣ，Ｅに対する制御チャネルは図１３に示す場合に限定されない。
【０１００】
以降、制御チャネルＡと、各スイッチＢ〜Ｅは、制御チャネルを介して、トンネリングにより制御メッセージを送受信する。
【０１０１】
ここで、上記の動作で生成されるトポロジー情報のデータ構造の例を示す。トポロジー情報として、どのスイッチのどのポートと、どのスイッチのどのポートとが接続されているかが記述される。トポロジー探索部１２は、例えば、（＃１＠Ａ，＃１＠Ｄ）のように、接続されるスイッチのポート同士を組にして記述するデータ構造でトポロジー情報を生成すればよい。また、接続先未探索ポートは、「未知のポート」を意味するデータ（本例では“？”と記す。）と組にして記述してもよい。例えば、（＃３＠Ｄ，？）という組によって、＃３＠Ｄが接続先未探索ポートであることを表してもよい。あるいは、接続先未探索ポートに関しては、組として記述せずに、接続先未探索ポートの情報のみを単独で記述するデータ構造であってもよい。以下、接続先未探索ポートを“？”との組として記述するデータ構造を第１データ構造と記す。また、接続先未探索ポートに関しては、組として記述せずに、接続先未探索ポートを単独で記述するデータ構造を第２のデータ構造と記す。トポロジー情報は、第１データ構造および第２のデータ構造のどちらで記述されていてもよく、あるいは、他の記述形式のデータ構造で記述されていてもよい。
【０１０２】
図１４に示すrequest パケットおよびreply パケットの送受信の結果、トポロジー情報が生成されていく過程を以下に示す。以下に示す例では、第１データ構造でトポロジー情報を記述する場合と、第２のデータ構造でトポロジー情報を記述する場合の両方を示す。
【０１０３】
図１５は、初期状態のトポロジー情報の例を示す。第１のデータ構造で記述した場合、初期状態でのトポロジー情報は、（＃１＠Ａ，？），（＃２＠Ａ，？）というポートの組として表される。第２のデータ構造で記述した場合には、ポート同士の組は存在せず、接続先未探索ポートとして＃１＠Ａ，＃２＠Ａが記述される。
【０１０４】
図１６は、制御装置Ａが、＃１＠Ｄから送信されたreply パケットを受信して作成したトポロジー情報の例を示す。このreply パケットに基づいて、＃１＠Ａと＃１＠Ｄとが接続されているという情報が追加される。また、接続先未探索ポートとして、＃２＠Ｄ，＃３＠Ｄが追加される。
【０１０５】
図１７は、制御装置Ａが、＃２＠Ｂから送信されたreply パケットを受信して作成したトポロジー情報の例を示す。このreply パケットに基づいて、＃２＠Ａと＃２＠Ｂとが接続されているという情報が追加される。また、接続先未探索ポートとして、＃１＠Ｂ，＃３＠Ｂが追加される。
【０１０６】
図１８は、制御装置Ａが、＃１＠Ｃから送信されたreply パケットを受信して作成したトポロジー情報の例を示す。このreply パケットに基づいて、＃２＠Ｄと＃１＠Ｃとが接続されているという情報が追加される。また、接続先未探索ポートとして、＃２＠Ｃが追加される。
【０１０７】
図１９は、制御装置Ａが、＃１＠Ｅから送信されたreply パケットを受信して作成したトポロジー情報の例を示す。このreply パケットに基づいて、＃３＠Ｄと＃１＠Ｅとが接続されているという情報が追加される。また、接続先未探索ポートとして、＃２＠Ｅが追加される。
【０１０８】
図２０は、制御装置Ａが、＃２＠Ｅから送信されたreply パケットを受信して作成したトポロジー情報の例を示す。このreply パケットに基づいて、＃１＠Ｂと＃２＠Ｅとが接続されているという情報が追加される。
【０１０９】
図２１は、制御装置Ａが、＃２＠Ｃから送信されたreply パケットを受信して作成したトポロジー情報の例を示す。このreply パケットに基づいて、＃３＠Ｂと＃２＠Ｃとが接続されているという情報が追加される。また、この結果、接続先未探索ポートがない状態となる。
【０１１０】
また、通信システムは、定期的に、最初からトポロジー情報を作成し直して、スイッチの最新のトポロジーに応じたトポロジー情報を作成し、そのトポロジー情報に基づいて制御チャネルを決定する。例えば、制御装置Ａのトポロジー探索部１２は、定期的にトポロジー保持部１３に記憶されているトポロジー情報を削除して初期状態に戻し、request パケット生成から処理をやり直す。この結果、一旦、トポロジー情報を作成した後に、スイッチ群のトポロジーが変化しても、変化後のトポロジーを反映したトポロジー情報を作成し直し、また、変化後のトポロジーを反映して制御チャネルを決定することができる。
【０１１１】
以下、図２、図２２および図２３を参照し、制御装置およびスイッチの動作を詳細に説明する。
【０１１２】
図２２は、制御装置１０の処理経過の例を示すフローチャートである。なお、制御装置１０は初期状態であるものとする。すなわち、トポロジー情報が保持されていない情報であるものとする。制御装置１０のトポロジー探索部１２は、接続先未探索ポートを選択する（ステップＳ１）。トポロジー探索部１２は、初期状態では、制御装置１０のリンクアップしているポートを選択する。また、トポロジー保持部１３にトポロジー情報が記憶されている場合、トポロジー探索部１２は、トポロジー情報を参照して、各スイッチのリンクアップしているポートのうち、どのスイッチのどのポートに接続されているか未知のポートを選択する。
【０１１３】
トポロジー探索部１２は、ステップＳ１において接続先未探索ポートを選択できたか否かを判定する（ステップＳ２）。接続先未探索ポートを選択できた場合（ステップＳ２のＹｅｓ）、トポロジー探索部１２は、接続先未探索ポートから送信されるrequest パケットを生成し、特定パケット送受信部１１に送信させる（ステップＳ３）。ステップＳ１で複数の接続先未探索ポートが選択された場合、トポロジー探索部１２は、接続先未探索ポート毎にrequest パケットを生成する。接続先未探索ポートが制御装置１０のポートである場合、トポロジー探索部１２は、request パケットの出力ポート列として、そのポートのポート識別番号を記述し、出力ポート列の長さとして１を記述する。また、制御装置１０はステップＳ１〜Ｓ５のループ処理を繰り返すことで、制御装置１０のポートを起点として、制御装置１０からのホップ数が少ないスイッチから順に、ポート同士の接続関係を判定していく。従って、接続先未探索ポートがスイッチのポートである場合、トポロジー探索部１２は、制御装置１０のポートから接続先未探索ポートまでの経路上の各スイッチの出力ポートを特定することができ、制御装置１０のポートから接続先未探索ポートまでの各出力ポートのポート識別番号を順に出力ポート列として記述する。また、トポロジー探索部１２は、その出力ポートの数を出力ポート列の長さとして、request パケットに記述する。また、トポロジー探索部１２は、全てのrequest パケットに対して、ポートカウントとして初期値０を記述する。特定パケット送受信部１１は、各request パケットを、request パケット内の出力ポート列の１番目に記述されたポートから送信する。
【０１１４】
ステップＳ３で送信された各request パケットは、request パケット内の出力ポート列の最後に記述されたポート（接続先未探索ポート）に接続されるスイッチに到達し、そのスイッチは、制御装置１０宛のreply パケットを、request パケットの受信ポートから送信する。このreply パケットには、reply パケットの送信元のスイッチの識別情報、そのスイッチにおいてリンクアップしているポートを示す情報、および、そのスイッチがrequest パケットを受信したポートを示す情報とが含まれている。
【０１１５】
制御蔵置１０の特定パケット送受信部１１は、request パケットの宛先となったスイッチ（すなわち、接続先未探索ポートに接続されていたスイッチ）から送信されたreply パケットを受信する（ステップＳ４）。特定パケット送受信部１１は、受信した特定パケットがreply パケットであると判定すると、そのreply パケットをトポロジー探索部１２に出力する。
【０１１６】
トポロジー探索部１２は、特定パケット送受信部１１から入力されたreply 情報に基づいて、トポロジー情報を更新する（ステップ５）。すなわち、入力されたreply 情報によって、新たに明らかになったポート同士の接続関係をトポロジー保持部１３に記憶させることによって、新たに明らかになったポート同士の接続関係をトポロジー情報に追加する。
【０１１７】
ステップＳ５において、トポロジー探索部１２は、入力されたreply 情報に基づいて、以下のように、ポート同士の接続関係を特定すればよい。request パケットの出力ポート列の最後には、接続先未探索ポートのポート識別番号が記述されているので、request パケットは、制御装置１０を起点に順次スイッチを転送され、接続先未探索ポートに接続されたスイッチに到達する。そのスイッチが送信したreply パケットには、そのスイッチ自身の識別情報と、そのスイッチにおいてリンクアップしているポートを示す情報、および、そのスイッチがrequest パケットを受信したポートを示す情報とが含まれている。従って、トポロジー探索部１２は、request パケットとは逆の経路で転送されてきたreply パケットを参照し、request パケットの出力ポート列の最後に記述された接続先未探索ポートに、reply パケットの送信元スイッチが接続され、かつ、そのスイッチがrequest パケットを受信したポートが接続されていると判定すればよい。この結果、接続先未探索ポートがどのスイッチのどのポートに接続されているかが明らかになる。トポロジー探索部１２は、接続先未探索ポートと、その接続先未探索ポートに接続されるスイッチのポートとの接続関係をトポロジー情報に追加する。さらに、トポロジー探索部１２は、接続先未探索ポートに接続されていると判定されたスイッチ（すなわち、reply パケットの送信元のスイッチ）においてリンクアップしているポートの情報も、トポロジー情報に追加する。トポロジー探索部１２は、接続先未探索ポートに接続されていると判定されたスイッチにおいてリンクアップしているポートのうち、どのスイッチのどのポートに接続されているかが未知のポートを、次回のステップＳ１において、接続先未探索ポートとして選択する。
【０１１８】
ステップＳ５の後、制御装置１０は、ステップＳ１以降の処理を繰り返す。
【０１１９】
トポロジー情報に接続先未探索ポートが示されておらず、接続先未探索ポートを選択できなかった場合（ステップＳ２のＮｏ）、トポロジー情報が完成したことになる。この場合、制御チャネル経路決定部１４は、トポロジー保持部１３に記憶されている完成したトポロジー情報を参照して、各スイッチまでの制御チャネルを決定する。この決定方法は、特に限定されない。制御チャネル経路決定部１４は、例えば、各スイッチまでの最短経路を計算し、その最短経路を制御チャネルと定めてもよい。制御チャネル経路決定部１４は、スイッチ毎に、そのスイッチまでの制御チャネルを表す出力ポート列を記述したsetup パケットを生成する。また、制御チャネル経路決定部１４は、ポートカウントとして初期値０をsetup パケットに記述し、また、出力ポート列の長さも記述する。制御チャネル経路決定部１４は、スイッチ毎に生成したsetup パケットを特定パケット送受信部１１に送信させる（ステップＳ６）。このとき、特定パケット送受信部１１は、setup パケット内の出力ポート列の一番目に記述されたポートからsetup パケットを送信する。
【０１２０】
setup パケットを受信したスイッチは、setup パケットに基づいて制御装置１０までの制御チャネルを特定し、記憶する。この結果、制御装置１０および各スイッチは制御チャネルを認識可能な状態となる。制御装置１０が制御メッセージを送信する場合、制御メッセージトンネリング部１５は、制御メッセージを暗号化しカプセル化したtunnelパケットを生成する。そして、制御メッセージトンネリング部１５は、tunnelパケットに制御チャネルを表す出力ポート列、その出力ポート列の長さ、およびポートカウントの初期値０を記述し、特定パケット送受信部１１に送信させる。特定パケット送受信部１１は、tunnelパケット内の出力ポート列の一番目に記述されたポートからtunnelパケットを送信する。スイッチが制御メッセージを送信する場合、制御メッセージトンネリング部２５および特定パケット送受信部２１が同様の動作を行う。
【０１２１】
また、制御装置１０の特定パケット送受信部１１がスイッチからのtunnelパケットを受信したと判定した場合、特定パケット送受信部１１はそのtunnelパケットを制御メッセージトンネリング部１５に出力する。制御メッセージトンネリング部１５は、制御メッセージをデカプセル化し、復号する。そして、制御装置１０は、その制御メッセージに応じた処理を実行する。
【０１２２】
また、トポロジー探索部１２は、トポロジー保持部１３に記憶されたトポロジー情報を、定期的に削除し、初期状態に戻す。そして、初期状態から、ステップＳ１以降の処理を行う。この結果、制御装置１０は、定期的に、トポロジー情報を生成し直すことになる。すると、一旦、トポロジー情報を作成した後、スイッチのトポロジーが変更されたとしても、制御装置１０は、新たにトポロジー情報を作成するときにその変更後のトポロジーを反映することができる。また、制御装置１０は、変更後のトポロジーを反映した制御チャネルを決定することができる。
【０１２３】
図２３は、スイッチの処理経過の例を示すフローチャートである。スイッチが特定パケットを受信すると、特定パケット送受信部２１は、特定パケットを受信したスイッチ自身が特定パケットの宛先になっているか否かを判定する（ステップＳ２１）。スイッチ自身が宛先になっている場合（ステップＳ２１のＹｅｓ）、特定パケット送受信部２１は、その特定パケットの種別を判定する（ステップＳ２２）。
【０１２４】
特定パケットがrequest パケットである場合、特定パケット送受信部２１は、そのrequest パケットを情報提供部２３に出力する（ステップＳ２３）。すると、情報提供部２３は、そのスイッチ自身のリンクアップしているポートの情報と、そのスイッチの識別情報と、request パケットの受信ポートのポート識別番号とを含むreply パケットを生成する。また、情報提供部２３は、入力されたrequest パケットに記述された出力ポート列の最後のポート識別番号を、request パケットの受信ポートのポート識別番号に書き換え、さらに、その出力ポート列内のポート識別番号を逆順に並べ替える。情報提供部２３は、並べ替え後の出力ポート列をreply パケットに記述する。さらに、情報提供部２３は、その出力ポート列の長さ、およびポートカウントの初期値もreply パケットに記述し、そのreply パケットを特定パケット送受信部２１に送信させる（ステップＳ２４）。ステップＳ２４において、特定パケット送受信部２１は、出力ポート列の最初に記載されたポート識別番号が表すポートからreply パケットを送信する。この結果、reply パケットは、request パケットの転送経路を逆向きに転送され、制御装置１０に到達する。
【０１２５】
また、特定パケットがsetup パケットである場合、特定パケット送受信部２１は、そのsetup パケットを経路保持部２４に出力する（ステップＳ２５）。経路保持部２４は、setup パケットに記述された出力ポート列の最後のポート識別番号を、setup パケットの受信ポートのポート識別番号に書き換える。そして、経路保持部２４は、その出力ポート列のポート識別番号を逆順に並べ替え、並べ替えた出力ポート列を、制御チャネルとなる経路を表す情報として記憶する（ステップＳ２６）。
【０１２６】
また、特定パケットがrequest パケットである場合、特定パケット送受信部２１は、そのtunnelパケットを制御メッセージトンネリング部２５に出力する（ステップＳ２７）。制御メッセージトンネリング部２５は、tunnelパケットから制御メッセージをデカプセル化し、復号する（ステップＳ３３）。なお、スイッチは、その制御メッセージに応じた処理を行う。
【０１２７】
また、特定パケットを受信したスイッチ自身が特定パケットの宛先でない場合（ステップＳ２１のＮｏ）、特定パケット送受信部２１は、出力ポート列内のポート識別番号のうち、ポートカウントから定まる位置のポート識別番号を、特定パケットの受信ポートのポート識別番号に置き換える。また、特定パケット送受信部２１は、特定パケットのポートカウントに１を加算する（ステップＳ２９）。そして、特定パケット送受信部２１は、その特定パケットを送信する（ステップＳ３０）。
【０１２８】
ステップＳ２４，Ｓ２６，Ｓ２８，Ｓ３０のいずれかを行ったならば、特定パケット受信時の処理を終了する。
【０１２９】
本発明によれば、スイッチがデータパケットを転送する通信ネットワークを介して、制御装置とスイッチとの間の制御チャネルが設定される。すなわち、スイッチがデータパケットを転送する通信ネットワークと、制御チャネルとを一種類の通信ネットワークで実現することができる。さらに、その結果、以下のような効果も得ることができる。
【０１３０】
第一に、冗長性・耐障害性を向上させることができる。スイッチがデータパケットを転送する通信ネットワークの一部に障害が発生したとしても、制御装置１０からスイッチまでの経路が確保されていれば、制御チャネルを設定することができるからである。例えば、図２に示すトポロジーにおいて、制御装置１０とスイッチ２０ｂとの間のリンクに障害が生じて、スイッチ２０ｂと制御装置１０とがリンクアップしていない状態になったとしても、制御装置１０がスイッチ２０ａ側からスイッチ２０ａ〜２０ｄに対して順次request パケットを送信することができる。その結果、制御装置１０と各スイッチ間の制御チャネルを設定することができる。
【０１３１】
図２７に例示する一般的な通信システムと比較すると、図２７に示すように、パケット転送用通信ネットワーク９４とは別に制御用通信ネットワーク９３を設ける構成では、物理的に制御装置９１から各スイッチ９２に到達可能な経路が存在したとしても、その経路は制御用には用いられないため、制御用通信ネットワーク９３に障害が発生すると制御装置９１による制御が行えなくなり、耐障害性が低かった。一方、本発明によれば、上記のように冗長性・耐障害性を向上できる。
【０１３２】
第二に、制御チャネル専用の通信ネットワークを設ける必要がないので、そのような専用ネットワークを管理する必要がなく、通信システムの管理コストを低減することができる。スイッチを増加したり削減したりした場合にも、制御装置１０が定期的に、トポロジー情報を削除して初期状態に戻し、ステップＳ１（図２２参照）以降の処理を開始することで、その時点における最新のトポロジー情報を作成することができ、各スイッチとの制御チャネルを設定することができる。
【０１３３】
図２７に例示する一般的な通信システムと比較すると、図２７に例示する通信システムでは、パケット転送用通信ネットワーク９４と制御用通信ネットワーク９３の両方を管理しなければならないので、管理コストが大きい。例えば、スイッチを増やす等してスイッチ群のトポロジーを変更する場合、その変更に合わせて、パケット転送用通信ネットワーク９４と制御用通信ネットワーク９３の両方に対するリンク追加作業が生じる。一方、本発明によれば、上記のように通信システムの管理コストを低減できる。
【０１３４】
第三に、スイッチの数が増加した場合にも、上記の通り、制御装置１０がrequest パケットを送信することにより、最新のトポロジー情報を作成することができる。このとき、request パケットの送信元は制御装置１０のみであるので、スイッチ増設時における特定パケットの通信量は、ＳＴＰにおけるＢＰＤＵ等を採用する場合に比べ少なく抑えることができる。従って、トポロジー情報の生成までに時間がかかってしまったり、通信帯域を圧迫したりすることを防止できる。
【０１３５】
図２７に例示する一般的な通信システムと比較すると、図２７に例示する通信システムでは、スイッチ群のトポロジーに変更が生じた場合、通信システムが新たなトポロジーを把握するための制御フレーム（例えば、ＳＴＰにおけるＢＰＤＵ）がスイッチ間で送受信されるため、スイッチ数が多い場合には、そのような制御フレームが多発し、収束するまでに時間がかかったり、通信帯域を圧迫したりする。一方、本発明では、上記のように、スイッチ増設時における特定パケットの通信量を、ＳＴＰにおけるＢＰＤＵ等を採用する場合に比べ少なく抑えることができるので、通信システムの規模に関してスケーラビリティを実現できる。
【０１３６】
次に、本発明の最小構成の例を説明する。図２４は、本発明の通信システムの最小構成の例を示すブロック図である。図２５は、本発明の制御装置の最小構成の例を示すブロック図である。図２６は、本発明のパケット転送装置の最小構成の例を示すブロック図である。
【０１３７】
本発明の通信システムは、複数のパケット転送装置９０（例えば、スイッチ２０ａ〜２０ｄ）と、パケット転送装置９０を制御する制御装置８０（例えば、制御装置１０）とを備える。
【０１３８】
制御装置８０は、トポロジー情報記憶手段８１と、接続先未探索ポート特定手段８２と、応答要求送信手段８３と、応答要求受信手段８４とを含む（図２４、図２５参照）。
【０１３９】
トポロジー情報記憶手段８１（例えば、トポロジー保持部１３）は、制御装置８０またはパケット転送装置９０の各ポート間の接続情報を含むトポロジー情報を記憶する。
【０１４０】
接続先未探索ポート特定手段８２（例えば、トポロジー探索部１２におけるステップＳ１を実行する部分）は、トポロジー情報から、制御装置８０またはパケット転送装置９０のポートのうち接続先が未探索である接続先未探索ポートを特定する。
【０１４１】
応答要求送信手段８３（例えば、トポロジー探索部１２および制御装置側特定パケット送受信部１１）は、接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求（例えば、request パケット）を送る。
【０１４２】
応答受信手段８４（例えば、制御装置側特定パケット送受信部１１）は、接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答（例えば、reply パケット）を受信する。
【０１４３】
また、パケット転送装置９０は、転送判定手段９１と、転送手段９２と、応答送信手段９３とを含む。
【０１４４】
転送判定手段９１（例えば、スイッチ側特定パケット送受信部２１のステップＳ２１を実行する部分）は、受信した応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送するか否かを判定する。
【０１４５】
転送手段９２（例えば、スイッチ側特定パケット送受信部２１のステップＳ３０を実行する部分）は、応答要求を他のパケット転送装置に転送すると判定された場合、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送する。
【０１４６】
応答送信手段９３（例えば、スイッチ側特定パケット送受信部２１および情報提供部２３）は、応答要求を他のパケット転送装置に転送しないと判定された場合、自パケット転送装置のポートの情報を含み、制御装置への経路に沿って送られる応答を返す。
【０１４７】
なお、上記の実施形態では、以下の（１）〜（１０）に示すような通信システムの特徴的構成が示されている。また、以下の（１１）〜（１３）に示すような制御装置の特徴的構成が示されている。また、以下の（１４），（１５）に示すようなパケット転送装置の特徴的構成が示されている。
【０１４８】
（１）本発明の通信システムは、複数のパケット転送装置（例えば、スイッチ２０ａ〜２０ｄ）と、パケット転送装置を制御する制御装置（例えば、制御装置１０）とを備え、制御装置が、制御装置またはパケット転送装置の各ポート間の接続情報を含むトポロジー情報を記憶するトポロジー情報記憶手段（例えば、トポロジー保持部１３）と、トポロジー情報から、制御装置またはパケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定手段（例えば、トポロジー探索部１２におけるステップＳ１を実行する部分）と、接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求（例えば、request パケット）を送る応答要求送信手段（例えば、トポロジー探索部１２および制御装置側特定パケット送受信部１１）と、接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答（例えば、reply パケット）を受信する応答受信手段（例えば、制御装置側特定パケット送受信部１１）とを含み、パケット転送装置が、受信した応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送するか否かを判定する転送判定手段（例えば、スイッチ側特定パケット送受信部２１のステップＳ２１を実行する部分）と、応答要求を他のパケット転送装置に転送すると判定された場合、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送する転送手段（例えば、スイッチ側特定パケット送受信部２１のステップＳ３０を実行する部分）と、応答要求を他のパケット転送装置に転送しないと判定された場合、自パケット転送装置のポートの情報を含み、制御装置への経路に沿って送られる応答を返す応答送信手段（例えば、スイッチ側特定パケット送受信部２１および情報提供部２３）とを含むことを特徴とする。
【０１４９】
（２）また、例えば、制御装置は、接続先未探索ポートの接続先となるパケット転送装置から受信した応答に含まれる該パケット転送装置のポートの情報をトポロジー情報に追加し、さらに、該パケット転送装置のポートのうち該パケット転送装置が応答要求を受信したポート以外のポートの接続先が未探索である場合に該ポートが未探索であるという情報をトポロジー情報に追加するトポロジー情報追加手段（例えば、トポロジー探索部１２におけるステップＳ５を実行する部分）を含む。
【０１５０】
（３）また、例えば、応答要求送信手段は、接続先未探索ポート特定手段によって接続先未探索ポートがないと判定された場合に、応答要求の送信を停止する。
【０１５１】
（４）また、例えば、応答要求送信手段は、制御装置のポートから接続先未探索ポートまでの経路上の各パケット転送装置が応答要求を出力するポートの情報を順にならべた列を、応答要求の転送経路として該応答要求に記述し、転送手段は、応答要求に記述された転送経路に沿って該応答要求を転送し、応答送信手段は、応答要求に記述された転送経路に基づいて、制御装置に応答を送る経路を判定する。
【０１５２】
（５）また、例えば、制御装置は、トポロジー情報に基づいて制御装置と各パケット転送装置間の経路である制御チャネルを決定する制御チャネル決定手段（例えば、制御チャネル経路決定部１４）と、制御チャネルを各パケット転送装置へ通知する制御チャネル通知を送信する制御チャネル通知送信手段（例えば、制御装置側特定パケット送受信部１１）とを含み、パケット転送装置は、制御チャネル通知を受信したときに、該制御チャネル通知に基づいて、制御装置と自パケット転送装置との間の制御チャネルを記憶する制御チャネル記憶手段（例えば、経路保持部２４）を含む。
【０１５３】
（６）本発明の通信システムは、複数のパケット転送装置と、パケット転送装置を制御する制御装置とを備え、制御装置が、制御装置またはパケット転送装置の各ポート間の接続情報を含むトポロジー情報を記憶するトポロジー情報記憶部と、トポロジー情報から、制御装置またはパケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定部と、接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送る応答要求送信部と、接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する応答受信部とを含み、パケット転送装置が、受信した応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送するか否かを判定する転送判定部と、応答要求を他のパケット転送装置に転送すると判定された場合、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送する転送部と、応答要求を他のパケット転送装置に転送しないと判定された場合、自パケット転送装置のポートの情報を含み、制御装置への経路に沿って送られる応答を返す応答送信部とを含む構成であってもよい。
【０１５４】
（７）また、例えば、制御装置は、接続先未探索ポートの接続先となるパケット転送装置から受信した応答に含まれる該パケット転送装置のポートの情報をトポロジー情報に追加し、さらに、該パケット転送装置のポートのうち該パケット転送装置が応答要求を受信したポート以外のポートの接続先が未探索である場合に該ポートが未探索であるという情報をトポロジー情報に追加するトポロジー情報追加部を含む。
【０１５５】
（８）また、例えば、応答要求送信部は、接続先未探索ポート特定部によって接続先未探索ポートがないと判定された場合に、応答要求の送信を停止する。
【０１５６】
（９）また、例えば、応答要求送信部は、制御装置のポートから接続先未探索ポートまでの経路上の各パケット転送装置が応答要求を出力するポートの情報を順にならべた列を、応答要求の転送経路として該応答要求に記述し、転送部は、応答要求に記述された転送経路に沿って該応答要求を転送し、応答送信部は、応答要求に記述された転送経路に基づいて、制御装置に応答を送る経路を判定する。
【０１５７】
（１０）また、例えば、制御装置は、トポロジー情報に基づいて制御装置と各パケット転送装置間の経路である制御チャネルを決定する制御チャネル決定部と、制御チャネルを各パケット転送装置へ通知する制御チャネル通知を送信する制御チャネル通知送信部とを含み、パケット転送装置は、制御チャネル通知を受信したときに、該制御チャネル通知に基づいて、制御装置と自パケット転送装置との間の制御チャネルを記憶する制御チャネル記憶部を含む。
【０１５８】
（１１）また、本発明の制御装置は、複数のパケット転送装置を制御する制御装置であって、該制御装置またはパケット転送装置の各ポート間の接続情報を含むトポロジー情報を記憶するトポロジー情報記憶部と、トポロジー情報から、該制御装置またはパケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定部と、接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送る応答要求送信部と、接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する応答受信部とを備えることを特徴とする。
【０１５９】
（１２）また、接続先未探索ポートの接続先となるパケット転送装置から受信した応答に含まれる該パケット転送装置のポートの情報をトポロジー情報に追加し、さらに、該パケット転送装置のポートのうち該パケット転送装置が応答要求を受信したポート以外のポートの接続先が未探索である場合に該ポートが未探索であるという情報をトポロジー情報に追加するトポロジー情報追加部を備える構成であってもよい。
【０１６０】
（１３）また、本発明の制御装置は、複数のパケット転送装置を制御する制御装置であって、該制御装置またはパケット転送装置の各ポート間の接続情報を含むトポロジー情報を記憶するトポロジー情報記憶手段と、トポロジー情報から、該制御装置またはパケット転送装置のポートのうち接続先が未探索である接続先未探索ポートを特定する接続先未探索ポート特定手段と、接続先未探索ポートを経由して、該接続先未探索ポートの接続先への応答要求を送る応答要求送信手段と、接続先未探索ポートの接続先となるパケット転送装置から該パケット転送装置の持つポートの情報を含む応答を受信する応答受信手段とを備える構成であってもよい。
【０１６１】
（１４）また、本発明のパケット転送装置は、制御装置によって制御されるパケット転送装置であって、接続先が未探索である接続先未探索ポートの接続先への応答要求であって、制御装置が送信した応答要求を受信すると、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送するか否かを判定する転送判定部と、応答要求を他のパケット転送装置に転送すると判定された場合、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送する転送部と、応答要求を他のパケット転送装置に転送しないと判定された場合、自パケット転送装置のポートの情報を含み、制御装置への経路に沿って送られる応答を返す応答送信部とを備えることを特徴とする。
【０１６２】
（１５）また、本発明のパケット転送装置は、制御装置によって制御されるパケット転送装置であって、接続先が未探索である接続先未探索ポートの接続先への応答要求であって、制御装置が送信した応答要求を受信すると、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送するか否かを判定する転送判定手段と、応答要求を他のパケット転送装置に転送すると判定された場合、応答要求の内容に基づいて、応答要求を他のパケット転送装置に転送する転送手段と、応答要求を他のパケット転送装置に転送しないと判定された場合、自パケット転送装置のポートの情報を含み、制御装置への経路に沿って送られる応答を返す応答送信手段とを備える構成であってもよい。
【０１６３】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１６４】
この出願は、２００９年１２月２８日に出願された日本特許出願２００９−２９８８５２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用の可能性】
【０１６５】
本発明は、複数のパケット転送装置と各パケット転送装置を制御する制御装置とを含む通信システムに好適に適用される。
【符号の説明】
【０１６６】
１０  制御装置
１１  制御装置側特定パケット送受信部
１２  トポロジー探索部
１３  トポロジー保持部
１４  制御チャネル経路決定部
１５  制御装置側制御メッセージトンネリング部
２０ａ〜２０ｄ，２０Ａ〜２０Ｄ  スイッチ（パケット転送装置）
２１  スイッチ側特定パケット送受信部
２３  情報提供部
２４  経路保持部
２５  スイッチ側制御メッセージトンネリング部
【図１】
0005598482.tif 000002
【図２】
0005598482.tif 000003
【図３】
0005598482.tif 000004
【図４】
0005598482.tif 000005
【図５】
0005598482.tif 000006
【図６】
0005598482.tif 000007
【図７】
0005598482.tif 000008
【図８】
0005598482.tif 000009
【図９】
0005598482.tif 000010
【図１０】
0005598482.tif 000011
【図１１】
0005598482.tif 000012
【図１２】
0005598482.tif 000013
【図１３】
0005598482.tif 000014
【図１４】
0005598482.tif 000015
【図１５】
0005598482.tif 000016
【図１６】
0005598482.tif 000017
【図１７】
0005598482.tif 000018
【図１８】
0005598482.tif 000019
【図１９】
0005598482.tif 000020
【図２０】
0005598482.tif 000021
【図２１】
0005598482.tif 000022
【図２２】
0005598482.tif 000023
【図２３】
0005598482.tif 000024
【図２４】
0005598482.tif 000025
【図２５】
0005598482.tif 000026
【図２６】
0005598482.tif 000027
【図２７】
0005598482.tif 000028