(57)【要約】  オープンフローシステムにおいて、フローテーブルへの登録に成功したフローと失敗したフローを確認できるようにする。具体的には、コントローラは、スイッチとの間で、オープンフローメッセージを送受信する。スイッチは、コントローラから登録されたフローを管理するフローテーブルと、フローテーブルを検索し、該当する情報を読み出すフローテーブル読み出し部と、フローエントリの追加・削除・変更処理を行うフローテーブル制御部と、フローテーブル制御部からの問い合わせに応じて対象フローエントリが有効か無効かを決定するプラットフォーム機能管理部とを備える。フローテーブルは、正規フローテーブルと退避フローテーブルを持っている。スイッチの持つ構成情報に一致した有効なフローエントリは、正規フローテーブルに登録される。スイッチの持つ構成情報と不一致となる無効なフローエントリは、退避フローテーブルに登録される。
2011132568.tif 000002
【特許請求の範囲】
【請求項１】
コントローラから通知されたフローが所定の機能と整合するか確認し、当該フローが有効か無効かを判定する手段と、
有効なフローを正規フローテーブルに登録する手段と、
無効なフローを退避フローテーブルに登録する手段と、
ネットワークから受信したパケットをフローと認識し、当該フローが前記正規フローテーブルに登録されている場合、当該フローに対して指定された処理に基づいて、前記パケットを処理する手段と
を具備する
スイッチ。
【請求項２】
請求項１に記載のスイッチであって、
前記スイッチは、
前記コントローラからのフロー登録の成否の問い合わせに対して、当該フローを前記正規フローテーブル及び前記退避フローテーブルのいずれかから読み出す手段と、
前記コントローラに対して、当該フローが前記正規フローテーブル及び前記退避フローテーブルのいずれに登録されているか応答する手段と
を更に具備する
スイッチ。
【請求項３】
請求項１又は２に記載のスイッチであって、
前記所定の機能の変更を検知する手段と、
前記所定の機能の変更に応じて、前記正規フローテーブル及び前記退避フローテーブルに登録済みのフローの各々について、各フローが前記所定の機能と整合するか確認し、各フローが有効か無効かを判定する手段と、
有効なフローを前記正規フローテーブルに登録する手段と、
有効なフローが前記退避フローテーブルに登録されている場合は前記退避フローテーブルから削除する手段と、
無効なフローを前記退避フローテーブルに登録する手段と、
無効なフローが前記正規フローテーブルに登録されている場合は前記正規フローテーブルから削除する手段と
を更に具備する
スイッチ。
【請求項４】
請求項１乃至３のいずれか一項に記載のスイッチであって、
障害発生時に、前記退避フローテーブルに登録済みのフローを有効にする手段と
を更に具備する
スイッチ。
【請求項５】
スイッチにより実施されるフローテーブル制御方法であって、
コントローラから通知されたフローが所定の機能と整合するか確認し、当該フローが有効か無効かを判定することと、
有効なフローを正規フローテーブルに登録することと、
無効なフローを退避フローテーブルに登録することと、
ネットワークから受信したパケットをフローと認識し、当該フローが前記正規フローテーブルに登録されている場合、当該フローに対して指定された処理に基づいて、前記パケットを処理することと
を含む
フローテーブル制御方法。
【請求項６】
請求項５に記載のフローテーブル制御方法であって、
前記コントローラからのフロー登録の成否の問い合わせに対して、当該フローを前記正規フローテーブル及び前記退避フローテーブルのいずれかから読み出すことと、
前記コントローラに対して、当該フローが前記正規フローテーブル及び前記退避フローテーブルのいずれに登録されているか応答することと
を更に含む
フローテーブル制御方法。
【請求項７】
請求項５又は６に記載のフローテーブル制御方法であって、
前記所定の機能の変更を検知することと、
前記所定の機能の変更に応じて、前記正規フローテーブル及び前記退避フローテーブルに登録済みのフローの各々について、各フローが前記所定の機能と整合するか確認し、各フローが有効か無効かを判定することと、
有効なフローを前記正規フローテーブルに登録することと、
有効なフローが前記退避フローテーブルに登録されている場合は前記退避フローテーブルから削除することと、
無効なフローを前記退避フローテーブルに登録することと、
無効なフローが前記正規フローテーブルに登録されている場合は前記正規フローテーブルから削除することと
を更に含む
フローテーブル制御方法。
【請求項８】
請求項５乃至７のいずれか一項に記載のフローテーブル制御方法を、スイッチに実行させるためのフローテーブル制御用プログラムを格納した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スイッチに関し、特にオープンフローシステムのスイッチに関する。
【背景技術】
【０００２】
従来のネットワークシステムでは、スイッチ単体で経路制御とパケット転送を行っていた。【０００３】
近年、ネットワークの仮想化のために、スイッチの経路制御機能とパケット転送機能を分離し、経路制御機能をスイッチ外部のコントローラに集約したオープンフロー（ＯｐｅｎＦｌｏｗ）システムが提案されている（非特許文献１参照）。【０００４】
オープンフローシステムにおいて、コントローラは、ネットワーク内のスイッチを監視し、通信状況に応じて、ネットワーク内のスイッチにパケットの配送経路を動的に設定する。コントローラは、オープンフロープロトコル（ＯｐｅｎＦｌｏｗ  Ｐｒｏｔｏｃｏｌ）メッセージを用いてフローをスイッチに登録し、フローテーブルを作成する。【０００５】
フローとは、所定の規則（ルール）と整合するパケットに対して行うべき所定の処理（アクション）を定義したものである。フローのルールは、パケットを運ぶフレームのヘッダ領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入力ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローのルールとして使用可能である。【０００６】
フローテーブルとは、スイッチ毎のフローの情報（フローエントリ）を格納したものである。【０００７】
オープンフローシステムにおいて、スイッチは、作成したフローテーブルに従ってパケット転送を行う。スイッチは、オープンフロープロトコルメッセージによってコントローラから受信したフローについて、フローテーブルとして登録する前に、そのフローがスイッチのプラットフォーム機能と整合がとれているかどうかを確認する必要がある。スイッチは、整合のとれているフローを有効、整合のとれていないフローを無効と判断し、有効なフローをフローテーブルとして登録する。【０００８】
オープンフローシステムのコントローラとスイッチを、それぞれオープンフローコントローラ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）、オープンフロースイッチ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）と呼ぶこともある。【０００９】
オープンフロープロトコルにおいて、フローテーブル作成にはフロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージを用いるが、フローエントリ作成に成功したか否かの応答メッセージは定義されていない。そのため、コントローラ側でフローエントリが登録できたかどうかの確認を行うには、登録要求をしたフロー情報と、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージで取得したフロー情報とを比較する必要がある。【００１０】
また、既存ネットワークにオープンフローシステムを導入する場合、既存機能との不整合が生じる可能性がある。【００１１】
また、オープンフロープロトコルにおいて、コントローラからスイッチに対してフロー設定を行うためのフロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージには、その結果をコントローラに通知するための返送メッセージが定義されていない。そのため、設定結果をコントローラで知るためには、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージを用いて確認する必要がある。【００１２】
一般に、オープンフローシステムでは、スイッチ内のフローテーブルは、有効なフローのエントリのみを保持するものであり、無効なフローのエントリを保持していない。【００１３】
このため、コントローラは、スイッチ内のフローテーブルに登録しようとしたフローが実際に登録できたか、無効なため登録できなかったか、或いは他の要因で登録失敗したか、等の判別ができないという問題がある。【００１４】
なお、特許文献１（特開２００４−０５６３４０号公報）に、Ｌ３スイッチがフローテーブルを備える旨が記載されている。【００１５】
また、特許文献２（特開２００６−２５４１３４号公報）に、検索の結果、一致するフローエントリが存在する場合、フロー識別情報を出力し、一致するフローエントリが存在しない場合、フローテーブルのフローエントリの追加／削除を行う旨が記載されている。【００１６】
また、特許文献３（特開２００８−１６７３４０号公報）に、パケット中継装置が、フロー識別の対象となるパケットのパターンが記述されたフローテーブルを備える旨が記載されている。【００１７】
また、特許文献４（特開２００９−０４９５９２号公報）に、ＩＰパケットが到着する毎に、検索キーとフローテーブルに登録されたいずれかのフローエントリとがマッチするかを比較し、一致するものについてはマッチ回数、総パケット長等の統計情報を更新する旨が記載されている。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２００４−０５６３４０号公報
【特許文献２】特開２００６−２５４１３４号公報
【特許文献３】特開２００８−１６７３４０号公報
【特許文献４】特開２００９−０４９５９２号公報
【非特許文献】
【００１９】
【非特許文献１】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  ０．９．０（Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ９８）  Ｊｕｌｙ  ２０，  ２００９  Ｃｕｒｒｅｎｔ  Ｍａｉｎｔａｉｎｅｒ：  Ｂｒａｎｄｏｎ  Ｈｅｌｌｅｒ（ｂｒａｎｄｏｎｈ＠ｓｔａｎｆｏｒｄ．ｅｄｕ）  ［ｏｎｌｉｎｅ］（ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ０．９．０．ｐｄｆ）
【発明の概要】
【００２０】
本発明の目的は、所定の機能と整合していないフローエントリを無効エントリとして保持するオープンフローシステムを提供することである。
【００２１】
本発明のスイッチは、コントローラからの制御に応じて、パケットをフローとして一律に制御するための規則（ルール）と処理（アクション）が定義されたフローエントリを、前記スイッチのフローテーブルに設定するスイッチであって、コントローラから通知されたフローが所定の機能と整合するか確認し、当該フローが有効か無効かを判定する手段と、有効なフローを正規フローテーブルに登録する手段と、無効なフローを退避フローテーブルに登録する手段と、ネットワークから受信したパケットをフローと認識し、当該フローが前記正規フローテーブルに登録されている場合、当該フローに対して指定された処理に基づいて、前記パケットを処理する手段とを具備する。
【００２２】
本発明のスイッチにより実施されるフローテーブル制御方法は、コントローラから通知されたフローが所定の機能と整合するか確認し、当該フローが有効か無効かを判定することと、有効なフローを正規フローテーブルに登録することと、無効なフローを退避フローテーブルに登録することと、ネットワークから受信したパケットをフローと認識し、当該フローが前記正規フローテーブルに登録されている場合、当該フローに対して指定された処理に基づいて、前記パケットを処理することとを含む。
【００２３】
本発明のフローテーブル制御用プログラムは、コントローラから通知されたフローが所定の機能と整合するか確認し、当該フローが有効か無効かを判定するステップと、有効なフローを正規フローテーブルに登録するステップと、無効なフローを退避フローテーブルに登録するステップと、ネットワークから受信したパケットをフローと認識し、当該フローが前記正規フローテーブルに登録されている場合、当該フローに対して指定された処理に基づいて、前記パケットを処理するステップとをスイッチに実行させるためのプログラムである。なお、本発明のフローテーブル制御用プログラムは、記憶装置や記憶媒体に格納することが可能である。
【００２４】
これにより、コントローラは、スイッチのフローテーブルに登録しようとしたフローが実際に登録できたか、無効であるため登録できなかったかを判別できるようになる。
【図面の簡単な説明】
【００２５】
【図１】本発明のオープンフローシステムの構成例を示すブロック図である。
【図２】フローテーブルへフローエントリを設定する際の処理を示すフローチャートである。
【図３】コントローラから通知されたフローがスイッチの持つ構成情報と整合し正規フローテーブルに登録する際の処理のシーケンス図である。
【図４】コントローラから通知されたフローがスイッチの持つ構成情報と整合せず退避フローテーブルに設定する際の処理のシーケンス図である。
【図５】フローテーブルからフローエントリを読み出す際の処理を示すフローチャートである。
【図６】コントローラから要求されたフローについて、正規フローテーブルからフローエントリを読み出す際の処理のシーケンス図である。
【図７】コントローラから要求されたフローについて、退避フローテーブルからフローエントリを読み出す際の処理のシーケンス図である。
【図８】フローエントリに示されたフローが有効か無効かを再確認する際の処理を示すフローチャートである。
【発明を実施するための形態】
【００２６】
本発明では、退避フローテーブルを実装したオープンフローシステムについて説明する。
【００２７】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
本実施形態では、本発明のオープンフローシステムにおける基本的な構成及び動作について説明する。
【００２８】
［システム構成］
図１に示すように、本発明のオープンフローシステムは、コントローラ１０と、スイッチ２０を含む。
【００２９】
コントローラ１０は、スイッチ２０との間で、１つのオープンフローシステムを形成しており、オープンフロープロトコルメッセージを送受信する。
【００３０】
スイッチ２０は、メッセージ処理部２１と、フローテーブル制御部２２と、プラットフォーム機能管理部２３と、構成情報２４と、フローテーブル２５と、フローテーブル読み出し部２６を備える。
【００３１】
メッセージ処理部２１は、コントローラ１０からオープンフロープロトコルメッセージを受信し、メッセージ解析を行い、スイッチ２０の内部モジュールのうち適切な内部モジュールにハンドリングを行い、内部モジュールからの要求に応じてオープンフロープロトコルメッセージを組み立てて、コントローラ１０に送信する。
【００３２】
オープンフロープロトコルメッセージには、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージと、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージが存在する。フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージは、スイッチ２０のフローテーブル２５に対してフローエントリを設定（追加、変更、削除）、或いはフローテーブル２５を作成するためのものである。統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージは、スイッチ２０の持つフローエントリ、ポート、フローテーブル２５についての統計情報を要求するためのものである。
【００３３】
フローテーブル制御部２２は、プラットフォーム機能管理部２３に対して、メッセージ処理部２１から受け取ったフローの確認の問い合わせを行い、問い合わせの結果に基づいて、フローテーブル２５に対して、フローエントリの追加・削除・変更処理を行う。
【００３４】
プラットフォーム機能管理部２３は、フローテーブル制御部２２からの問い合わせに応じて、対象となるフローが有効か無効かを決定する。ここでは、プラットフォーム機能管理部２３は、フローテーブル制御部２２からフローに関する問合せを受け取った際に、スイッチ２０の持つ構成情報２４を参照し、ネットワーク（ＮＷ：Ｎｅｔｗｏｒｋ）設定を確認する。すなわち、プラットフォーム機能管理部２３は、対象となるフローのルールやアクションが、スイッチ２０の持つ構成情報２４と整合しているか確認する。
【００３５】
構成情報２４は、予め設定されており、スイッチ２０の内部に保持されている。構成情報２４の例として、スイッチ２０が属するネットワーク（ＮＷ）内のノード構成に関する情報や、スイッチ２０が持つ機能に関する情報等が考えられる。
【００３６】
フローテーブル２５は、正規フローテーブル２５１と、退避フローテーブル２５２を有する。
【００３７】
正規フローテーブル２５１は、スイッチ２０の持つ構成情報２４と整合した有効なフローを登録するためのフローテーブルである。
【００３８】
退避フローテーブル２５２は、スイッチ２０の持つ構成情報２４と整合しない無効なフローを登録するためのフローテーブルである。
【００３９】
フローテーブル読み出し部２６は、メッセージ処理部２１から受け取ったフローのヘッダ領域の値を基に検索キーを作成し、この検索キーを用いてフローテーブル２５内のフローエントリを検索し、該当するフローエントリを読み出す。
【００４０】
ここでは、メッセージ処理部２１は、ネットワークからパケットを受信し、当該パケットに基づくフローをフローテーブル読み出し部２６に通知し、当該フローについて正規フローテーブル２５１に該当するフローエントリがあれば、当該フローエントリに従って転送する。また、メッセージ処理部２１は、当該フローについて正規フローテーブル２５１に該当するフローエントリがなければ、当該フローをコントローラ１０に通知する。
【００４１】
このとき、メッセージ処理部２１がネットワークと通信するための通信回線と、メッセージ処理部２１がコントローラ１０と通信するための通信回線は、異なる通信回線であると好適である。但し、実際には、同じ通信回線を用いることも可能である。
【００４２】
［ハードウェアの例示］
コントローラ１０の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、コントローラ１０は、物理マシン上に構築された仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＶＭ））環境でも良い。
【００４３】
スイッチ２０の例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）を想定している。ネットワークスイッチには、Ｌ３スイッチ（ｌａｙｅｒ  ３  ｓｗｉｔｃｈ）、Ｌ４スイッチ（ｌａｙｅｒ  ４  ｓｗｉｔｃｈ）、Ｌ７スイッチ／アプリケーションスイッチ（ｌａｙｅｒ  ７  ｓｗｉｔｃｈ）、或いは、マルチレイヤスイッチ（ｍｕｌｔｉ−ｌａｙｅｒ  ｓｗｉｔｃｈ）等がある。他にも、スイッチ２０の例として、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール、ロードバランサ、帯域制御装置、セキュリティ監視制御装置、基地局、アクセスポイント、或いは、複数の通信ポートを有する計算機等が考えられる。
【００４４】
メッセージ処理部２１、フローテーブル制御部２２、フローテーブル読み出し部２６、プラットフォーム機能管理部２３は、プログラムで駆動されるプロセッサ等のハードウェアと、そのハードウェアを駆動して所望の処理を実行するためのプログラム等のソフトウェアと、そのソフトウェアや各種データを格納するメモリによって実現される。フローテーブル２５、及び構成情報２４は、上記のメモリに格納されているものとする。
【００４５】
上記のハードウェアの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））等が考えられる。
【００４６】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）やＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等のリムーバブルディスクや記憶媒体（メディア）等が考えられる。また、上記のメモリは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【００４７】
また、上記のハードウェア、及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。従って、スイッチ２０に搭載される１チップマイコンが、処理装置、及び記憶装置を備えている事例が考えられる。
【００４８】
但し、実際には、これらの例に限定されない。
【００４９】
［フローテーブルへの設定処理］
図２を参照して、フローテーブル２５へフローエントリを設定する際の処理について説明する。
【００５０】
（１）ステップＳ１０１
メッセージ処理部２１は、コントローラ１０からオープンフロープロトコルメッセージとしてフロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージを受信する。このとき、メッセージ処理部２１は、コントローラ１０から受信したオープンフロープロトコルメッセージの種別を判定するようにしても良い。
【００５１】
（２）ステップＳ１０２
メッセージ処理部２１は、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージに応じて、フローテーブル制御部２２に、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージにおいて指定された処理を要求する。ここでは、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージにおいて指定された処理の内容は、フローエントリの追加・削除・変更処理のいずれかであるものとする。
【００５２】
（３）ステップＳ１０３
フローテーブル制御部２２は、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージに示されたフローについて、プラットフォーム機能管理部２３に対して、ネットワーク（ＮＷ：Ｎｅｔｗｏｒｋ）設定の確認を要求する。このとき、フローテーブル制御部２２は、プラットフォーム機能管理部２３を起動するようにしても良い。
【００５３】
（４）ステップＳ１０４
プラットフォーム機能管理部２３は、スイッチ２０の持つ構成情報２４を参照し、ネットワーク（ＮＷ）設定確認を行い、当該フローが有効なフローか無効なフローかを判定し、ネットワーク（ＮＷ）設定確認結果（判定結果）をフローテーブル制御部２２に返す。
【００５４】
（５）ステップＳ１０５
フローテーブル制御部２２は、ネットワーク（ＮＷ）設定確認の結果、当該フローが有効なフローであれば、正規フローテーブル２５１に対して、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージにおいて指定された処理（フローエントリの追加・削除・変更のいずれか）を行う。
【００５５】
（６）ステップＳ１０６
フローテーブル制御部２２は、ネットワーク（ＮＷ）設定確認の結果、当該フローが無効なフローであれば、退避フローテーブル２５２に対して、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージにおいて指定された処理（フローエントリの追加・削除・変更のいずれか）を行う。
【００５６】
なお、フローテーブル制御部２２は、メッセージ処理部２１から受け取ったフローを基にフローエントリの削除を行う場合には、プラットフォーム機能管理部２３へのネットワーク（ＮＷ）設定確認の要求を行わず、正規フローテーブル２５１及び退避フローテーブル２５２の両方に対して、順番に／同時に、フローエントリの削除を指示するようにしても良い。正規フローテーブル２５１及び退避フローテーブル２５２のいずれかにフローエントリが登録された後に、ネットワーク（ＮＷ）設定が変更され、フローエントリの登録時と削除時で、ネットワーク（ＮＷ）設定確認結果（判定結果）が異なってしまう可能性もあるからである。
【００５７】
［正規フローテーブルへの登録処理］
図３を参照して、コントローラ１０から通知されたフローがスイッチ２０の持つ構成情報２４と整合し正規フローテーブルに登録する際の処理について説明する。
【００５８】
（１）ステップＳ１１１
まず、コントローラ１０は、メッセージ処理部２１に、フロー登録を指示するフロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージを送信する。
【００５９】
（２）ステップＳ１１２
メッセージ処理部２１は、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージに応じて、フローテーブル制御部２２に、フロー登録を要求する。
【００６０】
（３）ステップＳ１１３
フローテーブル制御部２２は、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージに含まれるフローに基づいて、プラットフォーム機能管理部２３に、ネットワーク（ＮＷ）設定確認を要求する。
【００６１】
（４）ステップＳ１１４
プラットフォーム機能管理部２３は、スイッチ２０の持つ構成情報２４を参照し、ネットワーク（ＮＷ）設定確認を行い、フローテーブル制御部２２に、ネットワーク（ＮＷ）設定確認結果を返す。ここでは、ネットワーク（ＮＷ）設定確認結果は、当該フローが有効なフローである旨を示すものとする。
【００６２】
（５）ステップＳ１１５
フローテーブル制御部２２は、当該フローが有効なフローである場合、正規フローテーブル２５１に、当該フローのエントリを登録する。
【００６３】
［退避フローテーブルへの設定処理］
図４を参照して、コントローラ１０から通知されたフローがスイッチ２０の持つ構成情報２４と整合せず退避フローテーブルに設定する処理について説明する。
【００６４】
（１）ステップＳ１２１
まず、コントローラ１０は、メッセージ処理部２１に、フロー登録を指示するフロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージを送信する。
【００６５】
（２）ステップＳ１２２
メッセージ処理部２１は、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージに応じて、フローテーブル制御部２２に、フロー登録を要求する。
【００６６】
（３）ステップＳ１２３
フローテーブル制御部２２は、フロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージに含まれるフローに基づいて、プラットフォーム機能管理部２３に、ネットワーク（ＮＷ）設定確認を要求する。
【００６７】
（４）ステップＳ１２４
プラットフォーム機能管理部２３は、スイッチ２０の持つ構成情報２４を参照し、ネットワーク（ＮＷ）設定確認を行い、フローテーブル制御部２２に、ネットワーク（ＮＷ）設定確認結果を返す。ここでは、ネットワーク（ＮＷ）設定確認結果は、当該フローが無効なフローである旨を示すものとする。
【００６８】
（５）ステップＳ１２５
フローテーブル制御部２２は、当該フローが無効なフローである場合、退避フローテーブル２５２に、当該フローのエントリを登録する。
【００６９】
［フローテーブルからの読み出し処理］
図５を参照して、フローテーブル２５からフローエントリを読み出す際の処理について説明する。
【００７０】
（１）ステップＳ２０１
メッセージ処理部２１は、コントローラ１０からオープンフロープロトコルメッセージとして統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージを受信する。このとき、メッセージ処理部２１は、コントローラ１０から受信したオープンフロープロトコルメッセージの種別を判定するようにしても良い。
【００７１】
（２）ステップＳ２０２
メッセージ処理部２１は、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージに含まれるフローについて、フローテーブル読み出し部２６にフロー状態読み出しを要求する。ここでは、メッセージ処理部２１は、当該フローを、フローテーブル読み出し部２６に通知する。このとき、メッセージ処理部２１は、フローテーブル読み出し部２６を起動するようにしても良い。
【００７２】
（３）ステップＳ２０３
フローテーブル読み出し部２６は、フロー状態読み出しの要求に応じて、フロー状態確認を行う。ここでは、フローテーブル読み出し部２６は、当該フローのヘッダ領域の値を基に検索キーを作成し、この検索キーを用いて正規フローテーブル２５１を検索し、正規フローテーブル２５１内での該当するフローエントリの有無を確認する。
【００７３】
（４）ステップＳ２０４
フローテーブル読み出し部２６は、正規フローテーブル２５１内に該当するフローエントリがあれば、フロー状態確認結果により、正規フローテーブル２５１内に該当するフローエントリがあることを確認する。
【００７４】
（５）ステップＳ２０５
フローテーブル読み出し部２６は、正規フローテーブル２５１内に該当するフローエントリがなければ、フロー状態確認結果により、正規フローテーブル２５１内に該当するフローエントリがないことを確認する。
【００７５】
（６）ステップＳ２０６
フローテーブル読み出し部２６は、正規フローテーブル２５１内に該当するフローエントリがなかった場合、当該フローのヘッダ領域の値を基に検索キーを作成し、この検索キーを用いて退避フローテーブル２５２を検索し、退避フローテーブル２５２内での該当するフローエントリの有無を確認する。
【００７６】
（７）ステップＳ２０７
フローテーブル読み出し部２６は、退避フローテーブル２５２内に該当するフローエントリがあれば、フロー状態確認結果により、退避フローテーブル２５２内に該当するフローエントリがあることを確認する。
【００７７】
（８）ステップＳ２０８
フローテーブル読み出し部２６は、退避フローテーブル２５２内に該当するフローエントリがなければ、フロー状態確認結果により、退避フローテーブル２５２内に該当するフローエントリがないことを確認する。この場合、当該フローは、正規フローテーブル２５１及び退避フローテーブル２５２のいずれにも登録されていない未登録のフローであることが判明する。
【００７８】
（９）ステップＳ２０９
フローテーブル読み出し部２６は、フロー状態確認結果に基づいて、メッセージ処理部２１にフロー状態読み出し結果を通知する。例えば、フローテーブル読み出し部２６は、当該フローが複数であった場合、これら複数のフローの全てについてフロー状態確認を完了した場合に、メッセージ処理部２１にフロー状態読み出し結果を通知する。
【００７９】
（１０）ステップＳ２１０
メッセージ処理部２１は、フロー状態読み出し結果に基づいて、統計応答（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｐｌｙ）メッセージを作成してコントローラ１０に送信する。
【００８０】
［正規フローテーブルからの読み出し処理］
図６を参照して、コントローラ１０から要求されたフローについて、正規フローテーブル２５１からフローエントリを読み出す際の処理について説明する。
【００８１】
（１）ステップＳ２１１
まず、コントローラ１０は、メッセージ処理部２１に、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージを送信する。
【００８２】
（２）ステップＳ２１２
メッセージ処理部２１は、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージに含まれるフローに基づいて、フローテーブル読み出し部２６に、フロー状態読み出しを要求する。
【００８３】
（３）ステップＳ２１３
フローテーブル読み出し部２６は、当該フローに基づいて、正規フローテーブル２５１を検索し、該当するフローエントリの有無についてフロー状態確認を行う。ここでは、正規フローテーブル２５１内に該当するフローエントリがあるものとする。
【００８４】
（４）ステップＳ２１４
フローテーブル読み出し部２６は、フロー状態確認結果として、正規フローテーブル２５１内に該当するフローエントリがあることを確認する。
【００８５】
（５）ステップＳ２１５
その後、フローテーブル読み出し部２６は、メッセージ処理部２１に、フロー状態読み出し結果を通知する。
【００８６】
（６）ステップＳ２１６
メッセージ処理部２１は、統計応答（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｐｌｙ）メッセージを作成してコントローラ１０に送信する。
【００８７】
［退避フローテーブルからの読み出し処理］
図７を参照して、コントローラ１０から要求されたフローについて、退避フローテーブル２５２からフローエントリを読み出す際の処理について説明する。
【００８８】
（１）ステップＳ２２１
まず、コントローラ１０は、メッセージ処理部２１に、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージを送信する。
【００８９】
（２）ステップＳ２２２
メッセージ処理部２１は、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージに含まれるフローに基づいて、フローテーブル読み出し部２６に、フロー状態読み出しを要求する。
【００９０】
（３）ステップＳ２２３
フローテーブル読み出し部２６は、当該フローに基づいて、正規フローテーブル２５１を検索し、該当するフローエントリの有無についてフロー状態確認を行う。ここでは、正規フローテーブル２５１内に該当するフローエントリがないものとする。
【００９１】
（４）ステップＳ２２４
フローテーブル読み出し部２６は、フロー状態確認結果として、正規フローテーブル２５１内に該当するフローエントリがないことを確認する。
【００９２】
（５）ステップＳ２２５
次に、フローテーブル読み出し部２６は、当該フローに基づいて、退避フローテーブル２５２を検索し、該当するフローエントリの有無についてフロー状態確認を行う。ここでは、退避フローテーブル２５２内に該当するフローエントリがあるものとする。
【００９３】
（６）ステップＳ２２６
フローテーブル読み出し部２６は、フロー状態確認結果として、退避フローテーブル２５２内に該当するフローエントリがあることを確認する。
【００９４】
（７）ステップＳ２２７
その後、フローテーブル読み出し部２６は、メッセージ処理部２１に、フロー状態読み出し結果を通知する。
【００９５】
（８）ステップＳ２２８
メッセージ処理部２１は、統計応答（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｐｌｙ）メッセージを作成してコントローラ１０に送信する。
【００９６】
これにより、コントローラ１０は、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージを送信するだけで、フローテーブル２５への登録に成功したフローと失敗したフローを確認することができる。
【００９７】
例えば、コントローラ１０は、あるフローについて、スイッチ２０にフローテーブル２５への設定処理を要求した後、当該フローについて、フローテーブル２５への登録に成功したかどうか確認するために、当該フローについての統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージをスイッチ２０に送信する。コントローラ１０は、スイッチ２０からの統計応答（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｐｌｙ）メッセージにより、フローテーブル２５への登録に成功したか失敗したかを確認することができる。
【００９８】
＜第２実施形態＞
次に、本発明の第２実施形態について説明する。
本実施形態では、フローテーブルへの登録後に、フローテーブル内のフローエントリに示されたフローが有効か無効かを再確認する。
【００９９】
［フローエントリの有効性の再確認処理］
図８を参照して、フローエントリに示されたフローが有効か無効かを再確認する際の処理について説明する。
【０１００】
（１）ステップＳ３０１
プラットフォーム機能管理部２３は、スイッチ２０の持つ構成情報２４に変更が加えられた場合、フローテーブル制御部２２に通知する。フローテーブル制御部２２は、プラットフォーム機能管理部２３から通知を受けると、メッセージ処理部２１に通知する。すなわち、プラットフォーム機能管理部２３は、スイッチ２０の持つ構成情報２４に変更が加えられた場合、フローテーブル制御部２２を介して、又は直接に、メッセージ処理部２１に通知する。
【０１０１】
（２）ステップＳ３０２
メッセージ処理部２１は、フローテーブル読み出し部２６に、正規フローテーブル２５１及び退避フローテーブル２５２に登録されている全てのフローエントリの読み出しを要求する。
【０１０２】
（３）ステップＳ３０３
フローテーブル読み出し部２６は、メッセージ処理部２１からの要求に応じて、正規フローテーブル２５１及び退避フローテーブル２５２に登録されている全てのフローエントリを読み出し、メッセージ処理部２１に通知する。なお、実際には、フローテーブル読み出し部２６は、正規フローテーブル２５１内のフローエントリの読み出しと、退避フローテーブル２５２内のフローエントリの読み出しを、一括ではなく、別々に（独立して）行うようにしても良い。この場合、フローテーブル読み出し部２６は、正規フローテーブル２５１内のフローエントリと、退避フローテーブル２５２内のフローエントリを、別々に、メッセージ処理部２１に通知する。
【０１０３】
（４）ステップＳ３０４
メッセージ処理部２１は、フローテーブル読み出し部２６から通知されたフローエントリに示された全てのフローを、フローテーブル制御部２２に通知する。
【０１０４】
（５）ステップＳ３０５
フローテーブル制御部２２は、メッセージ処理部２１から通知された全てのフローについて、プラットフォーム機能管理部２３に対して、ネットワーク（ＮＷ）設定の確認を要求する。このとき、フローテーブル制御部２２は、プラットフォーム機能管理部２３を起動するようにしても良い。
【０１０５】
（６）ステップＳ３０６
プラットフォーム機能管理部２３は、スイッチ２０の持つ構成情報２４を参照し、ネットワーク（ＮＷ）設定確認を行い、それぞれのフローが有効なフローか無効なフローかを判定し、ネットワーク（ＮＷ）設定確認結果（判定結果）をフローテーブル制御部２２に返す。
【０１０６】
（７）ステップＳ３０７
フローテーブル制御部２２は、ネットワーク（ＮＷ）設定確認の結果、それぞれのフローについて、対象フローが有効なフローであれば、正規フローテーブル２５１に対して、フローエントリの追加・変更を行う。
【０１０７】
（８）ステップＳ３０８
更に、フローテーブル制御部２２は、対象フローが退避フローテーブル２５２に登録されていたものであれば、退避フローテーブル２５２に対して、フローエントリの削除を行う。対象フローが退避フローテーブル２５２に登録されていたものでなければ、この動作は行われない。
【０１０８】
（９）ステップＳ３０９
また、フローテーブル制御部２２は、ネットワーク（ＮＷ）設定確認の結果、それぞれのフローについて、対象フローが無効なフローであれば、退避フローテーブル２５２に対して、フローエントリの追加・変更を行う。
【０１０９】
（１０）ステップＳ３１０
更に、フローテーブル制御部２２は、対象フローが正規フローテーブル２５１に登録されていたものであれば、正規フローテーブル２５１に対して、フローエントリの削除を行う。対象フローが正規フローテーブル２５１に登録されていたものでなければ、この動作は行われない。
【０１１０】
ここでは、対象フローが、正規フローテーブル２５１内のフローエントリと、退避フローテーブル２５２内のフローエントリのどちらに由来するものであるか分かっているものとする。例えば、それぞれのフローに、どちらのフローテーブルに登録されているものか（由来）を示す情報を対応付けている場合が考えられる。或いは、正規フローテーブル２５１内のフローエントリを対象とする処理と、退避フローテーブル２５２内のフローエントリを対象とする処理を、別々に（独立して）行っている場合も考えられる。
【０１１１】
また、対象フローが、正規フローテーブル２５１内のフローエントリと、退避フローテーブル２５２内のフローエントリのどちらに由来するものであるか分かっていなかったとしても、対象フローをどちらかのフローテーブルに再登録する前に、既に登録されているフローエントリを事前に削除するようにすれば、重複登録を回避することができる。例えば、フローテーブル制御部２２は、メッセージ処理部２１からフローを通知された後、対象フローをそれぞれのフローテーブルに再登録する前に、対象フローのヘッダ領域の値を基に検索キーを作成し、この検索キーを用いてそれぞれのフローテーブルを検索して、該当するフローエントリを削除しておく。或いは、フローエントリ単位ではなく、既存のフローテーブル２５（正規フローテーブル２５１及び退避フローテーブル２５２）自体を初期化・削除しておき、新規に正規フローテーブル２５１及び退避フローテーブル２５２を作成し直す。
【０１１２】
更に、対象フローが、正規フローテーブル２５１内のフローエントリと、退避フローテーブル２５２内のフローエントリのどちらに由来するものであるか関係なく（判断せず）、無条件に、登録対象のフローテーブルへのフローエントリの追加・変更処理を行い、それ以外のフローテーブルへのフローエントリの削除処理を行うようにしても良い。もし、フローエントリの削除処理を行ったフローテーブルに、該当するフローエントリが存在していなくても、フローエントリの削除処理が失敗するだけである。
【０１１３】
これにより、スイッチ２０は、構成情報２４に変更が加えられた場合、コントローラ１０から指示を受けることなく、フローテーブル２５に登録されている全てのフローエントリについて、構成情報２４に整合するフローを再確認することができる。
【０１１４】
本実施形態によれば、コントローラ１０は、スイッチ２０のフローテーブル２５に予め無効なフローを登録しておくことで、構成情報２４が変更したときに無効なフローを自動的に有効にすることができる。これにより、スイッチ２０のフローテーブル２５を冗長化することができる。
【０１１５】
＜第３実施形態＞
次に、本発明の第３実施形態について説明する。
本実施形態では、第２実施形態に示した「フローエントリの有効性の再確認処理」において、スイッチ２０の持つ構成情報２４に変更が加えられた場合に限らず、定期的に、又は新たなフローを通知された際に、フローエントリの有効性の再確認処理を行う。
【０１１６】
例えば、図８に示したステップＳ３０１のプラットフォーム機能管理部２３からの通知を受けた際ではなく、毎日、特定の時間に、又は、コントローラ１０からフロー変更（Ｆｌｏｗ  Ｍｏｄ）メッセージを受信した際に、図８に示したステップＳ３０２以降の処理を行うようにする。
【０１１７】
本実施形態によれば、構成情報２４の変更を検知しなくても、構成情報２４の変更に対応することができる。すなわち、構成情報２４の変更を即座に検知するのではなく、再確認した際に、事後的に構成情報２４の変更を認識する。
【０１１８】
＜第４実施形態＞
次に、本発明の第４実施形態について説明する。
本実施形態では、第１実施形態に示した「フローテーブルからの読み出し処理」の直後に、第２実施形態に示した「フローエントリの有効性の再確認処理」を行う。
【０１１９】
例えば、図５に示したステップＳ２１０の直後、又はステップＳ２０９とステップＳ２１０の間に、図８に示したステップＳ３０５以降の処理を行うようにする。
【０１２０】
＜第５実施形態＞
次に、本発明の第５実施形態について説明する。
本実施形態では、第１実施形態に示した「フローテーブルからの読み出し処理」において、フローテーブルからの読み出しを開始する前に、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージに含まれるフローを対象フローとして、第２実施形態に示した「フローエントリの有効性の再確認処理」を行うようにすることも考えられる。
【０１２１】
例えば、メッセージ処理部２１は、図５に示したステップＳ２０１とステップＳ２０２の間に、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージに含まれるフローを対象フローとして、フローテーブル制御部２２に通知する。その後、図８に示したステップＳ３０６以降の処理を行うようにする。
【０１２２】
この場合、フローテーブル制御部２２は、ステップＳ３０８〜ステップＳ３１１において、対象フローがどちらのフローテーブルに登録されているものか分からない。そのため、フローテーブル制御部２２は、対象フローをそれぞれのフローテーブルに再登録する前に、対象フローのヘッダ領域の値を基に検索キーを作成し、この検索キーを用いてそれぞれのフローテーブルを検索して、該当するフローエントリを削除しておく。或いは、フローテーブル制御部２２は、対象フローについて、無条件に、登録対象のフローテーブルへのフローエントリの追加・変更処理を行い、それ以外のフローテーブルへのフローエントリの削除処理を行う。
【０１２３】
＜第６実施形態＞
次に、本発明の第６実施形態について説明する。
本実施形態では、障害が起きた際に、退避テーブルのフローエントリを有効にする。
【０１２４】
例えば、メッセージ処理部２１は、障害発生時に、フローテーブル読み出し部２６に対して、退避フローテーブル２５２のフローエントリの読み出しを指示し、フローテーブル読み出し部２６から退避フローテーブル２５２のフローエントリの通知を受ける。メッセージ処理部２１は、フローテーブル制御部２２に対して、当該フローエントリに示されたフローについて、正規フローテーブル２５１へのフローエントリの追加と、退避フローテーブル２５２からのフローエントリの削除を指示する。フローテーブル制御部２２は、メッセージ処理部２１からの指示に応じて、正規フローテーブル２５１へのフローエントリの追加と、退避フローテーブル２５２からのフローエントリの削除を実行する。
【０１２５】
なお、障害発生時には、スイッチ２０の持つ構成情報２４に変更が発生する場合もあるため、第２実施形態における「フローエントリの有効性の再確認処理」で対応する事例も考えられる。
【０１２６】
＜各実施形態の関係＞
なお、上記の各実施形態は、組み合わせて実施することも可能である。
【０１２７】
＜まとめ＞
以上のように、本発明では、退避フローテーブルを用いたオープンフローシステムを提供する。
【０１２８】
本発明のオープンフローシステムにおけるスイッチは、所定の機能と整合していないフローエントリを無効エントリとして保持することを特徴としている。無効エントリを保持するフローテーブルを退避フローテーブルとする。すなわち、本発明のオープンフローシステムにおけるスイッチは、スイッチのプラットフォーム機能と整合するフローを登録した正規フローテーブルと、スイッチのプラットフォーム機能と整合しないフローを登録した退避フローテーブルを備えたことを特徴とする。これにより、コントローラ側で、どのフローエントリが無効であるかを統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージを用いて確認することができる。
【０１２９】
本発明のオープンフローシステムにおけるコントローラは、統計要求（Ｓｔａｔｉｓｔｉｃｓ  Ｒｅｑｕｅｓｔ）メッセージを送信するだけで、登録に成功したフローと失敗したフローを確認することができる。また、コントローラは、スイッチのフローテーブルに登録しようとしたフローが実際に登録できたか、無効であるため登録できなかったかを判別できるようになる。
【０１３０】
また、障害が起きた際に、退避テーブルのフローエントリを有効にするように実装することで、オープンフローシステムに冗長性を持たせることもできる。
【０１３１】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【０１３２】
（付記１）
コントローラから通知されたフローが所定の機能と整合するか確認し、当該フローが有効か無効かを判定するステップと、
有効なフローを正規フローテーブルに登録するステップと、
無効なフローを退避フローテーブルに登録するステップと、
ネットワークから受信したパケットをフローと認識し、当該フローが前記正規フローテーブルに登録されている場合、当該フローに対して指定された処理に基づいて、前記パケットを処理するステップと
をスイッチに実行させるための
フローテーブル制御用プログラム。
【０１３３】
（付記２）
付記１に記載のフローテーブル制御用プログラムであって、
前記コントローラからのフロー登録の成否の問い合わせに対して、当該フローを前記正規フローテーブル及び前記退避フローテーブルのいずれかから読み出すステップと、
前記コントローラに対して、当該フローが前記正規フローテーブル及び前記退避フローテーブルのいずれに登録されているか応答するステップと
を更にスイッチに実行させるための
フローテーブル制御用プログラム。
【０１３４】
（付記３）
付記１又は２に記載のフローテーブル制御用プログラムであって、
前記所定の機能の変更を検知するステップと、
前記所定の機能の変更に応じて、前記正規フローテーブル及び前記退避フローテーブルに登録済みのフローの各々について、各フローが前記所定の機能と整合するか確認し、各フローが有効か無効かを判定するステップと、
有効なフローを前記正規フローテーブルに登録するステップと、
有効なフローが前記退避フローテーブルに登録されている場合は前記退避フローテーブルから削除するステップと、
無効なフローを前記退避フローテーブルに登録するステップと、
無効なフローが前記正規フローテーブルに登録されている場合は前記正規フローテーブルから削除するステップと
を更にスイッチに実行させるための
フローテーブル制御用プログラム。
【０１３５】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０１３６】
＜備考＞
なお、本出願は、日本出願番号２０１０−０９５７６０に基づく優先権を主張するものであり、日本出願番号２０１０−０９５７６０における開示内容は引用により本出願に組み込まれる。
【図１】
2011132568.tif 000003
【図２】
2011132568.tif 000004
【図３】
2011132568.tif 000005
【図４】
2011132568.tif 000006
【図５】
2011132568.tif 000007
【図６】
2011132568.tif 000008
【図７】
2011132568.tif 000009
【図８】
2011132568.tif 000010
【国際調査報告】
2011132568.tif 000011
2011132568.tif 000012
2011132568.tif 000013