(57)【特許請求の範囲】
【請求項１】
コントローラと、
前記コントローラにより制御できない非対応ネットワーク機器と、
前記非対応ネットワーク機器の前段のネットワーク機器と、
前記非対応ネットワーク機器の後段のネットワーク機器と
を含み、
前記コントローラは、
前記前段のネットワーク機器を制御する手段と、
前記前段のネットワーク機器から通知されたパケットについて、宛先までの経路を計算する手段と、
前記計算した経路上に、前記非対応ネットワーク機器が存在する場合、前記非対応ネットワーク機器の後段の経路情報を、前記後段のネットワーク機器に向けて通知する手段と
を具備し、
前記後段のネットワーク機器は、
前記非対応ネットワーク機器から前記パケットを受信すると、前記後段の経路情報から自分の経路情報を取り出して、前記取り出した経路情報を基に、自分のフローテーブルに新しいエントリーを追加する手段と、
前記パケットに、前記後段の残りの経路情報を付加する手段と、
自分のフローテーブルに追加したエントリーに従って、前記後段の残りの経路情報が付加されたパケットを送信する手段と
を具備する
ネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記コントローラから前記後段の経路情報を受け取り、前記後段のネットワーク機器に前記後段の経路情報を通知する他のコントローラ
を更に含み、
前記コントローラは、
前記他のコントローラに対して、前記後段の経路情報を通知する手段と、
前記他のコントローラからの応答を受けて、前記前段のネットワーク機器のフローテーブルに新しいエントリーを追加する手段と、
前記非対応ネットワーク機器の前段の経路情報を、前記前段のネットワーク機器に通知する手段と
を更に具備する
ネットワークシステム。
【請求項３】
請求項１に記載のネットワークシステムであって、
前記コントローラから前記後段の経路情報を受け取り、前記後段のネットワーク機器に前記後段の経路情報を通知する他のコントローラ
を更に含み、
前記後段のネットワーク機器は、
前記非対応ネットワーク機器から前記パケットを受信すると、前記パケットの内容と前記フローテーブルのエントリーの内容とを照合する手段と、
前記パケットに対し、前記フローテーブル内に該当するエントリーが存在しない場合、前記パケットを未知のパケットと判断し、前記他のコントローラに前記パケットを通知する手段と、
前記他のコントローラから前記後段の経路情報を受け取る手段と
を更に具備する
ネットワークシステム。
【請求項４】
請求項１乃至３のいずれか一項に記載のネットワークシステムであって、
前記前段のネットワーク機器と前記後段のネットワーク機器とは、同一のネットワーク機器である
ネットワークシステム。
【請求項５】
請求項１乃至４のいずれか一項に記載のネットワークシステムで、コントローラ及びネットワーク機器のいずれかとして使用される計算機。
【請求項６】
コントローラと、
前記コントローラにより制御できない非対応ネットワーク機器と、
前記非対応ネットワーク機器の前段のネットワーク機器と、
前記非対応ネットワーク機器の後段のネットワーク機器と
を含むネットワークシステムにおいて、
前記コントローラにより、前記前段のネットワーク機器を制御することと、
前記コントローラにより、前記前段のネットワーク機器から通知されたパケットについて、宛先までの経路を計算することと、
前記コントローラにより、前記計算した経路上に、前記非対応ネットワーク機器が存在する場合、前記非対応ネットワーク機器の後段の経路情報を、前記後段のネットワーク機器に向けて通知することと、
前記後段のネットワーク機器により、前記非対応ネットワーク機器から前記パケットを受信した場合、前記後段の経路情報から自分の経路情報を取り出して、前記取り出した経路情報を基に、自分のフローテーブルに新しいエントリーを追加することと、
前記後段のネットワーク機器により、前記パケットに、前記後段の残りの経路情報を付加することと、
前記後段のネットワーク機器により、自分のフローテーブルに追加したエントリーに従って、前記後段の残りの経路情報が付加されたパケットを送信することと
を含む
経路情報更新方法。
【請求項７】
請求項６に記載の経路情報更新方法であって、
前記コントローラにより、他のコントローラに対して、前記後段の経路情報を通知することと、
前記他のコントローラにより、前記コントローラから前記後段の経路情報を受け取り、前記後段のネットワーク機器に前記後段の経路情報を通知することと、
前記コントローラにより、前記他のコントローラからの応答を受けて、前記前段のネットワーク機器のフローテーブルに新しいエントリーを追加することと、
前記コントローラにより、前記非対応ネットワーク機器の前段の経路情報を、前記前段のネットワーク機器に通知することと
を更に含む
経路情報更新方法。
【請求項８】
請求項６に記載の経路情報更新方法であって、
前記コントローラにより、他のコントローラに対して、前記後段の経路情報を通知することと、
前記他のコントローラにより、前記コントローラから前記後段の経路情報を受け取り、前記後段のネットワーク機器に前記後段の経路情報を通知することと、
前記後段のネットワーク機器により、前記非対応ネットワーク機器から前記パケットを受信すると、前記パケットの内容と前記フローテーブルのエントリーの内容とを照合することと、
前記後段のネットワーク機器により、前記パケットに対し、前記フローテーブル内に該当するエントリーが存在しない場合、前記パケットを未知のパケットと判断し、前記他のコントローラに前記パケットを通知することと、
前記後段のネットワーク機器により、前記他のコントローラから前記後段の経路情報を受け取ることと
を更に含む
経路情報更新方法。
【請求項９】
請求項６乃至８のいずれか一項に記載の経路情報更新方法であって、
前記前段のネットワーク機器と前記後段のネットワーク機器とは、同一のネットワーク機器である
経路情報更新方法。
【請求項１０】
請求項６乃至９のいずれか一項に記載の経路情報更新方法を、コントローラ及びネットワーク機器のそれぞれとして使用される計算機に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムに関し、特に外部コントローラがネットワーク機器を制御するネットワークシステムに関する。
【背景技術】
【０００２】
従来のネットワーク（ＮＷ：Ｎｅｔｗｏｒｋ）機器はブラックボックスであり、外部から負荷分散や片寄せ等の柔軟性に富んだ制御ができない。このため、ネットワークの規模が大きくなると、システムとしての挙動の把握と改善が困難になり、設計や構成変更において、多大な遅延を伴うことが問題となっていた。
【０００３】
こうした問題を解決するための手法として、ネットワーク（ＮＷ）機器のパケット（ｐａｃｋｅｔ）転送と経路制御の機能を分離する手法が考えられている。例えば、ネットワーク（ＮＷ）機器がパケット転送を担当し、ネットワーク（ＮＷ）機器の外部に置かれたコントローラが経路制御を担当することで、外部からの制御が容易になり、柔軟性に富んだネットワークを構築することが可能になる。
【０００４】
上記手法の具体的な例として、オープンフロー（ＯｐｅｎＦｌｏｗ）について説明する。但し、オープンフローは一例に過ぎない。オープンフローについては、オープンフローコンソーシアム（非特許文献１参照）で検討が進んでいる。
【０００５】
図１に、オープンフロー０．９．０の基本的な構成例を示す。図１では、ネットワーク（ＮＷ）機器の例としてスイッチを示す。図２に、パケット転送と経路制御を分離したネットワーク（ＮＷ）機器の規格であるオープンフローの場合における従来のパケット処理の流れを示す。図３に、従来のパケット照合処理の流れを示す。
【０００６】
オープンフローは、オープンフロープロトコルをサポートしたネットワーク（ＮＷ）機器と、外部に置かれたコントローラで構成される。ネットワーク（ＮＷ）機器とコントローラは、セキュアチャンネル（Ｓｅｃｕｒｅ  ｃｈａｎｎｅｌ：安全な経路）で接続されており、オープンフロープロトコルで通信を行う。オープンフローでは、ネットワーク（ＮＷ）機器のパケット転送と経路制御は分離されており、ネットワーク（ＮＷ）機器はパケット転送を行い、コントローラはネットワーク（ＮＷ）機器の経路制御を行う。
【０００７】
オープンフローをサポートするネットワーク（ＮＷ）機器は、内部にフローテーブル（Ｆｌｏｗ  ｔａｂｌｅ）と呼ばれる経路情報を持つ。フローテーブルは、フロー（Ｆｌｏｗ）として定義されたパケットのヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）と、当該パケットが届いたときの処理（Ａｃｔｉｏｎ）との対応関係を管理するテーブルである。ここでは、ヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）と処理（Ａｃｔｉｏｎ）の組をエントリー（ｅｎｔｒｙ）と呼称する。ヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）は、その内容により、パケットの判定基準となる所定の規則（Ｒｕｌｅ）を示す。処理（Ａｃｔｉｏｎ）は、パケットを物理ポートや仮想ポートに転送するフォワード（Ｆｏｒｗａｒｄ）処理や、パケットを廃棄するドロップ（Ｄｒｏｐ）処理等であり、ビットマップ（ｂｉｔｍａｐ）等で表現される。ネットワーク（ＮＷ）機器は、受信したパケット内のヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）と、フローテーブル内のヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）を照合し、照合の結果、合致していれば、対応する処理（Ａｃｔｉｏｎ）を実行する。
【０００８】
図１を参照して、ヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）の要素となり得る情報について説明する。
【０００９】
図１では、ヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）の要素となり得る情報として、「Ｉｎｇｒｅｓｓ  Ｐｏｒｔ」と、「Ｅｔｈｅｒ  ｓｒｃ」と、「Ｅｔｈｅｒ  ｄｓｔ」と、「Ｅｔｈｅｒ  ｔｙｐｅ」と、「ＶＬＡＮ  ＩＤ」と、「ＶＬＡＮ  ｐｒｉｏｒｉｔｙ」と、「ＩＰ  ｓｒｃ」と、「ＩＰ  ｄｓｔ」と、「ＩＰ  ｐｒｏｔｏ」と、「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」と、「ＴＣＰ／ＵＤＰ  ｄｓｔ  ｐｏｒｔ」を示している。フローテーブルとパケットとの照合の際には、これらの情報のいずれか又は全てが使用される。すなわち、これらの情報のいずれか又は全てを組み合わせて、フローが定義される。
【００１０】
「Ｉｎｇｒｅｓｓ  Ｐｏｒｔ」は、入力ポートを示す。「Ｅｔｈｅｒ  ｓｒｃ」は、送信元（Ｓｏｕｒｃｅ）のＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）を示す。「Ｅｔｈｅｒ  ｄｓｔ」は、宛先（Ｄｅｓｔｉｎａｔｉｏｎ）のＭＡＣアドレスを示す。「Ｅｔｈｅｒ  ｔｙｐｅ」は、上位層のプロトコルの種類を示す。「ＶＬＡＮ  ＩＤ」は、仮想ＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）スイッチのポート毎に設定された識別情報を示す。「ＶＬＡＮ  ｐｒｉｏｒｉｔｙ」は、仮想ＬＡＮスイッチの該当ポートの優先度を示す。「ＩＰ  ｓｒｃ」は、送信元のＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を示す。「ＩＰ  ｄｓｔ」は、宛先のＩＰアドレスを示す。「ＩＰ  ｐｒｏｔｏ」は、ＩＰのプロトコル番号を示す。「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）における送信元のポート番号を示す。「ＴＣＰ／ＵＤＰ  ｄｓｔ  ｐｏｒｔ」は、ＴＣＰやＵＤＰにおける宛先のポート番号を示す。
【００１１】
コントローラは、ネットワーク（ＮＷ）機器制御手段（図１のスイッチ制御手段）を備え、セキュアチャンネル（Ｓｅｃｕｒｅ  ｃｈａｎｎｅｌ）を介して、ネットワーク（ＮＷ）機器のフローテーブルを更新して、ネットワーク（ＮＷ）機器を制御する。
【００１２】
ネットワーク（ＮＷ）機器は、パケット転送手段（図１のパケット処理手段）を備え、パケットが到着すると、内部に持つフローテーブルとパケットの照合を行い、該当するエントリーが存在する場合は、関連付けられたパケット送信や廃棄等の処理（Ａｃｔｉｏｎ）を実行する。
【００１３】
ここで、図２を参照して、従来のパケット処理の流れについて説明する。
ネットワーク（ＮＷ）機器は、ネットワークからパケットを受信する（図２の「Ｐａｃｋｅｔ  ｉｎ  ｆｒｏｍ  ｎｅｔｗｏｒｋ」）。
【００１４】
ネットワーク（ＮＷ）機器は、ネットワーク上に複数存在し、個々のネットワーク（ＮＷ）機器は、ＩＥＥＥ  ８０２．１Ｄ標準のＳＴＰ（Ｓｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ）に従い、ループフリーな論理トポロジーを維持する。個々のネットワーク（ＮＷ）機器は、ルートブリッジとなるネットワーク（ＮＷ）機器から木のように枝分かれしている。個々のネットワーク（ＮＷ）機器は、それぞれパケットを受信し、パケットに対する処理を行う（図２の「８０２．１ｄ  ＳＴＰ  Ｐｒｏｃｅｓｓｉｎｇ」）。
【００１５】
ネットワーク（ＮＷ）機器は、内部に持つフローテーブルのエントリーと、受信したパケットの照合を行う（図２の「Ｆｌｏｗ  ｌｏｏｋｕｐ」）。
【００１６】
ここで、図３を参照して、従来のパケット照合処理について詳述する。
まず、ネットワーク（ＮＷ）機器は、フローテーブルのエントリーのヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）と照合する際の照合対象となるパケットのヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）に、「Ｉｎｇｒｅｓｓ  Ｐｏｒｔ」と、「Ｅｔｈｅｒ  ｓｒｃ」と、「Ｅｔｈｅｒ  ｄｓｔ」と、「Ｅｔｈｅｒ  ｔｙｐｅ」を指定する（図３の「Ｈｅａｄｅｒ  Ｆｉｅｌｄ＝＜Ｉｎｇｒｅｓｓ  Ｐｏｒｔ，  Ｅｔｈｅｒ  ｓｒｃ，  Ｅｔｈｅｒ  ｄｓｔ，  Ｅｔｈｅｒ  ｔｙｐｅ＞」）。
【００１７】
ネットワーク（ＮＷ）機器は、パケットのヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）の「Ｅｔｈｅｒ  ｔｙｐｅ」の値が「０ｘ８１００」であるか確認する（図３の「Ｅｔｈｅｒ  ｔｙｐｅ  ＝  ０ｘ８１００？」）。
【００１８】
ネットワーク（ＮＷ）機器は、「Ｅｔｈｅｒ  ｔｙｐｅ」の値が「０ｘ８１００」である場合、「ＶＬＡＮ  ＩＤ」を、新たな照合対象として、ヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）に追加する。すなわち、ネットワーク（ＮＷ）機器は、「Ｅｔｈｅｒ  ｔｙｐｅ」についても照合対象とする。このとき、ネットワーク（ＮＷ）機器は、カプセル化された「Ｅｔｈｅｒ  ｔｙｐｅ」の値を、「Ｅｔｈｅｒ  ｔｙｐｅ」の値として使用する（図３の「Ａｄｄ  ＜ＶＬＡＮ  ＩＤ＞  ｔｏ  Ｈｅａｄｅｒ  Ｆｉｅｌｄ，  Ｕｓｅ  ｅｎｃａｐｓｕｌａｔｅｄ  Ｅｔｈｅｒ  ｔｙｐｅ  ａｓ  Ｅｔｈｅｒ  ｔｙｐｅ」）。
【００１９】
ネットワーク（ＮＷ）機器は、パケットのヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）の「Ｅｔｈｅｒ  ｔｙｐｅ」の値が「０ｘ８００」であるか確認する（図３の「Ｅｔｈｅｒ  ｔｙｐｅ  ＝  ０ｘ８００？」）。
【００２０】
ネットワーク（ＮＷ）機器は、「Ｅｔｈｅｒ  ｔｙｐｅ」の値が「０ｘ８００」である場合、「ＩＰ  ｓｒｃ」と、「ＩＰ  ｄｓｔ」と、「ＩＰ  ｐｒｏｔｏ」を、新たな照合対象として、ヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）に追加する。すなわち、ネットワーク（ＮＷ）機器は、「ＩＰ  ｓｒｃ」と、「ＩＰ  ｄｓｔ」と、「ＩＰ  ｐｒｏｔｏ」についても照合対象とする（図３の「Ａｄｄ  ＜ＩＰ  ｓｒｃ，  ＩＰ  ｄｓｔ，  ＩＰ  ｐｒｏｔｏ＞  ｔｏ  Ｈｅａｄｅｒ  Ｆｉｅｌｄ」）。
【００２１】
ネットワーク（ＮＷ）機器は、パケットのヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）の「ＩＰ  ｐｒｏｔｏ」の値が「６」又は「１７」であるか確認する（図３の「ＩＰ  ｐｒｏｔｏ  ＝  ６  ｏｒ  １７？」）。
【００２２】
ネットワーク（ＮＷ）機器は、「ＩＰ  ｐｒｏｔｏ」の値が「６」又は「１７」である場合、「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」と、「ＴＣＰ／ＵＤＰ  ｄｓｔ  ｐｏｒｔ」を、新たな照合対象として、ヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）に追加する。すなわち、ネットワーク（ＮＷ）機器は、「ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ」と、「ＴＣＰ／ＵＤＰ  ｄｓｔ  ｐｏｒｔ」についても照合対象とする（図３の「Ａｄｄ  ＜ＴＣＰ／ＵＤＰ  ｓｒｃ  ｐｏｒｔ，  ＴＣＰ／ＵＤＰ  ｄｓｔ  ｐｏｒｔ＞  ｔｏ  Ｈｅａｄｅｒ  Ｆｉｅｌｄ」）。
【００２３】
ネットワーク（ＮＷ）機器は、フローテーブルのエントリーのヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）と、パケットのヘッダ領域情報（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）を照合する（図３の「Ｐａｃｋｅｔ  Ｌｏｏｋｕｐ  Ｏｖｅｒ  Ｈｅａｄｅｒ  Ｆｉｅｌｄ」）。
【００２４】
ネットワーク（ＮＷ）機器は、受信したパケットに対し、フローテーブル内に該当するエントリーが存在する場合は、このエントリーに関連付けられたパケット送信や廃棄等の処理（Ａｃｔｉｏｎ）を実行する（図２の「Ａｐｐｌｙ  ａｃｔｉｏｎｓ」）。
【００２５】
また、ネットワーク（ＮＷ）機器は、受信したパケットに対し、フローテーブル内に該当するエントリーが存在しない場合、このパケットを内部に保留し、セキュアチャンネル（Ｓｅｃｕｒｅ  ｃｈａｎｎｅｌ）を介して、コントローラに未知のパケットが到着したことを通知する（図２の「Ｓｅｎｄ  ｔｏ  ｓｅｃｕｒｅ  ｃｈａｎｎｅｌ」）。ここでは、該当するエントリーが存在しない場合の未知のパケットを１ｓｔパケット（Ｆｉｒｓｔ  ｐａｃｋｅｔ）と呼称する。
【００２６】
コントローラは、１ｓｔパケット到着の通知を受けると、宛先までの経路を計算し、ネットワーク（ＮＷ）機器のフローテーブルに新しいエントリーを追加し、フローテーブルを更新する。宛先までの経路については、どのネットワーク（ＮＷ）機器がどのネットワーク（ＮＷ）機器につながっているかを表すトポロジ情報（Ｎｅｔｗｏｒｋ  Ｔｏｐｏｌｏｇｙ）から計算する。
【００２７】
ネットワーク（ＮＷ）機器は、フローテーブルが更新されると、滞留していた１ｓｔパケットとそれ以降の同種のパケットを、追加された処理（Ａｃｔｉｏｎ）に従って処理する。
【００２８】
従って、通常のオープンフローでは、パケット転送と経路制御を分離したネットワーク（ＮＷ）機器に１ｓｔパケットが到着すると、ネットワーク（ＮＷ）機器からコントローラへの通知と、コントローラからネットワーク（ＮＷ）機器へのフローテーブル更新が発生するため、従来のネットワーク（ＮＷ）機器に比べて通信コスト（負担）が発生することになる。
【００２９】
更に、データセンタのような大規模ネットワークを考えると、このコストは顕著である。大規模なネットワークでは、性能や信頼性の面から、複数のコントローラが分担してネットワーク内の全てのネットワーク（ＮＷ）機器を管理することになる。経路計算のためのトポロジ情報は、全てのコントローラが共有している。
【００３０】
以下、図４を参照して、従来のネットワークシステムにおける処理の流れを具体的に説明する。ここでは、オープンフローに対応したネットワーク（ＮＷ）機器として、ネットワーク（ＮＷ）機器Ａ、ネットワーク（ＮＷ）機器Ｂ、ネットワーク（ＮＷ）機器Ｃ、ネットワーク（ＮＷ）機器Ｄを示す。また、オープンフローに対応していないネットワーク（ＮＷ）機器として、非対応ネットワーク（ＮＷ）機器を示す。
【００３１】
（１）１ｓｔパケット受信通知
ネットワーク（ＮＷ）機器Ａは、ノードから１ｓｔパケットを受信すると、１ｓｔパケットを受信した旨を、ネットワーク（ＮＷ）機器Ａを制御するコントローラに通知する。
【００３２】
（２）ネットワーク（ＮＷ）機器Ｃ、ネットワーク（ＮＷ）機器Ｄ更新指示
ネットワーク（ＮＷ）機器Ａを制御するコントローラは、ネットワーク（ＮＷ）機器Ａから通知を受け取ると、トポロジ情報を基に、経路を計算する。ネットワーク（ＮＷ）機器Ａを制御するコントローラは、計算した経路が、異なるコントローラによって制御されるネットワーク（ＮＷ）機器Ｃ、及びネットワーク（ＮＷ）機器Ｄをまたぐような場合は、それぞれのコントローラに対して、ネットワーク（ＮＷ）機器Ｃ、及びネットワーク（ＮＷ）機器Ｄの経路情報を通知し、ネットワーク（ＮＷ）機器Ｃ、及びネットワーク（ＮＷ）機器Ｄのフローテーブルを更新するように指示する。
【００３３】
（３）ネットワーク（ＮＷ）機器Ｃ、ネットワーク（ＮＷ）機器Ｄ更新
ネットワーク（ＮＷ）機器Ｃを制御するコントローラは、ネットワーク（ＮＷ）機器Ｃのフローテーブルに新しいエントリーを追加し、フローテーブルを更新する。同様に、ネットワーク（ＮＷ）機器Ｄを制御するコントローラは、ネットワーク（ＮＷ）機器Ｄのフローテーブルに新しいエントリーを追加し、フローテーブルを更新する。
【００３４】
（４）ネットワーク（ＮＷ）機器Ｃ、ネットワーク（ＮＷ）機器Ｄ更新完了
ネットワーク（ＮＷ）機器Ａを制御するコントローラは、更新指示を通知したコントローラから、ネットワーク（ＮＷ）機器Ｃ、ネットワーク（ＮＷ）機器Ｄのフローテーブルの更新が完了した旨の通知を受け取る。
【００３５】
（５）ネットワーク（ＮＷ）機器Ａ更新、ネットワーク（ＮＷ）機器Ｂ更新
ネットワーク（ＮＷ）機器Ａを制御するコントローラは、計算した経路上で、異なるコントローラによって制御される全てのネットワーク（ＮＷ）機器のフローテーブルの更新が完了すると、計算した経路を基に、通知元のネットワーク（ＮＷ）機器Ａ及び配下の他のネットワーク（ＮＷ）機器Ｂのフローテーブルに新しいエントリーを追加し、フローテーブルを更新する。すなわち、コントローラは、計算した経路上で自分の制御下にないネットワーク（ＮＷ）機器を制御する全てのコントローラに更新指示を通知し、応答により同期を取り、計算した経路上のネットワーク（ＮＷ）機器のフローテーブルの更新が完了したことを確認した後に、自分の制御下のネットワーク（ＮＷ）機器のフローテーブルを更新する。
【００３６】
図４に示すように、あるパケットの経路が異なるコントローラによって制御されるネットワーク（ＮＷ）機器群をまたがるような場合、コントローラ間で経路内のネットワーク（ＮＷ）機器のフローテーブル更新指示と同期待ち合わせが発生し、それが完了するまでパケットの転送は遅延する。
【００３７】
逆に、フローテーブル更新を待ち合わせないとした場合も、パケットが経路上のネットワーク（ＮＷ）機器に届いた時点でフローテーブルが更新されていなければ、そのパケットが１ｓｔパケットとして扱われてしまい、新たなコストが発生してしまう。
【００３８】
以上から、既存のネットワークをパケット転送と経路制御を分離したネットワーク（ＮＷ）機器で再構成する場合、システム性能が劣化する可能性が大きく、最悪の場合、従来守れていたシステムの性能指標を守れなくなってしまう可能性がある。
【００３９】
なお、関連する技術として、特許文献１（特開２００４−３２０６９３号公報）にパケット制御システム、パケット制御装置、パケット中継装置およびパケット制御プログラムが開示されている。この関連技術では、パケット中継装置は、ネットワークインタフェースで受信した経路制御パケットをパケット制御装置に転送する。パケット制御装置は、ネットワークインタフェースに対応付けられたアドレス情報を保持する仮想インタフェースと、パケット中継装置から転送された経路制御パケットを受信し、仮想インタフェースに対応付けて経路制御プロセスに転送し、経路制御プロセスが仮想インタフェースに対応付けて送信した経路制御パケットを受信してパケット中継装置に転送する。このように、ルータの中継機能と制御機能を分離する。
【００４０】
また、特許文献２（特開２００７−０９６９１２号公報）にネットワーク中継器が開示されている。この関連技術では、他のルータと経路情報交換を行い、自ルータの経路情報を更新し、更新された経路情報に基づいて受信したパケットの中継処理を実施するルータにおいて、パケットの中継処理を停止することなく自ルータの経路情報を圧縮、更新する。これにより、ルータのハードウエアの増設、更新をすることなく増加、拡大するインターネットの経路情報に対応することを目的としている。
【先行技術文献】
【特許文献】
【００４１】
【特許文献１】特開２００４−３２０６９３号公報
【特許文献２】特開２００７−０９６９１２号公報
【非特許文献】
【００４２】
【非特許文献１】Ｔｈｅ  ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｃｏｎｓｏｒｔｉｕｍ  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／＞
【発明の概要】
【発明が解決しようとする課題】
【００４３】
本発明では、コントローラ間の通信を伴わずに、ネットワーク（ＮＷ）機器間の通信において、経路情報（フローテーブルのエントリー）のリストを付加したパケットを利用して、全てのネットワーク（ＮＷ）機器に対して経路情報を設定する手法についても検討している。この手法は、全てのネットワーク（ＮＷ）機器がオープンフローに対応しているネットワークにおいては、非常に有効である。
【００４４】
しかし、オープンフローに対応したネットワーク（ＮＷ）機器と、オープンフローに対応していない非対応ネットワーク（ＮＷ）機器が混在するネットワークにおいては、次の理由から、そのまま適用することが難しいと考えられる。
【００４５】
一つ目の理由は、経路情報のリストを付加したパケットは、標準的なプロトコルに準拠したパケットではないため、従来の非対応ネットワーク（ＮＷ）機器では処理できない可能性があることである。
【００４６】
二つ目の理由は、非対応ネットワーク（ＮＷ）機器により構成されるネットワークから受けとったパケットは、オープンフローに対応したネットワーク（ＮＷ）機器以外から送信された偽の経路情報が付加される可能性があるため、ネットワーク（ＮＷ）機器の経路情報の更新に使用することがセキュリティ上の問題になることである。
【００４７】
データセンタのような大規模なネットワークでは、全ての機器を新規に導入するよりも、既設の機器の置き換えなど段階的に導入することが多い。このため、ネットワーク（ＮＷ）機器と非対応ネットワーク（ＮＷ）機器が混在する構成においても、ネットワーク（ＮＷ）機器の経路情報の設定を低コストで実現する手段が必要となる。
【課題を解決するための手段】
【００４８】
本発明のネットワークシステムは、コントローラと、コントローラにより制御できない非対応ネットワーク機器と、非対応ネットワーク機器の前段のネットワーク機器と、非対応ネットワーク機器の後段のネットワーク機器とを含む。コントローラは、前段のネットワーク機器を制御する手段と、前段のネットワーク機器から通知されたパケットについて、宛先までの経路を計算する手段と、計算した経路上に、非対応ネットワーク機器が存在する場合、非対応ネットワーク機器の後段の経路情報を、後段のネットワーク機器に向けて通知する手段とを具備する。後段のネットワーク機器は、非対応ネットワーク機器からパケットを受信すると、後段の経路情報から自分の経路情報を取り出して、取り出した経路情報を基に、自分のフローテーブルに新しいエントリーを追加する手段と、パケットに、後段の残りの経路情報を付加する手段と、自分のフローテーブルに追加したエントリーに従って、後段の残りの経路情報が付加されたパケットを送信する手段とを具備する。
【００４９】
本発明の経路情報更新方法は、コントローラと、コントローラにより制御できない非対応ネットワーク機器と、非対応ネットワーク機器の前段のネットワーク機器と、非対応ネットワーク機器の後段のネットワーク機器とを含むネットワークシステムにおいて実施される。本発明の経路情報更新方法では、コントローラにより、前段のネットワーク機器を制御する。また、コントローラにより、前段のネットワーク機器から通知されたパケットについて、宛先までの経路を計算する。また、コントローラにより、計算した経路上に、非対応ネットワーク機器が存在する場合、非対応ネットワーク機器の後段の経路情報を、後段のネットワーク機器に向けて通知する。また、後段のネットワーク機器により、非対応ネットワーク機器からパケットを受信した場合、後段の経路情報から自分の経路情報を取り出して、取り出した経路情報を基に、自分のフローテーブルに新しいエントリーを追加する。また、後段のネットワーク機器により、パケットに、後段の残りの経路情報を付加する。また、後段のネットワーク機器により、自分のフローテーブルに追加したエントリーに従って、後段の残りの経路情報が付加されたパケットを送信する。
【００５０】
本発明のプログラムは、上記の本発明の経路情報更新方法における各処理のうち該当する処理を、コントローラ又はネットワーク機器として使用される計算機の各々に実行させるためのプログラムである。なお、本発明のプログラムは、記憶装置や記憶媒体に格納することが可能である。
【発明の効果】
【００５１】
１ｓｔパケット到着時の経路設定処理の際に、コントローラ間のフローテーブル更新の同期待ち合わせ回数を削減し、ネットワーク性能を向上する。
【図面の簡単な説明】
【００５２】
【図１】オープンフロー０．９．０の基本的な構成例を示す概念図である。
【図２】従来のパケット処理の流れを説明するための図である。
【図３】従来のパケット照合処理の流れを説明するための図である。
【図４】従来のネットワークシステムにおける処理の流れを説明するための図である。
【図５】本発明のネットワークシステムにおける処理の流れを説明するための図である。
【図６】本発明のネットワークシステムの基本構成を示すブロック図である。
【図７】本発明におけるフレームフォーマットを説明するための図である。
【発明を実施するための形態】
【００５３】
以下に、本発明の実施形態について添付図面を参照して説明する。
図５に示す通り、本発明のネットワークシステムは、コントローラと、ネットワーク（ＮＷ）機器と、非対応ネットワーク（ＮＷ）機器を備える。
【００５４】
コントローラは、ネットワーク（ＮＷ）機器を制御する。ここでは、ネットワーク（ＮＷ）機器は、オープンフローに対応しており、コントローラにより制御されている。非対応ネットワーク（ＮＷ）機器は、オープンフローに対応しておらず、いかなるコントローラからも制御されていない。
【００５５】
＜実施例１＞
以下、図５を参照して、従来のネットワークシステムにおける処理の流れを具体的に説明する。ここでは、オープンフローに対応したネットワーク（ＮＷ）機器として、ネットワーク（ＮＷ）機器Ａ、ネットワーク（ＮＷ）機器Ｂ、ネットワーク（ＮＷ）機器Ｃ、ネットワーク（ＮＷ）機器Ｄを示す。また、オープンフローに対応していないネットワーク（ＮＷ）機器として、非対応ネットワーク（ＮＷ）機器を示す。
【００５６】
なお、図４と図５を対比すると、従来技術と本発明との相違点が明確となる。
【００５７】
（１）１ｓｔパケット受信通知
ネットワーク（ＮＷ）機器Ａは、ノードから１ｓｔパケットを受信すると、１ｓｔパケットを受信した旨を、ネットワーク（ＮＷ）機器Ａを制御するコントローラに通知する。ネットワーク（ＮＷ）機器Ａを制御するコントローラは、ネットワーク（ＮＷ）機器Ａから通知を受け取ると、トポロジ情報に基づいて経路を計算する。このとき、ネットワーク（ＮＷ）機器Ａを制御するコントローラは、計算した経路上に、異なるコントローラによって制御されるネットワーク（ＮＷ）機器が存在し、その経路上のネットワーク（ＮＷ）機器との間に非対応ネットワーク（ＮＷ）機器が存在する場合は、ネットワーク（ＮＷ）機器の経路情報の設定を、非対応ネットワーク（ＮＷ）機器の前段と後段とに分けて行う。
【００５８】
（２）ネットワーク（ＮＷ）機器Ｃ更新指示
後段のネットワーク（ＮＷ）機器について説明する。ここでは、ネットワーク（ＮＷ）機器Ｃは、非対応ネットワーク（ＮＷ）機器からのパケットを受信し、後段の経路の始点となるネットワーク（ＮＷ）機器である。ネットワーク（ＮＷ）機器Ａを制御するコントローラは、後段の経路の始点となるネットワーク（ＮＷ）機器Ｃを制御するコントローラに対して、後段の経路の始点となるネットワーク（ＮＷ）機器Ｃを示す情報と、後段の全てのネットワーク（ＮＷ）機器Ｃ、Ｄの経路情報のリストを送信する。
【００５９】
（３）ネットワーク（ＮＷ）機器Ｃ更新
ネットワーク（ＮＷ）機器Ｃを制御するコントローラは、ネットワーク（ＮＷ）機器Ｃに対して、経路情報のリストを送信する。ネットワーク（ＮＷ）機器Ｃは、ネットワーク（ＮＷ）機器Ｃを制御するコントローラから受信した経路情報のリストを、１ｓｔパケットを処理するためのフローテーブルのエントリーとして追加し、フローテーブルを更新する。すなわち、ネットワーク（ＮＷ）機器Ｃは、１ｓｔパケットと、後段の全てのネットワーク（ＮＷ）機器Ｃ、Ｄの経路情報のリストとを対応付けたエントリーを、自分のフローテーブルに登録する。
【００６０】
（４）ネットワーク（ＮＷ）機器Ｃ更新完了
ネットワーク（ＮＷ）機器Ｃのフローテーブルの更新が完了すると、ネットワーク（ＮＷ）機器Ｃを制御するコントローラは、ネットワーク（ＮＷ）機器Ａを制御するコントローラに対して、更新完了を通知する。
【００６１】
（５）ネットワーク（ＮＷ）機器Ａ更新
前段のネットワーク（ＮＷ）機器について説明する。ここでは、ネットワーク（ＮＷ）機器Ａは、最初に１ｓｔパケットを受信し、前段の経路の始点となるネットワーク（ＮＷ）機器である。ネットワーク（ＮＷ）機器Ａを制御するコントローラは、計算した経路上で、ネットワーク（ＮＷ）機器Ｃを制御するコントローラから更新完了の通知を受けると、前段のネットワーク（ＮＷ）機器Ａのフローテーブルに新しいエントリーを追加し、フローテーブルを更新する。また、ネットワーク（ＮＷ）機器Ａを制御するコントローラは、前段のネットワーク（ＮＷ）機器Ａに対して、前段のネットワーク（ＮＷ）機器Ａと非対応ネットワーク（ＮＷ）機器との間に存在する前段の残りのネットワーク（ＮＷ）機器Ｂの経路情報のリストを送信する。
【００６２】
＜各ネットワーク（ＮＷ）機器における処理＞
以下、各ネットワーク（ＮＷ）機器における処理についても説明する。
前段のネットワーク（ＮＷ）機器Ａは、前段の残りのネットワーク（ＮＷ）機器Ｂの経路情報のリストを１ｓｔパケットに付加し、上記更新によって追加されたフローテーブルのエントリーに従って、経路情報のリストが付加された１ｓｔパケットを、次のネットワーク（ＮＷ）機器Ｂに送信する。
【００６３】
本発明では、各ネットワーク（ＮＷ）機器は、経路情報のリストを１ｓｔパケットに付加する際には、１ｓｔパケットを運ぶフレーム（Ｅｔｈｅｒ  ｆｒａｍｅ）内のデータ領域に、経路情報のリストを埋め込むものとする。このフレームフォーマットの詳細については後述する。
【００６４】
なお、フレームは、ＯＳＩ参照モデルの第２層（レイヤ２：データリンク層）の通信で使われるＰＤＵ（プロトコル・データ・ユニット）の呼び名であり、パケットは、ＯＳＩ参照モデルの第３層（レイヤ３：ネットワーク層）の通信で使われるＰＤＵの呼び名である。
【００６５】
前段の残りのネットワーク（ＮＷ）機器Ｂは、１ｓｔパケットを受信すると、１ｓｔパケットに付加された経路情報のリストから、リストの先頭の経路情報（自分の経路情報）を取り出して、取り出した経路情報を、自分のフローテーブルのエントリーに追加する。
【００６６】
ここでは、ネットワーク（ＮＷ）機器Ｂは、前段の終点のネットワーク（ＮＷ）機器であるため、１ｓｔパケットから経路情報のリストが完全に取り除かれることになる。すなわち、１ｓｔパケットは、従来のパケットと同じ形式となる。
【００６７】
その後、前段の残りのネットワーク（ＮＷ）機器Ｂは、追加されたエントリーに従って、１ｓｔパケットを、次の非対応ネットワーク（ＮＷ）機器に送信する。
【００６８】
非対応ネットワーク（ＮＷ）機器は、従来のルーティング等により、１ｓｔパケットを、後段の経路の始点となるネットワーク（ＮＷ）機器Ｃに転送する。すなわち、１ｓｔパケットは、前段の残りのネットワーク（ＮＷ）機器Ｂから非対応ネットワーク（ＮＷ）機器を経由して、後段の経路の始点となるネットワーク（ＮＷ）機器Ｃに到達する。
【００６９】
後段の経路の始点となるネットワーク（ＮＷ）機器Ｃは、１ｓｔパケットを受信すると、上記更新によって追加されたフローテーブルのエントリーに従って、１ｓｔパケットを処理する。ここでは、後段の経路の始点となるネットワーク（ＮＷ）機器Ｃは、この１ｓｔパケットに該当するエントリーに設定されている経路情報のリストから、リストの先頭の経路情報（自分の経路情報）を取り出して、取り出した経路情報を、自分のフローテーブルのエントリーに追加する。なお、後段の経路の始点となるネットワーク（ＮＷ）機器Ｃは、自分の経路情報を取り出した際、経路情報のリストが設定されているエントリー自体を、フローテーブルから削除するようにしても良い。
【００７０】
すなわち、後段の経路の始点となるネットワーク（ＮＷ）機器Ｃは、経路情報のリストを通知された際には、経路情報のリストをエントリーとして登録しておき、実際に１ｓｔパケットを受信した際に、経路情報のリストから自分の経路情報を取り出して、取り出した経路情報を、自分のフローテーブルのエントリーに追加する。
【００７１】
後段の経路の始点となるネットワーク（ＮＷ）機器Ｃは、リストの先頭の経路情報（自分の経路情報）を取り除いた残りの経路情報のリストを１ｓｔパケットに付加し、追加されたエントリーに従って、この１ｓｔパケットを、次のネットワーク（ＮＷ）機器Ｄに送信する。
【００７２】
次のネットワーク（ＮＷ）機器Ｄも、１ｓｔパケットを受信すると、１ｓｔパケットに付加された経路情報のリストから、リストの先頭の経路情報（自分の経路情報）を取り出して、取り出した経路情報を、自分のフローテーブルのエントリーに追加する。
【００７３】
その後、次のネットワーク（ＮＷ）機器Ｄは、追加されたエントリーに従って、１ｓｔパケットを、次のノードに送信する。
【００７４】
＜本発明の要旨＞
このように、本発明は、図５に示す通り、制御機能をコントローラとして分離した複数のネットワーク（ＮＷ）機器と、制御機能を分離していない非対応ネットワーク（ＮＷ）機器とを含むネットワークを対象とする。
【００７５】
非対応ネットワーク（ＮＷ）機器を含む経路において、非対応ネットワーク（ＮＷ）機器の後段の経路の始点となるネットワーク（ＮＷ）機器に対して、１ｓｔパケットの送信を開始する前に、後段の全ての経路情報を設定する。
【００７６】
非対応ネットワーク（ＮＷ）機器の前段のネットワークについては、１ｓｔパケットを最初に受信したネットワーク（ＮＷ）機器が、前段の残り全てのネットワーク（ＮＷ）機器の経路情報を１ｓｔパケットに付加して送信する。前段の最終段のネットワーク（ＮＷ）機器では、１ｓｔパケットから経路情報が完全に取り除かれるため、非対応ネットワーク（ＮＷ）機器は、経路情報が付加されていない初期状態の１ｓｔパケットを受信する。
【００７７】
非対応ネットワーク（ＮＷ）機器の後段のネットワークについては、後段の経路の始点となるネットワーク（ＮＷ）機器が、非対応ネットワーク（ＮＷ）機器から１ｓｔパケットを受信すると、上記設定された後段の全ての経路情報から自分の経路情報を取り出して正式な経路情報として登録した後、後段の残り全ての経路情報を１ｓｔパケットに付加して送信する。
【００７８】
＜経路上に非対応ネットワーク（ＮＷ）機器が複数存在する場合＞
なお、図５では、説明の簡略化のため、非対応ネットワーク（ＮＷ）機器の後段のネットワークを１つしか図示していないが、実際には、更に別の非対応ネットワーク（ＮＷ）機器の後段のネットワークが存在していても、本発明は実施可能である。
【００７９】
例えば、図５に示すネットワーク（ＮＷ）機器Ｄの次（後段）に、更に別の非対応ネットワーク（ＮＷ）機器を挟んで、ネットワーク（ＮＷ）機器Ｅ、Ｆが存在していたとする。ここで、ネットワーク（ＮＷ）機器Ｄとネットワーク（ＮＷ）機器Ｅ、Ｆの関係は、ネットワーク（ＮＷ）機器Ｂとネットワーク（ＮＷ）機器Ｃ、Ｄの関係に等しいものとする。
【００８０】
このとき、ネットワーク（ＮＷ）機器Ａを制御するコントローラは、１ｓｔパケットの通知を受けると、後段の経路の始点となるネットワーク（ＮＷ）機器Ｃを制御するコントローラに対する場合と同様に、更に後段の経路の始点となるネットワーク（ＮＷ）機器Ｅを制御するコントローラに対して、更に後段の経路の始点となるネットワーク（ＮＷ）機器Ｅを示す情報と、後段の全てのネットワーク（ＮＷ）機器Ｅ、Ｆの経路情報のリストを送信する。
【００８１】
これにより、計算した経路上に非対応ネットワーク（ＮＷ）機器が複数存在していても対応することができる。
【００８２】
＜本発明のネットワークシステムの基本構成＞
図６を参照して、本発明のネットワークシステムの基本構成の詳細について説明する。
ここでは、本発明のネットワークシステムのうち、非対応ネットワーク（ＮＷ）機器の前段及び後段のネットワーク（ＮＷ）機器と、それらのネットワーク（ＮＷ）機器を制御するコントローラについて説明する。
【００８３】
なお、非対応ネットワーク（ＮＷ）機器は、スイッチ等の従来のネットワーク（ＮＷ）機器と同じ構成である。或いは、非対応ネットワーク（ＮＷ）機器は、コントローラの障害や停止、又はコントローラとの通信回線の切断等により、コントローラの制御下から外れたネットワーク（ＮＷ）機器でも良い。
【００８４】
図６において、コントローラ１０は、図５に示す非対応ネットワーク（ＮＷ）機器の前段のネットワーク（ＮＷ）機器を制御するコントローラである。ネットワーク（ＮＷ）機器２０は、図５に示す非対応ネットワーク（ＮＷ）機器の前段のネットワーク（ＮＷ）機器である。コントローラ３０は、図５に示す非対応ネットワーク（ＮＷ）機器の後段のネットワーク（ＮＷ）機器を制御するコントローラである。ネットワーク（ＮＷ）機器４０は、図５に示す非対応ネットワーク（ＮＷ）機器の後段のネットワーク（ＮＷ）機器である。
【００８５】
コントローラ１０は、ネットワーク（ＮＷ）機器２０と物理的に分離されたサーバマシン、又は当該サーバマシン上で動作する仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）である。コントローラ１０は、複数のネットワーク（ＮＷ）機器を管理することができ、各ネットワーク（ＮＷ）機器と、専用線もしくは通常のネットワークを利用したセキュアチャンネル（Ｓｅｃｕｒｅ  ｃｈａｎｎｅｌ：安全な経路）で接続されており、オープンフロープロトコルで通信を行う。
【００８６】
コントローラ１０は、経路計算部１１と、ネットワーク（ＮＷ）機器制御部１２と、コントローラ間制御部１３を持つ。
【００８７】
経路計算部１１は、パケットの転送経路を計算する。ネットワーク（ＮＷ）機器制御部１２は、専用線もしくは通常のネットワークを介して、ネットワーク（ＮＷ）機器２０を制御する。ここでは、ネットワーク（ＮＷ）機器制御部１２は、ネットワーク（ＮＷ）機器２０からパケットを受信し、ネットワーク（ＮＷ）機器２０に経路情報のリストを送信する。コントローラ間制御部１３は、コントローラ１０の制御下にないネットワーク（ＮＷ）機器４０を制御するコントローラ３０に、ネットワーク（ＮＷ）機器４０の経路情報のリストを送信する。
【００８８】
ネットワーク（ＮＷ）機器２０は、パケット処理部２１と、フローテーブル２２と、フローテーブル管理部２３を備える。
【００８９】
パケット処理部２１は、パケットを処理する。フローテーブル２２は、通常のオープンフローの仕組みにおけるフローテーブルと同じく、パケットを転送するための経路情報を管理する。フローテーブル管理部２３は、コントローラ１０から通知された経路情報を基に、フローテーブル２２の経路情報を参照・追加・更新・削除する。
【００９０】
パケット処理部２１は、パケット送信部２１１と、パケット受信部２１２と、パケット解析部２１３と、パケット更新部２１４を備える。
【００９１】
パケット送信部２１１は、ネットワーク（ＮＷ）機器２０の物理ポートやコントローラ１０等にパケットを送信する。ネットワーク（ＮＷ）機器２０の物理ポートは、図５に示すようなノードや他のネットワーク（ＮＷ）機器に接続されている。パケット受信部２１２は、ネットワーク（ＮＷ）機器２０の物理ポートやコントローラ１０等からパケットを受信する。パケット解析部２１３は、受信したパケットを解析し、パケットの内容と、フローテーブルのエントリーの内容を照合する。パケット更新部２１４は、パケットに経路情報を埋め込む。
【００９２】
コントローラ３０は、ネットワーク（ＮＷ）機器４０と物理的に分離されたサーバマシン、又は当該サーバマシン上で動作する仮想マシン（ＶＭ）である。コントローラ３０は、複数のネットワーク（ＮＷ）機器を管理することができ、各ネットワーク（ＮＷ）機器と、専用線もしくは通常のネットワークを利用したセキュアチャンネル（Ｓｅｃｕｒｅ  ｃｈａｎｎｅｌ）で接続されており、オープンフロープロトコルで通信を行う。
【００９３】
コントローラ３０は、コントローラ１０と同じ構成である。すなわち、コントローラ３０は、経路計算部３１と、ネットワーク（ＮＷ）機器制御部３２と、コントローラ間制御部３１を持つ。
【００９４】
経路計算部３１は、パケットの転送経路を計算する。ネットワーク（ＮＷ）機器制御部３２は、専用線もしくは通常のネットワークを介して、ネットワーク（ＮＷ）機器４０を制御する。ここでは、ネットワーク（ＮＷ）機器制御部３２は、ネットワーク（ＮＷ）機器４０からパケットを受信し、ネットワーク（ＮＷ）機器４０に経路情報のリストを送信する。コントローラ間制御部３１は、コントローラ１０から、コントローラ３０が制御するネットワーク（ＮＷ）機器４０の経路情報のリストを受信する。
【００９５】
ネットワーク（ＮＷ）機器４０は、ネットワーク（ＮＷ）機器２０と同じ構成である。すなわち、ネットワーク（ＮＷ）機器４０も、パケット処理部４１と、フローテーブル４２と、フローテーブル管理部４３を備える。
【００９６】
パケット処理部４１は、パケットを処理する。フローテーブル４２は、通常のオープンフローの仕組みにおけるフローテーブルと同じく、パケットを転送するための経路情報を管理する。フローテーブル管理部４３は、コントローラ１０から通知された経路情報を基に、フローテーブル４２の経路情報を参照・追加・更新・削除する。
【００９７】
パケット処理部４１は、パケット送信部４１１と、パケット受信部４１２と、パケット解析部４１３と、パケット更新部４１４を備える。
【００９８】
パケット送信部４１１は、ネットワーク（ＮＷ）機器４０の物理ポートやコントローラ１０等にパケットを送信する。ネットワーク（ＮＷ）機器４０の物理ポートは、図５に示すようなノードや他のネットワーク（ＮＷ）機器に接続されている。パケット受信部４１２は、ネットワーク（ＮＷ）機器４０の物理ポートやコントローラ１０等からパケットを受信する。パケット解析部４１３は、受信したパケットを解析し、パケットの内容と、フローテーブルのエントリーの内容を照合する。パケット更新部４１４は、パケットに経路情報を埋め込む。
【００９９】
＜本発明におけるフレームフォーマット＞
本発明では、フレームフォーマットにおいて経路情報のリストを埋め込む領域を定義した新規のプロトコルを用意する。新規のプロトコルのヘッダ情報は、少なくとも経路情報のリストとヘッダ長を情報に持つ。新規のプロトコルのパケットを運ぶフレームには、上位プロトコル種別を表す領域（ｆｉｅｌｄ）に新規のプロトコル用に定義した識別情報（ＩＤ）を指定する。
【０１００】
図７に示す通り、本発明におけるフレームフォーマットは、ＩＥＥＥ  ８０２．３準拠のフレームフォーマットをベース（基礎）としており、プリアンブルと、ＳＦＤ（Ｓｔａｒｔ  Ｆｒａｍｅ  Ｄｅｌｉｍｉｔｅｒ）と、ｄｓｔ（宛先アドレス）と、ｓｒｃ（送信元アドレス）と、ＴＰＩＤ（Ｔａｇ  Ｐｒｏｔｏｃｏｌ  Ｉｄｅｎｔｉｆｉｅｒ）と、ＴＣＩ（Ｔａｇ  Ｃｏｎｔｒｏｌ  Ｉｎｆｏｒｍａｔｉｏｎ）と、Ｌｅｎ／ｔｙｐｅ（長さ／タイプ）と、Ｄａｔａ／ＬＬＣ（Ｄａｔａ／Ｌｏｇｉｃａｌ  Ｌｉｎｋ  Ｃｏｎｔｒｏｌ）と、ＦＣＳ（Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ）等の領域を含む。
【０１０１】
本発明では、経路情報のリストを埋め込むための領域として、Ｄａｔａ／ＬＬＣを使用する。Ｄａｔａ／ＬＬＣは、ヘッダ長と、経路情報リストと、１ｓｔパケットを含む。パケット更新部２１４は、コントローラ１００から通知された経路情報のリストを、Ｄａｔａ／ＬＬＣ内の経路情報リストの領域に格納する。また、パケット更新部２１４は、Ｄａｔａ／ＬＬＣ内のデータ領域における個々のデータ長／タイプや、新規のプロトコル用に定義した識別情報（ＩＤ）を、Ｌｅｎ／ｔｙｐｅに設定する。
【０１０２】
＜基本的な動作の説明＞
図６において、コントローラ１０は、ネットワーク（ＮＷ）機器２０を制御し、コントローラ３０は、ネットワーク（ＮＷ）機器４０を制御する。ネットワーク（ＮＷ）機器２０は、１ｓｔパケットを受信し、前段の経路の始点となるネットワーク（ＮＷ）機器とする。ネットワーク（ＮＷ）機器４０は、非対応ネットワーク（ＮＷ）機器からパケットを受信し、後段の経路の始点となるネットワーク（ＮＷ）機器とする。
【０１０３】
図６を参照して、ネットワーク（ＮＷ）機器２０が１ｓｔパケットを受信したときの動作を説明する。
【０１０４】
ネットワーク（ＮＷ）機器２０において、パケット受信部２１２は、パケットを受信する。
【０１０５】
パケット解析部２１３は、パケットを解析し、パケットを運ぶフレームが本発明におけるフレームフォーマットかどうかを判定する。ここでは、パケット解析部２１３は、パケットを解析し、パケットを運ぶフレームに、新規のプロトコル用に定義した識別情報（ＩＤ）が付加されている場合、又は、パケットを運ぶフレームから経路情報のリストを検出した場合、パケットを運ぶフレームが本発明におけるフレームフォーマットであると判断する。
【０１０６】
パケットを運ぶフレームが本発明におけるフレームフォーマットではない場合、パケット解析部２１３は、パケットの内容と、フローテーブル２２のエントリーの内容を照合する。
【０１０７】
当該パケットに対し、フローテーブル２２内に該当するエントリーが存在しない場合、パケット送信部２１１は、コントローラ１０にその旨を通知する。
【０１０８】
コントローラ１０において、ネットワーク（ＮＷ）機器制御部１２は、１ｓｔパケット到着の通知を受信する。
【０１０９】
経路計算部１１は、１ｓｔパケットについて、宛先までの経路を計算する。
【０１１０】
経路計算部１１は、計算した経路上に非対応ネットワーク（ＮＷ）機器が含まれる場合、経路上の非対応ネットワーク（ＮＷ）機器の前段のネットワーク（ＮＷ）機器の経路情報と、後段のネットワーク（ＮＷ）機器の経路情報を、それぞれ作成する。
【０１１１】
コントローラ間制御部１３は、後段のネットワーク（ＮＷ）機器を制御するコントローラ３０に対して、非対応ネットワーク（ＮＷ）機器の後段の経路の始点がネットワーク（ＮＷ）機器４０であることを示す情報と、後段の全てのネットワーク（ＮＷ）機器の経路情報のリストを送信する。
【０１１２】
コントローラ３０において、コントローラ間制御部３３は、コントローラ１０から、非対応ネットワーク（ＮＷ）機器の後段の経路の始点がネットワーク（ＮＷ）機器４０であることを示す情報と、後段の全てのネットワーク（ＮＷ）機器の経路情報のリストを受信する。
【０１１３】
ネットワーク（ＮＷ）機器制御部３２は、経路情報のリストをネットワーク（ＮＷ）機器４０に送信する。
【０１１４】
ネットワーク（ＮＷ）機器４０において、フローテーブル管理部４３は、フローテーブル４２のエントリーに、１ｓｔパケットに対する処理（Ａｃｔｉｏｎ）として、経路情報のリストを設定する。
【０１１５】
パケット送信部４１１は、ネットワーク（ＮＷ）機器４０のフローテーブル４２の更新が完了すると、コントローラ３０に、フローテーブル４２の更新完了を通知する。
【０１１６】
コントローラ３０において、コントローラ間制御部３３は、コントローラ１０に、ネットワーク（ＮＷ）機器４０のフローテーブル４２の更新完了を通知する。
【０１１７】
コントローラ１０は、ネットワーク（ＮＷ）機器２０から非対応ネットワーク（ＮＷ）機器までの経路上の全てのネットワーク（ＮＷ）機器の経路情報を通知元のネットワーク（ＮＷ）機器２０に送信する。
【０１１８】
通知元のネットワーク（ＮＷ）機器２０において、パケット受信部２１２は、コントローラ１０から経路上の全てのネットワーク（ＮＷ）機器の経路情報のリストを受信すると、自分の経路情報を取り出してフローテーブル管理部２３に通知する。
【０１１９】
フローテーブル管理部２３は、自分の経路情報を基に、フローテーブル２２に新たなエントリーを追加し、フローテーブル２２を更新する。
【０１２０】
パケット更新部２１４は、本発明におけるフレームフォーマットを定義した新規のプロトコルに従って、１ｓｔパケットを運ぶフレームに、自分以外のネットワーク（ＮＷ）機器の経路情報のリストを付加する。
【０１２１】
その後、パケット送信部２１１は、上記更新によりフローテーブル２２に追加されたエントリーに従い、１ｓｔパケットを送信する。
【０１２２】
ネットワーク（ＮＷ）機器４０において、パケット受信部４１２は、非対応ネットワーク（ＮＷ）機器を経由して配送された１ｓｔパケットを受信する。
【０１２３】
パケット解析部４１３は、受信した１ｓｔパケットを解析し、１ｓｔパケットの内容がコントローラ１０からの通知に基づいてフローテーブル４２に追加したエントリーに合うことを確認する。すなわち、パケット解析部４１３は、１ｓｔパケットの内容が上記更新によって追加されたエントリーの内容に合致するか確認する。
【０１２４】
フローテーブル管理部４３は、１ｓｔパケットの内容がフローテーブル４２に追加したエントリーに合う場合、当該エントリーの処理（Ａｃｔｉｏｎ）に含まれる経路情報のリストから自分の経路情報を取り出してフローテーブル４２に設定し、元のエントリーを削除する。すなわち、フローテーブル管理部４３は、自分の経路情報をフローテーブル４２の新規エントリーとして追加し、経路情報のリストのエントリーを削除する。また、フローテーブル管理部４３は、当該経路情報から、次の送信先ネットワーク（ＮＷ）機器を決定する。
【０１２５】
パケット更新部４１４は、自分の経路情報を取り除いた経路情報のリストを１ｓｔパケットに付加する。
【０１２６】
パケット送信部４１１は、フローテーブル４２に設定した自分の経路情報に従って、当該１ｓｔパケットを送信する。
【０１２７】
このように、本発明では、パケット転送と経路制御の機能が分離されたネットワーク（ＮＷ）機器で構成されるネットワークにおいて、非対応ネットワーク（ＮＷ）機器が経路上に存在し、複数のコントローラをまたぐ通信が発生する場合に、１ｓｔパケット処理の際のコントローラ間のフローテーブル更新同期待ち合わせ回数を削減することにより、ネットワーク性能が向上する。
【０１２８】
＜実施例２＞
他の実施例として、非対応ネットワーク（ＮＷ）機器の前後のネットワーク（ＮＷ）機器を制御するコントローラが、同一のコントローラである構成が考えられる。
【０１２９】
例えば、図５に示す本発明のネットワークシステムにおいて、ネットワーク（ＮＷ）機器Ａ、Ｂと、ネットワーク（ＮＷ）機器Ｃを、同一のコントローラが制御している事例である。
【０１３０】
図６と共に示した実施例１の動作の説明において、コントローラ１０とコントローラ３０が同一のコントローラである場合は、コントローラ間の通信を行わずに、コントローラ１０が直接ネットワーク（ＮＷ）機器４０の経路情報を更新する。
【０１３１】
＜実施例３＞
他の実施例として、非対応ネットワーク（ＮＷ）機器の前後のネットワーク（ＮＷ）機器が、同一のネットワーク（ＮＷ）機器である構成が考えられる。
【０１３２】
例えば、図５に示す本発明のネットワークシステムにおいて、ネットワーク（ＮＷ）機器Ａ、Ｂと、ネットワーク（ＮＷ）機器Ｃが、同一のネットワーク（ＮＷ）機器である事例である。この場合、これらのネットワーク（ＮＷ）機器は、当然に同一のコントローラにより制御されている。
【０１３３】
図６と共に示した実施例１の動作の説明において、ネットワーク（ＮＷ）機器２０とネットワーク（ＮＷ）機器４０が同一のネットワーク（ＮＷ）機器の場合も、非対応ネットワーク（ＮＷ）機器の前段と後段に分けて処理を行う。この場合、ネットワーク（ＮＷ）機器２０がネットワーク（ＮＷ）機器４０を兼ねている。
【０１３４】
コントローラ１０は、１ｓｔパケット到着の通知を受けると、後段の経路情報のリストをネットワーク（ＮＷ）機器２０のフローテーブル２２に設定する。これにより、ネットワーク（ＮＷ）機器２０は、後段のネットワーク（ＮＷ）機器として機能することが可能になる。
【０１３５】
その後、ネットワーク（ＮＷ）機器２０は、前段のネットワーク（ＮＷ）機器として、前段の経路における１ｓｔパケットの転送を開始する。
【０１３６】
ネットワーク（ＮＷ）機器２０は、非対応ネットワーク（ＮＷ）機器から１ｓｔパケットを受信すると、後段の経路情報のリストの先頭の経路情報（自分の経路情報）を取り出して、取り出した経路情報を基に、自分のフローテーブル２２に新たなエントリーを追加する。その後、ネットワーク（ＮＷ）機器２０は、後段の残りの経路情報のリストを１ｓｔパケットに付加し、追加したエントリーに従って、この１ｓｔパケットを次のネットワーク（ＮＷ）機器に送信する。このとき、ネットワーク（ＮＷ）機器２０は、フローテーブル２２から、後段の経路情報のリスト自体が設定されたエントリーを削除しても良い。
【０１３７】
＜実施例４＞
他の実施例として、非対応ネットワーク（ＮＷ）機器の後段の経路情報のリストについて、後段の経路の始点となるネットワーク（ＮＷ）機器には設定せず、それを制御するコントローラに通知するのみとする構成が考えられる。
【０１３８】
例えば、図５に示す本発明のネットワークシステムにおいて、ネットワーク（ＮＷ）機器Ｃには後段の経路情報のリストを設定せず、ネットワーク（ＮＷ）機器Ｃを制御するコントローラにのみ後段の経路情報のリストを通知する事例である。
【０１３９】
図６と共に示した実施例１の動作の説明において、コントローラ１０からコントローラ３０に経路情報のリストを送信した時点で、完了通知をコントローラ３０からコントローラ１０に送信する。
【０１４０】
後段のネットワーク（ＮＷ）機器４０において、パケット受信部４１２は、１ｓｔパケットを受信する。
【０１４１】
パケット解析部４１３は、受信した１ｓｔパケットを解析し、１ｓｔパケットの内容と、フローテーブル４２のエントリーの内容を照合する。
【０１４２】
このとき、フローテーブル４２には１ｓｔパケットに該当するエントリーが存在しないため、パケット送信部４１１は、コントローラ３０に、１ｓｔパケットが到着した旨を通知する。
【０１４３】
コントローラ３０は、１ｓｔパケット到着の通知を受けると、経路を計算せず、コントローラ１０から受信した経路情報のリストをネットワーク（ＮＷ）機器４０に送信する。ネットワーク（ＮＷ）機器４０は、経路情報のリストから、リストの先頭の経路情報（自分の経路情報）を取り出して、取り出した経路情報を、自分のフローテーブルのエントリーに追加する。その後、ネットワーク（ＮＷ）機器４０は、残りの経路情報のリストを１ｓｔパケットに付加し、追加されたエントリーに従って、経路情報のリストが付加された１ｓｔパケットを、次のネットワーク（ＮＷ）機器に転送する。
【０１４４】
なお、コントローラ３０は、コントローラ１０から受信した経路情報のリストを基に、ネットワーク（ＮＷ）機器４０のフローテーブル４２に新たなエントリーを追加し、フローテーブル４２を更新しても良い。この場合、コントローラ３０は、経路情報のリストから、追加したエントリーの経路情報を削除し、残りの経路情報のリストをネットワーク（ＮＷ）機器４０に通知する。ネットワーク（ＮＷ）機器４０は、残りの経路情報のリストを１ｓｔパケットに付加し、上記更新により追加されたエントリーに従って、経路情報のリストが付加された１ｓｔパケットを、次のネットワーク（ＮＷ）機器に転送する。
【０１４５】
すなわち、本実施例では、後段のネットワーク（ＮＷ）機器４０の動作は、前段のネットワーク（ＮＷ）機器２０が１ｓｔパケットを受信したときと同じ動作である。
【０１４６】
なお、上記の各実施例は、組み合わせて実施することも可能である。
【０１４７】
＜産業上の利用分野＞
本発明は、オープンフロー（Ｏｐｅｎｆｌｏｗ）に代表される制御機能を外部のコントローラに分離したネットワーク機器と、制御機能を内部に持つ従来型のネットワーク機器で構成されるネットワークシステムに適用することができる。
【０１４８】
＜本発明の特徴＞
本発明は、制御機能を持つコントローラがそれぞれ異なる複数のネットワーク機器の混在環境で、又は、制御不可能なネットワーク機器を挟んで異なるネットワークに所属する複数のネットワーク機器の混在環境で、各ネットワーク機器内部の経路情報テーブルを更新するための技術である。
【０１４９】
コントローラは、ネットワーク（ＮＷ）機器と非対応ネットワーク（ＮＷ）機器が混在する経路上において、非対応ネットワーク（ＮＷ）機器の次のネットワーク（ＮＷ）機器に対して、経路情報のリストを設定する。
【０１５０】
非対応ネットワーク（ＮＷ）機器の次のネットワーク（ＮＷ）機器は、設定された経路情報のリスト内に自分の経路情報が存在すれば、リストから自分の経路情報を取り出し、自分の経路情報を更新する。
【０１５１】
非対応ネットワーク（ＮＷ）機器の次のネットワーク（ＮＷ）機器は、自分の経路情報に基づいて、次のネットワーク（ＮＷ）機器に、残りの経路情報のリストを付加したパケットを転送する。
【０１５２】
すなわち、本発明は、パケット転送と経路制御の機能が分離されたネットワーク（ＮＷ）機器と、経路制御の機能を持つ外部のコントローラと、制御機能を内部に持つ従来型の非対応ネットワーク（ＮＷ）機器で構成されるネットワークシステムに関する。このネットワークシステムにおいて、外部のコントローラは、経路上の非対応ネットワーク（ＮＷ）機器の次のネットワーク（ＮＷ）機器に対して、それ以降の経路情報のリストを設定する。ネットワーク（ＮＷ）機器は、設定された経路情報のリストに基づいて、自分の経路情報を更新し、経路情報のリストをパケットと共に転送する。
【０１５３】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【０１５４】
１０、３０…  コントローラ
１１、３１…  経路計算部
１２、３２…  ネットワーク（ＮＷ）機器制御部
１３、３３…  コントローラ間制御部
２０、４０…  ネットワーク（ＮＷ）機器
２１、４１…  パケット処理部
２１１、４１１…  パケット送信部
２１２、４１２…  パケット受信部
２１３、４１３…  パケット解析部
２１４、４１４…  パケット更新部
２２、４２…  フローテーブル
２３、４３…  フローテーブル管理部
【図１】
0005413737.tif 000002
【図２】
0005413737.tif 000003
【図３】
0005413737.tif 000004
【図４】
0005413737.tif 000005
【図５】
0005413737.tif 000006
【図６】
0005413737.tif 000007
【図７】
0005413737.tif 000008