(58)【調査した分野】(Int.Cl.,DB名)
パケットを受信したときに当該パケットに含まれる転送上限数を1減算し、当該転送上限数が0となった場合にコントローラへ当該パケットを転送する複数のスイッチを備えるネットワークにおいてパケットが転送される経路を確認する経路確認装置であって、
所定の始点のスイッチから所定の終点のスイッチまでの経路に設けられるスイッチのうち、前記パケットの転送経路として最後に確認されたスイッチを特定する送出先特定部と、
前記転送上限数を2とするパケットを、前記コントローラから前記スイッチ特定部が特定したスイッチに送出させるコントローラ制御部と、
前記コントローラに転送されたパケットの送信元のスイッチを、前記パケットの転送経路として最後に確認されたスイッチとして特定する隣接スイッチ特定部と
を備えることを特徴とする経路確認装置。
前記ネットワークにおけるパケットの転送ルールに基づいて、前記始点のスイッチから前記終点のスイッチへ転送される条件を満たすパケットを生成するパケット生成部を備え、
前記コントローラ制御部は、前記パケット生成部が生成したパケットを、前記コントローラから前記スイッチ特定部が特定したスイッチに送出させる
ことを特徴とする請求項1に記載の経路確認装置。
前記コントローラ制御部は、前記コントローラが前記送出先特定部が特定したスイッチから、他の通信装置から転送されたパケットを受信した場合に、前回送信したパケットの前記転送上限数に1を加算した値を前記転送上限数とするパケットを、前記コントローラから前記スイッチを宛先として送出させる
ことを特徴とする請求項1から請求項3の何れか1項に記載の経路確認装置。
パケットに含まれる転送上限数が0となった場合に当該パケットをコントローラへ転送する複数のスイッチを備えるネットワークにおいてパケットが転送される経路を確認する経路確認システムであって、
前記複数のスイッチを、パケットを受信したときに当該パケットに含まれる転送上限数を1減算するように設定する前記コントローラと、
所定の始点のスイッチから所定の終点のスイッチまでの経路に設けられるスイッチのうち、前記パケットの転送経路として最後に確認されたスイッチを特定する送出先特定部と、
前記転送上限数を2とするパケットを、前記コントローラから前記スイッチを宛先として送出させるコントローラ制御部と、
前記コントローラに転送されたパケットの送信元のスイッチを、前記パケットの転送経路として最後に確認されたスイッチとして特定する隣接スイッチ特定部と
を備えることを特徴とする経路確認システム。
パケットを受信したときに当該パケットに含まれる転送上限数を1減算し、当該転送上限数が0となった場合にコントローラへ当該パケットを転送する複数のスイッチを備えるネットワークにおいてパケットが転送される経路を確認する経路確認方法であって、
送出先特定部が、所定の始点のスイッチから所定の終点のスイッチまでの経路に設けられるスイッチのうち、前記パケットの転送経路として最後に確認されたスイッチを特定するステップと、
前記転送上限数を2とするパケットを、前記コントローラから前記スイッチを宛先として送出させるステップと、
隣接スイッチ特定部が、前記コントローラに転送されたパケットの送信元のスイッチを、前記パケットの転送経路として最後に確認されたスイッチとして特定するステップと
を有することを特徴とする経路確認方法。
パケットを受信したときに当該パケットに含まれる転送上限数を1減算し、当該転送上限数が0となった場合にコントローラへ当該パケットを転送する複数のスイッチを備えるネットワークに接続されるコンピュータを、
所定の始点のスイッチから所定の終点のスイッチまでの経路に設けられるスイッチのうち、前記パケットの転送経路として最後に確認されたスイッチを特定する送出先特定部、
前記転送上限数を2とするパケットを、前記コントローラから前記スイッチを宛先として送出させるコントローラ制御部、
前記コントローラに転送されたパケットの送信元のスイッチを、前記パケットの転送経路として最後に確認されたスイッチとして特定する隣接スイッチ特定部
として機能させるためのプログラム。
【発明を実施するための形態】
【0016】
《第1の実施形態》
以下、図面を参照しながら本発明に関連する実施形態について詳しく説明する。
図1は、第1の実施形態に係る経路確認システムと経路確認対象のネットワークの一例を示す図である。
経路確認対象のネットワークは、複数のスイッチ10−1〜10−6(以下、スイッチ10−1〜10−6を総称する場合、スイッチ10という)によって構成される。本実施形態においてネットワークを構成するスイッチ10は、オープンフロースイッチであって、内部に記憶するフローテーブルに従って、パケットの転送を行う。当該フローテーブルが示す転送ルールにより、仮想ネットワークが構築される。また、スイッチ10は、受信パケットをコントローラ100に送信するPacketIn機能を有する。なお、ネットワークを構成するスイッチ10の数は、本実施形態の例に限られない。
【0017】
なお、本明細書において「パケット」とは、IPによる通信で用いられるパケットに限られず、イーサネット(登録商標)による通信で用いられるフレームや、TCP(Transmission Control Protocol)による通信で用いられるセグメントを含む、ヘッダ情報を有するデータを示す。
【0018】
本実施形態に係る経路確認システムは、コントローラ100、経路確認装置200、トポロジ管理装置300を備える。
本実施形態に係るコントローラ100は、オープンフローコントローラであって、ネットワークを構成する各スイッチ10の管理を行う。また、コントローラ100は、パケットを指定したスイッチ10から送信させるPacketOut機能を有する。
経路確認装置200は、管理者から経路確認対象となる始点のスイッチ10及び終点のスイッチ10の入力を受け付け、当該経路の確認処理を実行する。
トポロジ管理装置300は、スイッチ10によって構成される仮想ネットワークのトポロジ情報を記憶する。具体的には、トポロジ管理装置300は、仮想ネットワーク毎に、当該ネットワーク上に設けられるスイッチ10の識別情報、スイッチ10の間の接続情報、仮想ネットワークの転送ルール情報を記憶する。
また、トポロジ管理装置300は、ユーザインタフェースを備えており、経路確認装置200に対する入出力を行う。
【0019】
なお、本実施形態において、コントローラ100と全てのスイッチ10との間、及び各スイッチ10の間は、通信装置を介さずに接続されている。つまり、コントローラ100とスイッチ10との間に存在する通信装置の数は0である。
【0020】
次に、経路確認装置200の動作について説明する。
図2は、第1の実施形態に係る経路確認装置200の構成を示す概略ブロック図である。
経路確認装置200は、経路確認要求受信部201、試験管理情報記憶部202、パケット生成部203、送出先特定部204、コントローラ制御部205、隣接スイッチ特定部206、試験結果情報記憶部207、確認結果判定部208、確認結果送信部209を備える。
【0021】
経路確認要求受信部201は、トポロジ管理装置300から、確認の対象となる経路における転送ルールと、経路確認の対象となる始点のスイッチ10及び終点のスイッチ10の識別情報を含む経路確認要求の入力を受け付ける。なお、転送ルールには、具体的にはスイッチ10に設定可能なタプルの組み合わせからなる情報が含まれる。
【0022】
試験管理情報記憶部202は、経路確認要求の識別情報と、当該経路確認の始点のスイッチ10及び終点のスイッチ10の識別情報とを記憶する。
パケット生成部203は、経路確認要求受信部201が受信した転送ルールに基づいて、経路確認に用いるパケットを生成する。
【0023】
送出先特定部204は、確認対象となる経路に設けられるスイッチ10のうち、パケットの転送経路として最後に確認されたスイッチ10を、PacketOutによるパケットの送出先として特定する。具体的には、経路確認の開始前は、経路確認要求受信部201が入力を受け付けた、経路の始点のスイッチ10を送出先として特定する。また、経路確認の開始後は、隣接スイッチ特定部206が特定したスイッチ10を送出先として特定する。
【0024】
コントローラ制御部205は、パケット生成部203が生成したパケットをコントローラ100に送信し、コントローラ100に、当該パケットを送出先特定部204が特定したスイッチ10に対してPacketOutにより送出させる。また、コントローラ制御部205は、コントローラ100がスイッチ10からPackeInにより受信したパケットの情報を、コントローラ100から受信する。
【0025】
隣接スイッチ特定部206は、コントローラ100から受信したパケットの情報に基づいて、送出先特定部204が特定したスイッチ10に隣接するスイッチ10を特定する。
試験結果情報記憶部207は、経路確認要求の識別情報と、当該経路について確認した区間の順序と、当該区間におけるスイッチ10の識別情報とを記憶する。
確認結果判定部208は、コントローラ100から受信したパケットの情報に基づいて、経路の確認が終了したか否かを判定する。
確認結果送信部209は、確認結果判定部208が、経路の確認が終了したと判定した場合に、試験結果情報記憶部207が記憶する情報に基づいて、経路の確認結果をトポロジ管理装置300に送信する。
【0026】
次に、本実施形態に係る経路確認装置200を用いた経路確認方法について説明する。
まず、管理者は、コントローラ100を介して、受信したパケットのTTLを1減算するよう、各スイッチ10を設定しておく。この設定により、TTLが0になったパケットは、当該減算結果を得たスイッチ10によって、コントローラ100にPacketInにより転送される。なお、本実施形態においてTTLは、転送上限数の一例である。
上記設定が完了すると、管理者は、トポロジ管理装置300に、確認対象となる始点と終点を入力する。例えば、トポロジ管理装置300は、各仮想ネットワークを構成するスイッチ10の一覧をディスプレイに表示し、当該一覧の中から始点と終点の選択を受け付けることができる。
【0027】
トポロジ管理装置300は、仮想ネットワークのトポロジ情報に基づいて、入力を受け付けた始点から終点までの経路が属する仮想ネットワークを特定する。次に、トポロジ管理装置300は、当該仮想ネットワークに関連付けられた転送ルールを特定する。また、トポロジ管理装置300は、入力を受け付けた始点及び終点の識別情報と、確認対象となる仮想ネットワークの転送ルールを含む経路確認要求を、経路確認装置200に送信する。
【0028】
図3は、第1の実施形態に係る経路確認装置200の動作を示すフローチャートである。
経路確認装置200の経路確認要求受信部201は、トポロジ管理装置300から確認要求を受信する(ステップS1)。次に、経路確認要求受信部201は、当該経路確認要求を識別する識別情報を生成する。そして、経路確認要求受信部201は、当該経路確認要求の識別情報と、経路確認要求受信部201が受信した経路確認要求に含まれる始点のスイッチ10及び終点のスイッチ10の識別情報とを、試験管理情報記憶部202に記録する(ステップS2)。次に、パケット生成部203は、経路確認要求受信部201が受信した経路確認要求に含まれる転送ルールに基づいて、経路の始点から終点へ転送される条件を満たし、かつパケットの宛先となる装置が応答しないパケットを生成する(ステップS3)。
【0029】
ここで、パケット生成部203によるパケットの生成方法について詳細に説明する。
図4は、経路確認用のパケットの生成方法を示すフローチャートである。
まず、パケット生成部203は、経路確認要求受信部201が受信した経路確認要求に含まれる転送ルールにおいて、プロトコルの指定があるか否かを判定する(ステップS101)。パケット生成部203は、転送ルールにおいてプロトコルの指定がないと判定した場合(ステップS101:NO)、UDP(User Datagram Protocol)に従ったパケットを生成する(ステップS102)。このとき、パケット生成部203は、パケットのTTL値として「2」を指定し、パケットのペイロードに、ステップS2で生成した経路確認要求の識別情報を格納させる。
【0030】
UDPによれば、パケットの宛先において当該パケットに対する応答を送信する必要がない。これにより、パケットの宛先となる装置において当該パケットがポートスキャンを目的としたものと判定されてしまうことを防ぐことができる。なお、パケット生成部203は、当該パケットの宛先ポート番号として、0番ポートを指定する。これにより、パケットの宛先となる装置において使用されていないポートを宛先にすることができるため、パケットの宛先となる装置に影響を与えないようにすることができる。
【0031】
そして、パケット生成部203は、経路確認要求受信部201が受信した経路確認要求に含まれる転送ルールに従って、ステップS102で生成したUDPパケットの上書きを行う(ステップS103)。例えば、転送ルールにパケットの宛先となる装置のIPアドレスが含まれる場合、UDPパケットの送信先IPアドレスの欄を当該IPアドレスに書き換える。
【0032】
なお、転送ルールにおいて送信元MACアドレスの指定がない場合、パケットの送信元MACアドレスとして、コントローラ100のMACアドレスを用いる。また、転送ルールにおいて宛先MACアドレスの指定がない場合、パケットの宛先MACアドレスとして、任意のMACアドレスを用いる。また、転送ルールにおいて送信元IPアドレスの指定がない場合、パケットの送信元IPアドレスとして、コントローラ100のIPアドレスを用いる。また、転送ルールにおいて宛先IPアドレスの指定がない場合、パケットの宛先MACアドレスとして、任意のIPアドレス(プライベートアドレス、ブロードキャストアドレス、マルチキャストアドレス、ネットワークアドレスを除く)を用いる。
【0033】
他方、ステップS101でパケット生成部203が、転送ルールにおいてプロトコルの指定があると判定した場合(ステップS101:YES)、パケット生成部203は、転送ルールにおいて指定されたプロトコルに従ったパケットを生成する(ステップS104)。このとき、パケット生成部203は、パケットのTTL値として「2」を指定し、パケットのペイロードに、ステップS2で生成した経路確認要求の識別情報を格納させる。
【0034】
次に、パケット生成部203は、指定されたプロトコルに応じた判定処理を行う(ステップS105)。ここでは、指定されたプロトコルがTCPまたはUDPである場合と、指定されたプロトコルがICMPである場合の判定処理について説明するが、その他のプロトコルについても判定処理を行う。
【0035】
指定されたプロトコルがTCPまたはUDPである場合(ステップS105:TCP/UDP)、パケット生成部203は、転送ルールにおいて宛先ポートの指定があるか否かを判定する(ステップS106)。宛先ポートの指定がない場合(ステップS106:NO)、パケット生成部203は、当該パケットの宛先ポート番号として、0番ポートを指定する(ステップS107)。
【0036】
他方、宛先ポートの指定がある場合(ステップS106:YES)、パケット生成部203は、当該パケットの宛先ポート番号として、指定されたポート番号を指定し、チェックサム値を不正な値に書き換える(ステップS108)。これは、パケットの宛先ポート番号が0番でない場合、パケットの宛先となる装置において当該パケットがリクエストとして処理され得るためである。このように、チェックサムによる整合をとれなくすることで、パケットの宛先となる装置において当該パケットを破棄させ、パケットの宛先となる装置に影響を与えないようにすることができる。
【0037】
また、指定されたプロトコルがICMPである場合(ステップS105:ICMP)、パケット生成部203は、転送ルールにおいてタイプ(エコー要求、エコー応答、宛先到達不可能通知など)の指定があるか否かを判定する(ステップS109)。タイプの指定がない場合(ステップS109:NO)、パケット生成部203は、当該パケットのタイプとして、「エコー応答」を指定する(ステップS110)。エコー応答のタイプのICMPパケットは、エコー要求リクエストに対するレスポンスとして送信されるものであるため、パケットの宛先となる装置において当該パケットがリクエストを示すものとして扱われず、終点の装置が当該パケットに対して応答することを防ぐことができる。
【0038】
他方、タイプの指定がある場合(ステップS109:YES)、パケット生成部203は、当該パケットのタイプとして、指定されたポート番号を指定し、チェックサム値を不正な値に書き換える(ステップS108)。
【0039】
そして、パケット生成部203は、経路確認要求受信部201が受信した経路確認要求に含まれる転送ルールに従って、ステップS103に進み、ステップS107、S108、S110で生成したパケットの上書きを行う。
【0040】
上記ステップS101〜ステップS110の処理により、パケット生成部203は、確認対象の仮想ネットワークにおける始点のスイッチ10から終点のスイッチ10へ転送される条件を満たし、かつパケットの宛先となる装置が応答しないパケットを生成することができる。
【0041】
ステップS3において、パケット生成部203がパケットを生成すると、送出先特定部204は、パケットの転送経路として最後に確認されたスイッチ10を、PacketOutによるパケットの送出先として特定する(ステップS4)。具体的には、送出先特定部204は、既に隣接スイッチ特定部206によるスイッチ10の特定がなされている場合は、隣接スイッチ特定部206が特定したスイッチ10をパケットの送出先として特定する。他方、送出先特定部204は、隣接スイッチ特定部206によるスイッチ10の特定がなされていない場合は、経路確認要求に含まれる始点のスイッチ10をパケットの送出先として特定する。
【0042】
次に、コントローラ制御部205は、コントローラ100に、パケット生成部203が生成したパケットを、送出先特定部204が特定したスイッチ10に対してPacketOutにより送出させる(ステップS5)。これにより、コントローラ100は、TTL値が2を示すパケットを、パケットの転送経路として最後に確認されたスイッチ10に送出する。次に、当該パケットを受信したスイッチ10は、当該パケットのTTL値を1減算する。このとき、TTL値は1となるため、スイッチ10は、転送ルールに従って当該パケットを隣接するスイッチ10に転送する。次に、パケットを受信したスイッチ10は、当該パケットのTTL値を1減算する。このとき、TTL値は0となるため、当該スイッチ10は当該パケットをPacketInによってコントローラ100に転送する。
コントローラ100は、スイッチ10からパケットを受信すると、当該パケットを経路確認装置200に転送する。
【0043】
コントローラ制御部205は、ステップS5によりコントローラ100にパケットを送出させると、所定の待機時間の間に、コントローラ100からパケットを受信したか否かを判定する(ステップS6)。コントローラ制御部205は、所定の待機時間を超えてもコントローラ100からパケットを受信できない場合(ステップS6:NO)、パケットのロスが発生したか仮想ネットワークの外部に転送されたと判定する。
【0044】
他方、コントローラ制御部205は、待機時間の間に、コントローラ100からパケットを受信した場合(ステップS6:YES)、隣接スイッチ特定部206は、当該パケットの送信元のスイッチ10を、パケットの転送経路として最後に確認されたスイッチ10として特定する(ステップS7)。
【0045】
次に、隣接スイッチ特定部206は、ステップS4で送出先特定部204が特定したスイッチ10とステップS7で隣接スイッチ特定部206が特定したスイッチ10との間の区間を示す経路情報として、経路確認要求の識別情報、区間の順序、当該区間におけるスイッチ10の識別情報を、試験結果情報記憶部207に記録する(ステップS8)。具体的には、隣接スイッチ特定部206は、コントローラ100が受信したパケットのペイロードに含まれる識別情報と、既に当該識別情報に関連付けられた経路情報の区間の順序のうち最も大きい値に1を加算した値と、ステップS4で特定したスイッチ10とステップS7で特定したスイッチ10の識別情報とを試験結果情報記憶部207に記録する。
【0046】
次に、確認結果判定部208は、コントローラ100が受信したパケットがPacketInされた理由がTTLInvalidであるか否かを判定する(ステップS9)。確認結果判定部208は、スイッチ10によるPacketInの理由がTTLInvalid以外の理由(例えば、NoMatchEntryやActionControllerなど)であると判定した場合(ステップS9:NO)、仮想ネットワークにおいて転送ルールに基づく転送ができない個所があると判定する。
他方、確認結果判定部208は、スイッチ10によるPacketInの理由がTTLInvalidであると判定した場合(ステップS9:YES)、コントローラ100が受信したパケットのペイロードに含まれる識別情報に関連付けて試験管理情報記憶部202が記憶する終点のスイッチ10が、隣接スイッチ特定部206が特定したスイッチ10と同じであるか否かを判定する(ステップS10)。確認結果判定部208は、隣接スイッチ特定部206が特定したスイッチ10が終点のスイッチ10であると判定した場合(ステップS10:YES)、終点までの経路確認が終了したと判定する。
【0047】
他方、確認結果判定部208は、隣接スイッチ特定部206が特定したスイッチ10が経路の終点となるスイッチ10でないと判定した場合(ステップS10:NO)、試験結果情報記憶部207が記憶するスイッチ10とステップS7で隣接スイッチ特定部206が特定したスイッチ10とが同じであるか否かを判定する(ステップS11)。確認結果判定部208は、試験結果情報記憶部207が記憶するスイッチ10と隣接スイッチ特定部206が特定したスイッチ10とが異なると判定した場合(ステップS11:NO)、経路の確認が終了していないと判定し、ステップS4に戻り、再度コントローラ100によるPacketOutを試みる。
【0048】
他方、確認結果判定部208は、試験結果情報記憶部207が記憶するスイッチ10と隣接スイッチ特定部206が特定したスイッチ10とが同じであると判定した場合(ステップS11:YES)、仮想ネットワーク内でパケットがループしていると判定する。
【0049】
確認結果判定部208が、ステップS6でパケットのロスが発生したか仮想ネットワークの外部に転送されたと判定した場合、ステップS9において仮想ネットワークにおいて転送ができない個所があると判定した場合、ステップS10で経路の終点までの確認を終了したと判定した場合、またはステップS11で仮想ネットワーク内でパケットがループしていると判定した場合、確認結果送信部209は、試験結果情報記憶部207から、ステップS2で生成した経路確認要求の識別情報に関連付けられた経路情報を読み出す。そして、確認結果送信部209は、当該経路情報と確認を終了した理由とを、トポロジ管理装置300に送信する(ステップS12)。これにより、トポロジ管理装置300は、受信した経路情報を、区間の順序の昇順に並べ、さらに確認を終了した理由をディスプレイに表示することで、管理者に経路の確認結果を提示することができる。
【0050】
次に、第1の実施形態に係る経路確認方法の動作について具体的な例を用いて説明する。
例えば、
図1に示すネットワークにおいて、IPアドレスが192.168.1.0/24のネットワークに属するPC(Personal Computer)(以下、SrcPCという)から、IPアドレスが192.168.2.0/24のネットワークに属するPC(以下、DstPCという)までの経路の確認を行う場合について説明する。なお、本例においては、SrcPCがスイッチ10−1に接続され、DstPCがスイッチ10−4に接続されているものとして説明する。
【0051】
トポロジ管理装置300は、管理者からSrcPCとDstPC間の通信を行うための仮想ネットワークを構成するスイッチ10の中から経路確認を行いたい2つのスイッチ10−1、10−4の入力を受け付ける。これにより、トポロジ管理装置300は、始点となるスイッチ10及び終点となるスイッチ10を特定するとともに、トポロジ情報から当該仮想ネットワークの転送ルールを特定する。
【0052】
図5は、第1の実施形態の動作例における転送ルールを示す図である。
図5によれば、転送ルールの条件として、始点のIPアドレスが192.168.1.0/24であり、終点のIPアドレスが192.168.2.0/24であり、プロトコルがTCPであることが指定されている。
【0053】
つまり、経路確認装置200の経路確認要求受信部201は、トポロジ管理装置300から転送ルールと、始点となるスイッチ10であるスイッチ10−1、終点となるスイッチ10であるスイッチ10−4の識別情報を含む経路確認要求を受信する。次に、経路確認要求受信部201は、当該経路について、新たな識別情報「要求−1」を生成し、当該識別情報に関連付けて、始点となるスイッチ10であるスイッチ10−1、終点となるスイッチ10であるスイッチ10−4の識別情報を、試験管理情報記憶部202に記録する。
【0054】
次に、パケット生成部203は、上記転送ルールの条件に基づいて、パケットを生成する。上記転送ルールにおいては、プロトコルとしてTCPが指定されており、ポートの指定はない。従って、パケット生成部203は、送信元のIPアドレスを「192.168.1.0/24」内の任意のアドレスとし、宛先のIPアドレスを「192.168.2.0/24」内の任意のアドレスとし、宛先ポート番号を「0」とし、TTLを「2」とするTCPパケットを生成する。また、当該パケットのペイロードには、識別情報「要求−1」が格納される。なお、パケット生成部203は、パケットサイズ全体が、規定される転送可能なパケットサイズになるようパケットを生成する。イーサネットの最小フレーム長に満たない場合は、パケット生成部203は、TCPのデータ部にパディングを行う。
【0055】
次に、送出先特定部204は、始点となるスイッチ10であるスイッチ10−1をPacketOutの送出先に決定する。コントローラ制御部205の制御により、コントローラ100は、パケット生成部203が生成したパケットをPacketOutによりスイッチ10−1に送出する。PacketOutされたパケットは、スイッチ10−1に設定された転送ルールに従い、TTLが1減算され、転送先であるスイッチ10−2に転送される。当該パケットを受信したスイッチ10−2も同様にTTLを1減算する。ここで、当該パケットのTTLは「0」となるため、スイッチ10−2は当該パケットを、TTLInvalidを理由にコントローラ100にPacketInする。
【0056】
コントローラ100がPacketInによりパケットを受信すると、隣接スイッチ特定部206は、当該パケットの送信元であるスイッチ10−2を、パケットの転送経路として最後に確認されたスイッチ10として特定する。これにより、隣接スイッチ特定部206は、識別情報「要求−1」、区間の順序「1」、スイッチ10情報「10−1→10−2」を、試験結果情報記憶部207に記録する。
【0057】
ここで、PacketInの理由がTTLInvalidであり、スイッチ10−2が終点となるスイッチ10でも試験結果情報記憶部207が記憶するスイッチ10でもないことから、確認結果判定部208は、確認を継続すると判定する。
【0058】
次に、送出先特定部204は、隣接スイッチ特定部206が特定したスイッチ10−2をPacketOutの送出先に決定する。コントローラ制御部205の制御により、コントローラ100は、パケット生成部203が生成したパケットをPacketOutによりスイッチ10−2に送出する。PacketOutされたパケットは、スイッチ10−2からスイッチ10−3に転送されると、TTLが「0」となるためTTLInvalidを理由にコントローラ100にPacketInされる。
【0059】
コントローラ100がPacketInによりパケットを受信すると、隣接スイッチ特定部206は、当該パケットの送信元であるスイッチ10−3を、パケットの転送経路として最後に確認されたスイッチ10として特定する。
ここで、PacketInの理由がTTLInvalidであり、スイッチ10−3が終点となるスイッチ10でも試験結果情報記憶部207が記憶するスイッチ10でもないことから、確認結果判定部208は、確認を継続すると判定する。
【0060】
次に、送出先特定部204は、隣接スイッチ特定部206が特定したスイッチ10−3をPacketOutの送出先に決定する。コントローラ制御部205の制御により、コントローラ100は、パケット生成部203が生成したパケットをPacketOutによりスイッチ10−3に送出する。PacketOutされたパケットは、スイッチ10−3からスイッチ10−4に転送されると、TTLが「0」となるためTTLInvalidを理由にコントローラ100にPacketInされる。
【0061】
コントローラ100がPacketInによりパケットを受信すると、隣接スイッチ特定部206は、当該パケットの送信元であるスイッチ10−4を、パケットの転送経路として最後に確認されたスイッチ10として特定する。
ここで、PacketInの理由がTTLInvalidであり、スイッチ10−4が終点となるスイッチ10であることから、確認結果判定部208は、確認が終了したと判定する。そして、確認結果送信部209は、試験結果情報記憶部207が識別情報「要求−1」に関連付けて記憶する経路情報を、トポロジ管理装置300に送信する。
【0062】
図6は、第1の実施形態の動作例において確認結果送信部209が送信する経路情報を示す図である。
図6に示すように、経路情報を区間の順序ごとに並べると、確認対象の経路においてパケットが、スイッチ10−1、スイッチ10−2、スイッチ10−3、スイッチ10−4の順に経由することがわかる。
【0063】
このように、本実施形態によれば、コントローラ100が、TTLが「2」のパケットを、パケットの転送経路として最後に確認されたスイッチ10に送出し、経路確認装置200が、コントローラ100に転送されたパケットの送信元のスイッチ10を、パケットの転送経路として最後に確認されたスイッチ10として特定する。これにより、経路確認装置200は、任意のルールに従ってパケットの転送を行う複数のスイッチ10からなるネットワークについても経路確認をすることができる。
【0064】
また、本実施形態によれば、tracerouteなど常に始点からパケットを送信することで経路確認を行う方法と比較して、経由する装置数が少ないため、高速に経路の確認を行うことができる。また、経路確認のためのトラフィック量を小さくすることができる。
【0065】
《第2の実施形態》
第1の実施形態では、経路確認要求受信部201が、始点となるスイッチ10と終点となるスイッチ10の識別情報を含む経路確認要求を受信する場合について説明したが、第2の実施形態に係る経路確認要求受信部201は、終点となるスイッチ10の識別情報を含まない経路確認要求を受信する。
つまり、第2の実施形態では、経路確認要求受信部201は、始点となるスイッチ10と転送ルールを含む経路確認要求を受信する。
【0066】
この場合、確認結果判定部208は、上述したステップS10に係る、隣接スイッチ特定部206が特定したスイッチ10と終点となるスイッチ10が同じであるか否かの判定を行わない。これに代えて、確認結果判定部208は、ステップS6においてパケットが待機時間内に受信できない場合に、パケットが仮想ネットワーク内でロスした、もしくは仮想ネットワークの外に出てしまったと推定し、確認を終了すると判定する。
【0067】
《第3の実施形態》
図7は、第3の実施形態に係る経路確認システムと経路確認対象のネットワークの一例を示す図である。
経路確認対象のネットワークは、スイッチ10−1〜10−4とルータ20−1とルータ20−2によって構成される。また、本実施形態に係るコントローラ100は、ルータ20−3を介してスイッチ10−1〜10−4と接続される。このように、本実施形態においては、コントローラ100とスイッチ10との間に通信装置が設けられる。ここで、ルータ20−1〜20−3(以下、ルータ20−1〜20−3を総称する場合、ルータ20という)は、通信装置の一例であって良い。つまり、本実施形態に係る経路確認対象のネットワークは、スイッチ10とルータ20とから構成される。なお、ネットワークを構成するスイッチ10及びルータ20の数は、本実施形態の例に限られない。
【0068】
図8は、第3の実施形態に係る経路確認装置200の動作を示すフローチャートである。なお、第1の実施形態と同じ動作をする点については同一の符号を用いて説明する。
経路確認装置200の経路確認要求受信部201は、トポロジ管理装置300から経路確認要求を受信する(ステップS1)。次に、経路確認要求受信部201は、当該経路確認要求を識別する識別情報を生成する。そして、経路確認要求受信部201は、当該経路確認要求の識別情報と、経路確認要求受信部201が受信した経路確認要求に含まれる始点となるスイッチ10及び終点となるスイッチ10の識別情報とを、試験管理情報記憶部202に記録する(ステップS2)。次に、パケット生成部203は、経路確認要求受信部201が受信した経路確認要求に含まれる転送ルールに基づいて、経路の始点から終点へ転送される条件を満たし、かつパケットの宛先となる装置が応答しないパケットを生成する(ステップS3)。
【0069】
パケット生成部203がパケットを生成すると、送出先特定部204は、パケットの転送経路として最後に確認されたスイッチ10を、PacketOutによるパケットの送出先として特定する(ステップS4)。次に、コントローラ制御部205は、コントローラ100に、パケット生成部203が生成したパケットを、送出先特定部204が特定したスイッチ10に対してPacketOutにより送出させる(ステップS5)。このとき、パケット生成部203が生成したパケットはPacketOut用のパケットに内包される。そのため、コントローラ100とスイッチ10との間にルータ20が設けられていても、パケット生成部203が生成したパケットは、TTLを減少させずに送出先として特定したスイッチ10まで送り届けられる。
【0070】
次に、コントローラ制御部205は、所定の待機時間の間に、コントローラ100からパケットを受信したか否かを判定する(ステップS6)。コントローラ制御部205は、所定の待機時間を超えてもコントローラ100からパケットを受信できない場合(ステップS6:NO)、パケットのロスが発生したか仮想ネットワークの外部に転送されたと判定する。
【0071】
他方、コントローラ制御部205は、待機時間の間に、コントローラ100からパケットを受信した場合(ステップS6:YES)、受信したパケットがパケット生成部203が生成したパケットではなく、Time Exceed を示すICMPパケットであるか否かを判定する(ステップS31)。
コントローラ100が、Time Exceedを示すICMPパケットを受信したということは、ステップS5で送出したパケットを受信したスイッチ10が、当該パケットを隣接するルータ20に送信し、当該ルータ20において当該パケットのTTLが0になり、このことを示すICMPパケットがスイッチ10に送られたことを示す。つまり、この場合、コントローラ100は、送出先特定部204が特定したスイッチ10から、他の通信装置から転送されたICMPパケットを受信する。
【0072】
コントローラ制御部205は、コントローラ100が受信したパケットがTime Exceed を示すICMPパケットであると判定した場合(ステップS31:YES)、コントローラ100に前回送信させたパケットのTTLに1を加算した値をTTLとするパケットを生成し(ステップS32)、ステップS5に戻り、コントローラ100に当該パケットを同一のスイッチ10へ送出させる。これにより、前回ICMPパケットを送信したルータ20は、当該パケットを隣接する通信装置に転送するため、当該隣接する通信装置がスイッチ10である場合には、当該スイッチ10からコントローラ100へパケットがPacketInされる。他方、当該隣接する通信装置がルータ20である場合には、当該ルータ20からICMPパケットが送信される。つまり、本実施形態に係る経路確認装置200は、当該コントローラ100がスイッチ10からパケットを受信するまで当該処理を繰り返すことで、スイッチ10とルータ20とが混在するネットワークにおける経路を確認することができる。
【0073】
他方、コントローラ制御部205が、コントローラ100が受信したパケットがパケット生成部203が生成したパケットであると判定した場合(ステップS31:NO)隣接スイッチ特定部206は、当該パケットの送信元のスイッチ10を、パケットの転送経路として最後に確認されたスイッチ10として特定する(ステップS7)。
【0074】
次に、隣接スイッチ特定部206は、ステップS4で送出先特定部204が特定したスイッチ10とステップS7で隣接スイッチ特定部206が特定したスイッチ10との間の区間を示す経路情報として、経路の識別情報、区間の順序、当該区間におけるスイッチ10の識別情報を、試験結果情報記憶部207に記録する(ステップS8)。
【0075】
次に、確認結果判定部208は、コントローラ100が受信したパケットがPacketInされた理由がTTLInvalidであるか否かを判定する(ステップS9)。確認結果判定部208は、スイッチ10によるPacketInの理由がTTLInvalid以外の理由であると判定した場合(ステップS9:NO)、仮想ネットワークにおいて転送ができない個所があると判定する。
他方、確認結果判定部208は、スイッチ10によるPacketInの理由がTTLInvalidであると判定した場合(ステップS9:YES)、コントローラ100が受信したパケットのペイロードに含まれる識別情報に関連付けて試験管理情報記憶部202が記憶する経路の終点となるスイッチ10が、隣接スイッチ特定部206が特定したスイッチ10と同じであるか否かを判定する(ステップS10)。確認結果判定部208は、隣接スイッチ特定部206が特定したスイッチ10が経路の終点となるスイッチ10であると判定した場合(ステップS10:YES)、経路の終点までの確認を終了したと判定する。
【0076】
他方、確認結果判定部208は、隣接スイッチ特定部206が特定したスイッチ10が経路の終点となるスイッチ10でないと判定した場合(ステップS10:NO)、試験結果情報記憶部207が記憶するスイッチ10とステップS7で隣接スイッチ特定部206が特定したスイッチ10とが同じであるか否かを判定する(ステップS11)。確認結果判定部208は、試験結果情報記憶部207が記憶するスイッチ10と隣接スイッチ特定部206が特定したスイッチ10とが異なると判定した場合(ステップS11:NO)、経路の確認が終了していないと判定し、ステップS4に戻り、再度コントローラ100によるPacketOutを試みる。
【0077】
他方、確認結果判定部208は、試験結果情報記憶部207に記憶されているスイッチ10と隣接スイッチ特定部206が特定したスイッチ10とが同じであると判定した場合(ステップS11:YES)、仮想ネットワーク内でパケットがループしていると判定する。
【0078】
確認結果判定部208が、ステップS6でパケットのロスが発生したか仮想ネットワークの外部に転送されたと判定した場合、ステップS9において仮想ネットワークにおいて転送ができない個所があると判定した場合、ステップS10で経路の終点までの確認を終了したと判定した場合、またはステップS11で仮想ネットワーク内でパケットがループしていると判定した場合、確認結果送信部209は、試験結果情報記憶部207から、ステップS2で生成した経路確認要求の識別情報に関連付けられた経路情報を読み出す。そして、確認結果送信部209は、当該経路情報と確認を終了した理由とを、トポロジ管理装置300に送信する(ステップS12)。
【0079】
このように、本実施形態によれば、コントローラ100は、他の通信装置から転送されたパケットをスイッチ10から受信した場合に、前回送信したパケットのTTLに1を加算した値をTTLとするパケットを、前回送信したスイッチ10に対して送出する。これにより、確認対象となるネットワークにおいてスイッチ10と他の通信装置とが混在する場合にも、適切に経路の確認を行うことができる。
【0080】
以上、図面を参照して一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
例えば、上述した実施形態では、スイッチ10の例としてオープンフロースイッチを用い、コントローラ100の例としてオープンフローコントローラを用いる場合について説明したが、これに限られない。つまり、コントローラ100が各スイッチ10と接続され、スイッチ10が任意のルールに従ってパケットを転送するものであれば、スイッチ10及びコントローラ100は、オープンフロー以外のプロトコルに従って動作するものであって良い。
【0081】
また、上述した実施形態では、1対1の通信形態において経路の確認を行う場合について説明したが、これに限られず、マルチキャスト通信や、ラウンドロビンネットワークについても経路の確認を行うことができる。
【0082】
例えば、マルチキャストのように分岐点が含まれる仮想ネットワークにおいては、分岐点に対してPacketOutしたパケットが、複数のスイッチ10からPacketInされることとなる。この場合、経路確認装置200は、PacketInされたパケットの送信元のスイッチ10それぞれに対し、上述したステップS4〜S12の処理を行うことで、マルチキャストのすべての経路について、経路確認を行うことができる。
【0083】
また例えば、ラウンドロビンのように、パケットの振分点が含まれる仮想ネットワークにおいては、経路確認装置200は、上述したステップS1〜S12の処理を、振分の周期より十分に多い回数実行することで、ラウンドロビンに係るすべての経路について、経路確認を行うことができる。
なお、トポロジ管理装置300において振分点及び振分の周期が予め分かっている場合、当該振分点に対して、上述したステップS4〜S12の処理を、振分の周期に相当する回数実行することで、効率よく経路確認を行うことができる。
【0084】
また、上述した実施形態では、経路確認システムがコントローラ100と経路確認装置200とトポロジ管理装置300とを備える場合について説明したが、これに限られない。例えば、コントローラ100と経路確認装置200とが一体に設けられる構成であっても良いし、経路確認装置200とトポロジ管理装置300とが一体に設けられる構成であっても良い。また、経路確認装置200がインタフェースを備える場合、経路確認システムは、トポロジ管理装置300を必ずしも設けなくても良い。
【0085】
なお、上述の経路確認装置200は内部に、コンピュータシステムを有している。そして、上述した各処理部の動作は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等の一時的でない有形の媒体をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【0086】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。