(58)【調査した分野】(Int.Cl.,DB名)
パケット転送装置決定手段は、問い合わせを行ったパケット転送装置が、他の装置に対して通信を行う端末装置がデータパケットを送信する経路上の最初のパケット転送装置であるか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定する
請求項1記載の通信経路制御システム。
パケット転送装置決定手段は、パケットに対する処理内容の問い合わせが初めての場合に、他の装置に対して通信を行う端末装置により送信されるデータパケットの経路上における全てのパケット転送装置にパケット転送ルールを適用させると決定し、前記問い合わせが初めてではない場合に、当該問い合わせを行ったパケット転送装置に対してパケット転送ルールを適用させると決定する
請求項1から請求項4のうちのいずれか1項に記載の通信経路制御システム。
パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、前記パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、当該パケットに対する処理内容の問い合わせが初めてか否かに基づいて決定するパケット転送装置決定手段を備えた
ことを特徴とする経路制御装置。
パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置が、パケットの通信経路を制御する経路制御装置へ受信したパケットに対する処理内容を問い合わせ、
前記経路制御装置が、前記パケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、前記パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、当該パケットに対する処理内容の問い合わせが初めてか否かに基づいて決定する
ことを特徴とする通信経路制御方法。
経路制御装置が、問い合わせを受けたパケット転送装置が他の装置に対して通信を行う端末装置により送信されるデータパケットの経路上における最初のパケット転送装置であるか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定する
請求項7記載の通信経路制御方法。
経路制御装置が、パケット転送装置に設定しているパケット転送ルールを記憶するパケット転送ルール記憶手段に処理内容の問い合わせが行われたパケットに対応するパケット転送ルールが記憶されているか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定する
請求項7記載の通信経路制御方法。
【背景技術】
【0002】
近年、オープンフロー(OpenFlow)という技術が提案されている(非特許文献1,2参照)。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化等を行う技術である。
【0003】
オープンフローを用いて通信が行われるネットワーク(以下、オープンフローネットワークと記す。)では、オープンフロースイッチおよびオープンフローコントローラが用いられる。オープンフロースイッチは、パケット転送装置として機能する。また、オープンフローコントローラは、経路制御装置として機能する。
【0004】
オープンフロースイッチは、オープンフローコントローラとの通信に用いられるセキュアチャネルを備え、オープンフローコントローラからセキュアチャネルを介して適宜追加または書き換えの指示が行われるフローテーブルの内容に従って動作する。
【0005】
図15は、フローテーブルの内容を示す説明図である。フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール(ヘッダフィールド)と、フロー統計情報(Counters)と、パケットに対する処理内容を定義したアクション(Actions)とを含む組が定義される。
【0006】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから受信パケットのヘッダ情報に適合するマッチングルールを含むエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報(Counters)を更新する。また、この場合、オープンフロースイッチは、受信パケットに対して、該当するエントリのアクションフィールドに定義された処理内容(指定ポートからのパケット送信、フラッディング、廃棄等)を実施する。
【0007】
一方、フローテーブルを検索した結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対して受信パケットを転送する。このようにして、オープンフロースイッチは、そのパケットに対する処理内容を問い合わせる。例えば、オープンフロースイッチは、オープンフローコントローラに対して、受信パケットの送信元および送信先に基づいたパケットの経路の決定を依頼し、決定されたエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを処理規則として用いることでパケットの転送を行う。
【0008】
なお、オープンフローコントローラは、パケットを処理するたびに更新されるフロー統計情報(Counters)を収集する機能も備えている。この機能のことを、可視化機能とも言う。
【0009】
また、特許文献1には、コントローラによって制御されるフローテーブルに基づいてスイッチがパケットを転送するシステムが記載されている。特許文献1に記載されたシステムは、スイッチがフローテーブルに存在しないパケットを受け取るとそのパケットをコントローラに転送する。そして、スイッチがフローテーブルに存在するパケットを受け取ると、上記システムは、そのフローテーブルの内容に基づいてパケットを転送する。
【0010】
図16は、オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。以下、
図16を用いて、特許文献1、非特許文献1,2に記載されたネットワークにおけるパケットの流れを説明する。
【0011】
まず、外部端末310が外部端末320宛てに、最初のデータパケットを送信すると、このデータパケットは、外部端末320に接続されたパケット転送装置210に送信される(ステップS901)。パケット転送装置210は、パケットを受信すると、フローテーブルから、そのパケットのヘッダ情報に適合するマッチングルール(照合規則、マッチングキーと記すこともある。)を含むエントリを検索する。
【0012】
しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット転送装置210は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フローを検出したことを示す制御メッセージ(以下、新規フロー検出通知メッセージ、Packet−Inメッセージと記すこともある。)を送信する(ステップS902)。
【0013】
このPacket−Inメッセージには、フローの識別に必要な情報(例えば、MAC(Media Access Control)アドレス、IP(Internet Protocol)アドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
【0014】
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置(コントローラ)100に送信することを想定している。なお、パケット転送装置210は、受信したパケットそのものを経路制御装置(コントローラ)100に送信する場合もある。
【0015】
経路制御装置(コントローラ)100は、Packet−Inメッセージを受信すると、受信したメッセージから新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、
図15に例示する「InPort」〜「TCP/UDP src port」の情報である。
【0016】
さらに、経路制御装置(コントローラ)100は、受信したメッセージに基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部端末320へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
【0017】
次に、経路制御装置(コントローラ)100は、新規エントリの照合規則(マッチングキー)と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを、各パケット転送装置210〜230ごとに作成する。そして、経路制御装置(コントローラ)100は、作成したエントリを、FlowModメッセージを用いて、各パケット転送装置210〜230に通知する(ステップS903)。ここで、FlowModメッセージとは、コントローラがスイッチに対してフローの登録や変更、削除を要求する際に用いられるメッセージである。各パケット転送装置210〜230は、FlowModメッセージを受信すると、フローテーブルに受信したエントリを設定する。
【0018】
エントリの設定が完了すると、パケット転送装置210は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置220に転送する(ステップS904−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220、パケット転送装置230の順で転送され、外部端末320に届くことになる(ステップS904−2、ステップS904−3)。
【0019】
以後、外部端末310から外部端末320宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置210→パケット転送装置220→パケット転送装置230の順に転送され(ステップS905−1〜S905−4)、外部端末320に到着する。
【発明を実施するための形態】
【0041】
以下、本発明の実施形態を図面を参照して説明する。
【0042】
実施形態1.
図1は、本発明の第1の実施形態における通信経路制御システムの例を示すブロック図である。本実施形態における通信経路制御システムは、経路制御装置100と、パケット転送装置210〜230と、外部端末310〜320とを備えている。ただし、パケット転送装置および外部端末の台数は、
図1に例示する台数に限定されない。パケット転送装置は、1台または2台であってもよく、4台以上であってもよい。また、外部端末の台数は3台以上であってもよい。
【0043】
パケット転送装置210〜230は、パケットを受信した際に、所定のルールに基づいてそのパケットを転送する装置である。なお、このルールのことを、パケット転送ルールと記すこともある。パケット転送装置は、例えば、ルータやスイッチなどにより実現される。
【0044】
図2は、パケット転送装置210の例を示すブロック図である。なお、パケット転送装置220〜230もパケット転送装置210と同様の構成であるため、説明を省略する。パケット転送装置210は、制御メッセージ送受信部211と、フローテーブル記憶部212と、パケット処理部213とを備えている。
【0045】
制御メッセージ送受信部211は、経路制御装置100と通信する機能を備えている。すなわち、制御メッセージ送受信部211は、経路制御装置100と制御メッセージの送受信を行う。
【0046】
フローテーブル記憶部212は、フローテーブルを記憶する。フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール(ヘッダフィールド)と、フロー統計情報(Counters)と、パケットに対する処理内容を定義したアクション(Actions)とを含む組が定義される。以下、この組のことを処理規則(フローエントリ)と記すこともある。フローテーブルには、例えば、
図15に例示する情報が含まれる。
【0047】
パケット処理部213は、フローテーブルに記憶されたアクションに基づいて、受信したパケットを処理する。具体的には、パケット転送装置210がパケットを受信すると、パケット処理部213は、フローテーブル記憶部212に記憶されたフローテーブルから、受信パケットに適合する照合規則(マッチングキー)を含む処理規則(フローエントリ)を検索する。検索の結果、受信パケットに適合するフローエントリが見つかった場合、パケット処理部213は、受信パケットに対して、該当するフローエントリのアクションフィールドに定義された処理内容(例えば、指定ポートからのパケット送信、フラッディング、廃棄等)を実施する。
【0048】
一方、受信パケットに適合するエントリがフローテーブルに見つからなかった場合、パケット処理部213は、経路制御装置100に対して、新規フローを検出したことを示す制御メッセージ(すなわち、新規フロー検出通知メッセージ)を送信し、そのパケットに対する処理内容の問い合わせを行う。
【0049】
経路制御装置100は、自身が管理するネットワークの経路制御を行う装置である。具体的には、経路制御装置100は、パケット転送装置にパケット転送ルールの適用を指示することにより、パケットの通信経路を制御する装置である。本実施形態では、経路制御装置100は、パケット転送装置210〜230を管理対象としている。
図3は、経路制御装置100の例を示すブロック図である。経路制御装置100は、制御メッセージ送信先決定部101と、トポロジ管理部102と、経路・アクション計算部103と、パケット転送装置通信部104と、制御メッセージ処理部105と、端末位置記憶部106とを備えている。
【0050】
パケット転送装置通信部104は、経路制御装置100がパケット転送装置210〜230と通信を行う機能を備えている。すなわち、パケット転送装置通信部104は、パケット転送装置210〜230とパケットの送受信を行う。
【0051】
トポロジ管理部102は、パケット転送装置通信部104を介して収集されたパケット転送装置210〜230の接続関係に基づいてネットワークトポロジ情報を作成し、作成したトポロジ情報を記憶する。なお、トポロジ情報とは、パケット転送装置が他の装置と接続する接続形態を示す情報であると言える。トポロジ管理部102は、例えば、パケット転送装置210〜230が保持している経路表の情報を収集し、その経路表に基づいてネットワークトポロジ情報を作成する。ただし、ネットワークトポロジ情報の作成方法は、これらの方法に限定されない。また、トポロジ管理部102は、他の経路制御装置100からネットワークトポロジ情報を受信し、そのネットワークトポロジ情報を記憶するようにしてもよい。
【0052】
端末位置記憶部106は、外部端末の位置情報を記憶する。端末位置記憶部106には、例えば、IPアドレスなどの位置情報をデータベースとして記憶しておく。端末位置記憶部106には、予め管理者等が外部端末の位置情報を記憶させておいてもよく、経路制御装置100が他の経路制御装置から位置情報を受信するたびに、その位置情報を端末位置記憶部106に記憶させてもよい。端末位置記憶部106は、例えば、磁気ディスク等により実現される。
【0053】
経路・アクション計算部103は、処理規則(フローエントリ)として、パケット転送装置210〜230に実行させるアクションおよびパケットの転送経路を計算する。具体的には、経路・アクション計算部103は、端末位置記憶部106に記憶された位置情報から送信端末と宛先端末の位置を特定し、トポロジ管理部102が管理するネットワークトポロジ情報をもとに、パケットの転送経路を計算する。また、経路・アクション計算部103は、そのパケットに対して転送経路上のパケット転送装置に実行させる処理(アクション)を決定する。アクションの決定方法には、任意の方法を用いることができる。経路・アクション計算部103は、例えば、転送経路が計算できた場合に、パケットを転送するというアクションを実行させると決定してもよい。また、経路・アクション計算部103は、予め定めた種類のパケットに対しては、廃棄する、所定の装置に転送するなど、所定のアクションを実行させると決定するようにしてもよい。
【0054】
制御メッセージ送信先決定部101は、経路・アクション計算部103が計算した経路上のパケット転送装置の中から、処理規則(フローエントリ)を通知すべきパケット転送装置を決定する。具体的には、制御メッセージ送信先決定部101は、パケット転送装置から受信したパケットに対する処理内容の問い合わせが初めてか否かに基づいて、フローエントリを通知する(適用させる)パケット転送装置を決定する。
【0055】
制御メッセージ処理部105は、パケット転送装置210〜230から受信した制御メッセージを解析して、経路制御装置100内の該当する処理手段に制御メッセージを引き渡す。例えば、パケット転送装置210〜230から新規フロー検出通知メッセージを受信した場合、制御メッセージ処理部105は、新しい処理規則(フローエントリ)の作成を経路・アクション計算部103に依頼する。
【0056】
制御メッセージ送信先決定部101と、トポロジ管理部102と、経路・アクション計算部103と、パケット転送装置通信部104と、制御メッセージ処理部105とは、プログラム(経路制御プログラム)に従って動作するコンピュータのCPUによって実現される。例えば、プログラムは、経路制御装置100の記憶部(図示せず)に記憶され、CPUは、そのプログラムを読み込み、プログラムに従って、制御メッセージ送信先決定部101、トポロジ管理部102、経路・アクション計算部103、パケット転送装置通信部104および制御メッセージ処理部105として動作してもよい。また、制御メッセージ送信先決定部101と、トポロジ管理部102と、経路・アクション計算部103と、パケット転送装置通信部104と、制御メッセージ処理部105とは、それぞれが専用のハードウェアで実現されていてもよい。
【0057】
次に、本実施形態における通信経路制御システムの動作を
図16を用いて説明する。
【0058】
外部端末310がデータパケットをパケット転送装置210に送信し、パケット転送装置210がそのパケットを受信すると(ステップS901)、パケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置100に対して、新規フロー検出通知メッセージを送信する(ステップS902)。
【0059】
この新規フロー検出通知メッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
【0060】
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定している。ただし、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
【0061】
ここで、経路制御装置100が新規フロー検出通知メッセージを受信したときの動作を説明する。
図4は、経路制御装置の動作の例を示すフローチャートである。
【0062】
経路制御装置100がパケット転送装置210から新規フロー検出通知メッセージを受信すると(
図4におけるステップS1501)、経路・アクション計算部103は、該当パケットの経路を計算し、その経路上に存在する各パケット転送装置のアクションを決定する(ステップS1502)。次に、制御メッセージ送信先決定部101は、経路上に存在するパケット転送装置の中から、アクションの内容を含む処理規則を通知するパケット転送装置を宛先として決定する(ステップS1503)。
【0063】
具体的には、制御メッセージ送信先決定部101は、新規フロー検出通知メッセージを受信した際、その通知メッセージを送信したパケット転送装置が外部端末からみて最初のパケット転送装置であるか否かを判定する。制御メッセージ送信先決定部101は、例えば、ネットワークトポロジ情報を参照し、新規フロー検出通知メッセージに含まれるパケット転送装置の識別子と、そのパケット転送装置がデータパケットを受信したポートのポート番号とをもとに、そのデータパケットをパケット転送装置に送信する装置が、外部端末であるか否かを決定してもよい。
【0064】
新規フロー検出通知メッセージを送信したパケット転送装置がデータパケットの送信端末からみて最初のパケット転送装置の場合、制御メッセージ送信先決定部101は、経路・アクション計算部103が計算した経路上の全パケット転送装置に対して、処理規則を通知すると決定する。一方、その装置が最初のパケット転送装置でない場合、制御メッセージ送信先決定部101は、新規フロー検出通知メッセージを送信したパケット転送装置に対してのみ処理規則を通知すると決定する。そして、制御メッセージ送信先決定部101は、決定した通知先に処理規則を送信する(ステップS1504)。
【0065】
各パケット転送装置210〜230が経路制御装置100から処理規則を受信すると、制御メッセージ送受信部211は、フローテーブルに受信したエントリを設定する。そして、パケット処理部213は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置220に転送する(
図16におけるステップS904−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220,230の順で転送され、外部端末320に届くことになる(ステップS904−2、ステップS904−3)。
【0066】
以上のように、本実施形態によれば、パケット転送装置の制御メッセージ送受信部211が、受信したパケットに対する処理内容を経路制御装置100に問い合わせる。そして、経路制御装置100の制御メッセージ送信先決定部101が、パケット転送装置からパケットに対する処理内容の問い合わせを受信したときに、パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置を、そのパケットに対する処理内容の問い合わせが初めてか否かに基づいて決定する。
【0067】
具体的には、制御メッセージ送信先決定部101は、問い合わせを行ったパケット転送装置がパケットを転送する経路上の最初のパケット転送装置であるか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定する。このような構成により、通信経路の制御に用いられるパケットの量を削減できる。すなわち、オープンフローコントローラからオープンフロースイッチへの冗長な制御パケットの送信を回避できるため、ネットワーク使用効率の向上、オープンフローコントローラでの制御パケット送信負荷の軽減、および、オープンフロースイッチでの制御パケットの処理負荷の軽減が期待できる。
【0068】
実施形態2.
次に、第2の実施形態における通信経路制御システムについて説明する。第2の実施形態における通信経路制御システムも、
図1に例示するように、経路制御装置100と、パケット転送装置210〜230と、外部端末310〜320とを備えている。
【0069】
経路制御装置100は、第1の実施形態と同様、自身が管理するネットワークの経路制御を行う装置である。本実施の形態では、パケット転送装置210〜230を管理対象としている。ただし、第2の実施形態における経路制御装置100は、第1の実施形態における経路制御装置100に対して、機能をさらに追加した装置である。
【0070】
図5は、第2の実施形態における経路制御装置100の例を示すブロック図である。第2の実施形態における経路制御装置100は、制御メッセージ送信先決定部101と、トポロジ管理部102と、経路・アクション計算部103と、パケット転送装置通信部104と、制御メッセージ処理部105と、端末位置記憶部106と、フローエントリ記憶部107と、フローエントリ管理部108とを備えている。
【0071】
すなわち、第2の実施形態における経路制御装置100は、フローエントリ記憶部107とフローエントリ管理部108の機能が追加されている点において、第1の実施形態における経路制御装置100と異なる。
【0072】
パケット転送装置通信部104は、経路制御装置100がパケット転送装置210〜230と通信を行う機能を備えている。
【0073】
トポロジ管理部102は、パケット転送装置通信部104を介して収集されたパケット転送装置210〜230の接続関係に基づいてネットワークトポロジ情報を作成し、作成した情報を記憶する。なお、トポロジ情報の作成方法および記憶方法は、第1の実施形態と同様である。また、端末位置記憶部106は、外部端末の位置情報を記憶する。なお、端末位置記憶部106が記憶する情報は、第1の実施形態と同様である。端末位置記憶部106は、例えば、磁気ディスク等により実現される。
【0074】
経路・アクション計算部103は、処理規則(フローエントリ)として、パケット転送装置210〜230に実行させるアクションおよびパケットの転送経路を計算する。具体的には、経路・アクション計算部103は、トポロジ管理部102が管理するネットワークトポロジ情報と、端末位置記憶部106に記憶された位置情報から、送信端末と宛先端末の位置を特定し、パケットの転送経路を計算する。また、経路・アクション計算部103は、そのパケットに対して転送経路上のパケット転送装置210〜230に実行させる処理(アクション)を決定する。
【0075】
制御メッセージ送信先決定部101は、経路・アクション計算部103が計算した経路上のパケット転送装置の中から、処理規則(フローエントリ)を通知すべきパケット転送装置を決定する。具体的には、制御メッセージ送信先決定部101は、後述するフローエントリ管理部108の判定結果に基づいて、パケット転送装置から受信したパケットに対する処理内容の問い合わせが初めてか否かに基づいて、フローエントリを通知する(適用させる)パケット転送装置を決定する。
【0076】
制御メッセージ処理部105は、パケット転送装置210〜230から受信した制御メッセージを解析して、経路制御装置(コントローラ)100内の該当する処理手段に制御メッセージ情報を引き渡す。例えば、パケット転送装置210〜230から新規フロー検出通知メッセージ(Packet−In)を受信した場合、制御メッセージ処理部105は、新しい処理規則(フローエントリ)の作成を経路・アクション計算部103に依頼する。
【0077】
フローエントリ記憶部107は、フローエントリを記憶する。具体的には、フローエントリ記憶部107に、フローエントリをデータベースとして記憶しておく。フローエントリ記憶部107は、例えば、磁気ディスク等により実現される。フローエントリ記憶部107は、
図15に例示するように、照合規則(マッチングルール)、アクション(タイマー値を含む)、および、フロー統計情報を含む処理規則(フローエントリ)を記憶する。
【0078】
フローエントリ管理部108は、ノード(パケット転送装置)から受信した情報に基づいて照合規則(マッチングキー)を作成する。さらに、フローエントリ管理部108は、経路・アクション計算部103が計算したフローエントリをフローエントリ記憶部107に記憶させる。その際、フローエントリ管理部108は、そのフローエントリが既にフローエントリ記憶部107に記憶されているか否かを判定する。そのフローエントリが既にフローエントリ記憶部107に記憶されている場合、フローエントリ管理部108は、受信したパケットに対する処理内容の問い合わせが初めてでないと判定する。一方、そのフローエントリがフローエントリ記憶部107に記憶されていない場合、フローエントリ管理部108は、受信したパケットに対する処理内容の問い合わせが初めてであると判定する。フローエントリ管理部108は、その判定結果を制御メッセージ送信先決定部101に通知する。
【0079】
また、フローエントリ管理部108は、パケット転送装置210〜230からの処理規則(フローエントリ)の追加または更新要求に応じて処理規則(フローエントリ)をフローテーブル記憶部212に設定する指示を行う。
【0080】
制御メッセージ送信先決定部101と、トポロジ管理部102と、経路・アクション計算部103と、パケット転送装置通信部104と、制御メッセージ処理部105と、フローエントリ管理部108とは、プログラム(経路制御プログラム)に従って動作するコンピュータのCPUによって実現される。また、制御メッセージ送信先決定部101と、トポロジ管理部102と、経路・アクション計算部103と、パケット転送装置通信部104と、制御メッセージ処理部105と、フローエントリ管理部108とは、それぞれが専用のハードウェアで実現されていてもよい。
【0081】
パケット転送装置210〜230は、第1の実施形態と同様、パケットを受信した際に、所定のルールに基づいてそのパケットを転送する装置である。また、第2の実施形態におけるパケット転送装置210〜230の構成は、
図2に例示する構成と同様である。すなわち、第2の実施形態におけるパケット転送装置210も、制御メッセージ送受信部211と、フローテーブル記憶部212と、パケット処理部213とを備えている。
【0082】
制御メッセージ送受信部211は、経路制御装置100と通信する機能を備えている。
【0083】
フローテーブル記憶部212は、フローテーブルを記憶する。第1の実施形態と同様、フローテーブルには、フローごとに、パケットヘッダとの照合に用いられるマッチングルール(ヘッダフィールド)と、フロー統計情報(Counters)と、パケットに対する処理内容を定義したアクション(Actions)とを含む組が定義される(
図15参照)。
【0084】
パケット処理部213は、フローテーブル記憶部212から、受信パケットに適合する照合規則(マッチングキー)を含む処理規則(フローエントリ)を検索し、その処理規則(フローエントリ)のアクションフィールドに記述された処理内容(例えば、特定のポートへの転送、フラッディング、廃棄など)を実行する。
【0085】
次に、本実施形態における通信経路制御システムの動作を説明する。
図6は、オープンフローネットワークにおけるパケットの流れの一例を示す説明図である。
【0086】
外部端末310がデータパケットをパケット転送装置210に送信し、パケット転送装置210がそのパケットを受信すると(ステップS1401)、パケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置100に対して、新規フロー検出通知メッセージを送信する(ステップS1402)。
【0087】
この新規フロー検出通知メッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
【0088】
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定しているが、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
【0089】
ここで、経路制御装置100が新規フロー検出通知メッセージを受信したときの動作を
図4を用いて説明する。
【0090】
経路制御装置100がパケット転送装置210から新規フロー検出通知メッセージを受信すると(
図4におけるステップS1501)、経路・アクション計算部103は、該当パケットの経路を計算し、その経路上に存在する各パケット転送装置のアクションを決定する(ステップS1502)。次に、経路制御装置100では、経路上に存在するパケット転送装置の中から、アクションの内容を含む処理規則を通知するパケット転送装置を宛先として決定する処理が行われる(ステップS1503)。
【0091】
まず、フローエントリ管理部108は、新規フロー検出通知メッセージの中から、フローを識別する情報を抽出する。そして、フローエントリ管理部108は、そのフローに対するエントリをフローエントリ記憶部107に登録する際、そのフローエントリが既にフローエントリ記憶部107に記憶されているか否かを判定する。
【0092】
そのフローエントリが既にフローエントリ記憶部107に記憶されている場合、制御メッセージ送信先決定部101は、新規フロー検出通知メッセージを送信したパケット転送装置に対してのみ処理規則を通知すると決定する。一方、そのフローエントリがフローエントリ記憶部107に記憶されていない場合、制御メッセージ送信先決定部101は、経路・アクション計算部103が計算した経路上の全パケット転送装置に対して、処理規則を通知すると決定する。そして、制御メッセージ送信先決定部101は、決定した宛先に対して、処理規則を通知する(ステップS1504)。
【0093】
各パケット転送装置210〜230が経路制御装置100から処理規則を受信すると、制御メッセージ送受信部211は、フローテーブルに受信したエントリを設定する。そして、パケット処理部213は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置220に転送する(
図6におけるステップS1404−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220,230の順で転送され、外部端末320に届くことになる(ステップS1404−2、ステップS1404−3)。以後、外部端末310から外部端末320宛てにパケットが送信される場合、そのパケットは、転送経路に従って、パケット転送装置210→パケット転送装置220→パケット転送装置230の順に転送され(ステップS1405−1〜S1405−4)、外部端末320に到着する。
【0094】
以上のように、本実施形態によれば、制御メッセージ送信先決定部101が、処理内容の問い合わせが行われたパケットに対応するパケット転送ルールがフローエントリ記憶部107に記憶されているか否かに基づいて、パケット転送ルールを適用させるパケット転送装置を決定する。このような構成によっても、通信経路の制御に用いられるパケットの量を削減できる。
【実施例1】
【0095】
以下、具体的な実施例により本発明を説明するが、本発明の範囲は以下に説明する内容に限定されない。第1の実施例は、本発明の第1の実施形態における通信経路制御システムに対応する。
【0096】
図7は、本発明の第1の実施例における通信経路制御システムの例を示す説明図である。第1の実施例における通信経路制御システムは、2台の外部端末310,320と、外部端末間に3台のパケット転送装置210〜230と、このネットワークを制御する経路制御装置100とを含む。なお、各パケット転送装置210〜230の側に記載された1桁の番号が各装置におけるポート番号を示し、各パケット転送装置210〜230に付与された3桁の番号が、各装置の識別子を示すものとする。
【0097】
第1の実施例では、オープンフローネットワークを想定した通信経路制御システムについて説明する。経路制御装置100は、処理規則(フローエントリ)を通知すべきパケット転送装置を決定する機能をオープンフローコントローラに具備した装置に相当する。また、パケット転送装置は、オープンフロースイッチに相当する。以下、第1の実施例における通信経路制御システムの動作を、
図16を用いて説明する。
【0098】
外部端末310がデータパケットをパケット転送装置210に送信し、パケット転送装置210がそのパケットを受信すると(ステップS901)、パケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置100に対して、新規フロー検出通知メッセージ(Packet−Inメッセージ)を送信する(ステップS902)。
【0099】
このPacket−Inメッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
【0100】
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定している。ただし、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
【0101】
ここで、経路制御装置100がPacket−Inメッセージを受信したときの動作を説明する。
図8は、経路制御装置の動作の例を示すフローチャートである。
【0102】
経路制御装置100がパケット転送装置210からPacket−Inメッセージを受信すると(ステップS301)、経路・アクション計算部103は、該当パケットの経路を計算し、その経路上に存在するパケット転送装置のアクションを決定する(ステップS302)。次に、制御メッセージ送信先決定部101は、経路上のパケット転送装置の中から、宛先として、アクションの内容を含む処理規則を通知するパケット転送装置の宛先を決定する(ステップS303)。そして、制御メッセージ送信先決定部101は、決定した宛先に対してFlowModを通知する(ステップS304)。
【0103】
図9は、処理規則を通知するパケット転送装置を決定する動作の例を示す説明図である。以下、
図9を用いて、ステップS303の内容を詳しく説明する。
【0104】
制御メッセージ送信先決定部101は、Packet−Inメッセージを受信した際、そのPacket−Inメッセージを送信したパケット転送装置がデータパケットを送信する外部端末からみて最初のパケット転送装置であるか否かを判定する。本実施例では、Packet−Inメッセージを送信したパケット転送装置の識別子と、Packet−Inメッセージから特定されるポート番号のうち、パケット転送装置がデータパケットを受信したポート(以下、Input Portと記すこともある)の番号とを使用して上記判定を行うものとする(ステップS401)。なお、判定の方法は、本実施例で説明するパケット転送装置の識別子とポート番号とを用いた判定方法に限定されるものではない。Packet−Inメッセージを送信したパケット転送装置がデータパケットの送信端末からみて最初のパケット転送装置であるか否かが判定できる方法であれば、他の方法であってもよい。
【0105】
図7に例示する通信経路制御システムにおいて、パケット転送装置210の識別子は「210」、Input Portは「1」である。ここで、トポロジ管理部102が
図7に例示する経路制御装置100の識別子とポート番号からネットワークトポロジ情報を計算し、その情報を保持しているものとする。
図10は、トポロジ管理部102が計算したネットワークトポロジ情報の例を示す説明図である。
図10に示す例では、四角の記号が外部端末を示し、丸の記号がパケット転送装置を示す。また、四角または丸の下側に記載された3桁の番号が装置の識別子を示し、四角または丸の左右側に記載された1桁の番号がポート番号を示す。
【0106】
制御メッセージ送信先決定部101は、トポロジ管理部102にアクセスし(ステップS402)、パケット転送装置の接続先が他のパケット転送装置か否かを判断する(ステップS403)。ここでは、制御メッセージ送信先決定部101は、
図10に例示するネットワークトポロジ情報から、識別子が「210」で識別される装置のポート番号「1」に接続された装置を確認する。
図10に示す例では、パケット転送装置210のポート番号「1」のポートに接続された装置は外部端末310である。よって、制御メッセージ送信先決定部101は、パケット転送装置210に隣接している装置が外部端末310であることがわかる(ステップS403におけるN)。したがって、制御メッセージ送信先決定部101は、経路・アクション計算部103が計算した経路上に存在する全てのパケット転送装置に処理規則(経路情報)を通知する(ステップS405)。
【0107】
一方、パケット転送装置210に隣接している装置が他のパケット転送装置であった場合(ステップS403におけるY)、制御メッセージ送信先決定部101は、Packet−Inメッセージを送信したパケット転送装置に対してのみ処理規則を通知することになる(ステップS404)。なお、パケット転送装置に隣接している装置が他のパケット転送装置であった場合の処理については後述する。
【0108】
制御メッセージ送信先決定部101は、FlowModメッセージの送り先を決定すると、パケット転送装置210〜230に対してFlowModメッセージを送信する(
図16におけるステップS903)。パケット処理部213は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置220に転送する(
図16におけるステップS904−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220,230の順で転送され、外部端末320に届くことになる(ステップS904−2、ステップS904−3)。
【0109】
次に、
図9におけるステップS404の処理が行われる状況(すなわち、パケット転送装置へデータパケットを送信した装置が他のパケット転送装置であった場合の処理)を説明する。
図11は、オープンフローネットワークにおけるパケットの流れの例を示す説明図である。
【0110】
まず、外部端末310が外部端末320宛てに最初のデータパケットを送信すると、このデータパケットは、外部端末320に接続されたパケット転送装置210に送信される(ステップS1301−1)。パケット転送装置210がパケットを受信すると、パケット処理部213は、フローテーブルから、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリを検索する。
【0111】
しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、制御メッセージ送受信部211は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フロー検出通知メッセージ(Packet−Inメッセージ)を送信する(ステップS1302)。
【0112】
このPacket−Inメッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
【0113】
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置(コントローラ)100に送信することを想定している。ただし、制御メッセージ送受信部211は、受信したパケットそのものを経路制御装置(コントローラ)100に送信してもよい。
【0114】
経路制御装置(コントローラ)100がPacket−Inメッセージを受信すると、経路・アクション計算部103は、受信したメッセージから新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、
図15に例示する「InPort」〜「TCP/UDP src port」の情報である。
【0115】
さらに、経路・アクション計算部103は、受信したメッセージに基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部端末320へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
【0116】
次に、経路・アクション計算部103は、新規エントリの照合規則(マッチングキー)と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを、各パケット転送装置210〜230ごとに作成する。そして、制御メッセージ送信先決定部101は、作成したエントリを、FlowModメッセージを用いて、各パケット転送装置210〜230に通知する(ステップS1303−1、ステップS1303−2、ステップS1303−3)。
【0117】
ここで、各パケット転送装置210に対するFlowModメッセージ(ステップS1303−1で送信したFlowModメッセージ)と、パケット転送装置230に対するFlowModメッセージ(ステップS1303−3で送信したFlowModメッセージ)が各パケット転送装置に到着するものとする。一方、パケット転送装置220に対するFlowModメッセージ(ステップS1303−2で送信したFlowModメッセージ)がネットワークの輻輳によるパケットロスや遅延等によりパケット転送装置220に到着しなかったとする。
【0118】
パケット転送装置210がFlowModメッセージを受信し、パケット処理部213がフローテーブルへのエントリの設定を完了すると、パケット処理部213は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置220に転送する(ステップS1301−2)。パケット転送装置220がパケット転送装置210からデータパケットを受信すると、パケット転送装置220のパケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、パケット転送装置220へのFlowModメッセージは到着しておらず、該当するエントリはフローテーブルに存在しない。そこで、パケット転送装置220の制御メッセージ送受信部211は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フロー検出通知メッセージ(Packet−Inメッセージ)を送信する(ステップS1304)。
【0119】
経路制御装置(コントローラ)100がPacket−Inメッセージを受信すると、経路・アクション計算部103は、受信した情報に基づいて、新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、
図15に例示する「InPort」〜「TCP/UDP src port」の情報である。さらに、経路・アクション計算部103は、受信した情報に基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部装置320へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置220からパケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
【0120】
次に、制御メッセージ送信先決定部101は、FlowModの送り先を決定する。送り先を決定する処理を、
図9を用いて説明する。
【0121】
経路・アクション計算部103が経路の計算をした後、制御メッセージ送信先決定部101は、そのPacket−Inメッセージを送信したパケット転送装置がデータパケットを送信する外部端末からみて最初のパケット転送装置であるか否かを判定する。本実施例では、Packet−Inメッセージを送信したパケット転送装置の識別子と、Packet−Inメッセージから特定されるポート番号のうち、パケット転送装置がデータパケットを受信したポートの番号とを使用して、上記判定を行うものとする(ステップS401)。なお、判定の方法は、本実施例で説明するパケット転送装置の識別子とポート番号とを用いた判定方法に限定されるものではない。Packet−Inメッセージを送信したパケット転送装置がデータパケットの送信端末からみて最初のパケット転送装置であるか否かが判定できる方法であれば、他の方法であってもよい。
【0122】
図7に例示する通信経路制御システムにおいて、パケット転送装置220の識別子は「220」、Input Portは「1」である。ここで、トポロジ管理部102が
図7に例示する経路制御装置100の識別子とポート番号からネットワークトポロジ情報を計算し、その情報を保持しているものとする。また、トポロジ管理部102が計算したネットワークトポロジ情報が、
図10に例示する内容であるものとする。
【0123】
制御メッセージ送信先決定部101は、トポロジ管理部102にアクセスし(ステップS402)、パケット転送装置の接続先がパケット転送装置か否かを判断する(ステップS403)。具体的には、制御メッセージ送信先決定部101は、
図10に例示するネットワークトポロジ情報から、識別子が「220」で識別される装置のポート番号「1」に接続された装置を確認する。
図10に示す例では、パケット転送装置220のポート番号「1」のポートに接続された装置はパケット転送装置210である。よって、制御メッセージ送信先決定部101は、パケット転送装置220に隣接している装置がパケット転送装置210であることがわかる(ステップS403におけるY)。したがって、制御メッセージ送信先決定部101は、Packet−Inメッセージを送信したパケット転送装置220に対してのみ処理規則を通知する(ステップS404)。
【0124】
オープンフローネットワークは、パケット転送装置にデータパケットが到着した際に、そのパケット転送装置が経路制御装置に経路の問い合わせを行い、経路制御装置がそのパケットに対するアクションをパケット転送装置に通知することで、データパケットを目的の装置に到着させることができるネットワークである。そのため、パケット転送装置220が外部端末でない装置(すなわち、パケット転送装置。本実施例では、パケット転送装置210。)からデータパケットを受信するということは、経路制御装置100が、そのデータパケットに対するFlowModを既にパケット転送装置220に送信していることを意味する。
【0125】
また、既にFlowModをパケット転送装置220に送信しているにもかかわらず、パケット転送装置220からの問い合わせが発生することがある。その理由として、経路制御装置100からのFlowModメッセージがパケット転送装置210からのデータパケットが到着する前に届いたこと、または、経路制御装置100からのFlowModメッセージが損失したことが挙げられる。よって、経路制御装置100は、転送経路上に存在する全てのパケット転送装置に経路情報を送信する必要はなく、パケット転送装置220にのみ、再度経路情報を送信すればよいことになる。
【0126】
したがって、制御メッセージ送信先決定部101は、
図11に例示するように、パケット転送装置220に対してのみFlowModを送信する(
図11におけるステップS1305−1)。パケット処理部213は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置230に転送する(ステップS1301−3)。そして、このパケットは、パケット転送装置230に転送され、外部端末320に届くことになる(ステップS1301−4)。
【0127】
以上のように、本実施例では、制御メッセージ送信先決定部101が、Packet−Inを送信したパケット転送装置と、パケット転送装置がデータパケットを受信したポート番号の情報をもとに、トポロジ管理部102のネットワークトポロジを参照して、パケット転送装置がデータパケットを受信したポートの接続先を確認する。
【0128】
パケットを受信したポートにパケット転送装置が接続されていれば、経路制御装置100が経路上のパケット転送装置に対して、以前にFlowModメッセージを送信しているということがわかるからである。つまり、この場合、経路制御装置100は、Packet−Inを送信したパケット転送装置に対してのみ、FlowModメッセージを送信すればよい。一方、パケットを受信したポートにパケット転送装置でない端末(例えば、外部端末)が接続されていれば、経路制御装置100が経路上の全パケット転送装置に対して、FlowModメッセージを送信すればよい。
【0129】
このように、経路制御装置100が、Packet−Inを送信したパケット転送装置に応じてFlowModの宛先装置を決定することで、経路制御装置100からパケット転送装置への冗長な制御パケットの送信を回避できる。また、このような構成により、ネットワーク使用効率の向上、経路制御装置での制御パケット送信負荷の軽減、および、パケット転送装置での制御パケットの処理負荷の軽減が期待できる。
【実施例2】
【0130】
次に、本発明の第2の実施例について説明する。第2の実施例は、本発明の第2の実施形態における通信経路制御システムに対応する。
【0131】
本発明の第2の実施例では、経路制御装置100にフローエントリを保持するデータベース(すなわち、フローエントリ記憶部107)を作成し、そのデータベースに、問い合わせを受けたフローに対する経路情報の有無で新規フローか否かを判断する。
【0132】
すなわち、本発明の第1の実施例における通信経路制御システムでは、トポロジ情報を用いて新規フローか否かを判断している。一方、本発明の第2の実施例における通信経路制御システムでは、フローエントリのデータベースを用いて新規フローか否かを判断している点において、第1の実施例における通信経路制御システムと異なる。
【0133】
なお、第2の実施例も、第1の実施例と同様、オープンフローネットワークを想定した通信経路制御システムについて説明する。すなわち、オープンフローコントローラは、第2の実施形態における経路制御装置100に相当する。言い換えると、経路制御装置100は、処理規則(フローエントリ)を通知すべきパケット転送装置を決定する機能をオープンフローコントローラに具備した装置に相当する。また、オープンフロースイッチは、第1の実施形態および第2の実施形態におけるパケット転送装置に相当する。
【0134】
以下、本発明の第2の実施例における通信経路制御システムを、
図1を用いて説明する。すなわち、第2の実施例における通信経路制御システムも、2台の外部端末310,320と、外部端末間に3台のパケット転送装置210〜230と、このネットワークを制御する経路制御装置100とを含む。また、第2の実施例における通信経路制御システムの動作を、
図16を用いて説明する。
【0135】
外部端末310がデータパケットをパケット転送装置210に送信し、パケット転送装置210がそのパケットを受信すると(ステップS901)、パケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、パケット処理部213は、受信したパケットをバッファリングしてから、経路制御装置100に対して、新規フロー検出通知メッセージ(Packet−Inメッセージ)を送信する(ステップS902)。
【0136】
このPacket−Inメッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
【0137】
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置100に送信することを想定している。ただし、パケット転送装置210は、受信したパケットそのものを経路制御装置100に送信してもよい。
【0138】
ここで、経路制御装置100がPacket−Inメッセージを受信したときの動作を
図8を用いて説明する。
【0139】
経路制御装置100がパケット転送装置210からPacket−Inメッセージを受信すると(ステップS301)、経路・アクション計算部103は、該当パケットの経路を計算し、その経路上に存在するパケット転送装置のアクションを決定する(ステップS302)。次に、制御メッセージ送信先決定部101は、経路上のパケット転送装置の中から、宛先として、アクションの内容を含む処理規則を通知するパケット転送装置の宛先を決定する(ステップS303)。そして、制御メッセージ送信先決定部101は、決定した宛先に対してFlowModを通知する(ステップS304)。
【0140】
制御メッセージ送信先決定部101が宛先として決定したパケット転送装置に経路情報を通知したあと、フローエントリ管理部108は、フローエントリ記憶部107に経路情報を登録する。なお、パケット転送装置において処理規則が削除された場合、経路制御装置100では、フローエントリ記憶部107からそのフローに対する経路情報を削除してもよい。
【0141】
図12は、処理規則を通知するパケット転送装置を決定する動作の例を示す説明図である。以下、
図12を用いて、パケット転送装置の宛先を決定するステップS303の内容を詳しく説明する。
【0142】
まず、経路制御装置100がPacket−Inを受信すると、フローエントリ管理部108は、データパケットを特定する要素(ヘッダ領域)を抽出する(ステップS1201)。例えば、5タプル(tuple)でフローが区別される場合、フローエントリ管理部108は、データパケットの5タプルの内容(tuple)を確認する。
【0143】
次に、フローエントリ管理部108は、フローエントリ記憶部107を参照し、そのフローに対するフローエントリが存在しているか確認する(ステップS1202)。確認した結果、フローエントリがフローエントリ記憶部107に存在していない場合(ステップS1202におけるN)、それは、新規フローであることを意味する。そこで、制御メッセージ送信先決定部101は、経路・アクション計算部103が計算した経路上の全パケット転送装置に対して、処理規則を通知すると決定し、決定した通知先に処理規則を送信する(ステップS1204)。
【0144】
一方、フローエントリがフローエントリ記憶部107に存在していた場合(ステップS1202におけるY)、制御メッセージ送信先決定部101は、Packet−Inメッセージを送信したパケット転送装置に対してのみ処理規則を通知することになる(ステップS1203)。なお、フローエントリがフローエントリ記憶部107に存在していた場合の処理については後述する。
【0145】
こうして、制御メッセージ送信先決定部101は、FlowModメッセージの送り先を決定すると、パケット転送装置210〜230に対してFlowModメッセージを送信する(
図16におけるステップS903)。
【0146】
パケット処理部213は、設定されたエントリに従って、バッファリングしてあるパケットをパケット転送装置220に転送する(
図16におけるステップS904−1)。このパケットが転送される転送経路上のパケット転送装置220,230には、既にエントリの設定が行われている。そのため、このパケットは、パケット転送装置220,230の順で転送され、外部端末320に届くことになる(ステップS904−2、ステップS904−3)。
【0147】
次に、
図12におけるステップS1203の処理が行われる状況(すなわち、受信したパケットが新規フローでない場合の処理)を
図11を用いて説明する。
【0148】
まず、外部端末310が外部端末320宛てに、最初のデータパケットを送信すると、このデータパケットは、外部端末320に接続されたパケット転送装置210に送信される(ステップS1301−1)。パケット転送装置210がパケットを受信すると、パケット処理部213は、フローテーブルから、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリを検索する。
【0149】
しかし、受信したパケットは最初のパケットであるため、フローテーブルに該当するエントリは存在しない。そこで、制御メッセージ送受信部211は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フロー検出通知メッセージ(Packet−Inメッセージ)を送信する(ステップS1302)。
【0150】
このPacket−Inメッセージには、フローの識別に必要な情報(例えば、MACアドレス、IPアドレス、ポート番号(それぞれ送信元と宛先の両方含む))と、パケットの受信ポートを示す情報が含まれる。
【0151】
ここでは、パケット転送装置210が受信したパケットをバッファリングして、フローの識別に必要な情報を経路制御装置(コントローラ)100に送信することを想定している。ただし、制御メッセージ送受信部211は、受信したパケットそのものを経路制御装置(コントローラ)100に送信してもよい。
【0152】
経路制御装置(コントローラ)100がPacket−Inメッセージを受信すると、経路・アクション計算部103は、受信したメッセージから新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、
図15に例示する「InPort」〜「TCP/UDP src port」の情報である。
【0153】
さらに、経路・アクション計算部103は、受信したメッセージに基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部端末320へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置210→パケット転送装置220→パケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
【0154】
次に、経路・アクション計算部103は、新規エントリの照合規則(マッチングキー)と一致するパケットに対して、計算された転送経路に従って転送することを規定したアクションおよびタイマー値を設定したエントリを、各パケット転送装置210〜230ごとに作成する。そして、制御メッセージ送信先決定部101は、作成したエントリを、FlowModメッセージを用いて、各パケット転送装置210〜230に通知する(ステップS1303−1、ステップS1303−2、ステップS1303−3)。
【0155】
ここで、各パケット転送装置210に対するFlowModメッセージ(ステップS1303−1で送信したFlowModメッセージ)と、パケット転送装置230に対するFlowModメッセージ(ステップS1303−3で送信したFlowModメッセージ)が各パケット転送装置に到着するものとする。一方、パケット転送装置220に対するFlowModメッセージ(ステップS1303−2で送信したFlowModメッセージ)がネットワークの輻輳によるパケットロスや遅延等によりパケット転送装置220に到着しなかったとする。
【0156】
パケット転送装置210がFlowModメッセージを受信し、パケット処理部213がフローテーブルへのエントリの設定を完了すると、パケット処理部213は、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置220に転送する(ステップS1301−2)。パケット転送装置220がパケット転送装置210からデータパケットを受信すると、パケット転送装置220のパケット処理部213は、そのパケットのヘッダ情報に適合する照合規則(マッチングキー)を含むエントリをフローテーブルから検索する。しかし、パケット転送装置220へのFlowModメッセージは到着しておらず、該当するエントリはフローテーブルに存在しない。そこで、パケット転送装置220の制御メッセージ送受信部211は、受信したパケットをバッファリングしてから、経路制御装置(コントローラ)100に対して、新規フロー検出通知メッセージ(Packet−Inメッセージ)を送信する(ステップS1304)。
【0157】
経路制御装置(コントローラ)100がPacket−Inメッセージを受信すると、経路・アクション計算部103は、受信した情報に基づいて、新規エントリの照合規則(マッチングキー)を作成し、そのエントリに適用するタイマー値を決定する。照合規則として作成する情報は、例えば、
図15に例示する「InPort」〜「TCP/UDP src port」の情報である。さらに、経路・アクション計算部103は、受信した情報に基づいて、宛先である外部端末320の位置確認を行い、外部端末310から外部装置320へのパケット転送経路を計算する。ここでは、転送経路を計算した結果、パケット転送装置220からパケット転送装置230の順でパケットを転送する転送経路が計算されたものとする。
【0158】
次に、経路制御装置(コントローラ)100は、FlowModの宛先を決定する。まず、経路制御装置100がPacket−Inを受信すると、フローエントリ管理部108は、データパケットを特定する要素(ヘッダ領域)を抽出する(
図12におけるステップS1201)。例えば、5タプル(tuple)でフローが区別される場合、フローエントリ管理部108は、データパケットの5タプルの内容(tuple)を確認する。
【0159】
次に、フローエントリ管理部108は、フローエントリ記憶部107を参照し、その5タプルについて識別したフローに対するフローエントリが存在しているか確認する(ステップS1202)。確認した結果、フローエントリがフローエントリ記憶部107に存在している場合(ステップS1202におけるY)、それは、新規フローでないことを意味する。そこで、制御メッセージ送信先決定部101は、新規フロー検出通知メッセージを送信したパケット転送装置に対してのみ処理規則を通知すると決定し、決定した通知先に処理規則を送信する(ステップS1203)。
【0160】
こうして、制御メッセージ送信先決定部101は、
図11に例示するように、パケット転送装置220に対してのみFlowModを送信する(
図11におけるステップS1305−1)。パケット処理部213は、FlowModメッセージを受信すると、設定されたエントリに従ってバッファリングしてあるパケットをパケット転送装置230に転送する(ステップS1301−3)。そして、このパケットは、パケット転送装置230に転送され、外部端末320に届くことになる(ステップS1301−4)。
【0161】
次に、本発明の最小構成を説明する。
図13は、本発明による通信経路制御システムの最小構成の例を示すブロック図である。本発明による通信経路制御システムは、パケットの転送方法を規定したルールであるパケット転送ルールに基づいて受信したパケットを転送するパケット転送装置80(例えば、パケット転送装置210〜230)と、パケット転送ルールの適用をパケット転送装置80に指示することによりパケットの通信経路を制御する経路制御装置90(例えば、経路制御装置100)とを備えている。
【0162】
パケット転送装置80は、受信したパケットに対する処理内容(例えば、アクション)を経路制御装置90に問い合わせる処理内容問合せ手段81(例えば、制御メッセージ送受信部211)を含む。
【0163】
経路制御装置90は、パケット転送装置80からパケットに対する処理内容の問い合わせを受信したときに、パケットに応じて決定されるパケット転送ルールを適用させるパケット転送装置80を、そのパケットに対する処理内容の問い合わせが初めてか否かに基づいて決定するパケット転送装置決定手段91(例えば、制御メッセージ送信先決定部101)を含む。
【0164】
そのような構成により、通信経路の制御に用いられるパケットの量を削減できる。
【0165】
また、パケット転送装置決定手段91が、問い合わせを行ったパケット転送装置が、他の装置に対して通信を行う端末装置(例えば、外部端末310)がデータパケットを送信する経路上の最初のパケット転送装置であるか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定してもよい。
【0166】
また、経路制御装置90が、パケット転送装置に設定しているパケット転送ルールを記憶するパケット転送ルール記憶手段(例えば、フローエントリ記憶部107)を含んでいてもよい。そして、パケット転送装置決定手段91(例えば、制御メッセージ送信先決定部101、フローエントリ管理部108)が、処理内容の問い合わせが行われたパケットに対応するパケット転送ルールがパケット転送ルール記憶手段に記憶されているか否かに基づいてパケット転送ルールを適用させるパケット転送装置を決定してもよい。
【0167】
また、経路制御装置90が、パケット転送装置が他の装置と接続する接続形態を示す情報であるトポロジ(例えば、ネットワークトポロジ)を記憶するトポロジ記憶手段(例えば、端末位置記憶部106)を含んでいてもよい。そして、パケット転送装置決定手段91が、パケットの処理内容について問い合わせを行ったパケット転送装置が経路上の最初のパケット転送装置であるか否かを、トポロジとパケットに含まれる情報のうち問い合わせが行われたパケット転送装置の識別子およびその問い合わせを受信した受信ポートの識別子(例えば、Input port)とに基づいて判断し、その判断結果に基づいてパケット転送ルールを適用させるパケット転送装置を決定してもよい。
【0168】
また、パケット転送装置決定手段91が、パケットに対する処理内容の問い合わせが初めての場合に、他の装置に対して通信を行う端末装置(例えば、外部端末310)により送信されるデータパケットの経路上における全てのパケット転送装置にパケット転送ルールを適用させると決定し、問い合わせが初めてではない場合に、その問い合わせを行ったパケット転送装置に対してパケット転送ルールを適用させると決定してもよい。
【0169】
また、
図14は、本発明による経路制御装置の最小構成の例を示すブロック図である。
図14に例示する経路制御装置は、
図13に例示する経路制御装置90の内容と同様である。このような構成によっても、通信経路の制御に用いられるパケットの量を削減できる
【0170】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。すなわち、本発明は、上述の実施例に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【0171】
この出願は、2010年12月13日に出願された日本特許出願2010−277204を基礎とする優先権を主張し、その開示の全てをここに取り込む。