(57)【要約】  オープンフローに代表される制御機能を外部のコントローラに分離したネットワーク機器で構成されるネットワークにおいて、コントローラを多重化／冗長化した際の不採用経路の削除を実現する。具体的には、ネットワーク機器は、複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定する。このとき、該複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、該採用された経路のフローエントリに従って、パケットを転送する。
2012121114.tif 000002
【特許請求の範囲】
【請求項１】
複数のネットワーク機器と、
パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリを、前記経路上のネットワーク機器のフローテーブルに設定する複数のコントローラと
を含み、
前記経路上のネットワーク機器は、前記複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、前記採用された経路のフローエントリに従って、パケットを転送する
ネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記複数のコントローラの各々は、前記経路上のネットワーク機器全ての設定を完了させた際に、前記パケットの問い合わせを行ったネットワーク機器に対して、設定完了通知を送信し、
前記パケットの問い合わせを行ったネットワーク機器は、前記設定完了通知に応じて、前記不採用とした経路のフローエントリと適合する経路削除パケットを作成し、前記不採用とした経路のフローエントリに従って、前記経路削除パケットを、前記不採用とした経路上の隣接するネットワーク機器に転送し、前記不採用とした経路のフローエントリを削除し、
前記経路上のネットワーク機器は、前記経路削除パケットを受信すると、前記経路削除パケットと適合するフローエントリの有無を確認し、適合するフローエントリがある場合、該フローエントリに従って、前記経路削除パケットを、前記不採用とした経路上の隣接するネットワーク機器に転送し、該フローエントリを削除する
ネットワークシステム。
【請求項３】
請求項２に記載のネットワークシステムであって、
前記経路上のネットワーク機器は、前記経路削除パケットと適合するフローエントリの内容を確認し、確認の結果、隣接する送信先ホストに転送する内容であれば、該フローエントリを削除し、前記経路削除パケットを破棄する
ネットワークシステム。
【請求項４】
請求項３に記載のネットワークシステムであって、
前記経路上のネットワーク機器は、前記経路削除パケットと適合するフローエントリがない場合、前記経路削除パケットを一時的に保持し、前記複数のコントローラのいずれかからフローエントリに設定が行われた際、該フローエントリが前記経路削除パケットと適合すれば、該フローエントリの設定を破棄し、保持してから所定の時間の経過後に、前記経路削除パケットを破棄する
ネットワークシステム。
【請求項５】
複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定する手段と、
前記複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、前記採用された経路のフローエントリに従って、パケットを転送する手段と
を具備する
ネットワーク機器。
【請求項６】
請求項５に記載のネットワーク機器であって、
前記複数のコントローラの各々から、前記経路上のネットワーク機器全ての設定を完了させた旨の設定完了通知を受信する手段と、
前記設定完了通知に応じて、前記不採用とした経路のフローエントリと適合する経路削除パケットを作成する手段と、
外部から前記経路削除パケットを受信した場合、前記経路削除パケットと適合するフローエントリの有無を確認する手段と、
前記不採用とした経路のフローエントリに従って、前記経路削除パケットを、前記不採用とした経路上の隣接するネットワーク機器に転送する手段と、
前記不採用とした経路のフローエントリを削除する手段と
を更に具備する
ネットワーク機器。
【請求項７】
請求項６に記載のネットワーク機器であって、
前記経路削除パケットと適合するフローエントリの内容を確認する手段と、
確認の結果、隣接する送信先ホストに転送する内容であれば、該フローエントリを削除し、前記経路削除パケットを破棄する手段と
を更に具備する
ネットワーク機器。
【請求項８】
請求項７に記載のネットワーク機器であって、
前記経路削除パケットと適合するフローエントリがない場合、前記経路削除パケットを一時的に保持する手段と
前記複数のコントローラのいずれかからフローエントリに設定が行われた際、該フローエントリが前記経路削除パケットと適合すれば、該フローエントリの設定を破棄する手段と、
保持してから所定の時間の経過後に、前記経路削除パケットを破棄する手段と
を更に具備する
ネットワーク機器。
【請求項９】
ネットワーク機器により実施される経路制御方法であって、
複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定することと、
前記複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、前記採用された経路のフローエントリに従って、パケットを転送することと
を含む
経路制御方法。
【請求項１０】
複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定するステップと、
前記複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、前記採用された経路のフローエントリに従って、パケットを転送するステップと
をネットワーク機器に実行させるためのプログラムを格納した
記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムに関し、特にネットワーク通信の経路制御を行うコントローラに関する。
【背景技術】
【０００２】
ネットワークシステムの制御方式の１つとして、外部の制御装置（コントロールプレーン）からノード装置（ユーザプレーン）を制御するＣＵ（Ｃ：コントロールプレーン／Ｕ：ユーザプレーン）分離型ネットワークシステムが提案されている。【０００３】
ＣＵ分離型ネットワークシステムの一例として、コントローラからスイッチを制御してネットワークの経路制御を行うオープンフロー（ＯｐｅｎＦｌｏｗ）技術を利用したオープンフローネットワークシステムが挙げられる。オープンフロー技術の詳細については、非特許文献１に記載されている。なお、オープンフローネットワークシステムは一例に過ぎない。【０００４】
［オープンフローネットワークシステムの説明］
オープンフローネットワークシステムでは、ＯＦＣ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）等のコントローラが、ＯＦＳ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）等のスイッチ内のフローテーブル（Ｆｌｏｗ  ｔａｂｌｅ）を操作することによりスイッチの挙動を制御する。【０００５】
オープンフローネットワークシステムにおけるスイッチとは、オープンフローネットワークを形成し、コントローラの制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入力側エッジスイッチでのパケット（ｐａｃｋｅｔ）の受信から出力側エッジスイッチでの送信までのパケットの一連の流れをフロー（Ｆｌｏｗ）と呼ぶ。【０００６】
パケットは、フレーム（ｆｒａｍｅ）と読み替えても良い。パケットとフレームの違いは、プロトコルが扱うデータの単位（ＰＤＵ：Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）の違いに過ぎない。パケットは、「ＴＣＰ／ＩＰ」（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）のＰＤＵである。一方、フレームは、「Ｅｔｈｅｒｎｅｔ」（登録商標）のＰＤＵである。【０００７】
フローテーブルとは、所定のマッチ条件（ルール）に適合するパケット（ｐａｃｋｅｔ）に対して行うべき動作（アクション）を定義したフローエントリ（Ｆｌｏｗ  ｅｎｔｒｙ）が登録されたテーブルである。【０００８】
フローエントリのルールは、パケットの各プロトコル階層のヘッダ領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローエントリのルールとして使用可能である。また、フローエントリのルールとして、フローを示すパケットのヘッダ領域の値の一部（又は全部）を、正規表現やワイルドカード「＊」等で表現したものを設定することもできる。【０００９】
フローエントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった動作を示す。例えば、スイッチは、フローエントリのアクションに出力ポートの識別情報（出力ポート番号等）が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチは、フローエントリのアクションにヘッダ情報が示されていれば、当該ヘッダ情報に基づいてパケットのヘッダを書き換える。【００１０】
オープンフローネットワークシステムにおけるスイッチは、フローエントリのルールに適合するパケット群（パケット系列）に対して、フローエントリのアクションを実行する。【００１１】
オープンフローネットワークシステムのような、「パケット転送の機能」と「経路制御の機能」をネットワーク機器とコントローラとに分離したネットワークにおいて、パケットの経路を計算し設定を行うコントローラに障害が発生した場合、パケットの転送処理を行うネットワーク機器は、パケットを転送することができなくなる。或いは、他のコントローラに再度、経路計算を依頼しなければならなくなるため、処理速度が非常に遅くなる。【００１２】
このため、制御機能を担当するコントローラの耐障害性を考慮すると、コントローラの多重化が考えられる。【００１３】
また、耐障害性や処理速度の観点から、複数のコントローラが同期を取ることなく独立してパケットの経路計算とネットワーク機器への設定を行うことが考えられる。【００１４】
しかし、可用性と処理速度の観点から、複数のコントローラが同期を取ることなく独立して経路を計算し、ネットワーク機器に設定を行う場合、同期を取らないためにネットワーク機器への設定指示が競合することによって、ネットワーク機器の設定情報に不整合が生じる可能性がある。その結果、ネットワーク上に閉路（ループ）が形成され、送信先にパケットが届かなくなる可能性がある。【００１５】
関連する技術として、特許文献１（特開２００６−０２００５４号公報）にネットワーク接続装置、経路情報配布プログラム及び経路情報配布方法が開示されている。この関連技術では、子ルータに割り当てられたプレフィックスと割り当て先の子ルータの情報と割り当て管理表とに基づいて経路情報更新通知メッセージを生成する。このメッセージは経路情報の更新（追加、削除）可能性を伝えるものである。既にプレフィックスを割り当て済のルータに対して、経路情報更新通知を送信する。【００１６】
また、特許文献２（特開２００７−０９６９１２号公報）にネットワーク中継器が開示されている。この関連技術では、ネットワークプロセッサ（ＮＰ）より経路情報変更パケットを受け取り、そのイベントを解釈する。イベントの解釈は該経路情報変更パケットのヘッダ情報等により行う。イベント情報が追加であった場合には、経路情報追加処理を実施し、変更であった場合には、経路情報変更処理を、削除であった場合には、経路情報削除処理をそれぞれ実施する。ネットワークプロセッサ（ＮＰ）からの経路情報変更パケット全てについて処理が終わったら、ネットワークプロセッサ（ＮＰ）へのリクエスト送出処理を起動するためのタイマーをセットする。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００６−０２００５４号公報
【特許文献２】特開２００７−０９６９１２号公報
【非特許文献】
【００１８】
【非特許文献１】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｖｅｒｓｉｏｎ  １．０．０”，［ｏｎｌｉｎｅ］，Ｄｅｃｅｍｂｅｒ  ３１，２００９，インターネット（ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．０．０．ｐｄｆ）
【発明の概要】
【００１９】
上記の問題を解決するために、複数のコントローラ間で同期を取ることなく独立して経路を計算し、ネットワーク機器に設定を行う場合において、パケットが送信元から送信先へ転送されることを保証する手法が求められている。
【００２０】
このような手法の１つとして、ネットワーク機器がパケットに情報を付加し、経路上のネットワーク機器がその情報を読み取ることで、正しい経路にパケットを転送する手法が考えられる。
【００２１】
しかし、ネットワーク機器がパケットの情報を変更する場合、パケットへの処理のオーバヘッドや、情報付加による転送処理のオーバヘッドの問題が発生する可能性もある。
【００２２】
そこで、本発明では、パケットが送信元から送信先へ転送されることを保証しつつ、ネットワーク機器がパケット自体に対する変更を行わない手法を提案する。
【００２３】
本発明に係るネットワークシステムは、複数のネットワーク機器と、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリを、経路上のネットワーク機器のフローテーブルに設定する複数のコントローラとを含む。該経路上のネットワーク機器は、該複数のコントローラの中で最も早く該経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、該採用された経路のフローエントリに従って、パケットを転送する。
【００２４】
本発明に係るネットワーク機器は、複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定する装置と、該複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、該採用された経路のフローエントリに従って、パケットを転送する装置とを具備する。
【００２５】
本発明に係る経路制御方法は、ネットワーク機器により実施される経路制御方法であって、複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定することと、該複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、該採用された経路のフローエントリに従って、パケットを転送することとを含む。
【００２６】
本発明に係るプログラムは、複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定するステップと、該複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、該採用された経路のフローエントリに従って、パケットを転送するステップとをネットワーク機器に実行させるためのプログラムである。
【００２７】
すなわち、本発明に係るプログラムは、上記の経路制御方法における処理を、ネットワーク機器に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００２８】
コントローラを多重化／冗長化した際の不採用経路の削除が可能になる。
【図面の簡単な説明】
【００２９】
【図１】本発明に係るネットワークシステムの構成例を示す図である。
【図２】該ネットワークシステムにおけるコントローラの構成例を示す図である。
【図３】該ネットワークシステムにおけるスイッチの構成例を示す図である。
【図４】該ネットワークシステムにおけるフローエントリの構成例を示す図である。
【図５】該ネットワークシステムにおける経路削除パケットの構成例を示す図である。
【図６】１ｓｔパケット受信時の動作を説明するための図である。
【図７】複数のコントローラが設定した経路について説明するための図である。
【図８】採用された経路の順について説明するための図である。
【図９】不採用経路に経路削除パケットが流れる状況について説明するための図である。
【図１０】不採用経路の削除処理全体の手順を説明するための図である。
【図１１】不採用経路の設定前に、不採用経路の削除処理が開始された場合について説明するための図である。
【図１２】本発明の実施例を説明するための図である。
【発明を実施するための形態】
【００３０】
本発明は、ＣＵ分離型ネットワークシステムを対象としている。ここでは、ＣＵ分離型ネットワークシステムの１つであるオープンフローネットワークシステムを例に説明する。但し、実際には、オープンフローネットワークシステムに限定されない。
【００３１】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００３２】
［システム構成］
図１を参照して、本発明に係るネットワークシステムの構成例について説明する。
【００３３】
本発明に係るネットワークシステムは、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ：ｘは台数）と、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ：ｙは台数）と、ホスト３０（３０−ｋ、ｋ＝１〜ｚ：ｚは台数）を含む。
【００３４】
コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）の各々は、ネットワーク機器におけるパケットの転送経路等を制御する制御装置である。
【００３５】
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の各々は、パケットを転送するネットワーク機器である。
【００３６】
ホスト３０（３０−ｋ、ｋ＝１〜ｚ）の各々は、パケットを送受信する端末である。
【００３７】
［ハードウェアの例示］
以下に、本発明に係るネットワークシステムを実現するための具体的なハードウェアの例について説明する。
【００３８】
コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。
【００３９】
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）を想定している。他にも、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール、ロードバランサ、帯域制御装置、セキュリティ監視制御装置、基地局、アクセスポイント、或いは、複数の通信ポートを有する計算機等が考えられる。
【００４０】
ホスト３０（３０−ｋ、ｋ＝１〜ｚ）の例として、上記の計算機を想定している。他にも、携帯電話機、カーナビ（カーナビゲーションシステム）、携帯型ゲーム機、家庭用ゲーム機、携帯型音楽プレーヤー、ハンディターミナル、ガジェット（電子機器）、双方向テレビ、デジタルチューナー、デジタルレコーダー、情報家電（ｉｎｆｏｒｍａｔｉｏｎ  ｈｏｍｅ  ａｐｐｌｉａｎｃｅ）、ＯＡ（Ｏｆｆｉｃｅ  Ａｕｔｏｍａｔｉｏｎ）機器等が考えられる。ホスト３０（３０−ｋ、ｋ＝１〜ｚ）は、車両や船舶、航空機等の移動体に搭載されていても良い。
【００４１】
なお、ホスト３０（３０−ｋ、ｋ＝１〜ｚ）は、オープンフロー非対応のネットワークにおけるスイッチ等の中継装置でも良い。すなわち、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）により形成されるネットワークが、オープンフロー対応のネットワーク（オープンフローネットワークシステム）であれば良い。ホスト３０（３０−ｋ、ｋ＝１〜ｚ）のいずれかに接続されるスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、オープンフローネットワークシステムにおけるエッジスイッチに相当するため、配下の装置が端末でも外部ネットワークの中継装置でも同様に処理できる。
【００４２】
また、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）、及びホスト３０（３０−ｋ、ｋ＝１〜ｚ）は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＶＭ））でも良い。
【００４３】
図示しないが、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）、及びホスト３０（３０−ｋ、ｋ＝１〜ｚ）は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインタフェースによって実現される。
【００４４】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ（ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ）、或いは、専用の機能を有する半導体集積回路（ＬＳＩ：Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等が考えられる。
【００４５】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、レジスタ（ｒｅｇｉｓｔｅｒ）でも良い。
【００４６】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。従って、上記の計算機等に搭載される１チップマイコンが、プロセッサ及びメモリを備えている事例が考えられる。
【００４７】
上記のインタフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００４８】
また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【００４９】
但し、実際には、これらの例に限定されない。
【００５０】
［コントローラの詳細］
図２を参照して、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）の構成例について説明する。
【００５１】
コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）の各々は、経路計算部１１と、ネットワーク管理部１２と、パケット処理部１３を備える。
【００５２】
経路計算部１１は、ネットワーク管理部１２からスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）のトポロジー情報を受け取り、パケットの経路を計算し、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）に設定を行う。
【００５３】
ネットワーク管理部１２は、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）のトポロジー情報や、経路計算部１１で計算した経路の管理を行う。ここでは、ネットワーク管理部１２は、トポロジー情報や計算した経路を基に、オープンフロープロトコルに準拠した制御メッセージにより、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の挙動を制御する。
【００５４】
パケット処理部１３は、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）から転送されたパケットの受信、パケットの情報解析、経路計算部１１へ解析結果の送信を行う。
【００５５】
なお、経路計算部１１、ネットワーク管理部１２、及びパケット処理部１３は、モジュール（ｍｏｄｕｌｅ）又はコンポーネント（ｃｏｍｐｏｎｅｎｔ）でも良い。
【００５６】
コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）は、複数のスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）をネットワーク管理部１２によって管理することができ、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）と専用線、若しくは通常のネットワークのセキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）で接続されている。
【００５７】
［スイッチの詳細］
図３を参照して、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の構成例について説明する。
【００５８】
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の各々は、フローテーブル２１と、フローテーブル管理部２２と、パケット処理部２３を備える。
【００５９】
フローテーブル２１は、経路情報となるフローエントリを管理する。フローテーブル２１は、記憶装置や記憶媒体に格納することができる。
【００６０】
フローテーブル管理部２２は、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）からの制御メッセージに応じて、フローテーブル２１のフローエントリを追加・更新・削除する。フローテーブル管理部２２は、フローテーブル２１のフローエントリの内容を確認することもできる。
【００６１】
パケット処理部２３は、パケットを処理する。すなわち、パケット処理部２３は、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）内部において、パケットに関する処理全般を行う。
【００６２】
パケット処理部２３は、パケット受信部２３１と、パケット転送部２３２と、パケット破棄部２３３と、経路削除パケット生成部２３４と、経路削除パケット解析部２３５を備える。
【００６３】
パケット受信部２３１は、パケットを受信し解析する。パケット受信部２３１は、パケット解析として、パケットのヘッダ情報を参照し、フローテーブル２１に該パケットのヘッダ情報と適合するフローエントリがあるか否かを確認する。適合するフローエントリがある場合、該フローエントリの内容が経路上の次段のノードに転送する旨であれば、パケット受信部２３１は、パケット転送部２３２にパケットを渡し、経路上の次段のノードに転送する。また、該フローエントリの内容がパケットを破棄（廃棄）する旨であれば、パケット受信部２３１は、パケット破棄部２３３にパケットを渡し、パケットを破棄する。更に、適合するフローエントリがない場合、パケット受信部２３１は、パケット転送部２３２にパケットを渡し、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）に該パケットの経路を問い合わせる。
【００６４】
パケット転送部２３２は、該スイッチに隣接する他のスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）、ホスト３０（３０−ｋ、ｋ＝１〜ｚ）等にパケットを転送する。パケット転送部２３２は、出力ポート毎に設けられ、受け取ったパケットを該出力ポートから出力する。
【００６５】
パケット破棄部２３３は、受け取ったパケットを破棄する。なお、パケット破棄部２３３は、通常パケットのみならず、後述する経路削除パケットも破棄することができる。
【００６６】
経路削除パケット生成部２３４は、不採用経路を削除するための経路削除パケットを生成する。
【００６７】
経路削除パケット解析部２３５は、受信した経路削除パケットを解析する。経路削除パケット解析部２３５は、パケット解析として、経路削除パケットのヘッダ情報を参照し、フローテーブル２１に経路削除パケットのヘッダ情報と適合する不採用経路のフローエントリがあるか否かを確認する。適合するフローエントリがある場合、該フローエントリの内容が経路上の次段のノードに転送する旨であれば、パケット受信部２３１は、パケット転送部２３２に経路削除パケットを渡し、経路上の次段のノードに転送する。また、該フローエントリの内容が経路削除パケットを破棄する旨であれば、パケット受信部２３１は、パケット破棄部２３３に経路削除パケットを渡し、経路削除パケットを破棄する。更に、適合するフローエントリがない場合、経路削除パケット解析部２３５は、経路削除パケットを一時的に保持し、所定の時間の経過後に、パケット破棄部２３３に経路削除パケットを渡し、経路削除パケットを破棄する。経路削除パケット解析部２３５は、パケット受信部２３１と一体化していても良い。
【００６８】
なお、フローテーブル管理部２２や、パケット処理部２３（パケット受信部２３１、パケット転送部２３２、パケット破棄部２３３、経路削除パケット生成部２３４、及び経路削除パケット解析部２３５）は、モジュール（ｍｏｄｕｌｅ）又はコンポーネント（ｃｏｍｐｏｎｅｎｔ）でも良い。
【００６９】
［フローテーブルの詳細］
フローテーブル２１は、フローエントリ２１１を保持する。すなわち、フローテーブル２１は、フローエントリ２１１の集合である。フローエントリ２１１は、各フローに対応する経路情報である。
【００７０】
［フローエントリの詳細］
図４を参照して、フローエントリ２１１の構成例について説明する。
【００７１】
フローエントリ２１１は、フローヘッダ（Ｆｌｏｗ  ｈｅａｄｅｒ）２１１１と、アクション（Ａｃｔｉｏｎ）２１１２と、経路ＩＤ２１１３と、コントローラＩＤ２１１４を含む。
【００７２】
フローヘッダ２１１１は、送信元ＩＰアドレスや送信先ＩＰアドレス等のフローの基本情報を記述するための領域（フィールド）である。すなわち、フローヘッダ２１１１は、フローエントリ２１１のルールを記述するための領域である。
【００７３】
アクション２１１２は、フローの処理方法を記述するための領域である。すなわち、アクション２１１２は、フローエントリ２１１のアクションを記述するための領域である。
【００７４】
経路ＩＤ２１１３は、経路毎に一意な値（経路の識別子）を記述するための領域である。
【００７５】
コントローラＩＤ２１１４は、フローエントリ２１１を設定したコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）の識別子を記述するための領域である。
【００７６】
［経路削除パケットの詳細］
図５を参照して、本発明で定義する経路削除パケットについて説明する。
【００７７】
経路削除パケット５０は、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）のフローテーブル２１を構成するフロー毎のフローエントリ２１１を削除するための制御メッセージのパケットである。
【００７８】
経路削除パケット５０は、フローヘッダ５１と、経路ＩＤ５２と、コントローラＩＤ５３を含む。
【００７９】
フローヘッダ５１は、図４に示したフローヘッダ２１１１と同様、送信元ＩＰアドレスや送信先ＩＰアドレス等のフローの基本情報を記述するための領域である。
【００８０】
経路ＩＤ５２は、図４に示した経路ＩＤ２１１３と同様、経路毎に一意な値（経路の識別子）を記述するための領域である。
【００８１】
コントローラＩＤ５３は、図４に示したコントローラＩＤ２１１４と同様、フローエントリ２１１を設定したコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）の識別子を記述するための領域である。
【００８２】
［本発明における経路制御処理］
図６を参照して、図１のような構成で、以下の（１）から（６）の順に、１ｓｔパケット（Ｆｉｒｓｔ  Ｐａｃｋｅｔ）受信時の動作について説明する。
【００８３】
（１）ステップＳ１
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、フローテーブル２１に情報のないパケット（１ｓｔパケット）が届いた場合、複数のコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）に１ｓｔパケットを転送する。すなわち、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、受信パケットのヘッダ情報と適合するフローテーブル２１のフローエントリ２１１がない場合、該パケットを１ｓｔパケットと判断して、複数のコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）に該１ｓｔパケットを転送する。
【００８４】
（２）ステップＳ２
コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）は、１ｓｔパケットを受け取った場合、経路を計算し、経路上のスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）に設定する。
【００８５】
（３）ステップＳ３
コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）は、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の設定を終えた場合、１ｓｔパケットの送信元であるスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）に応答する。
【００８６】
（４）ステップＳ４
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、最も早く応答したコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）ではないコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）に不採用通知を出す。
【００８７】
（５）ステップＳ５
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、不採用となったコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）の設定したフローエントリ２１１の削除処理を行う。
【００８８】
（６）ステップＳ６
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、採用された経路のフローエントリ２１１に従って、パケットを処理する。
【００８９】
［ステップＳ１の詳細］
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、フローテーブル２１に情報のないパケット（１ｓｔパケット）が届いた場合、複数のコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）に１ｓｔパケットを転送する。
【００９０】
例えば、スイッチ２０−１がホスト３０−１からパケットを受け取るとき、パケット処理部２３は、通常パケットか経路削除パケット５０かの判定を行う。
【００９１】
パケットが通常パケットであるとき、パケット処理部２３は、そのパケットのヘッダ情報が、フローテーブル２１に設定されているフローエントリ２１１のフローヘッダ２１１１と適合するか確認する。
【００９２】
適合する場合、パケット処理部２３は、該当フローエントリ２１１のアクション２１１２に従ってパケットの処理を行う。
【００９３】
適合しなかった場合、パケット処理部２３は、そのパケット（１ｓｔパケット）をスイッチ２０−１の管理を行うコントローラ１０−１とコントローラ１０−２に転送する。
【００９４】
［ステップＳ２の詳細］
コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）は、１ｓｔパケットを受け取った場合、経路を計算し、経路上のスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）に設定する。
【００９５】
コントローラ１０−１とコントローラ１０−２のそれぞれにおいて、パケット処理部１３が１ｓｔパケットを受け取った際、経路計算部１１は、ネットワーク管理部１２のトポロジー情報と、パケット処理部１３の解析結果を基に、そのパケット（１ｓｔパケット）が通るべき経路を計算する。
【００９６】
ここで、図７のように、コントローラ１０−１が計算した経路を経路１００−１、コントローラ１０−２が計算した経路を経路１００−２とする。
【００９７】
経路１００−１は、「スイッチ２０−１」→「スイッチ２０−４」→「スイッチ２０−５」→「スイッチ２０−６」→「スイッチ２０−７」→「スイッチ２０−８」の順となる。
【００９８】
経路１００−２は、「スイッチ２０−１」→「スイッチ２０−２」→「スイッチ２０−４」→「スイッチ２０−５」→「スイッチ２０−７」→「スイッチ２０−６」→「スイッチ２０−８」の順となる。
【００９９】
経路の計算終了後、コントローラ１０−１とコントローラ１０−２のそれぞれにおいて、ネットワーク管理部１２は、計算して得られた経路に基づくフローエントリ２１１を、経路上の各スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）に設定する。
【０１００】
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）へのフローエントリ２１１の設定については、経路上の送信元ホスト３０−１に最も近いスイッチ２０−１から順に行う。
【０１０１】
例えば、経路１００−１の場合、コントローラ１０−１は、図８の（１）から（６）の順に、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の設定を行う。この順序は、通常のオープンフローの設定順序とは異なる。
【０１０２】
経路上の送信元ホスト３０−１に近いスイッチ２０−１から順に設定を行う場合、スイッチ２０−１は、設定された瞬間にフローエントリ２１１が有効となり、そのフローエントリ２１１のアクション２１１２に従って受信パケットを処理してしまうことになる。そのため、例えば、経路上の転送先であるスイッチ２０−４の設定が終了する前に、スイッチ２０−４がスイッチ２０−１からパケットを受信した場合、スイッチ２０−４は、該パケットを１ｓｔパケットとして、再度コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）に転送してしまう可能性がある。
【０１０３】
従って、オープンフローにおいては経路上の送信先ホスト３０−２に近いスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）から順に設定を行う。
【０１０４】
本発明では、経路上の送信元ホスト３０−１に最も近いスイッチ２０−１の設定のみ仮設定（仮登録）とすることで、全てのスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の設定が終了する前にパケットがフローエントリ２１１に従ってされることを防ぐ。
【０１０５】
すなわち、経路上の全てのスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の設定が完了しない限り、パケットが送信元ホスト３０−１から送信先ホスト３０−２に転送されることはない。
【０１０６】
経路１００−１の場合、コントローラ１０−１は、経路１００−１上の送信元ホスト３０−１に最も近いスイッチ２０−１にフローエントリ２１１を仮設定した後、以降のスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は仮設定することなくフローテーブル２１にフローエントリ２１１を設定する。
【０１０７】
例えば、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）が保持するフローテーブル２１とは別に、仮のフローエントリ２１１を保持することのできる記憶領域を持つことで、そこに仮設定するフローエントリ２１１を保持しても良い。別の方法では、フローエントリ２１１に仮設定なのか、本登録なのかを判断できる領域を持つことでも実現可能である。
【０１０８】
［ステップＳ３の詳細］
コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）は、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の設定を終えた場合、１ｓｔパケットの送信元であるスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）に応答する。
【０１０９】
コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）は、経路上の全てのスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の設定が完了すると、スイッチ２０−１に応答として設定完了通知を送信する。
【０１１０】
このとき、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）は、スイッチ２０−１に仮設定したフローエントリ２１１をフローテーブル２１に登録する。
【０１１１】
スイッチ２０−１は、最も早く応答したコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）が設定した経路を、パケットが通る経路として採用する。
【０１１２】
仮に、コントローラ１０−１、コントローラ１０−２が同時に応答した場合、スイッチ２０−１は、採用された経路が１つとなるようにどちらかを選択する。
【０１１３】
［ステップＳ４の詳細］
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、最も早く応答したコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）ではないコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）に不採用通知を出す。
【０１１４】
採用された経路は、コントローラ１０−１が設定した経路１００−１であると仮定する。
【０１１５】
コントローラ１０−１が最も早く応答したため、スイッチ２０−１は、不採用となったコントローラ１０−２に経路不採用を通知する。
【０１１６】
これは、不採用が決まった時点で設定途中のコントローラ１０−２に経路の設定を中止させるために行う。
【０１１７】
そのため、コントローラ１０−２は、スイッチ２０−１から不採用通知を受け取ると、コントローラ１０−２による経路上の全てのスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の設定が完了していなくとも、残りの設定を行わない。
【０１１８】
［ステップＳ５の詳細］
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、不採用となったコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）の設定したフローエントリ２１１の削除処理を行う。
【０１１９】
ここでは、スイッチ２０−１は、コントローラ１０−２の設定した不採用経路１００−２のフローエントリ２１１の削除を行う。
【０１２０】
不採用経路１００−２の削除には、経路削除パケット５０を用いて行う。スイッチ２０−１は、不採用経路１００−２上のスイッチに向けて、経路削除パケット５０を送信する。
【０１２１】
図９に示すように、不採用経路１００−２に、経路削除パケット５０が流れる。
【０１２２】
［不採用経路の削除処理］
図１０を参照して、不採用経路の削除処理全体の手順について説明する。
【０１２３】
（１）ステップＳ５０１
スイッチ２０−１において、パケット処理部２３は、経路削除パケット５０に、コントローラ１０−２の設定した不採用経路１００−２の情報を設定する。ここでは、パケット処理部２３は、不採用経路１００−２のフローエントリ２１１のフローヘッダ２１１１、経路ＩＤ２１１３、及びコントローラ１０−２を示すコントローラＩＤ２１１４を基に、経路削除パケット５０を作成する。すなわち、経路削除パケット５０のフローヘッダ５１、経路ＩＤ５２、及びコントローラＩＤ５３は、それぞれ上記の不採用経路１００−２のフローヘッダ２１１１、経路ＩＤ２１１３、及びコントローラＩＤ２１１４と等しい。
【０１２４】
（２）ステップＳ５０２
スイッチ２０−１において、パケット処理部２３は、不採用経路１００−２のフローエントリ２１１のアクション２１１２の内容が送信先ホスト３０−２に転送する内容か確認する。すなわち、経路の末端のスイッチであるか確認する。
【０１２５】
（３）ステップＳ５０３
スイッチ２０−１において、パケット処理部２３は、フローエントリ２１１のアクション２１１２の内容が送信先ホスト３０−２に転送する内容ではない場合、フローエントリ２１１のアクション２１１２に従って経路削除パケット５０を処理する。ここでは、スイッチ２０−１において、パケット処理部２３は、フローエントリ２１１のアクション２１１２に従って、経路削除パケット５０を、次段のスイッチ２０−２に転送する。
【０１２６】
（４）ステップＳ５０４
不採用経路上にある各スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）において、フローテーブル管理部２２は、経路削除パケット５０を次段のスイッチ２０（２０−ｊ、ｊ＝２〜ｙ）に転送した後、仮設定又は正式に設定されている不採用経路１００−２のフローエントリ２１１を削除する。
【０１２７】
（５）ステップＳ５０５
不採用経路上にある各スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）において、パケット処理部２３は、経路削除パケット５０を受信した際、経路削除パケット５０のフローヘッダ５１、経路ＩＤ５２、及びコントローラＩＤ５３を基に、フローテーブル２１に登録されているフローエントリ２１１の中に、経路削除パケット５０のフローヘッダ５１、経路ＩＤ５２、コントローラＩＤ５３と適合するフローエントリ２１１があるか確認する。
【０１２８】
（６）ステップＳ５０６
不採用経路上にある各スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）において、パケット処理部２３は、経路削除パケット５０のフローヘッダ５１、経路ＩＤ５２、コントローラＩＤ５３と適合するフローエントリ２１１がある場合、該フローエントリ２１１のアクション２１１２の内容が送信先ホスト３０−２に転送する内容か確認する。すなわち、経路の末端のスイッチであるか確認する。
【０１２９】
（７）ステップＳ５０７
不採用経路上にある各スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）において、パケット処理部２３は、フローエントリ２１１のアクション２１１２の内容が送信先ホスト３０−２に転送する内容ではない場合、フローエントリ２１１のアクション２１１２に従って経路削除パケット５０を処理する。ここでは、各スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）において、パケット処理部２３は、フローエントリ２１１のアクション２１１２に従って、経路削除パケット５０を、次段のスイッチ２０（２０−ｊ、ｊ＝２〜ｙ）に転送する。
【０１３０】
（８）ステップＳ５０８
不採用経路上にある各スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）において、フローテーブル管理部２２は、経路削除パケット５０を次段のスイッチ２０（２０−ｊ、ｊ＝２〜ｙ）に転送した後、仮設定又は正式に設定されている不採用経路１００−２のフローエントリ２１１を削除する。
【０１３１】
（９）ステップＳ５０９
不採用経路上にある各スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）において、パケット処理部２３は、フローエントリ２１１のアクション２１１２の内容が送信先ホスト３０−２に転送する内容である場合、すなわち、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）が経路の最後のスイッチ２０−８の場合、転送処理を行わず、経路削除パケット５０のフローヘッダ５１、経路ＩＤ５２、コントローラＩＤ５３と適合するフローエントリ２１１を削除し、経路削除パケット５０を破棄する。なお、１ｓｔパケットを受信したスイッチ２０−１が経路の最後のスイッチである場合、スイッチ２０−１は、経路削除パケット５０を生成せずに、不採用経路のフローエントリ２１１を削除しても良い。例えば、不採用経路がスイッチ２０−１の配下のホスト間の通信経路である場合や、スイッチ２０−１の配下のホスト３０（３０−ｋ、ｋ＝１〜ｚ）の各々が、オープンフロー非対応のネットワークにおけるルータ等の中継装置である場合が考えられる。
【０１３２】
（１０）ステップＳ５１０
また、不採用経路上にあるスイッチ２０（２０−ｊ、ｊ＝２〜ｙ）は、フローテーブル２１に登録されているフローエントリ２１１の中に、経路削除パケット５０のフローヘッダ５１、経路ＩＤ５２、コントローラＩＤ５３と適合するフローエントリ２１１がない場合、受信した経路削除パケット５０を一時的に保持する。
【０１３３】
（１１）ステップＳ５１１
スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）は、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）からフローエントリ２１１の追加設定があるか確認する。
【０１３４】
（１２）ステップＳ５１２
スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）は、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）からフローエントリ２１１の追加設定がある場合、追加設定されたフローエントリ２１１のフローヘッダ２１１１、経路ＩＤ２１１３、及びコントローラＩＤ２１１４が、一時的に保持されている経路削除パケット５０のフローヘッダ５１、経路ＩＤ５２、及びコントローラＩＤ５３と適合するか確認する。
【０１３５】
（１３）ステップＳ５１３
フローエントリ２１１と経路削除パケット５０が適合する場合、スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）は、そのフローエントリ２１１の登録を破棄する。
【０１３６】
（１４）ステップＳ５１４
スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）は、経路削除パケット５０を一時的に保持してから所定の時間が経過したか確認する。
【０１３７】
（１５）ステップＳ５１５
スイッチ２０（２０−ｊ、ｊ＝２〜ｙ）は、経路削除パケット５０を一時的に保持してから所定の時間が経過した場合、保持している経路削除パケット５０を破棄する。
【０１３８】
［ステップＳ５１０以降の詳細］
例えば、図１１のように、経路１００−２が不採用となったコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）がスイッチ２０−５までしか設定を完了させることができなかった状態で、経路の削除処理が始まってしまった場合等が考えられる。
【０１３９】
この場合、スイッチ２０−７は、不採用となった経路１００−２のフローエントリ２１１が設定されていないため、経路削除パケット５０を処理できない。
【０１４０】
このとき、スイッチ２０−７は、受信した経路削除パケット５０を一時的に保持する。
【０１４１】
経路削除パケット５０を一時的に保持する理由は、フローエントリ２１１の登録処理が遅れて行われる可能性があるからである。
【０１４２】
不採用経路の削除処理が始まった時点で、経路が不採用となったコントローラ１０−２は、不採用通知を受け取っているため、スイッチ２０−５より先にある不採用経路の残りのスイッチ（「スイッチ２０−７」→「スイッチ２０−６」→「スイッチ２０−８」）に対してはフローエントリ２１１の設定を行わない。
【０１４３】
しかし、ネットワークの遅延等の理由から、不採用経路の削除処理後にフローエントリ２１１が設定される可能性もあるので、スイッチ２０−７は、経路が不採用となったコントローラ１０−２が遅れてフローエントリ２１１を設定してきた場合のために、スイッチ２０−５から受信した経路削除パケット５０を保持しておく。
【０１４４】
コントローラ１０−２からフローエントリ２１１が遅れて設定された場合、スイッチ２０−７は、そのフローエントリ２１１の登録を破棄する。
【０１４５】
なお、コントローラ１０−２からフローエントリ２１１が遅れて設定された場合、スイッチ２０−７は、念のために、そのフローエントリ２１１に従って、次段のスイッチ２０−６に経路削除パケット５０を送信するようにしても良い。スイッチ２０−６も、経路削除パケット５０を受信した場合、上記のスイッチ２０−７と同様の処理を行うものとする。
【０１４６】
一定時間、保持する経路削除パケット５０の情報と適合するフローエントリ２１１が登録されない場合、スイッチ２０−７は、登録を破棄すべき不採用経路のフローエントリはないと判断し、経路削除パケット５０を破棄する。
【０１４７】
［ステップＳ６の詳細］
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、採用された経路のフローエントリ２１１に従って、パケットを処理する。
【０１４８】
ここでは、スイッチ２０−１は、最も早く応答したコントローラ１０−１が仮設定したフローエントリ２１１をフローテーブル２１に設定する。
【０１４９】
この時点で、スイッチ２０−１は、１ｓｔパケットの情報と一致するフローエントリ２１１が設定されるため、１ｓｔパケットを該当フローエントリ２１１のアクション２１１２に従って処理する。
【０１５０】
仮設定のフローエントリ２１１をフローテーブル２１に設定するタイミングは、ステップＳ５における「不採用経路の削除処理」とほぼ同時である。
【０１５１】
スイッチ２０−１は、経路削除パケット５０をスイッチ２０−４に転送した後に、仮設定のフローエントリ２１１をフローテーブル２１に設定する。
【０１５２】
仮設定のフローエントリ２１１がフローテーブル２１に設定された後、スイッチ２０−１は、受信したパケットを、フローエントリ２１１に従って、採用された経路上のスイッチ２０−４に転送する。
【０１５３】
以降、採用された経路上のスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の各々は、受信したパケットを、フローエントリ２１１に従って、採用された経路上の次段のノードに転送し、パケットをホスト３０−２まで転送する。
【０１５４】
ここで、不採用経路の削除処理が終了していないスイッチ２０（２０−ｊ、ｊ＝１〜ｙ）がパケットを受け取る可能性がある。
【０１５５】
その場合、該スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、どのフローエントリ２１１が経路１００−１か判断できないため、不採用経路の削除処理の終了を待つ。
【０１５６】
ここで、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、次の２つの場合から、不採用経路の削除処理が終了したことを判断する。
【０１５７】
（１）パケットのフローヘッダの情報に適合するフローヘッダ２１１１を持つフローエントリ２１１が１つしかない場合、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、採用されたコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）から設定されたフローエントリ２１１のみが登録されている状態であると判断し、不採用経路の削除処理が終了したことを判断する。
【０１５８】
（２）パケットのフローヘッダの情報に適合するフローエントリ２１１は複数存在するが、これらのフローエントリ２１１のコントローラＩＤ２１１３及び経路ＩＤ２１１３が全て同一のものである場合、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、これらのフローエントリ２１１全てが、採用されたコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）から登録されている状態であると判断し、不採用経路の削除処理が終了したことを判断する。
【０１５９】
スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）は、不採用経路の削除処理の終了を一定時間判断できない場合、すなわち、ネットワークの遅延等の原因によって、一定時間待っても経路削除パケット５０が届かず、不採用経路が削除されない場合、その時点で１ｓｔパケットをコントローラ１０（１０−ｉ、ｉ＝１〜ｘ）に転送し、経路の再設定を行う。
【０１６０】
［実施例］
図１２を参照して、本発明の実施例について説明する。
【０１６１】
ここでは、コントローラ１０（１０−ｉ、ｉ＝１〜ｘ）の例として、コントローラ１及びコントローラ２を示す。また、スイッチ２０（２０−ｊ、ｊ＝１〜ｙ）の例として、スイッチ１〜スイッチ４を示す。また、ホスト３０（３０−ｋ、ｋ＝１〜ｚ）の例として、ホスト１及びホスト２を示す。ホスト１は、送信元ホストであり、ホスト２は送信先ホストである。
【０１６２】
（１）スイッチ１は、ホスト１からパケットを受信する。
【０１６３】
（２）スイッチ１は、自身が保持するフローエントリに一致しないパケットである場合、該パケットを１ｓｔパケットとして、自身を制御する複数のコントローラに転送する。ここでは、スイッチ１は、１ｓｔパケットを、コントローラ１及びコントローラ２に転送する。
【０１６４】
（３）コントローラ１及びコントローラ２は、スイッチから１ｓｔパケットを転送された場合、経路を計算し、経路上のスイッチの各々に対してフローエントリの設定を行う。このとき、コントローラ１及びコントローラ２は、１ｓｔパケットを受信したスイッチ１から順に、経路上のスイッチの各々に対してフローエントリの設定を行う。但し、１ｓｔパケットを受信したスイッチ１に設定したフローエントリには、仮設定であることを示す情報（フラグ等）を付与しておく。すなわち、この時点では、１ｓｔパケットを受信したスイッチ１に設定したフローエントリは、正式に設定したフローエントリではなく、仮設定のフローエントリである。仮設定であることを示す情報とは、該フローエントリが未だ無効である旨を示す情報である。１ｓｔパケットを受信したスイッチ１は、仮設定のフローエントリに従って、パケットを転送することはしない。なお、仮設定であることを示す情報を格納する領域は、フローエントリ内に新たに設けても良いし、フローエントリ内の既存の領域の一部を利用しても良い。
【０１６５】
（４）コントローラ１及びコントローラ２は、経路上のスイッチの設定が全て完了した場合、設定が完了した旨の通知（設定完了通知）を送信し、１ｓｔパケットを受信したスイッチ１に設定したフローエントリから仮設定を示す情報を取り除く。
【０１６６】
（５）１ｓｔパケットを受信したスイッチ１は、最も早く（最先に）全てのスイッチの設定が完了したコントローラ１の設定した経路をパケットの通信路に採用し、経路を採用したコントローラ１以外のコントローラ２に不採用通知を送る。コントローラ２は、不採用通知を受け取った際に、経路上のスイッチの設定が途中の場合、以降の設定を中止する。ここでは、コントローラ２は、経路上のスイッチ４の設定前に、不採用通知を受け取り、経路上のスイッチ４の設定を中止する。
【０１６７】
（６）１ｓｔパケットを受信したスイッチ１は、採用されなかった経路を削除するために、経路削除パケットを生成し、経路削除パケットを、採用されなかった経路のフローエントリに従って、隣接するスイッチ３に転送し、採用されなかった経路のフローエントリを削除する。スイッチ３を始め、採用されなかった経路上のスイッチは、経路削除パケットを受信した際、経路削除パケットのヘッダ情報と適合するフローエントリに従って、隣接するスイッチ４に転送した後、該フローエントリを削除する。スイッチ４は、経路削除パケットのヘッダ情報と適合するフローエントリが設定されていないため、経路削除パケットを一時的に保持し、所定の時間が経過した後に、経路削除パケットを破棄する。なお、スイッチ４は、経路削除パケットのヘッダ情報と適合するフローエントリが設定されていた場合、該フローエントリの内容から、採用されなかった経路上の最後のスイッチであると判明するため、隣接するホスト２には経路削除パケットを送信せず、経路削除パケットのヘッダ情報と適合するフローエントリを削除し、経路削除パケットを破棄する。これらの処理の詳細については、図１０に示した不採用経路の削除処理と同様である。
【０１６８】
（７）１ｓｔパケットを受信したスイッチ１は、１ｓｔパケット以降のパケットを、採用された経路のフローエントリに従って、隣接するスイッチ２に転送する。
【０１６９】
（８）スイッチ２は、１ｓｔパケット以降のパケットを、フローエントリに従って、隣接するスイッチ４に転送する。
【０１７０】
（９）採用された経路上の最後のスイッチ４は、１ｓｔパケット以降のパケットを、採用された経路のフローエントリに従って、ホスト２に転送する。
【０１７１】
［補足］
本発明の実施例では、１ｓｔパケットを受信したスイッチが２台のコントローラによって制御されているが、３台以上のコントローラによる制御も実現可能である。すなわち、図示された２台のコントローラは、「経路を採用したコントローラ」と、「経路を採用されなかったコントローラ」を示すものであり、個々のコントローラの台数は任意である。
【０１７２】
＜第２実施形態＞
以下に、本発明の第２実施形態について説明する。
【０１７３】
オープンフローにおいて、スイッチのフローテーブルにフローエントリを登録する方式は、大きく「Ｐｒｏａｃｔｉｖｅ型」と、「Ｒｅａｃｔｉｖｅ型」の２つの方式に分けられる。
【０１７４】
「Ｐｒｏａｃｔｉｖｅ型」では、コントローラが「事前に（データ通信が始まる前に）」所定のパケット群（フロー）の経路（パス）を計算し、スイッチのフローテーブルにフローエントリを登録する。すなわち、ここでいう「Ｐｒｏａｃｔｉｖｅ型」とは、コントローラが自発的に行う「事前のフローエントリ登録」を指す。
【０１７５】
「Ｒｅａｃｔｉｖｅ型」では、コントローラが「スイッチから１ｓｔパケット（該当フローエントリがない新規のパケット）についての問い合わせを受けた際に」該パケット群（フロー）の経路を計算し、スイッチのフローテーブルにフローエントリを登録する。すなわち、ここでいう「Ｒｅａｃｔｉｖｅ型」とは、実際のデータ通信時に、コントローラがスイッチからの問い合わせに応じて行う「リアルタイムのフローエントリ登録」を指す。
【０１７６】
オープンフローネットワークシステムでは、基本的に、コントローラがスイッチから１ｓｔパケットについての問い合わせを受けた際に該受信パケットに関するフローエントリを登録する「Ｒｅａｃｔｉｖｅ型」が中心となっている。
【０１７７】
しかし、実際のハードウェア（ＨＷ）では、フローテーブルの処理頻度を軽減し性能の問題を解決するためには、「Ｐｒｏａｃｔｉｖｅ型」が好適であると考えられる。例えば、大量の１ｓｔパケットがコントローラに到着しても処理し切れるようにするためには、「Ｐｒｏａｃｔｉｖｅ型」の方が好適であると考えられる。但し、実際には、完全な「Ｐｒｏａｃｔｉｖｅ型」にするとフローエントリ数が膨大になると考えられるため、一部を「Ｒｅａｃｔｉｖｅ型」にすることにより、フローエントリ数の制約から逃れるといったことも考えられる。
【０１７８】
また、「Ｐｒｏａｃｔｉｖｅ型」を用いれば、通信開始前にフローを定義できるため、Ｎｉｍｄａ等のウィルスによる大量フロー発生問題や、不明なパケットによる不正アクセス等が回避可能になると考えられる。
【０１７９】
上記の第１実施形態における説明では、「Ｒｅａｃｔｉｖｅ型」を前提に説明してきたが、実際には、「Ｐｒｏａｃｔｉｖｅ型」のオープンフローネットワークシステムにおいて、本発明を実施することも可能である。
【０１８０】
すなわち、複数のコントローラの各々が、スイッチからのパケットの問い合わせを受けることなく、事前に（データ通信が始まる前に）、到着が予想される所定のパケット群の経路を計算し、経路上のスイッチのフローテーブルにフローエントリを登録するようにしても良い。スイッチにおける不採用経路の削除処理等については、上記の第１実施形態と同様である。
【０１８１】
＜まとめ＞
以上のように、本発明は、オープンフローに代表される制御機能を外部のコントローラに分離したネットワーク機器で構成されるネットワークにおいて、コントローラを多重化／冗長化した際の不採用経路の削除を実現する。
【０１８２】
本発明では、パケット転送と経路制御の機能が分離されたネットワーク機器で構成されるネットワークを対象とする。
【０１８３】
本発明では、複数のコントローラが独立して動作し、コントローラ間の通信を伴わずに全てのネットワーク機器に対してフローエントリを設定できる。
【０１８４】
本発明では、経路は、複数のコントローラの中で最も早く設定を完了させたコントローラの設定した経路である。
【０１８５】
本発明では、ネットワーク機器が、通信に使用されない経路のフローエントリを削除する経路削除パケットを生成する。
【０１８６】
本発明では、ネットワーク機器が、経路削除パケットを、通信に使用されない経路上の隣接するネットワーク機器に転送する。
【０１８７】
本発明では、ネットワーク機器は、経路削除パケットを受信した際、経路削除パケットを解析し、解析結果を基に、自身に設定されたフローエントリのうち、経路削除パケットのヘッダ情報と適合するフローエントリを削除する。
【０１８８】
本発明では、ネットワーク機器が、経路削除パケットに適合するフローエントリがない場合、経路削除パケットを一時的に保持する。
【０１８９】
本発明では、ネットワーク機器が、コントローラによって登録されるフローエントリと、一時的に保持している経路削除パケットのヘッダ情報とが適合する場合、その登録を破棄する。
【０１９０】
本発明により、複数のコントローラ間で同期を取ることなく、通信路を設定可能となる。また、不採用経路を削除することで、ネットワーク上に閉路が作成されることがなく、送信先へ正しく転送されないという障害が発生しない。また、ネットワーク機器がパケットに対して情報の付加や削除といった処理を行わない。
【０１９１】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【０１９２】
（付記１）
複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定する装置と、
複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、採用された経路のフローエントリに従って、パケットを転送する装置と
を具備する
ネットワーク機器。
【０１９３】
（付記２）
付記１に記載のネットワーク機器であって、
複数のコントローラの各々から、経路上のネットワーク機器全ての設定を完了させた旨の設定完了通知を受信する装置と、
設定完了通知に応じて、不採用とした経路のフローエントリと適合する経路削除パケットを作成する装置と、
外部から経路削除パケットを受信した場合、経路削除パケットと適合するフローエントリの有無を確認する装置と、
不採用とした経路のフローエントリに従って、経路削除パケットを、不採用とした経路上の隣接するネットワーク機器に転送する装置と、
不採用とした経路のフローエントリを削除する装置と
を更に具備する
ネットワーク機器。
【０１９４】
（付記３）
付記２に記載のネットワーク機器であって、
経路削除パケットと適合するフローエントリの内容を確認する装置と、
確認の結果、隣接する送信先ホストに転送する内容であれば、該フローエントリを削除し、経路削除パケットを破棄する装置と
を更に具備する
ネットワーク機器。
【０１９５】
（付記４）
付記３に記載のネットワーク機器であって、
経路削除パケットと適合するフローエントリがない場合、経路削除パケットを一時的に保持する装置と
複数のコントローラのいずれかからフローエントリに設定が行われた際、該フローエントリが経路削除パケットと適合すれば、該フローエントリの設定を破棄する装置と、
保持してから所定の時間の経過後に、経路削除パケットを破棄する装置と
を更に具備する
ネットワーク機器。
【０１９６】
（付記５）
ネットワーク機器により実施される経路制御方法であって、
複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定することと、
複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、採用された経路のフローエントリに従って、パケットを転送することと
を含む
経路制御方法。
【０１９７】
（付記６）
付記５に記載の経路制御方法であって、
複数のコントローラの各々から、経路上のネットワーク機器全ての設定を完了させた旨の設定完了通知を受信することと、
設定完了通知に応じて、不採用とした経路のフローエントリと適合する経路削除パケットを作成することと、
外部から経路削除パケットを受信した場合、経路削除パケットと適合するフローエントリの有無を確認することと、
不採用とした経路のフローエントリに従って、経路削除パケットを、不採用とした経路上の隣接する経路制御方法に転送することと、
不採用とした経路のフローエントリを削除することと
を更に含む
経路制御方法。
【０１９８】
（付記７）
付記６に記載の経路制御方法であって、
経路削除パケットと適合するフローエントリの内容を確認することと、
確認の結果、隣接する送信先ホストに転送する内容であれば、該フローエントリを削除し、経路削除パケットを破棄することと
を更に含む
経路制御方法。
【０１９９】
（付記８）
付記７に記載の経路制御方法であって、
経路削除パケットと適合するフローエントリがない場合、経路削除パケットを一時的に保持することと
複数のコントローラのいずれかからフローエントリに設定が行われた際、該フローエントリが経路削除パケットと適合すれば、該フローエントリの設定を破棄することと、
保持してから所定の時間の経過後に、経路削除パケットを破棄することと
を更に含む
経路制御方法。
【０２００】
（付記９）
複数のコントローラの各々からの制御に基づいて、パケットをフローとして一律に制御するためのルールと動作が定義されたフローエントリをフローテーブルに設定するステップと、
複数のコントローラの中で最も早く経路上のネットワーク機器全てのフローエントリの設定を完了させたコントローラの設定した経路を採用し、他のコントローラの設定した経路を不採用とし、採用された経路のフローエントリに従って、パケットを転送するステップと
をネットワーク機器に実行させるための
プログラム。
【０２０１】
（付記１０）
付記９に記載のプログラムであって、
複数のコントローラの各々から、経路上のネットワーク機器全ての設定を完了させた旨の設定完了通知を受信するステップと、
設定完了通知に応じて、不採用とした経路のフローエントリと適合する経路削除パケットを作成するステップと、
外部から経路削除パケットを受信した場合、経路削除パケットと適合するフローエントリの有無を確認するステップと、
不採用とした経路のフローエントリに従って、経路削除パケットを、不採用とした経路上の隣接するプログラムに転送するステップと、
不採用とした経路のフローエントリを削除するステップと
を更にネットワーク機器に実行させるための
プログラム。
【０２０２】
（付記１１）
付記１０に記載のプログラムであって、
経路削除パケットと適合するフローエントリの内容を確認するステップと、
確認の結果、隣接する送信先ホストに転送する内容であれば、該フローエントリを削除し、経路削除パケットを破棄するステップと
を更にネットワーク機器に実行させるための
プログラム。
【０２０３】
（付記１２）
付記１１に記載のプログラムであって、
経路削除パケットと適合するフローエントリがない場合、経路削除パケットを一時的に保持するステップと
複数のコントローラのいずれかからフローエントリに設定が行われた際、該フローエントリが経路削除パケットと適合すれば、該フローエントリの設定を破棄するステップと、
保持してから所定の時間の経過後に、経路削除パケットを破棄するステップと
を更にネットワーク機器に実行させるための
プログラム。
【０２０４】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０２０５】
なお、本出願は、日本出願番号２０１１−０４８１４３に基づく優先権を主張するものであり、日本出願番号２０１１−０４８１４３における開示内容は引用により本出願に組み込まれる。
【図１】
2012121114.tif 000003
【図２】
2012121114.tif 000004
【図３】
2012121114.tif 000005
【図４】
2012121114.tif 000006
【図５】
2012121114.tif 000007
【図６】
2012121114.tif 000008
【図７】
2012121114.tif 000009
【図８】
2012121114.tif 000010
【図９】
2012121114.tif 000011
【図１０】
2012121114.tif 000012
【図１１】
2012121114.tif 000013
【図１２】
2012121114.tif 000014
【国際調査報告】
2012121114.tif 000015
2012121114.tif 000016