【文献】
OpenFlow Switch Specification Version 1.0.0,2009年12月31日,pp.1-42
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【0019】
本発明は、その一実施形態において、
図1に示すように、フローテーブル21と、(ノード側)パケット処理部22とを備え、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノード20と、前記ノード20からの要求に応じて前記ノード20に前記処理規則(以下、「フローエントリ」)を設定するコントローラ10(上記「制御装置」に相当。)と、予め定められた仕様に従ってパケット処理を行うパケット処理部11とを含む構成にて実現できる。具体的には、コントローラ10は、前記ノード20からフローエントリの作成を要求されたパケットを前記パケット処理部11に入力し、前記入力により得られた前記パケット処理部11のパケット処理結果に相当するフローエントリを作成するフローエントリ作成部12(上記、「処理規則作成部」に相当。)を備える。なお以下の説明では、パケット処理部11は、IPv4のルータと同等のパケット処理を行うものとする。
【0020】
なお、ノード20は、非特許文献1、2のオープンフロースイッチまたはその互換製品により実現することが可能である。
【0021】
図2は、上記本発明の一実施形態の動作概要を説明するためのシーケンス図である。
図2に示すように、パケット処理部11は、コントローラ10を介して、ノード20とRIP、OSPF、BGP等の制御パケットの送受信(
図2のS401)、または、管理者による静的設定に基づき、経路表を更新する(
図2のS402)。
【0022】
その後、ホストから新規にユーザパケットを受信すると(
図2のS403)、ノード20は、フローテーブル21から、受信したユーザパケットに適合する照合規則(マッチングルール)を持つフローエントリを検索する(
図2のS404)。
【0023】
ここでは、ホストから受信したパケットは、新規のユーザパケットであるため、ノード20のフローテーブル21には、受信パケットに適合するフローエントリは存在しない。そこで、ノード20は、コントローラ10に対して、受信パケットに適合するフローエントリの設定を要求する(
図2のPacket−In;S405)。
【0024】
前記Packet−Inを受信したコントローラ10は、Packet−Inとともに受信したパケットをパケット処理部11に入力する際のインタフェース(出力先インタフェース)を決定し(
図2のS406)、パケット処理部11に、前記Packet−Inとともに受信したパケットを入力する(
図2のS407)。
【0025】
パケット処理部11は、上記のように、ステップS401、S402で更新した経路表を検索して、入力されたパケットの転送先を決定し(
図2のS408)、コントローラ10側に出力する(
図2のS409)。
【0026】
コントローラ10は、前記パケット処理部11からのパケットが出力されたインタフェースに基づいてノード20からパケットを出力させるポートを決定し(
図2のS410)、当該パケットの後続パケットを前記決定したポートから出力させるフローエントリを生成する(
図2のS411)。
【0027】
次に、コントローラ10は、前記生成したフローエントリをノード20に設定する(
図2のFlowMod(Add);S412、S413)。さらに、コントローラ10は、ノード20に対し、前記決定したポートから、ステップS405でフローエントリの設定要求を受けたパケットを送信するよう指示する(
図2のPacket−Out;S414)。ノード20は、前記指示に従って、指定されたポートから、パケットを次ホップに送信する(
図2のS415)。
【0028】
その後、ホストから後続パケットを受信すると(
図2のS416)、ノード20は、フローテーブル21から、受信したユーザパケットに適合する照合規則(マッチングルール)を持つフローエントリを検索する(
図2のS417)。ここでは、上述のように、前記後続パケットを処理するためのフローエントリが登録されているため、該当するフローエントリに従って次ホップに転送するインストラクションが実行される(
図2のS418、S419)。
【0029】
以上のように、本実施形態では、IPv4のルータのパケット処理を行うパケット処理部11の内部の経路表等を観測するのではなく、そのパケット転送動作を観測し、その結果に基づいて、フローエントリを作成するようにしたため、背景技術に述べた構成よりも低コストで、ノード20にルータ相当の動作を行わせることができる。
【0030】
[第1の実施形態]
続いて、本発明をより具体的に説明すべく、本発明の第1の実施形態について図面を参照して詳細に説明する。
図3は、本発明の第1の実施形態の構成を表したブロック図である。
図3を参照すると、フローテーブル21と、(ノード側)パケット処理部22とを備えるノード20を制御するコントローラ100の詳細構成が示されている。(ノード側)パケット処理部22は、コントローラ100のネットワークインタフェース通信部101と接続されたパケット処理部とは異なり、フローテーブル21に格納されたエントリを処理規則として用いてパケット処理を行う。
【0031】
なお、本実施形態で用いるパケット処理部は、
図1に示したIPv4のルータのパケット処理を行うパケット処理部11と同等であるものとする。即ち、パケット処理部11内部のRIP、BGP、OSPFといったルーティングプロトコルのデーモンがノード20と通信し内部の経路表を更新しているものとする。また、コントローラ100は、ノード20とルーティングプロトコルデーモン間の制御パケットを必要に応じ中継するのみで、経路表の変化には関知しないものとする。
【0032】
コントローラ100は、パケット処理部側の複数のネットワークインタフェース接続されてパケットの送受信を行うネットワークインタフェース通信部101と、ノード20に備えられたポートと、前記ネットワークインタフェースとの対応関係を記憶する記憶部に相当するインタフェースデータベース(インタフェースDB)102と、ノード20に設定した処理規則(フローエントリ)を格納したフローエントリデータベース(フローエントリDB)103と、ノード通信部108および制御メッセージ処理部107を介してノードから受信したパケットをパケット処理部に入力し、その結果を出力パケット解析・フローエントリ生成部105に出力するユーザパケット処理部104と、ユーザパケット処理部104から入力された内容に基づいて、フローエントリを生成する出力パケット解析・フローエントリ生成部105と、前記生成されたフローエントリのフローエントリDB103への登録や、ノード20への設定を行うフローエントリ管理部106と、制御メッセージ処理部107と、ノード20との通信を行うノード通信部108と、を備えて構成される。
【0033】
なお、
図3の構成中、ノード20に設定したフローエントリを保持する必要が無い場合、フローエントリDB103は省略することが可能である。また、インタフェースDB102は、コントローラ100からアクセス可能であればよく、別の外部装置に設けることも可能である。
【0034】
さらに、制御メッセージ処理部107は、ノード20から受信した制御メッセージを解析して、必要な処理を行うメッセージ解析・処理部1071と、ノード20に送信するメッセージを生成するメッセージ生成部1072とを備えて構成される。
【0035】
図4は、インタフェースDB102に保持される情報を模式的に表した図である。
図4の例では、ノード(物理ノード)のポート#1、#33、#48、#50が、それぞれ対応するネットワークインタフェースtap0〜3と対応付けられている。例えば、ノード(物理ノード)のポート#1から入力されたパケットは、ネットワークインタフェースtap0からパケット処理部11に入力される。そして、前記パケットの入力の結果、パケット処理部11から前記パケットの出力先となるネットワークインタフェースを観測することにより、パケット処理部のふるまいを把握することができる。例えば、ポート#1から入力されたパケットをネットワークインタフェースtap0からパケット処理部11に入力した結果、パケット処理部11のネットワークインタフェースtap3から前記パケットが出力された場合、パケット処理部11に保持されている経路表は、ポート#1から入力された前記パケットをポート#50から出力するエントリを持っていると推測できる。出力パケット解析・フローエントリ生成部105は、このようなパケット処理の結果を用いて、ノード20のポート#1から入力されたパケットをポート#50から出力されるフローエントリを生成する。なお、出力パケット解析・フローエントリ生成部105が生成するフローエントリのインストラクション(処理内容)は転送に限らず、例えば、パケット処理部11において各種優先制御がなされている場合には、これを実現するフローエントリが生成される。
【0036】
上記のようなコントローラ100は、非特許文献1、2のオープンフローコントローラをパケット処理部に接続し、少なくとも上記ネットワークインタフェース通信部101、インタフェースDB102、ユーザパケット処理部104、出力パケット解析・フローエントリ生成部105を追加することにより実現することが可能である。
【0037】
なお、上記コントローラ100の各部(処理手段)は、コントローラ100を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【0038】
続いて、上記したコントローラ100の動作について説明する。
図5は、コントローラ100の動作を表した流れ図である。
図5の左側の流れ図(A)を参照すると、ノード20からフローエントリの作成要求(Packet−In)を受けると、コントローラ100は、インタフェースDB102を参照して、フローエントリの作成要求(Packet−In)に添付されたパケットのノード20の受信ポートに対応するネットワークインタフェースを検索する(ステップS001;Packet−In)。前記検索の結果、インタフェースDB102に該当するエントリが無い場合、処理を終了する(ステップS002のNo)。なおここで、前記パケットが、ノード20以外のパケット処理部と対応付けられていないノードからのパケットである場合には、背景技術に記載したように、これらのノードのために経路作成や他のコントローラへの経路作成依頼等を行うようにしても良い。
【0039】
一方、前記検索の結果、該当するエントリが見つかった場合(ステップS002のYes)、コントローラ100は、当該エントリに記述されたネットワークインタフェース宛に、ノード20から受信したユーザパケットを転送する(ステップS003)。例えば、
図6に示すように、ノード20のポート#1で受信したパケットについてフローエントリの作成要求を受けた場合、コントローラ100は、インタフェースDB102を参照し、ノード20のポート#1に対応付けられているネットワークインタフェースtap0宛てにパケットを転送する。
【0040】
その後、パケット処理部の任意のネットワークインタフェースからパケットを受信すると、コントローラ100は、
図5の右側の流れ図(B)に従って動作する。まず、コントローラ100は、インタフェースDB102を参照して、パケットを受信したネットワークインタフェースに対応する出力先ポートを検索する(ステップS101)。前記検索の結果、インタフェースDB102に該当するエントリが無い場合、処理を終了する(ステップS102のNo)。
【0041】
一方、前記検索の結果、該当するエントリが見つかった場合(ステップS102のYes)、コントローラ100は、前記受信パケットを、当該エントリに記述された出力先ポートから転送させるフローエントリを生成する(ステップS103)。なお、ここで、パケット処理部にて、パケットヘッダの書き換え等が行われている場合、コントローラ100が、これらに対応するインストラクションをフローエントリに追加するようにしてもよい。
【0042】
次にコントローラ100は、ノード20に、前記生成したフローエントリを設定し(ステップS104;FlowMod(Add)送信)、さらにノード20に対し、前記受信したパケットの転送を指示する(ステップS105;Packet−Out)。
【0043】
例えば、
図7に示すように、パケット処理部のネットワークインタフェースtap0宛てにパケットを転送した結果として、ネットワークインタフェースtap3からパケットを受信している場合、コントローラ100は、インタフェースDB102を参照し、ネットワークインタフェースtap3に対応付けられている出力先ポートとして、ノード20のポート#50を特定する。最終的にコントローラ100は、前記受信パケットをポート#50から転送させるインストラクションを定めたフローエントリを生成、設定する。
【0044】
以上により、その後は、
図8に示すように、ノード20に設定されたフローエントリに従って、パケット処理部の経路表に従った転送処理と同様の転送処理が行われる。
【0045】
以上説明したように、本実施形態によれば、コントローラが自ら経路表を管理したり、経路表の変化を監視することなく、ノード20を、IPv4ルータと同等に振舞わせることができる。また、構成としても、仕様の通信装置と同等に動作するパケット処理部(このようなパケット処理部は、既存のルーティングプロトコルスタックを用いて容易に構成できる。)を用意するとともに、コントローラ側に、ノードとパケット処理部のインタフェース間の対応関係を記憶する記憶部と、その結果に基づいたフローエントリの生成機能とを持たせるだけであるので、低コストで実現することが可能である。
【0046】
[第2の実施形態]
続いて、上記した第1の実施形態に変更を加えた第2の実施形態について図面を参照して詳細に説明する。上記した第1の実施形態では、ノード20からパケットを受信した場合にのみ、その出力の観測が行われる。その一方で、パケット処理部では所定のタイミングで経路表の更新が行われるため、パケット処理部内部の経路表の変化が、ノード20に保持されているフローエントリに反映されていないということが起こりうる。
【0047】
そこで、本発明の第2の実施形態では、
図9に示すように、所定のタイミングで、パケット処理部11のネットワークインタフェース宛に、監視用のパケットを送信する監視パケット送信部110を追加している。以下、基本的な構成は、第1の実施形態と共通するので、その相違点を中心に説明する。
【0048】
図10は、本発明の第2の実施形態の詳細構成を表したブロック図である。
図3に示した第1の実施形態との相違点は、フローエントリDB103のエントリが監視パケット送信部に参照されるようになっている点と、出力パケット解析・フローエントリ生成部105Aに前記監視パケットによるフローエントリの更新機能が追加されている点である。
【0049】
監視パケット送信部110は、フローエントリDB103からフローエントリを読み出し、当該フローエントリのマッチングルール(照合規則)に適合するヘッダと、監視パケットであることを示す情報を含んだ監視パケットを生成し、パケット処理部に入力する動作を行う。監視パケットとしては、pingで用いられるICMP echo requestパケット等のダミーのパケットを用いることができる。
【0050】
図11は、本発明の第2の実施形態のコントローラの動作を表した流れ図である。第1の実施形態のコントローラの動作を表した
図5の右側の流れ図(B)に対し、ステップS111〜S116が追加されている。
【0051】
図11を参照すると、まず、ネットワークインタフェースからパケットを受信したコントローラ100Aは、インタフェースDB102を参照して、当該パケットを受信したネットワークインタフェースに対応する出力先ポートを検索する(ステップS101)。前記検索の結果、インタフェースDB102に該当するエントリが無い場合、処理を終了する(ステップS102のNo)。
【0052】
一方、前記検索の結果、該当するエントリが見つかった場合(ステップS102のYes)、コントローラ100Aは、パケットの解析を行う(ステップS111)。前記パケットの解析の結果、受信パケットがユーザパケットであるなど、監視パケットで無い場合(ステップS112のNo)、第1の実施形態と同様に(
図5のステップS103〜S105参照)、前記特定された出力先ポートに基づいて、フローエントリの生成、設定、パケットの送信指示が行われる(
図11のS103〜S105)。
【0053】
一方、前記パケットの解析の結果、受信パケットが監視パケットであると判断した場合(ステップS112のYes)、コントローラ100Aは、フローエントリDB103から、前記受信パケット(監視パケット)に適合するマッチングルール(照合規則)を持つフローエントリを検索する(ステップS113)。
【0054】
次に、コントローラ100Aは、インタフェースDB102を参照して、前記受信パケット(監視パケット)が出力されたネットワークインタフェースに対応するポートを特定する。さらに、コントローラ100Aは、前記特定されたポートが、前記ステップS113で検索されたフローエントリのインストラクションフィールドに定められた出力先ポートと一致するか否かを確認する(ステップS114)。ここで、前記特定されたポートが、検索されたフローエントリのインストラクションフィールドに定められた出力先ポートと一致する場合(ステップS114のNo)、コントローラは処理を終了する。
【0055】
一方、前記特定されたポートが、検索されたフローエントリのインストラクションフィールドに定められた出力先ポートと一致しない場合(ステップS114のYes)、コントローラ100Aは、前記検索されたフローエントリのインストラクションフィールドの内容を前記特定されたポートへの転送処理に書き換え(ステップS115)、ノードに設定する(ステップS116)。
【0056】
以上のように、本実施形態によれば、パケット処理部内部の経路表の変化を、なるべく速やかに、ノード20に保持されているフローエントリに反映させることが可能になる。
【0057】
なお、上記した実施形態では、監視パケット送信部110は、フローエントリDB103からフローエントリを読み出して、監視パケットを生成するものとして説明したが、任意の監視パケット生成規則を用いて、監視パケットを自動生成するようにしてもよい。また、監視パケットは、更新要否確認対象のフローエントリと対応付けて生成され、監視パケットであることを識別可能なものであればよい。
【0058】
[第3の実施形態]
続いて、上記した第1の実施形態に変更を加えた第3の実施形態について図面を参照して詳細に説明する。上記した第1、第2の実施形態では、ノード20と、パケット処理部11が1対1の対応関係にあるものとして説明したが、複数のノードを単一の通信機器として振舞わせることも可能である。
【0059】
そこで、本発明の第3の実施形態では、
図12に示すように、コントローラ100Bが複数のノード20A、20Bを制御する構成となっている。以下、基本的な構成は、第1の実施形態と共通するので、その相違点を中心に説明する。
【0060】
図13は、本発明の第3の実施形態の詳細構成を表したブロック図である。
図3に示した第1の実施形態との相違点は、コントローラ100Bに、入力パケットデータベース(入力パケットDB)109、内部トポロジ管理部111および内部経路計算部112が追加されている点と、インタフェースDB102B、ユーザパケット処理部104B、出力パケット解析・フローエントリ生成部105Bに変更が加えられている点である。
【0061】
図14は、インタフェースDB102Bに保持される情報を模式的に表した図である。
図4に示した第1の実施形態のインタフェースDB102との相違点は、各エントリにノードID(Datapath ID)が追加されている点である。例えば、ノード20Aのポート#1から入力されたパケットは、ネットワークインタフェースtap0からパケット処理部11に入力される。また例えば、ポート#1から入力されたパケットをネットワークインタフェースtap0からパケット処理部11に入力した結果、パケット処理部11のネットワークインタフェースtap3から前記パケットが出力された場合、パケット処理部11に保持されている経路表は、ポート#1から入力された前記パケットをポート#50から出力するエントリを持っていると推測できる。出力パケット解析・フローエントリ生成部105Bは、このようなパケット処理の結果を用いて、ノード20Aのポート#1から入力されたパケットをノード20Bのポート#50から出力されるフローエントリを生成する。このとき、ノード20A、ノード20B間のパケット転送が必要となるので、後記する入力パケットDB109、内部トポロジ管理部111および内部経路計算部112が利用される。
【0062】
図15は、入力パケットDB109に保持される情報を模式的に表した図である。
図15の例では、入力パケットDBのエントリは、入力パケットのヘッダ情報等の入力パケット情報と、ノードID(Datapath ID)と、(物理)ノードのポート#とを対応付けた内容となっている。例えば、ユーザパケット処理部104Bが、ユーザパケットをノード側から受信すると、その入力パケット情報W、ノードID、ポート#を入力パケットDB109に登録する。ポート#1から入力されたパケットをネットワークインタフェースtap0からパケット処理部11に入力した結果、パケット処理部11のネットワークインタフェースtap3から、入力パケット情報としてWを持つパケットが出力された場合、前記登録した情報を逆引きして、当該パケットが、ノードIDが0x01であるノード20Aのポート#1から入力されたパケットであることを割り出すことができる。
【0063】
内部トポロジ管理部111は、ノード20Aおよびノード20B間の接続関係を管理する。内部経路計算部112は、出力パケット解析・フローエントリ生成部105Bからの要求に応じて、ユーザパケットを受信したノードと、当該ユーザパケットを出力すべきノード間の経路を計算する。例えば、出力パケット解析・フローエントリ生成部105Bから、ノード20Aとノード20B間の経路を計算する要求を受けた場合、内部経路計算部112は、内部トポロジ管理部111に保持されている情報を参照して経路を計算し、出力パケット解析・フローエントリ生成部105Bに計算結果を返す。
【0064】
続いて、上記したコントローラ100Bの動作について説明する。
図16は、コントローラ100Bの動作を表した流れ図である。
図16の左側の流れ図(A)を参照すると、ノード20A(またはノード20B)からフローエントリの作成要求(Packet−In)を受けると、コントローラ100Bは、インタフェースDB102Bを参照して、フローエントリの作成要求(Packet−In)に添付されたパケットのノード20A(またはノード20B)の受信ポートに対応するネットワークインタフェースを検索する(ステップS001;Packet−In)。前記検索の結果、インタフェースDB102Bに該当するエントリが無い場合、処理を終了する(ステップS002のNo)。
【0065】
一方、前記検索の結果、該当するエントリが見つかった場合(ステップS002のYes)、コントローラ100Bは、フローエントリの作成要求(Packet−In)に添付されたパケットから、前述した入力パケット情報、ノードID、ポート#などを抽出し(ステップS011)、入力パケットDB109に登録する(ステップS012)。
【0066】
その後、コントローラ100Bは、ステップS001で検索したエントリに記述されたネットワークインタフェース宛に、ノード20から受信したユーザパケットを転送する(ステップS003)。例えば、ノード20Aのポート#1で受信したパケットについてフローエントリの作成要求を受けた場合、コントローラ100Bは、インタフェースDB102Bを参照し、ノード20のポート#1に対応付けられているネットワークインタフェースtap0宛てにパケットを転送する。
【0067】
その後、パケット処理部の任意のネットワークインタフェースからパケットを受信すると、コントローラ100Bは、
図16の右側の流れ図(B)に従って動作する。まず、コントローラ100Bは、インタフェースDB102Bを参照して、パケットが送られてきたネットワークインタフェースに対応するノードIDと出力先ポートを検索する(ステップS121)。前記検索の結果、インタフェースDB102Bに該当するエントリが無い場合、処理を終了する(ステップS122のNo)。
【0068】
一方、前記検索の結果、該当するエントリが見つかった場合(ステップS122のYes)、コントローラ100Bは、前記受信パケットから入力パケット情報を抽出し、入力パケットDB109から該当入力パケット情報を持つエントリを検索する(ステップS123)。
【0069】
この時点で、ネットワークインタフェースから受信したパケットの受信ノードとその受信ポート、当該パケットを出力すべき出力ノードとそのポートが判明している。コントローラ100Bは、これらに基づいて、内部経路計算部112に、前記受信ノードと出力ノード間の経路の計算させる(ステップS124)。なお、前記計算の過程で転送不可能と判断された場合、コントローラ100Bは、処理を終了する(ステップS125のNo)。
【0070】
一方、転送可能と判断された場合、コントローラ100Bは、前記パケットを入力ノードから出力ノードに転送し、出力ノードの指定ポートから転送させるフローエントリを生成する(ステップS126)。
【0071】
次にコントローラ100Bは、ノード20A、20Bに、前記生成したフローエントリを設定し(ステップS127;FlowMod(Add)送信)、前記受信したパケットの転送を指示する(ステップS128;Packet−Out)。
【0072】
図12のノード20Aのポート#1から受信したパケットの情報を入力パケットDB109に登録するとともに、
図14のインタフェースDB102Bに従って、同パケットをネットワークインタフェースtap0に入力した場合を考える。例えば、ネットワークインタフェースtap0にパケットを入力した結果として、ネットワークインタフェースtap3からパケットを受信している場合、コントローラ100Bは、インタフェースDB102を参照し、ネットワークインタフェースtap3に対応付けられている出力先ポートとして、ノード20Bのポート#50を特定する。さらに、コントローラ100Bは、入力パケットDB109を参照して、当該パケットがノード20Aのポート#1から受信したものであることを特定する。コントローラ100Bは、これらの情報に基づいて、ノード20Aに、前記パケットに後続するパケットをノード20Bに転送させるフローエントリを設定し、ノード20Bに、前記パケット後続するパケットをそのポート#50から転送させるフローエントリを設定する。
【0073】
その後、
図12のノード20Aのポート#1から受信される後続パケットは、コントローラ100Bを介することなく、ノード20Bに転送され、ノード20Bのポート#50から出力される。
【0074】
以上説明したように、本実施形態によれば、低コストで、複数のノードを、あたかも一つの通信機器であるかのように振舞わせることが可能となる。また、この場合の構成も、仕様の通信装置と同等に動作するパケット処理部(このようなパケット処理部は、既存のルーティングプロトコルスタックを用いて容易に構成できる。)を用意するとともに、コントローラ側に、インタフェースDB102、入力パケットDB109、ユーザパケット処理部104B、出力パケット解析・フローエントリ生成部105B、内部トポロジ管理部111、内部経路計算部112に相当する機能とを持たせるだけあるので、低コストで実現することが可能である。
【0075】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態に示したノード、ポート、ネットワークインタフェースの数は、あくまで、本発明の理解を助けるために示した例であり、これらの数に限定されない。
【0076】
また例えば、上記した実施形態では、パケット処理部では、IPv4ルータ相当の動作を行うものとして説明したが、経路表等のパケット処理部内部の情報の監視を要しないので、ノード20、20A、20Bを、IPv6ルータはもちろんとして、各種のゲートウェイやパケット処理装置等と同様の動作を行わせることができる。
【0077】
また例えば、上記した実施形態では、コントローラ100、100A、100Bの外部に、パケット処理部や監視パケット送信部が接続されているものとして説明したが、
図1に示したように、コントローラ10の内部にパケット処理部や監視パケット送信部が配置されている構成も採用可能である。
【0078】
また例えば、上記した実施形態では、コントローラ100、100A、100Bが一連の動作を行うものとして説明したが、ノード20、20A、20B側に上記コントローラ100、100A、100Bと同等の機能を追加し、ノード20、20A、20Bが直接エミュレータ部にパケットを入力し、その結果に基づいて、フローエントリを生成するようにすることも可能である。
【0079】
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点による通信システム参照)
[第2の形態]
第1の形態において、
前記制御装置は、
前記パケット処理部のインタフェースと、前記ノードのインタフェースとの対応関係を記憶する記憶部を備え、
前記ノードから処理規則の作成を要求されたパケットに後続するパケットを、前記パケット処理部から出力されたインタフェースに対応する前記ノードのインタフェースから出力させる処理規則を作成する通信システム。
[第3の形態]
第1または第2の形態において、
前記パケット処理部は、経路表を保持し、前記経路表を参照して転送先の決定を含むパケット処理を行う通信システム。
[第4の形態]
第1から第3いずれか一の形態において、
さらに、所定の間隔で、前記パケット処理部に対し、前記ノードに保持されている処理規則に対応する監視パケットを入力する監視パケット送信部と、
前記ノードに設定した処理規則を記憶する第2の記憶部と、を含み、
前記制御装置は、
前記監視パケットの入力により得られた前記パケット処理部のパケット処理結果の変化を検知して、前記ノードに保持されている処理規則を更新する通信システム。
[第5の形態]
第1から第4いずれか一の形態において、
前記制御装置は、
複数のノードにそれぞれ処理規則を設定することにより、前記複数のノードに、前記パケット処理部と同等のパケット処理を行わせる通信システム。
[第6の形態]
第5の形態において、
前記制御装置は、さらに、
前記ノードから受信したパケットの情報を記憶する第3の記憶部と、
前記複数のノード間の接続関係を記憶する内部トポロジ管理部と、
前記複数のノードの任意の2つのノード間の経路を計算する内部経路計算部とを備え、
前記複数のノードの一のノードから処理規則の作成を要求されたパケットを前記パケット処理部に入力し、前記入力により得られた前記パケット処理部のパケット処理結果に基づいて、前記一のノードから出力ノードまでの経路を計算し、該経路上のノードに設定する処理規則を作成する通信システム。
[第7の形態]
(上記第2の視点による制御装置参照)
[第8の形態]
第7の形態において、さらに、
前記パケット処理部のインタフェースと、前記ノードのインタフェースとの対応関係を記憶する記憶部を備え、
前記ノードから処理規則の作成を要求されたパケットに後続するパケットを、前記パケット処理部から出力されたインタフェースに対応する前記ノードのインタフェースから出力させる処理規則を作成する制御装置。
[第9の形態]
第7または第8の形態において、さらに、
前記パケット処理部として、経路表を保持し、前記経路表を参照して転送先の決定を含むパケット処理を行うパケット処理部を備える制御装置。
[第10の形態]
第7から第9いずれか一の形態において、
さらに、前記ノードに設定した処理規則を記憶する第2の記憶部を備え、
所定の間隔で前記パケット処理部に入力される監視パケットに対する前記パケット処理部のパケット処理結果の変化を検知して、前記ノードに保持されている処理規則を更新する制御装置。
[第11の形態]
第7から第9いずれか一の形態において、
さらに、前記ノードに設定した処理規則を記憶する第2の記憶部と、
所定の間隔で前記パケット処理部に対し、前記ノードに保持されている処理規則に対応する監視パケットを入力する監視パケット送信部を備え、
前記監視パケットの入力により得られた前記パケット処理部のパケット処理結果の変化を検知して、前記ノードに保持されている処理規則を更新する制御装置。
[第12の形態]
第7から第11いずれか一の形態において、
複数のノードにそれぞれ処理規則を設定することにより、前記複数のノードに、前記パケット処理部と同等のパケット処理を行わせる制御装置。
[第13の形態]
第12の形態において、
さらに、
前記ノードから受信したパケットの情報を記憶する第3の記憶部と、
前記複数のノード間の接続関係を記憶する内部トポロジ管理部と、
前記複数のノードの任意の2つのノード間の経路を計算する内部経路計算部とを備え、
前記複数のノードの一のノードから処理規則の作成を要求されたパケットを前記パケット処理部に入力し、前記入力により得られた前記パケット処理部のパケット処理結果に基づいて、前記一のノードから出力ノードまでの経路を計算し、該経路上のノードに設定する処理規則を作成する制御装置。
[第14の形態]
(上記第3の視点によるノード参照)
[第15の形態]
(上記第4の視点によるノードの制御方法参照)
[第16の形態]
(上記第5の視点によるプログラム参照)
【0080】
なお、上記第14〜第16の形態は、上記第1、第7の形態と同様に、派生する形態に展開することが可能である。
【0081】
お、引用した上記の特許文献、非特許文献の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲(クレーム)の枠内において、種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合せないし選択が可能である。