(57)【特許請求の範囲】
【請求項１】
パケットの転送経路の少なくとも一部を構成する複数のノードを含み、
前記複数のノードにおけるノードは、
前記複数のノードの各々で実行されるパケット処理に関する複数の処理規則が設定されたパケットから、前記ノードに対応する処理規則を抽出可能な第１の手段と、
前記複数の処理規則が未設定の場合に、パケットに対応する処理規則を制御装置に要求し、当該要求に対して前記制御装置から通知された前記複数の処理規則を含めてパケット転送を実行可能な第２の手段と
を含むことを特徴とする通信システム。
【請求項２】
前記複数の処理規則は、前記複数のノードの各々が記憶部に設定すべき処理規則で構成されている請求項１の通信システム。
【請求項３】
前記ノードは、前記複数の処理規則の各々の処理規則に対応付けられたノード識別子に基づいて、前記ノードが設定すべき処理規則を特定する請求項１または２の通信システム。
【請求項４】
前記パケットには、最終ホップのノードの情報が含まれており、前記最終ホップのノードが前記複数の処理規則を削除またはパケット転送を停止する請求項１から３いずれか一の通信システム。
【請求項５】
前記複数の処理規則中の処理規則は、前記転送経路上のノードの順番で並べられており、
前記ノードが、記憶部に設定した処理規則の前記パケットからの削除または前記パケットの所定領域に当該処理規則が使用済みであることを書き込むことにより、前記複数のノードの各々が、設定すべき処理規則を特定する請求項２または４の通信システム。
【請求項６】
前記複数の処理規則は、追加ヘッダとして前記パケットに付加されている請求項１から５いずれか一の通信システム。
【請求項７】
前記パケットには、前記複数の処理規則または個々の処理規則の正当性を示す電子署名が付加されており、
前記ノードは、前記複数の処理規則列または個々の処理規則の電子署名の正当性を検証し、前記正当性が確認された場合に前記処理規則の設定を行う請求項１から６いずれか一の通信システム。
【請求項８】
前記複数の処理規則を含むパケットの起点となるノードに対し、前記複数の処理規則または前記複数の処理規則を含む前記パケットを作成して送信する前記制御装置を含む請求項１から７いずれか一の通信システム。
【請求項９】
前記制御装置は、前記パケットの経路上の複数のノードに対し、同一のノードに設定すべき処理規則を含む前記複数の処理規則または前記同一ノードに設置すべき前記複数の処理規則を含む前記パケットを作成して送信する請求項８の通信システム。
【請求項１０】
パケットを転送するノードであって、
パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が設定されたパケットから、前記ノードに対応する処理規則を抽出可能な第１の手段と、
前記複数の処理規則が未設定の場合に、パケットに対応する処理規則を制御装置に要求し、当該要求に対して前記制御装置から通知された前記複数の処理規則を含めてパケット転送を実行可能な第２の手段と
を含むことを特徴とするノード。
【請求項１１】
前記複数の処理規則は、前記複数のノードの各々が記憶部に設定すべき処理規則で構成されている請求項１０のノード。
【請求項１２】
前記複数の処理規則の各々の処理規則に対応付けられたノード識別子に基づいて、前記ノードが設定すべき処理規則を特定する請求項１０または１１のノード。
【請求項１３】
前記パケットに含まれる最終ホップのノードの情報が、前記ノードが最終ホップのノードであることを示す場合、前記複数の処理規則を削除またはパケット転送を停止する請求項１１または１２のノード。
【請求項１４】
前記複数の処理規則中の処理規則は、前記転送経路上のノードの順番で並べられており、
前記ノードが、前記複数の処理規則からの処理規則の削除または前記パケットの所定領域に当該処理規則が使用済みであることを書き込むことにより、前記複数のノードの各々が設定すべき処理規則を特定する請求項１１または１３のノード。
【請求項１５】
前記パケットに付加された追加ヘッダに格納されている前記複数の処理規則から、前記ノードの記憶部に設定すべき処理規則を取り出して設定する請求項１０から１４いずれか一のノード。
【請求項１６】
前記パケットに付加された前記複数の処理規則または前記ノードに設定すべき処理規則の電子署名の正当性を検証し、前記正当性が確認された場合に前記処理規則の設定を行う請求項１０から１５いずれか一のノード。
【請求項１７】
パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が未設定のパケットに対応する処理規則の設定要求を、前記複数のノードに含まれるノードから受信する第１の手段と、
前記設定要求に応じて、前記複数のノードの各々の記憶部に設定される前記複数の処理規則を前記ノードに通知可能な第２の手段と
を含む制御サーバ。
【請求項１８】
前記複数のノードがそれぞれの前記記憶部に設定すべき処理規則で構成された前記複数の処理規則を作成する請求項１７の制御サーバ。
【請求項１９】
前記複数の処理規則として、処理規則と当該処理規則を設定すべきノードのノード識別子とを対応付けたパケットを前記ノードに通知する請求項１７または１８の制御サーバ。
【請求項２０】
最終ホップのノードに、前記複数の処理規則を削除または前記パケットの転送を停止させるための最終ホップのノードの情報を含んだパケットを送信する請求項１７から１９いずれか一の制御サーバ。
【請求項２１】
前記パケットの転送経路上のノードの順番で処理規則を並べた前記複数の処理規則を作成する請求項１８または２０の制御サーバ。
【請求項２２】
前記複数の処理規則を追加ヘッダとしてパケットに付加する請求項１７から２１いずれか一の制御サーバ。
【請求項２３】
前記複数の処理規則または個々の処理規則の正当性を示す電子署名を付加したパケットを送信する請求項１７から２２いずれか一の制御サーバ。
【請求項２４】
前記複数のノードに対し、同一のノードに設定すべき処理規則を含む前記複数の処理規則または前記同一ノードに設置すべき前記複数の処理規則を含むパケットを作成して送信する請求項１７から２３いずれか一の制御サーバ。
【請求項２５】
パケットを転送するノードによる通信方法であって、
パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が設定されたパケットから、前記ノードに対応する処理規則を抽出し、
前記複数の処理規則が未設定の場合に、パケットに対応する処理規則を制御装置に要求し、
当該要求に対して前記制御装置から通知された前記複数の処理規則を含めてパケット転送を実行する
ことを特徴とする通信方法。
【請求項２６】
パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が未設定のパケットに対応する処理規則の設定要求を、前記複数のノードに含まれるノードから受信し、
前記設定要求に応じて、前記複数のノードの各々の記憶部に設定される前記複数の処理規則を前記ノードに通知する
ことを特徴とする通信方法。
【請求項２７】
パケットを転送するノードに、
パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が設定されたパケットから、前記ノードに対応する処理規則を抽出する処理と、
前記複数の処理規則が未設定の場合に、パケットに対応する処理規則を制御装置に要求し、当該要求に対して前記制御装置から通知された前記複数の処理規則を含めてパケット転送を実行する処理と
を実行させることを特徴とするプログラム。
【請求項２８】
パケットを転送するノードを制御する制御サーバに、
パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が未設定のパケットに対応する処理規則の設定要求を、前記複数のノードに含まれるノードから受信する処理と、
前記設定要求に応じて、前記複数のノードの各々の記憶部に設定される前記複数の処理規則を前記ノードに通知する処理と
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１０−０６０８９８号（２０１０年３月１７日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、通信システム、ノード、制御サーバ、通信方法およびプログラムに関し、特に、ネットワークに配置されたノードによりパケットを転送して通信を実現する通信システム、ノード、制御サーバ、通信方法およびプログラムに関する。
【背景技術】
【０００２】
非特許文献１、２に示すとおり、近年、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。転送ノードとして機能するオープンフロースイッチは、オープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するルール（ＦｌｏｗＫｅｙ；マッチングキー）と、処理内容を定義したアクション（Ａｃｔｉｏｎ）と、フロー統計情報（Ｓｔａｔｓ）との組が定義される（図２４参照）。【０００３】
図２５に、非特許文献２に定義されているアクション名とアクションの内容を例示する。ＯＵＴＰＵＴは、パケットを指定ポート（インタフェース）に出力するアクションである。ＳＥＴ＿ＶＬＡＮ＿ＶＩＤからＳＥＴ＿ＴＰ＿ＤＳＴは、パケットヘッダのフィールドを修正するアクションである。【０００４】
例えば、オープンフロースイッチは、最初のパケット（ｆｉｒｓｔ  ｐａｃｋｅｔ）を受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するルール（ＦｌｏｗＫｅｙ）を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、受信パケットに対して、当該エントリのアクションフィールドに記述された処理内容を実施する。一方、前記検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対して受信パケットを転送し、受信パケットの送信元・送信先に基づいたパケットの経路の決定を依頼し、これを実現するフローエントリを受け取ってフローテーブルを更新する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Nick McKeownほか７名、"OpenFlow: Enabling Innovation in Campus Networks"、［online］、［平成22年2月26日検索］、インターネット〈URL：http://www.openflowswitch.org//documents/openflow-wp-latest.pdf〉
【非特許文献２】"OpenFlow Switch Specification" Version 0.9.0. (Wire Protocol 0x98) ［平成22年2月26日検索］、インターネット〈URL：http://www.openflowswitch.org/documents/openflow-spec-v0.9.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以下の分析は、本発明者によってなされたものである。
上記受信パケットの経路の決定依頼を受けたオープンフローコントローラは（図２６のｓ２  Ｐａｃｋｅｔ−Ｉｎ参照）、受信パケットの転送経路を決定する。前記受信パケットおよび同一フローに属する後続パケットをホスト（Ｂ）に転送するには、前記転送経路上にあるすべてのオープンフロースイッチ（図２６のノード＃１およびノード＃２）に、フローエントリを設定する必要がある。このために、ユーザパケットの転送を開始するまでに時間がかかってしまうという問題点がある。【０００７】
また、上記フローエントリの設定がオープンフロープロトコルで行われる場合（非特許文献２の「４．６  ＦＬＯＷ  Ｔａｂｌｅ  Ｍｏｄｉｃａｔｉｏｎ  Ｍｅｓｓａｇｅｓ」参照）、オープンフローコントローラとオープンフロースイッチ間の通信に遅延が生じることがあり、一部のオープンフロースイッチにおけるフローエントリの設定が間に合わず、同一フローのパケットが、経路上のオープンフロースイッチにおいて、フローテーブル上のフローエントリに一致しないと判断され、オープンフローコントローラに対して受信パケットに対するフローエントリの作成依頼が行われてしまうという問題点もある。また、上記フローエントリの設定遅延により、経路上のオープンフロースイッチにおいて、フローテーブル上の意図しないフローエントリに一致し、同一フローのパケットに対し意図しないアクションが実行されるという問題点もある。【０００８】
上記の対策として、図２６に示すように、（オープンフロー）コントローラが、ノード＃１、＃２に対してフローエントリを送信（図２６のｓ３、ｓ６のＦｌｏｗＭｏｄ（Ａｄｄ）参照）するとともに、オープンフロープロトコルに規定されているＢａｒｒｉｅｒ  Ｒｅｑｕｅｓｔを送信することが考えられる（図２６のｓ４  Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔ；Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙについては非特許文献２の「５．３．６  Ｂａｒｒｉｅｒ  Ｍｅｓｓａｇｅ」参照）。Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔを受信したノードは、「Ｂａｒｒｉｅｒ  Ｒｅｐｌｙ」（図２６のｓ５）として、Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔ受信前に実行した処理内容を応答する。これにより、（オープンフロー）コントローラは、フローエントリが正しく設定されているかどうかを確かめることができる。しかしながら、この方法では、フローエントリを設定したすべてのノードと、Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙをやり取りすることになり、ユーザパケットを送信できるまでの時間（図２６のｓ１（Ｕｓｅｒ  Ｐａｃｋｅｔ）〜ｓ１０（Ｕｓｅｒ  Ｐａｃｋｅｔ））が、余計長くなってしまうという問題点がある。【０００９】
もう一つの方法として、上記Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙに代えて、Ｓｔａｔｓ  Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙを用いて、各ノードが該当するエントリを持っているかどうかを確かめる方法もあるが、この場合も、上記Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙを用いる場合と同様に、フローエントリを設定したすべてのノードと該当するフローエントリが設定されているか否かをやり取りする必要が生じ、ユーザパケットを送信できるまでの時間（図２６のｓ１（Ｕｓｅｒ  Ｐａｃｋｅｔ）〜ｓ１０（Ｕｓｅｒ  Ｐａｃｋｅｔ））が長くなってしまう。【００１０】
本発明は、上記した事情に鑑みてなされたものであってその目的とするところは、確実かつ高速に処理規則（フローエントリ）を設定することのできる通信システム、ノード、制御サーバ、通信方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の視点によれば、パケットの転送経路の少なくとも一部を構成する複数のノードを含み、前記複数のノードにおけるノードは、前記複数のノードの各々で実行されるパケット処理に関する複数の処理規則が設定されたパケットから、前記ノードに対応する処理規則を抽出可能な第１の手段と、前記複数の処理規則が未設定の場合に、パケットに対応する処理規則を制御装置に要求し、当該要求に対して前記制御装置から通知された前記複数の処理規則を含めてパケット転送を実行可能な第２の手段とを含む通信システムが提供される。
【００１２】
本発明の第２の視点によれば、パケットを転送するノードであって、パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が設定されたパケットから、前記ノードに対応する処理規則を抽出可能な第１の手段と、前記複数の処理規則が未設定の場合に、パケットに対応する処理規則を制御装置に要求し、当該要求に対して前記制御装置から通知された前記複数の処理規則を含めてパケット転送を実行可能な第２の手段とを含むノードが提供される。
【００１３】
本発明の第３の視点によれば、パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が未設定のパケットに対応する処理規則の設定要求を、前記複数のノードに含まれるノードから受信する第１の手段と、前記設定要求に応じて、前記複数のノードの各々の記憶部に設定される前記複数の処理規則を前記ノードに通知可能な第２の手段とを含む制御サーバが提供される。
【００１４】
本発明の第４の視点によれば、パケットを転送するノードによる通信方法であって、パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が設定されたパケットから、前記ノードに対応する処理規則を抽出し、前記複数の処理規則が未設定の場合に、パケットに対応する処理規則を制御装置に要求し、当該要求に対して前記制御装置から通知された前記複数の処理規則を含めてパケット転送を実行する通信方法が提供される。本方法は、データ転送ネットワークを構成する転送ノードという、特定の機械に結びつけられている。
【００１５】
本発明の第５の視点によれば、データ転送ネットワークに配置されたノードを構成するコンピュータに実行させるプログラムであって、パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が設定されたパケットから、前記ノードに対応する処理規則を抽出する処理と、前記複数の処理規則が未設定の場合に、パケットに対応する処理規則を制御装置に要求し、当該要求に対して前記制御装置から通知された前記複数の処理規則を含めてパケット転送を実行する処理とを実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。また、前記プログラムによってノードにおいて実行される処理ステップは、通信方法としても把握できる。
【００１６】
本発明の第６の視点によれば、データ転送ネットワークに配置されたノードを制御する制御サーバを構成するコンピュータに実行させるプログラムであって、パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が未設定のパケットに対応する処理規則の設定要求を、前記複数のノードに含まれるノードから受信する処理と、前記設定要求に応じて、前記複数のノードの各々の記憶部に設定される前記複数の処理規則を前記ノードに通知する処理とを実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。また、前記プログラムによって制御装置において実行される処理ステップは、通信方法としても把握できる。
【発明の効果】
【００１７】
本発明によれば、データ転送ネットワークに配置されたノードに、確実かつ高速にフローエントリを設定させることが可能になる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態の通信システムの構成を示す図である。
【図２】本発明の第１の実施形態のノードの構成を表したブロック図である。
【図３】本発明の第１の実施形態の制御装置（コントローラ）の構成を表したブロック図である。
【図４】処理規則列付きパケットの構成を説明するための図である。
【図５】図４の処理規則列ヘッダの構成例を示す図である。
【図６】本発明の第１の実施形態のノードの動作を表したフローチャートである。
【図７】本発明の第１の実施形態の制御装置（コントローラ）の動作を表したフローチャートである。
【図８】本発明の第１の実施形態の通信システムにおける一連の流れを説明するための参考図とシーケンス図である。
【図９】本発明の第２の実施形態の通信システムにおける一連の流れを説明するための参考図とシーケンス図である。
【図１０】本発明の第２の実施形態の制御装置（コントローラ）およびノードが次ホップに送出する処理規則列付きパケットの構成を表した図である。
【図１１】図１０の処理規則列ヘッダの構成例を示す図である。
【図１２】本発明の第２の実施形態の制御装置（コントローラ）の動作を表したフローチャートである。
【図１３】本発明の第２の実施形態のノードの動作を表したフローチャートである。
【図１４】本発明の第３の実施形態の通信システムにおける一連の流れを説明するための参考図とシーケンス図である。
【図１５】本発明の第３の実施形態のノードの構成を表したブロック図である。
【図１６】本発明の第３の実施形態のノードの動作を表したフローチャートである。
【図１７】本発明の第４の実施形態のノードの構成を表したブロック図である。
【図１８】本発明の第４の実施形態の制御装置（コントローラ）の構成を表したブロック図である。
【図１９】本発明の第４の実施形態で用いる署名付き処理規則列ヘッダの構成例を示す図である。
【図２０】本発明の第４の実施形態の制御装置（コントローラ）の動作を表したフローチャートである。
【図２１】本発明の第４の実施形態のノードの動作を表したフローチャートである。
【図２２】本発明の第５の実施形態の通信システムにおける一連の流れを説明するための参考図である。
【図２３】図２２に対応するシーケンス図である。
【図２４】本発明の第１〜第５の実施形態のノードのフローテーブルに設定されるエントリの構成を表した図である。
【図２５】非特許文献２に記載されているアクション名とアクションの内容を示す図である。
【図２６】非特許文献２のオープンフロープロトコルを用いて、フローエントリを確実に設定するための一連の流れを説明するための参考図とシーケンス図である。
【発明を実施するための形態】
【００１９】
はじめに、本発明の概要について説明する。以下、この概要に付記した図面参照符号は、専ら理解を助けるための例示であり、図示の態様に限定することを意図するものではない。本発明の通信システムのノードは、パケットに含まれる処理規則列から、自らの処理規則記憶部に設定すべき処理規則を取り出して、自装置の処理規則記憶部に設定する機能を有している。そして、ノードは、前記設定した処理規則を含む自らの処理規則記憶部に設定された内容を参照して、受信パケットに適合する処理規則を検索し、検索した処理規則に規定された処理内容（パケット書き換え、パケット転送、パケット廃棄など）を実行する。
【００２０】
前記処理規則列は、データ転送ネットワーク上の任意のノードのそれぞれの処理規則記憶部に設定すべき処理規則を並べた構成とすることができる。個々のノードが、処理規則列の中から自らの処理規則記憶部に設定すべき処理規則を特定する方法としては、個々の処理規則にノード識別子を付加しておく方法、処理規則列中の処理規則の位置を個々のノードに割り当てておく方法、処理規則列中の処理規則の順番に従い、個々のノードが先頭または末尾の処理規則を取り出して行く方法などを採用することができる。
【００２１】
前記処理規則と処理規則記憶部は、上述したオープンフロー技術におけるフローエントリとフローテーブルに相当するが、その他の態様を採ることもできる。例えば、受信パケットに適合する処理規則を探して、ヘッダの書き換えやパケットを指定ポートから出力するといった処理を実行できるものであればよい（図２５および非特許文献２の４頁−６頁「３．３  Ａｃｔｉｏｎｓ」、「Ｔａｂｌｅ５」参照）。
【００２２】
また、制御装置（コントローラ；図１の２０）が、前記処理規則列を含んだパケットを作成して、ノード＃１（図１の１０）に送信し、ノード＃１（図１の１０）が次ホップのノード＃２（図１の１０）に転送することとしてもよいし、ノード＃１（図１の１０）が、制御装置（コントローラ；図１の２０）から処理規則列を受け取ってパケットに付加して、次ホップのノード＃２（図１の１０）に転送することとしてもよい。また、制御装置（コントローラ；図１の２０）から必要な処理規則を受け取って処理規則列を作成する専用装置を設ける構成も採用可能である。また、ノードのうち、外部のサーバや端末との境界に位置するノードが、制御装置（コントローラ；図１の２０）から複数の処理規則を受け取って前記処理規則列を作成する機能を備える構成も採用可能である。
【００２３】
このような処理規則列を含んだパケットを受信したノード（図１のノード＃２、または図１のノード＃１、＃２）が、前記処理規則列の中から自らの処理規則記憶部に設定すべき処理規則を取り出して、自装置の処理規則記憶部に設定することにより、処理規則の設定が完了する。これにより、図２６に示した手順を踏むことなく、確実かつ迅速に、後続するユーザパケットを転送することが可能になる。なお、また、最初のパケットに付加された処理規則の削除は、終端となるノード（図１のノード＃２）に行わせればよい。
【００２４】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施形態に係る通信システムの構成を示す図である。図１を参照すると、２つのノード１０と、制御装置（コントローラ）２０と、ノード１０を経由して通信するホスト（Ａ）、（Ｂ）が示されている。なお、図１の例では、２つのノード１０と、制御装置（コントローラ）２０と、２つのホスト（Ｈｏｓｔ（Ａ）、Ｈｏｓｔ（Ｂ））を示しているが、それぞれの数は、あくまで例示であり、それぞれ任意の数とすることができる。
【００２５】
図２は、ノード１０の詳細構成を表した図である。図２を参照すると、ノード１０は、制御装置（コントローラ）２０と通信する制御装置通信部１１と、フローテーブル１３を管理するフローテーブル管理部１２と、パケットバッファ１４と、転送処理部１５とを備えて構成される。なお、ノード１０は、必ずしもパケットバッファ１４を備えていなくともよい。
【００２６】
さらに、転送処理部１５は、フロー設定情報抽出部１５２にて抽出された処理規則設定情報に従い、フローテーブル管理部１２を介してフローテーブル１３に処理規則（フローエントリ）を設定する処理等を行うフロー設定情報処理部１５１と、ユーザトラフィックとして受信したパケットに付加されている処理規則列ヘッダから処理規則設定情報を取り出して、フロー設定情報処理部１５１に出力するフロー設定情報抽出部１５２と、受信パケットに処理規則列ヘッダが付加されていなかった場合に、フローテーブル１３を検索し、該当する処理規則（フローエントリ）に定められた処理内容（アクション）をアクション実行部１５４に出力するテーブル検索部１５３と、前記テーブル検索部１５３から出力された処理内容（アクション）を実行するアクション実行部１５４とを備えて構成される。また、テーブル検索部１５３は、フローテーブル１３の検索の結果、受信パケットに適合する処理規則（フローエントリ）が無かった場合、当該受信パケットをパケットバッファ１４にバッファするとともに、制御装置（コントローラ）２０に対し、処理規則列の作成を依頼する処理を行う。
【００２７】
上記のようなノード１０は、オープンフロースイッチに、上記フロー設定情報処理部１５１およびフロー設定情報抽出部１５２を追加した構成にて実現することも可能である。
【００２８】
図３は、制御装置（コントローラ）２０の詳細構成を表した図である。図３を参照すると、制御装置（コントローラ）２０は、処理規則（フローエントリ）を格納したフローエントリデータベース（フローエントリＤＢ）２１と、ノード通信部２６を介して収集されたノード１０の接続関係に基づいてネットワークトポロジ情報を構築するトポロジ管理部２２と、トポロジ管理部２２にて構築されたネットワークトポロジ情報に基づいてパケットの転送経路および該転送経路上のノード１０に実行させるアクションを求める経路・アクション計算部２３と、経路・アクション計算部２３にて計算された結果を処理規則（フローエントリ）としてフローエントリＤＢ２１に登録し、ノード１０からの処理規則（フローエントリ）の追加または更新要求に応えるフローエントリ管理部２４と、制御メッセージ処理部２５と、ノード１０との通信を行うノード通信部２６とを備えて構成される。なお、ノード１０に対して追加または更新を指示した処理規則（フローエントリ）を保持する必要が無い場合、フローエントリデータベース（フローエントリＤＢ）２１は省略することが可能である。また、フローエントリデータベース（フローエントリＤＢ）２１を別途外部サーバ等に設ける構成も採用可能である。
【００２９】
さらに、制御メッセージ処理部２５は、ノードから受信した制御メッセージを解析して、必要な処理を行うメッセージ解析・処理部２５１と、フローエントリ管理部２４から出力された処理規則（フローエントリ）を集約した処理規則列を作成するフローエントリ集約部２５３を備えたメッセージ生成部２５２とを備えて構成される。
【００３０】
図４は、制御装置（コントローラ）２０からの指示に基づき、ノード１０にて作成される処理規則列付きパケットの構成を説明するための図である。図４の例では、処理規則列付きパケット３２は処理規則列を含んだ処理規則列ヘッダ３３をユーザパケット３１の先頭に付加した構成となっている。
【００３１】
図５は、上記処理規則列ヘッダの構成例を示す図である。図５の例では、処理規則列ヘッダ３３は、ＭＡＣ宛先アドレス（ＭＡＣ  ＤＡ）、ＭＡＣ送信元アドレス（ＭＡＣ  ＳＡ）、上位プロトコルタイプ（Ｅｔｈｅｒ  Ｔｙｐｅ）、トータルヘッダ長（Ｔｏｔａｌ  Ｌｅｎｇｔｈ）に、処理規則列付きパケットから処理規則列を除去する処理を行うべき最終ホップのノードを示したＬａｓｔ  ｈｏｐ  ｂｉｔｍａｐ、Ｌｅｎｇｔｈ〜ａｃｔｉｏｎｓまでのフィールドを一単位とする処理規則設定情報と、当該処理規則列付きパケットを出力すべきポート（当該処理規則列付きパケットを転送すべきノード）を示すＯｕｔｐｕｔ  ｐｏｒｔ  ｂｉｔｍａｐ（出力ポートビットマップ）を設定対象のノード数分付加した構成となっている。
【００３２】
図５のＤＰＩＤ＃１は、ノード１０の識別子を表している。ｏｆｐ＿ｍａｔｃｈフィールド〜ａｃｔｉｏｎｓフィールドは、ＤＰＩＤ＃１に示されたノードに実行させるフローエントリ操作情報が格納される。フローエントリ操作情報のうち、本発明に関係するものについて説明すると、ｏｆｐ＿ｍａｔｃｈフィールドは、図２４に示すフローエントリのマッチングキー（ＦｌｏｗＫｅｙ）に相当する情報が格納される。また、ｉｄｌｅ＿ｔｉｍｅｏｕｔおよびｈａｒｄ＿ｔｉｍｅｏｕｔは、当該処理規則（フローエントリ）の存続期間（有効期間）が格納される。また、ａｃｔｉｏｎｓは、図２４に示すフローエントリのＡｃｔｉｏｎｓに相当する処理内容が格納される。
【００３３】
Ｌａｓｔ  ｈｏｐ  ｂｉｔｍａｐは、何番目のノードが最終ホップであるかを示している。例えば、Ｌａｓｔ  ｈｏｐ  ｂｉｔｍａｐが、「１００００００００００・・・・」である場合（１の位置が最終ホップであるノードを示す。）、図５のＤＰＩＤ＃１のノードが最終ホップとなる。同様に、Ｌａｓｔ  ｈｏｐ  ｂｉｔｍａｐが、「００００１００００００・・・・」である場合（１の位置が最終ホップであるノードを示す。）、５番目のフローエントリ操作情報を用いて処理規則（フローエントリ）の設定を行うノードが最終ホップとなる。
【００３４】
Ｏｕｔｐｕｔ  ｐｏｒｔ  ｂｉｔｍａｐ（出力ポートビットマップ）も同様に、各ノードが、何番目のポートから当該処理規則列付きパケットを出力すべきかが、ビットマップで記述される。
【００３５】
なお、本実施形態では、ビットマップで、最終ホップや出力先ポートを示す形態を採用しているが、そのノード１０が最終ホップであることや出力先を特定できるものであれば、先述したノード識別子を記述するノード識別子フィールドを設ける等の他の形態を採用することもできる。
【００３６】
上記のような制御装置（コントローラ）２０は、非特許文献１、２のオープンフローコントローラに、上記のような処理規則列を作成するフローエントリ集約部２５３と、ノード１０に対して処理規則列を送信する機能を追加することにより実現することも可能である。
【００３７】
続いて、上記したノード１０および制御装置（コントローラ）２０の動作について説明する。図６は、上記ノード１０の動作を表したフローチャートである。図６を参照すると、ノード１０は、ホストや他のノード１０からパケットを受信すると（ステップＳ１０１）、受信パケットから処理規則列の抽出を試みる（ステップＳ１０２）。
【００３８】
ステップＳ１０２にて、処理規則列を抽出できた場合（ステップＳ１０３のＹｅｓ）、ノード１０は、処理規則列から自装置が設定すべき処理規則（フローエントリ）を取り出して、フローテーブル１３に設定する（ステップＳ１０４）。次に、ノード１０は、上記したＬａｓｔ  ｈｏｐ  ｂｉｔｍａｐを参照し、自身がラストホップであるか否かを確認する。ここで、自身がラストホップであると判定した場合、ノード１０は、受信パケットから処理規則列を削除して、オリジナルパケット（ユーザパケット）を抽出し（ステップＳ１０６）、Ｏｕｔｐｕｔ  ｐｏｒｔ  ｂｉｔｍａｐにて指定されたポートから出力する（ステップＳ１０７）。また上記ステップＳ１０５にて、自身がラストホップでないと判定した場合、ノード１０は、Ｏｕｔｐｕｔ  ｐｏｒｔ  ｂｉｔｍａｐにて指定されたポートから処理規則列が付いたままのパケット（処理規則列ヘッダ付きパケット）を出力する（ステップＳ１０７）。
【００３９】
一方、ステップＳ１０２にて、処理規則列を抽出できなかった場合（ステップＳ１０３のＮｏ）、ノード１０は、フローテーブル１３を参照して受信パケットに適合する処理規則（フローエントリ）を検索する（ステップＳ１０８）。
【００４０】
フローテーブル１３の検索の結果、受信パケットに適合する処理規則（フローエントリ）が見つかった場合（ステップＳ１０９のＹｅｓ）、ノード１０は、処理規則（フローエントリ）に定められた処理内容（アクション）を実行する（ステップＳ１１０）。
【００４１】
一方、フローテーブル１３の検索の結果、受信パケットに適合する処理規則（フローエントリ）が見つからなかった場合（ステップＳ１０９のＮｏ）、ノード１０は、未知のパケットを受信したと判定し、当該パケット（ユーザパケット）をパケットバッファ１４に保存するとともに、制御装置（コントローラ）２０に、受信パケットを送信し、処理規則列の作成を要求する（ステップＳ１１１）。その後は、制御装置（コントローラ）２０にて、図７に示す手順に従って処理規則列を含む応答処理が行われる（後述）。
【００４２】
制御装置（コントローラ）２０から、処理規則列が添付された処理規則（フローエントリ）の設定指示（Ｆｌｏｗ  Ｍｏｄ（Ａｄｄ））を受信すると、ノード１０は、自身のフローテーブル１３に、Ｆｌｏｗ  Ｍｏｄ（Ａｄｄ）に従い処理規則（フローエントリ）を設定する（ステップＳ１１２）。
【００４３】
次に、ノード１０は、パケットバッファ１４にユーザパケットが保存されているか否かを確認し（ステップＳ１１３）、保存されていれば（ステップＳ１１３のＹｅｓ）、当該ユーザパケットを読み出し（ステップＳ１１４）、当該ユーザパケットに、ステップＳ１１２にて受信した処理規則列を処理規則列ヘッダとして追加して（ステップＳ１１５）、前記設定した処理規則（フローエントリ）に定められた処理内容（アクション；ここでは、処理規則列ヘッダを追加したパケットの指定ポートからの出力）を実行する（ステップＳ１１０）。これにより、処理規則列ヘッダ付きパケットが次ホップのノードに転送される。
【００４４】
一方、ノード１０がパケットバッファ１４を備えていない場合など、ノード１０がユーザパケットを保持していない場合（ステップＳ１１３のＮｏ）、制御装置（コントローラ）２０からのパケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）が受信される（ステップＳ１１６）。
【００４５】
前記パケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）を受信したノード１０は、パケットバッファ１４にユーザパケットが保存されているか否かを確認し（ステップＳ１１７）、保存されていれば（ステップＳ１１７のＹｅｓ）、当該ユーザパケットを読み出し（ステップＳ１１８）、パケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）とともに受信した処理内容（アクション；ここでは、処理規則列ヘッダの付加と処理規則列ヘッダを追加したパケットの指定ポートからの出力、または、フローテーブルの検索）を実行する（ステップＳ１１０）。また、ユーザパケットを保存していない場合（ステップＳ１１７のＮｏ）、ノード１０は、パケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）とともに受信したユーザパケットについて、パケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）とともに受信した処理内容（アクション；ここでは、ユーザパケットへの処理規則列ヘッダの付加と処理規則列ヘッダを追加したパケットの指定ポートからの出力、または、フローテーブルの検索）を実行する（ステップＳ１１０）。これにより、処理規則列ヘッダ付きパケットが次ホップのノードに転送される。
【００４６】
続いて、上記図６のステップＳ１１１にて、ノード１０から問い合わせ（処理規則列の作成要求）を受けた制御装置（コントローラ）２０側の動作について説明する。
【００４７】
図７は、上記制御装置（コントローラ）２０の動作を表したフローチャートである。図７を参照すると、制御装置（コントローラ）２０は、上記図６のステップＳ１１１のように、ノード１０から問い合わせ（処理規則列の作成要求）を受けると（ステップＳ００１）、トポロジ管理部２２にて構築されたネットワークトポロジ情報を取得し、パケットの転送経路を計算する（ステップＳ００２）。
【００４８】
前記パケットの転送経路を計算の結果、経路を作成できない、経路上のノードが故障している等の理由により、転送できないと判定した場合（ステップＳ１０３のＮｏ）を除き、制御装置（コントローラ）２０は、前記計算された転送経路に対応するアクションを計算し（ステップＳ００４）、当該経路上の各ノード１０に適用する処理規則（フローエントリ）を生成する（ステップＳ００５）。
【００４９】
次に、処理規則（フローエントリ）の生成が完了すると、制御装置（コントローラ）２０のフローエントリ集約部２５３にて、処理規則（フローエントリ）の要求元のノード１０より下流側のノードに設定されるべき処理規則（フローエントリ）を処理規則列に集約する処理が行われる（ステップＳ００６）。
【００５０】
次に、制御装置（コントローラ）２０は、処理規則（フローエントリ）の要求元のノード１０に送信する処理規則（フローエントリ）を生成し（ステップＳ００７）、ステップＳ００６で生成した処理規則列を添付して、処理規則（フローエントリ）の要求元のノード１０に対して送信する（ステップＳ００８）。
【００５１】
その後、ノード１０がパケットをバッファしていない場合（ステップＳ００９のＮｏ）、制御装置（コントローラ）２０は、パケットの出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）を行う（ステップＳ０１０）。このパケットの出力指示は、出力すべきパケット（ステップＳ００１のＰａｃｋｅｔ−Ｉｎで受信したパケット）と、当該パケットに対し実行すべきアクション（処理規則列ヘッダを追加したパケットの作成と、指定ポートから出力）とを指示すること、あるいは、出力すべきパケット（ステップＳ００１のＰａｃｋｅｔ−Ｉｎで受信したパケット）と、当該パケットに対し実行すべきアクション（フローテーブルの検索）を指示することによって行われる。なお、ノード１０がパケットをバッファしている場合（ステップＳ００９のＹｅｓ）、先に図６のステップＳ１１３、Ｓ１１４で説明したとおり、ノード１０側でパケットの出力処理が行われるため、制御装置（コントローラ）２０側の処理は省略される。
【００５２】
図８は、ホスト（Ａ）からのユーザパケットを受信したノード＃１が、制御装置（コントローラ）２０に対し問い合わせ（処理規則列の作成要求）を行ってから、ホスト（Ｂ）のユーザパケットが届けられるまでの一連の流れを説明するための参考図とシーケンス図である。
【００５３】
図８に示すように、ホスト（Ａ）が、ノード＃１に対し、ホスト（Ｂ）宛てのユーザパケットを送信すると（図８のＳＴ１；Ｕｓｅｒ  Ｐａｃｋｅｔ）、ノード＃１は、受信したパケットに処理規則列が付加されておらず、また、フローテーブル１３にも適合する処理規則（フローエントリ）が無い未知のパケットであると判定し（図６のステップＳ１０３のＮｏ、ステップＳ１０９のＮｏ）、制御装置（コントローラ）２０に対し問い合わせ（処理規則列の作成要求）を行う（図８のＳＴ２；Ｐａｃｋｅｔ−Ｉｎ）。
【００５４】
前記問い合わせ（処理規則列の作成要求）を受けた制御装置（コントローラ）２０は、図７のフローチャートに従って処理規則列を作成し、ノード＃１用の処理規則（フローエントリ）とともにノード＃１に送信する（図８のＳＴ３；Ｆｌｏｗ  Ｍｏｄ（Ａｄｄ）  ／ｗ  処理規則列）。
【００５５】
ノード＃１は、制御装置（コントローラ）２０から送信された処理規則（フローエントリ）を自装置のフローテーブル１３に設定するとともに、受信ユーザパケットに前記制御装置（コントローラ）２０から送信された処理規則列を付加し（図８のＳＴ４）、ノード＃２に宛てて送信する（図８のＳＴ５；Ｕｓｅｒ  Ｐａｃｋｅｔ  ／ｗ  処理規則列）。
【００５６】
前記処理規則列が付加されたユーザパケットを受信したノード＃２は、受信したパケットから処理規則列を抽出して、その中のノード＃２が設定すべき処理規則（フローエントリ）を取り出して、自装置のフローテーブル１３に設定（追加）する（図８のＳＴ６）。最後に、ノード＃２は、処理規則列が付加されたユーザパケットから、前記処理規則列を取り外して、ユーザパケットを宛先であるホスト（Ｂ）に送信する（図８のＳＴ７；Ｕｓｅｒ  Ｐａｃｋｅｔ）。
【００５７】
以上のように、本実施形態によれば、制御装置（コントローラ）２０がノード１０に処理規則（フローエントリ）を送信する回数が、転送経路上のノードの数に応じて増大することが無くなるため（図８の例では１回）、最初のユーザパケットの受信後、経路上のノード１０にフローエントリの設定が完了するまでの時間を短縮することができる。また、一連の動作の鍵となる処理規則列を付加したＦｌｏｗ  Ｍｏｄ（Ａｄｄ）コマンドは、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）で送信され、その後の処理規則（フローエントリ）の設定も経路上のノードでユーザパケットの転送に先立って順次実行されるため、冒頭に述べた一部のノードにおいて処理規則（フローエントリ）の設定が遅延するといった事態が発生しなくなる。
【００５８】
ここで、図２６に示した個々のノードにそれぞれ処理規則（フローエントリ）を設定する場合と、図８のように処理規則列を先頭のノードに送信する場合について、すべてのノードに処理規則（フローエントリ）が設定されるまでの所要時間を比較する。以下、各処理時間／遅延を、次の変数で表して説明するものとする。
Ｔｆ：  ＦｌｏｗＭｏｄ  （Ａｄｄ）によるフロー設定処理時間
Ｔｂ：  Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔ処理時間
Ｔｓｃ：  ノード−コントローラ遅延
Ｔｃｓ：  コントローラ−ノード遅延
Ｔｃ：  コントローラパス計算時間
Ｔｌ：  ノード間／ノード−ホストリンク遅延
Ｎ  ：  フロー設定対象ノード数
【００５９】
図２６の方法によりすべてのノードに処理規則（フローエントリ）が設定されるまでの所要時間Ｔｓｅｔｕｐ０は次式にて算出される。次式からも明らかなように、時間Ｔｓｅｔｕｐ０は、ノード数Ｎに応じて増大する。
Ｔｓｅｔｕｐ０＝Ｔｓｃ＋Ｔｃ＋Ｎ（Ｔｃｓ＋Ｔｆ＋Ｔｂ＋Ｔｓｃ＋Ｔｌ）
【００６０】
これに対し、本発明により、すべてのノードに処理規則（フローエントリ）が設定されるまでの所要時間Ｔｓｅｔｕｐは次式にて算出される。
Ｔｓｅｔｕｐ＝Ｔｓｃ＋Ｔｃ＋Ｔｃｓ＋Ｎ（Ｔｆ＋Ｔｌ）
両式を対比すると明らかなとおり、本発明の方が、処理規則を設定する際の遅延Ｔｃｓが１回で済むのと、Ｂａｒｒｉｅｒ  Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙのための処理時間Ｔｂ＋応答遅延Ｔｓｃが不要となる点で有利である。
【００６１】
［第２の実施形態］
続いて、本発明の第２の実施形態について図面を参照して詳細に説明する。上記本発明の第１の実施形態では、前記問い合わせ（処理規則列の作成要求）を受けた制御装置（コントローラ）２０がＦｌｏｗ  Ｍｏｄ（Ａｄｄ）メッセージを送信することにより１ｓｔホップのノードにフローエントリの設定を行っていたが、本実施形態では、Ｆｌｏｗ  Ｍｏｄ（Ａｄｄ）メッセージを用いない別の方法を採用している。なお、第２の実施形態のノード１０および制御装置（コントローラ）２０の構成は、上記第１の実施形態と同等であるので、説明を省略する。
【００６２】
図９は、本発明の第２の実施形態の通信システムにおける一連の流れを説明するための参考図とシーケンス図である。第１の実施形態で参照した図８との相違点は、図９のＳＴ３（またはＳＴ３’）において制御装置（コントローラ）２０がＰａｃｋｅｔ−Ｏｕｔ（ＳＴ３）またはＥｔｈｅｒｎｅｔ（登録商標）フレーム（ＳＴ’３）を用いて処理規則列を送信する点と、図９のＳＴ４にて、ノード＃１が当該処理規則列から自装置に設定すべき処理規則（フローエントリ）を特定し、設定する点である。以下、本発明の第２の実施形態について上記相違点を中心に説明する。
【００６３】
図１０は、本発明の第２の実施形態の制御装置（コントローラ）およびノードが次ホップに送出する処理規則列付きパケットの構成を表した図である。図１０のＳＴ１は、図９のＳＴ１においてホスト（Ａ）からノード＃１に送信されるユーザパケット３１を示している。
【００６４】
図１０のＳＴ３は、ノード＃１からの問い合わせ（処理規則列の作成要求）を受けた制御装置（コントローラ）２０が、図９のＳＴ３またはＳＴ’３において、ノード＃１に送信する処理規則列ヘッダ付きパケット３２を示している。
【００６５】
図１０のＳＴ５は、制御装置（コントローラ）２０から処理規則列ヘッダ付きパケット３２を受信したノード＃１が、図９のステップＳＴ５において、自装置に設定すべき処理規則（フローエントリ）を設定した後、ノード＃２に送信する処理規則列ヘッダ付きパケット３２を示している。
【００６６】
図１０のＳＴ７は、ノード＃１から処理規則列ヘッダ付きパケット３２を受信したノード＃２が、図９のステップＳＴ７において、自装置に設定すべき処理規則（フローエントリ）を設定した後、処理規則列を除去してホスト（Ｂ）に送信するユーザパケットを示している。
【００６７】
ここで、上記処理規則列ヘッダと、上記ノード＃１、＃２が最終ホップであることを判別する仕組みについて再度説明する。
【００６８】
図１１は、上記処理規則列ヘッダ３３の構成例を示す図であり、基本的な構成は、図５に示したものと同一である。図１１の例では、Ｌａｓｔ  Ｈｏｐ  Ｂｉｔｍａｐ以下に、ノード＃１、ノード＃２の処理規則（処理規則設定情報）が並べてあり、ノード識別子が格納されるＤＰＩＤ＃１，ＤＰＩＤ＃２フィールドで、個々のノードが、自装置に設定すべき処理規則を特定できるようになっている。また、図１１の例では、ノード＃２が最終ホップに当たるため、Ｌａｓｔ  ｈｏｐ  ｂｉｔｍａｐが、「０１０００００００・・・・」と記述されている。
【００６９】
続いて、本実施形態の動作について上記した第１の実施形態と相違する部分を中心に説明する。図１２は、第２の実施形態の制御装置（コントローラ）２０の動作を表したフローチャートである。
【００７０】
図１２は、上記制御装置（コントローラ）２０の動作を表したフローチャートである。図１２のステップＳ２０１〜Ｓ２０６は、上記第１の実施形態の制御装置（コントローラ）２０の動作を表した図７のステップＳ００１〜Ｓ００６と同等であるので説明を省略する。
【００７１】
上記図６のステップＳ１１１にて、ノード１０から問い合わせ（処理規則列の作成要求）を受けてフローエントリの作成および集約が完了すると、制御装置（コントローラ）２０は、ユーザパケットに、ステップＳ２０６で生成した処理規則列を処理規則列ヘッダとして添付して、処理規則列付きパケットを作成する（ステップＳ２０７；ユーザパケット改変）。
【００７２】
その後、制御装置（コントローラ）２０は、パケットの出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）を行う（ステップＳ２０８）。このパケットの出力指示は、出力すべきパケット（ステップＳ２０７で作成した処理規則付きパケット）と、当該パケットに対し実行すべきアクション（指定ポートから出力）とを指示することによって行われる。
【００７３】
図１３は、第２の実施形態のノード１０の動作を表したフローチャートである。図１３のステップＳ３０１〜Ｓ３１０までの動作は、上記した第１の実施形態と同等であり、それぞれ図６のステップＳ１０１〜Ｓ１１０に相当するので説明を省略する。
【００７４】
ステップＳ３１２で制御装置（コントローラ）２０に処理規則列の作成を要求したノード１０は、図１２にて説明したとおり、上記処理規則列ヘッダが付加されたパケットの出力指示を受信する（ステップＳ３１３）。
【００７５】
次に、ノード１０は、ユーザパケットを保存済みであるか否かを確認し（ステップＳ３１４）、ユーザパケットを保存済みである場合には（ステップＳ３１４のＹｅｓ）、パケットバッファ１４からユーザパケットを読み出して（ステップＳ３１６）、パケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）とともに受信した処理内容（アクション；指定ポートからの出力）を実行する（ステップＳ３１０）。
【００７６】
一方、ユーザパケットを保存済みでない場合（ステップＳ３１４のＮｏ）、ノード１０は、パケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）とともに受信したパケットに、処理規則列が含まれているか否かを確認し（ステップＳ３１５）、処理規則列が含まれている場合（ステップＳ３１５のＹｅｓ）、ステップＳ３０２以下の処理を実行する。また、パケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）とともに受信したパケットに、処理規則列が含まれていない場合（ステップＳ３１５のＮｏ）、パケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）とともに受信したユーザパケットについてパケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）とともに受信した処理内容（アクション；ここでは、指定ポートからの出力）を実行する（ステップＳ３１０）。
【００７７】
前記ステップＳ３１０におけるアクションの実行後、ノード１０は、処理規則列を含んだパケットを受信済みであるか否かを判定し（ステップＳ３１１）、処理規則列を含んだパケットを受信済みであれば、処理を終了し、処理規則列を含んだパケットを受信済みでなければ、ステップＳ３１３に戻って、処理規則列を含んだパケット（Ｐａｃｋｅｔ−Ｏｕｔ）の受信を待つ。
【００７８】
以上のように、本発明は、制御装置（コントローラ）２０からパケットの出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）を受信する形態によっても実現できる。また、上記パケットの出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）に代えて、制御装置（コントローラ）２０からデータプレーンを介してノード１０に、Ｅｔｈｅｒｎｅｔ（登録商標）フレームを用いて上記パケットの出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）と同等の処理規則列を付加したパケットを送信することによっても実現できる。
【００７９】
［第３の実施形態］
以上、本発明の第１、第２の実施形態を説明したが、制御装置（コントローラ）２０にて作成される経路上のノード数が増大すると、処理規則列も長大となり、最大フレーム長を超えてしまうことが考えられる。以下、より多くのノードに処理規則を設定できるように変更を加えた第３の実施形態について説明する。
【００８０】
図１４は、本発明の第３の実施形態の通信システムにおける一連の流れを説明するための参考図とシーケンス図である。第２の実施形態で参照した図９との相違点は、図１４のＳＴ３（またはＳＴ３’）において制御装置（コントローラ）２０が処理規則列だけを収容した設定専用パケット（Ｓｅｔｕｐ  Ｐａｃｋｅｔ）を送信し、その後、制御装置（コントローラ）２０からのパケットの出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）に基づいて、元々のユーザパケットを送信するようにした点と、設定専用パケット（Ｓｅｔｕｐ  Ｐａｃｋｅｔ）の最終ホップのノードで転送を停止するようにした点である。ここで、設定専用パケット（Ｓｅｔｕｐ  Ｐａｃｋｅｔ）とは、ユーザパケットに処理規則列ヘッダを追加するのではなく、ユーザパケットの部分がない処理規則（フローエントリ）の設定専用のパケットのことをいうものとする。以下、本発明の第３の実施形態について上記相違点を中心に説明する。
【００８１】
図１５は、本実施形態のノード１０ａの詳細構成を表した図である。図１５を参照すると、本実施形態のノード１０ａは、第１の実施形態のノード１０の構成に加えて、転送処理部１５内にパケット遅延部１５５が追加されている。
【００８２】
パケット遅延部１５５は、上記のように設定専用パケット（Ｓｅｔｕｐ  Ｐａｃｋｅｔ）の後に、ユーザパケットの送信が行われる場合に、フロー設定情報処理部１５１がフローテーブル管理部１２を介してフローテーブル１３に処理規則（フローエントリ）の設定を完了する前に、ユーザパケットが受信された場合に当該ユーザパケットによるフローテーブル１３の検索が行われないよう、パケットの入力を遅延させるために設置される。
【００８３】
図１６は、第３の実施形態のノード１０ａの動作を表したフローチャートである。図１３を用いて説明した第２の実施形態のノード１０との相違点は、ステップＳ３１０のアクションの実行後、設定専用パケット（Ｓｅｔｕｐ  Ｐａｃｋｅｔ）を受信済みかつユーザパケットを送信済みであるか否かを確認し（ステップＳ３１１ａ）、条件を満たしていれば、処理を終了し（ステップＳ３１１ａのＹｅｓ）、条件を満たしていなければ、ステップＳ３１３で、制御装置（コントローラ）２０からパケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）の受信を待機する点である。
【００８４】
以上のような本発明の第３の実施形態によれば、処理規則列に、より多くの処理規則（フローエントリ）を収容することが可能になる。
【００８５】
なお必要に応じて、上述した処理規則列に、経路上のいくつかのノード１０のための処理規則（フローエントリ）を収容せず、これらのいくつかのノードが、それぞれ制御装置（コントローラ）２０に対し問い合わせ（処理規則列の作成要求）を行う構成を採用してもよい。例えば、ある経路の上流側のノードは、第３の実施形態の設定専用パケット（Ｓｅｔｕｐ  Ｐａｃｋｅｔ）にて処理規則（フローエントリ）の設定を行うこととし、下流側のノードは、個々に処理規則（フローエントリ）の作成と送信を要求する構成や、第１、第２の実施形態のユーザパケットに付加された処理規則列により処理規則（フローエントリ）を設定する構成等も採用可能である。
【００８６】
［第４の実施形態］
続いて、受信したパケットに含まれる処理規則列の正当性を検証する機能を追加した本発明の第４の実施形態について説明する。以下、本実施形態の基本的な構成は、第３の実施形態と同一であるので、以下、その相違点を中心に説明する。
【００８７】
図１７は、本発明の第４の実施形態のノード１０ｂの構成を表したブロック図である。図１５に示した第３の実施形態のノード１０ａとの相違点は、転送処理部１５のフロー設定情報抽出部１５２と、フロー設定情報処理部１５１との間に、予め定められた制御装置（コントローラ）２０ａの公開鍵を用いて、処理規則列に付された署名を検証し、正当性が確認できないパケットを廃棄する署名検証部１５６が追加されている点である。
【００８８】
図１８は、本発明の第４の実施形態の制御装置（コントローラ）２０ａの構成を表したブロック図である。図３に示した第１、第２の実施形態の制御装置（コントローラ）２０との相違点はメッセージ生成部２５２内に、制御装置（コントローラ）２０ａの秘密鍵を用いて、処理規則列の署名を作成する署名生成部２５４が追加されている点である。
【００８９】
図１９は、本実施形態の処理規則列ヘッダ３３ａの構成例を示す図である。上記した第１、第３の実施形態の処理規則列ヘッダ３３との相違点は、ヘッダの末尾に図１９の署名対象範囲で示された各フィールドの情報を用いて作成された署名（Ｓｉｇｎａｔｕｒｅ）が追加されている点である。
【００９０】
図２０は、上記制御装置（コントローラ）２０ａの動作を表したフローチャートである。上記第３の実施形態の制御装置（コントローラ）２０の動作（図１４のシーケンス図参照）との相違点はフローエントリ集約後、署名を作成する処理（ステップＳ４０７）が追加されている点である。
【００９１】
図２１は、第４の実施形態のノード１０ｂの動作を表したフローチャートである。図１６を用いて説明した設定専用パケット（Ｓｅｔｕｐ  Ｐａｃｋｅｔ）とユーザパケットとが別々に送信される場合の動作とほぼ同一であるが、処理規則列が含まれている場合に、署名検証を行い（ステップＳ５０４）、正当性が確認できなければ、当該パケットを廃棄する処理（ステップＳ５０５）が追加されている点である。
【００９２】
以上のような本発明の第４の実施形態によれば、不正な処理規則列により処理規則（フローエントリ）が設定されてしまう事態を回避することが可能になり、よりセキュアなネットワークを構築することが可能になる。
【００９３】
なお、上記した実施形態では、非対称鍵を用いるものとして説明したが、共通鍵を用いても良いし、その場合において、適宜、鍵を更新する機能を追加するなどの変形実施も可能である。
【００９４】
また、上記した実施形態では、処理規則列全体の署名（Ｓｉｇｎａｔｕｒｅ）を作成・付加するものとして説明したが、個々の処理規則設定情報毎に署名を付加する構成や、各ノードがパケット受信の都度、署名を追加ないし削除していくといった変形実施も可能である。
【００９５】
［第５の実施形態］
続いて、処理規則列が含まれるパケットが経路の途中で何らかの事由により廃棄されてしまうパケットロスの問題を考慮した本発明の第５の実施形態について説明する。本実施形態は、第１〜第４の実施形態と同一の構成にて実現可能であるので、以下、その概要を説明する。
【００９６】
本実施形態では、図２２に示すとおり、制御装置（コントローラ）が、ある経路の先頭ホップ側と、最終ホップ側の双方から、同一のノードに設定すべき処理規則を含む処理規則列を付加したパケットを送信し、双方向から、順次処理規則（フローエントリ）の設定を行っていくものである。
【００９７】
図２３は、本実施形態の一連の流れを表したシーケンス図である。図２３に示すとおり、またず、ノード＃１が、ホスト（Ａ）から、ユーザパケットを受信すると（ＳＴ１１）、ノード＃１は、制御装置（コントローラ）２０に対して、問い合わせ（処理規則列の作成要求；Ｐａｃｋｅｔ−Ｉｎ）を発行する（ＳＴ１２）。
【００９８】
前記問い合わせ（処理規則列の作成要求；Ｐａｃｋｅｔ−Ｉｎ）を受けた制御装置（コントローラ）２０は、図１２のフローチャートに従って、経路および処理規則列を作成し、経路の先頭ホップのノード＃１と、最終ホップのノード＃３とに対して、それぞれ、設定専用パケット（ＳｅｔｕｐＰａｃｋｅｔ）をパケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）に内包し送信する(ＳＴ１３、ＳＴ１４）。なお、図２２および図２３には図示しないが、制御装置は、設定専用パケット（ＳｅｔｕｐＰａｃｋｅｔ）をデータプレーン経由でＥｔｈｅｒｎｅｔ（登録商標）フレームの形でノード＃１とノード＃３に対して送信することも可能である。
【００９９】
前記設定専用パケット（ＳｅｔｕｐＰａｃｋｅｔ）を受信したノード＃１およびノード＃３はそれぞれ処理規則列から自らが設定すべき処理規則を抽出・設定し（ＳＴ１５、ＳＴ１６）、処理規則列に定められた次ホップに転送する（ＳＴ１７、ＳＴ１９）。
【０１００】
設定専用パケット（ＳｅｔｕｐＰａｃｋｅｔ）を受信したノード＃２は、設定専用パケット（ＳｅｔｕｐＰａｃｋｅｔ）に含まれる処理規則列の中から、自装置が設定すべき処理規則（フローエントリ）を取り出し、フローテーブル１３に設定するとともに（ＳＴ１８）、設定専用パケット（ＳｅｔｕｐＰａｃｋｅｔ）を次ホップに送信する（ＳＴ２０、ＳＴ２１）。なお、図２３の例では、ノード＃１からの設定専用パケット（ＳｅｔｕｐＰａｃｋｅｔ）が先に受信されたため、ノード＃３からの設定専用パケット（ＳｅｔｕｐＰａｃｋｅｔ）による処理は省略されている。
【０１０１】
その後、制御装置（コントローラ）２０が、ノード＃１に対して、パケット出力指示（Ｐａｃｋｅｔ−Ｏｕｔ）を送信すると（ＳＴ２２）、ユーザパケットはノード＃１、ノード＃２、ノード＃３を経てホスト（Ｂ）に転送される（ＳＴ２３〜ＳＴ２５）。
【０１０２】
以上のように本実施形態によれば、複数の経路を用いて重複する処理規則（フローエントリ）を含んだ設定専用パケット（ＳｅｔｕｐＰａｃｋｅｔ）を送信するため、パケットロスに強くなり、経路上のノードに、より確実に処理規則（フローエントリ）を設定させることができる。
【０１０３】
なお、上記した実施形態では、双方向から重複区間が生じるように、処理規則列を含んだパケットを送信するものとして説明したが、同一方向から時間を空けたり、パケット投入点を変えて、処理規則列を含んだパケットを送信するものとしてもよい。
【０１０４】
また、第３の実施形態で述べたように経路上のノード数が多い場合には、重複区間が少なくなるように処理規則列を含んだパケットを送信することで、より多くのノードに処理規則（フローエントリ）を設定することが可能になる。
【０１０５】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。上記した実施形態の制御装置（コントローラ）２０、２０ａは、専用のサーバとして実現することもでき、ノード１０、１０ａ、１０ｂとしては、上記オープンフロースイッチのほか、ＩＰ網におけるルータ、ＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）網におけるＭＰＬＳスイッチにて実現することができる。その他、サーバがネットワーク内のノードを集中管理するようなネットワークであれば、本発明を適用することが可能である。
【０１０６】
また、上記した各実施形態では、処理規則列中の各処理規則設定情報にノード識別子（ＤＰＩＤ）を含めることで、各ノードが自装置に設定すべき処理規則（フローエントリ）を特定するものとして説明したが、処理規則列の先頭または末尾の処理規則設定情報から使用していき、処理規則設定情報が使用済みであることを示す使用済みフラグを立てていく方法や、設定に使われた処理規則設定情報を各ノードが処理規則列中から順次削除していく方法も採用可能である。
【０１０７】
なお、上記の非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【０１０８】
また、上記した各実施形態では、最終ホップのノードが処理規則列ヘッダを除去するものとして説明したが、ホスト側で除去する構成も採用可能である。
【０１０９】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点による通信システム参照）
［第２の形態］
第１の形態において、
前記処理規則列は、データ転送ネットワークの複数のノードがそれぞれの処理規則記憶部に設定すべき処理規則で構成されている通信システム。
［第３の形態］
第１、第２の形態において、前記各ノードは、前記処理規則列中の各処理規則に対応付けられたノード識別子に基づいて、自装置が設定すべき処理規則を特定する通信システム。
［第４の形態］
第１〜第３のいずれか一の形態において、前記各ノードは、前記処理規則列に添付された出力先情報に基づいて、前記処理規則列を含むパケットを転送する通信システム。
［第５の形態］
第１〜第４の形態のいずれか一の形態において、前記パケットには、最終ホップのノードの情報が含まれており、前記最終ホップのノードが前記処理規則列を削除または前記パケットの転送を停止する通信システム。
［第６の形態］
第２、第４、第５の形態のいずれか一の形態において、前記処理規則列中の処理規則は、前記パケットの転送経路上のノードの順番で並べられており、前記各ノードが、順次、自装置の処理規則記憶部に設定した処理規則の前記パケットからを削除または前記パケットの所定領域に当該処理規則が使用済みであることを書き込むことにより、各ノードがそれぞれ設定すべき処理規則を特定する通信システム。
［第７の形態］
第１〜第６の形態のいずれか一の形態において、前記処理規則列は、追加ヘッダの形態でユーザパケットに付加されている通信システム。
［第８の形態］
第１〜第７の形態のいずれか一の形態において、前記パケットには、前記処理規則列または個々の処理規則の正当性を示す電子署名が付加されており、前記各ノードは、前記処理規則列または個々の処理規則の電子署名の正当性を検証し、前記正当性が確認された場合に前記処理規則の設定を行う通信システム。
［第９の形態］
第１〜第８の形態のいずれか一の形態において、前記処理規則列を含むパケットの起点となるノードに対し、前記処理規則列または前記処理規則列を含むパケットを作成して送信する制御装置を含む通信システム。
［第１０の形態］
第１〜第９の形態のいずれか一の形態において、前記制御装置は、前記パケットの経路上の複数のノードに対し、同一のノードに設定すべき処理規則を含む処理規則列、または、前記同一ノードに設定すべき処理規則列を含むパケット、を作成して送信する通信システム。
［第１１の形態］
（上記第２の視点によるノード参照）
［第１２の形態］
第１１の形態において、
前記処理規則列は、データ転送ネットワークの複数のノードがそれぞれの処理規則記憶部に設定すべき処理規則で構成されているノード。
［第１３の形態］
第１１、第１２の形態において、前記処理規則列中の各処理規則に対応付けられたノード識別子に基づいて、自装置が設定すべき処理規則を特定するノード。
［第１４の形態］
第１１〜第１３のいずれか一の形態において、前記処理規則列に添付された出力先情報に基づいて、前記処理規則列を含むパケットを転送するノード。
［第１５の形態］
第１１〜第１４の形態のいずれか一の形態において、前記パケットに含まれる最終ホップのノードの情報が、自装置が最終ホップのノードであることを示す場合、前記処理規則列を削除または前記パケットの転送を停止するノード。
［第１６の形態］
第１２、第１４、第１５の形態のいずれか一の形態において、前記処理規則列中の処理規則は、前記パケットの転送経路上のノードの順番で並べられており、前記各ノードが、順次、前記処理規則列からの処理規則の削除または前記パケットの所定領域に当該処理規則が使用済みであることを書き込むことにより、各ノードがそれぞれ設定すべき処理規則を特定するノード。
［第１７の形態］
第１１〜第１６の形態のいずれか一の形態において、ユーザパケットに付加された追加ヘッダに格納されている処理規則列から、自装置の処理規則記憶部に設定すべき処理規則を取り出して設定するノード。
［第１８の形態］
第１１〜第１７の形態のいずれか一の形態において、前記パケットに付加された前記処理規則列または自装置に設定すべき処理規則の電子署名の正当性を検証し、前記正当性が確認された場合に前記処理規則の設定を行うノード。
［第１９の形態］
（上記第３の視点による制御サーバ参照）
［第２０の形態］
第１９の形態において、データ転送ネットワークの複数のノードがそれぞれの処理規則記憶部に設定すべき処理規則で構成した処理規則列を作成する制御サーバ。
［第２１の形態］
第１９、第２０の形態において、前記処理規則列として、処理規則と当該処理規則を設定すべきノードのノード識別子とを対応付けたパケットを送信する制御サーバ。
［第２２の形態］
第１９〜第２１のいずれか一の形態において、前記処理規則列に、前記処理規則列を含むパケットの転送先を示す出力先情報を添付する制御サーバ。
［第２３の形態］
第１９〜第２２のいずれか一の形態において、最終ホップのノードに、前記処理規則列を削除または前記パケットの転送を停止させるための最終ホップのノードの情報を含んだパケットを送信する制御サーバ。
［第２４の形態］
第２０、第２２、第２３のいずれか一の形態において、前記パケットの転送経路上のノードの順番で処理規則を並べた処理規則列を作成する制御サーバ。
［第２５の形態］
第１９〜第２４のいずれか一の形態において、前記処理規則列を追加ヘッダの形態でユーザパケットに付加する制御サーバ。
［第２６の形態］
第１９〜第２５のいずれか一の形態において、前記処理規則列または個々の処理規則の正当性を示す電子署名を付加したパケットを送信する制御サーバ。
［第２７の形態］
第１９〜第２６のいずれか一の形態において、前記パケットの経路上の複数のノードに対し、同一のノードに設定すべき処理規則を含む処理規則列、または、前記同一ノードに設定すべき処理規則列を含むパケット、を作成して送信する制御サーバ。
［第２８の形態］
（上記第４の視点による通信方法参照）
［第２９の形態］
（上記第５の視点によるプログラム参照）
［第３０の形態］
（上記第６の視点によるプログラム参照）
【符号の説明】
【０１１０】
１０、１０ａ、１０ｂ  ノード
１１  制御装置通信部
１２  フローテーブル管理部
１３  フローテーブル  
１４  パケットバッファ
１５  転送処理部
２０、２０ａ  制御装置
２１  フローエントリデータベース（フローエントリＤＢ）
２２  トポロジ管理部
２３  経路・アクション計算部
２４  フローエントリ管理部
２５  制御メッセージ処理部
２６  ノード通信部
３１  ユーザパケット
３２  処理規則列ヘッダ付きパケット
３３、３３ａ  処理規則列ヘッダ
１５１  フロー設定情報処理部
１５２  フロー設定情報抽出部
１５３  テーブル検索部
１５４  アクション実行部
１５５  パケット遅延部
１５６  署名検証部
２５１  メッセージ解析・処理部
２５２  メッセージ生成部
２５３  フローエントリ集約部
２５４  署名生成部
【図１】
0005573942.tif 000002
【図２】
0005573942.tif 000003
【図３】
0005573942.tif 000004
【図４】
0005573942.tif 000005
【図５】
0005573942.tif 000006
【図６】
0005573942.tif 000007
【図７】
0005573942.tif 000008
【図８】
0005573942.tif 000009
【図９】
0005573942.tif 000010
【図１０】
0005573942.tif 000011
【図１１】
0005573942.tif 000012
【図１２】
0005573942.tif 000013
【図１３】
0005573942.tif 000014
【図１４】
0005573942.tif 000015
【図１５】
0005573942.tif 000016
【図１６】
0005573942.tif 000017
【図１７】
0005573942.tif 000018
【図１８】
0005573942.tif 000019
【図１９】
0005573942.tif 000020
【図２０】
0005573942.tif 000021
【図２１】
0005573942.tif 000022
【図２２】
0005573942.tif 000023
【図２３】
0005573942.tif 000024
【図２４】
0005573942.tif 000025
【図２５】
0005573942.tif 000026
【図２６】
0005573942.tif 000027