(57)【特許請求の範囲】
【請求項１】
パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置と、
前記パケット転送ルールの適用を前記パケット転送装置に指示することによりパケットの通信経路を制御する経路制御装置とを備え、
前記パケット転送装置は、
受信したパケットに対する処理内容を前記経路制御装置に問い合わせる処理内容問合せ手段を含み、
前記経路制御装置は、
前記パケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、前記パケットに応じて決定されるパケット転送ルールが適用されるパケット転送装置を、当該パケットに対する処理内容の問い合わせが初めてか否かに基づいて決定するパケット転送装置決定手段を含む
ことを特徴とする通信経路制御システム。
【請求項２】
パケット転送装置決定手段は、問い合わせを行ったパケット転送装置が、他の装置に対して通信を行う端末装置がデータパケットを送信する経路上の最初のパケット転送装置であるか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定する
請求項１記載の通信経路制御システム。
【請求項３】
経路制御装置は、パケット転送装置に設定しているパケット転送ルールを記憶するパケット転送ルール記憶手段を含み、
パケット転送装置決定手段は、処理内容の問い合わせが行われたパケットに対応するパケット転送ルールが前記パケット転送ルール記憶手段に記憶されているか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定する
請求項１記載の通信経路制御システム。
【請求項４】
経路制御装置は、パケット転送装置が他の装置と接続する接続形態を示す情報であるトポロジを記憶するトポロジ記憶手段を含み、
パケット転送装置決定手段は、パケットの処理内容について問い合わせを行ったパケット転送装置が経路上の最初のパケット転送装置であるか否かを、前記トポロジと前記パケットに含まれる情報のうち問い合わせが行われたパケット転送装置の識別子および当該問い合わせを受信した受信ポートの識別子とに基づいて判断し、当該判断結果に基づいてパケット転送ルールを適用させるパケット転送装置を決定する
請求項２記載の通信経路制御システム。
【請求項５】
パケット転送装置決定手段は、パケットに対する処理内容の問い合わせが初めての場合に、他の装置に対して通信を行う端末装置により送信されるデータパケットの経路上における全てのパケット転送装置にパケット転送ルールを適用させると決定し、前記問い合わせが初めてではない場合に、当該問い合わせを行ったパケット転送装置に対してパケット転送ルールを適用させると決定する
請求項１から請求項４のうちのいずれか１項に記載の通信経路制御システム。
【請求項６】
パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、前記パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、当該パケットに対する処理内容の問い合わせが初めてか否かに基づいて決定するパケット転送装置決定手段を備えた
ことを特徴とする経路制御装置。
【請求項７】
パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置が、パケットの通信経路を制御する経路制御装置へ受信したパケットに対する処理内容を問い合わせ、
前記経路制御装置が、前記パケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、前記パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、当該パケットに対する処理内容の問い合わせが初めてか否かに基づいて決定する
ことを特徴とする通信経路制御方法。
【請求項８】
経路制御装置が、問い合わせを受けたパケット転送装置が他の装置に対して通信を行う端末装置により送信されるデータパケットの経路上における最初のパケット転送装置であるか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定する
請求項７記載の通信経路制御方法。
【請求項９】
経路制御装置が、パケット転送装置に設定しているパケット転送ルールを記憶するパケット転送ルール記憶手段に処理内容の問い合わせが行われたパケットに対応するパケット転送ルールが記憶されているか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定する
請求項７記載の通信経路制御方法。
【請求項１０】
コンピュータに、
パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、前記パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、当該パケットに対する処理内容の問い合わせが初めてか否かに基づいて決定するパケット転送装置決定処理
を実行させるための経路制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信経路の制御を行う通信経路制御システム、経路制御装置、通信経路制御方法および経路制御プログラムに関する。
【背景技術】
【０００２】
近年、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている（非特許文献１，２参照）。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化等を行う技術である。
【０００３】
オープンフローを用いて通信が行われるネットワーク（以下、オープンフローネットワークと記す。）では、オープンフロースイッチおよびオープンフローコントローラが用いられる。オープンフロースイッチは、パケット転送装置として機能する。また、オープンフローコントローラは、経路制御装置として機能する。
【０００４】
オープンフロースイッチは、オープンフローコントローラとの通信に用いられるセキュアチャネルを備え、オープンフローコントローラからセキュアチャネルを介して適宜追加または書き換えの指示が行われるフローテーブルの内容に従って動作する。
【０００５】
図１５は、フローテーブルの内容を示す説明図である。フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール（ヘッダフィールド）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、パケットに対する処理内容を定義したアクション（Ａｃｔｉｏｎｓ）とを含む組が定義される。
【０００６】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから受信パケットのヘッダ情報に適合するマッチングルールを含むエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報（Ｃｏｕｎｔｅｒｓ）を更新する。また、この場合、オープンフロースイッチは、受信パケットに対して、該当するエントリのアクションフィールドに定義された処理内容（指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。
【０００７】
一方、フローテーブルを検索した結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対して受信パケットを転送する。このようにして、オープンフロースイッチは、そのパケットに対する処理内容を問い合わせる。例えば、オープンフロースイッチは、オープンフローコントローラに対して、受信パケットの送信元および送信先に基づいたパケットの経路の決定を依頼し、決定されたエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを処理規則として用いることでパケットの転送を行う。
【０００８】
なお、オープンフローコントローラは、パケットを処理するたびに更新されるフロー統計情報（Ｃｏｕｎｔｅｒｓ）を収集する機能も備えている。この機能のことを、可視化機能とも言う。
【０００９】
また、特許文献１には、コントローラによって制御されるフローテーブルに基づいてスイッチがパケットを転送するシステムが記載されている。特許文献１に記載されたシステムは、スイッチがフローテーブルに存在しないパケットを受け取るとそのパケットをコントローラに転送する。そして、スイッチがフローテーブルに存在するパケットを受け取ると、上記システムは、そのフローテーブルの内容に基づいてパケットを転送する。
【００１０】
図１６は、オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。以下、図１６を用いて、特許文献１、非特許文献１，２に記載されたネットワークにおけるパケットの流れを説明する。
【００１１】
まず、外部端末３１０が外部端末３２０宛てに、最初のデータパケットを送信すると、このデータパケットは、外部端末３２０に接続されたパケット転送装置２１０に送信される（ステップＳ９０１）。パケット転送装置２１０は、パケットを受信すると、フローテーブルから、そのパケットのヘッダ情報に適合するマッチングルール（照合規則、マッチングキーと記すこともある。）を含むエントリを検索する。
【００１２】
しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット転送装置２１０は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フローを検出したことを示す制御メッセージ（以下、新規フロー検出通知メッセージ、Ｐａｃｋｅｔ−Ｉｎメッセージと記すこともある。）を送信する（ステップＳ９０２）。
【００１３】
このＰａｃｋｅｔ−Ｉｎメッセージには、フローの識別に必要な情報（例えば、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【００１４】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置（コントローラ）１００に送信することを想定している。なお、パケット転送装置２１０は、受信したパケットそのものを経路制御装置（コントローラ）１００に送信する場合もある。
【００１５】
経路制御装置（コントローラ）１００は、Ｐａｃｋｅｔ−Ｉｎメッセージを受信すると、受信したメッセージから新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、図１５に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。
【００１６】
さらに、経路制御装置（コントローラ）１００は、受信したメッセージに基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部端末３２０へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【００１７】
次に、経路制御装置（コントローラ）１００は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを、各パケット転送装置２１０〜２３０ごとに作成する。そして、経路制御装置（コントローラ）１００は、作成したエントリを、ＦｌｏｗＭｏｄメッセージを用いて、各パケット転送装置２１０〜２３０に通知する（ステップＳ９０３）。ここで、ＦｌｏｗＭｏｄメッセージとは、コントローラがスイッチに対してフローの登録や変更、削除を要求する際に用いられるメッセージである。各パケット転送装置２１０〜２３０は、ＦｌｏｗＭｏｄメッセージを受信すると、フローテーブルに受信したエントリを設定する。
【００１８】
エントリの設定が完了すると、パケット転送装置２１０は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置２２０に転送する（ステップＳ９０４−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０、パケット転送装置２３０の順で転送され、外部端末３２０に届くことになる（ステップＳ９０４−２、ステップＳ９０４−３）。
【００１９】
以後、外部端末３１０から外部端末３２０宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順に転送され（ステップＳ９０５−１〜Ｓ９０５−４）、外部端末３２０に到着する。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】再表ＷＯ２００８／０９５０１０号
【非特許文献】
【００２１】
【非特許文献１】Nick McKeown、外７名、“OpenFlow: Enabling Innovation in Campus Networks”、［online］、［平成２２年７月６日検索］、インターネット〈URL：http://www.openflowswitch.org/documents/openflow-wp-latest.pdf〉、２００８年３月１４日
【非特許文献２】“OpenFlow Switch Specification” Version 1.0.0. (Wire Protocol 0x01) ［平成２２年７月６日検索］、インターネット〈URL：http://www.openflowswitch.org/documents/openflow-spec-v1.0.0.pdf〉、２００９年１２月３１日
【発明の概要】
【発明が解決しようとする課題】
【００２２】
上述の通り、オープンフローネットワークでは、オープンフロースイッチがデータパケットを受信する。そして、そのパケットに対するエントリがフローテーブルに見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに受信パケットを転送する。このようにして、オープンフロースイッチは、データパケットに対するアクションを問い合わせる。なお、この問い合わせのことを、Ｐａｃｋｅｔ−Ｉｎと記すこともある。
【００２３】
そして、オープンフローコントローラは、受信パケットの送信元および送信先を示す情報に基づいて、そのパケットに対する経路を決定する。オープンフローコントローラは、決定した経路情報（以下、ＦｌｏｗＭｏｄと記すこともある。）を、ＴＣＰ（Transmission Control Protocol ）やＳＳＬ（Secure Sockets Layer）などで構築されるセキュアチャネルを用いて、該当する経路上の全てのオープンフロースイッチに送信する。
【００２４】
すなわち、オープンフローネットワークは、オープンフローコントローラとオープンフロースイッチが制御メッセージをやり取り（送受信）することでデータパケットを宛先に到達させるネットワークであると言える。そのため、フローが増加すると、オープンフローコントローラとオープンフロースイッチとの間で送受信される制御メッセージも増加するため、ネットワークの帯域を圧迫する可能性がある。
【００２５】
図１７は、オープンフローネットワークにおけるパケットの流れの他の例を示す説明図である。経路制御装置１００がパケット転送装置からＰａｃｋｅｔ−Ｉｎメッセージを受信し、転送経路の計算を行うステップＳ２０１−１〜ステップＳ２０２までの処理は図１６に示すステップＳ９０１〜ステップＳ９０２の処理と同様である。
【００２６】
経路制御装置（コントローラ）１００は、転送経路の計算が完了すると、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを、各パケット転送装置２１０〜２３０ごとに作成する。そして、経路制御装置（コントローラ）１００は、作成したエントリを、ＦｌｏｗＭｏｄメッセージを用いて、各パケット転送装置２１０〜２３０に通知する（ステップＳ２０３−１、ステップＳ２０３−２、ステップＳ２０３−３）。
【００２７】
ここで、各パケット転送装置２１０〜２３０に作成されたエントリを通知する際、パケット転送装置２１０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ２０３−１で送信したＦｌｏｗＭｏｄメッセージ）と、パケット転送装置２３０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ２０３−３で送信したＦｌｏｗＭｏｄメッセージ）が各パケット転送装置に到着するものとする。一方、パケット転送装置２２０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ２０３−２で送信したＦｌｏｗＭｏｄメッセージ）がネットワークの輻輳によるパケットロスや遅延等によりパケット転送装置２２０に到着しなかったとする。
【００２８】
パケット転送装置２１０は、ＦｌｏｗＭｏｄメッセージを受信して、フローテーブルへのエントリの設定を完了すると、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置２２０に転送する（ステップＳ２０１−２）。パケット転送装置２２０は、パケット転送装置２１０からデータパケットを受信すると、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、パケット転送装置２２０へのＦｌｏｗＭｏｄメッセージは到着しておらず、該当するエントリはフローテーブルに存在しない。そこで、パケット転送装置２２０は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ２０４）。
【００２９】
経路制御装置（コントローラ）１００は、Ｐａｃｋｅｔ−Ｉｎメッセージを受信すると、受信した情報に基づいて、新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、図１５に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。さらに、経路制御装置（コントローラ）１００は、受信した情報に基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部装置３２０へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置２２０からパケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【００３０】
次に、経路制御装置（コントローラ）１００は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを各パケット転送装置２２０，２３０ごとに作成する。そして、経路制御装置（コントローラ）１００は、作成したエントリを、ＦｌｏｗＭｏｄメッセージを用いて、各パケット転送装置２２０，２３０に通知する（ステップＳ２０５−１、ステップＳ２０５−２）。
【００３１】
パケット転送装置２２０，２３０は、ＦｌｏｗＭｏｄメッセージを問題なく受信すると、フローテーブルに受信したエントリを設定する。このようにエントリが設定されることで、外部端末３２０がデータパケットを受信できる。
【００３２】
しかし、パケット転送装置２３０がステップＳ２０３−３で受信したＦｌｏｗＭｏｄメッセージと、ステップＳ２０５−２で受信したＦｌｏｗＭｏｄメッセージとは、同じデータパケットに対するエントリであるため、同一内容のメッセージになる。つまり、パケット転送装置２３０は、経路制御装置１００から同一内容のメッセージを２度受信することになる。
【００３３】
このように重複した制御パケットが送受信されることは、ネットワークの使用効率を低下させる可能性がある。図１７および図１６に示す例では、外部端末３１０と外部端末３２０との間のパケット転送装置は３台である。しかし、外部端末間のパケット転送装置の台数が増加するに従って（すなわち、ホップ数が増加するに従って）、不要な制御パケットがさらに増大する可能性がある。このような送受信が行われた場合、ネットワークにインパクトを与え、ネットワークの使用効率を低下させるおそれがある。
【００３４】
そこで、本発明は、通信経路の制御に用いられるパケットの量を削減できる通信経路制御システム、経路制御装置、通信経路制御方法および経路制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００３５】
本発明による通信経路制御システムは、パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置と、パケット転送ルールの適用をパケット転送装置に指示することによりパケットの通信経路を制御する経路制御装置とを備え、パケット転送装置が、受信したパケットに対する処理内容を経路制御装置に問い合わせる処理内容問合せ手段を含み、経路制御装置が、パケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、そのパケットに対する処理内容の問い合わせが初めてか否かに基づいて決定するパケット転送装置決定手段を含むことを特徴とする。
【００３６】
本発明による経路制御装置は、パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、そのパケットに対する処理内容の問い合わせが初めてか否かに基づいて決定するパケット転送装置決定手段を備えたことを特徴とする。
【００３７】
本発明による通信経路制御方法は、パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置が、パケットの通信経路を制御する経路制御装置へ受信したパケットに対する処理内容を問い合わせ、経路制御装置が、パケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、そのパケットに対する処理内容の問い合わせが初めてか否かに基づいて決定することを特徴とする。
【００３８】
本発明による経路制御プログラムは、コンピュータに、パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、そのパケットに対する処理内容の問い合わせが初めてか否かに基づいて決定するパケット転送装置決定処理を実行させることを特徴とする。
【発明の効果】
【００３９】
本発明によれば、通信経路の制御に用いられるパケットの量を削減できる。
【図面の簡単な説明】
【００４０】
【図１】本発明の第１の実施形態における通信経路制御システムの例を示すブロック図である。
【図２】パケット転送装置の例を示すブロック図である。
【図３】第１の実施形態における経路制御装置の例を示すブロック図である。
【図４】経路制御装置の動作の例を示すフローチャートである。
【図５】第２の実施形態における経路制御装置の例を示すブロック図である。
【図６】オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。
【図７】本発明の第１の実施例における通信経路制御システムの例を示す説明図である。
【図８】経路制御装置の動作の例を示すフローチャートである。
【図９】処理規則を通知するパケット転送装置を決定する動作の例を示す説明図である。
【図１０】ネットワークトポロジ情報の例を示す説明図である。
【図１１】オープンフローネットワークにおけるパケットの流れの例を示す説明図である。
【図１２】パケット転送装置を決定する動作の例を示す説明図である。
【図１３】本発明による通信経路制御システムの最小構成の例を示すブロック図である。
【図１４】本発明による経路制御装置の最小構成の例を示すブロック図である。
【図１５】フローテーブルの内容を示す説明図である。
【図１６】オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。
【図１７】オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。
【発明を実施するための形態】
【００４１】
以下、本発明の実施形態を図面を参照して説明する。
【００４２】
実施形態１．
図１は、本発明の第１の実施形態における通信経路制御システムの例を示すブロック図である。本実施形態における通信経路制御システムは、経路制御装置１００と、パケット転送装置２１０〜２３０と、外部端末３１０〜３２０とを備えている。ただし、パケット転送装置および外部端末の台数は、図１に例示する台数に限定されない。パケット転送装置は、１台または２台であってもよく、４台以上であってもよい。また、外部端末の台数は３台以上であってもよい。
【００４３】
パケット転送装置２１０〜２３０は、パケットを受信した際に、所定のルールに基づいてそのパケットを転送する装置である。なお、このルールのことを、パケット転送ルールと記すこともある。パケット転送装置は、例えば、ルータやスイッチなどにより実現される。
【００４４】
図２は、パケット転送装置２１０の例を示すブロック図である。なお、パケット転送装置２２０〜２３０もパケット転送装置２１０と同様の構成であるため、説明を省略する。パケット転送装置２１０は、制御メッセージ送受信部２１１と、フローテーブル記憶部２１２と、パケット処理部２１３とを備えている。
【００４５】
制御メッセージ送受信部２１１は、経路制御装置１００と通信する機能を備えている。すなわち、制御メッセージ送受信部２１１は、経路制御装置１００と制御メッセージの送受信を行う。
【００４６】
フローテーブル記憶部２１２は、フローテーブルを記憶する。フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール（ヘッダフィールド）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、パケットに対する処理内容を定義したアクション（Ａｃｔｉｏｎｓ）とを含む組が定義される。以下、この組のことを処理規則（フローエントリ）と記すこともある。フローテーブルには、例えば、図１５に例示する情報が含まれる。
【００４７】
パケット処理部２１３は、フローテーブルに記憶されたアクションに基づいて、受信したパケットを処理する。具体的には、パケット転送装置２１０がパケットを受信すると、パケット処理部２１３は、フローテーブル記憶部２１２に記憶されたフローテーブルから、受信パケットに適合する照合規則（マッチングキー）を含む処理規則（フローエントリ）を検索する。検索の結果、受信パケットに適合するフローエントリが見つかった場合、パケット処理部２１３は、受信パケットに対して、該当するフローエントリのアクションフィールドに定義された処理内容（例えば、指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。
【００４８】
一方、受信パケットに適合するエントリがフローテーブルに見つからなかった場合、パケット処理部２１３は、経路制御装置１００に対して、新規フローを検出したことを示す制御メッセージ（すなわち、新規フロー検出通知メッセージ）を送信し、そのパケットに対する処理内容の問い合わせを行う。
【００４９】
経路制御装置１００は、自身が管理するネットワークの経路制御を行う装置である。具体的には、経路制御装置１００は、パケット転送装置にパケット転送ルールの適用を指示することにより、パケットの通信経路を制御する装置である。本実施形態では、経路制御装置１００は、パケット転送装置２１０〜２３０を管理対象としている。図３は、経路制御装置１００の例を示すブロック図である。経路制御装置１００は、制御メッセージ送信先決定部１０１と、トポロジ管理部１０２と、経路・アクション計算部１０３と、パケット転送装置通信部１０４と、制御メッセージ処理部１０５と、端末位置記憶部１０６とを備えている。
【００５０】
パケット転送装置通信部１０４は、経路制御装置１００がパケット転送装置２１０〜２３０と通信を行う機能を備えている。すなわち、パケット転送装置通信部１０４は、パケット転送装置２１０〜２３０とパケットの送受信を行う。
【００５１】
トポロジ管理部１０２は、パケット転送装置通信部１０４を介して収集されたパケット転送装置２１０〜２３０の接続関係に基づいてネットワークトポロジ情報を作成し、作成したトポロジ情報を記憶する。なお、トポロジ情報とは、パケット転送装置が他の装置と接続する接続形態を示す情報であると言える。トポロジ管理部１０２は、例えば、パケット転送装置２１０〜２３０が保持している経路表の情報を収集し、その経路表に基づいてネットワークトポロジ情報を作成する。ただし、ネットワークトポロジ情報の作成方法は、これらの方法に限定されない。また、トポロジ管理部１０２は、他の経路制御装置１００からネットワークトポロジ情報を受信し、そのネットワークトポロジ情報を記憶するようにしてもよい。
【００５２】
端末位置記憶部１０６は、外部端末の位置情報を記憶する。端末位置記憶部１０６には、例えば、ＩＰアドレスなどの位置情報をデータベースとして記憶しておく。端末位置記憶部１０６には、予め管理者等が外部端末の位置情報を記憶させておいてもよく、経路制御装置１００が他の経路制御装置から位置情報を受信するたびに、その位置情報を端末位置記憶部１０６に記憶させてもよい。端末位置記憶部１０６は、例えば、磁気ディスク等により実現される。
【００５３】
経路・アクション計算部１０３は、処理規則（フローエントリ）として、パケット転送装置２１０〜２３０に実行させるアクションおよびパケットの転送経路を計算する。具体的には、経路・アクション計算部１０３は、端末位置記憶部１０６に記憶された位置情報から送信端末と宛先端末の位置を特定し、トポロジ管理部１０２が管理するネットワークトポロジ情報をもとに、パケットの転送経路を計算する。また、経路・アクション計算部１０３は、そのパケットに対して転送経路上のパケット転送装置に実行させる処理（アクション）を決定する。アクションの決定方法には、任意の方法を用いることができる。経路・アクション計算部１０３は、例えば、転送経路が計算できた場合に、パケットを転送するというアクションを実行させると決定してもよい。また、経路・アクション計算部１０３は、予め定めた種類のパケットに対しては、廃棄する、所定の装置に転送するなど、所定のアクションを実行させると決定するようにしてもよい。
【００５４】
制御メッセージ送信先決定部１０１は、経路・アクション計算部１０３が計算した経路上のパケット転送装置の中から、処理規則（フローエントリ）を通知すべきパケット転送装置を決定する。具体的には、制御メッセージ送信先決定部１０１は、パケット転送装置から受信したパケットに対する処理内容の問い合わせが初めてか否かに基づいて、フローエントリを通知する（適用させる）パケット転送装置を決定する。
【００５５】
制御メッセージ処理部１０５は、パケット転送装置２１０〜２３０から受信した制御メッセージを解析して、経路制御装置１００内の該当する処理手段に制御メッセージを引き渡す。例えば、パケット転送装置２１０〜２３０から新規フロー検出通知メッセージを受信した場合、制御メッセージ処理部１０５は、新しい処理規則（フローエントリ）の作成を経路・アクション計算部１０３に依頼する。
【００５６】
制御メッセージ送信先決定部１０１と、トポロジ管理部１０２と、経路・アクション計算部１０３と、パケット転送装置通信部１０４と、制御メッセージ処理部１０５とは、プログラム（経路制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。例えば、プログラムは、経路制御装置１００の記憶部（図示せず）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、制御メッセージ送信先決定部１０１、トポロジ管理部１０２、経路・アクション計算部１０３、パケット転送装置通信部１０４および制御メッセージ処理部１０５として動作してもよい。また、制御メッセージ送信先決定部１０１と、トポロジ管理部１０２と、経路・アクション計算部１０３と、パケット転送装置通信部１０４と、制御メッセージ処理部１０５とは、それぞれが専用のハードウェアで実現されていてもよい。
【００５７】
次に、本実施形態における通信経路制御システムの動作を図１６を用いて説明する。
【００５８】
外部端末３１０がデータパケットをパケット転送装置２１０に送信し、パケット転送装置２１０がそのパケットを受信すると（ステップＳ９０１）、パケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置１００に対して、新規フロー検出通知メッセージを送信する（ステップＳ９０２）。
【００５９】
この新規フロー検出通知メッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【００６０】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定している。ただし、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【００６１】
ここで、経路制御装置１００が新規フロー検出通知メッセージを受信したときの動作を説明する。図４は、経路制御装置の動作の例を示すフローチャートである。
【００６２】
経路制御装置１００がパケット転送装置２１０から新規フロー検出通知メッセージを受信すると（図４におけるステップＳ１５０１）、経路・アクション計算部１０３は、該当パケットの経路を計算し、その経路上に存在する各パケット転送装置のアクションを決定する（ステップＳ１５０２）。次に、制御メッセージ送信先決定部１０１は、経路上に存在するパケット転送装置の中から、アクションの内容を含む処理規則を通知するパケット転送装置を宛先として決定する（ステップＳ１５０３）。
【００６３】
具体的には、制御メッセージ送信先決定部１０１は、新規フロー検出通知メッセージを受信した際、その通知メッセージを送信したパケット転送装置が外部端末からみて最初のパケット転送装置であるか否かを判定する。制御メッセージ送信先決定部１０１は、例えば、ネットワークトポロジ情報を参照し、新規フロー検出通知メッセージに含まれるパケット転送装置の識別子と、そのパケット転送装置がデータパケットを受信したポートのポート番号とをもとに、そのデータパケットをパケット転送装置に送信する装置が、外部端末であるか否かを決定してもよい。
【００６４】
新規フロー検出通知メッセージを送信したパケット転送装置がデータパケットの送信端末からみて最初のパケット転送装置の場合、制御メッセージ送信先決定部１０１は、経路・アクション計算部１０３が計算した経路上の全パケット転送装置に対して、処理規則を通知すると決定する。一方、その装置が最初のパケット転送装置でない場合、制御メッセージ送信先決定部１０１は、新規フロー検出通知メッセージを送信したパケット転送装置に対してのみ処理規則を通知すると決定する。そして、制御メッセージ送信先決定部１０１は、決定した通知先に処理規則を送信する（ステップＳ１５０４）。
【００６５】
各パケット転送装置２１０〜２３０が経路制御装置１００から処理規則を受信すると、制御メッセージ送受信部２１１は、フローテーブルに受信したエントリを設定する。そして、パケット処理部２１３は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置２２０に転送する（図１６におけるステップＳ９０４−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０，２３０の順で転送され、外部端末３２０に届くことになる（ステップＳ９０４−２、ステップＳ９０４−３）。
【００６６】
以上のように、本実施形態によれば、パケット転送装置の制御メッセージ送受信部２１１が、受信したパケットに対する処理内容を経路制御装置１００に問い合わせる。そして、経路制御装置１００の制御メッセージ送信先決定部１０１が、パケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、そのパケットに対する処理内容の問い合わせが初めてか否かに基づいて決定する。
【００６７】
具体的には、制御メッセージ送信先決定部１０１は、問い合わせを行ったパケット転送装置がパケットを転送する経路上の最初のパケット転送装置であるか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定する。このような構成により、通信経路の制御に用いられるパケットの量を削減できる。すなわち、オープンフローコントローラからオープンフロースイッチへの冗長な制御パケットの送信を回避できるため、ネットワーク使用効率の向上、オープンフローコントローラでの制御パケット送信負荷の軽減、および、オープンフロースイッチでの制御パケットの処理負荷の軽減が期待できる。
【００６８】
実施形態２．
次に、第２の実施形態における通信経路制御システムについて説明する。第２の実施形態における通信経路制御システムも、図１に例示するように、経路制御装置１００と、パケット転送装置２１０〜２３０と、外部端末３１０〜３２０とを備えている。
【００６９】
経路制御装置１００は、第１の実施形態と同様、自身が管理するネットワークの経路制御を行う装置である。本実施の形態では、パケット転送装置２１０〜２３０を管理対象としている。ただし、第２の実施形態における経路制御装置１００は、第１の実施形態における経路制御装置１００に対して、機能をさらに追加した装置である。
【００７０】
図５は、第２の実施形態における経路制御装置１００の例を示すブロック図である。第２の実施形態における経路制御装置１００は、制御メッセージ送信先決定部１０１と、トポロジ管理部１０２と、経路・アクション計算部１０３と、パケット転送装置通信部１０４と、制御メッセージ処理部１０５と、端末位置記憶部１０６と、フローエントリ記憶部１０７と、フローエントリ管理部１０８とを備えている。
【００７１】
すなわち、第２の実施形態における経路制御装置１００は、フローエントリ記憶部１０７とフローエントリ管理部１０８の機能が追加されている点において、第１の実施形態における経路制御装置１００と異なる。
【００７２】
パケット転送装置通信部１０４は、経路制御装置１００がパケット転送装置２１０〜２３０と通信を行う機能を備えている。
【００７３】
トポロジ管理部１０２は、パケット転送装置通信部１０４を介して収集されたパケット転送装置２１０〜２３０の接続関係に基づいてネットワークトポロジ情報を作成し、作成した情報を記憶する。なお、トポロジ情報の作成方法および記憶方法は、第１の実施形態と同様である。また、端末位置記憶部１０６は、外部端末の位置情報を記憶する。なお、端末位置記憶部１０６が記憶する情報は、第１の実施形態と同様である。端末位置記憶部１０６は、例えば、磁気ディスク等により実現される。
【００７４】
経路・アクション計算部１０３は、処理規則（フローエントリ）として、パケット転送装置２１０〜２３０に実行させるアクションおよびパケットの転送経路を計算する。具体的には、経路・アクション計算部１０３は、トポロジ管理部１０２が管理するネットワークトポロジ情報と、端末位置記憶部１０６に記憶された位置情報から、送信端末と宛先端末の位置を特定し、パケットの転送経路を計算する。また、経路・アクション計算部１０３は、そのパケットに対して転送経路上のパケット転送装置２１０〜２３０に実行させる処理（アクション）を決定する。
【００７５】
制御メッセージ送信先決定部１０１は、経路・アクション計算部１０３が計算した経路上のパケット転送装置の中から、処理規則（フローエントリ）を通知すべきパケット転送装置を決定する。具体的には、制御メッセージ送信先決定部１０１は、後述するフローエントリ管理部１０８の判定結果に基づいて、パケット転送装置から受信したパケットに対する処理内容の問い合わせが初めてか否かに基づいて、フローエントリを通知する（適用させる）パケット転送装置を決定する。
【００７６】
制御メッセージ処理部１０５は、パケット転送装置２１０〜２３０から受信した制御メッセージを解析して、経路制御装置（コントローラ）１００内の該当する処理手段に制御メッセージ情報を引き渡す。例えば、パケット転送装置２１０〜２３０から新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎ）を受信した場合、制御メッセージ処理部１０５は、新しい処理規則（フローエントリ）の作成を経路・アクション計算部１０３に依頼する。
【００７７】
フローエントリ記憶部１０７は、フローエントリを記憶する。具体的には、フローエントリ記憶部１０７に、フローエントリをデータベースとして記憶しておく。フローエントリ記憶部１０７は、例えば、磁気ディスク等により実現される。フローエントリ記憶部１０７は、図１５に例示するように、照合規則（マッチングルール）、アクション（タイマー値を含む）、および、フロー統計情報を含む処理規則（フローエントリ）を記憶する。
【００７８】
フローエントリ管理部１０８は、ノード（パケット転送装置）から受信した情報に基づいて照合規則（マッチングキー）を作成する。さらに、フローエントリ管理部１０８は、経路・アクション計算部１０３が計算したフローエントリをフローエントリ記憶部１０７に記憶させる。その際、フローエントリ管理部１０８は、そのフローエントリが既にフローエントリ記憶部１０７に記憶されているか否かを判定する。そのフローエントリが既にフローエントリ記憶部１０７に記憶されている場合、フローエントリ管理部１０８は、受信したパケットに対する処理内容の問い合わせが初めてでないと判定する。一方、そのフローエントリがフローエントリ記憶部１０７に記憶されていない場合、フローエントリ管理部１０８は、受信したパケットに対する処理内容の問い合わせが初めてであると判定する。フローエントリ管理部１０８は、その判定結果を制御メッセージ送信先決定部１０１に通知する。
【００７９】
また、フローエントリ管理部１０８は、パケット転送装置２１０〜２３０からの処理規則（フローエントリ）の追加または更新要求に応じて処理規則（フローエントリ）をフローテーブル記憶部２１２に設定する指示を行う。
【００８０】
制御メッセージ送信先決定部１０１と、トポロジ管理部１０２と、経路・アクション計算部１０３と、パケット転送装置通信部１０４と、制御メッセージ処理部１０５と、フローエントリ管理部１０８とは、プログラム（経路制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。また、制御メッセージ送信先決定部１０１と、トポロジ管理部１０２と、経路・アクション計算部１０３と、パケット転送装置通信部１０４と、制御メッセージ処理部１０５と、フローエントリ管理部１０８とは、それぞれが専用のハードウェアで実現されていてもよい。
【００８１】
パケット転送装置２１０〜２３０は、第１の実施形態と同様、パケットを受信した際に、所定のルールに基づいてそのパケットを転送する装置である。また、第２の実施形態におけるパケット転送装置２１０〜２３０の構成は、図２に例示する構成と同様である。すなわち、第２の実施形態におけるパケット転送装置２１０も、制御メッセージ送受信部２１１と、フローテーブル記憶部２１２と、パケット処理部２１３とを備えている。
【００８２】
制御メッセージ送受信部２１１は、経路制御装置１００と通信する機能を備えている。
【００８３】
フローテーブル記憶部２１２は、フローテーブルを記憶する。第１の実施形態と同様、フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール（ヘッダフィールド）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、パケットに対する処理内容を定義したアクション（Ａｃｔｉｏｎｓ）とを含む組が定義される（図１５参照）。
【００８４】
パケット処理部２１３は、フローテーブル記憶部２１２から、受信パケットに適合する照合規則（マッチングキー）を含む処理規則（フローエントリ）を検索し、その処理規則（フローエントリ）のアクションフィールドに記述された処理内容（例えば、特定のポートへの転送、フラッディング、廃棄など）を実行する。
【００８５】
次に、本実施形態における通信経路制御システムの動作を説明する。図６は、オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。
【００８６】
外部端末３１０がデータパケットをパケット転送装置２１０に送信し、パケット転送装置２１０がそのパケットを受信すると（ステップＳ１４０１）、パケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置１００に対して、新規フロー検出通知メッセージを送信する（ステップＳ１４０２）。
【００８７】
この新規フロー検出通知メッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【００８８】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定しているが、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【００８９】
ここで、経路制御装置１００が新規フロー検出通知メッセージを受信したときの動作を図４を用いて説明する。
【００９０】
経路制御装置１００がパケット転送装置２１０から新規フロー検出通知メッセージを受信すると（図４におけるステップＳ１５０１）、経路・アクション計算部１０３は、該当パケットの経路を計算し、その経路上に存在する各パケット転送装置のアクションを決定する（ステップＳ１５０２）。次に、経路制御装置１００では、経路上に存在するパケット転送装置の中から、アクションの内容を含む処理規則を通知するパケット転送装置を宛先として決定する処理が行われる（ステップＳ１５０３）。
【００９１】
まず、フローエントリ管理部１０８は、新規フロー検出通知メッセージの中から、フローを識別する情報を抽出する。そして、フローエントリ管理部１０８は、そのフローに対するエントリをフローエントリ記憶部１０７に登録する際、そのフローエントリが既にフローエントリ記憶部１０７に記憶されているか否かを判定する。
【００９２】
そのフローエントリが既にフローエントリ記憶部１０７に記憶されている場合、制御メッセージ送信先決定部１０１は、新規フロー検出通知メッセージを送信したパケット転送装置に対してのみ処理規則を通知すると決定する。一方、そのフローエントリがフローエントリ記憶部１０７に記憶されていない場合、制御メッセージ送信先決定部１０１は、経路・アクション計算部１０３が計算した経路上の全パケット転送装置に対して、処理規則を通知すると決定する。そして、制御メッセージ送信先決定部１０１は、決定した宛先に対して、処理規則を通知する（ステップＳ１５０４）。
【００９３】
各パケット転送装置２１０〜２３０が経路制御装置１００から処理規則を受信すると、制御メッセージ送受信部２１１は、フローテーブルに受信したエントリを設定する。そして、パケット処理部２１３は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置２２０に転送する（図６におけるステップＳ１４０４−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０，２３０の順で転送され、外部端末３２０に届くことになる（ステップＳ１４０４−２、ステップＳ１４０４−３）。以後、外部端末３１０から外部端末３２０宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順に転送され（ステップＳ１４０５−１〜Ｓ１４０５−４）、外部端末３２０に到着する。
【００９４】
以上のように、本実施形態によれば、制御メッセージ送信先決定部１０１が、処理内容の問い合わせが行われたパケットに対応するパケット転送ルールがフローエントリ記憶部１０７に記憶されているか否かに基づいて、パケット転送ルールを適用させるパケット転送装置を決定する。このような構成によっても、通信経路の制御に用いられるパケットの量を削減できる。
【実施例１】
【００９５】
以下、具体的な実施例により本発明を説明するが、本発明の範囲は以下に説明する内容に限定されない。第１の実施例は、本発明の第１の実施形態における通信経路制御システムに対応する。
【００９６】
図７は、本発明の第１の実施例における通信経路制御システムの例を示す説明図である。第１の実施例における通信経路制御システムは、２台の外部端末３１０，３２０と、外部端末間に３台のパケット転送装置２１０〜２３０と、このネットワークを制御する経路制御装置１００とを含む。なお、各パケット転送装置２１０〜２３０の側に記載された１桁の番号が各装置におけるポート番号を示し、各パケット転送装置２１０〜２３０に付与された３桁の番号が、各装置の識別子を示すものとする。
【００９７】
第１の実施例では、オープンフローネットワークを想定した通信経路制御システムについて説明する。経路制御装置１００は、処理規則（フローエントリ）を通知すべきパケット転送装置を決定する機能をオープンフローコントローラに具備した装置に相当する。また、パケット転送装置は、オープンフロースイッチに相当する。以下、第１の実施例における通信経路制御システムの動作を、図１６を用いて説明する。
【００９８】
外部端末３１０がデータパケットをパケット転送装置２１０に送信し、パケット転送装置２１０がそのパケットを受信すると（ステップＳ９０１）、パケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ９０２）。
【００９９】
このＰａｃｋｅｔ−Ｉｎメッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【０１００】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定している。ただし、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【０１０１】
ここで、経路制御装置１００がＰａｃｋｅｔ−Ｉｎメッセージを受信したときの動作を説明する。図８は、経路制御装置の動作の例を示すフローチャートである。
【０１０２】
経路制御装置１００がパケット転送装置２１０からＰａｃｋｅｔ−Ｉｎメッセージを受信すると（ステップＳ３０１）、経路・アクション計算部１０３は、該当パケットの経路を計算し、その経路上に存在するパケット転送装置のアクションを決定する（ステップＳ３０２）。次に、制御メッセージ送信先決定部１０１は、経路上のパケット転送装置の中から、宛先として、アクションの内容を含む処理規則を通知するパケット転送装置の宛先を決定する（ステップＳ３０３）。そして、制御メッセージ送信先決定部１０１は、決定した宛先に対してＦｌｏｗＭｏｄを通知する（ステップＳ３０４）。
【０１０３】
図９は、処理規則を通知するパケット転送装置を決定する動作の例を示す説明図である。以下、図９を用いて、ステップＳ３０３の内容を詳しく説明する。
【０１０４】
制御メッセージ送信先決定部１０１は、Ｐａｃｋｅｔ−Ｉｎメッセージを受信した際、そのＰａｃｋｅｔ−Ｉｎメッセージを送信したパケット転送装置がデータパケットを送信する外部端末からみて最初のパケット転送装置であるか否かを判定する。本実施例では、Ｐａｃｋｅｔ−Ｉｎメッセージを送信したパケット転送装置の識別子と、Ｐａｃｋｅｔ−Ｉｎメッセージから特定されるポート番号のうち、パケット転送装置がデータパケットを受信したポート（以下、Ｉｎｐｕｔ  Ｐｏｒｔと記すこともある）の番号とを使用して上記判定を行うものとする（ステップＳ４０１）。なお、判定の方法は、本実施例で説明するパケット転送装置の識別子とポート番号とを用いた判定方法に限定されるものではない。Ｐａｃｋｅｔ−Ｉｎメッセージを送信したパケット転送装置がデータパケットの送信端末からみて最初のパケット転送装置であるか否かが判定できる方法であれば、他の方法であってもよい。
【０１０５】
図７に例示する通信経路制御システムにおいて、パケット転送装置２１０の識別子は「２１０」、Ｉｎｐｕｔ  Ｐｏｒｔは「１」である。ここで、トポロジ管理部１０２が図７に例示する経路制御装置１００の識別子とポート番号からネットワークトポロジ情報を計算し、その情報を保持しているものとする。図１０は、トポロジ管理部１０２が計算したネットワークトポロジ情報の例を示す説明図である。図１０に示す例では、四角の記号が外部端末を示し、丸の記号がパケット転送装置を示す。また、四角または丸の下側に記載された３桁の番号が装置の識別子を示し、四角または丸の左右側に記載された１桁の番号がポート番号を示す。
【０１０６】
制御メッセージ送信先決定部１０１は、トポロジ管理部１０２にアクセスし（ステップＳ４０２）、パケット転送装置の接続先が他のパケット転送装置か否かを判断する（ステップＳ４０３）。ここでは、制御メッセージ送信先決定部１０１は、図１０に例示するネットワークトポロジ情報から、識別子が「２１０」で識別される装置のポート番号「１」に接続された装置を確認する。図１０に示す例では、パケット転送装置２１０のポート番号「１」のポートに接続された装置は外部端末３１０である。よって、制御メッセージ送信先決定部１０１は、パケット転送装置２１０に隣接している装置が外部端末３１０であることがわかる（ステップＳ４０３におけるＮ）。したがって、制御メッセージ送信先決定部１０１は、経路・アクション計算部１０３が計算した経路上に存在する全てのパケット転送装置に処理規則（経路情報）を通知する（ステップＳ４０５）。
【０１０７】
一方、パケット転送装置２１０に隣接している装置が他のパケット転送装置であった場合（ステップＳ４０３におけるＹ）、制御メッセージ送信先決定部１０１は、Ｐａｃｋｅｔ−Ｉｎメッセージを送信したパケット転送装置に対してのみ処理規則を通知することになる（ステップＳ４０４）。なお、パケット転送装置に隣接している装置が他のパケット転送装置であった場合の処理については後述する。
【０１０８】
制御メッセージ送信先決定部１０１は、ＦｌｏｗＭｏｄメッセージの送り先を決定すると、パケット転送装置２１０〜２３０に対してＦｌｏｗＭｏｄメッセージを送信する（図１６におけるステップＳ９０３）。パケット処理部２１３は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置２２０に転送する（図１６におけるステップＳ９０４−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０，２３０の順で転送され、外部端末３２０に届くことになる（ステップＳ９０４−２、ステップＳ９０４−３）。
【０１０９】
次に、図９におけるステップＳ４０４の処理が行われる状況（すなわち、パケット転送装置へデータパケットを送信した装置が他のパケット転送装置であった場合の処理）を説明する。図１１は、オープンフローネットワークにおけるパケットの流れの例を示す説明図である。
【０１１０】
まず、外部端末３１０が外部端末３２０宛てに最初のデータパケットを送信すると、このデータパケットは、外部端末３２０に接続されたパケット転送装置２１０に送信される（ステップＳ１３０１−１）。パケット転送装置２１０がパケットを受信すると、パケット処理部２１３は、フローテーブルから、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリを検索する。
【０１１１】
しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、制御メッセージ送受信部２１１は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ１３０２）。
【０１１２】
このＰａｃｋｅｔ−Ｉｎメッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【０１１３】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置（コントローラ）１００に送信することを想定している。ただし、制御メッセージ送受信部２１１は、受信したパケットそのものを経路制御装置（コントローラ）１００に送信してもよい。
【０１１４】
経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信すると、経路・アクション計算部１０３は、受信したメッセージから新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、図１５に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。
【０１１５】
さらに、経路・アクション計算部１０３は、受信したメッセージに基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部端末３２０へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【０１１６】
次に、経路・アクション計算部１０３は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを、各パケット転送装置２１０〜２３０ごとに作成する。そして、制御メッセージ送信先決定部１０１は、作成したエントリを、ＦｌｏｗＭｏｄメッセージを用いて、各パケット転送装置２１０〜２３０に通知する（ステップＳ１３０３−１、ステップＳ１３０３−２、ステップＳ１３０３−３）。
【０１１７】
ここで、各パケット転送装置２１０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ１３０３−１で送信したＦｌｏｗＭｏｄメッセージ）と、パケット転送装置２３０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ１３０３−３で送信したＦｌｏｗＭｏｄメッセージ）が各パケット転送装置に到着するものとする。一方、パケット転送装置２２０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ１３０３−２で送信したＦｌｏｗＭｏｄメッセージ）がネットワークの輻輳によるパケットロスや遅延等によりパケット転送装置２２０に到着しなかったとする。
【０１１８】
パケット転送装置２１０がＦｌｏｗＭｏｄメッセージを受信し、パケット処理部２１３がフローテーブルへのエントリの設定を完了すると、パケット処理部２１３は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置２２０に転送する（ステップＳ１３０１−２）。パケット転送装置２２０がパケット転送装置２１０からデータパケットを受信すると、パケット転送装置２２０のパケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、パケット転送装置２２０へのＦｌｏｗＭｏｄメッセージは到着しておらず、該当するエントリはフローテーブルに存在しない。そこで、パケット転送装置２２０の制御メッセージ送受信部２１１は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ１３０４）。
【０１１９】
経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信すると、経路・アクション計算部１０３は、受信した情報に基づいて、新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、図１５に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。さらに、経路・アクション計算部１０３は、受信した情報に基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部装置３２０へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置２２０からパケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【０１２０】
次に、制御メッセージ送信先決定部１０１は、ＦｌｏｗＭｏｄの送り先を決定する。送り先を決定する処理を、図９を用いて説明する。
【０１２１】
経路・アクション計算部１０３が経路の計算をした後、制御メッセージ送信先決定部１０１は、そのＰａｃｋｅｔ−Ｉｎメッセージを送信したパケット転送装置がデータパケットを送信する外部端末からみて最初のパケット転送装置であるか否かを判定する。本実施例では、Ｐａｃｋｅｔ−Ｉｎメッセージを送信したパケット転送装置の識別子と、Ｐａｃｋｅｔ−Ｉｎメッセージから特定されるポート番号のうち、パケット転送装置がデータパケットを受信したポートの番号とを使用して、上記判定を行うものとする（ステップＳ４０１）。なお、判定の方法は、本実施例で説明するパケット転送装置の識別子とポート番号とを用いた判定方法に限定されるものではない。Ｐａｃｋｅｔ−Ｉｎメッセージを送信したパケット転送装置がデータパケットの送信端末からみて最初のパケット転送装置であるか否かが判定できる方法であれば、他の方法であってもよい。
【０１２２】
図７に例示する通信経路制御システムにおいて、パケット転送装置２２０の識別子は「２２０」、Ｉｎｐｕｔ  Ｐｏｒｔは「１」である。ここで、トポロジ管理部１０２が図７に例示する経路制御装置１００の識別子とポート番号からネットワークトポロジ情報を計算し、その情報を保持しているものとする。また、トポロジ管理部１０２が計算したネットワークトポロジ情報が、図１０に例示する内容であるものとする。
【０１２３】
制御メッセージ送信先決定部１０１は、トポロジ管理部１０２にアクセスし（ステップＳ４０２）、パケット転送装置の接続先がパケット転送装置か否かを判断する（ステップＳ４０３）。具体的には、制御メッセージ送信先決定部１０１は、図１０に例示するネットワークトポロジ情報から、識別子が「２２０」で識別される装置のポート番号「１」に接続された装置を確認する。図１０に示す例では、パケット転送装置２２０のポート番号「１」のポートに接続された装置はパケット転送装置２１０である。よって、制御メッセージ送信先決定部１０１は、パケット転送装置２２０に隣接している装置がパケット転送装置２１０であることがわかる（ステップＳ４０３におけるＹ）。したがって、制御メッセージ送信先決定部１０１は、Ｐａｃｋｅｔ−Ｉｎメッセージを送信したパケット転送装置２２０に対してのみ処理規則を通知する（ステップＳ４０４）。
【０１２４】
オープンフローネットワークは、パケット転送装置にデータパケットが到着した際に、そのパケット転送装置が経路制御装置に経路の問い合わせを行い、経路制御装置がそのパケットに対するアクションをパケット転送装置に通知することで、データパケットを目的の装置に到着させることができるネットワークである。そのため、パケット転送装置２２０が外部端末でない装置（すなわち、パケット転送装置。本実施例では、パケット転送装置２１０。）からデータパケットを受信するということは、経路制御装置１００が、そのデータパケットに対するＦｌｏｗＭｏｄを既にパケット転送装置２２０に送信していることを意味する。
【０１２５】
また、既にＦｌｏｗＭｏｄをパケット転送装置２２０に送信しているにもかかわらず、パケット転送装置２２０からの問い合わせが発生することがある。その理由として、経路制御装置１００からのＦｌｏｗＭｏｄメッセージがパケット転送装置２１０からのデータパケットが到着する前に届いたこと、または、経路制御装置１００からのＦｌｏｗＭｏｄメッセージが損失したことが挙げられる。よって、経路制御装置１００は、転送経路上に存在する全てのパケット転送装置に経路情報を送信する必要はなく、パケット転送装置２２０にのみ、再度経路情報を送信すればよいことになる。
【０１２６】
したがって、制御メッセージ送信先決定部１０１は、図１１に例示するように、パケット転送装置２２０に対してのみＦｌｏｗＭｏｄを送信する（図１１におけるステップＳ１３０５−１）。パケット処理部２１３は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置２３０に転送する（ステップＳ１３０１−３）。そして、このパケットは、パケット転送装置２３０に転送され、外部端末３２０に届くことになる（ステップＳ１３０１−４）。
【０１２７】
以上のように、本実施例では、制御メッセージ送信先決定部１０１が、Ｐａｃｋｅｔ−Ｉｎを送信したパケット転送装置と、パケット転送装置がデータパケットを受信したポート番号の情報をもとに、トポロジ管理部１０２のネットワークトポロジを参照して、パケット転送装置がデータパケットを受信したポートの接続先を確認する。
【０１２８】
パケットを受信したポートにパケット転送装置が接続されていれば、経路制御装置１００が経路上のパケット転送装置に対して、以前にＦｌｏｗＭｏｄメッセージを送信しているということがわかるからである。つまり、この場合、経路制御装置１００は、Ｐａｃｋｅｔ−Ｉｎを送信したパケット転送装置に対してのみ、ＦｌｏｗＭｏｄメッセージを送信すればよい。一方、パケットを受信したポートにパケット転送装置でない端末（例えば、外部端末）が接続されていれば、経路制御装置１００が経路上の全パケット転送装置に対して、ＦｌｏｗＭｏｄメッセージを送信すればよい。
【０１２９】
このように、経路制御装置１００が、Ｐａｃｋｅｔ−Ｉｎを送信したパケット転送装置に応じてＦｌｏｗＭｏｄの宛先装置を決定することで、経路制御装置１００からパケット転送装置への冗長な制御パケットの送信を回避できる。また、このような構成により、ネットワーク使用効率の向上、経路制御装置での制御パケット送信負荷の軽減、および、パケット転送装置での制御パケットの処理負荷の軽減が期待できる。
【実施例２】
【０１３０】
次に、本発明の第２の実施例について説明する。第２の実施例は、本発明の第２の実施形態における通信経路制御システムに対応する。
【０１３１】
本発明の第２の実施例では、経路制御装置１００にフローエントリを保持するデータベース（すなわち、フローエントリ記憶部１０７）を作成し、そのデータベースに、問い合わせを受けたフローに対する経路情報の有無で新規フローか否かを判断する。
【０１３２】
すなわち、本発明の第１の実施例における通信経路制御システムでは、トポロジ情報を用いて新規フローか否かを判断している。一方、本発明の第２の実施例における通信経路制御システムでは、フローエントリのデータベースを用いて新規フローか否かを判断している点において、第１の実施例における通信経路制御システムと異なる。
【０１３３】
なお、第２の実施例も、第１の実施例と同様、オープンフローネットワークを想定した通信経路制御システムについて説明する。すなわち、オープンフローコントローラは、第２の実施形態における経路制御装置１００に相当する。言い換えると、経路制御装置１００は、処理規則（フローエントリ）を通知すべきパケット転送装置を決定する機能をオープンフローコントローラに具備した装置に相当する。また、オープンフロースイッチは、第１の実施形態および第２の実施形態におけるパケット転送装置に相当する。
【０１３４】
以下、本発明の第２の実施例における通信経路制御システムを、図１を用いて説明する。すなわち、第２の実施例における通信経路制御システムも、２台の外部端末３１０，３２０と、外部端末間に３台のパケット転送装置２１０〜２３０と、このネットワークを制御する経路制御装置１００とを含む。また、第２の実施例における通信経路制御システムの動作を、図１６を用いて説明する。
【０１３５】
外部端末３１０がデータパケットをパケット転送装置２１０に送信し、パケット転送装置２１０がそのパケットを受信すると（ステップＳ９０１）、パケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ９０２）。
【０１３６】
このＰａｃｋｅｔ−Ｉｎメッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【０１３７】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定している。ただし、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【０１３８】
ここで、経路制御装置１００がＰａｃｋｅｔ−Ｉｎメッセージを受信したときの動作を図８を用いて説明する。
【０１３９】
経路制御装置１００がパケット転送装置２１０からＰａｃｋｅｔ−Ｉｎメッセージを受信すると（ステップＳ３０１）、経路・アクション計算部１０３は、該当パケットの経路を計算し、その経路上に存在するパケット転送装置のアクションを決定する（ステップＳ３０２）。次に、制御メッセージ送信先決定部１０１は、経路上のパケット転送装置の中から、宛先として、アクションの内容を含む処理規則を通知するパケット転送装置の宛先を決定する（ステップＳ３０３）。そして、制御メッセージ送信先決定部１０１は、決定した宛先に対してＦｌｏｗＭｏｄを通知する（ステップＳ３０４）。
【０１４０】
制御メッセージ送信先決定部１０１が宛先として決定したパケット転送装置に経路情報を通知したあと、フローエントリ管理部１０８は、フローエントリ記憶部１０７に経路情報を登録する。なお、パケット転送装置において処理規則が削除された場合、経路制御装置１００では、フローエントリ記憶部１０７からそのフローに対する経路情報を削除してもよい。
【０１４１】
図１２は、処理規則を通知するパケット転送装置を決定する動作の例を示す説明図である。以下、図１２を用いて、パケット転送装置の宛先を決定するステップＳ３０３の内容を詳しく説明する。
【０１４２】
まず、経路制御装置１００がＰａｃｋｅｔ−Ｉｎを受信すると、フローエントリ管理部１０８は、データパケットを特定する要素（ヘッダ領域）を抽出する（ステップＳ１２０１）。例えば、５タプル（ｔｕｐｌｅ）でフローが区別される場合、フローエントリ管理部１０８は、データパケットの５タプルの内容（ｔｕｐｌｅ）を確認する。
【０１４３】
次に、フローエントリ管理部１０８は、フローエントリ記憶部１０７を参照し、そのフローに対するフローエントリが存在しているか確認する（ステップＳ１２０２）。確認した結果、フローエントリがフローエントリ記憶部１０７に存在していない場合（ステップＳ１２０２におけるＮ）、それは、新規フローであることを意味する。そこで、制御メッセージ送信先決定部１０１は、経路・アクション計算部１０３が計算した経路上の全パケット転送装置に対して、処理規則を通知すると決定し、決定した通知先に処理規則を送信する（ステップＳ１２０４）。
【０１４４】
一方、フローエントリがフローエントリ記憶部１０７に存在していた場合（ステップＳ１２０２におけるＹ）、制御メッセージ送信先決定部１０１は、Ｐａｃｋｅｔ−Ｉｎメッセージを送信したパケット転送装置に対してのみ処理規則を通知することになる（ステップＳ１２０３）。なお、フローエントリがフローエントリ記憶部１０７に存在していた場合の処理については後述する。
【０１４５】
こうして、制御メッセージ送信先決定部１０１は、ＦｌｏｗＭｏｄメッセージの送り先を決定すると、パケット転送装置２１０〜２３０に対してＦｌｏｗＭｏｄメッセージを送信する（図１６におけるステップＳ９０３）。
【０１４６】
パケット処理部２１３は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置２２０に転送する（図１６におけるステップＳ９０４−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０，２３０の順で転送され、外部端末３２０に届くことになる（ステップＳ９０４−２、ステップＳ９０４−３）。
【０１４７】
次に、図１２におけるステップＳ１２０３の処理が行われる状況（すなわち、受信したパケットが新規フローでない場合の処理）を図１１を用いて説明する。
【０１４８】
まず、外部端末３１０が外部端末３２０宛てに、最初のデータパケットを送信すると、このデータパケットは、外部端末３２０に接続されたパケット転送装置２１０に送信される（ステップＳ１３０１−１）。パケット転送装置２１０がパケットを受信すると、パケット処理部２１３は、フローテーブルから、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリを検索する。
【０１４９】
しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、制御メッセージ送受信部２１１は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ１３０２）。
【０１５０】
このＰａｃｋｅｔ−Ｉｎメッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【０１５１】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置（コントローラ）１００に送信することを想定している。ただし、制御メッセージ送受信部２１１は、受信したパケットそのものを経路制御装置（コントローラ）１００に送信してもよい。
【０１５２】
経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信すると、経路・アクション計算部１０３は、受信したメッセージから新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、図１５に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。
【０１５３】
さらに、経路・アクション計算部１０３は、受信したメッセージに基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部端末３２０へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【０１５４】
次に、経路・アクション計算部１０３は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを、各パケット転送装置２１０〜２３０ごとに作成する。そして、制御メッセージ送信先決定部１０１は、作成したエントリを、ＦｌｏｗＭｏｄメッセージを用いて、各パケット転送装置２１０〜２３０に通知する（ステップＳ１３０３−１、ステップＳ１３０３−２、ステップＳ１３０３−３）。
【０１５５】
ここで、各パケット転送装置２１０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ１３０３−１で送信したＦｌｏｗＭｏｄメッセージ）と、パケット転送装置２３０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ１３０３−３で送信したＦｌｏｗＭｏｄメッセージ）が各パケット転送装置に到着するものとする。一方、パケット転送装置２２０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ１３０３−２で送信したＦｌｏｗＭｏｄメッセージ）がネットワークの輻輳によるパケットロスや遅延等によりパケット転送装置２２０に到着しなかったとする。
【０１５６】
パケット転送装置２１０がＦｌｏｗＭｏｄメッセージを受信し、パケット処理部２１３がフローテーブルへのエントリの設定を完了すると、パケット処理部２１３は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置２２０に転送する（ステップＳ１３０１−２）。パケット転送装置２２０がパケット転送装置２１０からデータパケットを受信すると、パケット転送装置２２０のパケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、パケット転送装置２２０へのＦｌｏｗＭｏｄメッセージは到着しておらず、該当するエントリはフローテーブルに存在しない。そこで、パケット転送装置２２０の制御メッセージ送受信部２１１は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ１３０４）。
【０１５７】
経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信すると、経路・アクション計算部１０３は、受信した情報に基づいて、新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、図１５に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。さらに、経路・アクション計算部１０３は、受信した情報に基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部装置３２０へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置２２０からパケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【０１５８】
次に、経路制御装置（コントローラ）１００は、ＦｌｏｗＭｏｄの宛先を決定する。まず、経路制御装置１００がＰａｃｋｅｔ−Ｉｎを受信すると、フローエントリ管理部１０８は、データパケットを特定する要素（ヘッダ領域）を抽出する（図１２におけるステップＳ１２０１）。例えば、５タプル（ｔｕｐｌｅ）でフローが区別される場合、フローエントリ管理部１０８は、データパケットの５タプルの内容（ｔｕｐｌｅ）を確認する。
【０１５９】
次に、フローエントリ管理部１０８は、フローエントリ記憶部１０７を参照し、その５タプルについて識別したフローに対するフローエントリが存在しているか確認する（ステップＳ１２０２）。確認した結果、フローエントリがフローエントリ記憶部１０７に存在している場合（ステップＳ１２０２におけるＹ）、それは、新規フローでないことを意味する。そこで、制御メッセージ送信先決定部１０１は、新規フロー検出通知メッセージを送信したパケット転送装置に対してのみ処理規則を通知すると決定し、決定した通知先に処理規則を送信する（ステップＳ１２０３）。
【０１６０】
こうして、制御メッセージ送信先決定部１０１は、図１１に例示するように、パケット転送装置２２０に対してのみＦｌｏｗＭｏｄを送信する（図１１におけるステップＳ１３０５−１）。パケット処理部２１３は、ＦｌｏｗＭｏｄメッセージを受信すると、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置２３０に転送する（ステップＳ１３０１−３）。そして、このパケットは、パケット転送装置２３０に転送され、外部端末３２０に届くことになる（ステップＳ１３０１−４）。
【０１６１】
次に、本発明の最小構成を説明する。図１３は、本発明による通信経路制御システムの最小構成の例を示すブロック図である。本発明による通信経路制御システムは、パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置８０（例えば、パケット転送装置２１０〜２３０）と、パケット転送ルールの適用をパケット転送装置８０に指示することによりパケットの通信経路を制御する経路制御装置９０（例えば、経路制御装置１００）とを備えている。
【０１６２】
パケット転送装置８０は、受信したパケットに対する処理内容（例えば、アクション）を経路制御装置９０に問い合わせる処理内容問合せ手段８１（例えば、制御メッセージ送受信部２１１）を含む。
【０１６３】
経路制御装置９０は、パケット転送装置８０からパケットに対する処理内容の問い合わせを受信したときに、パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置８０を、そのパケットに対する処理内容の問い合わせが初めてか否かに基づいて決定するパケット転送装置決定手段９１（例えば、制御メッセージ送信先決定部１０１）を含む。
【０１６４】
そのような構成により、通信経路の制御に用いられるパケットの量を削減できる。
【０１６５】
また、パケット転送装置決定手段９１が、問い合わせを行ったパケット転送装置が、他の装置に対して通信を行う端末装置（例えば、外部端末３１０）がデータパケットを送信する経路上の最初のパケット転送装置であるか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定してもよい。
【０１６６】
また、経路制御装置９０が、パケット転送装置に設定しているパケット転送ルールを記憶するパケット転送ルール記憶手段（例えば、フローエントリ記憶部１０７）を含んでいてもよい。そして、パケット転送装置決定手段９１（例えば、制御メッセージ送信先決定部１０１、フローエントリ管理部１０８）が、処理内容の問い合わせが行われたパケットに対応するパケット転送ルールがパケット転送ルール記憶手段に記憶されているか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定してもよい。
【０１６７】
また、経路制御装置９０が、パケット転送装置が他の装置と接続する接続形態を示す情報であるトポロジ（例えば、ネットワークトポロジ）を記憶するトポロジ記憶手段（例えば、端末位置記憶部１０６）を含んでいてもよい。そして、パケット転送装置決定手段９１が、パケットの処理内容について問い合わせを行ったパケット転送装置が経路上の最初のパケット転送装置であるか否かを、トポロジとパケットに含まれる情報のうち問い合わせが行われたパケット転送装置の識別子およびその問い合わせを受信した受信ポートの識別子（例えば、Ｉｎｐｕｔ  ｐｏｒｔ）とに基づいて判断し、その判断結果に基づいてパケット転送ルールを適用させるパケット転送装置を決定してもよい。
【０１６８】
また、パケット転送装置決定手段９１が、パケットに対する処理内容の問い合わせが初めての場合に、他の装置に対して通信を行う端末装置（例えば、外部端末３１０）により送信されるデータパケットの経路上における全てのパケット転送装置にパケット転送ルールを適用させると決定し、問い合わせが初めてではない場合に、その問い合わせを行ったパケット転送装置に対してパケット転送ルールを適用させると決定してもよい。
【０１６９】
また、図１４は、本発明による経路制御装置の最小構成の例を示すブロック図である。図１４に例示する経路制御装置は、図１３に例示する経路制御装置９０の内容と同様である。このような構成によっても、通信経路の制御に用いられるパケットの量を削減できる
【０１７０】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。すなわち、本発明は、上述の実施例に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【０１７１】
この出願は、２０１０年１２月１３日に出願された日本特許出願２０１０−２７７２０４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１７２】
本発明は、通信経路の制御を行う通信経路制御システムに好適に適用される。
【符号の説明】
【０１７３】
１００  経路制御装置
１０１  制御メッセージ送信先決定部
１０２  トポロジ管理部
１０３  経路・アクション計算部
１０４  パケット転送装置通信部
１０５  制御メッセージ処理部
１０６  端末位置記憶部
１０７  フローエントリ記憶部
１０８  フローエントリ管理部
２１０〜２３０  パケット転送装置
２１１  制御メッセージ送受信部
２１２  フローテーブル記憶部
２１３  パケット処理部
３１０，３２０  外部端末
【図１】
0005800019.tif 000002
【図２】
0005800019.tif 000003
【図３】
0005800019.tif 000004
【図４】
0005800019.tif 000005
【図５】
0005800019.tif 000006
【図６】
0005800019.tif 000007
【図７】
0005800019.tif 000008
【図８】
0005800019.tif 000009
【図９】
0005800019.tif 000010
【図１０】
0005800019.tif 000011
【図１１】
0005800019.tif 000012
【図１２】
0005800019.tif 000013
【図１３】
0005800019.tif 000014
【図１４】
0005800019.tif 000015
【図１５】
0005800019.tif 000016
【図１６】
0005800019.tif 000017
【図１７】
0005800019.tif 000018