(57)【特許請求の範囲】
【請求項１】
パケットに適用する処理内容を記載したフローエントリを参照して受信パケットを処理するスイッチ群と、
前記スイッチ群のスイッチにフローエントリを設定することにより前記スイッチを制御するコントローラと、を含み、
前記コントローラは、
前記スイッチ群から得られた情報に基づいて、前記スイッチ群のスイッチ間に張られたリンクのうち、所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出するトポロジ検出部を備え、
前記コントローラは、前記ネットワークトポロジ上に存在するスイッチのうち、少なくとも１つのスイッチと前記所定の伝送品質を満たすリンクによって接続され、
前記コントローラは、所定の伝送品質が要求される所定の通信プロトコルによる通信が前記ネットワークトポロジに接続された任意のノード間で発生したことを、前記所定の伝送品質を満たすリンクによって接続された少なくとも１つのスイッチを介して検出した際に、前記所定の通信プロトコルによるパケットについて適用されるフローエントリを生成し、前記任意のノード間に設定された経路上のスイッチに設定すること、
を特徴とする通信システム。
【請求項２】
前記コントローラは、
前記所定の通信プロトコルのパケットを受信したときに、前記コントローラに対し前記所定の伝送品質を満たすリンクを介して前記所定の通信プロトコルによる通信の発生を通知させるフローエントリを、前記スイッチの各々に設定する請求項１の通信システム。
【請求項３】
前記コントローラは、
前記ノードとの前記所定の通信プロトコルによる通信に必要なフローエントリの設定を行い、かつ、前記所定の通信プロトコルによる管理処理を実施する高優先プロトコル処理部をさらに備える請求項１乃至２のいずれか一の通信システム。
【請求項４】
前記トポロジ検出部は、
前記スイッチ群の各々に対し、各スイッチの情報の送信を要求する近隣探索パケットを送信し、
前記各スイッチからの応答に基づいて、前記所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出する
請求項１乃至３のいずれか一の通信システム。
【請求項５】
前記トポロジ検出部は、前記ノード間または前記ノードとコントローラ間の通信が開始される前に送信されるパケットに基づいて、前記ノードの位置管理を行う
請求項１乃至４のいずれか一の通信システム。
【請求項６】
前記コントローラは、
前記所定の通信プロトコルによるパケットについて適用されるフローエントリが、他のパケットについて適用されるフローエントリよりも高い優先順位で適用されるように、前記フローエントリを設定する請求項１乃至５のいずれか一の通信システム。
【請求項７】
前記コントローラは、
前記所定の伝送品質を満たすリンクに加えて、前記所定の伝送品質を満たすリンク以外のリンクも用いて、前記所定の通信プロトコルによるパケット以外のパケットを転送するよう前記スイッチを制御する請求項１乃至６のいずれか一の通信システム。
【請求項８】
パケットに適用する処理内容を記載したフローエントリを参照して受信パケットを処理するスイッチ群と接続され、
前記スイッチ群から得られた情報に基づいて、前記スイッチ群のスイッチ間に張られたリンクのうち、所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出するトポロジ検出部を備え、
前記ネットワークトポロジに接続された任意のノード間に所定の伝送品質が要求される所定の通信プロトコルによる通信が発生した際に、前記ネットワークトポロジ上に存在するスイッチのうち、前記所定の伝送品質を満たすリンクによって接続された少なくとも１つのスイッチを介して該通信を検出し、前記所定の通信プロトコルによるパケットについて適用されるフローエントリを生成し、前記任意のノード間に設定された経路上のスイッチに設定する
ことを特徴とするコントローラ。
【請求項９】
パケットに適用する処理内容を記載したフローエントリを参照して受信パケットを処理するスイッチ群と接続されたコントローラにおける通信方法であって、
前記スイッチ群から得られた情報に基づいて、前記スイッチ群のスイッチ間に張られたリンクのうち、所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出するステップと、
前記ネットワークトポロジに接続された任意のノード間に所定の伝送品質が要求される所定の通信プロトコルによる通信が発生した際に、前記ネットワークトポロジ上に存在するスイッチのうち、前記所定の伝送品質を満たすリンクによって接続された少なくとも１つのスイッチを介して該通信を検出し、前記所定の通信プロトコルによるパケットについて適用されるフローエントリを生成し、前記任意のノード間に設定された経路上のスイッチに設定するステップと、
を含む通信方法。
【請求項１０】
パケットに適用する処理内容を記載したフローエントリを参照して受信パケットを処理するスイッチ群と接続されたコントローラを構成するコンピュータに、
前記スイッチ群から得られた情報に基づいて、前記スイッチ群のスイッチ間に張られたリンクのうち、所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出する処理と、
前記ネットワークトポロジに接続された任意のノード間に所定の伝送品質が要求される所定の通信プロトコルによる通信が発生した際に、前記ネットワークトポロジ上に存在するスイッチのうち、前記所定の伝送品質を満たすリンクによって接続された少なくとも１つのスイッチを介して該通信を検出し、前記所定の通信プロトコルによるパケットについて適用されるフローエントリを生成し、前記任意のノード間に設定された経路上のスイッチに設定する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、２０１１年１２月２７日に出願された日本出願特願２０１１−２８６１５２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【０００２】
本発明は、通信システム、コントローラ、通信方法およびプログラムに関する。特に、スイッチ群を集中制御するコントローラを有する通信システム、コントローラ、通信方法およびプログラムに関する。
【背景技術】
【０００３】
イーサネット（登録商標）などのコンピュータ・ネットワークは、スイッチ（あるいはルータ）が自律動作する分散型であるため、ネットワークで起きている事象を正確かつ迅速に把握することが難しく、障害発生箇所の特定や障害からの復帰に時間がかかる。このことは、問題視されている。また、個々のスイッチが自立動作するに足る能力を備えなければならない。その結果、スイッチの機能が複雑化している。
【０００４】
一方、集中制御型のネットワークは、スイッチなどを管理するコントローラを備え、自律分散型のネットワークに関する上述の問題を低減する。オープンフロー（ＯｐｅｎＦｌｏｗ；非特許文献１参照）は、集中制御型のネットワークを実現する技術の１つである。オープンフローは、通信経路の大局的な最適化による通信効率の向上や、ネットワークの可視化を実現することができる。また、オープンフローは、スイッチに求められる機能を相対的に少なくでき、スイッチを低廉化してネットワーク全体の設備コストを下げることができる。
【０００５】
図１５は、オープンフローに基づくネットワーク（以下、通信システムＸ１０１と記載する。）の構成を示すブロック図である。通信システムＸ１０１は、コントローラＸ１０と、スイッチ群１１−１、１１−２と、ノード１２−１、１２−２と、リンク１３と、チャネル１４とを主な構成要素としている。
【０００６】
コントローラＸ１０は、ネットワークのトポロジの認識、配下のスイッチ１１−１、１１−２の制御、スイッチ１１−１、１１−２及びリンク１３の障害監視、通信経路の決定などを実施する。
【０００７】
スイッチ１１−１、１１−２のそれぞれは、隣接するノード１２（１２−１又は１２−２）の１つや別のスイッチから受信したパケットを、適切な宛先に向けて転送する。また、スイッチ１１−１、１１−２のそれぞれは、コントローラＸ１０からの指示に従って、内部の状態を更新したり、パケットを外部に送信したりする。スイッチ１１−１、１１−２の詳細については後述する。
【０００８】
ノード１２（１２−１／１２−２）は、端末やサーバなどの通信端点である。リンク１３は、スイッチ１１−１と１１−２との間、スイッチ１１−１とノード１２との間、１１−２とノード１２との間のインターフェース間に張られ、当該インターフェース間でパケットを伝送する。
【０００９】
チャネル１４のそれぞれは、コントローラＸ１０と、対応するスイッチ１１−１及び１１−２の１つとの間で、制御メッセージを伝達する。
【００１０】
図１６は、スイッチ（以下、スイッチ１１−１及び１１−２を特に区別しない場合、「スイッチ１１」と記す。）の構造を示すブロック図である。スイッチ１１は、ポート４０−１〜４０−Ｎ、４８−１〜４８−Ｎと、管理ポート４１と、コントローラインタフェース４２と、フローエントリ記憶部４３と、パケット多重部４４と、フローエントリ検索部４５と、アクション適用部４６と、内部スイッチ４７とを主な構成要素として備えている。
【００１１】
ポート４０−１〜４０−Ｎ、４８−１〜４８−Ｎ（Ｎは１以上の整数。以下、ポート４
０−１〜４０−Ｎ、４８−１〜４８−Ｎを特に区別しない場合、「ポート４０」と記す。
）のそれぞれは、隣接するノード１２（１２−１又は１２−２）の１つや別のスイッチ１１との間で、リンク１３を介してパケットを送受信する。
【００１２】
管理ポート４１は、コントローラＸ１０との間で、チャネル１４を介して制御メッセージを送受信する。
【００１３】
コントローラインタフェース４２は、管理ポート４１経由でコントローラＸ１０から受け取った制御メッセージに従って、フローエントリ記憶部２３に記憶されているフローエントリの加除、変更等を行う。コントローラインタフェース４２は、コントローラＸ１０から受け取った制御メッセージがパケットの送信指示（非特許文献１の「Ｐａｃｋｅｔ−Ｏｕｔ」メッセージに相当。）を含んでいた場合、コントローラインタフェース４２は内部スイッチ４７に、その制御メッセージに含まれるパケットを送出する。さらに、コントローラインタフェース４２は、アクション適用部４６から受け取ったパケットと受信ポート番号を制御メッセージにカプセル化し、管理ポート４１経由でコントローラ１１０に前記カプセル化した制御メッセージを送出する（非特許文献１の「Ｐａｃｋｅｔ−Ｉｎ」メッセージに相当。）。なお、前記制御メッセージに含める受信ポート番号は、パケットを受信したポート４０の番号である。
【００１４】
フローエントリ記憶部４３は、フローエントリを格納するテーブル（以下、「フローテーブル」という。）を用いてフローエントリを記憶する。フローエントリには、スイッチ１１がポート４０から受信したパケットをどのように処理するかが記述されている。
【００１５】
図１７は、フローエントリ記憶部４３に保持されるフローテーブルの構造を示すブロック図である。図１７のフローテーブル４３Ｘには、Ｍ個（Ｍは１以上の整数）のフローエントリ６０−１〜６０−Ｍ（以下、特に区別しない場合、「フローエントリ６０」と記す。）が格納されている。各々のフローエントリ６０は、マッチ条件６１とアクション６２の、２つのフィールドを含む。アクション６２は、マッチ条件６１を満たすパケットに適用される処理内容である。例えば、「当該パケットを特定のポート４０に転送」というアクション６２が設定されている場合、マッチ条件６１に適合するパケットは、前記特定のポートへ転送される。
【００１６】
パケット多重部４４は、ポート４０が受信したパケットをパケット単位に多重し、フローエントリ検索部４５とアクション適用部４６の双方に送出する。
【００１７】
フローエントリ検索部４５は、フローテーブルに、受信パケットに適合するマッチ条件を持つフローエントリが存在するか否かを判定する。フローテーブルに、受信パケットに合致するマッチ条件６１を持つフローエントリ６０が存在していた場合、フローエントリ検索部４５はそのフローエントリ６０のアクション６２をアクション適用部４６に送出する。一方、受信パケットに合致するマッチ条件を持つフローエントリ６０が存在しなかった場合、フローエントリ検索部４５は、デフォルトのアクション６２をフローアクション適用部４６にする。デフォルトのアクション６２としては、「当該パケットをコントローラ１１０に転送」、「当該パケットを廃棄」などが挙げられる。ここでは、デフォルトのアクション６２として、「当該パケットをコントローラ１１０に転送」が設定されているものとする。
【００１８】
アクション適用部４６は、パケット多重部４４から受け取ったパケットに対して、フローエントリ検索部４５から受け取ったアクション６２を適用する。そのアクション６２がそのパケットをポート４０から送信させることを示していた場合、アクション適用部４６はそのパケットを内部スイッチ４７に出力する。また、そのアクション６２がそのパケットをコントローラＸ１０に転送させることを示していた場合、アクション適用部４６はそのパケットと受信ポート番号をコントローラインタフェース４２に送る。
【００１９】
内部スイッチ４７は、コントローラインタフェース４２またはアクション適用部４６から受け取ったパケットを、指定されたポート４０に向けて転送する。
【００２０】
以上の説明が、非特許文献１に記載のオープンフロースイッチの構成と基本動作である。その他の特許文献としては、特許文献１及び２が挙げられる。特許文献１には、上記したスイッチに保持されるパケット転送ルール（上記フローエントリに相当。）に適当な有効期間を設定し、コントローラの負荷軽減を図るとともに、不要なフローエントリを整理するために、経路制御装置（上記コントローラに相当。）が開示されている。
【００２１】
特許文献２には、ネットワークマネージャによって集中管理されるネットワークにおける管理方法が開示されている。特許文献２の段落００３１〜００３２には、ネットワーク内のスイッチのそれぞれが上記したオープンフローのスイッチと同様に動作することが記載されている。また、段落００３１の末文には、多数のフローヘッダエントリとマッチしているパケットが、最も高いプライオリティのフローエントリに割り当てられること、又は、ロンゲストマッチのようなルールが用いられることが記載されている。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】特開２０１１−１０１２４５号公報
【特許文献２】特表２０１０−５４１４２６号公報
【非特許文献】
【００２３】
【非特許文献１】“ＯｐｅｎＦｌｏｗ  −  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｙｏｕｒ  Ｎｅｔｗｏｒｋ”、［ｏｎｌｉｎｅ］、［平成２３（２０１１）年１１月１４日検索］、インターネット〈URL: http://www.openflow.org/〉
【発明の概要】
【発明が解決しようとする課題】
【００２４】
上記の特許文献及び非特許文献の開示の全ては、ここに取り込まれる。以下の分析は、本発明によって与えられたものである。パケットを損失なく伝送する必要がある通信プロトコルが存在する。そのような通信プロトコルの１つに、ＦＣｏＥ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ）がある。ＦＣｏＥは、ファイバチャネルのフレームをイーサネットのパケットにカプセル化して伝送する規格である。ＦＣｏＥは、輻輳によってパケット（ＦＣｏＥイーサネットパケット）が消失する事態を許容しない。ＦＣｏＥは、輻輳によるパケット消失を回避するため、ＩＥＥＥ  ８０２．３ｘ規格やＩＥＥＥ  ８０２．１Ｑｂｂ規格で定められている、イーサネットのフロー制御機構の利用を前提としている。
【００２５】
以下の説明においては、ＦＣｏＥのようにネットワークに高品質を要求し、他の通信プロトコルよりも優先して処理する必要のある通信プロトコルを、高優先プロトコルと記載する。
【００２６】
オープンフローネットワーク（図１５の通信システムＸ１０１）上で、あるノード１２−１から別のノード１２−２へ高優先プロトコルのパケットを伝送する場合を考える。コントローラＸ１０が、高優先プロトコルについて通信経路を動的に決定したり、ネットワークの使用状況を可視化したりするためには、コントローラＸ１０が高優先プロトコルの通信の発生を把握できなければならない。また、高優先プロトコルの通信の発生を把握するだけではなく、コントローラＸ１０は、高優先プロトコルが要求する通信品質が満たされるような経路を見つける必要がある。
【００２７】
しかしながら、非特許文献１のオープンフローの規格では、スイッチ１１がチャネル１４経由でコントローラＸ１０に向けてパケットを転送する際に、そのパケットを廃棄してもよい、とされている。また、コントローラＸ１０は、自ら把握したトラヒック状況やネットワーク管理者の指示に応じて、スイッチ１１に、パケットの廃棄や迂回等を行わせるフローエントリを設定することもある。
【００２８】
このように、非特許文献１のオープンフローにおいては、高優先プロトコルのパケットが検出前またはその検出後にも失われる可能性がある。従って、オープンフローの規格に変更が加えられない場合、非特許文献１のオープンフローネットワークでは、ＦＣｏＥのような高優先プロトコルが要求する通信品質を満たすことができない。オープンフローの規格の変更も考えられるが、そうした場合は既存のオープンフロースイッチを使用できなくなるという弊害が生じる。
【００２９】
このような状況は、オープンフローに限られない。同様の状況が、転送経路上のスイッチでパケット損失が起こりうる集中制御型の通信システムにも当てはまる。そのため、多くのことが、当該技術分野で望まれている。
【００３０】
本発明の目的は、転送経路上のスイッチでパケット損失が起こりうる集中制御型の通信システムにおいて、高優先プロトコルのパケットを伝送する方法を提供することにある。
【課題を解決するための手段】
【００３１】
本発明の第１の視点によれば、パケットに適用する処理内容を記載したフローエントリを参照して受信パケットを処理するスイッチ群と、前記スイッチ群のスイッチにフローエントリを設定することにより前記スイッチを制御するコントローラと、を含み、前記コントローラは、前記スイッチ群から得られた情報に基づいて、前記スイッチ群のスイッチ間に張られたリンクのうち、所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出するトポロジ検出部を備え、前記ネットワークトポロジに接続された任意のノード間に所定の伝送品質が要求される所定の通信プロトコルによる通信が発生した際に、前記所定の通信プロトコルによるパケットについて適用されるフローエントリを生成し、前記任意のノード間に設定された経路上のスイッチに設定する通信システムが提供される。
【００３２】
本発明の第２の視点によれば、パケットに適用する処理内容を記載したフローエントリを参照して受信パケットを処理するスイッチ群と接続され、前記スイッチ群から得られた情報に基づいて、前記スイッチ群のスイッチ間に張られたリンクのうち、所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出するトポロジ検出部を備え、前記ネットワークトポロジに接続された任意のノード間に所定の伝送品質が要求される所定の通信プロトコルによる通信が発生した際に、前記所定の通信プロトコルによるパケットについて適用されるフローエントリを生成し、前記任意のノード間に設定された経路上のスイッチに設定するコントローラが提供される。
【００３３】
本発明の第３の視点によれば、パケットに適用する処理内容を記載したフローエントリを参照して受信パケットを処理するスイッチ群と接続されたコントローラが、前記スイッチ群から得られた情報に基づいて、前記スイッチ群のスイッチ間に張られたリンクのうち、所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出するステップと、前記ネットワークトポロジに接続された任意のノード間に所定の伝送品質が要求される所定の通信プロトコルによる通信が発生した際に、前記所定の通信プロトコルによるパケットについて適用されるフローエントリを生成し、前記任意のノード間に設定された経路上のスイッチに設定するステップと、を含む通信方法が提供される。本方法は、集中制御型のネットワークにおいてスイッチ群を制御するコントローラという、特定の機械に結びつけられている。
【００３４】
本発明の第４の視点によれば、パケットに適用する処理内容を記載したフローエントリを参照して受信パケットを処理するスイッチ群と接続されたコントローラを構成するコンピュータに、前記スイッチ群から得られた情報に基づいて、前記スイッチ群のスイッチ間に張られたリンクのうち、所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出する処理と、前記ネットワークトポロジに接続された任意のノード間に、所定の伝送品質が要求される所定の通信プロトコルによる通信が発生した際に前記所定の通信プロトコルによるパケットについて適用されるフローエントリを生成し、前記任意のノード間に設定された経路上のスイッチに設定する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００３５】
本発明によれば、転送経路上のスイッチでパケット損失が起こりうる集中制御型の通信
システムにおいて、高優先プロトコルが要求する通信品質でパケットを伝送することが可
能となる。
【図面の簡単な説明】
【００３６】
【図１】本発明の一実施形態に係る通信システムの構成を示す図である。
【図２】本発明の第１の実施形態に係る通信システムの構成を示す図である。
【図３】本発明の第１の実施形態に係るコントローラの構成を示すブロック図である。
【図４】本発明の第１の実施形態におけるノード位置テーブルの構成を示す図である。
【図５】本発明の第１の実施形態におけるリンク情報テーブルの構成を示す図である。
【図６】本発明の第１の実施形態の動作（初期化処理）を示すシーケンス図である。
【図７】本発明の第１の実施形態の動作（経路設定処理）を示すフローチャートである。
【図８】図２のネットワーク構成におけるリンク情報テーブルの例を示す図である。
【図９】図２のネットワーク構成におけるノード位置テーブルの具体例を示す図である。
【図１０】本発明の第１の実施形態のスイッチのフローテーブルの具体例（高優先プロトコル通信発生前）を示す図である。
【図１１】本発明の第１の実施形態のスイッチのフローテーブルの具体例（高優先プロトコル通信発生前）を示す図である。
【図１２】本発明の第１の実施形態のスイッチのフローテーブルの具体例（高優先プロトコル通信発生後）を示す図である。
【図１３】本発明の第１の実施形態のスイッチのフローテーブルの具体例（高優先プロトコル通信発生後）を示す図である。
【図１４】本発明の第１の実施形態のコントローラの一具体例（情報処理装置）の構成を示す図である。
【図１５】背景技術として説明する通信システムの構成を示す図である。
【図１６】背景技術として説明するスイッチの構成を示すブロック図である。
【図１７】背景技術として説明するスイッチのフローテーブルの構成を示す図である。
【発明を実施するための形態】
【００３７】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要
に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したもの
であり、本発明を図示の態様に限定することを意図するものではない。
【００３８】
本発明は、図１に示すとおり、その一実施形態において、それぞれがパケットに適用する処理内容を記載したフローエントリを参照して受信パケットを処理するスイッチ群（図１の符号１１−１、１１−２及び１１−３）と、前記スイッチ（例えば、それぞれのスイッチ）にフローエントリを設定することによりスイッチ群を制御するコントローラ（図１の符号１０）と、を含む構成にて実現できる。
【００３９】
前記コントローラは、前記スイッチ群から得られた情報に基づいて、前記スイッチ群のスイッチ間に張られたリンク（図１の符号１３及び１３ａ）のうち、所定の伝送品質を満たすリンク（図１の符号１３）によって構成されたネットワークトポロジを検出するトポロジ検出部を備える。前記コントローラは、前記ネットワークトポロジに接続された任意のノード間に、所定の伝送品質が要求される所定の通信プロトコルを用いた通信が発生した際に、前記所定の通信プロトコルによるパケットについて適用されるフローエントリを生成し、前記任意のノード間に設定された経路上のスイッチ（それぞれのスイッチ）に設定する。
【００４０】
図１の例では、トポロジ検出部は、ノード１２−１と、スイッチ１１−１と、スイッチ１１−２と、ノード１２−２とを含むネットワークトポロジを検出する。即ち、スイッチ１１−３は、スイッチ１１−１又は１１−２と、所定の伝送品質を満たすリンク１３によって接続されていない。なお、ある１つのリンクが所定の伝送品質を満たすか否かは、後記するＬＬＤＰなどを用いて、ポート情報から把握されるポート種別や、スイッチ間に張られている物理リンクの本数に基づいて判別することができる。
【００４１】
上記構成を採ることにより、スイッチ１１−３を介さずに、高優先プロトコルのパケッ
トの処理が行われる。したがって、高優先プロトコルが要求する通信品質でパケットを伝送することが可能となる。
【００４２】
［第１の実施形態］
図１５のようなネットワーク構成において、コントローラＸ１０が過負荷状態に陥って通信システムＸ１１０が機能不全にならないようにするため、コントローラＸ１０の負荷が高まってきた場合、コントローラＸ１０へのパケット転送を低減させることが効果的である。コントローラＸ１０へのパケット転送を低減させる方法としては、コントローラＸ１０が自律的にあるいはネットワーク管理者の指示に基づいて、スイッチ１１に、コントローラＸ１０へ転送する予定のパケットを廃棄させる（必要ならその旨のフローエントリを設定する。）方法が挙げられる。
【００４３】
従って、非特許文献１のオープンフローにおいては、図１５のスイッチ１１（１１−１、１１−２）がコントローラＸ１０にチャネル１４経由でパケットを転送する際、そのパケットが失われる可能性がある。続いて、このようなスイッチ１１（１１−１、１１−２）とコントローラ間のパケット損失についても考慮した本発明の第１の実施形態について、図面を参照して詳細に説明する。なお、以下の実施形態を説明するための図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００４４】
図２は、本実施形態のオープンフローネットワーク（以下、「通信システム１０１」と記載する。）の構成を示す図である。図２を参照すると、コントローラ１０と、コントローラ１０と、チャネル１４またはリンク１３を介して接続されたスイッチ１１−１及び１１−２と、を含み、ノード１２−１とノード１２−２との間の通信を実現する通信システム１０１が示されている。スイッチ１１−１及び１１−２と、ノード１２−１及びノード１２−２（以下、ノード１２−１及びノード１２−２を特に区別しない場合、単に「ノード１２」と記す。）は、それぞれリンク１３を介して接続されている。なお、図２に示したコントローラ、スイッチおよびノードの数は、本発明の理解のために簡略化したものであり、図示した数に制限されない。また、図２においてリンク１３の端点付近に記載した番号「＃１」等は、スイッチのポート番号を表している。
【００４５】
コントローラ１０は、ネットワークのトポロジの認識、配下のスイッチ１１−１及び１１−２（以下、特に区別しない場合、単に「スイッチ１１」と記す。）の制御、スイッチ１１やリンク１３の障害監視、通信経路の決定、高優先プロトコルの処理などを実施する。
【００４６】
スイッチ１１、ノード１２、リンク１３及びチャネル１４は、背景技術で説明した通信システムＸ１０１のものと同様である。ただし、通信システム１０１と通信システムＸ１０１との違いは、当該通信システム１０１は、コントローラ１０とリンク１３を介して接続されている少なくとも１つのスイッチ（図２のスイッチ１１−２）を含むことである。リンク１３は、高優先プロトコルが要求する伝送品質を満たすものとする。例えば、高優先プロトコルがＦＣｏＥである場合、イーサネットのフロー制御がリンク１３により有効化される。
【００４７】
図３は、コントローラ１０の構成を示すブロック図である。図３には、管理ポート２０と、スイッチインタフェース２１と、トポロジ検出部２２と、ノード位置記憶部２３と、トポロジ情報記憶部２４と、経路設定部２５と、ポート２６と、高優先プロトコル処理部２７と、コントローラアドレス記憶部２８と、を備えたコントローラ１０の構成が示されている。
【００４８】
管理ポート２０は、スイッチ１１との間でチャネル１４を介して制御メッセージを送受
信する。
【００４９】
スイッチインタフェース２１は、チャネル１４の追加・削除・死活監視などの管理を行う。また、スイッチインタフェース２１は、管理ポート２０を介してスイッチ１１からパケットを含む制御メッセージを受け取った際、その制御メッセージをトポロジ検出部２２に転送する。さらに、スイッチインタフェース２１は、トポロジ検出部２２または経路設定部２５から受け取った制御メッセージを、管理ポート２０経由でスイッチ１１に送出する。
【００５０】
トポロジ検出部２２は、スイッチインタフェース２１から受け取った制御メッセージに含まれるパケットを解釈し、ノード位置記憶部２３とトポロジ情報記憶部２４とを更新する。また、トポロジ検出部２２は、ネットワークのトポロジを検出するために、近隣探索パケット（後述する）の送信指示を含む制御メッセージを生成し、それをスイッチインタフェース２１に出力する。
【００５１】
ノード位置記憶部２３は、ノード１２またはコントローラ１０の位置情報として、当該ノード１２またはコントローラ１０が接続されているスイッチ１１と当該スイッチ１１のポート情報とを格納する。図４は、ノード位置記憶部２３に保持されるノード位置テーブル２３Ａの例を示す図である。図４を参照すると、各ノード１２（またはコントローラ１０）に対応するエントリ７０を複数格納可能なノード位置テーブルが示されている。各々のエントリ７０は、ノードアドレス７１（またはコントローラのアドレス）と、スイッチ識別子７２と、ポート番号７３の、３つのフィールドを含む。ノードアドレス７１は、ノード１２（またはコントローラ１０）のネットワークアドレスである。スイッチ識別子７２は、そのノード１２（またはコントローラ１０）に隣接するスイッチ１１の識別子である。ポート番号７３は、そのノード１２（またはコントローラ１０）に接続している、スイッチ１１のポートの番号である。
【００５２】
トポロジ情報記憶部２４は、リンク１３を介したスイッチ１１同士の接続関係を格納する。図５は、トポロジ情報記憶部２４に保持されるリンク情報テーブル２４Ａの例を示す図である。図５を参照すると、スイッチ間を結ぶ片方向のリンク１３に対応するエントリ８０を複数格納可能なリンク情報テーブルが示されている。各々のエントリ８０は、スイッチ識別子８１、対向スイッチ識別子８２及び対向ポート番号８３のフィールドを含む。スイッチ識別子８１は、リンク１３の送信端のスイッチ１１の識別子である。対向スイッチ識別子８２と対向ポート番号８３はそれぞれ、リンク１３の受信端のスイッチ１１の識別子と、リンク１３の受信端のスイッチ１１のポートの番号である。
【００５３】
経路設定部２５は、高優先プロトコル処理部２７から送信元のネットワークアドレスと送信先のネットワークアドレスが与えられると、ノード位置記憶部２３とトポロジ情報記憶部２４を参照して、送信元から送信先までの通信経路を計算する。また、経路設定部２
５は、通信システム１０１のネットワークのトポロジ検出後に、ノード位置記憶部２３とトポロジ情報記憶部２４とコントローラアドレス記憶部２８を参照して、すべてのノード１２からコントローラ１０までの通信経路をそれぞれ計算する。経路設定部２５は、これら計算した経路に沿って高優先プロトコルのパケットを転送させるためのフローエントリ６０を、経路上のスイッチ１１ごとに生成する。さらに、経路設定部２５は、スイッチインタフェース２１を介して、経路上の各スイッチ１１に、フローエントリを設定する制御メッセージを出力する。前記制御メッセージによってこれらフローエントリは、経路上の各スイッチ１１のフローエントリ記憶部４３内のフローテーブルに追加される。
【００５４】
ポート２６は、隣接するスイッチ１１との間で、パケットを送受信する。
【００５５】
高優先プロトコル処理部２７は、ポート２６を介してパケットを送受信しながら、高優先プロトコルで規定される管理処理を実施する。例えば、高優先プロトコルがＦＣｏＥである場合、高優先プロトコル処理部２７は、ノード１２のログイン処理や名前解決、ノード１２への状態変更通知などを行う。高優先プロトコル処理部２７は、ノード１２に対してパケットを送出する際、コントローラ１０から対象のノード１２までの通信経路の設定を経路設定部２５に要求する。その際、送信元となるコントローラ１０のネットワークアドレスは、コントローラアドレス記憶部２８から読み出される。また、高優先プロトコル処理部２７は、ノード１２同士の直接通信を開始する際、ノード１２間の通信経路の設定を経路設定部２５に要求する。
【００５６】
コントローラアドレス記憶部２８は、コントローラ１０のネットワークアドレスを記憶する。
【００５７】
続いて、本実施形態の動作について図面を参照して詳細に説明する。はじめに、初期化
処理について説明する。図６は、本実施形態において通信システム１０１が起動される際に行われる初期化処理の流れを表したシーケンス図である。初期化の第１の目的は、通信システム１０１のネットワークのトポロジを検出することである。初期化の第２の目的は、ノード１２から送信された高優先プロトコルのパケットがコントローラ１０の高優先プロトコル処理部２７に到達するように、各スイッチ１１のフローテーブルに必要なフローエントリを設定することである。
【００５８】
初期状態においては、コントローラ１０のノード位置記憶部２３とトポロジ情報記憶部２４は空であるとする。また、各スイッチ１１のフローテーブルも空であるものとする。
【００５９】
コントローラ１０のトポロジ検出部２２は、近隣探索パケットのブロードキャストを要求する制御メッセージを作成し、当該制御メッセージを各スイッチ１１に向けて送出する（図６のステップＳ１００）。この際、トポロジ検出部２２は、各送信元のスイッチ１１の識別子を含めた近隣探索パケットのブロードキャストを示す制御メッセージを生成する。このような近隣探索パケットの一例としては、近隣探索プロトコルの１種であるＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）のＬＬＤＰパケットを利用できる。
【００６０】
各スイッチ１１は、ステップＳ１００で生成された制御メッセージをコントローラ１０から受け取ると、その制御メッセージに含まれる近隣探索パケットをすべてのポート４０から送信する（ステップＳ１０１−１、Ｓ１０１−２）。
【００６１】
各スイッチ１１は、隣接する他のスイッチ１１から近隣探索パケットを受信すると、そのパケットに合致するマッチ条件を持つフローエントリがフローテーブルに存在するか否かを判定する。この時点ではフローテーブルは空であるので、近隣探索パケットにマッチするフローエントリは存在しない。従って、背景技術で述べたように、この近隣探索パケットにはデフォルトのアクションが適用され、その近隣探索パケットと受信ポート番号が制御メッセージにカプセル化されてコントローラ１０に転送される（ステップＳ１０２−１及びＳ１０２−２）。受信ポート番号は、近隣探索パケットを受信したポートの番号である。例えば、スイッチ１１−１から近隣探索パケットを受信したスイッチ１１−２は、その近隣探索パケットとその近隣探索パケットを受信したポート番号（＃２；図２参照）をコントローラ１０に送信する。
【００６２】
トポロジ検出部２２は、近隣探索パケットと受信ポート番号５０を含む制御メッセージをスイッチインタフェース２１経由でスイッチ１１から受け取ると、その制御メッセージを解釈してトポロジ情報記憶部２４のリンク情報テーブルに新しいエントリ８０を追加する（ステップＳ１０３）。追加されるエントリ８０のスイッチ識別子８１は、制御メッセージ内の近隣探索パケットに含まれる、送信元のスイッチ１１の識別子である。追加されるエントリ８０の対向スイッチ識別子８２は、制御メッセージを発行したスイッチ１１の識別子である。追加されるエントリ８０の対向ポート番号８３は、制御メッセージに含まれる受信ポート番号である。
【００６３】
図８は、図２に示した通信システム１０１において、ステップＳ１０３が完了した時点のリンク情報テーブルの例である。図２を参照すると、通信システム１０１には２つのスイッチ１１−１とスイッチ１１−２とが存在し、当該スイッチ１１−１とスイッチ１１−２との間は１本のリンク１３で接続されている。図８のエントリ８０−１はスイッチ１１−１からスイッチ１１−２への片方向のリンク１３を意味し、エントリ８０−２はスイッチ１１−２からスイッチ１１−１への片方向のリンク１３を意味する。
【００６４】
その後、所定のタイミングで、各ノード１２と、コントローラ１０の高優先プロトコル
処理部２７は、送信元ネットワークアドレスを含むパケットをリンク１３へ送信する（ス
テップＳ１０４−１〜Ｓ１０４−３）。このパケットは、主要な通信を開始する前に送信されることが望ましい。そのようなパケットの一例としては、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスに対応するリンクレイヤアドレス（ＭＡＣアドレス）を知るためのＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）パケットや、ＬＬＤＰパケットである。各ノード１２が送信するパケットに含まれる送信元ネットワークアドレスは、そのノード１２のネットワークアドレスである。また、高優先プロトコル処理部２７が送信するパケットに含まれる送信元ネットワークアドレスは、コントローラアドレス記憶部２８に記憶されているコントローラ１０のネットワークアドレスである。
【００６５】
各スイッチ１１は、隣接するノード１２またはコントローラ１０からリンク１３経由でパケットを受信すると、そのパケットに合致するマッチ条件を持つフローエントリがフローテーブルに存在するか否かを判定する。この時点ではフローテーブルは空であるので、そのパケットに合致するマッチ条件を持つフローエントリは存在しない。従って、ここでもデフォルトのアクションが適用される。そのパケットと受信ポート番号５０は制御メッセージにカプセル化されて、コントローラ１０に転送される（ステップＳ１０５）。
【００６６】
トポロジ検出部２２は、ステップＳ１０５において、スイッチインタフェース２１経由
で各スイッチ１１からコントローラ１０側に転送された制御メッセージを受け取ると、その制御メッセージを解釈して、ノード位置記憶部２３に新しいエントリ７０を追加する（ステップＳ１０６）。追加されるエントリ７０のノードアドレス７１は、制御メッセージ内のパケットに含まれる送信元ネットワークアドレスである。追加されるエントリ７０のスイッチ識別子７２は、制御メッセージを発行したスイッチ１１の識別子である。追加されるエントリ７０のポート番号７３は、制御メッセージに含まれる受信ポート番号である。
【００６７】
図９は、図２に示した通信システム１０１における、ステップＳ１０６が完了した時点のノード位置テーブルの例である。図９の一番上のエントリはコントローラ１０の高優先プロトコル処理部２７に対応し、図９の２番目のエントリと３番目のエントリは、ノード１２−１とノード１２−２のそれぞれに対応する。ノード１２−１を例にとると、図２の通信システム１０１において、ノード１２−１は、スイッチ１１−１のポート＃１に接続されている。従って、ノード１２−１に対応するエントリ７０のスイッチ識別子７２は、ノード１１−１の識別子となり、ポート番号７３は、スイッチ１１−１のポート＃１になる。これにより、コントローラ１０は、ノード１２−１の位置を把握することができる。同様に、コントローラ１０は、ノード１２−２がスイッチ１１−２のポート＃３に接続されていると把握することができる。
【００６８】
次に、コントローラ１０の経路設定部２５は、ノード位置記憶部２３とコントローラアドレス記憶部２８を参照して、リンク１３を介してコントローラ１０に隣接しているスイッチ１１を特定する（ステップＳ１０７）。特に、経路設定部２５は、ノード位置記憶部２３（図９参照）を検索して、コントローラのネットワークアドレスと等しいノードアドレス７１が設定されているエントリ７０のスイッチ識別子７２を得る。図９の一番上のエントリに、コントローラ１０のネットワークアドレスが設定されている。そして、この一番上のエントリ７０のスイッチ識別子７２は、スイッチ１１−２の識別子になっている。そのため、コントローラ１０は、スイッチ１１−２がコントローラ１０に隣接していることが分かる。
【００６９】
経路設定部２５は、トポロジ情報記憶部２４を参照し、各スイッチ１１から、リンク１３を介してコントローラ１０に隣接しているスイッチ１１までの通信経路を計算する（ステップＳ１０８）。計算された通信経路には、チャネル１４を含まない。
【００７０】
図２に示した通信システム１０１において、トポロジ情報記憶部２４の内容は、図８に示すようになる。また、ステップＳ１０７の結果は、コントローラ１０に隣接しているスイッチ１１はスイッチ１１−２であることを示す。そして、図９を参照すると、スイッチ１１−１からスイッチ１１−２への経路が１つだけ存在することが分かる（図８の一番上のエントリ）。なお、経路の候補が複数存在する場合は、ダイクストラ法などの公知の最短経路探索アルゴリズムを用いて最適な経路を選択してもよい。
【００７１】
経路設定部２５は、ステップＳ１０８で計算した経路に沿って、各スイッチ１１からコントローラ１０に向けて高優先プロトコルのパケットを転送させるためのフローエントリを、経路上のスイッチ１１ごとに生成する（ステップＳ１０９）。
【００７２】
経路設定部２５は、スイッチインタフェース２１を介して経路上の各スイッチ１１のフローテーブルに、ステップＳ１０９で生成したフローエントリを追加するための制御メッセージを出力する（ステップＳ１１０）。
【００７３】
図１０及び図１１は、図２に示される通信システム１０１における、ステップＳ１１０実行後のスイッチ１１−１およびスイッチ１１−２のフローテーブル４３Ａ／４３Ｂに設定されるフローエントリの具体例である。図１０のスイッチ１１−１のフローテーブル４３Ａのフローエントリ６０−１は、スイッチ１１−１に流入した高優先プロトコルのパケットを、ポート４０−２（＃２）経由でスイッチ１１−２に向けて転送するルールを示している。また、図１１のスイッチ１１−２のフローテーブル４３Ｂのフローエントリ６０−１は、スイッチ１１−２に流入した高優先プロトコルのパケットを、ポート４０−１（＃１）経由でコントローラ１０の高優先プロトコル処理部２７に向けて転送するルールを示している。
【００７４】
以上により、高優先プロトコルのパケットがスイッチ１１−１またはスイッチ１１−２で受信されると、それぞれフローエントリ６０−１または６０−２を適用してパケット転送が行われる。この結果、コントローラ１０は、高優先プロトコルのパケットの流入を確実に検出することができるようになる。
【００７５】
続いて、初期化処理後に行われる経路設定処理について説明する。コントローラ１０の高優先プロトコル処理部２７は、高優先プロトコルで規定される管理処理を実行中に、ノード１２にパケットを送出することがある。例えば、高優先プロトコル処理部２７が、ノード１２から受け取ったパケットに対し、応答パケットをノード１２に返送するケースである。また、高優先プロトコル処理部２７は、ノード１２−１とノード１２−２の間の通信を許可する場合がある。
【００７６】
前述の初期化処理が完了した時点では、高優先プロトコルのパケットをノード１２からコントローラ１０に転送するためのフローエントリ６０のみが各スイッチ１１のフローテーブル４３に設定されている。そこで、高優先プロトコル処理部２７は、必要に応じて、高優先プロトコルのパケットをコントローラ１０からノード１２に転送するためのフローエントリ６０を、各スイッチ１１に登録するように経路設定部２５に要求する。高優先プロトコル処理部２７も、必要に応じて、高優先プロトコルのパケットをノード１２−１（または１２−２）から別のノード１２−２（または１２−１）に転送するためのフローエントリ６０を、各スイッチ１１に登録するように経路設定部２５に要求する。
【００７７】
図７は、経路設定部２５が、高優先プロトコル処理部２７からの要求に従って、送信元から送信先への通信経路を計算し、フローエントリをスイッチ１１に設定するまで処理の流れを表したフローチャートである。
【００７８】
図７を参照すると、まず、コントローラ１０の経路設定部２５は、ノード位置記憶部２３を参照し、送信元に隣接するスイッチ１１のスイッチ識別子７２とポート番号７３を求める（ステップＳ２００）。特に、経路設定部２５は、ノード位置記憶部２３のノード位置テーブル２３Ａ（図４参照）から、送信元のネットワークアドレスに一致するノードアドレス７１を持つエントリを検索し、スイッチ識別子７２とポート番号７３を得る。
【００７９】
図２に示した通信システム１０１において、前述の初期化処理の結果、ノード位置記憶部２３のノード位置テーブル２３Ａは、図９に示すようになる。例えば、送信元が図２のノード１２−１であるとき、ノード位置テーブル２３Ａの上から２番目のエントリが、送信元の位置を表すエントリとなる。この場合、図９のエントリから、それぞれスイッチ１１−１の識別子と“１”が得られる。これらは、図２において、ノード１２−１が、スイッチ１１−１のポート＃１に接続していることに対応している。
【００８０】
続いて、経路設定部２５は、ノード位置記憶部２３を参照し、送信先に隣接するスイッチ１１のスイッチ識別子７２とポート番号７３とを求める（ステップＳ２０１）。特に、経路設定部２５は、ノード位置記憶部２３のノード位置テーブル２３Ａ（図４参照）から、送信先のネットワークアドレスに一致するノードアドレス７１を持つエントリを検索し、スイッチ識別子７２とポート番号７３を得る。
【００８１】
例えば、送信先が図２のノード１２−２であるとき、ノード位置テーブル２３Ａの上から３番目のエントリが、送信先の位置を表すエントリとなる。この場合、図９のエントリ
から、それぞれスイッチ１１−２の識別子と“３”が得られる。これらは、図２において、ノード１２−２が、スイッチ１１−２のポート＃３に接続していることに対応している。
【００８２】
次に、経路設定部２５は、トポロジ情報記憶部２４を参照し、送信元に隣接するスイッチ１１から送信先に隣接するスイッチ１１までの通信経路を計算する（ステップＳ２０２）。この通信経路は、チャネル１４を含まない。
【００８３】
図２に示す通信システム１０１において、前述の初期化処理の結果、トポロジ情報記憶部２４のリンク情報テーブル２４Ａは、図８に示すようになる。例えば、送信元と送信先が、それぞれ図２の通信システム１０１のノード１２−１とノード１２−２であるとする。ステップＳ２００およびステップＳ２０１の結果により、送信元に隣接するスイッチと送信先に隣接するスイッチは、それぞれスイッチ１１−１とスイッチ１１−２と特定されている。図８のリンク情報テーブル２４Ａを参照すると、スイッチ１１−１からスイッチ１１−２への経路が１つだけ存在することが分かる（一番上のエントリ８０）。なお、経路の候補が複数存在する場合は、ダイクストラ法などの公知の最短経路探索アルゴリズムを用いて最適な経路を選択してもよい。
【００８４】
次に、経路設定部２５は、ステップＳ２０２で計算した経路に沿って高優先プロトコルのパケットを転送させるためのフローエントリを、経路上のスイッチ１１ごとに生成する（ステップＳ２０３）。
【００８５】
最後に、経路設定部２５は、ステップＳ２０３で生成したフローエントリを経路上の各スイッチ１１のフローテーブル４３Ａに追加する制御メッセージを、スイッチインタフェース２１に出力する（ステップＳ２０４）。
【００８６】
図１２は、図２のノード１２−１とノード１２−２間のパケット通信を許可する場合の、スイッチ１１−１に設定されるフローテーブル４３Ａの例である。図１３は、図２のノー
ド１２−１とノード１２−２間のパケット通信を許可する場合の、スイッチ１１−２に設定されるフローテーブル４３Ｂの例である。
【００８７】
ステップＳ２０４で追加されたフローエントリは、図１２の一番上のフローエントリ６０−２と、図１３の一番上のフローエントリ６０−２である。図１２の一番上のフローエ
ントリ６０−２は、ノード１２−１からスイッチ１１−１に流入した高優先プロトコルのパケットを、ポート４０−２（＃２）経由でスイッチ１１−２に向けて転送するルールを示している。また、図１３の一番上のフローエントリ６０−２は、スイッチ１１−１からスイッチ１１−２に流入した高優先プロトコルのパケットを、ポート４０−３（＃３）経由でノード１２−２に向けて転送するルールを示している。
【００８８】
ステップＳ２０４で追加されるフローエントリ（高優先プロトコルの通信用フローエントリ）は、図６の初期化処理のステップＳ１１０で追加されるフローエントリ（高
優先プロトコルのパケット検出用フローエントリ）の優先度よりも高く設定されていることが望ましい。このことは、上述の図１２、図１３の例を用いて説明される。受信パケットが高優先プロトコルのパケットである場合、フローテーブル４３Ａの検索の結果、フローエントリ６０−１とフローエントリ６０−２の両方がヒットすることになる。この場合、フローエントリ６０−２が最終的に選択されることが望ましい。ある優先制御は、例えば、図１２、図１３に示したように、フローテーブル４３Ａ及び４３Ｂそれぞれの上方にあるエントリの方が他のエントリよりも優先順位の高いものとして取り扱う。あるいは、各フローエントリの任意のフィールドに優先度情報を持たせ、これらを比較するようにしてもよい。
【００８９】
以上説明したように、本実施形態によれば、高優先プロトコルの新規パケットはチャネル１４ではなくリンク１３を経由してスイッチ１１からコントローラ１０へと転送される。背景技術で述べたように、スイッチ１１は、高負荷時に、本来チャネル１４経由でコントローラ１０に転送すべきパケットを、廃棄するかもしれない。しかしながら、本実施形態では、高優先プロトコルのパケットはリンク１３を介してコントローラ１０に転送されるため、そのようなパケットロスは発生し得ない。従って、本実施形態の通信システム１０１は、高優先プロトコルが要求する高い通信品質を満足させることができる。
【００９０】
また、本実施形態の実施に当たっては、非特許文献１のオープンフロープロトコルに何ら変更を加える必要がない。その理由は、高優先プロトコルのパケットがリンク１３を介してコントローラ１０とスイッチ１１間またはスイッチ１１間で確実に伝送されるように、コントローラ１０がオープンフロープロトコルに従って各スイッチ１１のフローテーブル４３を設定するからである。
【００９１】
以上、本発明の各実施形態を説明した。しかしながら、本発明は、上記した実施形態に限定されるものではない。本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態の説明では、少なくとも１つのスイッチ１１（スイッチ１１−２）とコントローラ１０がリンク１３とチャネル１４を介して接続されるものとして説明した。リンク１３とそのチャネル１４は、必ずしも別線である必要はない。つまり、物理的に１本の信号線にリンク１３とチャネル１４を多重してもよい。この際、波長多重や時分割多重、フレーム多重といった公知の方法を利用することもできる。
【００９２】
また、本実施形態に係るコントローラ１０は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置を用いて実現可能である。図１４は、ＰＣ等の情報処理装置を用
いてコントローラ１０を構成した場合のブロック図である。
【００９３】
図１４の記憶装置２０１は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）や
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）又はＳＤＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を用いて構成してもよい。記憶装置２０１には、ノード位置記憶部２３、トポロジ情報記憶部２４、コントローラアドレス記憶部２８が配置される。
【００９４】
図１４のデータ処理装置２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  
Ｕｎｉｔ）を含んで構成される。データ処理装置２００は、上記したスイッチインタフェース２１、トポロジ検出部２２、経路設定部２５、高優先プロトコル処理部２７に相当する処理を実行することにより、当該スイッチインタフェース２１、当該トポロジ検出部２２、当該経路設定部２５、当該高優先プロトコル処理部２７として機能する。
【００９５】
また、当該ＣＰＵにおける各処理は、スイッチ制御プログラムとして記述できる。データ処理装置２００が記憶装置２０１からこのスイッチ制御プログラムを読み出して実行する構成とすることもできる。また、データ処理装置２００が、図示を省略するコンピュータ読み取り可能な記録媒体からスイッチ制御プログラムを読み出して実行する構成としてもよい。
【００９６】
スイッチインタフェース２１、トポロジ検出部２２、経路設定部２５、高優先プロトコル処理部２７の一部をハードウェアによって構成することも可能である。
【００９７】
上記した実施形態では、コントローラ１０が近隣探索パケットやＡＲＰパケットに基づいて、ネットワークトポロジの把握や、ノードの位置管理を行うものとして説明した。これらの情報が事前に判明している場合には、初期設定処理を省略することもできる。この場合、ノード位置記憶部２３及びトポロジ情報記憶部２４に、初期設定として格納しておくとともに、必要なフローエントリがスイッチ１１に初期設定される。
【００９８】
上記した実施形態では、コントローラ１０が高優先プロトコル処理部を備えて、ログイン処理、名前解決及びノード１２への状態変更通知を行うものとして説明した。コントローラ１０以外のサーバ等に、これらの処理を行わせてもよい。この場合、コントローラは、図６の初期化処理において、ネットワークトポロジの構築し（ステップＳ１０３）、サーバとノードの位置を特定し、当該サーバとノード間の通信経路を計算し、必要なフローエントリを設定することになる。
【００９９】
最後に、本発明の好ましい形態を要約する。
【０１００】
［第１の形態］
（上記第１の視点による通信システム参照）
［第２の形態］
当該コントローラは、
当該ネットワークトポロジ上に存在するスイッチのうち、少なくとも１つのスイッチと当該所定の伝送品質を満たすリンクによって接続されており、
当該リンクによって接続された少なくとも１つのスイッチを介して、当該所定の通信プロトコルによる通信の発生を検出する通信システム。
【０１０１】
［第３の形態］
当該コントローラは、
当該所定の通信プロトコルのパケットを受信したとき、当該ネットワークトポロジ上のスイッチに、当該所定の通信プロトコルによる通信の発生をコントローラに当該所定の伝送品質を満たすリンクを介して通知させるフローエントリを設定する通信システム。
［第４の形態］
当該コントローラは、
当該ノードとの当該所定の通信プロトコルによる通信に必要なフローエントリの設定するとともに、当該所定の通信プロトコルによる管理処理を実施する、高優先プロトコル処理部をさらに備える通信システム。
［第５の形態］
当該トポロジ検出部は、当該スイッチ群に対し、各スイッチの情報の送信を要求する近隣探索パケットを送信し、当該各スイッチからの応答に基づいて、当該所定の伝送品質を満たすリンクによって構成されたネットワークトポロジを検出する通信システム。
［第６の形態］
当該トポロジ検出部は、当該ノード間または当該ノードとコントローラ間の通信が開始
される前に送信されるパケットに基づいて、当該ノードの位置管理を行う通信システム。
［第７の形態］
当該コントローラは、
当該所定の通信プロトコルによるパケットについて適用されるフローエントリが、他のパケットについて適用されるフローエントリよりも高い優先順位で適用されるように、フローエントリを設定する通信システム。
［第８の形態］
当該コントローラは、
当該所定の伝送品質を満たすリンクに加えて、当該所定の伝送品質を満たすリンク以外のリンクも用いて、当該所定の通信プロトコルによるパケット以外のパケットを転送するように、当該スイッチを制御する通信システム。
［第９の形態］
（上記第２の視点によるコントローラ参照）
［第１０の形態］
（上記第３の視点による通信方法参照）
［第１１の形態］
（上記第４の視点によるプログラム参照）
なお、上記した第９〜第１１の形態は、第１の形態のように、第２〜第８の形態に展開
することが可能である。
【０１０２】
本発明の全開示（請求の範囲を含む）の枠内において、及び、開示した基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことができる。
【符号の説明】
【０１０３】
１０、Ｘ１０  コントローラ
１１、１１−１〜１１−３  スイッチ
１２、１２−１、１２−２  ノード
１３、１３ａ  リンク
１４  チャネル
２０  管理ポート
２１  スイッチインタフェース
２２  トポロジ検出部
２３  ノード位置記憶部
２３Ａ  ノード位置テーブル
２４  トポロジ情報記憶部
２４Ａ  リンク情報テーブル
２５  経路設定部
２６  ポート
２７  高優先プロトコル処理部
２８  コントローラアドレス記憶部
４０、４０−１〜４０−Ｎ、４８−１〜４８−Ｎ  ポート
４１  管理ポート
４２  コントローラインタフェース
４３  フローエントリ記憶部
４３Ａ、４３Ｂ、４３Ｘ  フローテーブル
４４  パケット多重部
４５  フローエントリ検索部
４６  フローアクション適用部
４７  内部スイッチ
５０  受信ポート番号
６０−１〜６０−Ｍ  フローエントリ
６１  マッチ条件
６２  アクション
７０  エントリ
７１  ノードアドレス
７２  スイッチ識別子
７３  ポート番号
８０  エントリ
８１  スイッチ識別子
８２  対向スイッチ識別子
８３  対向ポート番号
１０１、Ｘ１０１  通信システム
２００  データ処理装置
２０１  記憶装置
0006007976.tif 000002
【図１】
0006007976.tif 000003
【図２】
0006007976.tif 000004
【図３】
0006007976.tif 000005
【図４】
0006007976.tif 000006
【図５】
0006007976.tif 000007
【図６】
0006007976.tif 000008
【図７】
0006007976.tif 000009
【図８】
0006007976.tif 000010
【図９】
0006007976.tif 000011
【図１０】
0006007976.tif 000012
【図１１】
0006007976.tif 000013
【図１２】
0006007976.tif 000014
【図１３】
0006007976.tif 000015
【図１４】
0006007976.tif 000016
【図１５】
0006007976.tif 000017
【図１６】
0006007976.tif 000018
【図１７】
0006007976.tif 000019