【文献】
千葉 靖伸,フローベースネットワークおけるフローエントリ削減手法の提案とOpenFlowネットワークへの適用,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2010年 2月25日,第109巻 第448号,p.7〜12
(58)【調査した分野】(Int.Cl.,DB名)
前記ノードは、前記複数の処理規則の各々の処理規則に対応付けられたノード識別子に基づいて、前記ノードが設定すべき処理規則を特定する請求項1または2の通信システム。
【発明の概要】
【発明が解決しようとする課題】
【0006】
以下の分析は、本発明者によってなされたものである。
上記受信パケットの経路の決定依頼を受けたオープンフローコントローラは(
図26のs2 Packet−In参照)、受信パケットの転送経路を決定する。前記受信パケットおよび同一フローに属する後続パケットをホスト(B)に転送するには、前記転送経路上にあるすべてのオープンフロースイッチ(
図26のノード#1およびノード#2)に、フローエントリを設定する必要がある。このために、ユーザパケットの転送を開始するまでに時間がかかってしまうという問題点がある。
【0007】
また、上記フローエントリの設定がオープンフロープロトコルで行われる場合(非特許文献2の「4.6 FLOW Table Modication Messages」参照)、オープンフローコントローラとオープンフロースイッチ間の通信に遅延が生じることがあり、一部のオープンフロースイッチにおけるフローエントリの設定が間に合わず、同一フローのパケットが、経路上のオープンフロースイッチにおいて、フローテーブル上のフローエントリに一致しないと判断され、オープンフローコントローラに対して受信パケットに対するフローエントリの作成依頼が行われてしまうという問題点もある。また、上記フローエントリの設定遅延により、経路上のオープンフロースイッチにおいて、フローテーブル上の意図しないフローエントリに一致し、同一フローのパケットに対し意図しないアクションが実行されるという問題点もある。
【0008】
上記の対策として、
図26に示すように、(オープンフロー)コントローラが、ノード#1、#2に対してフローエントリを送信(
図26のs3、s6のFlowMod(Add)参照)するとともに、オープンフロープロトコルに規定されているBarrier Requestを送信することが考えられる(
図26のs4 Barrier Request;Barrier Request/Replyについては非特許文献2の「5.3.6 Barrier Message」参照)。Barrier Requestを受信したノードは、「Barrier Reply」(
図26のs5)として、Barrier Request受信前に実行した処理内容を応答する。これにより、(オープンフロー)コントローラは、フローエントリが正しく設定されているかどうかを確かめることができる。しかしながら、この方法では、フローエントリを設定したすべてのノードと、Barrier Request/Replyをやり取りすることになり、ユーザパケットを送信できるまでの時間(
図26のs1(User Packet)〜s10(User Packet))が、余計長くなってしまうという問題点がある。
【0009】
もう一つの方法として、上記Barrier Request/Replyに代えて、Stats Request/Replyを用いて、各ノードが該当するエントリを持っているかどうかを確かめる方法もあるが、この場合も、上記Barrier Request/Replyを用いる場合と同様に、フローエントリを設定したすべてのノードと該当するフローエントリが設定されているか否かをやり取りする必要が生じ、ユーザパケットを送信できるまでの時間(
図26のs1(User Packet)〜s10(User Packet))が長くなってしまう。
【0010】
本発明は、上記した事情に鑑みてなされたものであってその目的とするところは、確実かつ高速に処理規則(フローエントリ)を設定することのできる通信システム、ノード、制御サーバ、通信方法およびプログラムを提供することにある。
【課題を解決するための手段】
【0011】
本発明の第1の視点によれば、パケットの転送経路の少なくとも一部を構成する複数のノードを含み、前記複数のノードにおけるノードは、前記複数のノードの各々で実行される
ユーザパケット
の処理に関する複数の処理規則と、前記複数のノードの各々に対応する出力ポートを示す出力ポート情報とが設定された
設定用のパケットから、前記ノードに対応する処理規則を抽出可能な第1の手段と、前記出力ポート情報のうち、前記ノードに対応する出力ポートから
、前記ユーザパケットの転送経路とは少なくとも始点が異なる転送経路に沿って転送される前記
設定用のパケットを
出力可能な第2の手段とを含み、前記出力ポート情報は、前記処理規則が設定された前記
設定用のパケットを転送すべきノードに対応する出力ポートを示す通信システムが提供される。
【0012】
本発明の第2の視点によれば、パケットを転送するノードであって、パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行される
ユーザパケット
の処理に関する複数の処理規則
と、前記複数のノードの各々に対応する出力ポートを示す出力ポート情報とが設定された
設定用のパケットから、前記ノードに対応する処理規則を抽出可能な第1の手段と、前記出力ポート情報のうち、前記ノードに対応する出力ポートから
、前記ユーザパケットの転送経路とは少なくとも始点が異なる転送経路に沿って転送される前記
設定用のパケットを
出力可能な第2の手段とを含み、前記出力ポート情報は、前記処理規則が設定された前記
設定用のパケットを転送すべきノードに対応する出力ポートを示
すノードが提供される。
【0013】
本発明の第3の視点によれば、パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行される
ユーザパケット
の処理に関す
る処理規則が未設定のパケットに対応する処理規則の設定要求を、前記複数のノードに含まれるノードから受信する第1の手段と、前記設定要求に応じて、前記複数のノードの各々の記憶部に設定される前記複数の処理規則と、前記複数のノードの各々に対応する出力ポートを示す出力ポート情報とを、前記複数の処理規則と前記出力ポート情報とを設定した前記
設定用のパケットを転送する前記ノードに通知可能な第2の手段とを含み、前記出力ポート情報は、前記処理規則が設定された前記
設定用のパケットを転送すべきノードに対応
し、前記ユーザパケットの転送経路とは少なくとも始点が異なる転送経路に沿って転送させるための出力ポートを示
す制御サーバが提供される。
【0014】
本発明の第4の視点によれば、パケットを転送するノードによる通信方法であって、
ユーザパケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行される
前記ユーザパケット
の処理に関する複数の処理規則
と、前記複数のノードの各々に対応する出力ポートを示す出力ポート情報とが設定された
設定用のパケットから、前記ノードに対応する処理規則を抽出し、前記出力ポート情報に基づいて、前記処理規則が設定された前記
設定用のパケットを転送すべき前記ノードに対応する出力ポートから
、前記ユーザパケットの転送経路とは少なくとも始点が異なる転送経路に沿って転送される前記
設定用のパケットを転送する通信方法が提供される。本方法は、データ転送ネットワークを構成する転送ノードという、特定の機械に結びつけられている。
【0015】
本発明の第5の視点によれば、パケットを転送するノードに、パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則、前記複数のノードの各々に対応する出力ポートを示す出力ポート情報とが設定されたパケットから、前記ノードに対応する処理規則を抽出する処理と、前記出力ポート情報のうち、前記ノードに対応する出力ポートから前記パケットを転送する処理とを実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。また、前記プログラムによってノードにおいて実行される処理ステップは、通信方法としても把握できる。
【0016】
本発明の第6の視点によれば、パケットを転送するノードを制御する制御サーバに、パケットの転送経路の少なくとも一部を構成する複数のノードの各々で実行されるパケット処理に関する複数の処理規則が未設定のパケットに対応する処理規則の設定要求を、前記複数のノードに含まれるノードから受信する処理と、前記設定要求に応じて、前記複数のノードの各々の記憶部に設定される前記複数の処理規則と、前記複数のノードの各々に対応する出力ポートを示す出力ポート情報とを、前記複数の処理規則と前記出力ポート情報とを設定したパケットを転送する前記ノードに通知する処理とを実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。また、前記プログラムによって制御装置において実行される処理ステップは、通信方法としても把握できる。
【発明の効果】
【0017】
本発明によれば、データ転送ネットワークに配置されたノードに、確実かつ高速にフローエントリを設定させることが可能になる。
【発明を実施するための形態】
【0019】
はじめに、本発明の概要について説明する。以下、この概要に付記した図面参照符号は、専ら理解を助けるための例示であり、図示の態様に限定することを意図するものではない。本発明の通信システムのノードは、パケットに含まれる処理規則列から、自らの処理規則記憶部に設定すべき処理規則を取り出して、自装置の処理規則記憶部に設定する機能を有している。そして、ノードは、前記設定した処理規則を含む自らの処理規則記憶部に設定された内容を参照して、受信パケットに適合する処理規則を検索し、検索した処理規則に規定された処理内容(パケット書き換え、パケット転送、パケット廃棄など)を実行する。
【0020】
前記処理規則列は、データ転送ネットワーク上の任意のノードのそれぞれの処理規則記憶部に設定すべき処理規則を並べた構成とすることができる。個々のノードが、処理規則列の中から自らの処理規則記憶部に設定すべき処理規則を特定する方法としては、個々の処理規則にノード識別子を付加しておく方法、処理規則列中の処理規則の位置を個々のノードに割り当てておく方法、処理規則列中の処理規則の順番に従い、個々のノードが先頭または末尾の処理規則を取り出して行く方法などを採用することができる。
【0021】
前記処理規則と処理規則記憶部は、上述したオープンフロー技術におけるフローエントリとフローテーブルに相当するが、その他の態様を採ることもできる。例えば、受信パケットに適合する処理規則を探して、ヘッダの書き換えやパケットを指定ポートから出力するといった処理を実行できるものであればよい(
図25および非特許文献2の4頁−6頁「3.3 Actions」、「Table5」参照)。
【0022】
また、制御装置(コントローラ;
図1の20)が、前記処理規則列を含んだパケットを作成して、ノード#1(
図1の10)に送信し、ノード#1(
図1の10)が次ホップのノード#2(
図1の10)に転送することとしてもよいし、ノード#1(
図1の10)が、制御装置(コントローラ;
図1の20)から処理規則列を受け取ってパケットに付加して、次ホップのノード#2(
図1の10)に転送することとしてもよい。また、制御装置(コントローラ;
図1の20)から必要な処理規則を受け取って処理規則列を作成する専用装置を設ける構成も採用可能である。また、ノードのうち、外部のサーバや端末との境界に位置するノードが、制御装置(コントローラ;
図1の20)から複数の処理規則を受け取って前記処理規則列を作成する機能を備える構成も採用可能である。
【0023】
このような処理規則列を含んだパケットを受信したノード(
図1のノード#2、または
図1のノード#1、#2)が、前記処理規則列の中から自らの処理規則記憶部に設定すべき処理規則を取り出して、自装置の処理規則記憶部に設定することにより、処理規則の設定が完了する。これにより、
図26に示した手順を踏むことなく、確実かつ迅速に、後続するユーザパケットを転送することが可能になる。なお、また、最初のパケットに付加された処理規則の削除は、終端となるノード(
図1のノード#2)に行わせればよい。
【0024】
[第1の実施形態]
続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。
図1は、本発明の第1の実施形態に係る通信システムの構成を示す図である。
図1を参照すると、2つのノード10と、制御装置(コントローラ)20と、ノード10を経由して通信するホスト(A)、(B)が示されている。なお、
図1の例では、2つのノード10と、制御装置(コントローラ)20と、2つのホスト(Host(A)、Host(B))を示しているが、それぞれの数は、あくまで例示であり、それぞれ任意の数とすることができる。
【0025】
図2は、ノード10の詳細構成を表した図である。
図2を参照すると、ノード10は、制御装置(コントローラ)20と通信する制御装置通信部11と、フローテーブル13を管理するフローテーブル管理部12と、パケットバッファ14と、転送処理部15とを備えて構成される。なお、ノード10は、必ずしもパケットバッファ14を備えていなくともよい。
【0026】
さらに、転送処理部15は、フロー設定情報抽出部152にて抽出された処理規則設定情報に従い、フローテーブル管理部12を介してフローテーブル13に処理規則(フローエントリ)を設定する処理等を行うフロー設定情報処理部151と、ユーザトラフィックとして受信したパケットに付加されている処理規則列ヘッダから処理規則設定情報を取り出して、フロー設定情報処理部151に出力するフロー設定情報抽出部152と、受信パケットに処理規則列ヘッダが付加されていなかった場合に、フローテーブル13を検索し、該当する処理規則(フローエントリ)に定められた処理内容(アクション)をアクション実行部154に出力するテーブル検索部153と、前記テーブル検索部153から出力された処理内容(アクション)を実行するアクション実行部154とを備えて構成される。また、テーブル検索部153は、フローテーブル13の検索の結果、受信パケットに適合する処理規則(フローエントリ)が無かった場合、当該受信パケットをパケットバッファ14にバッファするとともに、制御装置(コントローラ)20に対し、処理規則列の作成を依頼する処理を行う。
【0027】
上記のようなノード10は、オープンフロースイッチに、上記フロー設定情報処理部151およびフロー設定情報抽出部152を追加した構成にて実現することも可能である。
【0028】
図3は、制御装置(コントローラ)20の詳細構成を表した図である。
図3を参照すると、制御装置(コントローラ)20は、処理規則(フローエントリ)を格納したフローエントリデータベース(フローエントリDB)21と、ノード通信部26を介して収集されたノード10の接続関係に基づいてネットワークトポロジ情報を構築するトポロジ管理部22と、トポロジ管理部22にて構築されたネットワークトポロジ情報に基づいてパケットの転送経路および該転送経路上のノード10に実行させるアクションを求める経路・アクション計算部23と、経路・アクション計算部23にて計算された結果を処理規則(フローエントリ)としてフローエントリDB21に登録し、ノード10からの処理規則(フローエントリ)の追加または更新要求に応えるフローエントリ管理部24と、制御メッセージ処理部25と、ノード10との通信を行うノード通信部26とを備えて構成される。なお、ノード10に対して追加または更新を指示した処理規則(フローエントリ)を保持する必要が無い場合、フローエントリデータベース(フローエントリDB)21は省略することが可能である。また、フローエントリデータベース(フローエントリDB)21を別途外部サーバ等に設ける構成も採用可能である。
【0029】
さらに、制御メッセージ処理部25は、ノードから受信した制御メッセージを解析して、必要な処理を行うメッセージ解析・処理部251と、フローエントリ管理部24から出力された処理規則(フローエントリ)を集約した処理規則列を作成するフローエントリ集約部253を備えたメッセージ生成部252とを備えて構成される。
【0030】
図4は、制御装置(コントローラ)20からの指示に基づき、ノード10にて作成される処理規則列付きパケットの構成を説明するための図である。
図4の例では、処理規則列付きパケット32は処理規則列を含んだ処理規則列ヘッダ33をユーザパケット31の先頭に付加した構成となっている。
【0031】
図5は、上記処理規則列ヘッダの構成例を示す図である。
図5の例では、処理規則列ヘッダ33は、MAC宛先アドレス(MAC DA)、MAC送信元アドレス(MAC SA)、上位プロトコルタイプ(Ether Type)、トータルヘッダ長(Total Length)に、処理規則列付きパケットから処理規則列を除去する処理を行うべき最終ホップのノードを示したLast hop bitmap、Length〜actionsまでのフィールドを一単位とする処理規則設定情報と、当該処理規則列付きパケットを出力すべきポート(当該処理規則列付きパケットを転送すべきノード)を示すOutput port bitmap(出力ポートビットマップ)を設定対象のノード数分付加した構成となっている。
【0032】
図5のDPID#1は、ノード10の識別子を表している。ofp_matchフィールド〜actionsフィールドは、DPID#1に示されたノードに実行させるフローエントリ操作情報が格納される。フローエントリ操作情報のうち、本発明に関係するものについて説明すると、ofp_matchフィールドは、
図24に示すフローエントリのマッチングキー(FlowKey)に相当する情報が格納される。また、idle_timeoutおよびhard_timeoutは、当該処理規則(フローエントリ)の存続期間(有効期間)が格納される。また、actionsは、
図24に示すフローエントリのActionsに相当する処理内容が格納される。
【0033】
Last hop bitmapは、何番目のノードが最終ホップであるかを示している。例えば、Last hop bitmapが、「10000000000・・・・」である場合(1の位置が最終ホップであるノードを示す。)、
図5のDPID#1のノードが最終ホップとなる。同様に、Last hop bitmapが、「00001000000・・・・」である場合(1の位置が最終ホップであるノードを示す。)、5番目のフローエントリ操作情報を用いて処理規則(フローエントリ)の設定を行うノードが最終ホップとなる。
【0034】
Output port bitmap(出力ポートビットマップ)も同様に、各ノードが、何番目のポートから当該処理規則列付きパケットを出力すべきかが、ビットマップで記述される。
【0035】
なお、本実施形態では、ビットマップで、最終ホップや出力先ポートを示す形態を採用しているが、そのノード10が最終ホップであることや出力先を特定できるものであれば、先述したノード識別子を記述するノード識別子フィールドを設ける等の他の形態を採用することもできる。
【0036】
上記のような制御装置(コントローラ)20は、非特許文献1、2のオープンフローコントローラに、上記のような処理規則列を作成するフローエントリ集約部253と、ノード10に対して処理規則列を送信する機能を追加することにより実現することも可能である。
【0037】
続いて、上記したノード10および制御装置(コントローラ)20の動作について説明する。
図6は、上記ノード10の動作を表したフローチャートである。
図6を参照すると、ノード10は、ホストや他のノード10からパケットを受信すると(ステップS101)、受信パケットから処理規則列の抽出を試みる(ステップS102)。
【0038】
ステップS102にて、処理規則列を抽出できた場合(ステップS103のYes)、ノード10は、処理規則列から自装置が設定すべき処理規則(フローエントリ)を取り出して、フローテーブル13に設定する(ステップS104)。次に、ノード10は、上記したLast hop bitmapを参照し、自身がラストホップであるか否かを確認する。ここで、自身がラストホップであると判定した場合、ノード10は、受信パケットから処理規則列を削除して、オリジナルパケット(ユーザパケット)を抽出し(ステップS106)、Output port bitmapにて指定されたポートから出力する(ステップS107)。また上記ステップS105にて、自身がラストホップでないと判定した場合、ノード10は、Output port bitmapにて指定されたポートから処理規則列が付いたままのパケット(処理規則列ヘッダ付きパケット)を出力する(ステップS107)。
【0039】
一方、ステップS102にて、処理規則列を抽出できなかった場合(ステップS103のNo)、ノード10は、フローテーブル13を参照して受信パケットに適合する処理規則(フローエントリ)を検索する(ステップS108)。
【0040】
フローテーブル13の検索の結果、受信パケットに適合する処理規則(フローエントリ)が見つかった場合(ステップS109のYes)、ノード10は、処理規則(フローエントリ)に定められた処理内容(アクション)を実行する(ステップS110)。
【0041】
一方、フローテーブル13の検索の結果、受信パケットに適合する処理規則(フローエントリ)が見つからなかった場合(ステップS109のNo)、ノード10は、未知のパケットを受信したと判定し、当該パケット(ユーザパケット)をパケットバッファ14に保存するとともに、制御装置(コントローラ)20に、受信パケットを送信し、処理規則列の作成を要求する(ステップS111)。その後は、制御装置(コントローラ)20にて、
図7に示す手順に従って処理規則列を含む応答処理が行われる(後述)。
【0042】
制御装置(コントローラ)20から、処理規則列が添付された処理規則(フローエントリ)の設定指示(Flow Mod(Add))を受信すると、ノード10は、自身のフローテーブル13に、Flow Mod(Add)に従い処理規則(フローエントリ)を設定する(ステップS112)。
【0043】
次に、ノード10は、パケットバッファ14にユーザパケットが保存されているか否かを確認し(ステップS113)、保存されていれば(ステップS113のYes)、当該ユーザパケットを読み出し(ステップS114)、当該ユーザパケットに、ステップS112にて受信した処理規則列を処理規則列ヘッダとして追加して(ステップS115)、前記設定した処理規則(フローエントリ)に定められた処理内容(アクション;ここでは、処理規則列ヘッダを追加したパケットの指定ポートからの出力)を実行する(ステップS110)。これにより、処理規則列ヘッダ付きパケットが次ホップのノードに転送される。
【0044】
一方、ノード10がパケットバッファ14を備えていない場合など、ノード10がユーザパケットを保持していない場合(ステップS113のNo)、制御装置(コントローラ)20からのパケット出力指示(Packet−Out)が受信される(ステップS116)。
【0045】
前記パケット出力指示(Packet−Out)を受信したノード10は、パケットバッファ14にユーザパケットが保存されているか否かを確認し(ステップS117)、保存されていれば(ステップS117のYes)、当該ユーザパケットを読み出し(ステップS118)、パケット出力指示(Packet−Out)とともに受信した処理内容(アクション;ここでは、処理規則列ヘッダの付加と処理規則列ヘッダを追加したパケットの指定ポートからの出力、または、フローテーブルの検索)を実行する(ステップS110)。また、ユーザパケットを保存していない場合(ステップS117のNo)、ノード10は、パケット出力指示(Packet−Out)とともに受信したユーザパケットについて、パケット出力指示(Packet−Out)とともに受信した処理内容(アクション;ここでは、ユーザパケットへの処理規則列ヘッダの付加と処理規則列ヘッダを追加したパケットの指定ポートからの出力、または、フローテーブルの検索)を実行する(ステップS110)。これにより、処理規則列ヘッダ付きパケットが次ホップのノードに転送される。
【0046】
続いて、上記
図6のステップS111にて、ノード10から問い合わせ(処理規則列の作成要求)を受けた制御装置(コントローラ)20側の動作について説明する。
【0047】
図7は、上記制御装置(コントローラ)20の動作を表したフローチャートである。
図7を参照すると、制御装置(コントローラ)20は、上記
図6のステップS111のように、ノード10から問い合わせ(処理規則列の作成要求)を受けると(ステップS001)、トポロジ管理部22にて構築されたネットワークトポロジ情報を取得し、パケットの転送経路を計算する(ステップS002)。
【0048】
前記パケットの転送経路を計算の結果、経路を作成できない、経路上のノードが故障している等の理由により、転送できないと判定した場合(ステップS103のNo)を除き、制御装置(コントローラ)20は、前記計算された転送経路に対応するアクションを計算し(ステップS004)、当該経路上の各ノード10に適用する処理規則(フローエントリ)を生成する(ステップS005)。
【0049】
次に、処理規則(フローエントリ)の生成が完了すると、制御装置(コントローラ)20のフローエントリ集約部253にて、処理規則(フローエントリ)の要求元のノード10より下流側のノードに設定されるべき処理規則(フローエントリ)を処理規則列に集約する処理が行われる(ステップS006)。
【0050】
次に、制御装置(コントローラ)20は、処理規則(フローエントリ)の要求元のノード10に送信する処理規則(フローエントリ)を生成し(ステップS007)、ステップS006で生成した処理規則列を添付して、処理規則(フローエントリ)の要求元のノード10に対して送信する(ステップS008)。
【0051】
その後、ノード10がパケットをバッファしていない場合(ステップS009のNo)、制御装置(コントローラ)20は、パケットの出力指示(Packet−Out)を行う(ステップS010)。このパケットの出力指示は、出力すべきパケット(ステップS001のPacket−Inで受信したパケット)と、当該パケットに対し実行すべきアクション(処理規則列ヘッダを追加したパケットの作成と、指定ポートから出力)とを指示すること、あるいは、出力すべきパケット(ステップS001のPacket−Inで受信したパケット)と、当該パケットに対し実行すべきアクション(フローテーブルの検索)を指示することによって行われる。なお、ノード10がパケットをバッファしている場合(ステップS009のYes)、先に
図6のステップS113、S114で説明したとおり、ノード10側でパケットの出力処理が行われるため、制御装置(コントローラ)20側の処理は省略される。
【0052】
図8は、ホスト(A)からのユーザパケットを受信したノード#1が、制御装置(コントローラ)20に対し問い合わせ(処理規則列の作成要求)を行ってから、ホスト(B)のユーザパケットが届けられるまでの一連の流れを説明するための参考図とシーケンス図である。
【0053】
図8に示すように、ホスト(A)が、ノード#1に対し、ホスト(B)宛てのユーザパケットを送信すると(
図8のST1;User Packet)、ノード#1は、受信したパケットに処理規則列が付加されておらず、また、フローテーブル13にも適合する処理規則(フローエントリ)が無い未知のパケットであると判定し(
図6のステップS103のNo、ステップS109のNo)、制御装置(コントローラ)20に対し問い合わせ(処理規則列の作成要求)を行う(
図8のST2;Packet−In)。
【0054】
前記問い合わせ(処理規則列の作成要求)を受けた制御装置(コントローラ)20は、
図7のフローチャートに従って処理規則列を作成し、ノード#1用の処理規則(フローエントリ)とともにノード#1に送信する(
図8のST3;Flow Mod(Add) /w 処理規則列)。
【0055】
ノード#1は、制御装置(コントローラ)20から送信された処理規則(フローエントリ)を自装置のフローテーブル13に設定するとともに、受信ユーザパケットに前記制御装置(コントローラ)20から送信された処理規則列を付加し(
図8のST4)、ノード#2に宛てて送信する(
図8のST5;User Packet /w 処理規則列)。
【0056】
前記処理規則列が付加されたユーザパケットを受信したノード#2は、受信したパケットから処理規則列を抽出して、その中のノード#2が設定すべき処理規則(フローエントリ)を取り出して、自装置のフローテーブル13に設定(追加)する(
図8のST6)。最後に、ノード#2は、処理規則列が付加されたユーザパケットから、前記処理規則列を取り外して、ユーザパケットを宛先であるホスト(B)に送信する(
図8のST7;User Packet)。
【0057】
以上のように、本実施形態によれば、制御装置(コントローラ)20がノード10に処理規則(フローエントリ)を送信する回数が、転送経路上のノードの数に応じて増大することが無くなるため(
図8の例では1回)、最初のユーザパケットの受信後、経路上のノード10にフローエントリの設定が完了するまでの時間を短縮することができる。また、一連の動作の鍵となる処理規則列を付加したFlow Mod(Add)コマンドは、TCP(Transmission Control Protocol)で送信され、その後の処理規則(フローエントリ)の設定も経路上のノードでユーザパケットの転送に先立って順次実行されるため、冒頭に述べた一部のノードにおいて処理規則(フローエントリ)の設定が遅延するといった事態が発生しなくなる。
【0058】
ここで、
図26に示した個々のノードにそれぞれ処理規則(フローエントリ)を設定する場合と、
図8のように処理規則列を先頭のノードに送信する場合について、すべてのノードに処理規則(フローエントリ)が設定されるまでの所要時間を比較する。以下、各処理時間/遅延を、次の変数で表して説明するものとする。
T
f: FlowMod (Add)によるフロー設定処理時間
T
b: Barrier Request処理時間
T
sc: ノード−コントローラ遅延
T
cs: コントローラ−ノード遅延
T
c: コントローラパス計算時間
T
l: ノード間/ノード−ホストリンク遅延
N : フロー設定対象ノード数
【0059】
図26の方法によりすべてのノードに処理規則(フローエントリ)が設定されるまでの所要時間T
setup0は次式にて算出される。次式からも明らかなように、時間T
setup0は、ノード数Nに応じて増大する。
T
setup0=T
sc+T
c+N(T
cs+T
f+T
b+T
sc+T
l)
【0060】
これに対し、本発明により、すべてのノードに処理規則(フローエントリ)が設定されるまでの所要時間T
setupは次式にて算出される。
T
setup=T
sc+T
c+T
cs+N(T
f+T
l)
両式を対比すると明らかなとおり、本発明の方が、処理規則を設定する際の遅延T
csが1回で済むのと、Barrier Request/Replyのための処理時間T
b+応答遅延T
scが不要となる点で有利である。
【0061】
[第2の実施形態]
続いて、本発明の第2の実施形態について図面を参照して詳細に説明する。上記本発明の第1の実施形態では、前記問い合わせ(処理規則列の作成要求)を受けた制御装置(コントローラ)20がFlow Mod(Add)メッセージを送信することにより1stホップのノードにフローエントリの設定を行っていたが、本実施形態では、Flow Mod(Add)メッセージを用いない別の方法を採用している。なお、第2の実施形態のノード10および制御装置(コントローラ)20の構成は、上記第1の実施形態と同等であるので、説明を省略する。
【0062】
図9は、本発明の第2の実施形態の通信システムにおける一連の流れを説明するための参考図とシーケンス図である。第1の実施形態で参照した
図8との相違点は、
図9のST3(またはST3’)において制御装置(コントローラ)20がPacket−Out(ST3)またはEthernet(登録商標)フレーム(ST’3)を用いて処理規則列を送信する点と、
図9のST4にて、ノード#1が当該処理規則列から自装置に設定すべき処理規則(フローエントリ)を特定し、設定する点である。以下、本発明の第2の実施形態について上記相違点を中心に説明する。
【0063】
図10は、本発明の第2の実施形態の制御装置(コントローラ)およびノードが次ホップに送出する処理規則列付きパケットの構成を表した図である。
図10のST1は、
図9のST1においてホスト(A)からノード#1に送信されるユーザパケット31を示している。
【0064】
図10のST3は、ノード#1からの問い合わせ(処理規則列の作成要求)を受けた制御装置(コントローラ)20が、
図9のST3またはST’3において、ノード#1に送信する処理規則列ヘッダ付きパケット32を示している。
【0065】
図10のST5は、制御装置(コントローラ)20から処理規則列ヘッダ付きパケット32を受信したノード#1が、
図9のステップST5において、自装置に設定すべき処理規則(フローエントリ)を設定した後、ノード#2に送信する処理規則列ヘッダ付きパケット32を示している。
【0066】
図10のST7は、ノード#1から処理規則列ヘッダ付きパケット32を受信したノード#2が、
図9のステップST7において、自装置に設定すべき処理規則(フローエントリ)を設定した後、処理規則列を除去してホスト(B)に送信するユーザパケットを示している。
【0067】
ここで、上記処理規則列ヘッダと、上記ノード#1、#2が最終ホップであることを判別する仕組みについて再度説明する。
【0068】
図11は、上記処理規則列ヘッダ33の構成例を示す図であり、基本的な構成は、
図5に示したものと同一である。
図11の例では、Last Hop Bitmap以下に、ノード#1、ノード#2の処理規則(処理規則設定情報)が並べてあり、ノード識別子が格納されるDPID#1,DPID#2フィールドで、個々のノードが、自装置に設定すべき処理規則を特定できるようになっている。また、
図11の例では、ノード#2が最終ホップに当たるため、Last hop bitmapが、「010000000・・・・」と記述されている。
【0069】
続いて、本実施形態の動作について上記した第1の実施形態と相違する部分を中心に説明する。
図12は、第2の実施形態の制御装置(コントローラ)20の動作を表したフローチャートである。
【0070】
図12は、上記制御装置(コントローラ)20の動作を表したフローチャートである。
図12のステップS201〜S206は、上記第1の実施形態の制御装置(コントローラ)20の動作を表した
図7のステップS001〜S006と同等であるので説明を省略する。
【0071】
上記
図6のステップS111にて、ノード10から問い合わせ(処理規則列の作成要求)を受けてフローエントリの作成および集約が完了すると、制御装置(コントローラ)20は、ユーザパケットに、ステップS206で生成した処理規則列を処理規則列ヘッダとして添付して、処理規則列付きパケットを作成する(ステップS207;ユーザパケット改変)。
【0072】
その後、制御装置(コントローラ)20は、パケットの出力指示(Packet−Out)を行う(ステップS208)。このパケットの出力指示は、出力すべきパケット(ステップS207で作成した処理規則付きパケット)と、当該パケットに対し実行すべきアクション(指定ポートから出力)とを指示することによって行われる。
【0073】
図13は、第2の実施形態のノード10の動作を表したフローチャートである。
図13のステップS301〜S310までの動作は、上記した第1の実施形態と同等であり、それぞれ
図6のステップS101〜S110に相当するので説明を省略する。
【0074】
ステップS312で制御装置(コントローラ)20に処理規則列の作成を要求したノード10は、
図12にて説明したとおり、上記処理規則列ヘッダが付加されたパケットの出力指示を受信する(ステップS313)。
【0075】
次に、ノード10は、ユーザパケットを保存済みであるか否かを確認し(ステップS314)、ユーザパケットを保存済みである場合には(ステップS314のYes)、パケットバッファ14からユーザパケットを読み出して(ステップS316)、パケット出力指示(Packet−Out)とともに受信した処理内容(アクション;指定ポートからの出力)を実行する(ステップS310)。
【0076】
一方、ユーザパケットを保存済みでない場合(ステップS314のNo)、ノード10は、パケット出力指示(Packet−Out)とともに受信したパケットに、処理規則列が含まれているか否かを確認し(ステップS315)、処理規則列が含まれている場合(ステップS315のYes)、ステップS302以下の処理を実行する。また、パケット出力指示(Packet−Out)とともに受信したパケットに、処理規則列が含まれていない場合(ステップS315のNo)、パケット出力指示(Packet−Out)とともに受信したユーザパケットについてパケット出力指示(Packet−Out)とともに受信した処理内容(アクション;ここでは、指定ポートからの出力)を実行する(ステップS310)。
【0077】
前記ステップS310におけるアクションの実行後、ノード10は、処理規則列を含んだパケットを受信済みであるか否かを判定し(ステップS311)、処理規則列を含んだパケットを受信済みであれば、処理を終了し、処理規則列を含んだパケットを受信済みでなければ、ステップS313に戻って、処理規則列を含んだパケット(Packet−Out)の受信を待つ。
【0078】
以上のように、本発明は、制御装置(コントローラ)20からパケットの出力指示(Packet−Out)を受信する形態によっても実現できる。また、上記パケットの出力指示(Packet−Out)に代えて、制御装置(コントローラ)20からデータプレーンを介してノード10に、Ethernet(登録商標)フレームを用いて上記パケットの出力指示(Packet−Out)と同等の処理規則列を付加したパケットを送信することによっても実現できる。
【0079】
[第3の実施形態]
以上、本発明の第1、第2の実施形態を説明したが、制御装置(コントローラ)20にて作成される経路上のノード数が増大すると、処理規則列も長大となり、最大フレーム長を超えてしまうことが考えられる。以下、より多くのノードに処理規則を設定できるように変更を加えた第3の実施形態について説明する。
【0080】
図14は、本発明の第3の実施形態の通信システムにおける一連の流れを説明するための参考図とシーケンス図である。第2の実施形態で参照した
図9との相違点は、
図14のST3(またはST3’)において制御装置(コントローラ)20が処理規則列だけを収容した設定専用パケット(Setup Packet)を送信し、その後、制御装置(コントローラ)20からのパケットの出力指示(Packet−Out)に基づいて、元々のユーザパケットを送信するようにした点と、設定専用パケット(Setup Packet)の最終ホップのノードで転送を停止するようにした点である。ここで、設定専用パケット(Setup Packet)とは、ユーザパケットに処理規則列ヘッダを追加するのではなく、ユーザパケットの部分がない処理規則(フローエントリ)の設定専用のパケットのことをいうものとする。以下、本発明の第3の実施形態について上記相違点を中心に説明する。
【0081】
図15は、本実施形態のノード10aの詳細構成を表した図である。
図15を参照すると、本実施形態のノード10aは、第1の実施形態のノード10の構成に加えて、転送処理部15内にパケット遅延部155が追加されている。
【0082】
パケット遅延部155は、上記のように設定専用パケット(Setup Packet)の後に、ユーザパケットの送信が行われる場合に、フロー設定情報処理部151がフローテーブル管理部12を介してフローテーブル13に処理規則(フローエントリ)の設定を完了する前に、ユーザパケットが受信された場合に当該ユーザパケットによるフローテーブル13の検索が行われないよう、パケットの入力を遅延させるために設置される。
【0083】
図16は、第3の実施形態のノード10aの動作を表したフローチャートである。
図13を用いて説明した第2の実施形態のノード10との相違点は、ステップS310のアクションの実行後、設定専用パケット(Setup Packet)を受信済みかつユーザパケットを送信済みであるか否かを確認し(ステップS311a)、条件を満たしていれば、処理を終了し(ステップS311aのYes)、条件を満たしていなければ、ステップS313で、制御装置(コントローラ)20からパケット出力指示(Packet−Out)の受信を待機する点である。
【0084】
以上のような本発明の第3の実施形態によれば、処理規則列に、より多くの処理規則(フローエントリ)を収容することが可能になる。
【0085】
なお必要に応じて、上述した処理規則列に、経路上のいくつかのノード10のための処理規則(フローエントリ)を収容せず、これらのいくつかのノードが、それぞれ制御装置(コントローラ)20に対し問い合わせ(処理規則列の作成要求)を行う構成を採用してもよい。例えば、ある経路の上流側のノードは、第3の実施形態の設定専用パケット(Setup Packet)にて処理規則(フローエントリ)の設定を行うこととし、下流側のノードは、個々に処理規則(フローエントリ)の作成と送信を要求する構成や、第1、第2の実施形態のユーザパケットに付加された処理規則列により処理規則(フローエントリ)を設定する構成等も採用可能である。
【0086】
[第4の実施形態]
続いて、受信したパケットに含まれる処理規則列の正当性を検証する機能を追加した本発明の第4の実施形態について説明する。以下、本実施形態の基本的な構成は、第3の実施形態と同一であるので、以下、その相違点を中心に説明する。
【0087】
図17は、本発明の第4の実施形態のノード10bの構成を表したブロック図である。
図15に示した第3の実施形態のノード10aとの相違点は、転送処理部15のフロー設定情報抽出部152と、フロー設定情報処理部151との間に、予め定められた制御装置(コントローラ)20aの公開鍵を用いて、処理規則列に付された署名を検証し、正当性が確認できないパケットを廃棄する署名検証部156が追加されている点である。
【0088】
図18は、本発明の第4の実施形態の制御装置(コントローラ)20aの構成を表したブロック図である。
図3に示した第1、第2の実施形態の制御装置(コントローラ)20との相違点はメッセージ生成部252内に、制御装置(コントローラ)20aの秘密鍵を用いて、処理規則列の署名を作成する署名生成部254が追加されている点である。
【0089】
図19は、本実施形態の処理規則列ヘッダ33aの構成例を示す図である。上記した第1、第3の実施形態の処理規則列ヘッダ33との相違点は、ヘッダの末尾に
図19の署名対象範囲で示された各フィールドの情報を用いて作成された署名(Signature)が追加されている点である。
【0090】
図20は、上記制御装置(コントローラ)20aの動作を表したフローチャートである。上記第3の実施形態の制御装置(コントローラ)20の動作(
図14のシーケンス図参照)との相違点はフローエントリ集約後、署名を作成する処理(ステップS407)が追加されている点である。
【0091】
図21は、第4の実施形態のノード10bの動作を表したフローチャートである。
図16を用いて説明した設定専用パケット(Setup Packet)とユーザパケットとが別々に送信される場合の動作とほぼ同一であるが、処理規則列が含まれている場合に、署名検証を行い(ステップS504)、正当性が確認できなければ、当該パケットを廃棄する処理(ステップS505)が追加されている点である。
【0092】
以上のような本発明の第4の実施形態によれば、不正な処理規則列により処理規則(フローエントリ)が設定されてしまう事態を回避することが可能になり、よりセキュアなネットワークを構築することが可能になる。
【0093】
なお、上記した実施形態では、非対称鍵を用いるものとして説明したが、共通鍵を用いても良いし、その場合において、適宜、鍵を更新する機能を追加するなどの変形実施も可能である。
【0094】
また、上記した実施形態では、処理規則列全体の署名(Signature)を作成・付加するものとして説明したが、個々の処理規則設定情報毎に署名を付加する構成や、各ノードがパケット受信の都度、署名を追加ないし削除していくといった変形実施も可能である。
【0095】
[第5の実施形態]
続いて、処理規則列が含まれるパケットが経路の途中で何らかの事由により廃棄されてしまうパケットロスの問題を考慮した本発明の第5の実施形態について説明する。本実施形態は、第1〜第4の実施形態と同一の構成にて実現可能であるので、以下、その概要を説明する。
【0096】
本実施形態では、
図22に示すとおり、制御装置(コントローラ)が、ある経路の先頭ホップ側と、最終ホップ側の双方から、同一のノードに設定すべき処理規則を含む処理規則列を付加したパケットを送信し、双方向から、順次処理規則(フローエントリ)の設定を行っていくものである。
【0097】
図23は、本実施形態の一連の流れを表したシーケンス図である。
図23に示すとおり、またず、ノード#1が、ホスト(A)から、ユーザパケットを受信すると(ST11)、ノード#1は、制御装置(コントローラ)20に対して、問い合わせ(処理規則列の作成要求;Packet−In)を発行する(ST12)。
【0098】
前記問い合わせ(処理規則列の作成要求;Packet−In)を受けた制御装置(コントローラ)20は、
図12のフローチャートに従って、経路および処理規則列を作成し、経路の先頭ホップのノード#1と、最終ホップのノード#3とに対して、それぞれ、設定専用パケット(SetupPacket)をパケット出力指示(Packet−Out)に内包し送信する(ST13、ST14)。なお、
図22および
図23には図示しないが、制御装置は、設定専用パケット(SetupPacket)をデータプレーン経由でEthernet(登録商標)フレームの形でノード#1とノード#3に対して送信することも可能である。
【0099】
前記設定専用パケット(SetupPacket)を受信したノード#1およびノード#3はそれぞれ処理規則列から自らが設定すべき処理規則を抽出・設定し(ST15、ST16)、処理規則列に定められた次ホップに転送する(ST17、ST19)。
【0100】
設定専用パケット(SetupPacket)を受信したノード#2は、設定専用パケット(SetupPacket)に含まれる処理規則列の中から、自装置が設定すべき処理規則(フローエントリ)を取り出し、フローテーブル13に設定するとともに(ST18)、設定専用パケット(SetupPacket)を次ホップに送信する(ST20、ST21)。なお、
図23の例では、ノード#1からの設定専用パケット(SetupPacket)が先に受信されたため、ノード#3からの設定専用パケット(SetupPacket)による処理は省略されている。
【0101】
その後、制御装置(コントローラ)20が、ノード#1に対して、パケット出力指示(Packet−Out)を送信すると(ST22)、ユーザパケットはノード#1、ノード#2、ノード#3を経てホスト(B)に転送される(ST23〜ST25)。
【0102】
以上のように本実施形態によれば、複数の経路を用いて重複する処理規則(フローエントリ)を含んだ設定専用パケット(SetupPacket)を送信するため、パケットロスに強くなり、経路上のノードに、より確実に処理規則(フローエントリ)を設定させることができる。
【0103】
なお、上記した実施形態では、双方向から重複区間が生じるように、処理規則列を含んだパケットを送信するものとして説明したが、同一方向から時間を空けたり、パケット投入点を変えて、処理規則列を含んだパケットを送信するものとしてもよい。
【0104】
また、第3の実施形態で述べたように経路上のノード数が多い場合には、重複区間が少なくなるように処理規則列を含んだパケットを送信することで、より多くのノードに処理規則(フローエントリ)を設定することが可能になる。
【0105】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。上記した実施形態の制御装置(コントローラ)20、20aは、専用のサーバとして実現することもでき、ノード10、10a、10bとしては、上記オープンフロースイッチのほか、IP網におけるルータ、MPLS(Multi−Protocol Label Switching)網におけるMPLSスイッチにて実現することができる。その他、サーバがネットワーク内のノードを集中管理するようなネットワークであれば、本発明を適用することが可能である。
【0106】
また、上記した各実施形態では、処理規則列中の各処理規則設定情報にノード識別子(DPID)を含めることで、各ノードが自装置に設定すべき処理規則(フローエントリ)を特定するものとして説明したが、処理規則列の先頭または末尾の処理規則設定情報から使用していき、処理規則設定情報が使用済みであることを示す使用済みフラグを立てていく方法や、設定に使われた処理規則設定情報を各ノードが処理規則列中から順次削除していく方法も採用可能である。
【0107】
なお、上記の非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【0108】
また、上記した各実施形態では、最終ホップのノードが処理規則列ヘッダを除去するものとして説明したが、ホスト側で除去する構成も採用可能である。
【0109】
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点による通信システム参照)
[第2の形態]
第1の形態において、
前記処理規則列は、データ転送ネットワークの複数のノードがそれぞれの処理規則記憶部に設定すべき処理規則で構成されている通信システム。
[第3の形態]
第1、第2の形態において、前記各ノードは、前記処理規則列中の各処理規則に対応付けられたノード識別子に基づいて、自装置が設定すべき処理規則を特定する通信システム。
[第4の形態]
第1〜第3のいずれか一の形態において、前記各ノードは、前記処理規則列に添付された出力先情報に基づいて、前記処理規則列を含むパケットを転送する通信システム。
[第5の形態]
第1〜第4の形態のいずれか一の形態において、前記パケットには、最終ホップのノードの情報が含まれており、前記最終ホップのノードが前記処理規則列を削除または前記パケットの転送を停止する通信システム。
[第6の形態]
第2、第4、第5の形態のいずれか一の形態において、前記処理規則列中の処理規則は、前記パケットの転送経路上のノードの順番で並べられており、前記各ノードが、順次、自装置の処理規則記憶部に設定した処理規則の前記パケットからを削除または前記パケットの所定領域に当該処理規則が使用済みであることを書き込むことにより、各ノードがそれぞれ設定すべき処理規則を特定する通信システム。
[第7の形態]
第1〜第6の形態のいずれか一の形態において、前記処理規則列は、追加ヘッダの形態でユーザパケットに付加されている通信システム。
[第8の形態]
第1〜第7の形態のいずれか一の形態において、前記パケットには、前記処理規則列または個々の処理規則の正当性を示す電子署名が付加されており、前記各ノードは、前記処理規則列または個々の処理規則の電子署名の正当性を検証し、前記正当性が確認された場合に前記処理規則の設定を行う通信システム。
[第9の形態]
第1〜第8の形態のいずれか一の形態において、前記処理規則列を含むパケットの起点となるノードに対し、前記処理規則列または前記処理規則列を含むパケットを作成して送信する制御装置を含む通信システム。
[第10の形態]
第1〜第9の形態のいずれか一の形態において、前記制御装置は、前記パケットの経路上の複数のノードに対し、同一のノードに設定すべき処理規則を含む処理規則列、または、前記同一ノードに設定すべき処理規則列を含むパケット、を作成して送信する通信システム。
[第11の形態]
(上記第2の視点によるノード参照)
[第12の形態]
第11の形態において、
前記処理規則列は、データ転送ネットワークの複数のノードがそれぞれの処理規則記憶部に設定すべき処理規則で構成されているノード。
[第13の形態]
第11、第12の形態において、前記処理規則列中の各処理規則に対応付けられたノード識別子に基づいて、自装置が設定すべき処理規則を特定するノード。
[第14の形態]
第11〜第13のいずれか一の形態において、前記処理規則列に添付された出力先情報に基づいて、前記処理規則列を含むパケットを転送するノード。
[第15の形態]
第11〜第14の形態のいずれか一の形態において、前記パケットに含まれる最終ホップのノードの情報が、自装置が最終ホップのノードであることを示す場合、前記処理規則列を削除または前記パケットの転送を停止するノード。
[第16の形態]
第12、第14、第15の形態のいずれか一の形態において、前記処理規則列中の処理規則は、前記パケットの転送経路上のノードの順番で並べられており、前記各ノードが、順次、前記処理規則列からの処理規則の削除または前記パケットの所定領域に当該処理規則が使用済みであることを書き込むことにより、各ノードがそれぞれ設定すべき処理規則を特定するノード。
[第17の形態]
第11〜第16の形態のいずれか一の形態において、ユーザパケットに付加された追加ヘッダに格納されている処理規則列から、自装置の処理規則記憶部に設定すべき処理規則を取り出して設定するノード。
[第18の形態]
第11〜第17の形態のいずれか一の形態において、前記パケットに付加された前記処理規則列または自装置に設定すべき処理規則の電子署名の正当性を検証し、前記正当性が確認された場合に前記処理規則の設定を行うノード。
[第19の形態]
(上記第3の視点による制御サーバ参照)
[第20の形態]
第19の形態において、データ転送ネットワークの複数のノードがそれぞれの処理規則記憶部に設定すべき処理規則で構成した処理規則列を作成する制御サーバ。
[第21の形態]
第19、第20の形態において、前記処理規則列として、処理規則と当該処理規則を設定すべきノードのノード識別子とを対応付けたパケットを送信する制御サーバ。
[第22の形態]
第19〜第21のいずれか一の形態において、前記処理規則列に、前記処理規則列を含むパケットの転送先を示す出力先情報を添付する制御サーバ。
[第23の形態]
第19〜第22のいずれか一の形態において、最終ホップのノードに、前記処理規則列を削除または前記パケットの転送を停止させるための最終ホップのノードの情報を含んだパケットを送信する制御サーバ。
[第24の形態]
第20、第22、第23のいずれか一の形態において、前記パケットの転送経路上のノードの順番で処理規則を並べた処理規則列を作成する制御サーバ。
[第25の形態]
第19〜第24のいずれか一の形態において、前記処理規則列を追加ヘッダの形態でユーザパケットに付加する制御サーバ。
[第26の形態]
第19〜第25のいずれか一の形態において、前記処理規則列または個々の処理規則の正当性を示す電子署名を付加したパケットを送信する制御サーバ。
[第27の形態]
第19〜第26のいずれか一の形態において、前記パケットの経路上の複数のノードに対し、同一のノードに設定すべき処理規則を含む処理規則列、または、前記同一ノードに設定すべき処理規則列を含むパケット、を作成して送信する制御サーバ。
[第28の形態]
(上記第4の視点による通信方法参照)
[第29の形態]
(上記第5の視点によるプログラム参照)
[第30の形態]
(上記第6の視点によるプログラム参照)