(57)【要約】  モジュール列決定ブロックは、それぞれ異なるネットワーク制御機能を有する複数の制御アプリケーションモジュールのうち少なくとも１つからなるモジュール列を決定する。ここで、制御アプリケーションモジュール毎に用意された添付データが用いられる。添付データは、対応する制御アプリケーションモジュールによって決定される操作の際に参照あるいは書き換えられる操作パラメータを示す。モジュール列決定ブロックは、各添付データを参照し、整合性が保障されたモジュール列を決定する。スケジューリングブロックは、モジュール列を順番に実行し、一連のネットワーク制御機能に応じた一連の操作を示す単一のエントリ設定データを作成する。
2011074559.tif 000002
【特許請求の範囲】
【請求項１】
パケット処理テーブルを有するネットワーク機器と、
前記ネットワーク機器に接続されたネットワーク制御装置と
を具備し、
前記パケット処理テーブルの各エントリは、マッチ条件と、前記マッチ条件にマッチするパケットに対して実施される操作とを示し、
前記ネットワーク機器は、前記ネットワーク制御装置から送られるエントリ設定データに応答して前記各エントリを設定し、
前記ネットワーク機器は、パケットを受信すると前記パケット処理テーブルを参照し、前記受信パケットがいずれかのエントリの前記マッチ条件にマッチした場合、前記いずれかのエントリで指定される前記操作を前記受信パケットに対して実施し、
前記ネットワーク制御装置は、
それぞれ異なるネットワーク制御機能を有し、それぞれのネットワーク制御機能に応じて前記操作の内容を決定する複数の制御アプリケーションモジュールと、
前記複数の制御アプリケーションモジュールのうち少なくとも１つからなり、対象パケットに適用される一連のネットワーク制御機能を有するモジュール列を決定するモジュール列決定ブロックと、
前記モジュール列を順番に実行し、前記一連のネットワーク制御機能に応じた一連の前記操作を示す単一のエントリ設定データを作成するスケジューリングブロックと、
前記単一のエントリ設定データを前記ネットワーク機器に送信するテーブル設定ブロックと、
前記複数の制御アプリケーションモジュールのそれぞれに関する複数の添付データが格納される記憶装置と
を備え、
前記複数の添付データの各々は、対応する制御アプリケーションモジュールによって決定される前記操作の際に参照あるいは書き換えられる操作パラメータを示し、
前記モジュール列決定ブロックは、前記各添付データを参照し、前記対象パケットに対して実施される前記一連の操作に不整合が生じないように、前記モジュール列を決定する
ネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記各添付データは、更に、前記対応する制御アプリケーションモジュールと他の制御アプリケーションモジュールとの間の依存関係を示し、
前記モジュール列決定ブロックは、前記各添付データを参照し、前記依存関係が満たされるように前記モジュール列を決定する
ネットワークシステム。
【請求項３】
請求項１又は２に記載のネットワークシステムであって、
前記受信パケットがいずれのエントリの前記マッチ条件ともマッチしない場合、前記ネットワーク機器は、前記受信パケットを前記対象パケットとして前記ネットワーク制御装置に送信する
ネットワークシステム。
【請求項４】
ネットワーク機器に接続されるネットワーク制御装置であって、
前記ネットワーク機器は、パケット処理テーブルを有し、
前記パケット処理テーブルの各エントリは、マッチ条件と、前記マッチ条件にマッチするパケットに対して実施される操作とを示し、
前記ネットワーク機器は、前記ネットワーク制御装置から送られるエントリ設定データに応答して前記各エントリを設定し、
前記ネットワーク機器は、パケットを受信すると前記パケット処理テーブルを参照し、前記受信パケットがいずれかのエントリの前記マッチ条件にマッチした場合、前記いずれかのエントリで指定される前記操作を前記受信パケットに対して実施し、
前記ネットワーク制御装置は、
それぞれ異なるネットワーク制御機能を有し、それぞれのネットワーク制御機能に応じて前記操作の内容を決定する複数の制御アプリケーションモジュールと、
前記複数の制御アプリケーションモジュールのうち少なくとも１つからなり、対象パケットに適用される一連のネットワーク制御機能を有するモジュール列を決定するモジュール列決定ブロックと、
前記モジュール列を順番に実行し、前記一連のネットワーク制御機能に応じた一連の前記操作を示す単一のエントリ設定データを作成するスケジューリングブロックと、
前記単一のエントリ設定データを前記ネットワーク機器に送信するテーブル設定ブロックと、
前記複数の制御アプリケーションモジュールのそれぞれに関する複数の添付データが格納される記憶装置と
を備え、
前記複数の添付データの各々は、対応する制御アプリケーションモジュールによって決定される前記操作の際に参照あるいは書き換えられる操作パラメータを示し、
前記モジュール列決定ブロックは、前記各添付データを参照し、前記対象パケットに対して実施される前記一連の操作に不整合が生じないように、前記モジュール列を決定する
ネットワーク制御装置。
【請求項５】
請求項４に記載のネットワーク制御装置であって、
前記各添付データは、更に、前記対応する制御アプリケーションモジュールと他の制御アプリケーションモジュールとの間の依存関係を示し、
前記モジュール列決定ブロックは、前記各添付データを参照し、前記依存関係が満たされるように前記モジュール列を決定する
ネットワーク制御装置。
【請求項６】
ネットワーク機器の制御方法であって、
前記ネットワーク機器は、パケット処理テーブルを有し、
前記パケット処理テーブルの各エントリは、マッチ条件と、前記マッチ条件にマッチするパケットに対して実施される操作とを示し、
前記ネットワーク機器は、ネットワーク制御装置から送られるエントリ設定データに応答して前記各エントリを設定し、
前記ネットワーク機器は、パケットを受信すると前記パケット処理テーブルを参照し、前記受信パケットがいずれかのエントリの前記マッチ条件にマッチした場合、前記いずれかのエントリで指定される前記操作を前記受信パケットに対して実施し、
前記ネットワーク制御装置が備える複数の制御アプリケーションモジュールは、それぞれ異なるネットワーク制御機能を有し、それぞれのネットワーク制御機能に応じて前記操作の内容を決定し、
前記制御方法は、
モジュール列を決定するステップと、ここで、前記モジュール列は、前記複数の制御アプリケーションモジュールのうち少なくとも１つからなり、対象パケットに適用される一連のネットワーク制御機能を有し、
前記モジュール列を順番に実行し、前記一連のネットワーク制御機能に応じた一連の前記操作を示す単一のエントリ設定データを作成するステップと、
前記単一のエントリ設定データを前記ネットワーク機器に送信するステップと
を含み、
前記モジュール列を決定するステップは、
前記複数の制御アプリケーションモジュールのそれぞれに関する複数の添付データを記憶装置から読みだすステップと、ここで、前記複数の添付データの各々は、対応する制御アプリケーションモジュールによって決定される前記操作の際に参照あるいは書き換えられる操作パラメータを示し、
前記各添付データを参照し、前記対象パケットに対して実施される前記一連の操作に不整合が生じないように、前記モジュール列を決定するステップと
を含む
制御方法。
【請求項７】
請求項６に記載の制御方法であって、
前記各添付データは、更に、前記対応する制御アプリケーションモジュールと他の制御アプリケーションモジュールとの間の依存関係を示し、
前記モジュール列を決定するステップは、更に、前記各添付データを参照し、前記依存関係が満たされるように前記モジュール列を決定するステップを含む
制御方法。
【請求項８】
ネットワーク機器の制御処理をネットワーク制御装置に実行させる制御プログラムが記録された記録媒体であって、
前記ネットワーク機器は、パケット処理テーブルを有し、
前記パケット処理テーブルの各エントリは、マッチ条件と、前記マッチ条件にマッチするパケットに対して実施される操作とを示し、
前記ネットワーク機器は、前記ネットワーク制御装置から送られるエントリ設定データに応答して前記各エントリを設定し、
前記ネットワーク機器は、パケットを受信すると前記パケット処理テーブルを参照し、前記受信パケットがいずれかのエントリの前記マッチ条件にマッチした場合、前記いずれかのエントリで指定される前記操作を前記受信パケットに対して実施し、
前記ネットワーク制御装置が備える複数の制御アプリケーションモジュールは、それぞれ異なるネットワーク制御機能を有し、それぞれのネットワーク制御機能に応じて前記操作の内容を決定し、
前記制御処理は、
モジュール列を決定するステップと、ここで、前記モジュール列は、前記複数の制御アプリケーションモジュールのうち少なくとも１つからなり、対象パケットに適用される一連のネットワーク制御機能を有し、
前記モジュール列を順番に実行し、前記一連のネットワーク制御機能に応じた一連の前記操作を示す単一のエントリ設定データを作成するステップと、
前記単一のエントリ設定データを前記ネットワーク機器に送信するステップと
を含み、
前記モジュール列を決定するステップは、
前記複数の制御アプリケーションモジュールのそれぞれに関する複数の添付データを記憶装置から読みだすステップと、ここで、前記複数の添付データの各々は、対応する制御アプリケーションモジュールによって決定される前記操作の際に参照あるいは書き換えられる操作パラメータを示し、
前記各添付データを参照し、前記対象パケットに対して実施される前記一連の操作に不整合が生じないように、前記モジュール列を決定するステップと
を含む
記録媒体。
【請求項９】
請求項８に記載の記録媒体であって、
前記各添付データは、更に、前記対応する制御アプリケーションモジュールと他の制御アプリケーションモジュールとの間の依存関係を示し、
前記モジュール列を決定するステップは、更に、前記各添付データを参照し、前記依存関係が満たされるように前記モジュール列を決定するステップを含む
記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムにおけるネットワーク機器を制御する技術に関する。特に、本発明は、パケット処理テーブルに従ってパケット処理を行うネットワーク機器を制御する技術に関する。
【背景技術】
【０００２】
図１は、非特許文献１に記載されている「オープンフロー（ＯｐｅｎＦｌｏｗ）」という技術を説明するための概念図である。オープンフローでは、フロー単位で経路制御、障害回復、負荷分散、最適化が行われる。オープンフローでは、転送ノードとして機能するオープンフロースイッチ（ＳＷ）と、そのオープンフロースイッチを制御するオープンフローコントローラ（Ｃｏｎｔｒｏｌｌｅｒ）が用いられる。【０００３】
オープンフロースイッチは、「マッチ条件」と「アクション」との対応関係を示すフローテーブル（ｆｌｏｗ  ｔａｂｌｅ）を備え、このフローテーブルに従って動作する。具体的には、オープンフロースイッチは、パケットを受け取ると、フローテーブルを参照し、受信パケットにマッチするエントリをフローテーブルから検索する。受信パケットにマッチするエントリがフローテーブルに登録されている場合、オープンフロースイッチは、当該マッチエントリのアクションで指定されている処理を、受信パケットに対して実行する。典型的には、オープンフロースイッチは、アクションで指定されている出力ポートに受信パケットを転送する。【０００４】
オープンフロースイッチのフローテーブルの内容を設定するのが、オープンフローコントローラである。すなわち、オープンフローコントローラは、新規エントリの追加、エントリ変更、エントリ削除などをオープンフロースイッチに指示し、それにより、オープンフロースイッチの動作を制御することができる。【０００５】
例えば、あるオープンフロースイッチがあるフローのパケットを受信したとき、当該受信パケットにマッチするエントリがフローテーブルに見つからなかった場合を考える。そのような受信パケットは、以下「第１パケット」と参照される。この場合、そのオープンフロースイッチは、第１パケットをオープンフローコントローラに送信する。この第１パケットに応答して、オープンフローコントローラは、第１パケットを先頭とする当該フローのパケット列に対する処理内容を決定する。つまり、オープンフローコントローラは、当該フローに対する処理に必要なオープンフロースイッチ及びそれぞれのフローテーブルに設定すべき新規エントリを決定する。そして、オープンフローコントローラは、必要なオープンフロースイッチのそれぞれに対して、新規エントリの追加を指示する。指示を受け取った各オープンフロースイッチは、自身のフローテーブルに新規エントリを追加する。そして、オープンフローコントローラは、第１パケットをオープンフロースイッチに返送する。その後、第１パケット及び同一フローの後続パケットは、その新規エントリに従って処理される、すなわち、オープンフローコントローラを介することなく、各オープンフロースイッチによって高速に処理されることになる。【０００６】
ここで、オープンフローコントローラは、それぞれ異なるネットワーク制御機能を有する様々なアプリケーションを備えている。そして、オープンフローコントローラは、それらアプリケーションを任意に実行することにより、フローに対する処理内容を様々に設定することができる。これにより、柔軟で拡張性に優れたネットワーク制御が可能となる。【０００７】
様々なネットワーク制御機能の例としては、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」や「ＮＡＰＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ）」が挙げられる。「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」は、最短経路に沿ったパケット伝送を実現するための機能である。具体的には、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」は、パケットの宛先アドレスへの最短経路を設計し、その最短経路に沿ったパケット転送が実現されるエントリを決定し、当該エントリを最短経路上の各スイッチに設定する。「ＮＡＰＴ」は、アドレス／ポート変換を指定するエントリを設定する。これにより、特定のスイッチを、特定のフローに対するＮＡＰＴ装置として働かせることができる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Nick McKeown et al., “OpenFlow:Enabling Innovation in Campus Networks”, ACM SIGCOMMComputer Communication Review, Vol. 38, No. 2, 2008. (http://www.openflowswitch.org//documents/openflow-wp-latest.pdf)
【発明の概要】
【０００９】
同一フローに対して、複数のネットワーク制御機能を組み合わせて適用することを考える。例えば、上述の「ＮＡＰＴ」と「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」を組み合わせて同一フローに適用することを考える。図２は、その場合に設定されるフローテーブルのエントリの例を示している。
【００１０】
図２に示されるように、フローテーブルの各エントリは「マッチ条件」と「アクション」を示している。図２の例において、マッチ条件は、発信元ＩＰアドレス、発信元ポート番号、宛先ＩＰアドレス、及び宛先ポート番号の組み合わせで構成されている。エントリＡとエントリＢのマッチ条件は同じであり、それらエントリＡとエントリＢは同一フローのパケットに対する処理内容を示している。エントリＡは、「ＮＡＰＴ」により設定されたものであり、発信元ＩＰアドレスを“１０．５６．１．１０”に書き換え、発信元ポート番号を“４９８１７”に書き換えることを指定している。一方、エントリＢは、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」により設定されたものであり、受信パケットの出力先として“ポート３”を指定している。
【００１１】
しかしながら、図２中のエントリＡとエントリＢは、「ＮＡＰＴ」と「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」によってそれぞれ独立に設定されている。つまり、「ＮＡＰＴ」と「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」の組み合わせを考慮することなく、エントリＡとエントリＢは、互いに無関係に設定されている。この場合、次のような問題が発生する。
【００１２】
当該フローのパケット受信時、最初にエントリＡがヒットした場合を考える。この場合、受信パケットの発信元ＩＰアドレスと発信元ポート番号が書き換えられる。従って、その後、エントリＢはヒットしない、すなわち、所望の出力先に受信パケットは送出されない。一方、最初にエントリＢがヒットした場合、アドレス変換が行われないまま、パケットが送出されてしまう。このように、「ＮＡＰＴ」と「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」の組み合わせによる所望のパケット処理が実現されない。
【００１３】
より一般的に、フローテーブル、経路表、パケットフィルタ等、パケットに対する処理内容を指定するテーブルは、以下「パケット処理テーブル」と参照される。パケット処理テーブルを備え、そのパケット処理テーブルに従ってパケット処理を行う機器は、以下「ネットワーク機器」と参照される。パケット処理テーブルの内容を決定することによって、ネットワーク機器の動作を制御する、すなわち、ネットワーク制御を行う装置は、以下「ネットワーク制御装置」と参照される。
【００１４】
本発明の１つの目的は、ネットワーク制御装置が同一フローに対して複数のネットワーク制御機能を組み合わせて適用する場合に、その組み合わせに応じたパケット処理が不整合無く実現されるようにパケット処理テーブルを設定することができる技術を提供することにある。
【００１５】
本発明の１つの観点において、ネットワークシステムが提供される。そのネットワークシステムは、パケット処理テーブルを有するネットワーク機器と、ネットワーク機器に接続されたネットワーク制御装置と、を具備する。パケット処理テーブルの各エントリは、マッチ条件と、マッチ条件にマッチするパケットに対して実施される操作とを示す。ネットワーク機器は、ネットワーク制御装置から送られるエントリ設定データに応答して各エントリを設定する。ネットワーク機器は、パケットを受信するとパケット処理テーブルを参照し、受信パケットがいずれかのエントリのマッチ条件にマッチした場合、いずれかのエントリで指定される操作を受信パケットに対して実施する。
【００１６】
ネットワーク制御装置は、複数の制御アプリケーションモジュール、モジュール列決定ブロック、スケジューリングブロック、テーブル設定ブロック、及び記憶装置を備える。複数の制御アプリケーションモジュールは、それぞれ異なるネットワーク制御機能を有し、それぞれのネットワーク制御機能に応じて操作の内容を決定する。モジュール列決定ブロックは、モジュール列を決定する。モジュール列は、複数の制御アプリケーションモジュールのうち少なくとも１つからなり、対象パケットに適用される一連のネットワーク制御機能を有する。スケジューリングブロックは、モジュール列を順番に実行し、一連のネットワーク制御機能に応じた一連の操作を示す単一のエントリ設定データを作成する。テーブル設定ブロックは、その単一のエントリ設定データをネットワーク機器に送信する。
【００１７】
記憶装置には、複数の制御アプリケーションモジュールのそれぞれに関する複数の添付データが格納される。複数の添付データの各々は、対応する制御アプリケーションモジュールによって決定される操作の際に参照あるいは書き換えられる操作パラメータを示す。モジュール列決定ブロックは、各添付データを参照し、対象パケットに対して実施される一連の操作に不整合が生じないように、モジュール列を決定する。
【００１８】
本発明の他の観点において、ネットワーク機器に接続されるネットワーク制御装置が提供される。ネットワーク機器は、パケット処理テーブルを有する。パケット処理テーブルの各エントリは、マッチ条件と、マッチ条件にマッチするパケットに対して実施される操作とを示す。ネットワーク機器は、ネットワーク制御装置から送られるエントリ設定データに応答して各エントリを設定する。ネットワーク機器は、パケットを受信するとパケット処理テーブルを参照し、受信パケットがいずれかのエントリのマッチ条件にマッチした場合、いずれかのエントリで指定される操作を受信パケットに対して実施する。
【００１９】
ネットワーク制御装置は、複数の制御アプリケーションモジュール、モジュール列決定ブロック、スケジューリングブロック、テーブル設定ブロック、及び記憶装置を備える。複数の制御アプリケーションモジュールは、それぞれ異なるネットワーク制御機能を有し、それぞれのネットワーク制御機能に応じて操作の内容を決定する。モジュール列決定ブロックは、モジュール列を決定する。モジュール列は、複数の制御アプリケーションモジュールのうち少なくとも１つからなり、対象パケットに適用される一連のネットワーク制御機能を有する。スケジューリングブロックは、モジュール列を順番に実行し、一連のネットワーク制御機能に応じた一連の操作を示す単一のエントリ設定データを作成する。テーブル設定ブロックは、その単一のエントリ設定データをネットワーク機器に送信する。
【００２０】
記憶装置には、複数の制御アプリケーションモジュールのそれぞれに関する複数の添付データが格納される。複数の添付データの各々は、対応する制御アプリケーションモジュールによって決定される操作の際に参照あるいは書き換えられる操作パラメータを示す。モジュール列決定ブロックは、各添付データを参照し、対象パケットに対して実施される一連の操作に不整合が生じないように、モジュール列を決定する。
【００２１】
本発明の更に他の観点において、ネットワーク機器の制御方法が提供される。ネットワーク機器は、パケット処理テーブルを有する。パケット処理テーブルの各エントリは、マッチ条件と、マッチ条件にマッチするパケットに対して実施される操作とを示す。ネットワーク機器は、ネットワーク制御装置から送られるエントリ設定データに応答して各エントリを設定する。ネットワーク機器は、パケットを受信するとパケット処理テーブルを参照し、受信パケットがいずれかのエントリのマッチ条件にマッチした場合、いずれかのエントリで指定される操作を受信パケットに対して実施する。ネットワーク制御装置が備える複数の制御アプリケーションモジュールは、それぞれ異なるネットワーク制御機能を有し、それぞれのネットワーク制御機能に応じて操作の内容を決定する。
【００２２】
上記制御方法は、（Ａ）モジュール列を決定するステップと、ここで、モジュール列は、複数の制御アプリケーションモジュールのうち少なくとも１つからなり、対象パケットに適用される一連のネットワーク制御機能を有し、（Ｂ）モジュール列を順番に実行し、一連のネットワーク制御機能に応じた一連の操作を示す単一のエントリ設定データを作成するステップと、（Ｃ）その単一のエントリ設定データをネットワーク機器に送信するステップと、を含む。上記（Ａ）モジュール列を決定するステップは、（Ａ１）複数の制御アプリケーションモジュールのそれぞれに関する複数の添付データを記憶装置から読みだすステップと、ここで、複数の添付データの各々は、対応する制御アプリケーションモジュールによって決定される操作の際に参照あるいは書き換えられる操作パラメータを示し、（Ａ２）各添付データを参照し、対象パケットに対して実施される一連の操作に不整合が生じないように、モジュール列を決定するステップと、を含む。
【００２３】
本発明の更に他の観点において、ネットワーク機器の制御処理をネットワーク制御装置に実行させる制御プログラムが提供される。ネットワーク機器は、パケット処理テーブルを有する。パケット処理テーブルの各エントリは、マッチ条件と、マッチ条件にマッチするパケットに対して実施される操作とを示す。ネットワーク機器は、ネットワーク制御装置から送られるエントリ設定データに応答して各エントリを設定する。ネットワーク機器は、パケットを受信するとパケット処理テーブルを参照し、受信パケットがいずれかのエントリのマッチ条件にマッチした場合、いずれかのエントリで指定される操作を受信パケットに対して実施する。ネットワーク制御装置が備える複数の制御アプリケーションモジュールは、それぞれ異なるネットワーク制御機能を有し、それぞれのネットワーク制御機能に応じて操作の内容を決定する。
【００２４】
上記制御処理は、（Ａ）モジュール列を決定するステップと、ここで、モジュール列は、複数の制御アプリケーションモジュールのうち少なくとも１つからなり、対象パケットに適用される一連のネットワーク制御機能を有し、（Ｂ）モジュール列を順番に実行し、一連のネットワーク制御機能に応じた一連の操作を示す単一のエントリ設定データを作成するステップと、（Ｃ）その単一のエントリ設定データをネットワーク機器に送信するステップと、を含む。上記（Ａ）モジュール列を決定するステップは、（Ａ１）複数の制御アプリケーションモジュールのそれぞれに関する複数の添付データを記憶装置から読みだすステップと、ここで、複数の添付データの各々は、対応する制御アプリケーションモジュールによって決定される操作の際に参照あるいは書き換えられる操作パラメータを示し、（Ａ２）各添付データを参照し、対象パケットに対して実施される一連の操作に不整合が生じないように、モジュール列を決定するステップと、を含む。
【００２５】
本発明によれば、ネットワーク制御装置が同一フローに対して複数のネットワーク制御機能を組み合わせて適用する場合に、その組み合わせに応じたパケット処理が不整合無く実現されるようにパケット処理テーブルを設定することが可能となる。
【図面の簡単な説明】
【００２６】
上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。【００２７】
【図１】図１は、オープンフローを説明するための概念図である。
【図２】図２は、フローテーブルに設定されるエントリの例を示している。
【図３】図３は、本発明の実施の形態に係るネットワークシステムの構成例を示すブロック図である。
【図４】図４は、本実施の形態に係るネットワーク機器の構成例を示すブロック図である。
【図５】図５は、本実施の形態におけるパケット処理テーブルを示す概念図である。
【図６】図６は、本実施の形態に係るネットワーク機器における処理を示すフローチャートである。
【図７】図７は、本実施の形態に係るネットワーク制御装置の構成例を示すブロック図である。
【図８】図８は、本実施の形態におけるモジュール列を説明するための概念図である。
【図９】図９は、本実施の形態におけるステップＳ１００（ネットワーク制御処理）を示すフローチャートである。
【図１０】図１０は、本実施の形態における添付データを示す概念図である。
【図１１】図１１は、本実施の形態におけるステップＳ１１０（モジュール列の決定）を説明するための概念図である。
【図１２】図１２は、本実施の形態におけるステップＳ１１０（モジュール列の決定）を示すフローチャートである。
【図１３】図１３は、本実施の形態におけるステップＳ１１３（照合処理）を説明するための概念図である。
【図１４】図１４は、本実施の形態におけるステップＳ１１３（照合処理）を説明するための概念図である。
【図１５】図１５は、本実施の形態におけるステップＳ１１３（照合処理）を説明するための概念図である。
【図１６】図１６は、本実施の形態におけるステップＳ１１３（照合処理）を説明するための概念図である。
【発明を実施するための形態】
【００２８】
添付図面を参照して、本発明の実施の形態を説明する。
【００２９】
１．ネットワークシステム
図３は、本実施の形態に係るネットワークシステム１の構成例を示すブロック図である。ネットワークシステム１は、ネットワーク機器１０、サーバ２０、及びネットワーク制御装置３０を備えている。
【００３０】
ネットワーク機器１０は、典型的には、フローテーブルを備えるスイッチや、経路表を備えるルータである。また、ネットワーク機器１０は、パケットフィルタを備えるファイアウォールであってもよい。それらフローテーブル、経路表、パケットフィルタは、パケットに対する処理内容を指定するものであり、以下「パケット処理テーブル」と総称される。つまり、ネットワーク機器１０は、パケット処理テーブルを備えており、そのパケット処理テーブルに従ってパケット処理を行う。
【００３１】
そのパケット処理テーブルの内容を決定するのが、ネットワーク制御装置３０である。ネットワーク制御装置３０は、制御回線５を介して、各ネットワーク機器１０に接続されている。ネットワーク制御装置３０は、制御回線５を介して各ネットワーク機器１０のパケット処理テーブルを設定する機能を有している。ネットワーク制御装置３０は、パケット処理テーブルの設定を通してネットワーク機器１０の動作を制御することにより、ネットワーク通信を適宜制御することができる。
【００３２】
このような処理を実現するためのネットワーク制御装置３０とネットワーク機器１０との間のインタフェース方式としては、例えば、Ｏｐｅｎｆｌｏｗ（http://www.openflowswitch.org/を参照）が挙げられる。この場合、「Ｏｐｅｎｆｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ」がネットワーク制御装置３０となり、「Ｏｐｅｎｆｌｏｗ  Ｓｗｉｔｃｈ」が各ネットワーク機器１０となる。
【００３３】
本実施の形態に係るネットワークシステム１は、例えば、データセンター（data center）に適用される。
【００３４】
図４は、ネットワーク機器１０の構成例を示すブロック図である。ネットワーク機器１０は、処理ブロック１１、コントローラ通信ブロック１２、記憶ブロック１３、及び複数のポート１５を備えている。外部からパケットが入力されるポート１５は入力ポートであり、パケットが外部に出力されるポート１５は出力ポートである。処理ブロック１１は、入力ポートから出力ポートへのパケット転送等、主要なパケット処理を行う。コントローラ通信ブロック１２は、制御回線５を介してネットワーク制御装置３０に接続されており、ネットワーク制御装置３０との間で通信を行う際のインタフェースとなる。
【００３５】
記憶ブロック１３には、図５に示されるようなパケット処理テーブルＴＢＬが格納されている。図５に示されるように、パケット処理テーブルＴＢＬは、少なくとも１つのエントリを備えており、各エントリは「マッチ条件」と「アクション」を示している。「マッチ条件」は、入力ポート、発信元ＭＡＣアドレス、宛先ＭＡＣアドレス、発信元ＩＰアドレス、宛先ＩＰアドレス、発信元ポート番号、宛先ポート番号などのパラメータの組み合わせで構成される。「アクション」は、マッチ条件にマッチするパケットに対して実施される「操作」を示す。
【００３６】
処理ブロック１１は、入力ポートを通してパケットを受信すると、記憶ブロック１３に格納されているパケット処理テーブルＴＢＬを参照する。そして、処理ブロック１１は、受信パケットのヘッダ情報などに基いて、受信パケットがいずれかのエントリのマッチ条件にマッチするか否かを調べる。つまり、処理ブロック１１は、受信パケットにマッチするエントリをパケット処理テーブルＴＢＬから検索する。受信パケットがいずれかのエントリのマッチ条件にマッチした場合、処理ブロック１１は、該当エントリのアクションで指定される「操作」を、受信パケットに対して実施する。
【００３７】
図２の例で示されたエントリＡの場合、「操作」は、「発信元ＩＰアドレスを“１０．５６．１．１０”に書き換え、発信元ポート番号を“４９８１７”に書き換えること」である。また、エントリＢの場合、「操作」は、「パケットをポート３から送出すること」である。また、このような操作の際に参照されたり書き換えられたりするパラメータは、以下「操作パラメータ」と参照される。図２の例で示されたエントリＡの場合、「操作パラメータ」は、発信元ＩＰアドレス及び発信元ポート番号である。エントリＢの場合、「操作パラメータ」は、出力物理ポートである。
【００３８】
図６は、本実施の形態に係るネットワーク機器１０における処理を示すフローチャートである。ネットワーク機器１０は、あるフローのパケットを受信する（ステップＳ１１）。具体的には、処理ブロック１１が、入力ポートを通してパケットを受信する。入力ポートからパケットを受け取ると、処理ブロック１１は、受信パケットのヘッダ情報を抽出する。そして、処理ブロック１１は、抽出したヘッダ情報と入力ポートを検索キーとして用いて、受信パケットにマッチするエントリをパケット処理テーブルＴＢＬから検索する（ステップＳ１２）。
【００３９】
受信パケットにマッチするエントリがパケット処理テーブルＴＢＬに有る場合（ステップＳ１３；Ｙｅｓ）、処理ブロック１１は、該当ヒットエントリのアクションで指定される「操作」を、受信パケットに対して実施する（ステップＳ１４）。一方、受信パケットにマッチするエントリがパケット処理テーブルＴＢＬに無い場合（ステップＳ１３；Ｎｏ）、その受信パケットは「第１パケット」である。この場合、処理ブロック１１は、コントローラ通信ブロック１２及び制御回線５を介して、第１パケット（あるいは第１パケットのヘッダ情報）をネットワーク制御装置３０に送信する（ステップＳ１５）。
【００４０】
ネットワーク制御装置３０は、ネットワーク機器１０から第１パケット（あるいは第１パケットのヘッダ情報）を受け取る。ネットワーク制御装置３０は、第１パケットのヘッダ情報に基いてフロー識別を行い、当該フローのパケット列に対する処理内容を決定する。具体的には、ネットワーク制御装置３０は、当該フローに対して、必要なネットワーク制御機能を適用する。その結果、必要なネットワーク機器１０のパケット処理テーブルＴＢＬに設定すべきエントリの内容が決まる。設定すべきエントリの内容を示すデータは、以下「エントリ設定データ」と参照される。つまり、ネットワーク制御装置３０は、必要なネットワーク制御機能を実行し、エントリ設定データを作成する。そして、ネットワーク制御装置３０は、そのエントリ設定データを、制御回線５を介して、必要なネットワーク機器１０に送る。このようなネットワーク制御装置３０によるネットワーク制御処理（ステップＳ１００）の詳細は、後述される。
【００４１】
ネットワーク制御装置３０からエントリ設定データを受け取った各ネットワーク機器１０は、そのエントリ設定データに従って、自身のパケット処理テーブルＴＢＬに必要なエントリを設定（追加・変更）する（ステップＳ１６）。また、ネットワーク制御装置３０は、第１パケットをネットワーク機器１０に返信する。その後、第１パケット及び同一フローの後続パケットは、ネットワーク制御装置３０を介することなく、各ネットワーク機器１０によって高速に処理されることになる。
【００４２】
２．ネットワーク制御装置
以下、本実施の形態に係るネットワーク制御装置３０について詳細に説明する。図７は、ネットワーク制御装置３０の構成例を示すブロック図である。ネットワーク制御装置３０は、処理装置４０及び記憶装置５０を備えている。処理装置４０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備え、様々なデータ処理を行う。記憶装置５０は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を含む。
【００４３】
処理装置４０は、ネットワーク制御ブロック１００及び複数の制御アプリケーションモジュール２００を備えている。
【００４４】
ネットワーク制御ブロック１００は、モジュール列決定ブロック１１０、スケジューリングブロック１２０、及びテーブル設定ブロック１３０を含んでいる。これら機能ブロックは、後に詳しく説明されるネットワーク制御処理（ステップＳ１００）を実行する。尚、これら機能ブロックは、処理装置４０が、制御プログラムＰＲＯＧを実行することにより実現される。制御プログラムＰＲＯＧは、ネットワーク制御装置３０（処理装置４０）によって実行されるコンピュータプログラムであり、記憶装置５０に格納されている。制御プログラムＰＲＯＧは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。処理装置４０は、制御プログラムＰＲＯＧを実行することにより、本実施の形態に係るネットワーク制御処理（ステップＳ１００）を実現する。
【００４５】
複数の制御アプリケーションモジュール２００は、それぞれ異なるネットワーク制御機能を有している。図７の例では、Ｎ種類（Ｎは２以上の整数）の制御アプリケーションモジュール２００−１〜２００−Ｎが設けられている。各制御アプリケーションモジュール２００は、処理装置４０が、該当するネットワーク制御機能を有するアプリケーションソフトウェアを実行することにより実現される。各制御アプリケーションモジュール２００は、自身のネットワーク制御機能を実行することにより、対象パケットに対して実施される上記「操作」の内容を決定する。つまり、各制御アプリケーションモジュール２００は、自身のネットワーク制御機能に応じた上記「操作」の内容を決定する。
【００４６】
ネットワーク制御機能の例としては、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」、「ＮＡＰＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ）」、「ｌｏａｄ  ｂａｌａｎｃｉｎｇ」などが挙げられる。「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」は、最短経路に沿ったパケット伝送を実現するための機能である。「ＮＡＰＴ」は、パケットのアドレス／ポート変換を行う機能である。「ｌｏａｄ  ｂａｌａｎｃｉｎｇ」は、負荷分散を行う機能である。
【００４７】
ここで、図８を参照して、本実施の形態における「モジュール列」を説明する。モジュール列は、複数の制御アプリケーションモジュール２００のうち少なくとも１つから構成される。図８の例では、モジュール列は、（１）ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ、（２）ＮＡＰＴ、及び（３）ｌｏａｄ  ｂａｌａｎｃｉｎｇの３個の制御アプリケーションモジュール２００から構成されている。
【００４８】
また、モジュール列では、構成要素としての制御アプリケーションモジュール２００が実行される順序が規定されている。図８の例では、（１）ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ、（２）ＮＡＰＴ、（３）ｌｏａｄ  ｂａｌａｎｃｉｎｇの順番で実行される。ここで、実行順番の観点から、「先行（preceding）」と「後続（subsequent）」が定義され得る。他の制御アプリケーションモジュール２００よりも先に（前段で）実行されるものは、「先行モジュール」である。一方、他の制御アプリケーションモジュール２００よりも後に（後段で）実行されるものは、「後続モジュール」である。例えば、（２）ＮＡＰＴから見て、（１）ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇは先行モジュールであり、（３）ｌｏａｄ  ｂａｌａｎｃｉｎｇは後続モジュールである。
【００４９】
後述されるように、モジュール列における実行順序は、予め適切に決定される。モジュール例は、構成要素としての制御アプリケーションモジュール２００とその実行順序に応じた“一連のネットワーク制御機能”を有していると言える。そして、モジュール列が実行されると、すなわち、それぞれの制御アプリケーションモジュール２００が規定された順序で実行されると、その“一連のネットワーク制御機能”が対象パケットに対して適用されることになる。その結果、その“一連のネットワーク制御機能”に応じた“一連の操作”が決定される。ネットワーク機器１０においては、その“一連の操作”がパケットに対して実施されることになる。
【００５０】
ここで、パケットに対して実施される“一連の操作”に不整合が生じてはならない。例えば、ある操作によってある操作パラメータが書き換えられるとする。その場合に、その書き換えのせいで、次の操作が不可能になるといった事態は避けなければならない。すなわち、“一連の操作”に関して整合性が保障されなければならない。そのような整合性を保障するために利用されるのが、図８に示されるような「添付データ」である。
【００５１】
添付データは、制御アプリケーションモジュール２００毎に予め用意される。各添付データは、対応する制御アプリケーションモジュール２００によって決定される「操作」の際に参照あるいは書き換えられる「操作パラメータ」を示す。例えば、ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇに関する添付データは、「宛先アドレス：参照」及び「出力物理ポート：書換」を示している。これは、ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇによって決定される操作の際に、パケットの宛先アドレスが参照され、また、出力物理ポートが書き換えられることを意味する。
【００５２】
更に、各添付データは、対応する制御アプリケーションモジュール２００と他の制御アプリケーションモジュール２００との間の依存関係を示している。例えば、ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇに関する添付データは、「先行不可：ＮＡＰＴ」を示している。これは、ＮＡＰＴがｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇより先に実行されてはならないことを意味する。また、ＮＡＰＴに関する添付データは、「先行必須：ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」を示している。これは、ＮＡＰＴよりも前にｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇが実行されていなければならないことを意味する。
【００５３】
再度図７を参照して、記憶装置５０には、添付データＡＴＣ、モジュール列データＬＩＮ、エントリ設定データＥＮＴ、制御プログラムＰＲＯＧ等が格納される。添付データＡＴＣは、上述の通りであり、制御アプリケーションモジュール２００毎に予め用意される。図７の例では、複数の制御アプリケーションモジュール２００−１〜２００−Ｎのそれぞれに関する複数の添付データＡＴＣ−１〜ＡＴＣ−Ｎが用意されている。モジュール列データＬＩＮは、図８で示されたようなモジュール列を示すデータである。典型的には、モジュール列データＬＩＮは、モジュール列の構成要素への参照をノードとして持つ線形リスト（linear list）で与えられる。エントリ設定データＥＮＴは、上述の通り、ネットワーク機器１０において設定されるべきエントリの内容を示すデータである。
【００５４】
図９は、ネットワーク制御ブロック１００によるネットワーク制御処理（ステップＳ１００）を示すフローチャートである。
【００５５】
ステップＳ１１０：
ネットワーク制御ブロック１００は、対象パケット受け取る。典型的には、対象パケットは、ネットワーク機器１０から送られる上述の「第１パケット」である。但し、それに限られない。その対象パケットに応答して、モジュール列決定ブロック１１０は、対象パケットに適用される「モジュール列」を決定する。
【００５６】
このとき、モジュール列を構成する制御アプリケーションモジュール２００の実行順序は、そのモジュール列の実行によって決定される“一連の操作”に不整合が生じないように決定されていなければならない。そのために、モジュール列決定ブロック１１０は、記憶装置５０に格納されている必要な添付データＡＴＣを参照する。モジュール列決定ブロック１１０は、添付データＡＴＣを適宜参照することにより、制御アプリケーションモジュール２００間の依存関係や操作パラメータに不整合が生じないようなモジュール列を決定することができる。すなわち、モジュール列決定ブロック１１０は、対象パケットに対して実施される“一連の操作”に不整合が生じないように、適切なモジュール列を決定することができる。モジュール列の決定手法は、後の第３節において更に詳細に説明される。
【００５７】
モジュール列決定ブロック１１０は、決定したモジュール列を示すモジュール列データＬＩＮを作成し、そのモジュール列データＬＩＮを記憶装置５０に格納する。
【００５８】
ステップＳ１２０：
スケジューリングブロック１２０は、モジュール列データＬＩＮを記憶装置５０から読み出す。そして、スケジューリングブロック１２０は、そのモジュール列データＬＩＮに従って、モジュール列で指定される制御アプリケーションモジュール２００を順番に呼び出し、実行する。このとき、必要に応じて、制御アプリケーションモジュール２００間で操作パラメータの受け渡しが行われる。このようにしてモジュール列が実行されることにより、対象パケットに対して実施される整合性が保障された一連の操作が決定される。スケジューリングブロック１２０は、整合性が保障された一連の操作を示す「単一のエントリ設定データＥＮＴ」を作成する。そして、スケジューリングブロック１２０は、対象パケットに対して作成した単一のエントリ設定データＥＮＴを記憶装置５０に格納する。
【００５９】
ステップＳ１３０：
テーブル設定ブロック１３０は、記憶装置５０から、上述の単一のエントリ設定データＥＮＴを読み出す。そして、テーブル設定ブロック１３０は、その単一のエントリ設定データＥＮＴを、必要なネットワーク機器１０に送信する。
【００６０】
ネットワーク制御装置３０から単一のエントリ設定データＥＮＴを受け取った各ネットワーク機器１０は、その単一のエントリ設定データＥＮＴに従って、自身のパケット処理テーブルＴＢＬに単一のエントリを設定する（ステップＳ１６）。その単一のエントリによって指定されている“一連の操作”の整合性は保障されている。従って、複数のネットワーク制御機能の組み合わせに応じた所望のパケット処理が不整合無く実現される。
【００６１】
３．モジュール列の決定（ステップＳ１１０）
以下、モジュール列決定ブロック１１０によるモジュール列の決定手法を、更に詳しく説明する。
【００６２】
図１０は、本実施の形態における添付データＡＴＣを示す概念図である。ある制御アプリケーションモジュール２００に関する添付データＡＴＣは、アプリケーション識別子７１、対象パケット識別情報７２、先頭フラグ７３、依存関係情報７４、操作パラメータ情報７５を含んでいる。アプリケーション識別子７１は、当該制御アプリケーションモジュール２００の識別子である。対象パケット識別情報７２は、当該制御アプリケーションモジュール２００が適用される上記対象パケットの識別情報である。先頭フラグ７３は、当該制御アプリケーションモジュール２００が、当該対象パケットへの適用が要求される制御アプリケーションモジュール２００のうち最初に実行されるべきものであるかどうかを示す。
【００６３】
依存関係情報７４は、当該制御アプリケーションモジュール２００と他の制御アプリケーションモジュール２００との間の依存関係を示している。「先行不可」で指定される他の制御アプリケーションモジュール２００は、当該制御アプリケーションモジュール２００の先行モジュールであってはならない。「先行必須」で指定される他の制御アプリケーションモジュール２００は、当該制御アプリケーションモジュール２００の先行モジュールでなければならない。「後続不可」で指定される他の制御アプリケーションモジュール２００は、当該制御アプリケーションモジュール２００の後続モジュールであってはならない。「後続必須」で指定される他の制御アプリケーションモジュール２００は、当該制御アプリケーションモジュール２００の後続モジュールでなければならない。「排他選択」で指定される他の制御アプリケーションモジュール２００は、当該制御アプリケーションモジュール２００と共にモジュール列に含まれていてはならない。
【００６４】
操作パラメータ情報７５は、当該制御アプリケーションモジュール２００によって決定される「操作」の際に参照あるいは書き換えられる「操作パラメータ」を示す。操作パラメータは、パケットのプロトコルフィールドであり、典型的には次のようなものが挙げられる：ネットワーク機器１０上の、パケットの到達物理ポート、送出物理ポート；イーサネットフレームの、発信元アドレス、宛先アドレス、プロトコルタイプ、ＶＬＡＮタグ；ＩＰｖ４パケットの、発信元アドレス，宛先アドレス，プロトコル番号；ＴＣＰおよびＵＤＰの、発信元ポート，宛先ポート。
【００６５】
図１１は、本実施の形態におけるステップＳ１１０を概念的に示している。図１２は、ステップＳ１１０を示すフローチャートである。モジュール列は、先頭モジュール（最初に実行されるもの）から順次決定される。途中まで決定されたモジュール列は、以下「仮決定モジュール列」と参照される。
【００６６】
ある段のモジュールを決定する際、候補となるモジュールは、以下「候補モジュール」と参照される。候補モジュールは、対応する添付情報ＡＴＣ中の対象パケット識別情報７２が対象パケットと合致する制御アプリケーションモジュール２００である。尚、先頭モジュールを決定する際には、添付情報ＡＴＣ中に先頭フラグ７３がセットされているものが候補モジュールとなる。
【００６７】
ある段のモジュールを決定する際、まず、いずれかの候補モジュールが選択される（ステップＳ１１１、ステップＳ１１２；Ｙｅｓ）。続いて、選択された候補モジュール及び仮決定モジュール列を構成する各モジュールの添付データＡＴＣを参照することにより、候補モジュールと各決定モジュール列を構成する各モジュールとの間で照合（checking）が実行される（Ｓ１１３）。照合の結果、操作パラメータや依存関係に不整合が生じていなければ（ステップＳ１１４；Ｙｅｓ）、その候補モジュールが採用され、仮決定モジュール列の最後に追加される（ステップＳ１１５）。そして、処理は、次段のモジュール決定に移る。
【００６８】
一方、照合の結果、どこかで不整合が生じる場合がある（ステップＳ１１４；Ｎｏ）。その不整合が生じるＮＧ段は、現在検討中の段であるかもしれないし、仮決定モジュール列内の段であるかもしれない。この場合、ＮＧ段のモジュールは「ＮＧ（図１１参照）」に設定される（ステップＳ１１６）。そして、処理は、ＮＧ段におけるモジュール決定に戻る。ＮＧ段におけるモジュール決定において、既に「ＮＧ」に設定されたモジュールは、候補モジュールとして選択されない。
【００６９】
未照合の候補モジュールがもう無い場合（ステップＳ１１２；Ｎｏ）、処理は、前段におけるモジュール決定に戻る。前段において仮決定されていたモジュールは「ＮＧ」に設定され、次の候補モジュールが選択される。
【００７０】
このような処理を再帰的に実行していくことにより、モジュール列が決定される。
【００７１】
ステップＳ１１３における「照合」は、次の通りである。図１３は、依存関係情報７４に基づく依存関係の照合を示している。図１３において、モジュールＡとモジュールＭとは互いに異なるモジュールである。ここでは、モジュールＡに関する添付データＡＴＣ中の依存関係情報７４が参照され、照合が行われる。モジュールＡに関する添付データＡＴＣ中の依存関係情報７４の記述と、モジュールＡとモジュールＭの配置パターン（前後関係）とに依存して、照合結果が異なる。照合結果Ｓは「成功」を意味し、照合結果Ｆは「失敗」を示している。
【００７２】
また、ステップＳ１１３において、操作パラメータの整合性もチェックされる。異なるモジュール間で操作パラメータの干渉が発生する場合、パケットに対する一連の操作が意図しない結果になる可能性がある。従って、仮決定モジュール列及び候補モジュールとの間で、操作パラメータに対する処理（参照、書き換え）に不整合がないか確認される。図１４〜図１６は、いくつかの例を示している。
【００７３】
図１４は、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」と「ＮＡＰＴ  ｅｇｒｅｓｓ」との間の照合を示している。依存関係に関しては、何も規定されていない。操作パラメータに関しては、双方のモジュールにおいて「宛先ＩＰｖ４アドレスの参照」が規定されている。双方とも「参照」するだけなので、実行順にかかわらず、一連の操作は意図しないものにはならない。従って、照合結果は成功（Ｓ）となる。
【００７４】
図１５は、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」と「ＮＡＰＴ  ｉｎｇｒｅｓｓ」との間の照合を示している。依存関係に関しては、何も規定されていない。操作パラメータに関しては、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」において「宛先ＩＰｖ４アドレスの参照」が規定されており、「ＮＡＰＴ  ｉｎｇｒｅｓｓ」において「宛先ＩＰｖ４アドレスの参照及び書き換え」が規定されている。この場合、宛先ＩＰｖ４アドレスの書き換えが発生するため、実行順によっては、一連の操作が意図しないものとなってしまう。意図しない結果となる可能性がある場合、照合結果は失敗（Ｆ）となる。
【００７５】
図１６は、図１５の例において更に依存関係が規定された場合を示している。具体的には、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」よりも前に「ＮＡＰＴ  ｉｎｇｒｅｓｓ」が実行されることが禁止されている。また、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」が「ＮＡＰＴ  ｉｎｇｒｅｓｓ」よりも前に実行されることが規定されている。この場合、宛先ＩＰｖ４アドレスの書き換えは、「ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｓｗｉｔｃｈｉｎｇ」に影響を与えない。つまり、一連の操作は意図しないものにはならない。従って、照合結果は成功（Ｓ）となる。
【００７６】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【００７７】
本出願は、２００９年１２月１７日に出願された日本国特許出願２００９−２８６１８８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2011074559.tif 000003
【図２】
2011074559.tif 000004
【図３】
2011074559.tif 000005
【図４】
2011074559.tif 000006
【図５】
2011074559.tif 000007
【図６】
2011074559.tif 000008
【図７】
2011074559.tif 000009
【図８】
2011074559.tif 000010
【図９】
2011074559.tif 000011
【図１０】
2011074559.tif 000012
【図１１】
2011074559.tif 000013
【図１２】
2011074559.tif 000014
【図１３】
2011074559.tif 000015
【図１４】
2011074559.tif 000016
【図１５】
2011074559.tif 000017
【図１６】
2011074559.tif 000018
【国際調査報告】
2011074559.tif 000019
2011074559.tif 000020
2011074559.tif 000021
2011074559.tif 000022