(57)【要約】  通信許可判断手段は、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断する。規則設定手段は、通信許可判断手段がマッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したことを条件に、そのパケットを宛先装置に転送させないための処理を実行する規則を少なくともパケットを受信したパケット中継装置に設定する。
2011030490.tif 000002
【特許請求の範囲】
【請求項１】
パケット中継装置を制御する中継制御装置であって、
パケットを識別する情報であるマッチ条件と、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断する通信許可判断手段と、
前記通信許可判断手段が前記マッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したことを条件に、当該パケットを宛先装置に転送させないための処理を実行する規則を少なくとも前記パケットを受信したパケット中継装置に設定する規則設定手段とを備えた
ことを特徴とする中継制御装置。
【請求項２】
規則設定手段は、マッチ条件に該当するパケットを破棄するための規則を少なくとも前記パケットを受信したパケット中継装置に設定する
請求項１記載の中継制御装置。
【請求項３】
規則設定手段は、マッチ条件に該当するパケットを宛先装置とは異なる他の送信先に送信するための規則を少なくとも前記パケットを受信したパケット中継装置に設定する
請求項１記載の中継制御装置。
【請求項４】
マッチ条件に応じて予め定められた送信先までの経路を算出する経路算出手段を備え、
規則設定手段は、マッチ条件に該当するパケットを前記経路算出手段が算出した送信先に送信するための規則を少なくとも前記パケットを受信したパケット中継装置に設定する
請求項３記載の中継制御装置。
【請求項５】
通信許可判断手段が宛先装置への通信を許可しないと判断したことを示すログを生成するログ生成手段を備え、
規則設定手段は、宛先装置に転送させないための処理が実行されるパケットをパケット中継装置が受信したときに、当該パケットの情報を中継制御装置に送信するための規則を当該パケット中継装置に設定し、
前記ログ生成手段は、パケット中継装置から前記パケットの情報を受信したときに前記ログを生成する
請求項１から請求項４のうちのいずれか１項に記載の中継制御装置。
【請求項６】
パケット中継装置に設定した規則を記憶する規則記憶手段を備え、
規則設定手段は、パケット中継装置に規則を設定したときに、前記規則記憶手段に当該規則を記憶させ、通信許可判断手段がマッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したときに、パケット中継装置に設定する規則が既に前記規則記憶手段に記憶されている場合には当該規則をパケット中継装置に設定しない
請求項１から請求項５のうちのいずれか１項に記載の中継制御装置。
【請求項７】
通信許可判断手段が宛先装置への通信を許可しないと判断したパケットの判断回数を、当該パケットを識別する要素と対応付けて記憶する判断回数記憶手段を備え、
規則設定手段は、通信許可判断手段が宛先装置への通信を許可しないと判断したときに、前記要素に対応するパケットの判断回数を増加させ、前記パケットの判断回数が予め定められた閾値を超えた場合に、当該パケットの情報を中継制御装置に送信しないための規則を当該パケット中継装置に設定する
請求項５記載の中継制御装置。
【請求項８】
通信許可判断手段がマッチ条件に該当するパケットに対して宛先装置への通信を許可すると判断したことを条件に、前記パケットの宛先装置への少なくとも１つ以上の経路候補を算出する経路候補算出手段と、
前記経路候補上に、前記パケットの通信を許可しないと判断するパケット中継装置が存在するか否かを判断する経路判断手段とを備え、
規則設定手段は、前記経路候補のうち、前記パケットの通信を許可しないと判断するパケット中継装置が全ての候補経路における各経路上に存在する場合に、当該パケットを宛先装置に転送させないための処理を実行する規則を少なくとも前記パケットを受信したパケット中継装置に設定する
請求項１から請求項７のうちのいずれか１項に記載の中継制御装置。
【請求項９】
規則設定手段は、マッチ条件に該当するパケットの通信を許可しないパケット中継装置が経路上に存在する場合に、当該パケットを宛先装置に転送させないための処理を実行する規則を前記パケット中継装置に対して設定する
請求項８記載の中継制御装置。
【請求項１０】
規則設定手段は、規則記憶手段に記憶された規則をパケット中継装置に設定する
請求項６記載の中継制御装置。
【請求項１１】
パケット中継装置と、
前記パケット中継装置を制御する中継制御装置とを備え、
前記中継制御装置は、
パケットを識別する情報であるマッチ条件と、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断する通信許可判断手段と、
前記通信許可判断手段が前記マッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したことを条件に、当該パケットを宛先装置に転送させないための処理を実行する規則を少なくとも前記パケットを受信したパケット中継装置に設定する規則設定手段とを備えた
ことを特徴とする中継制御システム。
【請求項１２】
規則設定手段は、マッチ条件に該当するパケットを破棄するための規則を少なくとも前記パケットを受信したパケット中継装置に設定する
請求項１１記載の中継制御システム。
【請求項１３】
規則設定手段は、マッチ条件に該当するパケットを宛先装置とは異なる他の送信先に送信するための規則を少なくとも前記パケットを受信したパケット中継装置に設定する
請求項１１記載の中継制御システム。
【請求項１４】
受信したパケットに対する処理とパケットを識別する情報とを対応付けた情報であるフローを記憶するフロー記憶手段と、
前記フロー記憶手段に記憶されたフローに基づいて受信したパケットを中継するパケット中継手段とを備え、
前記パケット中継手段は、パケットを識別する情報であるマッチ条件と、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、受信したパケットの情報をもとに、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断し、当該パケットに対して宛先装置への通信を許可しないと判断したことを条件に、前記マッチ条件に該当するパケットを宛先装置に転送させないための処理を実行するフローを少なくとも前記パケットを受信した送信元の装置に設定する中継制御装置に対して、受信したパケットに対応するフローが前記フロー記憶手段に存在しない場合に当該パケットの情報を送信し、前記中継制御装置により設定されたフローに基づいて前記パケットを処理する
ことを特徴とするパケット中継装置。
【請求項１５】
パケット中継装置を制御する中継制御装置が、パケットを識別する情報であるマッチ条件と、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断し、
前記中継制御装置が、前記マッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したことを条件に、当該パケットを宛先装置に転送させないための処理を実行する規則を少なくとも前記パケットを受信したパケット中継装置に設定する
ことを特徴とする中継制御方法。
【請求項１６】
受信したパケットに対して宛先装置への通信を許可しないと判断したことを条件に、マッチ条件に該当するパケットを破棄するための規則を少なくとも前記パケットを受信したパケット中継装置に設定する
請求項１５記載の中継制御方法。
【請求項１７】
受信したパケットに対して宛先装置への通信を許可しないと判断したことを条件に、マッチ条件に該当するパケットを宛先装置とは異なる他の送信先に送信するための規則を少なくとも前記パケットを受信したパケット中継装置に設定する
請求項１５記載の中継制御方法。
【請求項１８】
受信したパケットに対する処理とパケットを識別する情報とを対応付けた情報であるフローを記憶するフロー記憶手段に記憶された当該フローに基づいて受信したパケットを中継し、
パケットを識別する情報であるマッチ条件と、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、受信したパケットの情報をもとに、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断し、当該パケットに対して宛先装置への通信を許可しないと判断したことを条件に、前記マッチ条件に該当するパケットを宛先装置に転送させないための処理を実行するフローを少なくとも前記パケットを受信した送信元の装置に設定する中継制御装置に対して、受信したパケットに対応するフローが前記フロー記憶手段に存在しない場合に当該パケットの情報を送信し、前記中継制御装置により設定されたフローに基づいて前記パケットを中継する
ことを特徴とするパケット中継方法。
【請求項１９】
パケット中継装置を制御するコンピュータに適用される中継制御プログラムであって、
前記コンピュータに、
パケットを識別する情報であるマッチ条件と、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断する通信許可判断処理、および、
前記通信許可判断処理で前記マッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したことを条件に、当該パケットを宛先装置に転送させないための処理を実行する規則を少なくとも前記パケットを受信したパケット中継装置に設定する規則設定処理
を実行させるための中継制御プログラム。
【請求項２０】
コンピュータに、
規則設定処理で、マッチ条件に該当するパケットを破棄するための規則を少なくとも前記パケットを受信したパケット中継装置に設定させる
請求項１９記載の中継制御プログラム。
【請求項２１】
コンピュータに、
規則設定処理で、マッチ条件に該当するパケットを宛先装置とは異なる他の送信先に送信するための規則を少なくとも前記パケットを受信したパケット中継装置に設定させる
請求項１９記載の中継制御プログラム。
【請求項２２】
受信したパケットに対する処理とパケットを識別する情報とを対応付けた情報であるフローを記憶するフロー記憶手段を備えたコンピュータに適用されるパケット中継プログラムであって、
前記コンピュータに、
前記フロー記憶手段に記憶されたフローに基づいて受信したパケットを中継するパケット中継処理を実行させ、
前記パケット中継処理で、パケットを識別する情報であるマッチ条件と、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、受信したパケットの情報をもとに、当該マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断し、当該パケットに対して宛先装置への通信を許可しないと判断したことを条件に、前記マッチ条件に該当するパケットを宛先装置に転送させないための処理を実行するフローを少なくとも前記パケットを受信した送信元の装置に設定する中継制御装置に対して、受信したパケットに対応するフローが前記フロー記憶手段に存在しない場合に当該パケットの情報を送信させ、前記中継制御装置により設定されたフローに基づいて前記パケットを処理させる
ためのパケット中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット中継装置が行う処理を制御する中継制御装置、中継制御システム及び中継制御プログラム、および中継制御システムに適用されるパケット中継装置、パケット中継方法及びパケット中継プログラムに関する。
【背景技術】
【０００２】
パケットを転送するスイッチの動作を、コントローラが集中的に管理するネットワークアーキテクチャが各種知られている。例えば、非特許文献１及び非特許文献２には、Ｅｔｈａｎｅによるネットワークアーキテクチャが記載されている。Ｅｔｈａｎｅは、送信されるパケットの帰趨を決定するコントローラと、そのコントローラ配下に属し、パケットを転送するスイッチとを含むネットワークアーキテクチャである。【０００３】
各スイッチは、パケットの送信先を決定するためのフローテーブルを備えている。スイッチは、フローテーブル中に送信先を示すエントリが存在するパケットを受信すると、そのエントリに基づいてパケットを送信する。一方、フローテーブルにエントリが存在しないパケットを受信すると、スイッチは、そのパケットの情報をコントローラに転送する。コントローラは、通信ネットワークトポロジーに関する情報を保持しており、通信を許可するパケットに対して経路計算を行う。具体的には、コントローラは、スイッチからパケットの情報を受信すると、そのパケットの通信を許可するか否かを判断し、許可すると判断した場合には、そのパケットの経路計算を行う。そして、コントローラは、計算した経路上のスイッチのフローテーブルに対して新しい送信先エントリを追加する。以後、スイッチは、登録された送信先エントリに基づいてパケットを送信する。【０００４】
また、非特許文献３には、ＯｐｅｎＦｌｏｗ（以下、ＯＦと記すこともある。）によるネットワークアーキテクチャが記載されている。ＯｐｅｎＦｌｏｗもＥｔｈａｎｅと同様、コントローラがスイッチを制御するネットワークアーキテクチャである。ＯｐｅｎＦｌｏｗでは、パケット転送機能と経路制御機能とをフロー制御プロトコルにより分離し、コントローラが、異種のスイッチに対して統一のＡＰＩ（Application Program Interface ）を用いた制御を行う。また、ＯｐｅｎＦｌｏｗでは、データパスを高速にするとともに、制御コストを低く抑えるため、粒度をフロー単位としたパケット制御を行う。【０００５】
ＯＦにおけるスイッチは、受信したパケットのアクションを記憶するフローテーブルと、スイッチがコントローラと通信するためのセキュアチャネルとを備えている。スイッチとコントローラとは、ＯＦプロトコルを使用して、セキュアチャネル上で通信を行う。【０００６】
図２０は、フローテーブルに記憶されるフローエントリーを示す説明図である。フローテーブルは、パケットヘッダと照合するルール（Ｒｕｌｅ）と、そのフローに対する処理を定義したアクション（Ａｃｔｉｏｎ）と、フロー統計情報（Ｓｔａｔｉｃｓｔｉｃｓ）とをフロー毎に記憶する。【０００７】
ルール（Ｒｕｌｅ）には、一致するか否かが判断される値（ｅｘａｃｔ）、及びワイルドカード（ｗｉｌｄ  ｃａｒｄ）が用いられる。図２１は、パケットヘッダと照合されるフィールドを示す説明図である。パケットヘッダと照合される検索キーとして、以下のようなフィールドが使用される。【０００８】
（１）Ｐｈｙｓｉｃａｌ（物理）レイヤの入力ポート番号（Ｉｎｐｕｔ  Ｐｏｒｔ  Ｎｏ）。
（２）Ｅｔｈｅｒｎｅｔ（登録商標）（イーサネット（登録商標））レイヤのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）  ＤＡ（ＭＡＣデスティネーションアドレス）、ＭＡＣ  ＳＡ（ＭＡＣソースアドレス）、ＶＬＡＮ  ＩＤ（Ｖｉｒｔｕａｌ  ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）  ＩＤ）、もしくは、ＶＬＡＮ  ＴＹＰＥ（優先度）。
（３）ＩＰｖ４（ｖｅｒｓｉｏｎ４）レイヤのＩＰ  ＳＡ（ＩＰソースアドレス）、ＩＰ  ＤＡ（ＩＰデスティネーションアドレス）、もしくは、ＩＰプロトコル。
（４）ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）レイヤのＳｏｕｒｃｅ  Ｐｏｒｔ（ＴＣＰ／ＵＤＰソースポート）、もしくは、及びＤｅｓｔｉｎａｔｉｏｎ  ｐｏｒｔ（ＴＣＰ／ＵＤＰデスティネーションポート）。
（５）ＩＣＭＰ（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）レイヤのＩＣＭＰ  Ｔｙｐｅ、もしくは、ＩＣＭＰ  Ｃｏｄｅ。【０００９】
アクション（Ａｃｔｉｏｎ）は、ルールにマッチしたパケットに適用される処理である。図２２は、フローに設定されるアクションを示す説明図である。例えば、アクションに「ＯＵＴＰＵＴ」と設定されている場合、その設定は、スイッチが、ルールにマッチしたパケットを「指定ポートに出力する」ことを意味する。同様に、アクションに「ＳＥＴ＿ＤＬ＿ＤＳＴ」と設定されている場合、その設定は、スイッチが、ルールにマッチしたパケットを送信する「ＭＡＣ  ＤＡ（宛先の装置）を更新する」ことを意味する。【００１０】
フロー統計情報には、ルールにマッチしたパケットのパケット数やバイト数、そのパケットを最後に受信してからの経過時間（セッション継続時間）などが含まれ、フローエントリーを削除するか否かを判断するために用いられる。【００１１】
次に、ＯＦにおける動作について説明する。スイッチは、パケットを受信すると、受信したパケットヘッダとフローテーブルのルールとを比較する。受信したパケットがルールにマッチしない場合、スイッチは、セキュアチャンネルにおけるメッセージを用いてそのパケットの情報をコントローラに転送する。コントローラは、通信ネットワークトポロジーに基づいて、そのパケットの送信経路を算出する。そして、コントローラは、スイッチがその送信経路でパケットを中継できるように、スイッチのフローテーブルにフローエントリーを追加するためのメッセージを送信する。以降、スイッチは、追加されたフローエントリーに該当するパケットを受信すると、そのパケットの情報をコントローラに転送することなく、対応するアクション（転送処理）を行う。【００１２】
図２３は、セキュアチャンネル上で使用されるメッセージを示す説明図である。例えば、スイッチは、入力されたパケットをコントローラに通知する場合、メッセージ「Ｐａｃｋｅｔ  ｉｎ」をコントローラに送信する。同様に、スイッチは、フローが満了時刻を迎えた（セッション継続時間が、所定の時間経過した）ことをコントローラに通知する場合、メッセージ「Ｆｌｏｗ  Ｅｘｐｉｒｅｄ」をコントローラに送信する。一方、コントローラは、スイッチにパケットの出力を指示する場合、メッセージ「Ｐａｃｋｅｔ  Ｏｕｔ」をスイッチに送信する。同様に、コントローラは、スイッチにフローの登録・変更・削除を要求する場合、メッセージ「Ｆｌｏｗ  Ｍｏｄ」をスイッチに送信する。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】Martin Casado、外５名、”Ethane:Taking Control of the Enterprise”、ACM SIGCOMM Computer Communication Review, Volume 37,Issue 4,SESSION: Enterprise networks, Pages: 1 - 12, October 2007
【非特許文献２】Martin Casado、外５名、”Architectural Support for Security Management in Enterprise Networks”、スライド１１、［online］、［平成２１年８月２４日検索］、インターネット〈URL：http://www.soi.wide.ad.jp/project/sigcomm2007/pdf/sig11.pdf〉
【非特許文献３】Nick McKeown、外７名、”OpenFlow: Enabling Innovation in Campus Networks”、［online］、［平成２１年８月２４日検索］、インターネット〈URL：http://www.openflowswitch.org/documents/openflow-wp-latest.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【００１４】
非特許文献１及び非特許文献２に記載されたＥｔｈａｎｅに基づくネットワークアーキテクチャのように、フローテーブルにエントリの存在しないパケットであって、コントローラによって通信が許可されなかったパケットは、通常、経路計算がされず、転送も行われない。そのため、このようなパケットは、スイッチのキューに溜まり、所定の時間の経過後に破棄されることが多い。【００１５】
そして、コントローラによって通信が許可されないパケットをスイッチが再度受信した場合、そのスイッチは、通常、再度コントローラに問い合わせを行い、コントローラは、そのパケットに対して、再度通信を許可するか否かを判断することになる。すなわち、通信が許可されないパケットをスイッチが何度も受信するような場合、スイッチはその度にコントローラに問い合わせを行う。そして、コントローラもその度に通信を許可するか否かを判断する必要がある。そのため、このような場合には、スイッチ、コントローラともに処理負荷が高くなってしまうという課題がある。【００１６】
例えば、ＴＣＰによる通信で、パケットが宛先装置に到達しないことによる再送処理が何度も行われると、スイッチは同様のパケットを何度も受信することになる。この場合、スイッチは、そのパケットが到着するごとにコントローラに問い合わせを行うことになる。そのため、スイッチ、コントローラともＣＰＵ負荷が増大するという問題がある。【００１７】
非特許文献３に記載されたＯｐｅｎＦｌｏｗにおいても、宛先装置までの通信が許可されないパケットを何度もスイッチがコントローラに送ってしまうと、スイッチ、コントローラともに処理負荷が高くなってしまうという課題がある。そのため、このようなパケットを適切に処理できるよう、コントローラがスイッチに対して制御できる事が望ましい。【００１８】
そこで、本発明は、宛先装置までの通信が許可されないパケットに対してパケット中継装置が行う処理の負荷を低減できる中継制御装置、中継制御システム及び中継制御プログラム、および中継制御システムに適用されるパケット中継装置、パケット中継方法及びパケット中継プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明による中継制御装置は、パケット中継装置を制御する中継制御装置であって、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断する通信許可判断手段と、通信許可判断手段がマッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したことを条件に、そのパケットを宛先装置に転送させないための処理を実行する規則を少なくともパケットを受信したパケット中継装置に設定する規則設定手段とを備えたことを特徴とする。【００２０】
本発明による中継制御システムは、パケット中継装置と、パケット中継装置を制御する中継制御装置とを備え、中継制御装置が、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断する通信許可判断手段と、通信許可判断手段がマッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したことを条件に、そのパケットを宛先装置に転送させないための処理を実行する規則を少なくともパケットを受信したパケット中継装置に設定する規則設定手段とを備えたことを特徴とする。【００２１】
本発明によるパケット中継装置は、受信したパケットに対する処理とパケットを識別する情報とを対応付けた情報であるフローを記憶するフロー記憶手段と、フロー記憶手段に記憶されたフローに基づいて受信したパケットを中継するパケット中継手段とを備え、パケット中継手段が、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断し、そのパケットに対して宛先装置への通信を許可しないと判断したことを条件に、マッチ条件に該当するパケットを宛先装置に転送させないための処理を実行するフローを少なくともパケットを受信した送信元の装置に設定する中継制御装置に対して、受信したパケットに対応するフローがフロー記憶手段に存在しない場合にそのパケットの情報を送信し、中継制御装置により設定されたフローに基づいてパケットを処理することを特徴とする。【００２２】
本発明による中継制御方法は、パケット中継装置を制御する中継制御装置が、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断し、中継制御装置が、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したことを条件に、そのパケットを宛先装置に転送させないための処理を実行する規則を少なくともパケットを受信したパケット中継装置に設定することを特徴とする。【００２３】
本発明によるパケット中継方法は、受信したパケットに対する処理とパケットを識別する情報とを対応付けた情報であるフローを記憶するフロー記憶手段に記憶されたそのフローに基づいて受信したパケットを中継し、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断し、そのパケットに対して宛先装置への通信を許可しないと判断したことを条件に、マッチ条件に該当するパケットを宛先装置に転送させないための処理を実行するフローを少なくともパケットを受信した送信元の装置に設定する中継制御装置に対して、受信したパケットに対応するフローがフロー記憶手段に存在しない場合にそのパケットの情報を送信し、中継制御装置により設定されたフローに基づいてパケットを中継することを特徴とする。【００２４】
本発明による中継制御プログラムは、パケット中継装置を制御するコンピュータに適用される中継制御プログラムであって、コンピュータに、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断する通信許可判断処理、および、通信許可判断処理でマッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したことを条件に、そのパケットに対して宛先装置に転送させないための処理を実行する規則を少なくともパケットを受信したパケット中継装置に設定する規則設定処理を実行させることを特徴とする。【００２５】
本発明によるパケット中継プログラムは、受信したパケットに対する処理とパケットを識別する情報とを対応付けた情報であるフローを記憶するフロー記憶手段を備えたコンピュータに適用されるパケット中継プログラムであって、コンピュータに、フロー記憶手段に記憶されたフローに基づいて受信したパケットを中継するパケット中継処理を実行させ、パケット中継処理で、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報とを対応付けた情報であるポリシーに基づいて、受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを判断し、そのパケットに対して宛先装置への通信を許可しないと判断したことを条件に、マッチ条件に該当するパケットを宛先装置に転送させないための処理を実行するフローを少なくともパケットを受信した送信元の装置に設定する中継制御装置に対して、受信したパケットに対応するフローがフロー記憶手段に存在しない場合にそのパケットの情報を送信させ、中継制御装置により設定されたフローに基づいてパケットを処理させることを特徴とする。
【発明の効果】
【００２６】
本発明によれば、宛先装置までの通信が許可されないパケットに対してパケット中継装置が行う処理の負荷を低減できる。
【図面の簡単な説明】
【００２７】
【図１】第１の実施形態における中継制御システムの例を示すブロック図である。
【図２】Ｄｅｎｙパケットのポリシーの例を示す説明図である。
【図３】パケットの情報を受信した場合の処理の例を示すフローチャートである。
【図４】Ｄｅｎｙ制御部１７が行う処理の例を示すフローチャートである。
【図５】ポリシーが更新されたことを契機として行われる処理の例を示すフローチャートである。
【図６】第２の実施形態における中継制御システムの例を示すブロック図である。
【図７】パケットの情報を受信した場合の処理の例を示すフローチャートである。
【図８】第３の実施形態における中継制御システムの例を示すブロック図である。
【図９】Ｄｅｎｙ制御部１７ｂが行う処理の例を示すフローチャートである。
【図１０】第４の実施形態における中継制御システムの例を示すブロック図である。
【図１１】送信元から送信先へ通信を行う場合の例を示す説明図である。
【図１２】送信元から送信先へ通信を行う場合の例を示す説明図である。
【図１３】パケットの情報を受信した場合の処理の例を示すフローチャートである。
【図１４】Ａｌｌｏｗ制御部１６ｃが行う処理の例を示すフローチャートである。
【図１５】第５の実施形態における中継制御システムの例を示すブロック図である。
【図１６】フローのアクションを要求するメッセージを受信した場合の処理の例を示すフローチャートである。
【図１７】本発明による中継制御装置の最小構成の例を示すブロック図である。
【図１８】本発明による中継制御システムの最小構成の例を示すブロック図である。
【図１９】本発明によるパケット中継装置の最小構成の例を示すブロック図である。
【図２０】フローテーブルに記憶されるフローエントリーを示す説明図である。
【図２１】パケットヘッダと照合されるフィールドを示す説明図である。
【図２２】フローに設定されるアクションを示す説明図である。
【図２３】セキュアチャンネル上で使用されるメッセージを示す説明図である。
【発明を実施するための形態】
【００２８】
以下、本発明の実施形態を図面を参照して説明する。なお、以下の説明では、本発明をＯｐｅｎＦｌｏｗに適用する場合について説明する。すなわち、パケット中継装置であるＯＦスイッチ（Open Flow Switch。以下、ＯＦＳと記す。）と、パケット中継装置を制御する装置（すなわち、中継制御装置）であるＯＦコントローラ（Open Flow Controller。以下、ＯＦＣと記す。）とを含むＯｐｅｎＦｌｏｗに、本発明を適用する場合について説明する。なお、本発明が適用されるネットワークアーキテクチャは、ＯｐｅｎＦｌｏｗに限定されない。中継制御装置が、パケット中継装置を制御する形態のネットワークアーキテクチャであれば、他の形態であってもよい。
【００２９】
実施形態１．
図１は、本発明の第１の実施形態における中継制御システムの例を示すブロック図である。本実施形態における中継制御システムは、ＯＦＣ１０と、ＯＦＳ３０とを備えている。ＯＦＣ１０は、ネットワークトポロジー情報や、有効な通信経路情報を保持し、通信ネットワーク内のＯＦＳ３０を制御するコントローラである。具体的には、ＯＦＣ１０は、ＯＦＳ３０がパケットを受信したときに行う処理を制御する。ＯＦＳ３０は、ＯＦＣ１０からの制御に基づいて、受信したパケットを設定された規則に基づいて転送するスイッチである。ＯＦＣ１０とＯＦＳ３０とは、通信ネットワークを介して相互に接続されるが、通信ネットワークの形態は特に限定されない。また、図１における中継制御システムでは、ＯＦＳ３０を１台のみ記載しているが、ＯＦＳ３０の台数は１台に限定されず、２台以上であってもよい。また、ＯＦＣ１０が、複数の計算機からなるクラスタ構成をとり、全体としてＯＦＣ１０の機能を満たすように構成されていてもよい。
【００３０】
ＯＦＳ３０は、ネットワークインタフェース部３１と、記憶部３２と、制御部３３とを備えている。ネットワークインタフェース部３１は、ＯＦＣ１０や、他のスイッチ（図示せず）との通信を行う。
【００３１】
記憶部３２は、受信したパケットに対する処理（以下、スイッチアクションと記すこともある。）を、パケットを識別する情報と対応付けて記憶する。スイッチアクションには、受信したパケットを指定のポートに転送する、廃棄処理（Ｄｒｏｐと記すこともある。）を行う、ＯＦＣ１０へパケットを送信する、などの処理が含まれる。記憶部３２は、パケットを識別する情報として、例えば、５−ｔｕｐｌｅと呼ばれる情報群に含まれるプロトコル番号、Ｓｒｃ（Ｓｏｕｒｓｅ）ＩＰアドレス、Ｓｒｃポート、Ｄｓｔ（Ｄｉｓｔｉｎａｔｉｏｎ）ＩＰアドレス、Ｄｓｔポートを記憶してもよい。ただし、パケットを識別する情報は５−ｔｕｐｌｅに限定されない。他にも、記憶部３２は、パケットを識別する情報として、１０−ｔｕｐｌｅと呼ばれる情報群に含まれる入力ポート、ＶＬＡＮ（Ｖｉｒｔｕａｌ  ＬＡＮ）ＩＤ、Ｅｔｈｅｒｔｙｐｅ、ＳｒｃＭＡＣアドレス、ＤｓｔＭＡＣアドレスを記憶してもよい。さらに、記憶部３２は、パケットを識別する情報として、１１−ｔｕｐｌｅと呼ばれる情報群に含まれるＶＬＡＮ  ｐｒｉｏｒｉｔｙを記憶してもよい。また、記憶部３２は、パケットを識別するための情報として、任意の情報を示すワイルドカードを記憶してもよい。記憶部３２は、少なくとも１つ以上の識別情報とスイッチアクションとを対応付けて記憶する。なお、この識別情報は、スイッチアクションを決めるための情報であることから、以下の説明では、ルールと記すこともある。また、このルールとスイッチアクションとを対応付けた情報をまとめて、フローと記すこともある。すなわち、記憶部３２は、フローを記憶する記憶装置という事が出来る。記憶部３２は、例えば、ＯＦＳ３０が備える磁気ディスク装置等によって実現される。なお、記憶部３２のフローは、ＯＦＣ１０からの指示に応じて、制御部３３によって記憶される。
【００３２】
制御部３３は、記憶部３２に記憶されたフローに基づいて受信したパケットを処理する。具体的には、制御部３３は、他の装置からパケットを受信すると、そのパケットのヘッダ情報とフローにおけるルールとを比較し、ヘッダ情報に該当するルールのスイッチアクションを実行する。制御部３３は、例えば、パケットのヘッダ情報とルールが示す識別情報とが一致する場合に、そのルールに対応するスイッチアクションを実行してもよい。なお、記憶部３２が、入力ポート及びペイロード中の任意のビットフィールドの値をルールとして記憶している場合、制御部３３は、受信したパケットを識別する情報がそのルールが示す情報に該当するか否かを判断してもよい。また、記憶部３２に、ルールとしてＩＰアドレスのプレフィックスが記憶されている場合、制御部３３は、受信したパケットに含まれるＩＰアドレスとそのプレフィックス部分とを比較して、マッチするか否かを判断してもよい。
【００３３】
また、制御部３３は、受信したパケットに対応するフローが記憶部３２に存在しない場合、受信したパケットの情報をＯＦＣ１０に対して送信する。そして、制御部３３は、送信したパケットの情報に対するフローをＯＦＣ１０から受信すると、そのフローを記憶部３２に記憶させるとともに、受信したフローが示すスイッチアクションを実行する。なお、ＯｐｅｎＦｌｏｗにおいて、上記のように、記憶部３２に記憶されたフローに該当しないパケットは、ｆｉｒｓｔ  ｐａｃｋｅｔと呼ばれることもある。
【００３４】
さらに、制御部３３は、ＯＦＣ１０が接続された通信ネットワークにＯＦＳ３０を接続したときに、接続した旨の情報（例えば、Ｈｅｌｌｏメッセージ）をＯＦＣ１０に通知してもよい。また、制御部３３は、ＯＦＣ１０からまとめて送信される識別情報及びスイッチアクション（すなわち、フロー）を受信して、それらの情報を記憶部３２に記憶させてもよい。
【００３５】
なお、制御部３３は、プログラムに従って動作するコンピュータのＣＰＵによって実現される。例えば、プログラムは、ＯＦＳ３０の記憶部３２に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、制御部３３として動作してもよい。
【００３６】
ＯＦＣ１０は、ＯＦプロトコル（以下、ＯＦＰと記す。）受信部１１と、ポリシーテーブル１２と、静的ポリシー取得部１３と、動的ポリシー取得部１４と、ポリシー判断部１５と、Ａｌｌｏｗ制御部１６と、Ｄｅｎｙ制御部１７と、経路算出部１８と、Ｄｅｎｙログ生成部１９と、ＯＦＳ制御部２０と、ＯＦＰ送信部２１とを備えている。
【００３７】
ＯＦＰ受信部１１は、ＯＦＰに基づくメッセージをＯＦＳ３０から受信する。具体的には、ＯＦＰ受信部１１は、対応するフローがＯＦＳ３０の記憶部３２に存在しないパケットを受信する。
【００３８】
ポリシーテーブル１２は、送信されるパケットを識別する情報（以下、マッチ条件と記す。）と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報（以下、単に、アクションと記す。）とを対応付けた情報（以下、ポリシーと記す。）を記憶する。ポリシーテーブル１２は、例えば、ＯＦＣ１０が備える磁気ディスク装置等によって実現される。マッチ条件は、ＯｐｅｎＦｌｏｗにおけるコントローラがパケットを識別するためのルールと同様であってもよい。他にも、マッチ条件として、例えば、記憶部３２が記憶する識別情報（ルール）と同様の情報（すなわち、５−ｔｕｐｌｅや１０−ｔｕｐｌｅ）を用いてもよい。なお、ポリシーテーブル１２は、ポリシーを予め記憶していてもよく、他の装置やユーザによる指示に応じてポリシーを記憶してもよい。
【００３９】
上記のとおり、アクションは、宛先装置への通信が許可される（Ａｌｌｏｗ）パケットか、宛先装置への通信が許可されない（Ｄｅｎｙ）パケットかを示す情報である。なお、アクションには、宛先装置への通信が許可されない（Ｄｅｎｙ）パケットに対して行われる処理内容を示す付加情報を含んでいてもよい。この場合、ポリシーテーブル１２は、この付加情報を、個々のマッチ条件のアクションに対応づけて記憶する。付加情報は、Ｄｅｎｙパケットを廃棄する（ドロップ）、ログの採取を行う（ロギング）、外部の特定装置への経路を設定する、などの情報を含む。以下の説明では、宛先装置への通信が許可されない（Ｄｅｎｙ）パケットに対する処理をＤｅｎｙ処理と記すこともある。Ｄｅｎｙ処理は、転送処理が行われないパケットに対する処理であることから、パケットを宛先装置に転送させないための処理であるということができる。なお、Ｄｅｎｙ処理が１種類の場合、ポリシーテーブル１２は、付加情報を記憶していなくてもよい。
【００４０】
図２は、宛先装置への通信が許可されない（Ｄｅｎｙ）パケットのポリシーの例を示す説明図である。図２（ａ）は、設定されているポリシーのうち、最後のポリシーにＤｅｎｙ設定した場合の例を示す説明図である。図２（ａ）に示す例は、設定されている順にポリシーとパケットとが比較され、そのパケットが、「Ａｌｌ  Ｄｅｎｙ」より前に設定されたすべてのポリシーに一致しなかった場合に、Ｄｅｎｙと判断されることを示す。
【００４１】
図２（ｂ）は、パケットのペイロードに設定されている情報をもとにＤｅｎｙパケットを判断する場合のポリシーの例を示す説明図である。図２（ｂ）に例示する「ＩＰ  １９２．１６８．０．１  →  Ｄｅｎｙ」は、ＩＰアドレス「１９２．１６８．０．１」からのアクセスを許可しない（Ｄｅｎｙと判断される）ことを示す。また、図２（ｂ）に例示する「ＩＰ  １９２．１６８．０．０／０．０．７．２５５  →  Ｄｅｎｙ」は、ＩＰアドレスが「１９２．１６８．０．０／２５５．２５５．２４８．０」以外からのアクセスを許可しない（Ｄｅｎｙと判断される）ことを示す。
【００４２】
なお、図２では、識別情報としてＩＰアドレスを用いたポリシーを例に挙げて説明した。ただし、ポリシーの識別情報として用いられる内容は、ＩＰアドレスに限定されない。他にも、ポリシーの識別情報としてＭＡＣ（Media Access Control address）アドレスなどの端末を識別するＩＤを用いてもよい。また、ポリシーの識別情報として、プロトコル番号やポート番号など、プロトコルやアプリケーションを識別するフィールドの情報などを用いてもよい。さらに、ポリシーの識別情報として、ＶＬＡＮ  ＩＤやＭＰＬＳ（Multi-Protocol Label Switching）のラベルなど、ネットワークを識別する値を用いてもよい。
【００４３】
他にも、ポリシーの識別情報として、スイッチの入力ポートを用いてもよい。例えば、ポリシーとして、「スイッチＡのＰｏｒｔ１からのパケットをＤｅｎｙ」とする設定を行ってもよい。さらに、ポリシーが、ペイロードに設定されている情報と、上記スイッチの入力ポートとの両方を含むものであってもよい。例えば、ポリシーとして、「スイッチＡのＰｏｒｔ１のＩＰ  １９２．１６８．０．１からのアクセスをＤｅｎｙ」とする設定を行ってもよい。
【００４４】
静的ポリシー取得部１３は、ポリシーテーブル１２に記憶されたポリシーを取得する。具体的には、静的ポリシー取得部１３は、ポリシーテーブル１２に記憶されたポリシーのうち、更新されたポリシーが存在するか否かを判断し、更新されたポリシーを読み取る。例えば、静的ポリシー取得部１３は、定期的にポリシーテーブル１２にアクセスし、前回アクセスしたときと異なる情報を更新されたポリシーと判断し、そのポリシーを読み取ってもよい。ただし、更新されたポリシーを判断する方法は、上記方法に限定されない。他にも、例えば、ポリシーテーブル１２が、ポリシーの内容を更新したタイミングでトリガを発生させて、静的ポリシー取得部１３に通知し、静的ポリシー取得部１３が、そのトリガを受信したことを契機として、ポリシーが更新されたと判断してもよい。また、静的ポリシー取得部１３は、ポリシーテーブル１２が初期化されたことを契機として、ポリシーテーブル１２の全てのポリシーが更新されたと判断してもよい。
【００４５】
また、静的ポリシー取得部１３は、通信ネットワークにＯＦＳ３０が接続された旨の情報（例えば、Ｈｅｌｌｏメッセージ）の通知を受けたことを契機として、ポリシーテーブル１２が更新されたか否かを判断してもよい。そして、静的ポリシー取得部１３は、更新されたポリシーを読み取ると、そのポリシーをポリシー判断部１５に通知する。
【００４６】
このように、ＯＦＳ３０は、ポリシーテーブル１２に記憶された識別情報及びアクションを、受信したパケットに関わらず受信する。そのため、このように送受信される識別情報及びアクションを静的ポリシーと呼ぶことができる。以上のことから、静的ポリシー取得部１３は、静的ポリシーの更新を検知して、フロー（すなわち、マッチ条件）やアクションを取得するとも言える。
【００４７】
動的ポリシー取得部１４は、受信したパケットの情報に対応するポリシーをポリシーテーブル１２から取得する。具体的には、動的ポリシー取得部１４は、ポリシーテーブル１２に記憶されたマッチ条件と受信したパケットの情報とを比較し、該当するマッチ条件に対応するアクションをポリシーテーブル１２から読み取る。例えば、ＯＦＰ受信部１１が、パケットの情報と、ＯＦＰに基づく「Ｐａｃｋｅｔ−ｉｎ」メッセージとをＯＦＳ３０から受信した場合、動的ポリシー取得部１４は、受信したパケットの情報がマッチ条件に該当することを条件に、そのマッチ条件に対応するアクションをポリシーテーブル１２から読み取る。ここで、「Ｐａｃｋｅｔ−ｉｎ」メッセージとは、ＯｐｅｎＦｌｏｗのＳｅｃｕｒｅ Ｃｈａｎｎｅｌ上で使用されるメッセージであり、スイッチに入力されたパケットをコントローラに通知することを意味するメッセージである。そして、動的ポリシー取得部１４は、読み取ったアクションとパケットの情報とをポリシー判断部１５に通知する。
【００４８】
本実施形態では、ＯＦＣ１０が、静的ポリシー取得部１３及び動的ポリシー取得部１４をいずれも備えている場合について説明する。ただし、ＯＦＣ１０は、静的ポリシー取得部１３と動的ポリシー取得部１４のいずれか一方を備えていればよく、両方備えていてもよい。
【００４９】
ポリシー判断部１５は、ＯＦＳ３０が受信したパケットの情報をもとに、そのパケットに対して宛先装置への通信を許可するか否かをポリシーに基づいて判断する。具体的には、ポリシー判断部１５は、動的ポリシー取得部１４が読み取ったアクションとＯＦＳ３０から受信したパケットの情報とを受け取ると、そのアクションが宛先装置への通信を許可するアクションか否かを判断する。宛先装置への通信を許可する（Ａｌｌｏｗ）アクションの場合、ポリシー判断部１５は、宛先装置への通信を許可すると判断し、後述のＡｌｌｏｗ制御部１６に、パケットの転送先を算出させる。一方、宛先装置への通信を許可しない（Ｄｅｎｙ）アクションの場合、ポリシー判断部１５は、宛先装置への通信を許可しないと判断し、後述のＤｅｎｙ制御部１７に、パケットのＤｅｎｙ処理を決定させる。
【００５０】
また、ポリシー判断部１５は、更新されたポリシーのマッチ条件が示すパケットに対して宛先装置への通信を許可するか否かを、そのポリシーに基づいて判断してもよい。具体的には、ポリシー判断部１５は、更新されたポリシーを静的ポリシー取得部１３から受け取ると、そのポリシーに含まれるアクションが宛先装置への通信を許可するアクションか否かを判断する。宛先装置への通信を許可する（Ａｌｌｏｗ）アクションの場合、ポリシー判断部１５は、そのポリシーのマッチ条件が示すパケットに対して宛先装置への通信を許可すると判断し、後述のＡｌｌｏｗ制御部１６に、パケットの転送先を算出させる。一方、宛先装置への通信を許可しない（Ｄｅｎｙ）アクションの場合、ポリシー判断部１５は、そのポリシーのマッチ条件が示すパケットに対して宛先装置への通信を許可しないと判断し、後述のＤｅｎｙ制御部１７に、パケットのＤｅｎｙ処理を決定させる。
【００５１】
Ａｌｌｏｗ制御部１６は、ポリシーのアクションが「Ａｌｌｏｗ」だった場合に、パケットの送信経路を算出する。具体的には、Ａｌｌｏｗ制御部１６は、経路算出部１８に送信先までの送信経路を算出させる。そして、Ａｌｌｏｗ制御部１６は、算出した送信経路をＯＦＳ制御部２０に通知する。
【００５２】
Ｄｅｎｙ制御部１７は、ポリシーのアクションが「Ｄｅｎｙ」だった場合に、Ｄｅｎｙ処理を決定する。すなわち、Ｄｅｎｙ制御部１７は、宛先装置への通信を許可しないと判断したパケットに対するＤｅｎｙ処理を決定する。具体的には、ポリシー判断部１５が、ポリシーのアクションが宛先装置への通信を許可しない（Ｄｅｎｙ）アクションであると判断すると、Ｄｅｎｙ制御部１７は、アクションに含まれる付加情報の内容をもとに、宛先装置への通信を許可しないと判断したパケットに対する処理を決定する。そして、Ｄｅｎｙ制御部１７は、決定した処理をＯＦＳ制御部２０に通知する。
【００５３】
例えば、アクションの付加情報として「Ｄｒｏｐ」が設定されている場合、Ｄｅｎｙ制御部１７は、ＯＦＳ３０に対し、受信したパケットを破棄（Ｄｒｏｐ）させると決定してもよい。このように、ＯＦＣ１０が、特定のパケットを破棄する処理（Ｄｒｏｐ処理）規則をＯＦＳ３０に対して設定することで、以後、ＯＦＳ３０が同様のパケットを受信した場合のＣＰＵ負荷を抑えることができる。すなわち、ＯＦＳ３０にＤｒｏｐ処理規則が設定されている場合、ＯＦＳ３０は、受信したパケットの処理内容をＯＦＣ１０に問い合わせることなく、ＯＦＳ３０のハードウェア部分でＤｒｏｐ処理を行うことができる。そのため、ＯＦＳ３０及びＯＦＣ１０のＣＰＵ負荷を抑制することができる。
【００５４】
他にも、Ｄｅｎｙ制御部１７は、例えば、アクションの付加情報として「特定装置へ転送」を示す旨の情報が設定されている場合、受信したパケットに対し、宛先装置とは異なる他の送信先（例えば、外部の特定装置）への明示的な経路をＯＦＳ３０に設定すると決定してもよい。具体的には、Ｄｅｎｙ制御部１７は、ＯＦＳ３０に対し、他の送信先として検疫ネットワークやハニーポット、詳細なフロー挙動解析装置などへパケットを送信すると決定する。この場合、Ｄｅｎｙ制御部１７は、これらの複数のセキュリティ解析装置への送信経路を経路算出部１８に算出させる。なお、Ｄｅｎｙ制御部１７は、これらの複数の装置のうち、一つの装置にパケットを送信すると決定してもよく、複数の装置へパケットを送信すると決定してもよい。また、Ｄｅｎｙ制御部１７がどの送信先に送信するかについては、マッチ条件に応じて予め定められる。なお、送信先が一つの場合には、全てのマッチ条件に同じ送信先を定めておけばよい。
【００５５】
例えば、スタティックなデフォルトＶＬＡＮの設定しかポリシーに存在しない場合、ＯＦＣ１０は、ＯＦＳ３０に対して、明示的に経路を設定したり、適応的に経路を設定したりすることはできない。しかし、以上のように、ポリシーに応じてアクションが決定されるため、ＯＦＣ１０は、ＯＦＳ３０に対し、宛先装置までの通信を許可しないパケットについて明示的な経路を設定したり、適応的な経路を設定したりすることができる。また、外部装置による、より詳細なＤｅｎｙ処理を提供することも可能になる。
【００５６】
また、Ｄｅｎｙ制御部１７は、廃棄すると決定したパケットや、明示的な経路を設定すると決定したパケットをＯＦＳ３０が受信したとき、ＯＦＳ３０に対してそれらのパケットの情報を再度ＯＦＣ１０に送信させると決定してもよい。具体的には、付加情報にログを採取する旨の設定（ロギング設定）がされている場合に、Ｄｅｎｙ制御部１７が、ＯＦＳ３０に対して、受信したパケットを破棄（Ｄｒｏｐ）させると決定するとともに、そのパケットの情報をＯＦＣ１０にも送信（Ｐａｃｋｅｔ−ｉｎ）させると決定してもよい。もしくは、Ｄｅｎｙ制御部１７は、ＯＦＳ３０に対して受信したパケットの明示的な経路を設定するとともに、そのパケットの情報をＯＦＣ１０にも送信（Ｐａｃｋｅｔ−ｉｎ）させると決定してもよい。
【００５７】
このように、ＯＦＳ３０に対して宛先装置への通信が許可されないパケットの内容をＯＦＣ１０に送信させることで、ＯＦＣ１０は、これらのパケットの内容を把握することができる。また、後述のＤｅｎｙログ生成部１９は、受信したパケットの内容をもとにログ情報を作成することが可能になる。
【００５８】
上記説明では、Ｄｅｎｙ制御部１７が、識別情報に対応するアクションに含まれる付加情報をもとにＤｅｎｙ処理を決定する場合について説明した。ただし、Ｄｅｎｙ制御部１７がＤｅｎｙ処理を決定する方法は、識別情報をもとにする場合に限定されない。例えば、Ｄｅｎｙ制御部１７は、予め定められた処理をＤｅｎｙ処理として決定してもよい。
【００５９】
宛先装置への通信が許可されないパケットは、所定の時間の経過後に破棄される場合があるため、結果としてＤｅｎｙ処理におけるＤｒｏｐ処理と同様の挙動を示すことがある。しかし、このようなパケットに対する制御を何ら行わない場合、ＯＦＳ３０が特定装置へ転送することや、ＯＦＣ１０がログを採取するといったＤｒｏｐ以外の処理を行うことはできない。しかし、本実施形態では、ポリシー判断部１５が、ポリシーに対するアクションを宛先装置への通信を許可しないアクションと判断したときに、Ｄｅｎｙ制御部１７が、そのポリシーに基づいてＤｅｎｙ処理を決定する。そのため、ＯＦＣ１０は、宛先装置への通信が許可されないパケットを転送させないスイッチアクション（すなわち、宛先装置に転送させないための処理）をＯＦＳ３０に設定できる。
【００６０】
経路算出部１８は、ペイロード中の宛先や、ポリシーに示された装置へパケットを送信する際の経路を算出する。例えば、経路算出部１８は、ペイロード中の宛先や、ポリシーに示された特定装置へパケットを到達させるために経由するＯＦＳ３０とその出力ポートを順に示した情報を算出する。経路算出部１８は、宛先装置への経路をShortest Path に基づいて算出してもよい。ただし、経路の算出方法はShortest Path に基づく方法に限定されない。なお、宛先装置への経路を算出する方法は広く知られているため、ここでは説明を省略する。また、経路算出部１８は、経路の候補を１つだけでなく、複数算出してもよい。
【００６１】
なお、経路とは、あるフローについて、目的の場所へ到達するのに経由する装置（例えば、スイッチ）とその出力ポートを順に示したものということができる。例えば、受信したパケットを、まず、スイッチＡの「出力ポート１」からスイッチＢに送信し、次に、スイッチＢの「出力ポート３」からスイッチＣに送信し、さらに、スイッチＣの「出力ポート４」から出力するという経路を考える。この場合、経路は「スイッチＡ  出力ポート１→スイッチＢ  出力ポート３→スイッチＣ  出力ポート４」のように表すことができる。
【００６２】
Ｄｅｎｙログ生成部１９は、Ｄｅｎｙ処理を行った際のログ（以下、Ｄｅｎｙログと記す。）を生成する。すなわち、Ｄｅｎｙログとは、宛先装置への通信を許可しないと判断したことを示すログであるとも言える。また、Ｄｅｎｙ制御部１７が、ＯＦＳ３０に対し、廃棄するパケットの情報や、明示的な経路が設定されたパケットの情報を再度ＯＦＣ１０に送信させると決定する場合がある。このとき、Ｄｅｎｙログ生成部１９は、ＯＦＳ３０からこれらのパケットの情報を受信したときに、Ｄｅｎｙログを生成してもよい。
【００６３】
例えば、Ｄｅｎｙログ生成部１９は、Ｄｅｎｙログを「２００９／０８／１１  １２：００：０１  Ｄｅｎｙ  ＴＣＰ  ＳＲＣ：１９２．１６８．１．３：４９３８８ ＤＳＴ：ｘｘｘ．ｘｘｘ．ｘｘｘ．ｘｘｘ：８０」のように生成してもよい。上記に示すＤｅｎｙログの例は、「送信元のＩＰアドレスが「１９２．１６８．１．３（ポート番号４９３８８）」で表わされる装置からＩＰアドレス「ｘｘｘ．ｘｘｘ．ｘｘｘ．ｘｘｘ（ポート番号８０）」で表わされる宛先に送信されたパケットが、２００９年８月１１日１２時０分１秒にＤｅｎｙ処理された」ことを表す。なお、ＯＦＣ１０がログを出力しない場合には、ＯＦＣ１０はＤｅｎｙログ生成部１９を含んでいなくてもよい。
【００６４】
上記説明では、日付やパケットのペイロード情報の一部（例えば、ＩＰアドレスなど）をＤｅｎｙログに含む場合を例に説明した。ただし、Ｄｅｎｙログに含まれる内容は上記内容に限定されない。Ｄｅｎｙログは、パケットのペイロード情報に含まれる上記以外の情報を含んでいてもよい。また、Ｄｅｎｙログ生成部１９が出力するログは、Ｄｅｎｙログに限定されない。例えば、宛先装置への通信が許可された（Ａｌｌｏｗ）ことを表すログ（以下、Ａｌｌｏｗログと記す。）を含んでいてもよい。例えば、「ｘｘｘ．ｘｘｘ．ｘｘｘ．ｘｘｘ（ポート番号８０）」で表わされる宛先に送信されたパケットが、２００９年８月１１日１２時０分１秒に通信を許可された（Ａｌｌｏｗ）」場合、Ｄｅｎｙログ生成部１９は、Ａｌｌｏｗログを「２００９／０８／１１  １２：００：０１  Ａｌｌｏｗ  ＴＣＰ  ＳＲＣ：１９２．１６８．１．３：４９３８８ ＤＳＴ：ｘｘｘ．ｘｘｘ．ｘｘｘ．ｘｘｘ：８０」のように生成してもよい。
【００６５】
ＯＦＳ制御部２０は、Ａｌｌｏｗ制御部１６が算出したパケットの送信経路や、Ｄｅｎｙ制御部１７が決定したＤｅｎｙ処理に基づき、ＯＦＳ３０が実行する処理規則を設定する。すなわち、ＯＦＳ制御部２０は、Ｄｅｎｙ制御部１７が決定したＤｅｎｙ処理を受け取ると、Ｄｅｎｙ処理を実行する規則をそのパケットを受信したＯＦＳ３０に設定する。ＯＦＳ制御部２０は、ＯＦＣ１０に対してパケットの情報を送信してきたＯＦＳ３０を設定対象のスイッチと判断すればよい。なお、ＯＦＳ制御部２０が処理規則を設定するスイッチは、パケットを受信したＯＦＳ３０に限られない。また、ＯＦＳ制御部２０は、Ａｌｌｏｗ制御部１６が算出したパケットの送信経路を受け取ると、そのパケットを送信経路に転送する規則をＯＦＳ３０に設定する。
【００６６】
ＯＦＳ制御部２０の動作について、具体的に説明する。まず、ＯＦＳ制御部２０は、Ａｌｌｏｗ制御部１６が算出したパケットの送信経路や、Ｄｅｎｙ制御部１７が決定したＤｅｎｙ処理の通知を受け取る。Ａｌｌｏｗ制御部１６が算出したパケットの送信経路を受け取った場合、ＯＦＳ制御部２０は、識別情報であるパケットのペイロードの内容と、アクションであるパケットの送信経路とを対応付けたフローを作成する。もしくは、Ｄｅｎｙ制御部１７が決定したＤｅｎｙ処理を受け取った場合、ＯＦＳ制御部２０は、識別情報であるパケットのペイロードの内容と、アクションであるＤｅｎｙ処理とを対応付けたフローを作成する。そして、ＯＦＳ制御部２０は、ＯＦＳ３０の記憶部３２を作成したフローの情報で更新するためのメッセージを作成し、そのメッセージをＯＦＳ３０へ送信するよう、ＯＦＰ送信部２１に指示する。
【００６７】
ＯＦＳ制御部２０がＤｅｎｙ処理設定を行う例として、以下のような場合が挙げられる。例えば、Ｄｅｎｙ制御部１７が複数のセキュリティ解析装置への経路を明示的に設定すると決定した場合、ＯＦＳ制御部２０は、その経路に従って、単一もしくは複数のＯＦＳ３０に記憶されたフローに対して、パケットの出力ポートを更新する設定を行う。また、Ｄｅｎｙ制御部１７が、受信したパケットをドロップさせると決定した場合、ＯＦＳ制御部２０は、そのパケットを送信してきたＯＦＳ３０（イングレスと記すこともある。）におけるフローに対して、そのパケットの破棄する設定を行う。
【００６８】
さらに、Ｄｅｎｙ制御部１７が、ＯＦＳ３０に対し、Ｄｒｏｐすると決定したパケットや、明示的な経路を設定すると決定したパケットを再度ＯＦＣ１０に送信させると決定する場合がある。この場合、ＯＦＳ制御部２０は、これらのパケットを送信してきたＯＦＳ３０（すなわち、イングレス）におけるフローに対して、仮想ポート「Ｃｏｎｔｒｏｌｌｅｒ」を設定するとともに、これらのパケットを送信（Ｐａｃｋｅｔ−ｉｎ）する設定を行う。
【００６９】
なお、ＯｐｅｎＦｌｏｗにおけるＳｅｃｕｒｅ  Ｃｈａｎｎｅｌ上で、コントローラがスイッチにフローの登録、変更、もしくは削除を要求する場合には、「Ｆｌｏｗ  Ｍｏｄメッセージ」が使用される。そのため、ＯＦＳ制御部２０は、このＦｌｏｗ  Ｍｏｄメッセージを利用することにより、ＯＦＳ３０のフローを設定してもよい。
【００７０】
ＯＦＰ送信部２１は、ＯＦＰに基づくメッセージをＯＦＳ３０に送信する。具体的には、ＯＦＰ送信部２１は、ＯＦＳ制御部２０がＯＦＰに基づいて生成したメッセージをＯＦＳ３０に送信する。
【００７１】
ＯＦＰ受信部１１と、静的ポリシー取得部１３と、動的ポリシー取得部１４と、ポリシー判断部１５と、Ａｌｌｏｗ制御部１６と、Ｄｅｎｙ制御部１７と、経路算出部１８と、Ｄｅｎｙログ生成部１９と、ＯＦＳ制御部２０とは、プログラム（中継制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。例えば、プログラムは、ＯＦＣ１０の記憶部（図示せず）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、ＯＦＰ受信部１１、静的ポリシー取得部１３、動的ポリシー取得部１４、ポリシー判断部１５、Ａｌｌｏｗ制御部１６、Ｄｅｎｙ制御部１７、経路算出部１８、Ｄｅｎｙログ生成部１９及びＯＦＳ制御部２０として動作してもよい。また、ＯＦＰ受信部１１と、静的ポリシー取得部１３と、動的ポリシー取得部１４と、ポリシー判断部１５と、Ａｌｌｏｗ制御部１６と、Ｄｅｎｙ制御部１７と、経路算出部１８と、Ｄｅｎｙログ生成部１９と、ＯＦＳ制御部２０とは、それぞれが専用のハードウェアで実現されていてもよい。
【００７２】
次に、動作について説明する。以下の説明では、まず、ＯＦＣ１０が、ＯＦＳ３０からパケットの情報を受信した場合の処理について説明する。次に、ポリシーテーブル１２に記憶されたポリシーが更新されたことを契機として行われる処理について説明する。
【００７３】
図３は、ＯＦＣ１０が、ＯＦＳ３０からパケットの情報を受信した場合の処理の例を示すフローチャートである。まず、対応するフローが記憶部３２に存在しないパケットをＯＦＳ３０が受信すると、ＯＦＳ３０の制御部３３は、ネットワークインタフェース部３１を介して、受信したパケットの情報を含むメッセージをＯＦＣ１０に送信する。
【００７４】
ＯＦＰ受信部１１は、ＯＦＰに基づくメッセージをＯＦＳ３０から受信すると（ステップＳ１１０）、動的ポリシー取得部１４は、ＯｐｅｎＦｌｏｗメッセージにおけるＰａｃｋｅｔ−ｉｎのヘッダにマッチするアクションをポリシーテーブル１２から取得する（ステップＳ１２０）。すなわち、動的ポリシー取得部１４は、ポリシーテーブル１２に記憶されたマッチ条件と受信したパケットの情報とを比較し、該当するマッチ条件に対応するアクションをポリシーテーブル１２から読み取る。ポリシー判断部１５は、動的ポリシー取得部１４が読み取ったアクションが「宛先装置への通信を許可しない（Ｄｅｎｙ）」アクションか否かを判断する（ステップＳ１３０）。アクションがＤｅｎｙの場合（ステップＳ１３０における「はい」）、ポリシー判断部１５は、Ｄｅｎｙ制御部１７に、そのパケットのＤｅｎｙ処理を決定させる（ステップＳ１４０）。
【００７５】
図４は、Ｄｅｎｙ制御部１７が行う処理の例を示すフローチャートである。まず、Ｄｅｎｙ制御部１７は、アクションに含まれる付加情報の内容をもとに処理を決定する（ステップＳ１４１）。付加情報の内容が「Ｄｒｏｐ」の場合（ステップＳ１４１における「Ｄｒｏｐ」、Ｄｅｎｙ制御部１７は、Ｄｒｏｐフラグを立てる（ステップＳ１４２）。具体的には、Ｄｅｎｙ制御部１７は、ＯＦＣ１０が備えるメモリ（図示せず）などに、Ｄｒｏｐフラグを設定したことを記憶させる。一方、付加情報の内容が、特定ホストにパケットを転送する（すなわち、特定装置へ転送する）場合（ステップＳ１４１における「特定ホストへ」）、Ｄｅｎｙ制御部１７は、特定ホストまでのパケットの送信経路を経路算出部１８に算出させる（ステップＳ１４３）。
【００７６】
また、Ｄｅｎｙ制御部１７は、付加情報にロギング設定がされているか否かを判断する（ステップＳ１４４）。ロギング設定がされている場合（ステップＳ１４４における「はい」）、Ｄｅｎｙ制御部１７は、Ｐａｃｋｅｔ−ｉｎフラグを立てる（ステップＳ１４５）。具体的には、Ｄｅｎｙ制御部１７は、ＯＦＣ１０が備えるメモリ（図示せず）などに、Ｐａｃｋｅｔ−ｉｎフラグを設定したことを記憶させる。そして、Ｄｅｎｙログ生成部１９は、Ｄｅｎｙログの生成（Ｄｅｎｙのロギング）を行う（ステップＳ１４６）。なお、ロギング設定がされていない場合（ステップＳ１４４における「いいえ」）、Ｄｅｎｙ制御部１７は、Ｄｅｎｙログ生成の処理を行わない。
【００７７】
一方、図３のステップＳ１３０において、アクションがＤｅｎｙでない場合（ステップＳ１３０における「いいえ」）、ポリシー判断部１５は、Ａｌｌｏｗ制御部１６に、パケットの転送先を算出させる（ステップＳ１５０）。具体的には、Ａｌｌｏｗ制御部１６は、経路算出部１８にパケットまでの経路を算出させる。このようにして、Ａｌｌｏｗ制御部１６は、経路を取得する。
【００７８】
Ｄｅｎｙ制御部１７における処理（ステップＳ１４０）もしくはＡｌｌｏｗ制御部１６による経路算出処理（ステップＳ１５０）の後、ＯＦＳ制御部２０は、送信経路やＤｒｏｐフラグ、Ｐａｃｋｅｔ−ｉｎフラグをもとに、ＯＦＰに基づくメッセージを作成する（ステップＳ１６０）。具体的には、ＯＦＳ制御部２０は、Ｄｒｏｐフラグ、Ｐａｃｋｅｔ−ｉｎフラグの他にも、Ａｌｌｏｗ制御部１６が算出したパケットの送信経路や、Ｄｅｎｙ制御部１７が決定したＤｅｎｙ処理に基づき、ＯＦＳ３０の記憶部３２に記憶されたフローの内容を更新するためのメッセージを作成する。そして、ＯＦＰ送信部２１は、ＯＦＳ制御部２０がＯＦＰに基づいて生成したメッセージをＯＦＳ３０に送信する（ステップＳ１７０）。
【００７９】
このように、ＯＦＳ３０からパケットの情報を受信したことを契機としてフローが決定される（すなわち、ＯＦＣ１０が実際にパケットを受信してからＯＦＳ３０の記憶部３２に記憶させるエントリを作成する）ため、記憶部３２が記憶するフローエントリー数を削減できるという効果がある。
【００８０】
次に、ポリシーテーブル１２に記憶されたポリシーが更新されたことを契機として行われる処理について説明する。図５は、上記処理の例を示すフローチャートである。静的ポリシー取得部１３は、通信ネットワークにＯＦＳ３０が接続された旨の情報の通知を受け取ったときや、ポリシーテーブル１２の内容の更新を検知したとき、ポリシーテーブル１２から更新されたポリシーを読み取る。もしくは、静的ポリシー取得部１３は、ポリシーテーブル１２が初期化されたことを検知して、ポリシーテーブル１２の全てのポリシーを読み取る（ステップＳ２１０）。静的ポリシー取得部１３は、更新されたポリシーを読み取ると、そのポリシーをポリシー判断部１５に通知する。
【００８１】
ポリシー判断部１５は、静的ポリシー取得部１３から受け取ったポリシーに含まれるアクションが「宛先装置への通信を許可しない（Ｄｅｎｙ）」アクションか否かを判断する（ステップＳ２２０）。アクションがＤｅｎｙでない場合（ステップＳ２２０における「いいえ」）、ポリシー判断部１５は、処理を終了する。一方、アクションがＤｅｎｙの場合（ステップＳ２２０における「はい」）、ポリシー判断部１５は、Ｄｅｎｙ制御部１７に、そのパケットのＤｅｎｙ処理を決定させる（ステップＳ２３０）。以降、Ｄｅｎｙ制御部１７がＤｅｎｙ処理を決定し、ＯＦＳ制御部２０がＯＦＰに基づいて生成したメッセージを、ＯＦＰ送信部２１がＯＦＳ３０に送信するまでの処理（ステップＳ２３０〜Ｓ２５０）は、図３に例示するステップＳ１４０、及びステップＳ１６０〜Ｓ１７０の処理と同様のため、説明を省略する。
【００８２】
このように、ポリシーテーブル１２に記憶されたポリシーが更新されたことを契機としてフローが決定される（すなわち、ポリシーが更新されたときにＯＦＳ３０の記憶部３２に記憶させるエントリを作成する）ため、ＯＦＣ１０は、ＯＦＳ３０からのアクセスを低減できるため、負荷を低減できるという効果がある。
【００８３】
以上のように、本発明によれば、ポリシー判断部１５が、ＯＦＳ３０が受信したパケットの情報をもとに、マッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かをポリシーに基づいて判断する。そして、ポリシー判断部１５が、マッチ条件に該当するパケットに対して宛先装置への通信を許可しない（Ｄｅｎｙ）と判断したことを条件に、Ｄｅｎｙ制御部１７が、そのパケットを宛先装置に転送させないための処理を決定し、ＯＦＳ制御部２０が、少なくともそのパケットを受信したＯＦＳ３０にその処理を実行する処理規則を設定する。そのため、宛先装置までの通信が許可されない（Ｄｅｎｙ）パケットに対してパケット中継装置（例えば、ＯＦＳ３０）が行う処理の負荷を低減できる。
【００８４】
また、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０が、マッチ条件に該当するパケットを破棄（Ｄｒｏｐ）するための処理規則をＯＦＳ３０に設定する。そのため、ＯＦＳ３０及びＯＦＣ１０のＣＰＵ負荷を抑制することができる。
【００８５】
また、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０が、マッチ条件に該当するパケットを宛先装置とは異なる他の送信先に送信するための処理規則（例えば、他の送信先への経路）をＯＦＳ３０に設定する。そのため、外部装置による、より詳細なＤｅｎｙ処理を提供することが可能になる。
【００８６】
さらに、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０は、ＯＦＳ３０がＤｅｎｙパケットを受信したときに、そのパケットの情報をＯＦＣ１０に送信する規則をＯＦＳ３０に設定する。この場合に、ＯＦＣ１０がＯＦＳ３０からパケットの情報を受信したときにＤｅｎｙログ生成部１９がログを生成する。そのため、Ｄｅｎｙパケットの通信状況を把握することができる。
【００８７】
実施形態２．
図６は、本発明の第２の実施形態における中継制御システムの例を示すブロック図である。なお、第１の実施形態と同様の構成については、図１と同一の符号を付し、説明を省略する。本実施形態における中継制御システムは、ＯＦＣ１０ａと、ＯＦＳ３０とを備えている。ＯＦＳ３０については、第１の実施形態と同様である。
【００８８】
ＯＦＣ１０ａは、ＯＦＰ受信部１１と、ポリシーテーブル１２と、静的ポリシー取得部１３と、動的ポリシー取得部１４と、ポリシー判断部１５と、Ａｌｌｏｗ制御部１６と、Ｄｅｎｙ制御部１７と、経路算出部１８と、Ｄｅｎｙログ生成部１９と、ＯＦＳ制御部２０ａと、ＯＦＰ送信部２１に加え、フロー管理テーブル２２を備えている。すなわち、ＯＦＣ１０ａは、第１の実施形態におけるＯＦＣ１０と比べ、ＯＦＳ制御部２０の代わりにＯＦＳ制御部２０ａを備えている点、及び、フロー管理テーブル２２を備えている点において異なる。それ以外の構成については、第１の実施形態と同様である。
【００８９】
フロー管理テーブル２２は、ＯＦＳ制御部２０が作成したフローのアクション（以下、ＯＦアクションと記す。）を記憶する。すなわち、フロー管理テーブル２２は、ＯＦＳ３０に設定したルールを記憶する。フロー管理テーブル２２は、例えば、ＯＦＣ１０ａが備える磁気ディスク装置等によって実現される。フロー管理テーブル２２は、ＯＦアクションと、フローを更新する対象のＯＦＳ３０を識別する情報（以下、スイッチ識別情報と記す。）とを対応付けて記憶してもよい。
【００９０】
ＯＦＳ制御部２０ａは、作成したＯＦアクションをフロー管理テーブル２２に記憶させる。また、ＯＦＳ制御部２０ａは、新たにＯＦアクションを作成すると、フロー管理テーブル２２に同一のＯＦアクションが既に記憶されているか否かを判断する。同一のＯＦアクションが既に記憶されている場合、ＯＦＳ制御部２０ａは、ＯＦＰ送信部２１からメッセージを送信しないよう、作成したＯＦアクションを破棄する。すなわち、ＯＦＳ制御部２０ａは、ＯＦＳ３０に設定するルールが既にフロー管理テーブル２２に記憶されている場合には、そのルールをＯＦＳ３０に対して設定しないようにする。一方、作成したＯＦアクションが記憶されているＯＦアクションと異なる場合、ＯＦＳ制御部２０ａは、作成したＯＦアクションの内容でフロー管理テーブル２２の内容を更新する。なお、ＯＦＳ制御部２０ａの上記以外の機能は、第１の実施形態におけるＯＦＳ制御部２０の機能と同様である。
【００９１】
なお、ＯＦＳ制御部２０ａは、プログラム（中継制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。また、ＯＦＳ制御部２０ａは、専用のハードウェアで実現されていてもよい。
【００９２】
次に、動作について説明する。図７は、第２の実施形態において、ＯＦＣ１０ａが、ＯＦＳ３０からパケットの情報を受信した場合の処理の例を示すフローチャートである。なお、ＯＦＣ１０ａがＯＦＳ３０からパケットの情報を受信してから、ＯＦＳ制御部２０ａがＯＦＰに基づくメッセージを作成するまでの処理は、図３に例示するステップＳ１１０〜Ｓ１６０の処理と同様である。
【００９３】
ＯＦＳ制御部２０ａは、ＯＦＰに基づくメッセージを作成すると、フロー管理テーブル２２に同一のＯＦアクションが記憶されているか否かを判断する（ステップＳ３１０）。同一のＯＦアクションがフロー管理テーブル２２に既に存在する場合（ステップＳ３１０における「はい」）、ＯＦＳ制御部２０ａは、作成したメッセージを破棄し（ステップＳ３２０）、処理を終了する。一方、同一のＯＦアクションがフロー管理テーブル２２に存在しない場合（ステップＳ３１０における「いいえ」）、ＯＦＳ制御部２０ａは、作成したＯＦアクションをフロー管理テーブル２２に記憶させる（ステップＳ３３０）。そして、ＯＦＰ送信部２１は、ＯＦＳ制御部２０ａがＯＦＰに基づいて生成したメッセージをＯＦＳ３０に送信する（ステップＳ１７０）。
【００９４】
以上のように、本実施形態によれば、ＯＦＳ制御部２０ａが、ＯＦＳ３０に処理規則を設定したときに、フロー管理テーブル２２にもその処理規則を記憶させる。そして、ポリシー判断部１５がマッチ条件に該当するパケットに対して宛先装置への通信を許可しない（Ｄｅｎｙ）と判断したときに、ＯＦＳ制御部２０ａは、ＯＦＳ３０に設定する処理規則が既にフロー管理テーブル２２に記憶されている場合にはその処理規則をＯＦＳ３０に設定しないようにする。このように、既に設定された処理規則の再設定指示を抑制できるため、ＯＦＳ３０及びＯＦＣ１０ａのＣＰＵ負荷を抑制することができる。
【００９５】
例えば、ＯＦＳ３０が、Ｄｅｎｙパケットに対し、Ｄｒｏｐ処理のみを行う場合、ＯＦＣ１０ａは、ＯＦＳ３０からＤｅｎｙパケットを再度受信することはない。しかし、Ｄｅｎｙパケットに対してＰａｃｋｅｔ−ｉｎの設定が行われている場合には、通信を許可されない（Ｄｅｎｙ）パケットが、再度ＯＦＣ１０ａに送信されることになる。しかし、本実施形態では、Ｄｅｎｙパケットが再度ＯＦＣ１０ａに送信されても、ＯＦＳ制御部２０ａが、すでに設定されたフローの更新を抑制する。よって、ＯＦＣ１０ａや、ＯＦＳ３０の処理負荷を軽減することができる。
【００９６】
すなわち、ポリシーが、Ｄｅｎｙパケットに対し、Ｄｒｏｐ処理及びＰａｃｋｅｔ−ｉｎ処理、もしくは、明示的な経路設定及びＰａｃｋｅｔ−ｉｎ処理を表すアクションであっても、ＯＦＣ１０ａが、ＯＦＳ３０の記憶部３２にすでに書き込まれたフローのアクションを複数回書き込みに行くことを防ぐことができる。
【００９７】
実施形態３．
図８は、本発明の第３の実施形態における中継制御システムの例を示すブロック図である。なお、第１の実施形態と同様の構成については、図１と同一の符号を付し、説明を省略する。本実施形態における中継制御システムは、ＯＦＣ１０ｂと、ＯＦＳ３０とを備えている。ＯＦＳ３０については、第１の実施形態と同様である。
【００９８】
ＯＦＣ１０ｂは、ＯＦＰ受信部１１と、ポリシーテーブル１２と、静的ポリシー取得部１３と、動的ポリシー取得部１４と、ポリシー判断部１５と、Ａｌｌｏｗ制御部１６と、Ｄｅｎｙ制御部１７ｂと、経路算出部１８と、Ｄｅｎｙログ生成部１９と、ＯＦＳ制御部２０と、ＯＦＰ送信部２１に加え、Ｄｅｎｙカウンタテーブル２３を備えている。すなわち、ＯＦＣ１０ｂは、第１の実施形態におけるＯＦＣ１０と比べ、Ｄｅｎｙ制御部１７の代わりにＤｅｎｙ制御部１７ｂを備えている点、及び、Ｄｅｎｙカウンタテーブル２３を備えている点において異なる。それ以外の構成については、第１の実施形態と同様である。
【００９９】
Ｄｅｎｙカウンタテーブル２３は、Ｄｅｎｙ制御部１７ｂが宛先装置への通信を許可しないと判断したパケットに対する判断回数（カウンタ値と記すこともある。）を、パケットの識別情報（例えば、マッチ条件）と対応付けて記憶する。以下、この識別情報を、フィールドと記すこともある。なお、カウンタ値は、Ｐａｃｋｅｔ−ｉｎ回数を計測した値ということもできる。Ｄｅｎｙカウンタテーブル２３は、ポリシーのマッチ条件で使用される識別情報と同一の情報をＤｅｎｙ処理の回数と対応付けて記憶してもよい。もしくは、Ｄｅｎｙカウンタテーブル２３は、例えば、パケットの送信元など、ペイロードに含まれる情報をＤｅｎｙ処理の回数と対応付けて記憶してもよい。また、カウンタ値を集約するため、Ｄｅｎｙカウンタテーブル２３は、複数のフロー（マッチ条件）に対して１つのカウンタ値を共有する形式で記憶してもよい。Ｄｅｎｙカウンタテーブル２３は、例えば、ＯＦＣ１０ｂが備える磁気ディスク装置等によって実現される。
【０１００】
Ｄｅｎｙ制御部１７ｂは、ポリシーのアクションが「Ｄｅｎｙ」だった場合（すなわち、宛先装置への通信を許可しないと判断した場合）に、そのポリシーのマッチ条件に対応するＤｅｎｙカウンタテーブル２３のカウンタ値を増加させる。そして、Ｄｅｎｙ制御部１７ｂは、カウンタ値が予め定められた閾値（以下、Ｄｅｎｙ処理回数閾値と記す。）を超えた場合、そのカウンタ値に対応するマッチ条件に該当するフローについて、パケットの情報をＯＦＣ１０ｂに送信させる処理（すなわち、Ｐａｃｋｅｔ−ｉｎ処理）を行わせないと決定する。
【０１０１】
すなわち、Ｄｅｎｙ制御部１７ｂは、Ｄｅｎｙと判断される特定フロー（例えば、ポリシーごと、もしくは、送信元のアドレスごと）のＰａｃｋｅｔ−ｉｎ処理回数がある閾値（Ｄｅｎｙ処理回数閾値）を越えた場合、ＯＦＳ３０に対して、特定フローについてはドロップ処理もしくは特定経路の選択のみを行わせると決定する。こうすることにより、例えば、ＯＦＣ１０ｂに対してアタック処理が行われるような場合に、Ｐａｃｋｅｔ−ｉｎの頻度を低減させることができるため、ＯＦＳ３０及びＯＦＣ１０ｂの処理負荷を抑制することができる。
【０１０２】
なお、Ｄｅｎｙ制御部１７ｂは、プログラム（中継制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。また、Ｄｅｎｙ制御部１７ｂは、専用のハードウェアで実現されていてもよい。
【０１０３】
次に、動作について説明する。第３の実施形態では、ＯＦＣ１０ｂがＯＦＳ３０からパケットの情報を受信してから、ＯＦＰ送信部２１がＯＦＳ３０にメッセージを送信するまでの処理は、図３に例示するフローチャートが示す処理と同様である。ただし、Ｄｅｎｙ制御部１７ｂが行う処理は、第１の実施形態におけるＤｅｎｙ制御部１７が行う処理と異なる。以下、Ｄｅｎｙ制御部１７ｂが行う動作について説明する。
【０１０４】
図９は、Ｄｅｎｙ制御部１７ｂが行う処理の例を示すフローチャートである。Ｄｅｎｙ制御部１７ｂがアクションに含まれる付加情報の内容をもとに処理を決定するまでの動作は、図４におけるステップＳ１４１〜Ｓ１４３の動作と同様である。
【０１０５】
次に、Ｄｅｎｙ制御部１７ｂは、付加情報にロギング設定がされているか否かを判断する（ステップＳ１４４）。ロギング設定がされていない場合（ステップＳ１４４における「いいえ」）、Ｄｅｎｙ制御部１７ｂはＤｅｎｙログ生成の処理を行わない。一方、ロギング設定がされている場合（ステップＳ１４４における「はい」）、Ｄｅｎｙ制御部１７ｂは、フローにマッチするフィールドがＤｅｎｙカウンタテーブル２３にあるか否かを判断する（ステップＳ４１０）。フローにマッチするフィールドが存在する場合（ステップＳ４１０における「はい」）、Ｄｅｎｙ制御部１７ｂは、そのフィールドに対応するカウンタ値を増加させる（ステップＳ４２０）。例えば、Ｄｅｎｙ制御部１７ｂは、フローにマッチするフィールドのカウンタ値に１を加算する。一方、フローにマッチするフィールドが存在しない場合（ステップＳ４１０における「いいえ」）、Ｄｅｎｙ制御部１７ｂは、フローのマッチ条件（フィールド）を作成し、カウント値を０で初期化する（ステップＳ４３０）。Ｄｅｎｙ制御部１７ｂは、カウンタ値を増加させた（ステップＳ４２０）後、もしくは、フローのマッチ条件（フィールド）を作成した（ステップＳ４３０）後、カウント値が閾値（Ｄｅｎｙ処理回数閾値）以上か否かを判断する（ステップＳ４４０）。カウント値が閾値以上の場合（ステップＳ４４０における「はい」）、Ｄｅｎｙ制御部１７ｂは、Ｄｅｎｙログ生成部１９に、ログ出力を抑制した旨の情報を出力させる（ステップＳ４５０）。具体的には、Ｄｅｎｙ制御部１７ｂは、カウンタ値がある閾値以上の場合、ポリシーのアクションからＰａｃｋｅｔ−ｉｎを削除したメッセージを生成するようにＯＦＳ制御部２０に指示する。一方、カウント値が閾値以上でない場合（ステップＳ４４０における「いいえ」）、Ｄｅｎｙ制御部１７ｂは、図３に例示するステップＳ１４５〜Ｓ１４６と同様、Ｐａｃｋｅｔ−ｉｎフラグを立て、Ｄｅｎｙのロギングを行う。
【０１０６】
なお、図９におけるステップＳ４４０において、カウント値が閾値（Ｄｅｎｙ処理回数閾値）以上か否かをＤｅｎｙ制御部１７ｂが判断する場合について説明した。ただし、Ｄｅｎｙ制御部１７ｂは、カウント値が閾値（Ｄｅｎｙ処理回数閾値）を超えるか否かによって判断してもよい。
【０１０７】
以上のように、本実施形態によれば、Ｄｅｎｙ制御部１７ｂ及びＯＦＳ制御部２０は、ポリシー判断部１５が宛先装置への通信を許可しない（Ｄｅｎｙ）と判断したときに、Ｄｅｎｙカウンタテーブル２３に記憶されたパケットを識別する要素に対応するパケットの判断回数を増加させる。そして、パケットの判断回数がＤｅｎｙ処理回数閾値を超えた場合に、そのパケットの情報をＯＦＣ１０ｂに送信しないための処理規則をＯＦＳ３０に設定する。そのため、通信を許可しないパケットの情報がＯＦＣ１０ｂに通知され過ぎることを防止できる。
【０１０８】
実施形態４．
図１０は、本発明の第４の実施形態における中継制御システムの例を示すブロック図である。なお、第１の実施形態と同様の構成については、図１と同一の符号を付し、説明を省略する。本実施形態における中継制御システムは、ＯＦＣ１０ｃと、ＯＦＳ３０とを備えている。ＯＦＳ３０については、第１の実施形態と同様である。また、第１の実施形態では、ＯＦＳ制御部２０が、パケットの情報を受信したＯＦＳ３０（すなわち、イングレス）に、Ｄｅｎｙ処理を実行する処理規則を設定する場合について説明した。本実施形態では、イングレス以外のＯＦＳ３０に対してもＤｅｎｙ設定を行う場合について説明する。
【０１０９】
ＯＦＣ１０ｃは、ＯＦＰ受信部１１と、ポリシーテーブル１２と、静的ポリシー取得部１３と、動的ポリシー取得部１４と、ポリシー判断部１５と、Ａｌｌｏｗ制御部１６ｃと、Ｄｅｎｙ制御部１７と、経路算出部１８と、Ｄｅｎｙログ生成部１９と、ＯＦＳ制御部２０と、ＯＦＰ送信部２１とを備えている。すなわち、ＯＦＣ１０ｃは、第１の実施形態におけるＯＦＣ１０と比べ、Ａｌｌｏｗ制御部１６の代わりにＡｌｌｏｗ制御部１６ｃを備えている点において異なる。それ以外の構成については、第１の実施形態と同様である。
【０１１０】
Ａｌｌｏｗ制御部１６ｃは、ポリシーのアクションが「Ａｌｌｏｗ」だった場合（すなわち、宛先装置への通信を許可すると判断した場合）に、パケットの宛先装置への少なくとも１つ以上の経路候補を算出する。具体的には、Ａｌｌｏｗ制御部１６ｃは、経路算出部１８に宛先装置への複数の送信経路を算出させる。そして、Ａｌｌｏｗ制御部１６ｃは、算出された各経路上に、受信したパケットの通信を許可しない（Ｄｅｎｙ）と判断するスイッチ（以下、Ｄｅｎｙスイッチと記す。）が存在するか否かを判断する。例えば、Ａｌｌｏｗ制御部１６ｃは、パケットの通信を許可するか否かを経路上の各スイッチに問い合わせ、その応答結果をもとにＤｅｎｙスイッチが存在するか否かを判断してもよい。
【０１１１】
パケットの通信が許可される経路が送信経路の候補に存在しない場合、Ａｌｌｏｗ制御部１６ｃは、Ｄｅｎｙ処理を行うと判断する。具体的には、Ａｌｌｏｗ制御部１６ｃは、Ｄｅｎｙ制御部１７にパケットに対するＤｅｎｙ処理を決定させる。一方、パケットの通信が許可される経路が存在する場合、Ａｌｌｏｗ制御部１６ｃは、Ｄｅｎｙ処理を行わないと判断し、その経路をＯＦＳ制御部２０に通知する。
【０１１２】
なお、Ａｌｌｏｗ制御部１６ｃは、Ｄｅｎｙスイッチが経路上に存在すると判断した場合、そのＤｅｎｙスイッチに対して、Ｄｅｎｙ処理の設定を行うと判断してもよい。この場合、Ａｌｌｏｗ制御部１６ｃは、経路上の上記スイッチに対するＤｅｎｙ処理をＤｅｎｙ制御部１７に決定させ、ＯＦＳ制御部２０が、決定されたＤｅｎｙ処理に基づいて、フローの内容を更新するための指示を経路上のスイッチに対して行ってもよい。
【０１１３】
経路上のスイッチに対してＤｅｎｙ処理の設定がされる場合について、図１１及び図１２を用いて説明する。図１１及び図１２は、送信元（Ｎａｎｃｙ）から、送信先（Ｐａｕｌ）へ通信を行う場合の例を示す説明図である。破線で囲んだ範囲は、送信元（Ｎａｎｃｙ）及び送信先（Ｐａｕｌ）が接続する通信ネットワークである。また、ＳＷ１〜ＳＷ４はスイッチ（例えば、ＯＦＳ３０）を表し、ＣＴ１は、コントローラ（例えば、ＯＦＣ１０ｃ）を表す。また、ＳＷ１〜ＳＷ４のうち、網掛けで示すスイッチは、送信元（Ｎａｎｃｙ）から送信先（Ｐａｕｌ）への通信を許可しないスイッチであり、白丸で示すスイッチは、送信元（Ｎａｎｃｙ）から送信先（Ｐａｕｌ）への通信を許可するスイッチである。図１１に示す例では、送信元（Ｎａｎｃｙ）が接続するスイッチは、送信先（Ｐａｕｌ）への通信を許可しないと判断する。すなわち、ポリシー判断部１５は、Ｄｅｎｙ制御部１７に、パケットのＤｅｎｙ処理を決定させることになる。
【０１１４】
一方、図１２に示す例では、送信元（Ｎａｎｃｙ）が接続するスイッチは、（Ｐａｕｌ）への通信を許可すると判断する。すなわち、ポリシー判断部１５が、Ａｌｌｏｗ制御部１６ｃに、パケットの転送先を算出させる。そして、Ａｌｌｏｗ制御部１６ｃは、経路算出部１８に送信先までの複数の送信経路を算出させる。図１２に示す例では、送信先への経路は、ＳＷ１とＳＷ２とＳＷ４を経由する経路（経路１）、ＳＷ１とＳＷ３とＳＷ４を経由する経路（経路２）、ＳＷ１とＳＷ４を経由する経路（経路３）の３種類の経路が算出される。まず、Ａｌｌｏｗ制御部１６ｃは、Ｄｅｎｙスイッチが経路１上に存在するか否かを判断する。経路１上には、通信を許可しないと判断するＳＷ２が存在する。この場合、Ａｌｌｏｗ制御部１６ｃは、次の経路の候補（経路２）に対して、Ｄｅｎｙスイッチが経路上に存在するか否かを判断する。経路２上には、Ｄｅｎｙスイッチは存在しない。よって、Ａｌｌｏｗ制御部１６ｃは、経路２をＯＦＳ制御部２０に通知する。
【０１１５】
なお、Ａｌｌｏｗ制御部１６ｃは、経路１上のＳＷ２に対し、Ｄｅｎｙ処理の設定を行うと判断してもよい。この場合、Ａｌｌｏｗ制御部１６ｃは、ＳＷ２に対するＤｅｎｙ処理をＤｅｎｙ制御部１７に決定させる。そして、ＯＦＳ制御部２０が、決定されたＤｅｎｙ処理に基づいて、フローの内容を更新するための指示をＳＷ２に対して行う。このように、経路上のスイッチに対しても、予めＤｅｎｙ処理の設定を行うことができるため、Ｄｅｎｙ処理を設定済みのスイッチに通信装置を接続した場合に、再度ＯＦＣ１０ｃに問い合わせる必要がない。そのため、問合せにかかるＯＦＣ１０ｃ及びＯＦＳ３０の負荷を軽減することができる。
【０１１６】
なお、Ａｌｌｏｗ制御部１６ｃは、プログラム（中継制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。また、Ａｌｌｏｗ制御部１６ｃは、専用のハードウェアで実現されていてもよい。
【０１１７】
次に、動作について説明する。図１３は、ＯＦＣ１０ｃが、ＯＦＳ３０からパケットの情報を受信した場合の処理の例を示すフローチャートである。第４の実施形態において、ＯＦＣ１０ｃがＯＦＳ３０からパケットの情報を受信し、ポリシー判断部１５がアクションをＤｅｎｙと判断した場合の処理については、図３に例示するステップＳ１１０〜Ｓ１４０及びステップＳ１６０〜Ｓ１７０における処理と同様である。以下、ポリシー判断部１５が、アクションが「宛先装置への通信を許可する（Ａｌｌｏｗ）」アクションであると判断した場合（図１３のステップＳ１３０における「いいえ」）に、Ａｌｌｏｗ制御部１６ｃが行う処理（ステップＳ５１０）について説明する。
【０１１８】
図１４は、Ａｌｌｏｗ制御部１６ｃが行う処理の例を示すフローチャートである。まず、Ａｌｌｏｗ制御部１６ｃは、経路算出部１８に経路の候補を算出させる（ステップＳ５１１）。Ａｌｌｏｗ制御部１６ｃは、算出させた経路候補を１つ目（ステップＳ５１２）から順に判断する。なお、判断する順序は特に限定されない。Ａｌｌｏｗ制御部１６ｃは、候補の経路上にＤｅｎｙスイッチが存在するか否かを判断する（ステップＳ５１３）。Ｄｅｎｙスイッチが存在する場合（ステップＳ５１３における「はい」）、Ａｌｌｏｗ制御部１６ｃは、そのスイッチに対してＤｅｎｙ処理を行うと判断する（ステップＳ５１５）。次に、Ａｌｌｏｗ制御部１６ｃは、他に経路候補が存在するか否かを判断する（ステップＳ５１６）。他に経路候補が存在する場合（ステップＳ５１６における「はい」）、Ａｌｌｏｗ制御部１６ｃは、以降の候補（ステップＳ５１８）に対し、ステップＳ５１３及びステップＳ５１５〜Ｓ５１８の処理を繰り返す。他に経路候補が存在しない場合（ステップＳ５１６における「いいえ」）、Ａｌｌｏｗ制御部１６ｃは、Ｄｅｎｙ処理を行うと判断する（ステップＳ５１７）。
【０１１９】
一方、ステップＳ５１３において、候補の経路上にＤｅｎｙスイッチが存在しない場合（ステップＳ５１３における「いいえ」）、Ａｌｌｏｗ制御部１６ｃは、ＯＦＳ制御部２０にその経路を通知する（ステップＳ５１４）。
【０１２０】
図１３において、Ａｌｌｏｗ制御部１６ｃがＤｅｎｙ処理を行うと判断すると（ステップＳ５２０における「はい」）、Ａｌｌｏｗ制御部１６ｃは、Ｄｅｎｙ処理をＤｅｎｙ制御部１７に決定させる。以降の処理は、図３に例示するステップＳ１４０及びステップＳ１６０〜Ｓ１７０における処理と同様である。
【０１２１】
なお、図１４に例示する処理では、Ａｌｌｏｗ制御部１６ｃが、Ｄｅｎｙスイッチが存在しない経路を発見した段階で、ＯＦＳ制御部２０にその経路を通知し、以降の候補の経路の内容を判断しない場合について説明した。ただし、Ａｌｌｏｗ制御部１６ｃは、Ｄｅｎｙスイッチが存在しない経路を発見しても、残りの経路の候補全てに対して、経路上にＤｅｎｙスイッチが存在するか否かを判断し、その後で発見した経路をＯＦＳ制御部２０に通知してもよい。
【０１２２】
以上のように、本実施形態によれば、ポリシー判断部１５がマッチ条件に該当するパケットに対して宛先装置への通信を許可する（Ａｌｌｏｗ）と判断したことを条件に、経路算出部１８が、パケットの宛先装置への少なくとも１つ以上の経路候補を算出する。次に、Ａｌｌｏｗ制御部１６ｃは、経路候補上に、パケットの通信を許可しないと判断するＯＦＳ３０が存在するか否かを判断する。そして、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０は、経路候補のうち、パケットの通信を許可しないと判断するＯＦＳ３０が全ての候補経路における各経路上に存在する場合に、そのパケットを宛先装置に転送させないための処理（Ｄｅｎｙ処理）を実行する処理規則を、少なくとも上記パケットを受信したＯＦＳ３０に設定する。そのため、ＯＦＳ３０が他のスイッチにパケットを中継する前に、送信可否を判断できるため、通信ネットワークの負荷を軽減することができる。
【０１２３】
また、Ｄｅｎｙ制御部１７は、マッチ条件に該当するパケットの通信を許可しないＯＦＳ３０が経路上に存在する場合に、そのパケットを宛先装置に転送させないための処理（Ｄｅｎｙ処理）を実行する処理規則を上記ＯＦＳ３０に対して設定する。このように、コントローラにパケットを送信したスイッチ（すなわち、イングレス）だけでなく、経路候補上のスイッチに対してもＤｅｎｙ処理を実行する処理規則を設定できるため、通信ネットワークの負荷を軽減することができる。
【０１２４】
実施形態５．
図１５は、本発明の第５の実施形態における中継制御システムの例を示すブロック図である。なお、第２の実施形態と同様の構成については、図６と同一の符号を付し、説明を省略する。本実施形態における中継制御システムは、ＯＦＣ１０ｄと、ＯＦＳ３０とを備えている。ＯＦＳ３０については、第１の実施形態と同様である。
【０１２５】
ＯＦＣ１０ｄは、ＯＦＰ受信部１１と、ポリシーテーブル１２と、動的ポリシー取得部１４と、ポリシー判断部１５と、Ａｌｌｏｗ制御部１６と、Ｄｅｎｙ制御部１７と、経路算出部１８と、Ｄｅｎｙログ生成部１９と、ＯＦＳ制御部２０ｄと、ＯＦＰ送信部２１と、フロー管理テーブル２２とを備えている。すなわち、ＯＦＣ１０ｄは、第２の実施形態におけるＯＦＣ１０ａと比べ、静的ポリシー取得部１３を備えず、ＯＦＳ制御部２０ａの代わりにＯＦＳ制御部２０ｄを備えている点において異なる。それ以外の構成については、第２の実施形態と同様である。
【０１２６】
ＯＦＳ制御部２０ｄは、第２の実施形態におけるＯＦＳ制御部２０ａの機能に加え、フロー管理テーブル２２に記憶されたＯＦアクション（すなわち、ＯＦＳ制御部２０ａが作成したフローのアクション）に基づいて、ＯＦＳ３０に記憶されたフローの更新指示を行う。すなわち、ＯＦＳ制御部２０ｄは、フロー管理テーブル２２に記憶されたＯＦアクションをＯＦＳ３０に設定する。ＯＦＳ制御部２０ｄは、例えば、ＯＦＳ３０が接続されたときに、接続されたＯＦＳ３０を示すスイッチ識別情報に対応するＯＦアクションをフロー管理テーブル２２から読み取る。そして、ＯＦＳ制御部２０ｄは、フローを更新するためのメッセージを作成し、そのメッセージをＯＦＳ３０へ送信するよう、ＯＦＰ送信部２１に指示する。なお、ＯＦＳ制御部２０ｄは、スイッチ識別情報に関わらず、フロー管理テーブル２２に記憶されたＯＦアクションを全て読み取ってもよい。また、ＯＦＳ制御部２０ｄは、ＯＦＣ１０ｄが、フローのアクションを要求するメッセージをＯＦＳ３０から受信した場合に、上記処理を行ってもよい。
【０１２７】
ＯＦＳ制御部２０ｄは、プログラム（中継制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。また、ＯＦＳ制御部２０ｄは、専用のハードウェアで実現されていてもよい。
【０１２８】
次に、動作について説明する。図１６は、ＯＦＣ１０ｄが、フローのアクションを要求するメッセージをＯＦＳ３０から受信した場合の処理の例を示すフローチャートである。ＯＦＰ受信部１１が、フローのアクションを要求するメッセージをＯＦＳ３０から受信すると（ステップＳ６１０）、ＯＦＳ制御部２０ｄは、フロー管理テーブル２２からフローのアクション（ＯＦアクション）を読み取り、ＯＦＰに基づくメッセージを作成する（ステップＳ６２０）。そして、ＯＦＰ送信部２１は、ＯＦＳ制御部２０ｄがＯＦＰに基づいて作成したメッセージをＯＦＳ３０に送信する（ステップＳ６３０）。
【０１２９】
以上のように、本実施形態によれば、ＯＦＳ制御部２０ｄが、フロー管理テーブル２２に記憶されたフローをパケット中継装置に設定する。よって、第２の実施形態のように、ポリシーテーブル１２の更新を検知できない場合であっても、Ｄｅｎｙ処理を示すフローをＯＦＳ３０に反映することができる。
【０１３０】
次に、本発明による中継制御装置の最小構成の例を説明する。図１７は、本発明による中継制御装置の最小構成の例を示すブロック図である。本発明による中継制御装置は、パケット中継装置（例えば、ＯＦＳ３０）を制御する中継制御装置（例えば、ＯＦＣ１０）であって、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報（例えば、アクション）とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可する（例えば、Ａｌｌｏｗ）か否（例えば、Ｄｅｎｙ）かを判断する通信許可判断手段８１（例えば、ポリシー判断部１５）と、通信許可判断手段８１がマッチ条件に該当するパケットに対して宛先装置への通信を許可しない（例えば、Ｄｅｎｙ）と判断したことを条件に、そのパケットを宛先装置に転送させないための処理（例えば、Ｄｅｎｙ処理）を実行する規則（例えば、フロー）を少なくともパケットを受信したパケット中継装置に設定する規則設定手段８２（例えば、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０）とを備えている。
【０１３１】
そのような構成により、宛先装置までの通信が許可されないパケットに対してパケット中継装置が行う処理の負荷を低減できる。
【０１３２】
また、図１８のブロック図に示すように、本発明による中継制御装置８０にパケット中継装置９０を設けて、中継制御システムを構成してもよい。
【０１３３】
さらに、本発明によるパケット中継装置の最小構成の例を説明する。図１９は、本発明によるパケット中継装置の最小構成の例を示すブロック図である。本発明によるパケット中継装置は、受信したパケットに対する処理とパケットを識別する情報とを対応付けた情報であるフローを記憶するフロー記憶手段７１（例えば、記憶部３２）と、フロー記憶手段７１に記憶されたフローに基づいて受信したパケットを中継するパケット中継手段７２（例えば、制御部３３）とを備えている。
【０１３４】
パケット中継手段７２は、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報（例えば、アクション）とを対応付けた情報であるポリシーに基づいて、受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可する（例えば、Ａｌｌｏｗ）か否（例えば、Ｄｅｎｙ）かを判断し、そのパケットに対して宛先装置への通信を許可しない（例えば、Ｄｅｎｙ）と判断したことを条件に、マッチ条件に該当するパケットを宛先装置に転送させないための処理（例えば、Ｄｅｎｙ処理）を実行するフローを少なくともパケットを受信した送信元の装置に設定する中継制御装置（例えば、ＯＦＣ１０）に対して、受信したパケットに対応するフローがフロー記憶手段７２に存在しない場合にそのパケットの情報を送信し、中継制御装置により設定されたフローに基づいてパケットを処理する。
【０１３５】
そのような構成により、宛先装置までの通信が許可されないパケットに対してパケット中継装置が行う処理の負荷を低減できる。
【０１３６】
なお、少なくとも以下に示すような中継制御装置、中継システム及びパケット中継装置も、上記に示すいずれかの実施形態に記載されていると言える。
【０１３７】
（１）パケット中継装置（例えば、ＯＦＳ３０）を制御する中継制御装置（例えば、ＯＦＣ１０）であって、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報（例えば、アクション）とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可する（例えば、Ａｌｌｏｗ）か否（例えば、Ｄｅｎｙ）かを判断する通信許可判断手段（例えば、ポリシー判断部１５）と、通信許可判断手段がマッチ条件に該当するパケットに対して宛先装置への通信を許可しない（例えば、Ｄｅｎｙ）と判断したことを条件に、そのパケットを宛先装置に転送させないための処理（例えば、Ｄｅｎｙ処理）を実行する規則（例えば、フロー）を少なくともパケットを受信したパケット中継装置に設定する規則設定手段（例えば、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０）とを備えた中継制御装置。
【０１３８】
（２）規則設定手段（例えば、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０）が、マッチ条件に該当するパケットを破棄する（例えば、Ｄｒｏｐする）ための規則を少なくともパケットを受信したパケット中継装置に設定する中継制御装置。
【０１３９】
（３）規則設定手段（例えば、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０）が、マッチ条件に該当するパケットを宛先装置とは異なる他の送信先（例えば、検疫ネットワークやハニーポット、詳細なフロー挙動解析装置など）に送信するための規則を少なくともパケットを受信したパケット中継装置に設定する中継制御装置。
【０１４０】
（４）マッチ条件に応じて予め定められた送信先までの経路を算出する経路算出手段（例えば、経路算出部１８）を備え、規則設定手段が、マッチ条件に該当するパケットを経路算出手段が算出した送信先に送信するための規則を少なくともパケットを受信したパケット中継装置に設定する中継制御装置。
【０１４１】
（５）通信許可判断手段（例えば、ポリシー判断部１５）が宛先装置への通信を許可しないと判断したことを示すログ（例えば、Ｄｅｎｙログ）を生成するログ生成手段（例えば、Ｄｅｎｙログ生成部１９）を備え、規則設定手段が、宛先装置に転送させないための処理（例えば、Ｄｅｎｙ処理）が実行されるパケットをパケット中継装置が受信したときに、そのパケットの情報を中継制御装置に送信するための規則をそのパケット中継装置に設定し、ログ生成手段が、パケット中継装置からパケットの情報を受信したときにログを生成する中継制御装置。
【０１４２】
（６）パケット中継装置に設定した規則を記憶する規則記憶手段（例えば、フロー管理テーブル２２）を備え、規則設定手段（例えば、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０ａ）が、パケット中継装置に規則を設定したときに、規則記憶手段にその規則を記憶させ、通信許可判断手段がマッチ条件に該当するパケットに対して宛先装置への通信を許可しないと判断したときに、パケット中継装置に設定する規則が既に規則記憶手段に記憶されている場合にはその規則をパケット中継装置に設定しない中継制御装置。
【０１４３】
（７）通信許可判断手段（例えば、ポリシー判断部１５）が宛先装置への通信を許可しないと判断したパケットの判断回数（例えば、カウント値）を、そのパケットを識別する要素と対応付けて記憶する判断回数記憶手段（例えば、Ｄｅｎｙカウンタテーブル２３）を備え、規則設定手段（例えば、Ｄｅｎｙ制御部１７ｂ及びＯＦＳ制御部２０）が、通信許可判断手段が宛先装置への通信を許可しないと判断したときに、要素に対応するパケットの判断回数を増加させ、パケットの判断回数が予め定められた閾値（例えば、Ｄｅｎｙ処理回数閾値）を超えた場合に、そのパケットの情報を中継制御装置に送信しないための規則をそのパケット中継装置に設定する中継制御装置。
【０１４４】
（８）通信許可判断手段（例えば、ポリシー判断部１５）がマッチ条件に該当するパケットに対して宛先装置への通信を許可する（例えば、Ａｌｌｏｗ）と判断したことを条件に、パケットの宛先装置への少なくとも１つ以上の経路候補を算出する経路候補算出手段（例えば、経路算出部１８）と、経路候補上に、パケットの通信を許可しないと判断するパケット中継装置が存在するか否かを判断する経路判断手段（例えば、Ａｌｌｏｗ制御部１６ｃ）とを備え、規則設定手段（例えば、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０）が、経路候補のうち、パケットの通信を許可しないと判断するパケット中継装置が全ての候補経路における各経路上に存在する場合に、そのパケットを宛先装置に転送させないための処理（例えば、Ｄｅｎｙ処理）を実行する規則を少なくともパケットを受信したパケット中継装置に設定する中継制御装置。
【０１４５】
（９）規則設定手段（例えば、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０）が、マッチ条件に該当するパケットの通信を許可しないパケット中継装置（例えば、スイッチ）が経路上に存在する場合に、そのパケットを宛先装置に転送させないための処理（すなわち、Ｄｅｎｙ処理）を実行する規則をパケット中継装置に対して設定する中継制御装置。
【０１４６】
（１０）規則設定手段（例えば、ＯＦＳ制御部２０ｄ）が、規則記憶手段（例えば、フロー管理テーブル２２）に記憶された規則（例えば、フローのアクション）をパケット中継装置に設定する中継制御装置。
【０１４７】
（１１）パケット中継装置（例えば、ＯＦＳ３０）と、パケット中継装置を制御する中継制御装置（ＯＦＣ１０）とを備え、中継制御装置が、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報（例えば、アクション）とを対応付けた情報であるポリシーに基づいて、パケット中継装置が受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可する（例えば、Ａｌｌｏｗ）か否（例えば、Ｄｅｎｙ）かを判断する通信許可判断手段（例えば、ポリシー判断部１５）と、通信許可判断手段がマッチ条件に該当するパケットに対して宛先装置への通信を許可しない（例えば、Ｄｅｎｙ）と判断したことを条件に、そのパケットを宛先装置に転送させないための処理（例えば、Ｄｅｎｙ処理）を実行する規則（例えば、フロー）を少なくともパケットを受信したパケット中継装置に設定する規則設定手段（例えば、Ｄｅｎｙ制御部１７及びＯＦＳ制御部２０）とを備えた中継制御システム。
【０１４８】
（１２）規則設定手段が、マッチ条件に該当するパケットを破棄するための規則を少なくともパケットを受信したパケット中継装置に設定する中継制御システム。
【０１４９】
（１３）規則設定手段が、マッチ条件に該当するパケットを宛先装置とは異なる他の送信先に送信するための規則を少なくともパケットを受信したパケット中継装置に設定する中継制御システム。
【０１５０】
（１４）受信したパケットに対する処理とパケットを識別する情報とを対応付けた情報であるフローを記憶するフロー記憶手段（例えば、記憶部３２）と、フロー記憶手段に記憶されたフローに基づいて受信したパケットを中継するパケット中継手段（例えば、制御部３３）とを備え、パケット中継手段は、パケットを識別する情報であるマッチ条件と、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可するか否かを示す通信可否情報（例えば、アクション）とを対応付けた情報であるポリシーに基づいて、受信したパケットの情報をもとに、そのマッチ条件に該当するパケットに対して宛先装置への通信を許可する（例えば、Ａｌｌｏｗ）か否（例えば、Ｄｅｎｙ）かを判断し、そのパケットに対して宛先装置への通信を許可しない（例えば、Ｄｅｎｙ）と判断したことを条件に、マッチ条件に該当するパケットを宛先装置に転送させないための処理（例えば、Ｄｅｎｙ処理）を実行するフローを少なくともパケットを受信した送信元の装置に設定する中継制御装置（例えば、ＯＦＣ１０）に対して、受信したパケットに対応するフローがフロー記憶手段に存在しない場合にそのパケットの情報を送信し、中継制御装置により設定されたフローに基づいてパケットを処理するパケット中継装置。
【０１５１】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１５２】
この出願は、２００９年９月１０日に出願された日本特許出願２００９−２０９７２２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１５３】
本発明は、パケット中継装置が行う処理を制御する中継制御装置に好適に適用される。
【符号の説明】
【０１５４】
１０，１０ａ，１０ｂ，１０ｃ，１０ｄ  ＯＦＣ
１１  ＯＦＰ受信部
１２  ポリシーテーブル
１３  静的ポリシー取得部
１４  動的ポリシー取得部
１５  ポリシー判断部
１６，１６ｃ  Ａｌｌｏｗ制御部
１７，１７ｂ  Ｄｅｎｙ制御部
１８  経路算出部
１９  Ｄｅｎｙログ生成部
２０，２０ａ，２０ｄ  ＯＦＳ制御部
２１  ＯＦＰ送信部
２２  フロー管理テーブル
２３  Ｄｅｎｙカウンタテーブル
３０  ＯＦＳ
３１  ネットワークインタフェース部
３２  記憶部
３３  制御部
ＳＷ１〜ＳＷ４  スイッチ
ＣＴ１  コントローラ
【図１】
2011030490.tif 000003
【図２】
2011030490.tif 000004
【図３】
2011030490.tif 000005
【図４】
2011030490.tif 000006
【図５】
2011030490.tif 000007
【図６】
2011030490.tif 000008
【図７】
2011030490.tif 000009
【図８】
2011030490.tif 000010
【図９】
2011030490.tif 000011
【図１０】
2011030490.tif 000012
【図１１】
2011030490.tif 000013
【図１２】
2011030490.tif 000014
【図１３】
2011030490.tif 000015
【図１４】
2011030490.tif 000016
【図１５】
2011030490.tif 000017
【図１６】
2011030490.tif 000018
【図１７】
2011030490.tif 000019
【図１８】
2011030490.tif 000020
【図１９】
2011030490.tif 000021
【図２０】
2011030490.tif 000022
【図２１】
2011030490.tif 000023
【図２２】
2011030490.tif 000024
【図２３】
2011030490.tif 000025
【国際調査報告】
2011030490.tif 000026
2011030490.tif 000027