(57)【要約】  多数の転送ノードが存在する場合においても、一定以上のパフォーマンスを確保できる構成の提供。通信システムは、複数の制御サーバと、予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと、を含む。前記複数の制御装置のうちの第１の制御装置は、所定の契機により、前記各転送ノードと前記各制御装置との対応関係を参照し、当該受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられていない転送ノードに対応付けられた他の制御装置に対して、転送経路の情報のうち、少なくとも自装置に対応付けられた転送ノードを含む転送経路情報を送信する。前記転送経路情報を受信した第２の制御サーバは、前記転送経路情報に基づいて自装置に対応付けられた転送ノードのうち前記転送経路上の転送ノードに対し、前記処理規則を作成して送信する。（図１）
2011083780.tif 000002
【特許請求の範囲】
【請求項１】
予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと、
前記複数の転送ノードと、複数の制御装置との対応関係を記憶する対応管理部と、
所定の契機により、前記各転送ノードと前記各制御装置との対応関係を参照し、受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられていない転送ノードに対応付けられた他の制御装置に対して、転送経路の情報のうち、少なくとも自装置に対応付けられた転送ノードを含む転送経路情報を送信する経路伝達部と、を備える制御装置を含む複数の制御装置と、
を有する通信システム。
【請求項２】
前記複数の制御装置は、さらに、
少なくとも自装置に対応付けられた転送ノードを含む各転送ノード間の接続関係が記述されたネットワークトポロジを記憶するデータベースと、
前記経路伝達部から受信した転送経路情報に基づいて、自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対し、前記ネットワークトポロジを参照して前記処理規則を作成する処理規則生成部と、
自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対して、前記作成した処理規則を送信する送信部と、
を備えることを特徴とする請求項１の通信システム。
【請求項３】
前記経路伝達部を備える制御装置は、
少なくとも自装置に対応付けられた転送ノードを含む各転送ノード間の接続関係が記述されたネットワークトポロジを記憶するデータベースと、
自装置に接続されている転送ノードから、新規パケットについての処理規則の送信要求を受けた場合、前記ネットワークトポロジを参照して、転送経路を算出する経路算出部とを備える請求項１または２の通信システム。
【請求項４】
前記経路算出部を備える制御装置を起点として、前記転送経路上の転送ノードに対応付けられた制御装置が、処理規則の送信処理とは独立して、前記新規パケットを転送していき、
前記転送経路上の終端の転送ノードに対応付けられた制御装置が、転送経路上の終端の転送ノードに前記新規パケットを送信し、指定のポートから前記新規パケットの出力を指示する請求項３の通信システム。
【請求項５】
前記転送経路情報には、前記自装置に対応付けられていない転送ノードに送信する処理規則が含まれており、
前記転送経路情報を受信した制御装置は、受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられた転送ノードに対して、前記転送経路情報に含まれている処理規則を送信する請求項１から４いずれか一の通信システム。
【請求項６】
前記転送経路は、任意に選択した起点ノードと終点ノードの組み合わせで算出しておいた転送経路とする請求項１から５いずれか一の通信システム。
【請求項７】
前記転送経路を所定期間キャッシュし、同一の起点ノードと終点ノードの組み合わせがキャッシュされている場合、転送経路の算出を省略する請求項３から６いずれか一の通信システム。
【請求項８】
前記複数の制御装置は、それぞれ、前記経路伝達部と、自装置に接続されている転送ノードから、新規パケットについての処理規則の送信要求を受けた場合、前記ネットワークトポロジを参照して、転送経路を算出する経路算出部と、を備えており、
前記経路伝達部は、前記転送経路上の自装置に接続されている転送ノードから、パケットを受信することになる転送ノードに対応付けられている制御装置に対して、前記転送経路情報に代えて、前記制御装置に対応付けられている転送ノードによる転送経路を計算するための始点と、前記新規パケットを送信し、
前記始点および新規パケットを受信した制御装置において、前記始点および新規パケットによる転送経路の再計算と処理規則の作成・送信を行わせる請求項２から７いずれか一の通信システム。
【請求項９】
前記制御装置は、自装置に接続されているノードの情報を入手するデータ同期部を備え、
前記入手したデータに基づいて、各ノードの接続関係または各転送ノードと各制御装置との対応関係の少なくとも一方を更新する請求項１から８いずれか一の通信システム。
【請求項１０】
予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと、前記複数の転送ノードと、複数の制御装置との対応関係を記憶する対応管理部を備える複数の制御装置と、を含み、
ある転送ノードから受信パケットの転送を受けた場合、転送経路上の転送ノードに対応付けられた制御装置が、前記複数の転送ノードと複数の制御装置との対応関係を参照して、前記受信パケットを転送していき、
前記転送経路上の終端の転送ノードに対応付けられた制御装置が、転送経路上の終端の転送ノードに前記新規パケットを送信し、指定のポートから前記新規パケットの出力を指示する通信システム。
【請求項１１】
予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと接続され、
前記複数の転送ノードを含む転送ノード群と、複数の制御装置との対応関係を記憶する対応管理部と、
所定の契機により、前記各転送ノードと前記各制御装置との対応関係を参照し、受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられていない転送ノードに対応付けられた他の制御装置に対して、転送経路の情報のうち、少なくとも自装置に対応付けられた転送ノードを含む転送経路情報を送信する経路伝達部と、を備える第１の制御装置。
【請求項１２】
複数の制御装置と、
予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと、を含む通信システムにおける前記処理規則の設定方法であって、
前記複数の制御装置のうちの第１の制御装置が、所定の契機により、前記各転送ノードと前記各制御装置との対応関係を参照し、当該受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられていない転送ノードに対応付けられた他の制御装置に対して、転送経路の情報のうち、少なくとも自装置に対応付けられた転送ノードを含む転送経路情報を送信するステップと、
前記転送経路情報を受信した第２の制御装置が、自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対して、少なくとも自装置に対応付けられた転送ノードを含む各転送ノード間の接続関係が記述されたネットワークトポロジを参照して処理規則を作成し、送信するステップとを含む処理規則の設定方法。
【請求項１３】
複数の制御装置と、
予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと、を含む通信システムにおけるパケットの送信方法であって、
ある転送ノードから受信パケットの転送を受けた場合、転送経路上の転送ノードに対応付けられた制御装置が、前記複数の転送ノードと複数の制御装置との対応関係を参照して、前記受信パケットを転送していくステップと、
前記転送経路上の終端の転送ノードに対応付けられた制御装置が、転送経路上の終端の転送ノードに前記新規パケットを送信し、指定のポートから前記新規パケットの出力を指示するステップと、を含む通信方法。
【請求項１４】
予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと接続され、前記複数の転送ノードを含む転送ノード群と、複数の制御装置との対応関係を記憶する対応管理部を備える制御装置を構成するコンピュータに実行させるプログラムであって、
所定の契機により、自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対し、処理規則を作成して送信する処理と、
前記各転送ノードと前記各制御装置との対応関係を参照し、前記受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられていない転送ノードに対応付けられた他の制御装置に対して、転送経路の情報のうち、少なくとも自装置に対応付けられた転送ノードを含む転送経路情報を送信する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１０−０００７４０号（２０１０年１月５日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、通信システム、制御装置、処理規則の設定方法、パケットの送信方法およびプログラムに関し、特に、ネットワークに配置された転送ノードによりパケットを転送して通信を実現する通信システム、制御装置、前記転送に用いる処理規則の設定方法、パケットの送信方法およびプログラムに関する。
【背景技術】
【０００２】
近年、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている（非特許文献１参照）。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。転送ノードとして機能するオープンフロースイッチは、制御装置と位置付けられるオープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するルールと、処理内容を定義したアクション（Ａｃｔｉｏｎｓ）と、フロー統計情報（Ｓｔａｔｓ）との組が定義される（図１０参照）。【０００３】
図２３に、非特許文献２に定義されているアクション名とアクションの内容を例示する。ＯＵＴＰＵＴは、指定ポート（インタフェース）に出力するアクションである。ＳＥＴ＿ＶＬＡＮ＿ＶＩＤからＳＥＴ＿ＴＰ＿ＤＳＴは、パケットヘッダのフィールドを修正するアクションである。【０００４】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するルール（ＦｌｏｗＫｅｙ）を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、受信パケットに対して、当該エントリのアクションフィールドに記述された処理内容を実施する。一方、前記検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対して受信パケットを転送し、受信パケットの送信元・送信先に基づいたパケットの経路の決定を依頼し、これを実現するフローエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを処理規則として用いてパケット転送を行っている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Nick McKeownほか７名、"OpenFlow: Enabling Innovation in Campus Networks"、［online］、［平成21年12月14日検索］、インターネット〈URL：http://www.openflowswitch.org//documents/openflow-wp-latest.pdf〉
【非特許文献２】"OpenFlow Switch Specification" Version 0.9.0. (Wire Protocol 0x98) ［平成21年12月14日検索］ 、インターネット〈URL：http://www.openflowswitch.org/documents/openflow-spec-v0.9.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記非特許文献１及び２の全開示内容はその引用をもって本書に繰込み記載する。以下に本発明による分析を与える。
しかしながら、ネットワークに多数のオープンフロースイッチが接続されている場合、オープンフローコントローラにおける経路の計算およびその結果を踏まえたフローテーブルのエントリの配布に要する処理量が大きくなり、オープンフロースイッチからの経路作成要求を受けてから応答までの時間が増大してしまうという問題点がある。【０００７】
この点に関し、非特許文献１には、そのＦｉｇｕｒｅ２の説明として、「すべてのフローテーブルは同一のコントローラーによって管理される」と記載され、オープンフロープロトコルでは、パフォーマンスやロバスト性を向上させるため、あるオープンフロースイッチが、２以上のコントローラから制御を受けることも許容されていると記載されているに止まっている（３頁右上）。また、非特許文献２にも、「４．３  Ｃｏｎｎｅｃｔｉｏｎ Ｉｎｔｅｒｒｕｐｔｉｏｎ」において、あるオープンフロースイッチがコントローラを見失ってしまったような場合に、バックアップのコントローラに接続を試みることが記載されているに止まる。【０００８】
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、上記オープンフロースイッチの例のように、多数の転送ノードが存在する場合においても、一定以上のパフォーマンスを確保できる構成を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の第１の視点によれば、予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと、前記複数の転送ノードと、複数の制御装置との対応関係を記憶する対応管理部と、所定の契機により、前記各転送ノードと前記各制御装置との対応関係を参照し、受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられていない転送ノードに対応付けられた他の制御装置に対して、転送経路の情報のうち、少なくとも自装置に対応付けられた転送ノードを含む転送経路情報を送信する経路伝達部と、を備える制御装置を含む複数の制御装置と、を有する通信システムが提供される。【００１０】
本発明の第２の視点によれば、予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと接続され、前記複数の転送ノードを含む転送ノード群と、複数の制御装置との対応関係を記憶する対応管理部と、所定の契機により、前記各転送ノードと前記各制御装置との対応関係を参照し、受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられていない転送ノードに対応付けられた他の制御装置に対して、転送経路の情報のうち、少なくとも自装置に対応付けられた転送ノードを含む転送経路情報を送信する経路伝達部と、を備える第１の制御装置が提供される。【００１１】
本発明の第３の視点によれば、少なくとも自装置に対応付けられた転送ノードを含む各転送ノード間の接続関係が記述されたネットワークトポロジを記憶するデータベースと、前記第１の制御装置の経路伝達部から受信した転送経路情報に基づいて、自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対し、前記ネットワークトポロジを参照して前記処理規則を作成する処理規則生成部と、前記作成した処理規則を自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対して送信する送信部と、を備え、上記した第１の制御装置から受信した前記転送経路情報に基づいて自装置に接続された転送ノードのうち転送経路上の転送ノードに対し、前記処理規則を作成して送信する第２の制御装置が提供される。【００１２】
本発明の第４の視点によれば、複数の制御装置と、予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと、を含む通信システムにおける前記処理規則の設定方法であって、前記複数の制御装置のうちの第１の制御装置が、所定の契機により、前記各転送ノードと前記各制御装置との対応関係を参照し、受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられていない転送ノードに対応付けられた他の制御装置に対して、転送経路の情報のうち、少なくとも自装置に対応付けられた転送ノードを含む転送経路情報を送信するステップと、前記転送経路情報を受信した第２の制御装置が、自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対して、少なくとも自装置に対応付けられた転送ノードを含む各転送ノード間の接続関係が記述されたネットワークトポロジを参照して処理規則を作成し、送信するステップとを含む処理規則の設定方法が提供される。本方法は、上記した制御装置および転送ノードという、特定の機械に結びつけられている。【００１３】
本発明の第５の視点によれば、上記した第１、第２の制御装置を構成するコンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。【００１４】
本発明の第６の視点によれば、予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと、前記複数の転送ノードと、複数の制御装置との対応関係を記憶する対応管理部を備える複数の制御装置と、を含み、ある転送ノードから受信パケットの転送を受けた場合、転送経路上の転送ノードに対応付けられた制御装置が、前記複数の転送ノードと複数の制御装置との対応関係を参照して、前記受信パケットを転送していき、前記転送経路上の終端の転送ノードに対応付けられた制御装置が、転送経路上の終端の転送ノードに前記新規パケットを送信し、指定のポートから前記新規パケットの出力を指示する通信システムが提供される。【００１５】
本発明の第７の視点によれば、複数の制御装置と、予め設定され、または、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノードと、を含む通信システムにおけるパケットの送信方法であって、ある転送ノードから受信パケットの転送を受けた場合、転送経路上の転送ノードに対応付けられた制御装置が、前記複数の転送ノードと複数の制御装置との対応関係を参照して、前記受信パケットを転送していくステップと、前記転送経路上の終端の転送ノードに対応付けられた制御装置が、転送経路上の終端の転送ノードに前記新規パケットを送信し、指定のポートから前記新規パケットの出力を指示するステップと、を含む通信方法が提供される。本方法は、上記した制御装置および転送ノードという、特定の機械に結びつけられている。
【発明の効果】
【００１６】
本発明によれば、多数のオープンフロースイッチが存在する場合においても、一定以上のパフォーマンスを確保することが可能になる。その理由は、複数の制御装置を用いるとともに、当該制御装置間に処理を分散させる構成を採用したことにある。
【図面の簡単な説明】
【００１７】
【図１】本発明の概要を説明するための図である。
【図２】図１の制御サーバ（第１の制御サーバ）の概略構成を説明するための図である。
【図３】図１の制御サーバ（第２の制御サーバ）の概略構成を説明するための図である。
【図４】本発明の概要を説明するための別の図である。
【図５】本発明の第１の実施形態の構成を示す図である。
【図６】本発明の第１の実施形態のオープンフローコントローラの構成を示す図である。
【図７】図５のオープンフロースイッチおよびノードの接続関係を表した表である。
【図８】図５のオープンフロースイッチとオープンフローコントローラとの対応関係を表した表である。
【図９】本発明の第１の実施形態のオープンフロースイッチの構成を示す図である。
【図１０】本発明の第１の実施形態のオープンフロースイッチのフローテーブルに記憶される処理規則（フローエントリ）の構成を表した図である。
【図１１】図５のオープンフロースイッチにフローテーブルに記憶される処理規則（フローエントリ）の具体例である。
【図１２】本発明の第１の実施形態の動作を表したシーケンス図である。
【図１３】図５に、図１２のシーケンスによる動作を追記した図である。
【図１４】本発明の第１の実施形態の動作を表した第２のシーケンス図である。
【図１５】図５に、図１４のシーケンスによる動作を追記した図である。
【図１６】本発明の第２の実施形態のオープンフローコントローラの構成を示す図である。
【図１７】本発明の第３の実施形態のオープンフローコントローラの構成を示す図である。
【図１８】本発明の第３の実施形態の動作を表したシーケンス図である。
【図１９】本発明の第４の実施形態のオープンフローコントローラの構成を示す図である。
【図２０】本発明の第４の実施形態の動作を表したシーケンス図である。
【図２１】本発明の第５の実施形態を説明するための図である。
【図２２】本発明の第５の実施形態の動作を表したシーケンス図である。
【図２３】アクション名とアクションの内容を例示した図である。
【発明を実施するための形態】
【００１８】
はじめに本発明の概要について、図１〜図４を参照して説明する。本発明に係る通信システムは、図１に示すように、それぞれ自装置に接続された転送ノードのうち、算出された転送経路上の転送ノードに対し、前記転送ノードの接続関係が記述されたネットワークトポロジを参照して、受信パケットの転送先を定めた処理規則を作成して送信する複数の制御装置１００Ａ〜１００Ｃと、それぞれが前記複数の制御装置１００Ａ〜１００Ｃのいずれかと接続され、自装置に対応付けられた制御装置から受信した処理規則に基づいて受信パケットの処理を行うパケット処理部を備える複数の転送ノード３０１Ａ〜３０３Ａ、３０１Ｂ〜３０３Ｂ、３０１Ｃ〜３０３Ｃと、を含んで構成される。なお、この概要に付記した図面参照符号は、専ら理解を助けるための例示であり、図示の態様に限定することを意図するものではない。
【００１９】
前記複数の制御装置１００Ａ〜１００Ｃの少なくとも一つ（例えば、制御装置１００Ａ）は、図２に示すように、転送ノード３０１Ａ〜３０３Ａ、３０１Ｂ〜３０３Ｂ、３０１Ｃ〜３０３Ｃと、制御装置１００Ａ〜１００Ｃとの対応関係を記憶する対応管理部１６Ａと、転送ノードからの処理規則が不明なパケットの受信等の所定の契機により、前記各転送ノードと前記各制御装置との対応関係を参照し、受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられていない転送ノードに対応付けられた他の制御装置（例えば、制御装置１００Ｂ、１００Ｃ）に対して、転送経路の情報のうち、少なくとも自装置に対応付けられた転送ノードを含む転送経路情報を送信する経路伝達部１３と、を備える。
【００２０】
前記複数の制御装置１００Ａ〜１００Ｃのうち、転送経路情報の受信側となる制御装置（例えば、制御装置１００Ｂ、１００Ｃ）は、図３に示すように、少なくとも自装置に対応付けられた転送ノードを含む各転送ノード間の接続関係が記述されたネットワークトポロジを記憶するデータベース（トポロジＤＢ）１５と、受信した転送経路情報に基づいて、自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対し、前記ネットワークトポロジを参照して前記処理規則を作成する処理規則生成部１８Ａと、自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対して、前記作成した処理規則を送信する送信部１７Ａと、を備える。
【００２１】
ここで例えば、制御装置１００Ａが、転送ノード３０２Ａに接続されたあるクライアントノードからの要求に応じて、図１の破線に示す転送ノード３０２Ａ、３０３Ａ、３０２Ｂ、３０３Ｂ、３０２Ｃ、３０３Ｃを経由してパケットを転送する転送経路が算出されたものとする。このとき、制御装置１００Ａは、自装置に接続されている転送ノード３０２Ａ、３０３Ａに対し、前記転送経路を実現する処理規則を作成して送信する。さらに、制御装置１００Ａは、各転送ノードと各制御装置との対応関係を参照し、前記転送経路上の転送ノードのうち、自装置に接続されていない転送ノード３０１Ｂ〜３０３Ｂ、３０１Ｃ〜３０３Ｃに対応付けられた制御装置１００Ｂ、１００Ｃに対して、処理規則を作成するための転送経路情報を送信する。転送経路情報を受信した制御装置１００Ｂ、１００Ｃは、前記転送経路情報に基づいて自装置に接続された転送ノードのうち前記転送経路上の転送ノード３０２Ｂ、３０３Ｂ、３０２Ｃ、３０３Ｃに対し、前記処理規則を作成して送信する。
【００２２】
以上により、制御装置１００Ｂ、１００Ｃが、制御装置１００Ａから受け取った転送経路を用いて、処理規則を作成・送信することで、転送経路上のすべての転送ノードに処理規則が設定される。
【００２３】
同様に図４に示すように、別のクライアントノードからの要求に応じて、制御装置１００Ａが、図４の破線に示す転送ノード３０２Ａ、３０３Ａ、３０２Ｃ、３０３Ｃを経由してパケットを転送する転送経路が算出したものとする。このとき、制御装置１００Ａは、自装置に接続されている転送ノード３０２Ａ、３０３Ａに対し、前記転送経路を実現する処理規則を作成して送信する。さらに、制御装置１００Ａは、各転送ノードと各制御装置との対応関係を参照し、前記転送経路上の転送ノードのうち、自装置に接続されていない転送ノード３０１Ｃ〜３０３Ｃに対応付けられた制御装置１００Ｃに対して、転送経路情報を送信する。転送経路情報を受信した制御装置１００Ｃは、前記転送経路情報に基づいて自装置に接続された転送ノードのうち前記転送経路上の転送ノード３０２Ｃ、３０３Ｃに対し、前記処理規則を作成して送信する。
【００２４】
以上のように、制御装置１００Ｂを経由しない転送経路が作成された場合には、制御装置１００Ｂに対する転送経路情報の送信は省略される。この場合も、制御装置１００Ｃが、制御装置１００Ａから受け取った転送経路を用いて、処理規則を作成・送信することで、転送経路上のすべての転送ノードに処理規則が設定される。
本発明において以下の形態が可能である。
［形態１］
前記第１の視点に記載の通信システムのとおり。
［形態２］
前記複数の制御装置は、さらに、
少なくとも自装置に対応付けられた転送ノードを含む各転送ノード間の接続関係が記述されたネットワークトポロジを記憶するデータベースと、
前記経路伝達部から受信した転送経路情報に基づいて、自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対し、前記ネットワークトポロジを参照して前記処理規則を作成する処理規則生成部と、
自装置に対応付けられた転送ノードのうち、受信パケットの転送経路上の転送ノードに対して、前記作成した処理規則を送信する送信部と、
を備えることが好ましい。
［形態３］
前記経路伝達部を備える制御装置は、
少なくとも自装置に対応付けられた転送ノードを含む各転送ノード間の接続関係が記述されたネットワークトポロジを記憶するデータベースと、
自装置に接続されている転送ノードから、新規パケットについての処理規則の送信要求を受けた場合、前記ネットワークトポロジを参照して、転送経路を算出する経路算出部とを備えることが好ましい。
［形態４］
前記経路算出部を備える制御装置を起点として、前記転送経路上の転送ノードに対応付けられた制御装置が、処理規則の送信処理とは独立して、前記新規パケットを転送していき、
前記転送経路上の終端の転送ノードに対応付けられた制御装置が、転送経路上の終端の転送ノードに前記新規パケットを送信し、指定のポートから前記新規パケットの出力を指示することが好ましい。
［形態５］
前記転送経路情報には、前記自装置に対応付けられていない転送ノードに送信する処理規則が含まれており、
前記転送経路情報を受信した制御装置は、受信パケットの転送経路上の転送ノードのうち、自装置に対応付けられた転送ノードに対して、前記転送経路情報に含まれている処理規則を送信することが好ましい。
［形態６］
前記転送経路は、任意に選択した起点ノードと終点ノードの組み合わせで算出しておいた転送経路とすることが好ましい。
［形態７］
前記転送経路を所定期間キャッシュし、同一の起点ノードと終点ノードの組み合わせがキャッシュされている場合、転送経路の算出を省略することが好ましい。
［形態８］
前記複数の制御装置は、それぞれ、前記経路伝達部と、自装置に接続されている転送ノードから、新規パケットについての処理規則の送信要求を受けた場合、前記ネットワークトポロジを参照して、転送経路を算出する経路算出部と、を備えており、
前記経路伝達部は、前記転送経路上の自装置に接続されている転送ノードから、パケットを受信することになる転送ノードに対応付けられている制御装置に対して、前記転送経路情報に代えて、前記制御装置に対応付けられている転送ノードによる転送経路を計算するための始点と、前記新規パケットを送信し、
前記始点および新規パケットを受信した制御装置において、前記始点および新規パケットによる転送経路の再計算と処理規則の作成・送信を行わせることが好ましい。
［形態９］
前記制御装置は、自装置に接続されているノードの情報を入手するデータ同期部を備え、
前記入手したデータに基づいて、各ノードの接続関係または各転送ノードと各制御装置との対応関係の少なくとも一方を更新することが好ましい。
［形態１０］
前記第２の視点に記載の第１の制御装置のとおり。
［形態１１］
前記第３の視点に記載の第２の制御装置のとおり。
［形態１２］
前記第４の視点に記載の処理規則の設定方法のとおり。
［形態１３］
前記第５の視点に記載のプログラムのとおり。
［形態１４］
前記第６の視点に記載の通信システムのとおり。
［形態１５］
前記第７の視点に記載の通信方法のとおり。
なお、上記第２〜第７の視点に記載の第１、第２の制御装置、処理規則の設定方法、プログラム、通信システムおよび通信方法は、形態１の通信システムと同様に、それぞれの構成要素ないしステップについて、形態２〜形態９の内容に展開することが可能である。
【００２５】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図５は、本発明の第１の実施形態の構成を示す図である。図５を参照すると、４つのオープンフロースイッチ（以下、「ＯＦＳ」とする。）３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂと、オープンフローコントローラ（以下、「ＯＦＣ」とする。）１００Ａ、１００Ｂとが示されている。なお、図５の構成は、本発明を簡単に説明するために、模式化したものであり、ＯＦＳやＯＦＣの数に制限はなく、また、各ＯＦＣに、それぞれ同一数のＯＦＳが接続されている必要もない。また、ノードＡ、ノードＤは、ユーザ端末、各種のサービスサーバ等のパケットを送受信する機器である。
【００２６】
ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂは、上記した転送ノードに相当し、それぞれのフローテーブルにＯＦＣ１００Ａ、１００Ｂから設定されたフローエントリ（ルール＋アクション）を保持し、受信パケットに適合するルールを持つフローエントリのアクションを実行する。
【００２７】
ＯＦＳのうち、ＯＦＳ３０１Ａ、３０２Ａは、ＯＦＣ１００Ａに接続され、ＯＦＣ１００Ａからの制御に従って動作する。同様にＯＦＳ３０１Ｂ、３０２Ｂは、ＯＦＣ１００Ｂに接続され、ＯＦＣ１００Ｂからの制御に従って動作する。より具体的には、ＯＦＳ３０１Ａ、３０２Ａは、フローテーブルに受信パケットに適合するルールが見当たらない場合、ＯＦＣ１００Ａに対し、受信パケットについての転送経路の作成と、転送経路を実現するためのフローエントリ（ルール＋アクション）の送信（設定）を要求する。同様にＯＦＳ３０１Ｂ、３０２Ｂは、フローテーブルに受信パケットに適合するルールが見当たらない場合、ＯＦＣ１００Ｂに対し、受信パケットについての転送経路の作成と、転送経路を実現するためのフローエントリ（ルール＋アクション）の送信（設定）を要求する。このようなＯＦＳは、非特許文献１、２に記載されているように、各ベンダのスイッチに、上記機能を追加することにより構成できる。
【００２８】
ＯＦＣ１００Ａ、１００Ｂは、上記した制御装置に相当し、それぞれ接続されているＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂに対し、フローエントリ（ルール＋アクション）を送信（設定）することにより、これらを制御する。また、本実施形態のＯＦＣ１００Ａ、１００Ｂは、接続され、後記するように、一方が作成した転送経路情報を他方に送信できるようになっているものとする。
【００２９】
図６は、上記第１の実施形態のＯＦＣの構成を示す図である。図６を参照すると、ＯＦＣ１００は、パケット転送部１１と、経路算出部１２と、経路伝達部１３と、ＯＦＣ間通信部１４と、トポロジＤＢ１５と、ＯＦＳ−ＯＦＣ対応管理部１６と、ＯＦＳ通信部１７と、フロー生成部１８と、経路受諾部１９とを備えて構成される。
【００３０】
パケット転送部１１は、ＯＦＳにて該当するフローエントリが無く処理規則（フローエントリ）の送信（設定）要求を受けた際に、ＯＦＣ間通信部１４を介して、当該処理規則（フローエントリ）の送信（設定）要求に添付されたパケットを他のＯＦＣに送信する動作を行う。
【００３１】
経路算出部１２は、ＯＦＳ通信部１７から出力されたパケットと処理規則（フローエントリ）の送信（設定）要求元のスイッチＩＤを元に、トポロジＤＢ１５に記憶された転送ノードの接続関係を記述したネットワークトポロジを参照して、ＯＦＳから転送されたパケットを含む一連のフローの転送経路を計算する。この経路計算には、例えば、ダイクストラの最短経路アルゴリズムを用いることができる。また、経路計算において、ネットワークのトラヒック状況を考慮に入れることも可能である。
【００３２】
経路伝達部１３は、ＯＦＳ−ＯＦＣ対応管理部１６に経路算出部１２にて算出された転送経路および受信パケットを出力する。また、経路伝達部１３は、ＯＦＳ−ＯＦＣ対応管理部１６に記憶されたＯＦＳと、該ＯＦＳと接続されたＯＦＣとの対応関係を参照して、経路算出部１２にて算出された転送経路上にあるＯＦＳに接続されたＯＦＣ（転送経路上にあるＯＦＳに対応付けられているＯＦＣ）に対し、経路算出部１２にて算出された転送経路と受信パケットを含む転送経路情報を、ＯＦＣ間通信部１４を介して送信する動作を行う。なお、ここで用いる転送経路情報としては、他のＯＦＣのフロー生成部１８が処理規則（フローエントリ）を生成することができるものであれば形式は問われないが、例えば、他のＯＦＣが個々のＯＦＳに設定すべき処理規則（フローエントリ）を羅列した内容とすることもできる。
【００３３】
ＯＦＣ間通信部１４は、他のＯＦＣのＯＦＣ間通信部１４と接続され、上記した当該フローエントリの送信（設定）要求に添付されたパケットや、転送経路情報の授受を行う。
【００３４】
トポロジＤＢ（データベース）１５は、ＯＦＳを含むノード（各種のサービスサーバや外部ネットワーク）の接続関係を記述したネットワークトポロジを記憶する。図７は、図５のＯＦＣを含むノードの接続関係をテーブル形式で記述したものである。図７中の「ＯＦＳ；３０２Ａ」等は、実際にはＯＦＳ；３０２ＡのＭＡＣアドレスやＩＰアドレス等が格納される。なお、本実施形態では、ＯＦＣ１００Ａ、１００ＢがそれぞれトポロジＤＢ１５を保持するものとしているが、ＯＦＣ１００Ａ、１００ＢがトポロジＤＢ１５を共有する構成であってもよい。
【００３５】
ＯＦＳ−ＯＦＣ対応管理部１６は、ＯＦＳと、該ＯＦＳと接続されたＯＦＣとの対応関係を記憶し、経路伝達部１３から出力された転送経路および受信パケットと、自装置に接続されたＯＦＳの情報をフロー生成部１８に出力する。図８は、図５のＯＦＳとＯＦＣの対応関係をテーブル形式で記述したものである。なお、本実施形態では、トポロジＤＢ１５と独立してＯＦＳ−ＯＦＣ対応管理部１６を設けているが、トポロジＤＢ１５とＯＦＳ−ＯＦＣ対応管理部１６とを統合することも可能である。例えば、図７に示した個々のＯＦＳの接続関係に加えて、接続するＯＦＣを記述するフィールドを設けてもよい。
【００３６】
ＯＦＳ通信部１７は、受信パケットに該当するフローエントリが無いため、ＯＦＳから送信された受信パケットとともにフローエントリの送信（設定）要求を、経路算出部１２に出力する。ＯＦＳ通信部１７は、フロー生成部１８にて生成された処理規則（フローエントリ）を自装置に接続されたＯＦＳ（自装置に対応付けられているＯＦＳ）のうち、転送経路上にあるＯＦＳに送信し、処理規則（フローエントリ）の設定を指示する。
【００３７】
フロー生成部１８は、ＯＦＳ−ＯＦＣ対応管理部１６または経路受諾部１９から出力された転送経路（情報）および受信パケットを元に、自装置に接続されたＯＦＳの情報およびトポロジＤＢ１５のネットワークトポロジを参照して、自装置に接続されたＯＦＳのうち、転送経路上にあるＯＦＳ（自装置に対応付けられているＯＦＳ）に設定すべき処理規則（フローエントリ）を生成する。
【００３８】
経路受諾部１９は、他のＯＦＣから受信した受信パケットを含む転送経路情報をフロー生成部１８に出力して、処理規則（フローエントリ）を生成させる動作を行う。
【００３９】
なお、上記したパケット転送部１１と、経路算出部１２と、経路伝達部１３と、ＯＦＣ間通信部１４と、トポロジＤＢ１５と、ＯＦＳ−ＯＦＣ対応管理部１６と、ＯＦＳ通信部１７と、フロー生成部１８と、経路受諾部１９とは、それぞれＯＦＣを構成するコンピュータに備えられた記憶装置および該記憶装置をハードウェアとして利用するコンピュータ・プログラムにより実現することができる。
【００４０】
図９は、上記第１の実施形態のＯＦＳの構成を示す図である。図９を参照すると、ＯＦＳ３００は、ＯＦＣ通信部３１と、フロー設定部３２と、パケット処理部３３と、フローテーブル３４とを備えて構成される。また、ＯＦＳ３００には、自装置が接続する（自装置に対応付けられた）ＯＦＣが予め設定されているものとする。
【００４１】
ＯＦＣ通信部３１は、ＯＦＣのＯＦＳ通信部１７から処理規則（フローエントリ）を受け取って、フロー設定部３２に出力するとともに、パケット処理部３３から受信パケットに該当するフローエントリが無い場合に、ＯＦＣに受信パケットに適用すべき、転送経路の算出および当該転送経路を実現する処理規則（フローエントリ）の生成を要求する。
【００４２】
フロー設定部３２は、ＯＦＣ通信部３１を介してＯＦＣから送信された処理規則（フローエントリ）をフローテーブル３４に登録または更新する動作を行う。
【００４３】
パケット処理部３３は、フローテーブル３４を参照して、他のＯＦＳを含むノードから受信した受信パケットのヘッダ情報に適合するルールを持つ処理規則（フローエントリ）を検索し、受信パケットに適合する処理規則（フローエントリ）のアクションフィールドに記述された処理内容を実施する。
【００４４】
フローテーブル３４は、ＯＦＣ通信部３１を介してＯＦＣから送信された処理規則（フローエントリ）を格納するテーブルである。図１０は、フローテーブル３４のフィールド構成を表した図である。例えば、送信元ＩＰアドレスフィールド（ＩＰ  ＳＡ）に、ノードＡのＩＰアドレスが記述され、宛先ＩＰアドレスフィールド（ＩＰ  ＤＡ）に、ノードＤのＩＰアドレスが記述された特徴を持つフローについて、隣接するＯＦＳのうち、転送経路に従ったＯＦＳに送信するインタフェース（ポート）から転送するというアクション（図２３の「ＯＵＴＰＵＴ」）を設定することで、前記ノードＡからノードＤへのフローの転送経路に従った転送が実現される。その他、図２３の各種アクションを設定し、あるいは、アクションフィールドを空欄とすることで、特定のフローのＭＡＣアドレスやＩＰアドレスを変更したり、特定のフローを廃棄（ｄｒｏｐ）させることが可能である。
【００４５】
図１１は、ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂに設定される処理規則（フローエントリ）の例である。ここでは、ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂを経由してノードＡとノードＤとの間のパケットを転送する転送経路が設定されているものとする。例えば、ＯＦＳ３０１Ａには、ノードＡからノードＤに宛てられたパケットを順方向（インタフェース２（ＯＦＳ３０２Ａに接続；図７参照））に転送するアクションと、ノードＤからノードＡに宛てられたパケットを逆方向（インタフェース１（ノードＡに接続；図７参照））に転送するアクションが設定されている。同様に、ＯＦＳ３０２Ａ、３０１Ｂ、３０２Ｂにも、順方向と逆方向の処理規則（フローエントリ）が設定されることで、ノードＡとノードＤとの間のパケット転送が上記した転送経路で行われることになる。
【００４６】
［処理規則（フローエントリ）の設定方法］
続いて、本実施形態の動作について図面を参照して詳細に説明する。図１２は、本実施形態の動作を表したシーケンス図である。図１２の例では、ＯＦＳ３０１Ａに接続されたノードＡから、ＯＦＳ３０１Ａのフローテーブル３４に保持されている処理規則（フローエントリ）のいずれにも適合しないノードＤを宛先とするパケット（新規パケット）が送信されたものとしている。
【００４７】
まず、ＯＦＳ３０１Ａは、新規パケットを受信すると（ステップＳ００１）、自装置に接続されているＯＦＣ１００Ａに対し、当該新規パケットを含む処理規則（フローエントリ）の送信（設定）を要求する（ステップＳ００２）。なお、ステップＳ００１にて、ＯＦＳ３０１Ａのフローテーブル３４に保持されている処理規則（フローエントリ）に適合するパケットを受信した場合には、以下の処理は行われることなく、図１２の最下段に示したように、ノード処理規則に従ったパケット転送処理が行われる。
【００４８】
前記処理規則（フローエントリ）の送信（設定）を要求されたＯＦＣ１００Ａは、経路算出部１２にて、新規パケットの宛先であるノードＤと要求元のＯＦＳ３０１Ａを元に、トポロジＤＢ１５のネットワークトポロジを参照して、ＯＦＳ３０１Ａから転送されたパケットを含む一連のフローの転送経路を計算する（ステップＳ００３）。ここでは、ノードＡからノードＤに宛てられたパケットを、ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂの順に転送していく転送経路が算出されたものとする。
【００４９】
次に、ＯＦＣ１００Ａは、ＯＦＳ−ＯＦＣ対応管理部１６に保持された、ＯＦＳとＯＦＣとの対応関係を参照して、前記算出した転送経路上のＯＦＳのうち、自装置に接続されていないＯＦＳに対応付けられたＯＦＣを検索する（ステップＳ００４）。ここでは、図５のＯＦＣ１００Ａに接続されていないＯＦＳ３０１Ｂ、３０２Ｂに接続されているＯＦＣ１００Ｂが検索されることになる。
【００５０】
次に、ＯＦＣ１００Ａは、前記検索したＯＦＣ１００Ｂに対し、ステップＳ００３で計算した転送経路と受信パケットを含む転送経路情報を送信する（ステップＳ００５）。
【００５１】
その後、ＯＦＣ１００Ａは、自装置に接続されたＯＦＳの情報およびトポロジＤＢ１５のネットワークトポロジを参照して、自装置に接続されたＯＦＳのうち、転送経路上にあるＯＦＳに設定すべき処理規則（フローエントリ）を生成し、ＯＦＳ３０１Ａ、３０２Ａに対し、送信（設定）する（ステップＳ００６−１）。
【００５２】
同様に、ＯＦＣ１００Ｂも、自装置に接続されたＯＦＳの情報およびトポロジＤＢ１５のネットワークトポロジを参照して、自装置に接続されたＯＦＳのうち、転送経路上にあるＯＦＳに設定すべき処理規則（フローエントリ）を生成し、ＯＦＳ３０１Ｂ、３０２Ｂに対し、送信（設定）する（ステップＳ００６−２）。
【００５３】
その後は、各ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂにて、受信した処理規則（フローエントリ）をフローテーブル３４に登録または更新する処理が行われることになる（ステップＳ００７）。
【００５４】
以上により、各ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂに、算出した転送経路に対応する処理規則が設定され（図１１参照）、ノードＡ−ノードＢ間のパケット転送が可能となる。
【００５５】
なお、上記ステップＳ００６−１、Ｓ００６−２では、ＯＦＣが自装置に接続されたＯＦＳのうち、転送経路上にあるＯＦＳに同時に処理規則（フローエントリ）を送信（設定）するものとしているが、これらのうち、一部のＯＦＳ（たとえば、転送経路上の上流側のＯＦＳ）だけに処理規則（フローエントリ）を送信（設定）するものとしてもよい。この場合、各ＯＦＳから処理規則（フローエントリ）の送信（設定）要求を受けてから各ＯＦＣが処理規則（フローエントリ）を送信（設定）することになる。
【００５６】
図１３は、図５の構成図に、図１２のシーケンスによる動作を追記した図である。ＯＦＣ１００Ａは、ＯＦＳ３０１Ａから、あるパケットの処理規則の送信（設定）要求の受信を契機として、転送経路の算出を行い、その結果をＯＦＳ３０１Ａ、３０２Ａに対して、処理規則（フローエントリ）として設定する。また、ＯＦＣ１００ＡがＯＦＣ１００Ｂに対して、転送経路情報を送信することで、ＯＦＳ３０１Ｂ、３０２Ｂの処理規則（フローエントリ）の設定が行われる。図１３からも明らかなように、本発明においては、ＯＦＳ／ＯＦＣの数は、特に制限されず、転送経路上にその他のＯＦＳが存在する場合には、当該ＯＦＳに接続されたＯＦＣに転送経路情報を送信し、処理規則（フローエントリ）を設定させることができる。
【００５７】
また、図１３のＯＦＣ１００Ａ、１００Ｂの双方が、経路算出部１２および経路受諾部１９を備えている必要は無く、例えば、新規パケットを受信するのがＯＦＣ１００Ａであれば、ＯＦＣ１００Ａに経路算出部１２を配置し、ＯＦＣ１００Ｂに経路受諾部１９を配置するといった構成も採用可能である。
【００５８】
［新規パケットのバイパス転送］
続いて、上記処理規則（フローエントリ）と独立して、並行的に行われる新規パケットのバイパス転送方法について説明する。図１４は、本実施形態における新規パケットのバイパス転送の流れを表したシーケンス図である。図１４のステップＳ００１〜Ｓ００３までの流れは図１２のステップＳ００１〜Ｓ００３と同じあるので、以下、転送経路算出後に行われる一連の流れについて説明する。
【００５９】
図１４を参照すると、転送経路を算出したＯＦＣ１００Ａは、前記算出した転送経路上の宛先ノードに接続されているＯＦＳ（転送経路上の終端のＯＦＳ）を検索し、次にＯＦＳ−ＯＦＣ対応管理部１６に保持された、ＯＦＳとＯＦＣとの対応関係を参照して、当該ＯＦＳに対応付けられたＯＦＣを検索する（ステップＳ１０４）。ここでは、ノードＡからノードＤに宛てられたパケットを、ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂの順に転送していく転送経路が算出されたものとする。このとき、転送経路上の終端のＯＦＳは、ＯＦＳ３０２Ｂであり、ＯＦＳ３０２Ｂに接続されているＯＦＣ１００Ｂが検索されることになる。
【００６０】
次に、ＯＦＣ１００Ａは、前記検索したＯＦＣ１００Ｂに対し、ステップＳ００１で受信した新規パケットを送信し、配下のＯＦＳ３０２Ｂの指定インタフェースから送信させるように要求する（ステップＳ１０５）。
【００６１】
ＯＦＣ１００Ｂは、配下のＯＦＳ３０２Ｂに対し、前記新規パケットを指定インタフェースから送信するよう要求する（ステップＳ１０６）。
【００６２】
ＯＦＳ３０２Ｂは、ＯＦＣ１００Ｂからの指示に従って前記新規パケットを指定インタフェースから送信する（ステップＳ１０７）。前記ＯＦＳ３０２Ｂが新規パケットを指定インタフェースに送信する仕組みとしては、種々の方法が考えられるが、各ＯＦＳに特定のヘッダ情報を持つパケットを指定インタフェースから出力する処理規則（フローエントリ）を登録しておき、ＯＦＣ１００Ｂで新規パケットに当該ヘッダ情報を書き込む処理を行わせればよい。
【００６３】
以上により、転送経路の算出の契機となったパケット（新規パケット）を、途中のＯＦＳを経由せずに、ＯＦＣを介して転送し、終端で出力する、パケットのバイパス転送が可能となる。なお、上記一連の手順は、図１５に示す如く、処理規則（フローエントリ）の送信（設定）と独立して行うことが可能であり、それ自体で処理規則（フローエントリ）の設定を待たずに新規パケットを宛先ノードに送信できるという効果があるが、図１３に示した処理規則（フローエントリ）の送信（設定）と平行して行うようにしてもよい。例えば、図１２のステップＳ００４〜Ｓ００６−１の処理の前後に、図１４のステップＳ１０４、Ｓ１０５の処理を挿入し、ＯＦＣ１００Ａに実行させることが可能である。
【００６４】
図１５からも明らかなように、本発明においては、ＯＦＳ／ＯＦＣの数は、特に制限されず、転送経路の途中のＯＦＳを介さずに、パケットを送信させることができる。
【００６５】
以上、ノードＡからノードＤに宛てられたパケットを、ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂの順に転送していく転送経路を例示して本発明の第１の実施形態を説明したが、転送経路は上記に限られるものではない。例えば、ＯＦＳ３０１Ａから、ＯＦＳ３０２Ａ、３０２Ｂを経由して、ＯＦＳ３０２Ｂに接続されたノードにパケットを転送する転送経路が算出された場合も、上記と略同様に動作する。また例えば、ＯＦＳ３０２Ｂから、ＯＦＳ３０１Ｂ、３０２Ａ、３０１Ａを経由して、ノードＡにパケットを転送する転送経路が算出された場合も、ＯＦＣ１００Ａと、ＯＦＣ１００Ｂが入れ替わるのみで上記と略同様に動作する。
【００６６】
［第２の実施形態］
続いて、上記したＯＦＣに変更を加えた本発明の第２の実施形態について図面を参照して詳細に説明する。本実施形態は、第１の実施形態とはＯＦＣの構成が異なるのみであるので、以下、その相違点を中心に説明する。
【００６７】
図１６は、本発明の第２の実施形態のＯＦＣ１０１の構成を示す図である。図６に示した第１の実施形態のＯＦＣ１００と相違する点は、自装置に接続されているノードの情報を入手するデータ同期部２０が追加されている点である。
【００６８】
データ同期部２０は、具体的には、ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）や各種ベンダのプロトコルを用いてネットワーク上の各ノードから発せられている機器やその構成情報を収集して、各ノード間の物理的接続関係を入手し、その結果を、トポロジＤＢ１５やＯＦＳ−ＯＦＣ対応管理部１６に反映する動作を行う。さらに、すべてのＯＦＣにデータ同期部２０を搭載するのではなく、あるＯＦＣのデータ同期部２０が、ＯＦＣ間通信部１４を介して、他のＯＦＣのトポロジＤＢ１５およびＯＦＳ−ＯＦＣ対応管理部１６を更新する構成も採用可能である。
【００６９】
以上のように、データ同期部２０を備えたＯＦＣを用いる本実施形態によれば、ネットワーク構成に変更が加えられた場合や、各ノードの故障等が生じた場合にも、適切な転送経路を作成し、当該転送経路に基づいた処理規則（フローエントリ）の配布を行うことが可能になる。
【００７０】
［第３の実施形態］
続いて、上記したＯＦＣに変更を加えた本発明の第３の実施形態について図面を参照して詳細に説明する。本実施形態は、第１の実施形態のＯＦＣに転送経路のキャッシュ機能を追加したものであり、以下、その相違点を中心に説明する。
【００７１】
図１７は、本発明の第３の実施形態のＯＦＣ１０２の構成を示す図である。図６に示した第１の実施形態のＯＦＣ１００と相違する点は、経路算出部１２に、経路記憶部２２が追加されている点である。
【００７２】
経路記憶部２２は、経路算出部１２にて算出された転送経路を所定のタイミングが到来するまで記憶するために使用される。
【００７３】
［キャッシュ付き処理規則（フローエントリ）の設定方法］
続いて、本実施形態の動作について図面を参照して詳細に説明する。図１８は、本実施形態の動作を表したシーケンス図である。図１８の例では、ＯＦＳ３０１Ａに接続されたノードＡから、ＯＦＳ３０１Ａのフローテーブル３４に保持されている処理規則（フローエントリ）のいずれにも適合しないノードＤを宛先とするパケット（新規パケット）が送信されたものとしている。
【００７４】
ＯＦＳ３０１Ａが新規パケットを受信し（ステップＳ００１）、自装置に接続されているＯＦＣ１００Ａに対し、当該新規パケットを含む処理規則（フローエントリ）の送信（設定）を要求する（ステップＳ００２）までの動作は、第１の実施形態と同様である。なお、本実施形態においても、ステップＳ００１にて、ＯＦＳ３０１Ａのフローテーブル３４に保持されている処理規則（フローエントリ）に適合するパケットを受信した場合には、以下の処理は行われることなく、図１８の最下段に示したように、ノード処理規則に従ったパケット転送処理が行われる。
【００７５】
前記処理規則（フローエントリ）の送信（設定）を要求されたＯＦＣ１００Ａは、経路算出部１２にて転送経路を算出する前に、経路記憶部２２を参照して、前記新規パケットと同一の特徴（例えば、ＯＦＳ３０１Ａからの、ノードＤを宛先とするパケット。）を持つ転送経路情報を検索する（ステップＳ２０１）。
【００７６】
前記検索の結果、経路記憶部２２に、前記新規パケットと同一の特徴（例えば、ＯＦＳ３０１Ａからの、ノードＤを宛先とするパケット。）を持つ転送経路情報が見つかった場合、ＯＦＣ１００Ａは、転送経路の算出を省略してステップＳ００４以下の動作を行う。
【００７７】
一方、前記検索の結果、経路記憶部２２に、前記新規パケットと同一の特徴（例えば、ＯＦＳ３０１Ａからの、ノードＤを宛先とするパケット。）を持つ転送経路情報が見つからなかった場合、ＯＦＣ１００Ａは、新規パケットの宛先であるノードＤと要求元のＯＦＳ３０１Ａを元に、トポロジＤＢ１５のネットワークトポロジを参照して、ＯＦＳ３０１Ａから転送されたパケットを含む一連のフローの転送経路を計算する（ステップＳ２０２）。次いで、ＯＦＣ１００Ａは、計算した転送経路を前記新規パケットの特徴とともに、経路記憶部２２に記憶する（ステップＳ２０３）。
【００７８】
以降の動作は、上記した第１の実施形態と同様である。本実施形態によれば、転送経路を作成したことのあるパケットについては、その内容が経路記憶部２２に保持されている限り、転送経路の作成を省略できるため、ＯＦＣの負荷を低減し、かつ、処理規則（フローエントリ）の送信（設定）までの応答性を向上させることが可能になる。
【００７９】
また、本実施形態においても、図１４に示した新規パケットのバイパス転送手順を平行して実行することも可能である。この場合も、図１８のステップＳ００４〜Ｓ００６−１の処理の前後に、図１４のステップＳ１０４、Ｓ１０５の処理を挿入し、ＯＦＣ１００Ａに実行させることも可能である。
【００８０】
［第４の実施形態］
続いて、上記したＯＦＣに変更を加えた本発明の第４の実施形態について図面を参照して詳細に説明する。本実施形態は、第１の実施形態のＯＦＣに転送経路のキャッシュ機能と投機的経路算出機能を追加したものであり、以下、その相違点を中心に説明する。
【００８１】
図１９は、本発明の第４の実施形態のＯＦＣ１０３の構成を示す図である。図６に示した第１の実施形態のＯＦＣ１００と相違する点は、経路算出部１２に、経路記憶部２２が追加されている点と、経路記憶部２２に転送経路を作成して登録する投機的経路算出部２３が追加されている点である。
【００８２】
経路記憶部２２は、経路算出部１２にて算出された転送経路を所定のタイミングが到来するまで記憶するために使用される。
【００８３】
投機的経路算出部２３は、ＯＦＣの初回起動時や負荷が低いとき、ネットワークトポロジに変更が生じたとき、あるいは、一定時間おきなどの所定のタイミングで、トポロジＤＢ１５を参照し、あるＯＦＳからあるノードに到る転送経路を算出し、経路記憶部２２に登録する。ここで「投機的」というのは、処理規則（フローエントリ）の送信（設定）要求を待たずに、先取りして処理規則（フローエントリ）を生成してしまうという意味である。
【００８４】
なお、投機的経路算出部２３が転送経路を算出するＯＦＳとノードの組み合わせとしては、経路記憶部２２に記憶されていないものを選択することが望ましい。このようにすることで、処理規則（フローエントリ）の送信（設定）要求が発生した際にキャッシュミスの発生を抑えることが可能になる。
【００８５】
［投機的転送経路を用いた処理規則（フローエントリ）の設定方法］
続いて、本実施形態の動作について図面を参照して詳細に説明する。図２０は、本実施形態の動作を表したシーケンス図である。図２０の例では、ＯＦＳ３０１Ａに接続されたノードＡから、ＯＦＳ３０１Ａのフローテーブル３４に保持されている処理規則（フローエントリ）のいずれにも適合しないノードＤを宛先とするパケット（新規パケット）が送信されたものとしている。
【００８６】
まず、ＯＦＣ１００Ａ、１００Ｂの投機的経路算出部２３は、ＯＦＣの初回起動時や負荷が低いとき、ネットワークトポロジに変更が生じたとき、あるいは、一定時間おきなどの所定のタイミングで、投機的転送経路の算出を行う（ステップＳ３００−１、Ｓ３００−２）。
【００８７】
ＯＦＳ３０１Ａが新規パケットを受信し（ステップＳ００１）、自装置に接続されているＯＦＣ１００Ａに対し、当該新規パケットを含む処理規則（フローエントリ）の送信（設定）を要求する（ステップＳ００２）までの動作は、第１の実施形態と同様である。なお、本実施形態においても、ステップＳ００１にて、ＯＦＳ３０１Ａのフローテーブル３４に保持されている処理規則（フローエントリ）に適合するパケットを受信した場合には、以下の処理は行われることなく、図２０の最下段に示したように、ノード処理規則に従ったパケット転送処理が行われる。
【００８８】
前記処理規則（フローエントリ）の送信（設定）を要求されたＯＦＣ１００Ａは、経路算出部１２にて転送経路を算出する前に、経路記憶部２２を参照して、前記新規パケットと同一の特徴（例えば、ＯＦＳ３０１Ａからの、ノードＤを宛先とするパケット。）を持つ転送経路情報を検索する（ステップＳ３０１）。
【００８９】
前記検索の結果、経路記憶部２２に、前記新規パケットと同一の特徴（例えば、ＯＦＳ３０１Ａからの、ノードＤを宛先とするパケット。）を持つ転送経路情報が見つかった場合、ＯＦＣ１００Ａは、転送経路の算出を省略してステップＳ００４以下の動作を行う。
【００９０】
一方、前記検索の結果、経路記憶部２２に、前記新規パケットと同一の特徴（例えば、ＯＦＳ３０１Ａからの、ノードＤを宛先とするパケット。）を持つ転送経路情報が見つからなかった場合、ＯＦＣ１００Ａは、新規パケットの宛先であるノードＤと要求元のＯＦＳ３０１Ａを元に、トポロジＤＢ１５のネットワークトポロジを参照して、ＯＦＳ３０１Ａから転送されたパケットを含む一連のフローの転送経路を計算する（ステップＳ３０２）。次いで、ＯＦＣ１００Ａは、計算した転送経路を前記新規パケットの特徴とともに、経路記憶部２２に記憶する（ステップＳ３０３）。
【００９１】
以降の動作は、上記した第１の実施形態と同様である。本実施形態によれば、転送経路を作成したことのあるパケットおよび統計的経路算出部にて算出した転送経路については、その内容が経路記憶部２２に保持されている限り、転送経路の作成を省略できるため、ＯＦＣの負荷を低減し、かつ、処理規則（フローエントリ）の送信（設定）までの応答性を向上させることが可能になる。
【００９２】
また、本実施形態においても、図１４に示した新規パケットのバイパス転送手順を平行して実行することも可能である。この場合も、図１８のステップＳ００４〜Ｓ００６−１の処理の前後に、図１４のステップＳ１０４、Ｓ１０５の処理を挿入し、ＯＦＣ１００Ａに実行させることが可能である。
【００９３】
［第５の実施形態］
続いて、上記したＯＦＣ同士が転送経路情報をやり取りするのではなく、各ＯＦＣに転送経路の算出を分散させるようにした本発明の第５の実施形態について図面を参照して詳細に説明する。本実施形態は、第１の実施形態のＯＦＣと同等の構成にて実現できるので、以下、その相違点を中心に説明する。
【００９４】
図２１は、本発明の第５の実施形態の概略動作を表した図である。第１の実施形態の説明にて使用した図１３とは、ＯＦＣ１００Ａが、転送経路情報でなく、ＯＦＣ１００Ｂが転送経路を計算する始点となるＯＦＳ（３０１Ｂ）と、新規パケットを送信する点である。ＯＦＣ１００Ｂは、前記始点として指定されたＯＦＳ３０１Ｂから宛先ノード（ノードＤ）に到る転送経路を作成し、これに対応する転送記憶（フローエントリ）を自装置に接続されたＯＦＳに送信（設定）する。
【００９５】
［分散型処理規則（フローエントリ）の設定方法］
続いて、本実施形態の動作について図面を参照して詳細に説明する。図２２は、本実施形態の動作を表したシーケンス図である。
【００９６】
ＯＦＳ３０１Ａが新規パケットを受信し（ステップＳ００１）、自装置に接続されているＯＦＣ１００Ａに対し、当該新規パケットを含む処理規則（フローエントリ）の送信（設定）を要求する（ステップＳ００２）までの動作は、第１の実施形態と同様である。なお、本実施形態においても、ステップＳ００１にて、ＯＦＳ３０１Ａのフローテーブル３４に保持されている処理規則（フローエントリ）に適合するパケットを受信した場合には、以下の処理は行われることなく、図２２の最下段に示したように、ノード処理規則に従ったパケット転送処理が行われる。
【００９７】
前記処理規則（フローエントリ）の送信（設定）を要求されたＯＦＣ１００Ａは、経路算出部１２にて、新規パケットの宛先であるノードＤと要求元のＯＦＳ３０１Ａを元に、トポロジＤＢ１５のネットワークトポロジを参照して、ＯＦＳ３０１Ａから転送されたパケットを含む一連のフローの転送経路を計算する（ステップＳ４０３）。ここでは、ＯＦＣ１００Ａは、ノードＡからノードＤに到るすべての転送経路を計算せずに、自装置に接続されたどのＯＦＳを経由して転送し、どのインタフェースから出力するかを示した部分的な転送経路を算出する。
【００９８】
次に、ＯＦＣ１００Ａは、ＯＦＳ−ＯＦＣ対応管理部１６に保持された、ＯＦＳとＯＦＣとの対応関係を参照して、前記算出した転送経路上の終端となるＯＦＳの出力インタフェースに接続されたＯＦＳ（転送経路未算出区間の始点ＯＦＳ）に接続されたＯＦＣを検索する（ステップＳ４０４）。ここでは、図２１のＯＦ３０１Ｂに接続されているＯＦＣ１００Ｂが検索されることになる。
【００９９】
ＯＦＣ１００Ａは、ＯＦＣ１００Ｂに宛てて、前記算出した転送経路上の終端となるＯＦＳの出力インタフェースに接続されたＯＦＳ（転送経路未算出区間の始点ＯＦＳ）と、ステップＳ００１で受信した新規パケットを送信する（ステップＳ４０５）。
【０１００】
前記転送経路未算出区間の始点ＯＦＳと、ステップＳ００１で受信した新規パケットを受信したＯＦＣ１００Ｂは、経路算出部１２にて、新規パケットの宛先であるノードＤと始点として指定されたＯＦＳ３０１Ｂを元に、トポロジＤＢ１５のネットワークトポロジを参照して、自装置に接続されたＯＦＳ群による転送経路を計算する（ステップＳ４０６）。ここでは、ＯＦＣ１００Ｂは、ＯＦＳ３０１ＢからＯＦＳ３０２Ｂに転送し、ＯＦＳ３０２Ｂのインタフェース＃２からノードＤに転送する転送経路を計算したものとする。
【０１０１】
その後、ＯＦＣ１００Ａは、自装置に接続されたＯＦＳの情報およびトポロジＤＢ１５のネットワークトポロジを参照して、自装置に接続されたＯＦＳのうち、転送経路上にあるＯＦＳに設定すべき処理規則（フローエントリ）を生成し、ＯＦＳ３０１Ａ、３０２Ａに対し、送信（設定）する（ステップＳ４０７−１）。
【０１０２】
同様に、ＯＦＣ１００Ｂも、自装置に接続されたＯＦＳの情報およびトポロジＤＢ１５のネットワークトポロジを参照して、自装置に接続されたＯＦＳのうち、転送経路上にあるＯＦＳに設定すべき処理規則（フローエントリ）を生成し、ＯＦＳ３０１Ｂ、３０２Ｂに対し、送信（設定）する（ステップＳ４０７−２）。
【０１０３】
その後は、各ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂにて、受信した処理規則（フローエントリ）をフローテーブル３４に登録または更新する処理が行われることになる（ステップＳ００７）。
【０１０４】
以上により、各ＯＦＳ３０１Ａ、３０２Ａ、３０１Ｂ、３０２Ｂに、算出した転送経路に対応する処理規則が設定され（図１１参照）、ノードＡ−ノードＢ間のパケット転送が可能となる。
【０１０５】
以上のように、本実施形態によれば、転送経路の計算をいくつかのＯＦＣに分散して行わせることが可能になる。また、上記構成を採っているため、トポロジＤＢ１５を分散して配置することも可能になる。
【０１０６】
また、本実施形態は、上記した第２〜第４の実施形態と組み合わせて構成することも可能である。例えば、第３の実施形態と組み合わせれば、ＯＦＣ１００Ａは、キャッシュされた転送経路を用い、ＯＦＣ１００Ｂ以降が、経路計算を行うといった変形実施が可能である。同様に、第４の実施形態と組み合わせれば、ＯＦＣ１００Ａは、事前に計算された投機的転送経路を用い、ＯＦＣ１００Ｂ以降が、経路計算を行うといった変形実施が可能である。
【０１０７】
以上、本発明の好適な実施形態およびその具体的な動作を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。
【０１０８】
例えば、上記した各実施形態では、非特許文献１、２の技術を用いて、ＯＦＣとＯＦＳを用いる例を挙げて説明したが、それぞれ同等の動作をする制御装置と各種の転送ノードにて実現することが可能である。
【０１０９】
例えば、上記した第１〜第４の実施形態では、各ＯＦＣがそれぞれ経路算出部１２を備えているものとして説明したが、上記した説明からも理解されるように、転送経路情報を受けとる側のＯＦＣでは転送経路算出処理は発生しない。従って、定常的に転送経路算出処理が発生しないＯＦＣの経路算出部１２は省略することができる。同様の理由から、転送経路情報を受けとることのないＯＦＣからは、経路受諾部１９を省略することができる。
【符号の説明】
【０１１０】
１１  パケット転送部
１２  経路算出部
１３  経路伝達部
１４  ＯＦＣ間通信部
１５  トポロジＤＢ
１６  ＯＦＳ−ＯＦＣ対応管理部
１６Ａ  対応管理部
１７  ＯＦＳ通信部
１７Ａ  送信部
１８  フロー生成部
１８Ａ  処理規則生成部
１９  経路受諾部
２０  データ同期部
２２  経路記憶部
２３  投機的経路算出部
３１  ＯＦＣ通信部
３２  フロー設定部
３３  パケット処理部
３４  フローテーブル
１００〜１０３、１００Ａ、１００Ｂ、１００Ｃ  制御装置（ＯＦＣ）
３００、３０１Ａ〜３０３Ａ、３０１Ｂ〜３０３Ｂ、３０１Ｃ〜３０３Ｃ  転送ノード（ＯＦＳ）
【図１】
2011083780.tif 000003
【図２】
2011083780.tif 000004
【図３】
2011083780.tif 000005
【図４】
2011083780.tif 000006
【図５】
2011083780.tif 000007
【図６】
2011083780.tif 000008
【図７】
2011083780.tif 000009
【図８】
2011083780.tif 000010
【図９】
2011083780.tif 000011
【図１０】
2011083780.tif 000012
【図１１】
2011083780.tif 000013
【図１２】
2011083780.tif 000014
【図１３】
2011083780.tif 000015
【図１４】
2011083780.tif 000016
【図１５】
2011083780.tif 000017
【図１６】
2011083780.tif 000018
【図１７】
2011083780.tif 000019
【図１８】
2011083780.tif 000020
【図１９】
2011083780.tif 000021
【図２０】
2011083780.tif 000022
【図２１】
2011083780.tif 000023
【図２２】
2011083780.tif 000024
【図２３】
2011083780.tif 000025
【国際調査報告】
2011083780.tif 000026
2011083780.tif 000027