以下、本発明の実施形態を図面を参照して説明する。図1は、本発明によるパケット転送経路取得システムの第1の実施形態の構成例を示すブロック図である。図1に示すパケット転送経路取得システム1は、スイッチ111〜124と、送信元サーバ2と、宛先サーバ3と、統合ネットワークコントローラ4と、第1のネットワークコントローラ5と、第2のネットワークコントローラ6とを含む。
パケット転送経路取得システム1は、例えば、OpenFlowのようなC/D分離型ネットワーク制御方式を採用する。
送信元サーバ2は、パケットを送信する機能を有する。また、宛先サーバ3は、送信元サーバ2が送信したパケットを受信する機能を有する。
スイッチ111〜114は、第1のネットワークコントローラ5から設定された内容に従って、パケットを処理または転送する機能を有する。また、スイッチ121〜124は、第2のネットワークコントローラ6から設定された内容に従って、パケットを処理または転送する機能を有する。
なお、スイッチ111からスイッチ114までが、第1のネットワークコントローラ5配下のスイッチである。図2は、ネットワークコントローラ配下のパケット受信スイッチとパケット受信ポートおよびパケット送信スイッチとパケット送信ポートを示す説明図である。
図2(a)に示すように、第1のネットワークコントローラ5配下のスイッチの中で、最初にパケットを受信する端のスイッチをIngressスイッチと呼ぶ。また、Ingressスイッチの中の、パケットを受信するポートをIngressポートと呼ぶ。
また、図2(a)に示すように、第1のネットワークコントローラ5配下のスイッチの中で、宛先サーバ3または異なるネットワークコントローラ配下のスイッチに転送されるパケットを最後に処理する端のスイッチをEgressスイッチと呼ぶ。また、Egressスイッチの中の、パケットを送信するポートをEgressポートと呼ぶ。
Ingressスイッチは、パケットを受信すると、ネットワークコントローラから設定されたパケットの処理情報に従ってパケットを処理する。しかし、受信したパケットに対する処理がネットワークコントローラから設定されていない場合、Ingressスイッチは、受信したパケットおよび関連情報を含んだ新規パケットメッセージを、第1のネットワークコントローラ5に通知する。
以上、Ingressスイッチ、Ingressポート、およびEgressスイッチ、Egressポートを、第1のネットワークコントローラ5配下のスイッチを用いて説明した。なお、図2(b)に示すように、第2のネットワークコントローラ6配下のスイッチも同様に、最初にパケットを受信する端のスイッチおよび受信するポートを、それぞれIngressスイッチおよびIngressポートと呼ぶ。また、最後に処理する端のスイッチおよび送信するポートを、それぞれEgressスイッチおよびEgressポートと呼ぶ。
図3は、統合ネットワークコントローラ4の構成例を示すブロック図である。図3に示すように、統合ネットワークコントローラ4は、ネットワーク設定部41と、転送経路表示部42とを含む。
統合ネットワークコントローラ4は、複数のネットワークコントローラを管理するメタコントローラとしての機能を有する。本実施形態において、統合ネットワークコントローラ4は、第1のネットワークコントローラ5と、第2のネットワークコントローラ6とを管理する。
ネットワーク設定部41は、管理下にある第1のネットワークコントローラ5および第2のネットワークコントローラ6に対してネットワーク設定を通知する機能を有する。各ネットワークコントローラは、通知されたネットワーク設定に基づいて、各ネットワークコントローラ配下のスイッチを制御する。
転送経路表示部42は、パケットの転送経路を表示するために、配下の第1のネットワークコントローラ5および第2のネットワークコントローラ6に問い合わせ、データフローを取得する機能を有する。
データフローを取得するために、転送経路表示部42は、送信元サーバ2が接続されているスイッチを管理している第1のネットワークコントローラ5に対して、送信元サーバ2のMAC(Media Access Control)アドレス、IP(Internet Protocol)アドレス、VLAN(Virtual Local Area Network) IDを指定してデータフローを要求する。転送経路表示部42は、第1のネットワークコントローラ5からデータフローおよび隣接する第2のネットワークコントローラ6におけるデータフローIDを取得する。
次いで、転送経路表示部42は、取得した第2のネットワークコントローラ6におけるデータフローIDを基に、第2のネットワークコントローラ6に対してデータフローを要求する。転送経路表示部42は、第2のネットワークコントローラ6からデータフローIDに対応するデータフローを取得する。以上の処理により取得した一連のデータフローを組み合わせることで、転送経路表示部42は、送信元サーバ2からのパケットの転送経路を求め、表示する。
図4は、第1のネットワークコントローラ5の構成例を示すブロック図である。また、図5は、第2のネットワークコントローラ6の構成例を示すブロック図である。第1のネットワークコントローラ5および第2のネットワークコントローラ6は、統合ネットワークコントローラ4から取得したネットワーク設定に基づいて、それぞれのネットワークコントローラ配下のスイッチを制御する機能を有する。
図4に示すように、第1のネットワークコントローラ5は、データフロー記憶部51と、境界ポート記憶部52と、制御パケット記憶部53と、データフロー管理部54と、スイッチ設定部55と、パケット処理部56とを含む。また、図5に示すように、第2のネットワークコントローラ6は、データフロー記憶部61と、境界ポート記憶部62と、制御パケット記憶部63と、データフロー管理部64と、スイッチ設定部65と、パケット処理部66とを含む。
データフロー記憶部51は、第1のネットワークコントローラ5で生成されたデータフローに関連する情報を保存する。データフローは、ネットワークコントローラが新規パケットメッセージの中で受信したパケットをどのように処理するかを示す情報である。データフローには、パケットの転送経路情報、パケットに適用される処理および適用対象のパケットの条件(マッチ条件)などが含まれる。
データフロー記憶部51に記憶されるデータフロー情報の例を図6に示す。図6は、データフロー情報の一例を示す説明図である。
図6に示すように、データフロー情報は、データフローIDと、データフローと、後方データフローIDとで構成される。
データフローIDは、対応するデータフロー情報の対象であるデータフローを示す。データフローは、データフローIDに対応する生成されたデータフローである。
後方データフローIDは、データフローIDに対応するフローに従うパケットが、更に後方ネットワークコントローラ管理下にあるネットワークを流れる場合に、パケットを流すためのフローに対応するデータフローIDである。後方データフローIDは、後方ネットワークコントローラによって管理されている。ネットワーク設定によっては、1つのフローに対して複数の後方フローが存在する場合がある。その場合、データフロー情報には複数の後方データフローIDが登録される。
境界ポート記憶部52は、第1のネットワークコントローラ5配下のスイッチのポートのうち、異なるネットワークコントローラ配下のスイッチと接続されている境界ポートの情報を記憶する機能を有する。どのポートが境界ポートであるかを示す情報は、統合ネットワークコントローラ4が通知したネットワーク設定に含まれている。図1に示すシステムの構成例において、スイッチ114のEgressポートが境界ポートに相当する。
制御パケット記憶部53は、異なるネットワークコントローラ間で送受信される制御パケットを一時的に保存する機能を有する。制御パケット記憶部53に保存される制御パケットは、前方ネットワークコントローラから送信されてきた制御パケットである。保存される制御パケットのペイロード部には、前方ネットワークコントローラのフローに関するデータフローIDが保存されている。
データフロー管理部54は、第1のネットワークコントローラ5がIngressスイッチから新規パケットメッセージを受信した時に、メッセージに含まれるパケットの転送経路や、パケットに対する処理内容などを含むデータフローを生成する機能を有する。データフロー管理部54は、生成したデータフローを、各データフローを識別するためのデータフローIDとともに、データフロー記憶部51に保存する。
スイッチ設定部55は、第1のネットワークコントローラ5がIngressスイッチから新規パケットメッセージを受信した時に、データフロー管理部54が求めたパケットの転送経路にしたがい、経路におけるスイッチにパケットの処理情報を設定する機能を有する。
また、スイッチ設定部55は、第1のネットワークコントローラ5が起動された時に、境界ポート記憶部52を参照して、境界ポートを管理しているスイッチ114に対して、「制御パケットを受信した時に、受信したパケットの情報を新規パケットメッセージとして第1のネットワークコントローラ5に通知する」という処理情報を設定する。
パケット処理部56は、出力用パケット生成部561と、制御パケット生成部562と、制御パケット受信部563とを有する。なお、図5に示すように、パケット処理部66もパケット処理部56と同様に、出力用パケット生成部661と、制御パケット生成部662と、制御パケット受信部663とを有する。
出力用パケット生成部561は、第1のネットワークコントローラ5がIngressスイッチから新規パケットメッセージを受信した時に、データフロー管理部54が求めたパケットへの処理内容をメッセージに含まれるパケットに適用する。処理内容を適用することによって、出力用パケット生成部561は、出力用パケットを生成し、Egressスイッチに通知する。
制御パケット生成部562は、制御パケットを生成および送信する機能を有する。制御パケット生成部562は、第1のネットワークコントローラ5がIngressスイッチから新規パケットメッセージを受信した時に、境界ポート記憶部52を参照する。
新規パケットメッセージで受信したパケットが、前方ネットワークコントローラ配下のスイッチから転送されてきたパケットである場合、または後方ネットワークコントローラ配下のスイッチへ転送されるパケットである場合、制御パケット生成部562は、制御パケットを生成し送信する。すなわち、第1のネットワークコントローラ5で新しいデータフローが生成されたことが、隣接するネットワークに対して通知される。
受信したパケットが前方ネットワークコントローラから転送されてきたパケットの場合、制御パケット生成部562は、制御パケットを生成する。そして、制御パケット生成部562は、生成した制御パケットをIngressポートから送信する。
図7は、制御パケット生成部が生成する制御パケットの例を示す説明図である。図7(a)に示すように、送信される制御パケットのパケットヘッダ部の、送信元MACアドレスには受信したパケットの宛先MACアドレスが、送信元IPアドレスには受信したパケットの宛先IPアドレスが、送信元レイヤ4(以下、L4と呼ぶ。)ポート番号には受信したパケットの宛先L4ポート番号がそれぞれ設定される。
また、制御パケットのパケットヘッダ部の、宛先MACアドレスには受信したパケットの送信元MACアドレスが、宛先IPアドレスには受信したパケットの送信元IPアドレスが、宛先L4ポート番号には受信したパケットの送信元L4ポート番号が、Ethernet(登録商標)タイプ番号(以下、イーサタイプと呼ぶ。)には専用のイーサタイプ(以下、専用イーサタイプと呼ぶ。)がそれぞれ設定される。
上記以外のパケットヘッダ部のフィールドには、受信したパケットと同じ値が設定される。なお、イーサタイプは、IANA(Internet Assigned Numbers Authority)によって管理されている。しかし、本実施形態では、IANAで使用されていない専用イーサタイプを使用する。このように、制御パケット生成部562は、受信したパケットの送信元と宛先を入れ替えることによって、制御パケットを生成する。
なお、制御パケットを識別するための手段として、本実施形態ではパケットのイーサタイプを使用しているが、パケットヘッダ部の他のフィールドを使用してもよい。
送信する制御パケットのペイロード部に値を設定する際に、制御パケット生成部562は、受信したパケットと同じパケットヘッダ部を持つ制御パケットが、制御パケット記憶部53に保存されているか確認する。
制御パケットが保存されている場合、制御パケット生成部562は、保存されている制御パケットのペイロード部のデータフローIDと、受信したパケットに対してデータフロー管理部54で生成されたデータフローのデータフローIDとの、2つのデータフローIDをペイロード部に設定する。設定した制御パケットを送信した後、制御パケット生成部562は、制御パケット記憶部53に保存されていた制御パケットを削除する。
制御パケットが保存されていない場合、制御パケット生成部562は、受信したパケットに対してデータフロー管理部54で生成されたデータフローのデータフローIDのみをペイロード部に設定する。
また、受信したパケットが後方ネットワークコントローラへ転送されるパケットの場合、制御パケット生成部562は、制御パケットを生成する。そして、制御パケット生成部562は、生成した制御パケットをEgressポートから送信する。
図7(b)に示すように、送信される制御パケットのパケットヘッダ部には、イーサタイプを除いて、出力用パケットのパケットヘッダ部の値と同じ値が設定される。イーサタイプには、専用イーサタイプが設定される。その結果、後方ネットワークコントローラ配下のスイッチへ転送される出力用パケットのパケットヘッダ部の値と、イーサタイプを除いて同じ値をパケットヘッダ部に持つ制御パケットが生成される。
制御パケット生成部562は、送信する制御パケットのペイロード部に、受信したパケットに対してデータフロー管理部54で生成されたデータフローのデータフローIDを設定する。さらに、制御パケット生成部562は、制御パケットに要応答フラグも設定する。
要応答フラグは、要応答フラグが設定された制御パケットが、前方ネットワークコントローラから後方ネットワークコントローラへ送信される制御パケットであることを示す情報である。要応答フラグが設定された制御パケットを受信したネットワークコントローラは、応答用の制御パケットを送信する。
制御パケット受信部563は、第1のネットワークコントローラ5がIngressスイッチから新規パケットメッセージを受信した時に、メッセージに含まれるパケットのイーサタイプが専用イーサタイプである場合に、制御パケット受信処理を行う機能を有する。
受信した制御パケットに要応答フラグが付いている場合、受信した制御パケットは、前方ネットワークコントローラが送信した制御パケットであることを意味する。この場合、制御パケット受信部563は、受信した制御パケットを制御パケット記憶部53に保存する。保存した後、制御パケット受信部563は、所定時間経過後に制御パケット記憶部53に制御パケットが保存されたままか否かを確認する。なお、所定時間は、例えば10秒である。
制御パケットが既に保存されていない場合、所定時間の間に新規のデータフローが生成され、データフロー生成に伴う制御パケットが前方ネットワークコントローラに対して既に送信されている。以降、制御パケット受信部563は、制御パケットを送信しない。
制御パケットがまだ保存されたままの場合、制御パケット受信部563は、データフロー記憶部51に保存されている各データフローのマッチ条件と、受信した制御パケットのパケットヘッダ部とを比較する。比較することによって、制御パケット受信部563は、第1のネットワークコントローラ5が管理しているデータフローの中に、受信した制御パケットが流れるフローに対応するデータフローがあるか否かを確認する。
マッチするデータフローがある場合、前方ネットワークコントローラで生成されたデータフローが、第1のネットワークコントローラ5の既存のデータフローとつながる。制御パケット受信部563は、前方ネットワークに対して、マッチしたデータフローの情報を含めた応答用の制御パケットを送信する。
図7(a)に示すように、応答用の制御パケットのパケットヘッダ部の、送信元MACアドレスには受信した制御パケットの宛先MACアドレスが、送信元IPアドレスには受信した制御パケットの宛先IPアドレスが、送信元L4ポート番号には受信した制御パケットの宛先L4ポート番号がそれぞれ設定される。
また、応答用の制御パケットのパケットヘッダ部の、宛先MACアドレスには受信した制御パケットの送信元MACアドレスが、宛先IPアドレスには受信した制御パケットの送信元IPアドレスが、宛先L4ポート番号には受信した制御パケットの送信元L4ポート番号が、イーサタイプには専用イーサタイプがそれぞれ設定される。
上記以外のパケットヘッダ部のフィールドには、受信した制御パケットと同じ値が設定される。このように、制御パケット受信部563は、受信した制御パケットの送信元と宛先を入れ替えることによって制御パケットを生成する。
制御パケット受信部563は、応答用の制御パケットのペイロード部に、受信した制御パケットのペイロード部に保存されていた前方ネットワークコントローラのデータフローIDと、比較によりマッチしたデータフローのデータフローIDとを設定する。
マッチするデータフローがない場合、制御パケットにマッチするデータフローが新規に作成された時に、データフロー作成に伴う制御パケットが前方ネットワークコントローラに送信される。よって、制御パケット受信部563は、制御パケットを送信しない。
受信した制御パケットに要応答フラグが付いていない場合、受信した制御パケットは、後方ネットワークコントローラが送信した制御パケットであることを意味する。この場合、制御パケット受信部563は、受信した制御パケットのペイロード部に含まれているデータフローIDを参照する。
ペイロード部に第1のネットワークコントローラ5でのデータフローIDと後方ネットワークコントローラでのデータフローIDの2つが保存されている場合、受信した制御パケットは、応答用の制御パケットであることを意味する。この場合、制御パケット受信部563は、データフロー記憶部51に記憶されている、ペイロード部に保存されていた第1のネットワークコントローラ5でのデータフローIDに該当するデータフロー情報の後方データフローIDとして、ペイロード部に含まれていた後方ネットワークコントローラでのデータフローIDを保存する。
ペイロード部に後方ネットワークコントローラでのデータフローIDのみが保存されている場合、後方ネットワークコントローラで新しくデータフローが生成されたことを意味する。この場合、制御パケット受信部563は、後方ネットワークコントローラのデータフローIDを第1のネットワークコントローラ5の既存のデータフローと結びつける。
図8は、制御パケット受信部が生成する変換パケットの例を示す説明図である。図8に示すように、制御パケット受信部563は、受信した制御パケットのパケットヘッダ部を参照して、送信元と宛先を入れ替えた変換パケットを生成する。
制御パケット受信部563は、生成した変換パケットのパケットヘッダ部と、データフロー記憶部51に保存されている各データフローの、パケットのマッチ条件およびパケットに適用される処理を基に、ペイロード部に保存された後方ネットワークコントローラのデータフローIDと結びつく、第1のネットワークコントローラ5でのデータフローを求める。
制御パケット受信部563は、求めたデータフローIDに該当するデータフロー情報の後方データフローIDとして、ペイロード部に保存されていた後方ネットワークコントローラでのデータフローIDを保存する。
なお、図5に示す第2のネットワークコントローラ6に含まれるデータフロー記憶部61、境界ポート記憶部62、制御パケット記憶部63、データフロー管理部64、スイッチ設定部65およびパケット処理部66は、それぞれデータフロー記憶部51、境界ポート記憶部52、制御パケット記憶部53、データフロー管理部54、スイッチ設定部55およびパケット処理部56と同様の処理を行う。また、パケット処理部66に含まれる出力用パケット生成部661、制御パケット生成部662および制御パケット受信部663も、それぞれ出力用パケット生成部561、制御パケット生成部562および制御パケット受信部563と同様の処理を行うため、第2のネットワークコントローラ6に含まれる各部の説明は省略する。
なお、本実施形態におけるパケット転送経路取得システム1において、スイッチ111〜124、送信元サーバ2、宛先サーバ3、統合ネットワークコントローラ4、第1のネットワークコントローラ5および第2のネットワークコントローラ6は、例えば、プログラムに従って処理を実行するCPU(Central Processing Unit)によって実現される。また、スイッチ111〜124、送信元サーバ2、宛先サーバ3、統合ネットワークコントローラ4、第1のネットワークコントローラ5および第2のネットワークコントローラ6は、ハードウェアによって実現されてもよい。
また、ネットワーク設定部41、転送経路表示部42、データフロー管理部54、スイッチ設定部55、パケット処理部56、データフロー管理部64、スイッチ設定部65およびパケット処理部66は、例えば、プログラム制御に従って処理を実行するCPUによって実現される。
また、データフロー記憶部51、境界ポート記憶部52、制御パケット記憶部53、データフロー記憶部61、境界ポート記憶部62および制御パケット記憶部63は、例えば、RAM(Random Access Memory)で実現される。
以下、本実施形態のパケット転送経路取得システム1の動作を説明する。ここでは、図1に示すネットワーク構成において、MACアドレスがMAC1、IPアドレスがIP1、VLAN IDがVLAN1である送信元サーバ2から、MACアドレスがMAC2、IPアドレスがIP2、VLAN IDがVLAN2である宛先サーバ3までパケットが転送される場合を例に説明する。
また、図9は、送信元サーバと宛先サーバとを通信可能に接続する仮想ネットワークの構成例を示す説明図である。図9に示すように、第1のネットワークコントローラ5のネットワーク設定として仮想ブリッジが設定され、第2のネットワークコントローラ6のネットワーク設定として仮想ルータが設定されているとする。
図9に示すように、仮想ルータの仮想ブリッジ側のポートに割り当てられているMACアドレスをMAC1’、仮想ルータの宛先サーバ3側のポートに割り当てられているMACアドレスをMAC2’とする。また、仮想ブリッジと仮想ルータの間のリンクで使用されるVLAN IDをVLAN1’とする。図9に示す仮想ブリッジおよび仮想ルータのそれぞれで、VLAN IDやMACアドレスが変換される。
また、第1のネットワークコントローラ5および第2のネットワークコントローラ6が起動された時には、スイッチ設定部55およびスイッチ設定部65が境界ポート記憶部52および境界ポート記憶部62をそれぞれ参照する。そして、スイッチ設定部55およびスイッチ設定部65は、境界ポートを管理しているスイッチに対して、「制御パケットを受信した時に、受信したパケットの情報を新規パケットメッセージとしてネットワークコントローラに通知する」ための処理情報を設定するとする。
図10は、ネットワークに新規にパケットが流入したときのネットワークコントローラの動作を示すフローチャートである。
送信元サーバ2が宛先サーバ3に対してパケットを送信すると(ステップA1)、第1のネットワークコントローラ5におけるIngressスイッチであるスイッチ111が送信されたパケットを受信する(ステップA2)。
パケットを受信したスイッチ111は、既に第1のネットワークコントローラ5からパケットの処理情報が設定されているか否か確認する(ステップA3)。
既にパケットの処理情報が設定されている場合(ステップA3のYES)、スイッチ111は、設定された処理に基づいてパケットをEgressスイッチであるスイッチ114まで転送する(ステップA4)。次いで、パケットは、スイッチ114から、第2のネットワークコントローラ6配下のIngressスイッチであるスイッチ121へ転送される(ステップA11)。転送された後、スイッチ114は、処理を終了する。
パケットの処理情報が設定されていない場合(ステップA3のNO)、スイッチ111は、新規パケットメッセージを第1のネットワークコントローラ5に通知する(ステップA5)。
データフロー管理部54は、新規パケットメッセージを受信すると、メッセージに含まれるパケットの転送経路やパケットに対する処理内容などを含むデータフローを生成する。そして、データフロー管理部54は、各データフローを識別するためのデータフローIDとともに、生成したデータフローをデータフロー記憶部51に保存する(ステップA6)。
次いで、スイッチ設定部55が、生成されたデータフローに基づいて、経路におけるスイッチにパケットの処理情報を設定する(ステップA7)。次いで、出力用パケット生成部561が、通知された新規パケットメッセージに含まれるパケットに対して、生成されたデータフローに含まれるパケットへの処理内容を適用した出力用パケットを生成する(ステップA8)。
次いで、制御パケット生成部562は、受信したパケットを基に制御パケットを生成する。図11は、制御パケット生成部が生成する制御パケットと制御パケット受信部が生成する制御パケットの例を示す説明図である。
受信したパケットが第2のネットワークコントローラ6配下のスイッチへ転送されるパケットなので、制御パケット生成部562は、図11(a)に示すような制御パケットを生成する。制御パケットを生成する時、制御パケット生成部562は、ペイロード部に生成されたデータフローのデータフローIDを設定する。生成した後、制御パケット生成部562は、制御パケットをEgressポートから送信する(ステップA9)。
次いで、出力用パケット生成部561が、ステップA8で生成された出力用パケットをEgressスイッチに通知する(ステップA10)。以上の動作により、送信元サーバ2から宛先サーバ3に対して送信されたパケットが、第1のネットワークコントローラ5配下のEgressスイッチから、第2のネットワークコントローラ6配下のIngressスイッチであるスイッチ121へ転送される(ステップA11)。転送された後、出力用パケット生成部561は、処理を終了する。
次に、第1のネットワークコントローラ5で新規データフローが作成される場合に、ステップA9で送信される制御パケットに対する処理を説明する。図12は、送信された制御パケットに対するネットワークコントローラの動作を示すフローチャートである。
第1のネットワークコントローラ5配下のEgressスイッチから転送された制御パケットを、第2のネットワークコントローラ6配下のIngressスイッチであるスイッチ121が受信する(ステップB1)。
スイッチ121は、第2のネットワークコントローラ6が起動された時に設定された処理情報に基づいて、受信した制御パケットに関する新規パケットメッセージを第2のネットワークコントローラ6に通知する(ステップB2)。
次いで、制御パケット受信部663は、受信した制御パケットを制御パケット記憶部63に保存する(ステップB3)。所定時間経過した後(ステップB4)、制御パケット受信部663は、制御パケット記憶部63に制御パケットが保存されたままか否か確認する(ステップB5)。
制御パケットが既に保存されていない場合(ステップB5のNO)、制御パケット受信部663は、制御パケットに対して処理を行わない。
制御パケットがまだ保存されたままの場合(ステップB5のYES)、制御パケット受信部663は、データフロー記憶部61に保存されている各データフローのマッチ条件と、受信した制御パケットのパケットヘッダ部とを比較する。比較することによって、制御パケット受信部663は、第2のネットワークコントローラ6が管理しているデータフローの中に、受信した制御パケットが流れるフローに対応するデータフローがあるか否かを確認する(ステップB6)。
データフローがある場合(ステップB6のYES)、制御パケット受信部663は、図11(b)に示すような応答用の制御パケットを作成する。制御パケットを生成する時、制御パケット受信部663は、応答用の制御パケットのペイロード部に、受信した制御パケットのペイロード部に保存されていた第1のネットワークコントローラ5でのデータフローIDと、ステップB6で抽出した第2のネットワークコントローラ6でのデータフローに対応するデータフローIDの2つを設定する。
制御パケット受信部663は、作成した応答用の制御パケットを第1のネットワークに向けて送信する(ステップB7)。送信した後、制御パケット受信部663は、処理を終了する。
データフローがない場合(ステップB6のNO)、制御パケット受信部663は、制御パケットに対して何も行わずに、処理を終了する。
次に、第2のネットワークコントローラ6配下のIngressスイッチであるスイッチ121へ転送された、送信元サーバ2から宛先サーバ3に対して送信されたパケットに対する処理を説明する。図13は、送信されたパケットに対するネットワークコントローラの動作を示すフローチャートである。
第2のネットワークコントローラ6におけるIngressスイッチであるスイッチ121が、転送されてきたパケットを受信する(ステップC1)。スイッチ121は、既に第2のネットワークコントローラ6からパケットの処理情報が設定されているか否か確認する(ステップC2)。
既にパケットの処理情報が設定されている場合(ステップC2のYES)、スイッチ121は、設定された処理情報に基づいてパケットをEgressスイッチであるスイッチ124まで転送する(ステップC3)。次いで、スイッチ124は、パケットを宛先サーバ3へ転送する(ステップC13)。パケットが転送された後、スイッチ124は、処理を終了する。
パケットの処理情報が設定されていない場合(ステップC2のNO)、スイッチ121は、新規パケットメッセージを第2のネットワークコントローラ6に通知する(ステップC4)。
データフロー管理部64は、新規パケットメッセージを受信すると、メッセージに含まれるパケットの転送経路やパケットに対する処理内容などを含むデータフローを生成する。そして、データフロー管理部64は、各データフローを識別するためのデータフローIDとともに、生成したデータフローをデータフロー記憶部61に保存する(ステップC5)。
次いで、スイッチ設定部65が、生成されたデータフローに基づいて、経路におけるスイッチにパケットの処理情報を設定する(ステップC6)。次いで、出力用パケット生成部661が、通知された新規パケットメッセージに含まれるパケットに対して、生成されたデータフローに含まれるパケットへの処理内容を適用した出力用パケットを生成する(ステップC7)。
次いで、制御パケット生成部662は、新規パケットメッセージで受信したパケットのパケットヘッダ部と同じパケットヘッダ部を持つ制御パケットが、制御パケット記憶部63に保存されているか否か確認する(ステップC8)。
制御パケットが保存されていれば(ステップC8のYES)、制御パケット生成部662は、保存されている制御パケットのペイロード部に含まれているデータフローIDと、受信したパケットに対してデータフロー管理部64で生成されたデータフローに対応するデータフローIDの、2つのデータフローIDをペイロード部に設定した制御パケットを生成する。
生成した後、制御パケット生成部662は、制御パケットをIngressポートから送信する(ステップC9)。また、制御パケット生成部662は、保存されていた制御パケットを削除する(ステップC10)。
制御パケットが保存されていなければ(ステップC8のNO)、制御パケット生成部662は、受信したパケットに対してデータフロー管理部64で生成されたデータフローに対応するデータフローIDのみをペイロード部に設定した制御パケットを生成する。
図14は、制御パケット生成部が生成する制御パケットと制御パケット受信部が生成する変換パケットの例を示す説明図である。制御パケット生成部662は、図14(a)に示すような制御パケットを生成する。生成した後、制御パケット生成部662は、制御パケットをIngressポートから送信する(ステップC11)。
次いで、出力用パケット生成部661は、ステップC7で生成した出力用パケットをEgressスイッチに通知する(ステップC12)。以上の動作により、送信元サーバ2から宛先サーバ3に対して送信されたパケットが、第2のネットワークコントローラ6配下のEgressスイッチから、宛先サーバ3へ転送される(ステップC13)。パケットが転送された後、出力用パケット生成部661は、処理を終了する。
次に、ステップB7、ステップC9およびステップC11で、第2のネットワークから第1のネットワークに向けて送信される制御パケットに対する処理を説明する。図15は、送信された制御パケットに対するネットワークコントローラの動作を示すフローチャートである。
第2のネットワークコントローラ6配下のIngressスイッチから転送された制御パケットを、第1のネットワークコントローラ5配下のEgressスイッチであるスイッチ114が受信する(ステップD1)。
スイッチ114は、第1のネットワークコントローラ5が起動された時に設定された処理情報に基づいて、受信した制御パケットに関する新規パケットメッセージを第1のネットワークコントローラ5に通知する(ステップD2)。
次いで、制御パケット受信部563は、受信した制御パケットのペイロード部を参照して、第1のネットワークコントローラ5でのデータフローIDと後方ネットワークコントローラでのデータフローIDの2つが保存されているか否か確認する(ステップD3)。
2つのデータフローIDが保存されている場合(ステップD3の2)、制御パケット受信部563は、データフロー記憶部51に保存されている、ペイロード部に保存されていた第1のネットワークコントローラ5でのデータフローIDに該当するデータフロー情報の後方データフローIDとして、ペイロード部に保存されていた後方ネットワークコントローラでのデータフローIDを保存する(ステップD4)。保存した後、制御パケット受信部563は、処理を終了する。
1つのデータフローIDのみ保存されている場合(ステップD3の1)、制御パケット受信部563は、受信した制御パケットのパケットヘッダ部を参照して、図14(b)に示すような、送信元と宛先を入れ替えた変換パケットを生成する(ステップD5)。
次いで、制御パケット受信部563は、生成した変換パケットのパケットヘッダ部と、データフロー記憶部51に保存されている各データフローの、パケットに適用される処理およびパケットのマッチ条件を基に、ペイロード部に保存された後方ネットワークコントローラのデータフローIDと結びつく、第1のネットワークコントローラ5でのデータフローを求める(ステップD6)。
求めたデータフローの後方データフローIDとして、制御パケット受信部563は、ペイロード部に保存されていた後方ネットワークコントローラでのデータフローIDを保存する(ステップD7)。保存した後、制御パケット受信部563は、処理を終了する。
このように、ネットワークコントローラ間で制御パケットが送受信されることによって、パケット転送経路取得システムは、事前にフロー間の関連性を把握する。
次に、転送経路を求めるための統合ネットワークコントローラ4の動作を説明する。図16は、転送経路を取得するときの統合ネットワークコントローラの動作を示すフローチャートである。
統合ネットワークコントローラ4の転送経路表示部42は、送信元サーバ2が接続されているスイッチ111を管理している第1のネットワークコントローラ5に対して、送信元サーバ2のMACアドレス(MAC1)、IPアドレス(IP1)、VLAN ID(VLAN1)をそれぞれ指定し、データフローを要求する。これらの情報を指定することによって、転送経路表示部42は、送信元サーバ2が起点である1つ以上のデータフローおよび隣接するネットワークコントローラでのデータフローIDを取得する(ステップE1)。
次いで、転送経路表示部42は、取得した隣接するネットワークコントローラでのデータフローIDの数を確認する(ステップE2)。データフローIDの数が0である場合(ステップE2の0)、データフローを取得したネットワークコントローラによって管理されているネットワークで、全てのフローが終端していることを意味する。データフローIDが取得されない場合、転送経路表示部42は、処理を終了する。
取得した隣接するネットワークコントローラでのデータフローIDの数が1以上である場合(ステップE2の1以上)、転送経路表示部42は、取得したデータフローに含まれるパケットに対する処理内容を基に、第1のネットワークコントローラ5配下の各スイッチをパケットが通過した時点でのMACアドレス(MAC1)、IPアドレス(IP1)、VLAN ID(VLAN1’)をそれぞれ求める(ステップE3)。転送経路表示部42は、求めた各情報を指定し、隣接する第2のネットワークコントローラ6に対してデータフローを要求する。
転送経路表示部42は、第2のネットワークコントローラ6に対して、最初のステップE1で取得したデータフローIDに対応するデータフローおよび隣接するネットワークコントローラでのデータフローIDを取得する。
第2のネットワークコントローラ6から取得される隣接するネットワークコントローラでのデータフローIDの数が0なので(ステップE2の0)、転送経路表示部42は、隣接するネットワークコントローラへのデータフロー要求を終了する。
転送経路表示部42は、取得したデータフローを組み合わせることによって、送信元サーバ2から宛先サーバ3へのパケットの転送経路を求めることができる。
本実施形態のパケット転送経路取得システムを使用する場合、複数のネットワークコントローラで管理されるような大規模ネットワークにおけるパケットの転送経路を、時間を多くかけずに表示できる。その理由は、パケット転送経路取得システムが、データフロー記憶部においてデータフローごとに後方データフローIDを管理しており、転送経路表示部が第1のネットワークコントローラからデータフローを取得する時に第2のネットワークコントローラでのデータフローIDも取得し、第2のネットワークコントローラに対して、取得したデータフローIDを基にデータフローを取得するよう構成されているためである。
本実施形態のパケット転送経路取得システムは、ネットワークコントローラがIngressスイッチから新規パケットメッセージを受信し、パケットの転送経路やパケットに対する処理内容などを含むデータフローを生成する時に、隣接するネットワークに対して、生成したデータフローを識別するためのデータフローIDを含む制御パケットを送信する。また、より送信元サーバに近い前方ネットワークから制御パケットを受信した時に、受信したパケットに含まれているデータを基に、前方ネットワークを流れてきたパケットが、自ネットワークコントローラが管理するどのフローに従って流れるかを調べ、求めたフローに対応するデータフローIDと、受信した制御パケットに含まれている前方ネットワークコントローラでのデータフローIDを制御パケットに含め、前方ネットワークに対して送信する。このように、ネットワークコントローラ間で制御パケットが送受信されることによって事前にフロー間の関連性が把握されるため、ユーザは、転送経路情報の問い合わせを受けた時でも、時間をかけずに情報を提示できる。
次に、本発明の概要を説明する。図17は、本発明によるパケット転送経路取得システムの概要を示すブロック図である。本発明によるパケット転送経路取得システム10は、第1のネットワークを管理し、第1のネットワーク内のパケットのデータリンク層以下における転送経路の情報である第1の転送経路情報を記憶する第1の管理部57(例えば、データフロー記憶部51)を含む第1の制御装置50(例えば、第1のネットワークコントローラ5)と、第1のネットワークと接続している第2のネットワークを管理し、第2のネットワーク内のパケットのデータリンク層以下における転送経路の情報である第2の転送経路情報を記憶する第2の管理部67(例えば、データフロー記憶部61)を含む第2の制御装置60(例えば、第2のネットワークコントローラ6)と、第1の制御装置50と第2の制御装置60とを管理し、転送経路取得部43(例えば、転送経路表示部42)を含む統合制御装置40(例えば、統合ネットワークコントローラ4)とを含み、第2の管理部67は、第1のネットワークと第2のネットワークを経由するパケットの第2の転送経路情報を記憶し、第1の管理部57は、パケットに対する第1の転送経路情報と、第2の転送経路情報の識別情報である第2の識別情報とを対応付けて記憶し、転送経路取得部43は、第1の管理部57から第1の転送経路情報と第2の識別情報とを併せて取得し、取得した第2の識別情報を基に第2の管理部67から第2の転送経路情報を取得する。
そのような構成により、パケット転送経路取得システムは、複数のネットワークを経由して転送されるパケットのデータリンク層以下における転送経路を容易に取得できる。
また、第2の管理部67は、第2の識別情報を含めた制御パケットを第1のネットワークへ送信し、第1の管理部57は、送信された制御パケットから取得した第2の識別情報を第1の転送経路情報に対応付けてもよい。
そのような構成により、パケット転送経路取得システムは、ネットワークコントローラ間で制御パケットを送受信することによって、事前にデータフロー間の関連性を把握できる。
また、第1の管理部57は、第1のネットワークと第2のネットワークを経由するパケットが初めて第1のネットワークを通過する場合、パケットの第1の転送経路情報の識別情報である第1の識別情報を含めた制御パケットを第2のネットワークへ送信し、第1の識別情報と第2の識別情報とを含んだ制御パケットが第1のネットワークへ送信された時に、第1の識別情報に対応する第1の転送経路情報に第2の識別情報を対応付けてもよい。
そのような構成により、パケット転送経路取得システムは、ネットワークコントローラがパケットのデータフローを作成する場合でも、当該パケットが経由する複数のネットワークにおける各データフローを対応付けることができる。
また、第1の管理部57と第2の管理部67は、第1のネットワークと第2のネットワークを経由するパケットの情報を基に送信する制御パケットを作成してもよい。
そのような構成により、パケット転送経路取得システムは、制御パケットを受信したネットワークコントローラに、制御パケットに対応するデータフローを、パケットに適用するデータフローを検索するときと同様に検索させることができる。
また、第1の管理部57と第2の管理部67は、データフローを用いてネットワークを管理してもよい。
そのような構成により、パケット転送経路取得システムは、データフローに含まれるパケット転送経路情報から、データリンク層以下におけるパケットの転送経路を取得できる。