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