(57)【要約】  処理規則に基づいてパケットを転送するパケット処理装置に対し、転送経路を集中制御する制御装置が処理規則を送信するネットワークで、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる通信制御システムを提供する。パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置と、パケット処理規則の適用をパケット転送装置に指示することによりパケットの転送経路を制御する制御装置とを備えている。制御装置の通信方法選択手段は、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する。
2014504043.tif 000002
【特許請求の範囲】
【請求項１】
パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置と、
前記パケット処理規則の適用を前記パケット転送装置に指示することによりパケットの転送経路を制御する制御装置とを備え、
前記制御装置は、
前記パケット転送装置との通信状況に応じて、当該パケット転送装置との通信方法を選択する通信方法選択手段を含む
ことを特徴とする通信制御システム。
【請求項２】
制御装置は、
パケット転送装置との間に複数のセッションを構築する複数セッション構築手段を含み、
通信方法選択手段は、複数のセッションが構築されたパケット転送装置との通信状況に応じて、当該複数のセッションの中から当該パケット転送装置との通信に用いるセッションを選択する
請求項１記載の通信制御システム。
【請求項３】
通信方法選択手段は、パケット転送装置との通信状況に応じて、通常よりも優先してパケットを送信する状態である緊急モードで送信する通信方法を選択する
請求項１記載の通信制御システム。
【請求項４】
複数セッション構築手段は、複数のセッションのうち、通常の通信に用いられるセッションであるプライマリセッションと、前記プライマリセッションの異常時に用いられるセッションであるセカンダリセッションとを予め決定し、
通信方法選択手段は、通常時には前記プライマリセッションを選択し、前記プライマリセッションの異常時にセカンダリセッションを選択する
請求項２記載の通信制御システム。
【請求項５】
複数セッション構築手段は、パケット転送装置との通信状況に応じて、パケット転送装置との間に構築するコネクションを追加し、
通信方法選択手段は、パケット転送装置へ送信したパケットが届いていない場合に、前記複数セッション構築手段が前記通信状況に応じて追加したコネクションをパケット転送装置との通信に用いるセッションとして選択する
請求項２記載の通信制御システム。
【請求項６】
通信方法選択手段は、ＴＣＰで規定される再送タイマに基づいて、パケット転送装置との通信状況の優劣を判断する
請求項１から５に記載の通信制御システム。
【請求項７】
通信方法選択手段は、送信するパケットの重要度に基づいて、パケット転送装置との通信方法を選択する
請求項１から６に記載の通信制御システム。
【請求項８】
パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、当該パケット処理規則の適用を指示することによりパケットの転送経路を制御する制御装置であって、
前記パケット転送装置との通信状況に応じて、当該パケット転送装置との通信方法を選択する通信方法選択手段を備えた
ことを特徴とする制御装置。
【請求項９】
パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、当該パケット処理規則の適用を指示することによりパケットの転送経路を制御する制御装置が、前記パケット転送装置との通信状況に応じて、当該パケット転送装置との通信方法を選択する
ことを特徴とする通信制御方法。
【請求項１０】
パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、当該パケット処理規則の適用を指示することによりパケットの転送経路を制御するコンピュータに適用される通信制御プログラムであって、
前記コンピュータに、
前記パケット転送装置との通信状況に応じて、当該パケット転送装置との通信方法を選択する通信方法選択処理
を実行させるための通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他の装置に対するパケットの送信遅延を抑制して通信の制御を行う通信制御システム、制御装置、通信制御方法および通信制御プログラムに関する。
【背景技術】
【０００２】
近年、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている（非特許文献１，２参照）。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化等を行う技術である。
【０００３】
オープンフローを用いて通信が行われるネットワーク（以下、オープンフローネットワークと記す。）では、オープンフロースイッチおよびオープンフローコントローラが用いられる。オープンフロースイッチは、パケット転送装置として機能する。また、オープンフローコントローラは、経路制御装置として機能する。
【０００４】
オープンフロースイッチは、オープンフローコントローラとの通信に用いられるセキュアチャネルを備え、オープンフローコントローラからセキュアチャネルを介して適宜追加または書き換えの指示が行われるフローテーブルの内容に従って動作する。
【０００５】
図２０は、フローテーブルの内容を示す説明図である。フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール（ヘッダフィールド）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、パケットに対する処理内容を定義したアクション（Ａｃｔｉｏｎｓ）とを含む組が定義される。
【０００６】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから受信パケットのヘッダ情報に適合するマッチングルールを含むエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報（Ｃｏｕｎｔｅｒｓ）を更新する。また、この場合、オープンフロースイッチは、受信パケットに対して、該当するエントリのアクションフィールドに定義された処理内容（指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。
【０００７】
一方、フローテーブルを検索した結果、受信パケットに適合するエントリが見つからなかったと場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対して受信パケットを転送する。このようにして、オープンフロースイッチは、そのパケットに対する処理内容を問い合わせる。例えば、オープンフロースイッチは、オープンフローコントローラに対して、受信パケットの送信元および送信先に基づいたパケットの経路の決定を依頼し、決定されたエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを処理規則として用いることでパケットの転送を行う。
【０００８】
なお、オープンフローコントローラは、パケットを処理するたびに更新されるフロー統計情報（Ｃｏｕｎｔｅｒｓ）を収集する機能も備えている。この機能のことを、可視化機能とも言う。
【０００９】
また、特許文献１には、コントローラによって制御されるフローテーブルに基づいてスイッチがパケットを転送するシステムが記載されている。特許文献１に記載されたシステムは、スイッチがフローテーブルに存在しないパケットを受け取るとそのパケットをコントローラに転送する。そして、スイッチがフローテーブルに存在するパケットを受け取ると、上記システムは、そのフローテーブルの内容に基づいてパケットを転送する。
【００１０】
図２１は、オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。以下、図２１を用いて、特許文献１、非特許文献１，２に記載されたネットワークにおけるパケットの流れを説明する。
【００１１】
まず、外部端末３１０が外部端末３２０宛てに、最初のデータパケットを送信すると、このデータパケットは、外部端末３１０に接続されたパケット転送装置２１０に送信される（ステップＳ９０１）。パケット転送装置２１０は、パケットを受信すると、フローテーブルから、そのパケットのヘッダ情報に適合するマッチングルール（照合規則、マッチングキーと記すこともある。）を含むエントリを検索する。
【００１２】
しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット転送装置２１０は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フローを検出したことを示す制御メッセージ（以下、新規フロー検出通知メッセージ、Ｐａｃｋｅｔ−Ｉｎメッセージと記すこともある。）を送信する（ステップＳ９０２）。
【００１３】
このＰａｃｋｅｔ−Ｉｎメッセージには、フローの識別に必要な情報（例えば、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【００１４】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置（コントローラ）１００に送信することを想定している。なお、パケット転送装置２１０は、受信したパケットそのものを経路制御装置（コントローラ）１００に送信する場合もある。
【００１５】
経路制御装置（コントローラ）１００は、Ｐａｃｋｅｔ−Ｉｎメッセージを受信すると、受信したメッセージから新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、図２０に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。
【００１６】
さらに、経路制御装置（コントローラ）１００は、受信したメッセージに基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部端末３２０へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【００１７】
次に、経路制御装置（コントローラ）１００は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを、各パケット転送装置２１０〜２３０ごとに作成する。そして、経路制御装置（コントローラ）１００は、作成したエントリを、ＦｌｏｗＭｏｄメッセージを用いて、各パケット転送装置２１０〜２３０に通知する（ステップＳ９０３）。ここで、ＦｌｏｗＭｏｄメッセージとは、コントローラがスイッチに対してフローの登録や変更、削除を要求する際に用いられるメッセージである。各パケット転送装置２１０〜２３０は、ＦｌｏｗＭｏｄメッセージを受信すると、フローテーブルに受信したエントリを設定する。
【００１８】
エントリの設定が完了すると、パケット転送装置２１０は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置２２０に転送する（ステップＳ９０４−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０、パケット転送装置２３０の順で転送され、外部端末３２０に届くことになる（ステップＳ９０４−２、ステップＳ９０４−３）。
【００１９】
以後、外部端末３１０から外部端末３２０宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順に転送され（ステップＳ９０５−１〜Ｓ９０５−４）、外部端末３２０に到着する。
【００２０】
なお、特許文献２には、広域ネットワークにおける異常トラヒックを検出および分析するトラヒック分析・制御システムが記載されている。特許文献２に記載されたシステムでは、パケット転送装置とネットワーク制御装置を含むネットワークが構成され、ネットワーク制御装置がパケットフロー等の転送経路をパケット転送装置に対して指示する。
【００２１】
また、特許文献３には、パケット回線バックアップ方式が記載されている。特許文献３に記載された方式では、相手装置にパケットを転送する際に通常使用されているパケット回線に障害が発生して不通となった場合、回線交換網が介在するバックアップ回線を介して所定の手順に従い相手装置に呼設定する。そして、設定されたバックアップ回線を介してこれらのパケットが相手装置に送信される。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】再表ＷＯ２００８／０９５０１０号
【特許文献２】特開２００８−６０８６５号公報
【特許文献３】特開平６−１２０９８５号公報
【非特許文献】
【００２３】
【非特許文献１】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）などで構築されるセキュアチャネルを用いて、該当する経路上の全てのオープンフロースイッチに送信する。
【００２６】
しかし、オープンフローコントローラとオープンフロースイッチとの間のセッションの品質が悪いと、オープンフローコントローラからオープンフロースイッチに送信される経路情報（ＦｌｏｗＭｏｄ）を含むパケットが正確に届かない可能性がある。また、このパケットが届いたとしても、大きな遅延が発生する可能性がある。
【００２７】
この場合のパケットの流れを、図２２を用いて説明する。図２２は、オープンフローネットワークにおけるパケットの流れの他の例を示す説明図である。外部端末３１０が外部端末３２０に向けて送信したデータパケットがパケット転送装置２１０に到着すると（ステップＳ２０１）、パケット転送装置２１０は、受信パケットを一時的に受信バッファに格納する。そして、パケット転送装置２１０は、そのパケットのヘッダ情報に適合するエントリをフローテーブルから検索する。
【００２８】
検索の結果、フローテーブルに対象のエントリが存在しなかった場合、パケット転送装置２１０は、経路制御装置１００に対して新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ２０２）。経路制御装置１００は、Ｐａｃｋｅｔ−Ｉｎメッセージを受信すると、そのデータパケットに対する転送経路を計算する。ここでは、転送経路を計算した結果、外部端末３１０→パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０→外部端末３２０の順でパケットを転送する転送経路が計算されたものとする。この場合、経路制御装置１００は、パケット転送装置２１０〜２３０に対して、ＦｌｏｗＭｏｄメッセージを送信する（ステップＳ２０３−１〜Ｓ２０３−３）。
【００２９】
ここで、パケット転送装置２２０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ２０３−２で送信したＦｌｏｗＭｏｄメッセージ）と、パケット転送装置２３０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ２０３−３で送信したＦｌｏｗＭｏｄメッセージ）が各パケット転送装置に到着するものとする。一方、パケット転送装置２１０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ２０３−１で送信したＦｌｏｗＭｏｄメッセージ）がパケット損失によりによりパケット転送装置２１０に到着しなかったとする。パケット転送装置２１０にＦｌｏｗＭｏｄメッセージが到着しないと、パケット転送装置２１０は、先ほど格納したデータパケットを転送できないことになる。
【００３０】
しかし、パケット転送装置２１０にはデータパケットが外部端末３１０からさらに送信される。パケット転送装置２１０は、データパケットを受信するたびにそのパケットをバッファリングする。データパケットを転送できない状況が継続すると、いずれバッファ容量の許容量を超過し、パケットロスが発生することになる。
【００３１】
このように、経路制御装置１００がパケット転送装置２１０に向けて送信した制御メッセージがパケットロスなどにより損失して予定通りに到着しなければ、データパケットがパケット転送装置２１０で損失してしまうことになる。このようなことを防ぐため、オープンフローコントローラからオープンフロースイッチへ送信されるパケットの遅延を抑制できることが望ましい。
【００３２】
また、特許文献３に記載された方式では、定期的に生成した監視パケットを各回線に出力して回線の障害を検出し、障害を検出した場合にバックアップ回線に切り替える。そのため、常に監視パケットを出力しなければならない。特許文献３に記載された方式のように、常に回線状態を監視することなくパケットの遅延を抑制できることが望ましい。
【００３３】
そこで、本発明は、処理規則に基づいてパケットを転送するパケット処理装置に対し、転送経路を集中制御する制御装置が処理規則を送信するネットワークで、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる通信制御システム、制御装置、通信制御方法および通信制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００３４】
本発明による通信制御システムは、パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置と、パケット処理規則の適用をパケット転送装置に指示することによりパケットの転送経路を制御する制御装置とを備え、制御装置が、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する通信方法選択手段を含むことを特徴とする。
【００３５】
本発明による制御装置は、パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、そのパケット処理規則の適用を指示することによりパケットの転送経路を制御する制御装置であって、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する通信方法選択手段を備えたことを特徴とする。
【００３６】
本発明による通信制御方法は、パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、そのパケット処理規則の適用を指示することによりパケットの転送経路を制御する制御装置が、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択することを特徴とする。
【００３７】
本発明による通信制御プログラムは、  パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置に対し、そのパケット処理規則の適用を指示することによりパケットの転送経路を制御するコンピュータに適用される通信制御プログラムであって、コンピュータに、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する通信方法選択処理を実行させることを特徴とする。
【発明の効果】
【００３８】
本発明によれば、処理規則に基づいてパケットを転送するパケット処理装置に対し、転送経路を集中制御する制御装置が処理規則を送信するネットワークで、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる。
【図面の簡単な説明】
【００３９】
【図１】本発明の第１の実施形態における通信制御システムの例を示すブロック図である。
【図２】パケット転送装置の例を示すブロック図である。
【図３】経路制御装置の例を示すブロック図である。
【図４】セッションを構築する処理の例を示すフローチャートである。
【図５】パケットの流れの一例を示す説明図である。
【図６】新規フロー検出通知メッセージを受信したときの動作の例を示すフローチャートである。
【図７】本発明の第２の実施形態における経路制御装置の例を示すブロック図である。
【図８】新規フロー検出通知メッセージを受信したときの動作の例を示すフローチャートである。
【図９】セッションを構築する処理の例を示すフローチャートである。
【図１０】Ｐａｃｋｅｔ−Ｉｎメッセージを受信したときの動作の例を示すフローチャートである。
【図１１】セッションを選択する処理の例を示すフローチャートである。
【図１２】セッションを選択する動作の例を示すフローチャートである。
【図１３】Ｐａｃｋｅｔ−Ｉｎメッセージを受信したときの動作の例を示すフローチャートである。
【図１４】本発明の第２の実施例における通信制御システムの例を示すブロック図である。
【図１５】パケットの流れの一例を示す説明図である。
【図１６】Ｐａｃｋｅｔ−Ｉｎメッセージを受信したときの動作の例を示すフローチャートである。
【図１７】パケットの送信形態を選択する処理の例を示すフローチャートである。
【図１８】本発明による通信制御システムの最小構成の例を示すブロック図である。
【図１９】本発明による制御装置の最小構成の例を示すブロック図である。
【図２０】フローテーブルの内容を示す説明図である。
【図２１】オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。
【図２２】オープンフローネットワークにおけるパケットの流れの他の例を示す説明図である。
【発明を実施するための形態】
【００４０】
以下、本発明の実施形態を図面を参照して説明する。
【００４１】
実施形態１．
図１は、本発明の第１の実施形態における通信制御システムの例を示すブロック図である。本実施形態における通信制御システムは、経路制御装置１００と、パケット転送装置２１０〜２３０と、外部端末３１０〜３２０とを備えている。ただし、パケット転送装置および外部端末の台数は、図１に例示する台数に限定されない。パケット転送装置は、１台または２台であってもよく、４台以上であってもよい。また、外部端末の台数は３台以上であってもよい。
【００４２】
パケット転送装置２１０〜２３０は、パケットを受信した際に、所定のルールに基づいてそのパケットを転送する装置である。なお、このルールのことを、パケット処理規則と記すこともある。パケット転送装置は、例えば、ルータやスイッチなどにより実現される。
【００４３】
図２は、パケット転送装置２１０の例を示すブロック図である。なお、パケット転送装置２２０〜２３０もパケット転送装置２１０と同様の構成であるため、説明を省略する。パケット転送装置２１０は、制御メッセージ送受信部２１１と、フローテーブル記憶部２１２と、パケット処理部２１３とを備えている。
【００４４】
制御メッセージ送受信部２１１は、経路制御装置１００と通信する機能を備えている。すなわち、制御メッセージ送受信部２１１は、経路制御装置１００と制御メッセージの送受信を行う。また、制御メッセージ送受信部２１１は、経路制御装置１００と構築するセッション数とセッション構築用のポート番号を処理する機能を備えている。
【００４５】
具体的には、制御メッセージ送受信部２１１は、セッション構築要求メッセージ（ＳＹＮメッセージ）にセッションの構築を要求するポート番号を含めて経路制御装置１００に送信する。制御メッセージ送受信部２１１は、経路制御装置１００からＳＹＮ＋ＡＣＫメッセージを受信したときに、そのメッセージに対するＡＣＫを送信することで、経路制御装置１００とのセッションを構築する。また、制御メッセージ送受信部２１１は、経路制御装置１００から、セッション数が通知された場合、そのセッション数をメモリ等（図示せず）に記憶させる。
【００４６】
フローテーブル記憶部２１２は、フローテーブルを記憶する。フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール（ヘッダフィールド）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、パケットに対する処理内容を定義したアクション（Ａｃｔｉｏｎｓ）とを含む組が定義される。以下、この組のことを処理規則（フローエントリ）と記すこともある。フローテーブルには、例えば、図２０に例示する情報が含まれる。
【００４７】
パケット処理部２１３は、フローテーブルに記憶されたアクションに基づいて、受信したパケットを処理する。具体的には、パケット転送装置２１０がパケットを受信すると、パケット処理部２１３は、フローテーブル記憶部２１２に記憶されたフローテーブルから、受信パケットに適合する照合規則（マッチングキー）を含む処理規則（フローエントリ）を検索する。検索の結果、受信パケットに適合するフローエントリが見つかった場合、パケット処理部２１３は、受信パケットに対して、該当するフローエントリのアクションフィールドに定義された処理内容（例えば、指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。
【００４８】
一方、受信パケットに適合するエントリがフローテーブルに見つからなかった場合、パケット処理部２１３は、経路制御装置１００に対して、新規フローを検出したことを示す制御メッセージ（すなわち、新規フロー検出通知メッセージ）を送信し、そのパケットに対する処理内容の問い合わせを行う。
【００４９】
経路制御装置１００は、自身が管理するネットワークの経路制御を行う装置である。具体的には、経路制御装置１００は、パケット転送装置にパケット処理規則の適用を指示することにより、パケットの通信経路を制御する装置である。本実施形態では、経路制御装置１００は、パケット転送装置２１０〜２３０を管理対象としている。図３は、経路制御装置１００の例を示すブロック図である。経路制御装置１００は、フローエントリ記憶部１０１と、トポロジ管理部１０２と、経路・アクション計算部１０３と、フローエントリ管理部１０４と、制御メッセージ処理部１０５と、複数セッション管理部１０６と、端末位置記憶部１０７と、パケット転送装置通信部１０８とを備えている。
【００５０】
フローエントリ記憶部１０１は、フローエントリを記憶する。具体的には、フローエントリ記憶部１０１に、フローエントリをデータベースとして記憶しておく。フローエントリ記憶部１０１は、例えば、磁気ディスク等により実現される。フローエントリ記憶部１０１は、図２０に例示するように、照合規則（マッチングルール）、アクション（タイマー値を含む）、および、フロー統計情報を含む処理規則（フローエントリ）を記憶する。なお、フローエントリ記憶部１０１には、後述するフローエントリ管理部１０４によってフローエントリが記憶される。
【００５１】
トポロジ管理部１０２は、後述するパケット転送装置通信部１０８を介して収集されたパケット転送装置２１０〜２３０の接続関係に基づいてネットワークトポロジ情報を作成し、作成したトポロジ情報を記憶する。なお、トポロジ情報とは、パケット転送装置が他の装置と接続する接続形態を示す情報であると言える。トポロジ管理部１０２は、例えば、パケット転送装置２１０〜２３０が保持している経路表の情報を収集し、その経路表に基づいてネットワークトポロジ情報を作成する。ただし、ネットワークトポロジ情報の作成方法は、これらの方法に限定されない。また、トポロジ管理部１０２は、他の経路制御装置１００からネットワークトポロジ情報を受信し、そのネットワークトポロジ情報を記憶するようにしてもよい。
【００５２】
端末位置記憶部１０７は、外部端末の位置情報を記憶する。端末位置記憶部１０７には、例えば、ＩＰアドレスなどの位置情報をデータベースとして記憶しておく。端末位置記憶部１０７には、予め管理者等が外部端末の位置情報を記憶させておいてもよく、経路制御装置１００が他の経路制御装置から位置情報を受信するたびに、その位置情報を端末位置記憶部１０７に記憶させてもよい。端末位置記憶部１０７は、例えば、磁気ディスク等により実現される。
【００５３】
経路・アクション計算部１０３は、処理規則（フローエントリ）として、パケット転送装置２１０〜２３０に実行させるアクションおよびパケットの転送経路を計算する。具体的には、経路・アクション計算部１０３は、端末位置記憶部１０７に記憶された位置情報から送信端末と宛先端末の位置を特定し、トポロジ管理部１０２が管理するネットワークトポロジ情報をもとに、パケットの転送経路を計算する。また、経路・アクション計算部１０３は、そのパケットに対して転送経路上のパケット転送装置に実行させる処理（アクション）を決定する。アクションの決定方法には、任意の方法を用いることができる。経路・アクション計算部１０３は、例えば、転送経路が計算できた場合に、パケットを転送するというアクションを実行させると決定してもよい。また、経路・アクション計算部１０３は、予め定めた種類のパケットに対しては、廃棄する、所定の装置に転送するなど、所定のアクションを実行させると決定するようにしてもよい。
【００５４】
フローエントリ管理部１０４は、パケット転送装置から受信した情報に基づいて照合規則（マッチングキー）を作成する。さらに、フローエントリ管理部１０４は、経路・アクション計算部１０３が計算したフローエントリをフローエントリ記憶部１０１に記憶させる。また、フローエントリ管理部１０４は、パケット転送装置２１０〜２３０からの処理規則（フローエントリ）の追加または更新要求に応じて、処理規則（フローエントリ）をフローテーブル記憶部２１２に設定する指示をパケット転送装置に行う。
【００５５】
制御メッセージ処理部１０５は、パケット転送装置２１０〜２３０から受信した制御メッセージを解析して、経路制御装置１００内の該当する処理手段に制御メッセージを引き渡す。例えば、パケット転送装置２１０〜２３０から新規フロー検出通知メッセージを受信した場合、制御メッセージ処理部１０５は、フローエントリ管理部１０４に対して、新規フローに対応する処理規則（フローエントリ）がフローエントリ記憶部１０１に登録されているか否かを確認させる。また、対応する処理規則がフローエントリ記憶部１０１に登録されていない場合、制御メッセージ処理部１０５は、新しい処理規則（フローエントリ）の作成を経路・アクション計算部１０３に依頼する。
【００５６】
複数セッション管理部１０６は、一台のパケット転送装置に対して複数のセッションを構築する。具体的には、複数セッション管理部１０６は、経路制御装置１００とパケット転送装置２１０との間のセッションを構築する際に、構築するセッション数とそのセッションの構築に用いられるポート番号とを決定する機能を備えている。
【００５７】
ポート番号の決定方法には任意の方法を用いることができる。複数セッション管理部１０６は、例えば、Ｗｅｌｌ−ｋｎｏｗｎポート番号以外からポート番号をランダムに決定してもよい。ただし、ポート番号の決定方法は、ランダムに決定する方法に限定されない。複数セッション管理部１０６は、例えば、Ｗｅｌｌ−ｋｎｏｗｎポート番号以外の未使用の番号のうち、最小のポート番号を選択してもよい。また、複数セッション管理部１０６は、例えば、設定ファイル等に予め定めておいたセッションの数を、構築するセッション数と決定してもよい。ただし、構築するセッション数の決定方法は、上記方法に限定されない。
【００５８】
パケット転送装置通信部１０８は、経路制御装置１００がパケット転送装置２１０〜２３０と通信を行う機能を備えている。すなわち、パケット転送装置通信部１０８は、パケット転送装置２１０〜２３０とパケットの送受信を行う。また、パケット転送装置通信部１０８は、パケット転送装置との通信状況に応じて、経路制御装置１００とパケット転送装置との通信方法を選択する。具体的には、パケット転送装置通信部１０８は、複数セッション管理部１０６が構築した複数のセッションの中から通信を行う際に用いるセッションを選択する。
【００５９】
パケット転送装置通信部１０８は、例えば、複数のセッションの中から、最も通信品質の高いセッションを、通信に用いるセッションとして選択してもよい。通信品質の判断基準として、例えば、再送回数がより少ないセッションをより通信品質の高いセッションと定めてもよい。ネットワークの輻輳や通信障害など、通信に異常が発生した場合、再送回数は多くなる傾向にある。そのため、再送回数がより少ないセッションを選択することで、経路制御装置１００からパケット転送装置に送信するメッセージの送信遅延を抑制できる。また、パケット転送装置通信部１０８は、後述する再送タイマの値がより小さいほど、通信状況がより優れていると判断し、より優れているセッションをパケット転送装置との通信に用いるセッションとして選択してもよい。
【００６０】
トポロジ管理部１０２と、経路・アクション計算部１０３と、フローエントリ管理部１０４と、制御メッセージ処理部１０５と、複数セッション管理部１０６と、パケット転送装置通信部１０８とは、プログラム（通信制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。例えば、プログラムは、経路制御装置１００の記憶部（図示せず）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、トポロジ管理部１０２、経路・アクション計算部１０３、フローエントリ管理部１０４、制御メッセージ処理部１０５、複数セッション管理部１０６、および、パケット転送装置通信部１０８として動作してもよい。
【００６１】
また、トポロジ管理部１０２と、経路・アクション計算部１０３と、フローエントリ管理部１０４と、制御メッセージ処理部１０５と、複数セッション管理部１０６と、パケット転送装置通信部１０８とは、それぞれが専用のハードウェアで実現されていてもよい。
【００６２】
次に、本実施形態における通信制御システムの動作を説明する。図４は、経路制御装置とパケット転送装置との間のセッションを構築する処理の例を示すフローチャートである。
【００６３】
初めに、経路制御装置１００が管理するネットワークにパケット転送装置２１０が参加する際の手順について説明する。以下、セッションの確立をパケット転送装置から開始する場合について説明するが、セッションの確立の開始は経路制御装置からでもよい。まず、パケット転送装置２１０は、経路制御装置１００が管理するネットワークに参入する際に、自身の情報を経路制御装置１００に通知するためのセッションを確立する。
【００６４】
各パケット転送装置２１０〜２３０の制御メッセージ送受信部２１１は、経路制御装置１００に対し、セッション構築要求メッセージ（ＳＹＮメッセージ）を送信する。ＳＹＮメッセージには、接続したいサーバのポート番号などの情報が含まれる。例えば、ＳＹＮメッセージにサーバのポート番号として「６６３３」が指定されていたとする。このＳＹＮメッセージを経路制御装置１００が受信すると、複数セッション管理部１０６は、ＴＣＰのセッション確立の手順に従い、パケット転送装置２１０に対してＳＹＮ＋ＡＣＫメッセージを送信する。
【００６５】
パケット転送装置２１０がそのＳＹＮ＋ＡＣＫメッセージを受信すると、制御メッセージ送受信部２１１は、経路制御装置１００に対して、ＳＹＮ＋ＡＣＫメッセージに対するＡＣＫを送信する。これにより、経路制御装置とパケット転送装置との間にＴＣＰセッションが１本確立される。
【００６６】
経路制御装置１００がこのＴＣＰセッション確立と同時にパケット転送装置２１０からの最初のＳＹＮメッセージを受信すると、制御メッセージ処理部１０５は、複数セッション管理部１０６に対してパケット転送装置２１０からセッション確立要求があったことを通知する（ステップＳ１１０１）。次に、複数セッション管理部１０６は、経路制御装置１００とパケット転送装置２１０との間に構築するセッション数を決定する（ステップＳ１１０２）。ここでは、経路制御装置１００とパケット転送装置２１０との間に構築するセッション数が２本と決定されたとする。この場合、複数セッション管理部１０６は、２本目のセッションを確立するために必要なポート番号を決定する（ステップＳ１１０３）。
【００６７】
複数セッション管理部１０６は、Ｗｅｌｌ−ｋｎｏｗｎポート番号以外からポート番号を決定する。ここでは、複数セッション管理部１０６がポート番号をランダムに決定するものとし、ポート番号として「１０２４」が選択されたものとする。なお、ポート番号の決定方法は、ランダムに決定する方法に限定されない。複数セッション管理部１０６は、例えば、Ｗｅｌｌ−ｋｎｏｗｎポート番号以外の未使用の番号のうち、最小のポート番号を選択してもよい。
【００６８】
パケット転送装置通信部１０８は、複数セッション管理部１０６が決定したポート番号をパケット転送装置２１０に通知する（ステップＳ１１０４）。このポート番号の通知は、経路制御装置１００がパケット転送装置２１０に送信する任意のメッセージに含めて行われてもよく、別途作成されたポート番号を通知する専用のメッセージに含めて行われてもよい。
【００６９】
そして、経路制御装置１００は、パケット転送装置２１０からのセッション確立要求をポート番号「１０２４」で待機する（ステップＳ１１０５）。パケット転送装置２１０の制御メッセージ送受信部２１１は、ポート番号を「１０２４」とするＳＹＮメッセージを経路制御装置１００に送信する。以降、セッションが確立されるまでの動作は、上述する内容と同様である。
【００７０】
具体的には、ステップＳ１１０２で構築するセッション数がＮと決定された場合、ステップＳ１１０３で複数セッション管理部１０６がポート番号をＮ個選択し、パケット転送装置通信部１０８がステップＳ１１０４〜Ｓ１１０５の処理を行えばよい。このように、経路制御装置１００とパケット転送装置２１０〜２３０との間でセッションが構築されることで、例えば、図１に示すネットワークが構築される。
【００７１】
次に、構築されたネットワークにデータパケットが到着したときの動作を説明する。図５は、パケットの流れの一例を示す説明図である。
【００７２】
外部端末３１０が外部端末３２０に向けてデータパケットを送信すると、データパケットは、パケット転送装置２１０に到着する（ステップＳ１６０１）。パケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置１００に対して、新規フロー検出通知メッセージを送信する（ステップＳ１６０２）。
【００７３】
この新規フロー検出通知メッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【００７４】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定している。ただし、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【００７５】
ここで、経路制御装置１００が新規フロー検出通知メッセージを受信したときの動作を説明する。図６は、経路制御装置１００が新規フロー検出通知メッセージを受信したときの動作の例を示すフローチャートである。
【００７６】
経路制御装置（コントローラ）１００が新規フロー検出通知メッセージを受信すると、経路・アクション計算部１０３は、受信した情報に基づいて、新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する（ステップＳ１７０２）。照合規則として作成する情報は、例えば、図２０に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。さらに、経路・アクション計算部１０３は、受信した情報に基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部装置３２０へのパケット転送経路を計算する（ステップＳ１７０３）。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【００７７】
次に、経路・アクション計算部１０３は、新規エントリの照合規則（マッチングキー）に一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ（処理規則）を、各パケット転送装置２１０〜２３０ごとに作成する（ステップＳ１７０４）。エントリが作成されると、パケット転送装置通信部１０８は、エントリ（処理規則）を送信するためのセッションを選択する（ステップＳ１７０５）。そして、パケット転送装置通信部１０８は、選択したセッションを用いて処理規則（ＦｌｏｗＭｏｄ）を送信する（ステップＳ１７０６）。
【００７８】
以上、図６に例示する手順で、経路制御装置１００は、パケット転送装置２１０〜２３０に対して処理規則を送信する（図５におけるステップＳ１６０３）。
【００７９】
各パケット転送装置２１０〜２３０が経路制御装置１００から処理規則を受信すると、制御メッセージ送受信部２１１は、フローテーブルへエントリを設定する。そして、パケット処理部２１３は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置２２０に転送する（ステップＳ１６０４−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０，２３０の順で転送され、外部端末３２０に届くことになる（ステップＳ１６０４−２、ステップＳ１６０４−３）。
【００８０】
以後、外部端末３１０から外部端末３２０宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順に転送され（ステップＳ１６０５−１〜Ｓ１６０５−４）、外部端末３２０に到着する。
【００８１】
以上のように、本実施形態によれば、経路制御装置１００のパケット転送装置通信部１０８が、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する。具体的には、複数セッション管理部１０６がパケット転送装置との間に複数のセッションを構築し、パケット転送装置通信部１０８が、複数のセッションが構築されたパケット転送装置との通信状況に応じて、その複数のセッションの中からパケット転送装置との通信に用いるセッションを選択する（例えば、通信状況がより優れているセッションを選択する）。このような構成により、経路制御装置１００からパケット処理装置へ送信されるパケットの遅延を抑制できる。
【００８２】
実施形態２．
次に、第２の実施形態における通信制御システムについて説明する。
第１の実施形態では、異常時に備え、経路制御装置１００とパケット転送装置２１０〜２３０との間にセッションを複数構築する場合について説明した。第２の実施形態では、構築されるセッションは１つであり、送信するパケットの内容に応じて送信形態を選択する点において、第１の実施形態と異なる。具体的には、送信するパケットに含まれる各情報の内容に応じて、通常モードで送信するか、緊急モードで送信するかが選択される。
【００８３】
ここで、緊急モードとは、通常よりも優先してパケットを送信する状態のことを意味する。緊急モードの例として、例えば、ＴＣＰセッションが再送フェーズに入っており、即座にパケットを送りだすことができない場合や、送信するパケットが重要なパケットである場合などが挙げられる。
【００８４】
第２の実施形態における通信制御システムも、図１に例示するように、経路制御装置１００と、パケット転送装置２１０〜２３０と、外部端末３１０〜３２０とを備えている。また、経路制御装置１００は、第１の実施形態と同様、自身が管理するネットワークの経路制御を行う装置であり、パケット転送装置２１０〜２３０を管理対象としている。
【００８５】
図７は、本発明の第２の実施形態における経路制御装置１００の例を示すブロック図である。第２の実施形態における経路制御装置１００は、フローエントリ記憶部１０１と、トポロジ管理部１０２と、経路・アクション計算部１０３と、フローエントリ管理部１０４と、制御メッセージ処理部１０５と、端末位置記憶部１０７と、パケット転送装置通信部１０８とを備えている。
【００８６】
なお、第１の実施形態では、図３に例示する複数セッション管理部１０６が複数のセッションを構築し、パケット転送装置通信部１０８が複数のセッションの中から通信で用いるセッションを選択する機能を備えていた。また、第１の実施形態では、パケット転送装置通信部１０８が図２に例示するパケット転送装置の制御メッセージ送受信部２１１と構築するセッション数とセッション構築用のポート番号を処理する機能を備えていた。しかし、第２の実施形態における通信制御システムは、これらの機能を備えていない。一方、第２の実施形態における通信制御システムでは、図７に例示するパケット転送装置通信部１０８が、転送すべきパケットが重要であるか否かを判断し、重要であれば緊急モードとして優先的に送信する機能を備えている点において第１の実施形態における通信制御システムと異なる。以下、詳しく説明する。
【００８７】
フローエントリ記憶部１０１は、フローエントリを記憶する。具体的には、フローエントリ記憶部１０１に、フローエントリをデータベースとして記憶しておく。フローエントリ記憶部１０１は、例えば、磁気ディスク等により実現される。フローエントリ記憶部１０１は、図２０に例示するように、照合規則（マッチングルール）、アクション（タイマー値を含む）、および、フロー統計情報を含む処理規則（フローエントリ）を記憶する。フローエントリ記憶部１０１には、フローエントリ管理部１０４によってフローエントリが記憶される。
【００８８】
トポロジ管理部１０２は、後述するパケット転送装置通信部１０８を介して収集されたパケット転送装置２１０〜２３０の接続関係に基づいてネットワークトポロジ情報を作成し、作成したトポロジ情報を記憶する。なお、トポロジ情報の作成方法および記憶方法は、第１の実施形態と同様である。また、端末位置記憶部１０７は、外部端末の位置情報を記憶する。なお、端末位置記憶部１０７が記憶する情報は、第１の実施形態と同様である。端末位置記憶部１０７は、例えば、磁気ディスク等により実現される。
【００８９】
経路・アクション計算部１０３は、処理規則（フローエントリ）として、パケット転送装置２１０〜２３０に実行させるアクションおよびパケットの転送経路を計算する。具体的には、経路・アクション計算部１０３は、端末位置記憶部１０７に記憶された位置情報から送信端末と宛先端末の位置を特定し、トポロジ管理部１０２が管理するネットワークトポロジ情報をもとに、パケットの転送経路を計算する。また、経路・アクション計算部１０３は、そのパケットに対して転送経路上のパケット転送装置に実行させる処理（アクション）を決定する。なお、アクションの決定方法およびパケットの転送経路の計算方法については、第１の実施形態と同様である。
【００９０】
フローエントリ管理部１０４は、パケット転送装置から受信した情報に基づいて照合規則（マッチングキー）を作成する。さらに、フローエントリ管理部１０４は、経路・アクション計算部１０３が計算したフローエントリをフローエントリ記憶部１０１に記憶させる。また、フローエントリ管理部１０４は、パケット転送装置２１０〜２３０からの処理規則（フローエントリ）の追加または更新要求に応じて、処理規則（フローエントリ）をフローテーブル記憶部２１２に設定する指示をパケット転送装置に行う。
【００９１】
制御メッセージ処理部１０５は、パケット転送装置２１０〜２３０から受信した制御メッセージを解析して、経路制御装置１００内の該当する処理手段に制御メッセージを引き渡す。例えば、パケット転送装置２１０〜２３０から新規フロー検出通知メッセージを受信した場合、制御メッセージ処理部１０５は、フローエントリ管理部１０４に対して、新規フローに対応する処理規則（フローエントリ）がフローエントリ記憶部１０１に登録されているか否かを確認させる。また、対応する処理規則がフローエントリ記憶部１０１に登録されていない場合、制御メッセージ処理部１０５は、新しい処理規則（フローエントリ）の作成を経路・アクション計算部１０３に依頼する。
【００９２】
パケット転送装置通信部１０８は、経路制御装置１００がパケット転送装置２１０〜２３０と通信を行う機能を備えている。すなわち、パケット転送装置通信部１０８は、パケット転送装置２１０〜２３０とパケットの送受信を行う。また、パケット転送装置通信部１０８は、パケットの通信状況に応じて送信形態を選択する。
【００９３】
具体的には、パケット転送装置通信部１０８は、対象とするパケットが通常よりも優先して送信すべき状況を示す場合（すなわち、より重要度の高い場合）に緊急モードで送信すると判断し、そのパケットを優先的に送信する。優先して送信すべき状況として、例えば、ＴＣＰセッションが再送フェーズに入っており、即座にパケットを送りだすことができない場合や、送信するパケットが重要なパケットである場合などが挙げられる。パケット転送装置通信部１０８は、送信するパケットについて予め定めておいたこれらの状況に基づいて、優先して送信すべき状況か否かを判断する。なお、パケット転送装置通信部１０８は、再送フェーズに入っているか否かを、再送タイマの値を参照して判断してもよい。また、パケット転送装置通信部１０８は、重要なパケットか否かを、パケットに含まれる情報のうちパケットの重要度を示す情報（例えば、ＵＲＧ（Ｕｒｇｅｎｔ）フラグなど）を参照して判断してもよい。すなわち、パケット転送装置通信部１０８は、このＴＣＰで規定される再送タイマの値がより小さいほど、通信状況がより優れていると判断し、より優れているセッションをパケット転送装置との通信に用いるセッションとして選択する。
【００９４】
トポロジ管理部１０２と、経路・アクション計算部１０３と、フローエントリ管理部１０４と、制御メッセージ処理部１０５と、パケット転送装置通信部１０８とは、プログラム（通信制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。また、トポロジ管理部１０２と、経路・アクション計算部１０３と、フローエントリ管理部１０４と、制御メッセージ処理部１０５と、パケット転送装置通信部１０８とは、それぞれが専用のハードウェアで実現されていてもよい。
【００９５】
パケット転送装置２１０〜２３０は、第１の実施形態と同様、パケットを受信した際に、所定のルールに基づいてそのパケットを転送する装置である。また、第２の実施形態におけるパケット転送装置２１０〜２３０の構成は、図２に例示する構成と同様である。すなわち、第２の実施形態におけるパケット転送装置２１０も、制御メッセージ送受信部２１１と、フローテーブル記憶部２１２と、パケット処理部２１３とを備えている。
【００９６】
制御メッセージ送受信部２１１は、経路制御装置１００と通信する機能を備えている。
【００９７】
フローテーブル記憶部２１２は、フローテーブルを記憶する。第１の実施形態と同様、フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール（ヘッダフィールド）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、パケットに対する処理内容を定義したアクション（Ａｃｔｉｏｎｓ）とを含む組が定義される（図２０参照）。
【００９８】
パケット処理部２１３は、フローテーブル記憶部２１２から、受信パケットに適合する照合規則（マッチングキー）を含む処理規則（フローエントリ）を検索し、その処理規則（フローエントリ）のアクションフィールドに記述された処理内容（例えば、特定のポートへの転送、フラッディング、廃棄など）を実行する。
【００９９】
次に、本実施形態における通信制御システムの動作を図５を用いて説明する。
【０１００】
外部端末３１０が外部端末３２０に向けてデータパケットを送信すると、データパケットは、パケット転送装置２１０に到着する（ステップＳ１６０１）。パケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置１００に対して、新規フロー検出通知メッセージを送信する（ステップＳ１６０２）。
【０１０１】
この新規フロー検出通知メッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【０１０２】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定している。ただし、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【０１０３】
ここで、経路制御装置１００が新規フロー検出通知メッセージを受信したときの動作を説明する。図８は、経路制御装置１００が新規フロー検出通知メッセージを受信したときの動作の例を示すフローチャートである。
【０１０４】
経路制御装置（コントローラ）１００が新規フロー検出通知メッセージを受信すると、経路・アクション計算部１０３は、受信した情報に基づいて、新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する（ステップＳ１５０２）。照合規則として作成する情報は、例えば、図２０に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。さらに、経路・アクション計算部１０３は、受信した情報に基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部装置３２０へのパケット転送経路を計算する（ステップＳ１５０３）。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【０１０５】
次に、経路・アクション計算部１０３は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ（処理規則）を、各パケット転送装置２１０〜２３０ごとに作成する（ステップＳ１５０４）。
【０１０６】
次に、経路制御装置１００のパケット転送装置通信部１０８は、パケットの通信状況に応じて送信形態を選択する（ステップＳ１５０５）。具体的には、パケット転送装置通信部１０８は、送信するパケットの通信状況に応じて、通常モードで送信するか、緊急モードで送信するかを選択する。緊急モードの例として、例えば、ＴＣＰセッションが再送フェーズに入っており、即座にパケットを送りだすことができない場合や、送信するパケットが重要なパケットである場合などが挙げられる。
【０１０７】
そして、経路制御装置１００のパケット転送装置通信部１０８は、ステップＳ１５０５の処理で選択した送信形態で処理規則を送信する（ステップＳ１５０６）。
【０１０８】
各パケット転送装置２１０〜２３０が経路制御装置（コントローラ）１００から処理規則を受信すると、制御メッセージ送受信部２１１は、フローテーブルに受信したエントリを設定する。そして、パケット処理部２１３は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置２２０に転送する（図５におけるステップＳ１６０４−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０，２３０の順で転送され、外部端末３２０に届くことになる（ステップＳ１６０４−２、ステップＳ１６０４−３）。
【０１０９】
以後、外部端末３１０から外部端末３２０宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順に転送され（ステップＳ１６０５−１〜Ｓ１６０５−４）、外部端末３２０に到着する。
【０１１０】
以上のように、本実施形態によれば、経路制御装置１００のパケット転送装置通信部１０８が、パケット転送装置との通信状況に応じて、そのパケット転送装置との通信方法を選択する。具体的には、パケット転送装置通信部１０８が、パケット転送装置との通信状況（例えば、ＴＣＰセッションが再送フェーズに入っている場合、送信するパケットが重要なパケットである場合など）に応じて、緊急モードで送信する通信方法を選択する。このような構成であっても、経路制御装置１００からパケット処理装置へ送信されるパケットの遅延を抑制できる。
【実施例１】
【０１１１】
以下、具体的な実施例により本発明を説明するが、本発明の範囲は以下に説明する内容に限定されない。第１の実施例は、本発明の第１の実施形態における通信制御システムに対応する。以下、本実施例における通信制御システムを、図１、図３および図２を用いて説明する。
【０１１２】
第１の実施例では、オープンフローネットワークを想定した通信制御システムについて説明する。経路制御装置（コントローラ）は、複数のセッションを管理し、その複数のセッションの中から所望のセッションを選択する機能をオープンフローコントローラに具備した装置に相当する。また、パケット転送装置は、経路制御装置（コントローラ）との間に構築されるセッションの数と各セッションを構築するポート番号とを保持する機能をオープンフロースイッチに具備した装置に相当する。
【０１１３】
図１に例示するように、本実施例における通信制御システムは、２台の外部端末３１０，３２０と、外部端末間に３台のパケット転送装置２１０〜２３０と、このネットワークを制御する経路制御装置１００とを含む。
【０１１４】
図９は、経路制御装置とパケット転送装置との間のセッションを構築する処理の例を示すフローチャートである。以下、図９を用いて、本実施例における通信制御システムの動作について説明する。
【０１１５】
初めに、経路制御装置（コントローラ）１００が管理するオープンフローネットワークにパケット転送装置２１０が参加する際の手順を説明する。以下、オープンフローネットワークにおけるセッションの確立をパケット転送装置２１０〜２３０から開始する場合について説明するが、セッションの確立の開始は経路制御装置（コントローラ）１００からでもよい。まず、パケット転送装置２１０は、経路制御装置（コントローラ）１００が管理するネットワークに参入する際に、自身の情報を経路制御装置１００に通知するためのセッションを確立する。ここでは、セッションをＳｅｃｕｒｅ  Ｃｈａｎｅｌ（ＴＣＰ  または  ＳＳＬ）にて確立するものとする。
【０１１６】
各パケット転送装置２１０〜２３０の制御メッセージ送受信部２１１は、経路制御装置（コントローラ）１００に対し、セッション構築要求メッセージ（ＳＹＮメッセージ）を送信する。ＳＹＮメッセージには、接続したいサーバのポート番号などの情報が含まれる。例えば、ＳＹＮメッセージにサーバのポート番号として「６６３３」が指定されていたとする。このＳＹＮメッセージを経路制御装置１００が受信すると、複数セッション管理部１０６は、ＴＣＰのセッション確立の手順（メカニズム）に従い、パケット転送装置２１０に対してＳＹＮ＋ＡＣＫメッセージを送信する。
【０１１７】
パケット転送装置２１０がそのＳＹＮ＋ＡＣＫメッセージを受信すると、制御メッセージ送受信部２１１は、経路制御装置１００に対して、ＳＹＮ＋ＡＣＫメッセージに対するＡＣＫを送信する。これにより、経路制御装置とパケット転送装置との間にＴＣＰセッションが１本確立される。
【０１１８】
経路制御装置１００がこのＴＣＰセッション確立と同時にパケット転送装置２１０からの最初のＳＹＮメッセージを受信すると、制御メッセージ処理部１０５は、複数セッション管理部１０６に対してパケット転送装置２１０からセッション確立要求があったことを通知する（ステップＳ３０１）。次に、複数セッション管理部１０６は、経路制御装置１００とパケット転送装置２１０との間に構築するセッション数（コネクション数）を決定する（ステップＳ３０２）。ここでは、経路制御装置１００とパケット転送装置２１０との間に構築するセッション数が２本と決定されたとする。この場合、複数セッション管理部１０６は、２本目のセッションを確立するために必要なポート番号を決定する（ステップＳ３０３）。
【０１１９】
複数セッション管理部１０６は、Ｗｅｌｌ−ｋｎｏｗｎポート番号以外からポート番号を決定する。ここでは、複数セッション管理部１０６がポート番号をランダムに決定するものとし、ポート番号として「１０２４」が選択されたものとする。なお、ポート番号の決定方法は、ランダムに決定する方法に限定されない。複数セッション管理部１０６は、例えば、Ｗｅｌｌ−ｋｎｏｗｎポート番号以外の未使用の番号のうち、最小のポート番号を選択してもよい。
【０１２０】
パケット転送装置通信部１０８は、複数セッション管理部１０６が決定したポート番号をＦｅａｔｕｒｅｓ  Ｒｅｑｕｅｓｔメッセージに含めてパケット転送装置２１０に通知する（ステップＳ３０４）。ただし、ポート番号を通知する際に用いるメッセージはＦｅａｔｕｒｅｓ  Ｒｅｑｕｅｓｔメッセージに限定されない。このポート番号の通知は、例えば、経路制御装置１００がパケット転送装置２１０に送信する任意のメッセージに含めて行われてもよく、別途作成されたポート番号を通知する専用のメッセージに含めて行われてもよい。
【０１２１】
そして、経路制御装置１００は、パケット転送装置２１０からのセッション確立要求をポート番号「１０２４」で待機する（ステップＳ３０５）。パケット転送装置２１０の制御メッセージ送受信部２１１は、Ｆｅａｔｕｒｅｓ  Ｒｅｑｕｅｓｔに対する応答であるＦｅａｔｕｒｅｓ  Ｒｅｐｌｙを経路制御装置（コントローラ）１００に返信した後、ポート番号を「１０２４」とするＳＹＮメッセージを経路制御装置（コントローラ）１００に送信する。以降、セッションが確立されるまでの動作は、上述する内容と同様である。
【０１２２】
具体的には、ステップＳ３０２で構築するセッション数がＮと決定された場合、ステップＳ３０３で複数セッション管理部１０６がポート番号をＮ個選択する。そして、パケット転送装置通信部１０８がステップＳ３０４〜Ｓ３０５の処理を行えばよい。このように、経路制御装置１００とパケット転送装置２１０〜２３０との間でセッションが構築されることで、オープンフローネットワークが構築される。
【０１２３】
次に、構築されたオープンフローネットワークにデータパケットが到着したときの動作を図２１を用いて説明する。
【０１２４】
外部端末３１０が外部端末３２０に向けてデータパケットを送信すると、データパケットは、パケット転送装置２１０に到着する（ステップＳ９０１）。パケット転送装置２１０がデータパケットを受信すると、パケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ９０２）。
【０１２５】
このＰａｃｋｅｔ−Ｉｎメッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【０１２６】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定している。ただし、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【０１２７】
ここで、経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信したときの動作を説明する。図１０は、経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信したときの動作の例を示すフローチャートである。
【０１２８】
経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信すると、経路・アクション計算部１０３は、受信した情報に基づいて、新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する（ステップＳ４０２）。照合規則として作成する情報は、例えば、図２０に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。さらに、経路・アクション計算部１０３は、受信した情報に基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部装置３２０へのパケット転送経路を計算する（ステップＳ４０３）。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【０１２９】
次に、経路制御装置（コントローラ）１００の経路・アクション計算部１０３は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ（ＦｌｏｗＭｏｄメッセージ）を、各パケット転送装置２１０〜２３０ごとに作成する（ステップＳ４０４）。ＦｌｏｗＭｏｄメッセージが作成されると、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、ＦｌｏｗＭｏｄメッセージを送信するためのセッションを選択し（ステップＳ４０５）、選択したセッションを用いて処理規則（ＦｌｏｗＭｏｄ）を送信する（ステップＳ４０６）。
【０１３０】
なお、ステップＳ４０５において、パケット転送装置通信部１０８は、例えば、ＴＣＰのタイマフィールドの内容をもとに、ＦｌｏｗＭｏｄメッセージを送信する際に用いるセッションを選択する。以下、ＴＣＰのタイマフィールドの内容をもとにセッションを選択する方法を詳しく説明する。
【０１３１】
図１１は、セッションを選択する処理の例を示すフローチャートである。第１の実施例において、経路制御装置（コントローラ）とパケット転送装置２１０との間の１本目のセッションをセッションＡと記し、２本目のセッションをセッションＢと記す。
【０１３２】
ＴＣＰでは、送信したデータに対する相手からの確認応答パケットを所定の時間内に受信しなければ、再送タイマが作動する。ここで、再送タイマが作動するとは、確認応答（ＡＣＫ）の待ち時間が所定の時間経過したことを示す。再送タイマが作動しているか否かは、各セッションの再送タイマの作動回数を示す変数であるｔ＿ｒｘｔｓｈｉｆｔ変数を参照すれば判断できる。すなわち、ｔ＿ｒｘｔｓｈｉｆｔ変数の値が０の場合、再送タイマは作動しておらず、ｔ＿ｒｘｔｓｈｉｆｔ変数の値が１以上の場合再送タイマが作動していることを意味する。具体的には、ｔ＿ｒｘｔｓｈｉｆｔ変数の値がＫであれば、再送処理が連続してＫ回行われていることを示す。以下、ｔ＿ｒｘｔｓｈｉｆｔ変数の値のことを、ｔ＿ｒｘｔｓｈｉｆｔ値または再送タイマ値と記すこともある。
【０１３３】
この変数の値が大きいと言うことは、データパケットが送信先の端末に到着している可能性が高いことを意味する。言い換えると、この変数の値が小さいセッションほど、品質が良いと判断できる。
【０１３４】
そこで、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、各セッションのｔ＿ｒｘｔｓｈｉｆｔ変数の値を確認する（ステップＳ６０１）。第１の実施例において、セッションＡのｔ＿ｒｘｔｓｈｉｆｔ変数の値をａ、セッションＢのｔ＿ｒｘｔｓｈｉｆｔ変数の値をｂ（≧ａ）とする。経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、はａとｂの値を比較する（ステップＳ６０２）。そして、パケット転送装置通信部１０８は、再送タイマ値が最も小さいセッションを選択する（ステップＳ６０３）。この場合、パケット転送装置通信部１０８は、再送タイマ値が小さいセッションＡを選択する。その結果、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、ステップＳ６０３で決定されたセッション（すなわち、セッションＡ）を用いてＦｌｏｗＭｏｄメッセージを送信する。
【０１３５】
このように、このように経路制御装置（コントローラ）１００とパケット転送装置２１０〜２３０との間に複数のセッションを構築し、経路制御装置（コントローラ）１００（より詳しくは、パケット転送装置通信部１０８）がパケット転送装置２１０〜２３０に対してパケットを送信する際に、通信品質の良いセッションを選択する。そのため、パケット転送装置２１０〜２３０に対してパケットを正確に送信することができる。
【０１３６】
以上、経路制御装置（コントローラ）１００とパケット転送装置２１０との間の通信を例に、ＦｌｏｗＭｏｄを送信するまでの処理を説明した。なお、経路制御装置（コントローラ）１００とパケット転送装置２２０との間の通信、および、経路制御装置（コントローラ）１００とパケット転送装置２３０との間の通信についても同様であるため、説明を省略する。
【０１３７】
各パケット転送装置２１０〜２３０が経路制御装置（コントローラ）１００からＦｌｏｗＭｏｄを受信すると、制御メッセージ送受信部２１１は、フローテーブルに受信したエントリを設定する。そして、パケット処理部２１３は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置２２０に転送する（図２１におけるステップＳ９０４−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０，２３０の順で転送され、外部端末３２０に届くことになる（ステップＳ９０４−２、ステップＳ９０４−３）。
【０１３８】
以後、外部端末３１０から外部端末３２０宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順に転送され（ステップＳ９０５−１〜Ｓ９０５−４）、外部端末３２０に到着する。
【０１３９】
次に、第１の実施例における第１の変形例について説明する。第１の実施例では、複数のセッションを構築し、通信状況に応じて使用するセッションを選択する場合について説明した。本変形例では、経路制御装置（コントローラ）１００とパケット転送装置２１０との間で事前にプライマリセッション（以下、Ｐｒｉｍａｒｙセッションと記す。）およびセカンダリセッション（以下、Ｓｅｃｏｎｄａｒｙセッションと記す。）を決定しておく点において、第１の実施例と異なる。通常時には、装置間の通信にＰｒｉｍａｒｙセッションが使用され、Ｐｒｉｍａｒｙセッションの異常時には、装置間の通信にＳｅｃｏｎｄａｒｙセッションが使用される。
【０１４０】
本変形例における通信制御システムの動作を説明する。経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信して各パケット転送装置２１０〜２３０ごとにＦｌｏｗＭｏｄメッセージを作成するまでの処理は、図１０に例示するステップＳ４０２〜ステップＳ４０４と同様である。その後、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、ＦｌｏｗＭｏｄメッセージを送信するためのセッションを選択する。このセッションを選択する動作を図１２を用いて説明する。
【０１４１】
図１２は、セッションを選択する動作の例を示すフローチャートである。以下の説明において、Ｐｒｉｍａｒｙセッションは、１本目に構築されたセッション、Ｓｅｃｏｎｄａｒｙセッションは、２本目に構築されたセッションとする。まず、パケット転送装置通信部１０８は、セッションを選択するときに、Ｐｒｉｍａｒｙセッションのｔ＿ｒｘｔｓｈｉｆｔ値を参照する（ステップＳ５０１）。そして、パケット転送装置通信部１０８は、異常と判断する際の基準値として予め設定された値（以下、ｔｈｒｅｓｈｏｌｄと記す。）と、Ｐｒｉｍａｒｙセッションのｔ＿ｒｘｔｓｈｉｆｔ値とを比較する（ステップＳ５０２）。
【０１４２】
Ｐｒｉｍａｒｙセッションのｔ＿ｒｘｔｓｈｉｆｔ値が基準値より大きければ（ステップＳ５０２におけるＹ）、パケット転送装置通信部１０８は、Ｐｒｉｍａｒｙセッションの異常と判断し、Ｐｒｉｍａｒｙセッションを選択せずに、Ｓｅｃｏｎｄａｒｙセッションを選択する（ステップＳ５０３）。一方、Ｐｒｉｍａｒｙセッションのｔ＿ｒｘｔｓｈｉｆｔ値が基準値以下であれば（ステップＳ５０２におけるＮ）、パケット転送装置通信部１０８は、Ｐｒｉｍａｒｙセッションが通常の通信状況にあると判断し、Ｐｒｉｍａｒｙセッションを選択する（ステップＳ５０４）。そして経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、選択したセッションを用いて、パケット転送装置２１０〜２３０に対してＦｌｏｗＭｏｄメッセージを送信する。
【０１４３】
このような方法でも、通信品質の良いセッションを選択できるため、経路制御装置（コントローラ）１００からパケット転送装置へ送信されるパケットの遅延を抑制できる。
【０１４４】
次に、第１の実施例における第２の変形例を説明する。第１の実施例および第１の実施例における第１の変形例では、経路制御装置（コントローラ）１００とパケット転送装置２１０〜２３０との間の２本目以降のセッションもネットワーク構築時に構築される場合について説明した。本変形例では、１本目のセッションについては、第１の実施例および第１の実施例における第１の変形例と同様、ネットワーク構築時に構築される。一方、２本目のセッションについては、１本目のセッションに異常が発生したタイミングで構築される点において、第１の実施例および第１の実施例における第１の変形例と異なる。
【０１４５】
本変形例における通信制御システムの動作を説明する。まず初めに、経路制御装置（コントローラ）１００が管理するオープンフローネットワークにパケット転送装置２１０が参加する際の手順を説明する。以下、オープンフローネットワークにおけるセッションの確立をパケット転送装置２１０〜２３０から開始する場合について説明するが、セッションの確立の開始は経路制御装置（コントローラ）１００からでもよい。まず、パケット転送装置２１０は、経路制御装置（コントローラ）１００が管理するネットワークに参入する際に、自身の情報を経路制御装置１００に通知するためのセッションを確立する。ここでは、セッションをＳｅｃｕｒｅ  Ｃｈａｎｅｌ（ＴＣＰ  または  ＳＳＬ）にて確立するものとする。
【０１４６】
各パケット転送装置２１０〜２３０の制御メッセージ送受信部２１１は、経路制御装置（コントローラ）１００に対し、セッション構築要求メッセージ（ＳＹＮメッセージ）を送信する。ＳＹＮメッセージには、接続したいサーバのポート番号などの情報が含まれる。例えば、ＳＹＮメッセージにサーバのポート番号として「６６３３」が指定されていたとする。このＳＹＮメッセージを経路制御装置１００が受信すると、複数セッション管理部１０６は、ＴＣＰのセッション確立の手順に従い、パケット転送装置２１０に対してＳＹＮ＋ＡＣＫメッセージを送信する。
【０１４７】
パケット転送装置２１０がそのＳＹＮ＋ＡＣＫメッセージを受信すると、制御メッセージ送受信部２１１は、経路制御装置１００に対して、ＳＹＮ＋ＡＣＫメッセージに対するＡＣＫを送信する。これにより、経路制御装置とパケット転送装置との間にＴＣＰセッションが１本確立される。この手順により、オープンフローネットワークが構築されたとする。
【０１４８】
次に、構築されたオープンフローネットワークにデータパケットが到着したときの動作を図２１を用いて説明する。外部端末３１０が外部端末３２０に向けてデータパケットを送信すると、データパケットは、パケット転送装置２１０に到着する（ステップＳ９０１）。パケット転送装置２１０がデータパケットを受信すると、パケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する（ステップＳ９０２）。
【０１４９】
このＰａｃｋｅｔ−Ｉｎメッセージには、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【０１５０】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定している。ただし、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【０１５１】
ここで、経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信したときの動作を説明する。図１３は、経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信したときの動作の例を示すフローチャートである。
【０１５２】
経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信すると、経路・アクション計算部１０３は、受信した情報に基づいて、新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する（ステップＳ１２０２）。照合規則として作成する情報は、例えば、図２０に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。さらに、経路・アクション計算部１０３は、受信した情報に基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部装置３２０へのパケット転送経路を計算する（ステップＳ１２０３）。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【０１５３】
次に、経路制御装置（コントローラ）１００の経路・アクション計算部１０３は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ（ＦｌｏｗＭｏｄメッセージ）を、各パケット転送装置２１０〜２３０ごとに作成する（ステップＳ１２０４）。
【０１５４】
次に経路制御装置（コントローラ）１００では、作成したエントリを送信する処理に移る。その際に、パケット転送装置通信部１０８は、そのセッションが即座にパケットを送信できる状態か否かをチェックする。チェックする指標として、ＴＣＰの再送タイマに係る変数（ｔ＿ｒｘｔｓｈｉｆｔ）が用いられる。ＴＣＰの再送タイマが所定の値（ｔｈｒｅｓｈｏｌｄ）よりも大きいと言うことは、パケット転送装置へ送信したパケットが届いていないことを示しているとも言える。
【０１５５】
経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、ｔ＿ｒｘｔｓｈｉｆｔ値を参照し（ステップＳ１２０５）、異常と判断する際の基準値として予め設定された値（ｔｈｒｅｓｈｏｌｄ）と、ｔ＿ｒｘｔｓｈｉｆｔ値とを比較する（ステップＳ１２０６）。ここでは、ｔｈｒｅｓｈｏｌｄを品質劣化と判定する際の基準値として用いる。
【０１５６】
ｔ＿ｒｘｔｓｈｉｆｔ値がｔｈｒｅｓｈｏｌｄより大きければ（ステップＳ１２０６におけるＹ）、複数セッション管理部１０６は、２本目以降のセッションを構築すると決定する（ステップＳ１２０７）。
【０１５７】
次に、複数セッション管理部１０６は、２本目のセッションを確立するために必要なポート番号を決定する（ステップＳ１２０８）。複数セッション管理部１０６は、Ｗｅｌｌ−ｋｎｏｗｎポート番号以外からポート番号を決定する。ここでは、複数セッション管理部１０６がポート番号をランダムに決定するものとし、ポート番号として「１０２４」が選択されたものとする。なお、ポート番号の決定方法は、ランダムに決定する方法に限定されない。複数セッション管理部１０６は、例えば、Ｗｅｌｌ−ｋｎｏｗｎポート番号以外の未使用の番号のうち、最小のポート番号を選択してもよい。
【０１５８】
パケット転送装置通信部１０８は、複数セッション管理部１０６が決定したポート番号をパケット転送装置２１０に通知する（ステップＳ１２０９）。このポート番号の通知は、経路制御装置１００がパケット転送装置２１０に送信する任意のメッセージに含めて行われてもよく、別途作成されたポート番号を通知する専用のメッセージに含めて行われてもよい。
【０１５９】
そして、経路制御装置（コントローラ）１００は、パケット転送装置２１０からのセッション確立要求をポート番号「１０２４」で待機する（ステップＳ１２１０）。パケット転送装置２１０の制御メッセージ送受信部２１１は、Ｆｅａｔｕｒｅポート番号を「１０２４」とするＳＹＮメッセージを経路制御装置１００に送信する。以降、セッションが確立されるまでの動作は、上述する内容と同様である。
【０１６０】
セッションの確立後、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、新たに構築したセッションを用いてＦｌｏｗＭｏｄをパケット転送装置２１０〜２３０に対して送信する（ステップＳ１２１１）。
【０１６１】
なお、ステップＳ１２０６において、ｔ＿ｒｘｔｓｈｉｆｔ値がｔｈｒｅｓｈｏｌｄ以下の場合（ステップＳ１２０６におけるＮ）、パケット転送装置通信部１０８は、既存のセッションを用いてＦｌｏｗＭｏｄをパケット転送装置２１０〜２３０に対して送信する（ステップＳ１２１１）。
【０１６２】
また、図１３のステップＳ１２１１において、ＦｌｏｗＭｏｄが送信される処理が、図２１におけるステップＳ９０３の処理に相当する。以降、データパケットは、ステップＳ９０４−１〜Ｓ９０４−３、および、ステップＳ９０５−１〜ステップＳ９０５−４の処理に基づいて、外部端末３２０に送信される。
【０１６３】
このような方法でも、通信品質の良いセッションを選択できるため、経路制御装置（コントローラ）１００からパケット転送装置へ送信されるパケットの遅延を抑制できる。  
【０１６４】
なお、第１の実施形態、第１の実施例、第１の実施例における第１の変形例および第１の実施例における第２の変形例のいずれも、１台の経路制御装置（コントローラ）が１台のパケット転送装置と複数のセッションを構築する場合について説明した。ただし、経路制御装置（コントローラ）の台数は１台に限定されない。２台以上の経路制御装置（コントローラ）が１台のパケット転送装置に対して複数のセッションを構築してもよい。
【０１６５】
また、第１の実施形態では、複数セッション管理部１０６が、経路制御装置（コントローラ）１００とパケット転送装置２１０〜２３０との間にＳｅｃｕｒｅ  Ｃｈａｎｎｅｌを複数本構築する。一般的には、経路制御装置（コントローラ）１００とパケット転送装置２１０〜２３０との間に構築されるＳｅｃｕｒｅ  Ｃｈａｎｎｅｌは一本である。しかし、Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌが一本であると、そのＳｅｃｕｒｅ  Ｃｈａｎｎｅｌの品質が悪い場合、経路制御装置（コントローラ）１００が送信したパケットがパケット転送装置２１０〜２３０に届かない可能性がある。しかし、本実施形態では、複数セッション管理部１０６が構築した複数のセッションの中から、品質の良いセッションを選択する。そのため、例えば、特許文献１、非特許文献１，２に記載されたオープンフローネットワークと比較して、高確率で経路制御装置（コントローラ）１００からのパケットをパケット転送装置に届けることができる。
【実施例２】
【０１６６】
次に、本発明の第２の実施例について説明する。第２の実施例は、本発明の第２の実施形態における通信制御システムに対応する。第２の実施例も、第１の実施例と同様、オープンフローネットワークを想定した通信制御システムについて説明する。
【０１６７】
経路制御装置（コントローラ）１００は、パケットの通信状況に応じて送信形態を選択する機能をオープンフローコントローラに具備した装置に相当する。また、パケット転送装置は、オープンフロースイッチそのものに相当する。
【０１６８】
図１４は、本発明の第２の実施例における通信制御システムの例を示すブロック図である。本実施例における通信制御システムは、経路制御装置（コントローラ）１００と、３台のパケット転送装置２１０〜２３０と、４台の外部端末３１０〜３４０とを備えている。この通信制御システムでオープンフローネットワークを形成しているものとする。また、外部端末３１０〜３４０の間に３台のパケット転送装置２１０〜２３０が存在し、経路制御装置（コントローラ）１００がこのオープンフローネットワークを制御する
【０１６９】
なお、以下の説明では、外部端末３１０が外部端末３２０へデータパケットを送信し、外部端末３３０が外部端末３４０へデータパケットを送信するものとする。
【０１７０】
次に、構築されたオープンフローネットワークにデータパケットが到着したときの動作を説明する。図１５は、パケットの流れの一例を示す説明図である。
【０１７１】
パケット転送装置２１０が外部端末３１０からデータパケットを受信すると（ステップＳ１９０１）、パケット処理部２１３は、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎ）を送信する（ステップＳ１９０２）。
【０１７２】
この新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎ）には、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【０１７３】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定している。ただし、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【０１７４】
ここで、経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信したときの動作を説明する。図１６は、経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信したときの動作の例を示すフローチャートである。
【０１７５】
経路制御装置（コントローラ）１００が新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎ）を受信すると、経路・アクション計算部１０３は、受信した情報に基づいて、新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する（ステップＳ１８０２）。照合規則として作成する情報は、例えば、図２０に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。さらに、経路・アクション計算部１０３は、受信した情報に基づいて、宛先である外部端末３２０の位置確認を行い、外部端末３１０から外部装置３２０へのパケット転送経路を計算する（ステップＳ１８０３）。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【０１７６】
次に、経路制御装置（コントローラ）１００の経路・アクション計算部１０３は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ（ＦｌｏｗＭｏｄ）を、各パケット転送装置２１０〜２３０ごとに作成する（ステップＳ１８０４）。
【０１７７】
次に、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、パケットの送信形態を選択し（ステップＳ１８０５）、その送信形態でＦｌｏｗＭｏｄを送信する（ステップＳ１８０６）。
【０１７８】
さらに、ステップＳ１８０５においてパケット転送装置通信部１０８が、パケットの送信形態を選択する方法を説明する。図１７は、パケットの送信形態を選択する処理の例を示すフローチャートである。第２の実施例では、送信形態を選択する際、ＴＣＰの再送タイマの作動回数を示す変数（ｔ＿ｒｘｔｓｈｉｆｔ）を用いる。
【０１７９】
まず、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、ＴＣＰの再送タイマの作動回数を示す変数であるｔ＿ｒｘｔｓｈｉｆｔ値を参照する（ステップＳ１３０１）。そして、パケット転送装置通信部１０８は、異常と判断する際の基準値として予め設定された値（ｔｈｒｅｓｈｏｌｄ）と、ｔ＿ｒｘｔｓｈｉｆｔ値とを比較し、ｔ＿ｒｘｔｓｈｉｆｔ値がｔｈｒｅｓｈｏｌｄ以上か否かを判断する（ステップＳ１３０２）。ここで、ｔｈｒｅｓｈｏｌｄ≧１の場合、ＴＣＰが再送フェーズに入っていることを示すことから、予めｔｈｒｅｓｈｏｌｄ＝１と設定しておく。
【０１８０】
また、経路制御装置（コントローラ）１００がパケット転送装置２１０からＰａｃｋｅｔ−Ｉｎを受信するまで、パケットロスは発生していないものと仮定する。すなわち、最初の状態では、ｔ＿ｒｘｔｓｈｉｆｔの値は０である。よって、ｔ＿ｒｘｔｓｈｉｆｔ≧ｔｈｒｅｓｈｏｌｄは偽と判断される（すなわち、ｔ＿ｒｘｔｓｈｉｆｔ値がｔｈｒｅｓｈｏｌｄ以上でないと判断される）ため（ステップＳ１３０２におけるＮ）、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、パケット転送装置２１０に対して、通常通りＦｌｏｗＭｏｄを送信する（ステップＳ１３０４）。なお、ｔ＿ｒｘｔｓｈｉｆｔ値がｔｈｒｅｓｈｏｌｄ以上であると判断された場合（ステップＳ１３０２におけるＹ）の処理については後述する。
【０１８１】
なお、図１７のステップＳ１３０４において、ＦｌｏｗＭｏｄが送信される処理が、図１５におけるステップＳ１９０３−１の処理に相当する。また、経路制御装置（コントローラ）１００とパケット転送装置２２０との間のセッション、および、経路制御装置（コントローラ）１００とパケット転送装置２３０との間のセッションにおける通信でも、パケットロスは発生していないと仮定する。この場合、経路制御装置（コントローラ）１００では同様の処理が行われ、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、パケット転送装置２２０〜２３０にＦｌｏｗＭｏｄを送信する（図１５におけるステップＳ１９０３−２、ステップＳ１９０３−３）。
【０１８２】
ここで、パケット転送装置２２０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ１９０３−２で送信したＦｌｏｗＭｏｄメッセージ）と、パケット転送装置２３０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ１９０３−３で送信したＦｌｏｗＭｏｄメッセージ）が各パケット転送装置に到着したとする。一方、パケット転送装置２１０に対するＦｌｏｗＭｏｄメッセージ（ステップＳ１９０３−１で送信したＦｌｏｗＭｏｄメッセージ）がパケット転送装置２１０に到着しなかったとする。
【０１８３】
経路制御装置（コントローラ）１００のタイマ起動部（図示せず）は、各ＦｌｏｗＭｏｄ（ステップＳ１９０３−１、ステップＳ１９０３−２、ステップＳ１９０３−３）を送信した時にタイマをスタートさせる。なお、タイマをスタートさせるタイマ起動部（図示せず）の処理は、ＴＣＰで規定された処理である。タイマ起動部（図示せず）は、ＴＣＰの規定に基づき、送信したパケットに対する受信確認応答をタイマが切れる前に受信する。このようにすることで、タイマ起動部は、送信したパケットが到着したことを確認する。
【０１８４】
図１５に例示するように、ステップＳ１９０３−１で送信されたＦｌｏｗＭｏｄの通信において、パケットロスが発生しており、経路制御装置（コントローラ）１００のタイマ起動部（図示せず）は、タイマが切れる前に受信確認応答を受信することができない。この場合、タイマ起動部（図示せず）は、ＴＣＰの規定に基づき、ｔ＿ｒｘｔｓｈｉｆｔ値を１インクリメントする（ｔ＿ｒｘｔｓｈｉｆｔ＝１）。そして、パケット転送装置通信部１０８は、ステップＳ１９０３−１で送信したＦｌｏｗＭｏｄを再送する（ステップＳ１９０４−１）。仮に、このＦｌｏｗＭｏｄも損失したとすると、タイマ起動部（図示せず）は、ＴＣＰの規定に基づき、ｔ＿ｒｘｔｓｈｉｆｔ値を、さらに１インクリメントする（ｔ＿ｒｘｔｓｈｉｆｔ＝２）。
【０１８５】
この状態から、外部端末３３０が外部端末３４０宛てに送信したデータパケットがパケット転送装置２１０に到着すると（ステップＳ１９０５）、パケット転送装置２１０は、フローテーブルから、そのパケットのヘッダ情報に適合する照合規則（マッチングキー）を含むエントリを検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部２１３は、受信したパケットをバッファリングしてから、経路制御装置（コントローラ）１００に対して、新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎ）を送信する（ステップＳ１９０６）。
【０１８６】
この新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎ）には、フローの識別に必要な情報（例えば、ＭＡＣアドレス、ＩＰアドレス、ポート番号（それぞれ送信元と宛先の両方含む））と、パケットの受信ポートを示す情報が含まれる。
【０１８７】
ここでは、パケット転送装置２１０が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置１００に送信することを想定している。ただし、パケット転送装置２１０は、受信したパケットそのものを経路制御装置１００に送信してもよい。
【０１８８】
ここで、経路制御装置（コントローラ）１００がＰａｃｋｅｔ−Ｉｎメッセージを受信したときの動作について図１６を用いて説明する。
【０１８９】
経路制御装置（コントローラ）１００が新規フロー検出通知メッセージ（Ｐａｃｋｅｔ−Ｉｎ）を受信すると、経路・アクション計算部１０３は、受信した情報に基づいて、新規エントリの照合規則（マッチングキー）を作成し、そのエントリに適用するタイマー値を決定する（ステップＳ１８０２）。照合規則として作成する情報は、例えば、図２０に例示する「ＩｎＰｏｒｔ」〜「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」の情報である。さらに、経路・アクション計算部１０３は、受信した情報に基づいて、宛先である外部端末３４０の位置確認を行い、外部端末３３０から外部装置３４０へのパケット転送経路を計算する（ステップＳ１８０３）。ここでは、転送経路を計算した結果、パケット転送装置２１０→パケット転送装置２２０→パケット転送装置２３０の順でパケットを転送する転送経路が計算されたものとする。
【０１９０】
次に、経路制御装置（コントローラ）１００の経路・アクション計算部１０３は、新規エントリの照合規則（マッチングキー）と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリ（ＦｌｏｗＭｏｄ）を、各パケット転送装置２１０〜２３０ごとに作成する（ステップＳ１８０４）。
【０１９１】
次に、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、パケットの送信形態を選択し（ステップＳ１８０５）、その送信形態でＦｌｏｗＭｏｄを送信する（ステップＳ１８０６）。
【０１９２】
ここでも、ステップＳ１８０５においてパケット転送装置通信部１０８が、パケットの送信形態を選択する方法を図１７を用いて説明する。
【０１９３】
まず、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、ＴＣＰの再送タイマの作動回数を示す変数であるｔ＿ｒｘｔｓｈｉｆｔ値を参照する（ステップＳ１３０１）。そして、パケット転送装置通信部１０８は、ｔ＿ｒｘｔｓｈｉｆｔ値がｔｈｒｅｓｈｏｌｄ以上か否かを判断する（ステップＳ１３０２）。ステップＳ１９０４−１の処理、および、再度の再送処理が行われたことにより、ｔ＿ｒｘｔｓｈｉｆｔ値は２であるため、再送フェーズに入っていることが分かる。
【０１９４】
よって、ｔ＿ｒｘｔｓｈｉｆｔ≧ｔｈｒｅｓｈｏｌｄは真と判断される（すなわち、ｔ＿ｒｘｔｓｈｉｆｔ値がｔｈｒｅｓｈｏｌｄ以上であると判断される）ため（ステップＳ１３０２におけるＹ）、パケット転送装置通信部１０８は、ＴＣＰの規定に基づき、ＴＣＰヘッダのＵＲＧビットをセットする（ステップＳ１３０３）。なお、ＵＲＧビットとは、ＴＣＰパケット中に緊急データが含まれていることを表す情報である。ＴＣＰの規定により、ＵＲＧビットが設定されたパケットが保持されると、再送タイマの値がリセットされる（すなわち、ｔ＿ｒｘｔｓｈｉｆｔ＝０になる）。そのため、パケット転送装置通信部１０８がパケット（ＦｌｏｗＭｏｄ）を即座に送信することが可能になる（ステップＳ１３０４）。
【０１９５】
なお、ここでＦｌｏｗＭｏｄを送信するステップＳ１３０４の処理が、図１５におけるステップＳ１９０７−１の処理に相当する。すなわち、経路制御装置１００がＦｌｏｗＭｏｄをパケット転送装置２１０に送信するため、パケット転送装置２１０は、ステップＳ１９０６で送信したＰａｃｋｅｔ−Ｉｎに対するＦｌｏｗＭｏｄを受信することができる（ステップＳ１９０７−１）。また、経路制御装置（コントローラ）１００では同様の処理が行われ、経路制御装置（コントローラ）１００のパケット転送装置通信部１０８は、パケット転送装置２２０〜２３０にＦｌｏｗＭｏｄを送信する（ステップＳ１９０７−２、ステップＳ１９０７−３）。
【０１９６】
さらに、パケット転送装置通信部１０８は、ステップＳ１９０１で送信されたデータパケットに対するＳ１９０８−１のＦｌｏｗＭｏｄに対しても同様の動作を行うことで、パケット転送装置２１０に対し、ＦｌｏｗＭｏｄを送信できる（ステップＳ１９０８−１）。
【０１９７】
各パケット転送装置２１０〜２３０が経路制御装置（コントローラ）１００からこれらの処理規則（ＦｌｏｗＭｏｄ）を受信すると、制御メッセージ送受信部２１１は、フローテーブルに受信したエントリを設定する。そして、パケット処理部２１３は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置２２０に転送する（図１５におけるステップＳ１９０５−１、ステップＳ１９０１−１）。このパケットが転送される転送経路上のパケット転送装置２２０，２３０には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置２２０，２３０の順で転送され、外部端末３２０及び外部端末３４０に届くことになる（ステップＳ１９０５−２、ステップＳ１９０１−２、ステップＳ１９０５−３、ステップＳ１９０１−３）。
【０１９８】
なお、第１の実施形態および第２の実施形態の説明では、パケット転送装置通信部１０８が、ＦｌｏｗＭｏｄを対象に緊急モードで送るか否かを判断する場合について説明した。ただし、緊急モードで送るか否かを判断する対象は、ＦｌｏｗＭｏｄに限定されない。パケット転送装置通信部１０８は、例えば、パケットの重要度に応じて、緊急モードで送信するか否かを判断してもよい。
【０１９９】
次に、本発明の最小構成を説明する。図１８は、本発明による通信制御システムの最小構成の例を示すブロック図である。本発明による通信制御システムは、パケットの処理内容を規定した規則であるパケット処理規則にしたがって、受信したパケットを転送するパケット転送装置８０（例えば、パケット転送装置２１０〜２３０）と、パケット処理規則の適用をパケット転送装置に指示することによりパケットの転送経路を制御する制御装置９０（例えば、経路制御装置１００）とを備えている。
【０２００】
制御装置９０は、パケット転送装置８０との通信状況に応じて、そのパケット転送装置との通信方法を選択する通信方法選択手段９１（例えば、パケット転送装置通信部１０８）を含む。
【０２０１】
そのような構成により、パケット処理装置に対して制御装置が処理規則を送信するネットワークで、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる。
【０２０２】
また、制御装置９０は、パケット転送装置８０との間に複数のセッションを構築する複数セッション構築手段（例えば、複数セッション管理部１０６）を含んでいてもよい。そして、通信方法選択手段９１は、複数のセッションが構築されたパケット転送装置８０との通信状況に応じて、その複数のセッションの中からそのパケット転送装置との通信に用いるセッションを選択してもよい。
【０２０３】
また、通信方法選択手段９１は、パケット転送装置８０との通信状況に応じて、通常よりも優先してパケットを送信する状態である緊急モードで送信する通信方法を選択してもよい。
【０２０４】
また、複数セッション構築手段が、複数のセッションのうち、通常の通信に用いられるセッションであるプライマリセッション（Ｐｒｉｍａｒｙセッション）と、プライマリセッションの異常時に用いられるセッションであるセカンダリセッション（Ｓｅｃｏｎｄａｒｙセッション）とを予め決定してもよい。そして、通信方法選択手段９１は、通常時にはプライマリセッションを選択し、プライマリセッションの異常時にセカンダリセッションを選択してもよい。
【０２０５】
また、複数セッション構築手段は、パケット転送装置との通信状況に応じて、パケット転送装置との間に構築するコネクションを追加してもよい。そして、通信方法選択手段９１は、パケット転送装置８０へ送信したパケットが届いていない場合に、複数セッション構築手段が通信状況に応じて追加したコネクションをパケット転送装置との通信に用いるセッションとして選択してもよい。
【０２０６】
また、通信方法選択手段９１は、ＴＣＰで規定される再送タイマに基づいて、パケット転送装置との通信状況の優劣を判断してもよく、送信するパケットの重要度に基づいて、パケット転送装置との通信方法を選択してもよい。
【０２０７】
また、図１９は、本発明による制御装置の最小構成の例を示すブロック図である。図１９に例示する制御装置は、図１８に例示する制御装置９０の内容と同様である。このような構成によっても、制御装置からパケット処理装置へ送信されるパケットの遅延を抑制できる。
【０２０８】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２０９】
この出願は、２０１０年１２月１４日に出願された日本特許出願２０１０−２７８５４４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０２１０】
本発明は、他の装置に対するパケットの送信遅延を抑制して通信の制御を行う通信制御システムに好適に適用される。
【符号の説明】
【０２１１】
１００  経路制御装置
１０１  フローエントリ記憶部
１０２  トポロジ管理部
１０３  経路・アクション計算部
１０４  フローエントリ管理部
１０５  制御メッセージ処理部
１０６  複数セッション管理部
１０７  端末位置記憶部
１０８  パケット転送装置通信部
２１０〜２３０  パケット転送装置
２１１  制御メッセージ送受信部
２１２  フローテーブル記憶部
２１３  パケット処理部
３１０〜３４０  外部端末
【図１】
2014504043.tif 000003
【図２】
2014504043.tif 000004
【図３】
2014504043.tif 000005
【図４】
2014504043.tif 000006
【図５】
2014504043.tif 000007
【図６】
2014504043.tif 000008
【図７】
2014504043.tif 000009
【図８】
2014504043.tif 000010
【図９】
2014504043.tif 000011
【図１０】
2014504043.tif 000012
【図１１】
2014504043.tif 000013
【図１２】
2014504043.tif 000014
【図１３】
2014504043.tif 000015
【図１４】
2014504043.tif 000016
【図１５】
2014504043.tif 000017
【図１６】
2014504043.tif 000018
【図１７】
2014504043.tif 000019
【図１８】
2014504043.tif 000020
【図１９】
2014504043.tif 000021
【図２０】
2014504043.tif 000022
【図２１】
2014504043.tif 000023
【図２２】
2014504043.tif 000024
【国際調査報告】
2014504043.tif 000025
2014504043.tif 000026