(57)【要約】【課題】パケットがカプセル化されて伝送される通信システムにおいて、受信パケットのパケット化を解除して元のパケットを取得する。【解決手段】仮想パスを介して伝送される第１のパケットから所定の規則に基づいて追加されたヘッダを削除することでカプセル化を解除した第１のフラグメントのヘッダに含まれる長さ情報と第１のフラグメント中のデータの長さとを比較する。第１のフラグメント中のデータの長さが長さ情報により表される長さより短いときに、第１のパケットよりも後に同じ仮想パスを介して伝送されるパケットのカプセル化を解除することで得られる後続フラグメントを先のデータに結合して結合データを生成する処理を、結合データの長さが長さ情報により表される長さと一致するまで繰り返す。結合データの長さが長さ情報により表される長さと一致したときに、結合データを１個のパケットとして取得する。【選択図】図８
2019193201.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロトコルに従うパケットに所定の規則に基づいてヘッダを追加することでカプセル化した第２のプロトコルに従うパケットが生成されて伝送される通信システムにおいて、
仮想的なパスを介して伝送される、前記第２のプロトコルに従う第１のパケットから前記所定の規則に基づいて追加されたヘッダを削除することでカプセル化を解除した第１のフラグメントのヘッダに含まれる長さ情報と前記第１のフラグメントに含まれるデータの長さとが一致するか否かを判定し、
前記第１のフラグメントに含まれるデータの長さが、前記長さ情報により表される長さと一致しないときに、前記第１のフラグメントに含まれるデータを抽出してメモリに保存し、前記第１のパケットよりも後に前記仮想的なパスを介して伝送される、前記第２のプロトコルに従う第２のパケットのカプセル化を解除することで得られる第２のフラグメントを前記メモリに保存されているデータに結合して結合データを生成し、
前記結合データの長さが前記長さ情報により表される長さと一致するときは、前記結合データを、前記第１のプロトコルに従う１個のパケットとして取得し、
前記結合データの長さが前記長さ情報により表される長さよりも短いときは、前記第２のパケットよりも後に前記仮想的なパスを介して伝送される、前記第２のプロトコルに従うパケットのカプセル化を解除することで得られる後続フラグメントを前記結合データにさらに結合して新たな結合データを生成する処理を、前記新たな結合データの長さが前記長さ情報により表される長さと一致するまで繰り返す
処理をプロセッサに実行させるパケット取得プログラム。
【請求項２】
前記第１のフラグメントに含まれるデータの長さが、前記長さ情報により表される長さよりも短いときに、フラグメント処理が実行中であることを表すフラグをＯＮ状態に設定し、
前記第１のパケットよりも後に前記仮想的なパスを介して伝送される後続パケットを受信したときに、前記フラグがＯＮ状態であれば、前記後続パケットのカプセル化を解除することで得られるフラグメントを前記メモリに保存されているデータに結合する
処理をプロセッサに実行させる請求項１に記載のパケット取得プログラム。
【請求項３】
前記第１のプロトコルに従う１個のパケットをカプセル化することで前記第２のプロトコルに従う複数のパケットが生成されるケースにおいて前記複数のパケットに対して順番に付与される連続する値を持った識別情報を、各受信パケットから取得し、
前記第１のフラグメントに含まれるデータの長さが前記長さ情報により表される長さより短く、且つ、前記第１のパケットから取得した識別情報と前記第２のパケットから取得した識別情報とが連続しているときに、前記第２のフラグメントを前記メモリに保存されているデータに結合する
処理をプロセッサに実行させる請求項１に記載のパケット取得プログラム。
【請求項４】
各受信パケットが到着したインタフェースを表すインタフェース識別子を取得し、
前記第１のフラグメントに含まれるデータの長さが前記長さ情報により表される長さより短く、且つ、前記第１のパケットが到着したインタフェースを表すインタフェース識別子と前記第２のパケットが到着したインタフェースを表すインタフェース識別子とが一致し、且つ、前記第１のパケットから取得した識別情報と前記第２のパケットから取得した識別情報とが連続しているときに、前記第２のフラグメントを前記メモリに保存されているデータに結合する
処理をプロセッサに実行させる請求項３に記載のパケット取得プログラム。
【請求項５】
第１のプロトコルに従うパケットに所定の規則に基づいてヘッダを追加することでカプセル化した第２のプロトコルに従うパケットが生成されて伝送される通信システムにおいて、前記第１のプロトコルに従うパケットを取得するパケット取得方法であって、
仮想的なパスを介して伝送される、前記第２のプロトコルに従う第１のパケットから前記所定の規則に基づいて追加されたヘッダを削除することでカプセル化を解除した第１のフラグメントのヘッダに含まれる長さ情報と前記第１のフラグメントに含まれるデータの長さとが一致するか否かを判定し、
前記第１のフラグメントに含まれるデータの長さが、前記長さ情報により表される長さと一致しないときに、前記第１のフラグメントに含まれるデータを抽出してメモリに保存し、前記第１のパケットよりも後に前記仮想的なパスを介して伝送される、前記第２のプロトコルに従う第２のパケットのカプセル化を解除することで得られる第２のフラグメントを前記メモリに保存されているデータに結合して結合データを生成し、
前記結合データの長さが前記長さ情報により表される長さと一致するときは、前記結合データを、前記第１のプロトコルに従う１個のパケットとして取得し、
前記結合データの長さが前記長さ情報により表される長さよりも短いときは、前記第２のパケットよりも後に前記仮想的なパスを介して伝送される、前記第２のプロトコルに従うパケットのカプセル化を解除することで得られる後続フラグメントを前記結合データにさらに結合して新たな結合データを生成する処理を、前記新たな結合データの長さが前記長さ情報により表される長さと一致するまで繰り返す
ことを特徴とするパケット取得方法。
【請求項６】
第１のプロトコルに従うパケットに所定の規則に基づいてヘッダを追加することでカプセル化した第２のプロトコルに従うパケットが生成されて伝送される通信システムにおいて、前記第１のプロトコルに従うパケットを取得するパケット取得装置であって、
プロセッサと、
前記プロセッサに接続するメモリと、を備え、
前記プロセッサは、
仮想的なパスを介して伝送される、前記第２のプロトコルに従う第１のパケットから前記所定の規則に基づいて追加されたヘッダを削除することでカプセル化を解除した第１のフラグメントのヘッダに含まれる長さ情報と前記第１のフラグメントに含まれるデータの長さとが一致するか否かを判定し、
前記第１のフラグメントに含まれるデータの長さが、前記長さ情報により表される長さと一致しないときに、前記第１のフラグメントに含まれるデータを抽出して前記メモリに保存し、前記第１のパケットよりも後に前記仮想的なパスを介して伝送される、前記第２のプロトコルに従う第２のパケットのカプセル化を解除することで得られる第２のフラグメントを前記メモリに保存されているデータに結合して結合データを生成し、
前記結合データの長さが前記長さ情報により表される長さと一致するときは、前記結合データを、前記第１のプロトコルに従う１個のパケットとして取得し、
前記結合データの長さが前記長さ情報により表される長さよりも短いときは、前記第２のパケットよりも後に前記仮想的なパスを介して伝送される、前記第２のプロトコルに従うパケットのカプセル化を解除することで得られる後続フラグメントを前記結合データにさらに結合して新たな結合データを生成する処理を、前記新たな結合データの長さが前記長さ情報により表される長さと一致するまで繰り返す
ことを特徴とするパケット取得装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットを取得する装置、方法、およびプログラムに係わる。
【背景技術】
【０００２】
拠点間を仮想ネットワークで接続する通信システムが普及している。この場合、各拠点には、ゲートウェイ装置が実装される。そして、ゲートウェイ装置が仮想ＬＡＮ（ＶＬＡＮ：virtual local area network）を提供することで仮想ネットワークが実現される。
【０００３】
図１は、拠点間を仮想ネットワークで接続する通信システムの一例を示す。この実施例では、通信システム内に複数のユーザ（或いは、テナント）が収容されている。各ユーザは、各拠点に１または複数のサーバコンピュータを備える。各サーバコンピュータは、ゲートウェイ装置に接続される。
【０００４】
ゲートウェイ装置は、拠点Ｘ、Ｙ間に仮想ネットワークを構築する。そして、ゲートウェイ装置は、仮想ネットワーク上でＶＸＬＡＮ（Virtual eXtensible Local Area Network）のトンネリングプロトコルを用いてユーザ毎にトンネルを設定する。なお、トンネルは、仮想パスに相当する。
【０００５】
サーバ間では、例えば、ＴＣＰに従うユーザパケット（以下「ＴＣＰパケット」と呼ぶことがある）が伝送される。仮想ネットワーク内では、例えば、ＶＸＬＡＮのトンネリングプロトコルに従う通信パケット（以下「ＶＸＬＡＮパケット」と呼ぶことがある）が伝送される。すなわち、ゲートウェイ装置は、プロトコル変換を実行する。換言すると、ゲートウェイ装置は、ＴＣＰパケットをカプセル化してＶＸＬＡＮパケットを生成する機能、およびＶＸＬＡＮパケットのカプセル化を解除してＴＣＰパケットを再生する機能を備える。
【０００６】
上記構成の通信システムにおいて、サーバ間の通信をモニタする場合、ゲートウェイ装置は、ミラーリング機能を利用して、ＶＸＬＡＮパケットをモニタ装置に導く。そして、モニタ装置は、ゲートウェイ装置から受信するＶＸＬＡＮパケットからＴＣＰパケットを抽出し、サーバ間の通信の品質および状態をモニタする。
【０００７】
なお、メッセージ単位でのパケットの検出精度を向上させる技術が提案されている（例えば、特許文献１）。また、パケットが暗号化されている場合であっても、キャプチャ対象外のパケットを識別する方法が提案されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１６−９６４１６号公報
【特許文献２】特開２０１１−１９３４１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
図１に示すモニタ装置は、上述したように、ゲートウェイ装置から受信するＶＸＬＡＮパケットからＴＣＰパケットを抽出し、抽出したＴＣＰパケットを解析することでサーバ間の通信をモニタする。ところが、ゲートウェイ装置によるカプセル化において、１個のＴＣＰパケットが複数のフラグメントに分割され、複数のＶＸＬＡＮパケットを利用して伝送されることがある。この場合、１番目のフラグメントはＴＣＰパケットのヘッダ情報を含むが、後続のフラグメントはＴＣＰパケットのヘッダ情報を含まない。すなわち、ＴＣＰパケットのヘッダ情報を含まないＶＸＬＡＮパケットが生成されることがある。そして、モニタ装置は、ＴＣＰパケットのヘッダ情報を含まないＶＸＬＡＮパケットを受信した場合、そのＶＸＬＡＮパケットから抽出したデータがどのサーバから送信されたのかを識別できない。したがって、このようなケースでは、モニタ装置は、サーバ間の通信の品質および状態を正しくモニタできない。
【００１０】
本発明の１つの側面に係わる目的は、パケットがカプセル化されて伝送される通信システムにおいて、受信パケットのパケット化を解除して元のパケットを取得できる装置、方法、およびプログラムを提供することである。
【課題を解決するための手段】
【００１１】
本発明の１つの態様のパケット取得方法は、第１のプロトコルに従うパケットに所定の規則に基づいてヘッダを追加することでカプセル化した第２のプロトコルに従うパケットが生成されて伝送される通信システムにおいて使用される。このパケット取得方法は、仮想的なパスを介して伝送される、前記第２のプロトコルに従う第１のパケットから前記所定の規則に基づいて追加されたヘッダを削除することでカプセル化を解除した第１のフラグメントのヘッダに含まれる長さ情報と前記第１のフラグメントに含まれるデータの長さとが一致するか否かを判定し、前記第１のフラグメントに含まれるデータの長さが、前記長さ情報により表される長さと一致しないときに、前記第１のフラグメントに含まれるデータを抽出してメモリに保存し、前記第１のパケットよりも後に前記仮想的なパスを介して伝送される、前記第２のプロトコルに従う第２のパケットのカプセル化を解除することで得られる第２のフラグメントを前記メモリに保存されているデータに結合して結合データを生成し、前記結合データの長さが前記長さ情報により表される長さと一致するときは、前記結合データを、前記第１のプロトコルに従う１個のパケットとして取得し、前記結合データの長さが前記長さ情報により表される長さよりも短いときは、前記第２のパケットよりも後に前記仮想的なパスを介して伝送される、前記第２のプロトコルに従うパケットのカプセル化を解除することで得られる後続フラグメントを前記結合データにさらに結合して新たな結合データを生成する処理を、前記新たな結合データの長さが前記長さ情報により表される長さと一致するまで繰り返す。
【発明の効果】
【００１２】
上述の態様によれば、パケットがカプセル化されて伝送される通信システムにおいて、受信パケットのパケット化を解除して元のパケットを取得できる。
【図面の簡単な説明】
【００１３】
【図１】拠点間を仮想ネットワークで接続する通信システムの一例を示す図である。
【図２】第１の実施形態に係わる通信システムの一例を示す図である。
【図３】イーサネットヘッダおよびＩＰヘッダのフォーマットを示す図である。
【図４】ＴＣＰヘッダ、ＵＤＰヘッダ、およびＶＸＬＡＮヘッダのフォーマットを示す図である。
【図５】第１の実施形態のパケット取得方法の一例を示すフローチャートである。
【図６】第２の実施形態に係わる通信システムの一例を示す図である。
【図７】１個のユーザパケットから複数のＶＸＬＡＮパケットを生成する方法の一例を示す図である。
【図８】第２の実施形態のパケット取得方法の一例を示すフローチャートである。
【図９】フラグメモリおよびデータバッファメモリの一例を示す図である。
【図１０】ユーザパケットの組立ての一例を示す図である。
【図１１】パケット取得装置の構成例を示す図である。
【図１２】第３の実施形態に係わる通信システムの一例を示す図である。
【図１３】第３の実施形態のパケット取得方法の一例を示すフローチャート（その１）である。
【図１４】第３の実施形態のパケット取得方法の一例を示すフローチャート（その２）である。
【図１５】ユーザパケットが分割されるケースにおけるＩＰ−ＩＤについて説明する図である。
【図１６】ＩＰ−ＩＤ／ＩＦ名テーブルの一例を示す図である。
【図１７】第３の実施形態が適用される通信システムの一例を示す図である。
【図１８】モニタ装置およびパケット取得装置の機能を示すブロック図である。
【発明を実施するための形態】
【００１４】
＜第１の実施形態＞
図２は、第１の実施形態に係わる通信システムの一例を示す。この実施例では、通信システム１００は、図２（ａ）に示すように、ゲートウェイ装置（ＧＷ）１Ｘ、１Ｙ間の通信を提供する。各ゲートウェイ装置１Ｘ、１Ｙは、それぞれローカルエリアネットワークに接続されている。そして、各ローカルエリアネットワーク内には、１または複数のサーバコンピュータが実装されている。図２（ａ）に示すでは、ゲートウェイ装置１Ｘに接続するローカルエリアネットワークにサーバ２Ｘが実装され、ゲートウェイ装置１Ｙに接続するローカルエリアネットワークにサーバ２Ｙが実装されている。サーバ２Ｘは、スイッチ３Ｘを介してゲートウェイ１Ｘに接続され、サーバ２Ｙは、スイッチ３Ｙを介してゲートウェイ１Ｙに接続される。なお、各ローカルエリアネットワーク内では、例えば、ＴＣＰ通信が行われる。
【００１５】
サーバ２Ｘ、２Ｙは、この実施例では、同じユーザに属するものとする。すなわち、このユーザは、サーバ２Ｘ、２Ｙ間でデータを伝送する。
【００１６】
上記構成の通信システム１００において、サーバ２Ｘからサーバ２Ｙへのデータ伝送が行われるものとする。この場合、サーバ２Ｘは、宛先がサーバ２Ｙであるユーザパケットを生成してローカルエリアネットワークに送出する。このユーザパケットは、スイッチ３Ｘによりゲートウェイ装置１Ｘに転送される。なお、ユーザパケットは、図２（ｂ）に示すように、イーサネット（登録商標）ヘッダ、ＩＰヘッダ、ＴＣＰヘッダ、およびユーザデータから構成される。ユーザパケットは、例えば、ＴＣＰパケット（または、ＴＣＰ／ＩＰパケット）により実現される。
【００１７】
ゲートウェイ装置１Ｘは、ＶＸＬＡＮトンネリングプロトコルを用いて、ゲートウェイ装置１Ｘ、１Ｙ間にトンネルを設定することができる。このトンネルは、仮想パスに相当する。なお、ゲートウェイ装置１Ｘ、１Ｙは、ユーザ毎に仮想パスを設定する。
【００１８】
ゲートウェイ装置１Ｘ、１Ｙ間の仮想パスは、ゲートウェイ装置１Ｘまたは１ＹにおいてユーザパケットにOuterヘッダを付与することで設定される。Outerヘッダは、この実施例では、ＶＸＬＡＮトンネリングプロトコルに従う。また、Outerヘッダは、図２（ｂ）に示すように、イーサネットヘッダ、ＩＰヘッダ、ＵＤＰヘッダ、ＶＸＬＡＮヘッダから構成される。なお、以下の記載では、ユーザパケットにＶＸＬＡＮトンネリングプロトコルのOuterヘッダを付与することで生成されるパケットを「ＶＸＬＡＮパケット」と呼ぶことがある。
【００１９】
イーサネットヘッダは、図３（ａ）に示すように、宛先ＭＡＣアドレス（DA MAC）、送信元ＭＡＣアドレス（SA MAC）、タグプロトコル識別子（TPID）、プライオリティコードポイント（PCP）、カノニカルフォーマットインディケータ（CFI）、仮想ＬＡＮ識別子（VLAN-ID）、タイプ（Ether-Type）を含む。なお、ユーザパケットのヘッダ中のイーサネットヘッダにおいては、タグプロトコル識別子、プライオリティコードポイント、カノニカルフォーマットインディケータ、仮想ＬＡＮ識別子を含まなくてもよい。
【００２０】
ＩＰヘッダは、図３（ｂ）に示すように、バージョン、ヘッダ長、サービスタイプ、データグラム長、識別子、フラグ、フラグメントオフセット、生存時間、プロトコル、ヘッダチェックサム、送信元ＩＰアドレス、送信先ＩＰアドレス、オプションを含む。なお、データグラム長は、ＩＰパケット全体のサイズを表す。すなわち、データグラム長は、ユーザパケットのＩＰヘッダのバイト数、ＴＣＰヘッダのバイト数、およびユーザデータのバイト数の和を表す。
【００２１】
ＴＣＰヘッダは、図４（ａ）に示すように、送信元ポート番号、送信先ポート番号、シーケンス番号、確認応答番号、ヘッダ長、予約ビット、フラグ、ウィンドウサイズ、チェックサム、緊急ポインタ、オプションを含む。ＵＤＰヘッダは、図４（ｂ）に示すように、送信元ポート番号、送信先ポート番号、ヘッダ長、チェックサムを含む。ＶＸＬＡＮヘッダは、図４（ｃ）に示すように、フラグおよびネットワーク識別子（ＶＮＩ）を含む。
【００２２】
ＶＸＬＡＮパケットを伝送する仮想パスは、Outerヘッダに設定される送信元ＩＰアドレス、送信先ＩＰアドレス、送信先ポート番号、ネットワーク識別子（ＶＮＩ）の組合せにより識別される。すなわち、ＶＸＬＡＮパケットを受信した装置は、Outerヘッダに設定されている送信元ＩＰアドレス、送信先ＩＰアドレス、送信先ポート番号、ネットワーク識別子の組合せに基づいて、そのＶＸＬＡＮパケットが伝送される仮想パスを識別できる。ここで、仮想パスは、ユーザ毎に設定される。すなわち、Outerヘッダに設定されている送信元ＩＰアドレス、送信先ＩＰアドレス、送信先ポート番号、ネットワーク識別子の組合せは、ユーザを識別する。
【００２３】
上記構成の通信システム１００において、ゲートウェイ装置１Ｘは、ミラーリング機能により、サーバ２Ｘからサーバ２Ｙへ伝送されるＶＸＬＡＮパケットをモニタ装置１１に導く。モニタ装置１１において、パケット取得装置１２は、受信したＶＸＬＡＮパケットをキャプチャし、そのＶＸＬＡＮパケットからユーザパケットを取得する。そして、モニタ装置１１は、パケット取得装置１２により取得されるユーザパケットを利用して、ネットワークの品質および状態をモニタする。具体的には、モニタ装置１１は、ユーザパケット（即ち、ＴＣＰパケット）を解析し、パケットロス、ＲＴＴ（round trip time）、アプリケーションの遅延、転送バイト数、転送パケット数などをモニタする。これにより、モニタ装置１１は、ユーザ毎に、サーバ間通信あるいはサーバ−クライアント間通信の品質および状態を分析できる。
【００２４】
図５は、第１の実施形態におけるパケット取得方法の一例を示すフローチャートである。なお、ゲートウェイ装置１Ｘは、ミラーリング機能により、ゲートウェイ装置１Ｙに向かうＶＸＬＡＮパケットをモニタ装置１１に導くものとする。
【００２５】
Ｓ１において、パケット取得装置１２は、ＶＸＬＡＮパケットを受信してキャプチャする。このＶＸＬＡＮパケットは、不図示のバッファメモリに一時的に保存される。
【００２６】
Ｓ２において、パケット取得装置１２は、受信したＶＸＬＡＮパケットのOuterヘッダに基づいて、そのＶＸＬＡＮパケットを伝送する仮想パスを識別する。この実施例では、仮想パスは、ユーザ毎に設定される。したがって、パケット取得装置１２は、受信したＶＸＬＡＮパケットのOuterヘッダに基づいて、そのＶＸＬＡＮパケットに係わるユーザを識別する。具体的には、受信ＶＸＬＡＮパケットのOuterヘッダに設定されている送信元ＩＰアドレス、送信先ＩＰアドレス、送信先ポート番号、ネットワーク識別子（ＶＮＩ）の組合せに基づいて、受信ＶＸＬＡＮパケットに係わるユーザが識別される。この後、Ｓ３〜Ｓ４の処理は、ユーザ毎に実行される。
【００２７】
Ｓ３において、パケット取得装置１２は、受信ＶＸＬＡＮパケットからOuterヘッダを削除することによりユーザパケットを取得する。Outerヘッダの長さは既知である。さらに、パケット取得装置１２は、受信ＶＸＬＡＮパケットからユーザパケットのイーサネットヘッダを削除してもよい。
【００２８】
Ｓ４において、モニタ装置１１は、パケット取得装置１２により取得されたユーザパケットを利用して、ネットワークの品質および状態を解析する。このとき、モニタ装置１１は、Ｓ２において識別されたユーザ毎に、ネットワークの品質および状態を解析してもよい。
【００２９】
＜第２の実施形態＞
図６は、第２の実施形態に係わる通信システムの一例を示す。通信システム１００の構成は、第１の実施形態および第２の実施形態において実質的に同じである。すなわち、第２の実施形態においても、通信システム１００は、ゲートウェイ装置（ＧＷ）１Ｘ、１Ｙ間の通信を提供する。
【００３０】
サーバ２Ｘ、２Ｙ間では、ユーザパケット（例えば、ＴＣＰパケット）が伝送される。また、ゲートウェイ装置１Ｘ、１Ｙ間では、ＶＸＬＡＮパケットが伝送される。即ち、サーバ２Ｘから送信されるユーザパケットは、ゲートウェイ装置１Ｘにおいてカプセル化され、仮想パスを介してゲートウェイ装置１Ｙに伝送される。そして、ゲートウェイ装置１Ｙは、ＶＸＬＡＮパケットのカプセル化を解除してユーザパケットを抽出し、抽出したユーザパケットをサーバ２Ｙに転送する。
【００３１】
ユーザパケットのサイズは、送信元サーバ（図６では、サーバ２Ｘ）が指定するＭＴＵ（maximum transmission unit）により決定される。一方、ＶＸＬＡＮパケットのサイズは、ゲートウェイ装置（図６では、ゲートウェイ装置１Ｘ）が指定するＭＴＵにより決定される。ところが、送信元サーバおよびゲートウェイ装置は、互いに独立してＭＴＵを指定する。このため、サーバ間で伝送されるユーザパケットのサイズが、ゲートウェイ間で伝送されるＶＸＬＡＮパケットのサイズよりも大きくなることがある。そして、ユーザパケットのサイズがＶＸＬＡＮパケットよりも大きいときは、ユーザパケットが複数のフラグメントに分割されてカプセル化される。すなわち、１個のユーザパケットから複数のＶＸＬＡＮパケットが生成される。
【００３２】
図６に示す例では、サーバ２Ｘが指定するＭＴＵが１６００バイトであり、ゲートウェイ装置１Ｘが指定するＭＴＵが１２００バイトである。そして、サーバ２Ｘは、１６００バイトのユーザパケットを送信する。
【００３３】
ゲートウェイ装置１Ｘは、サーバ２Ｘから受信するユーザパケットを分割してフラグメントＦ１およびフラグメントＦ２を生成する。そして、ゲートウェイ装置１Ｘは、フラグメントＦ１にOuterヘッダを付与するカプセル化を行ってＶＸＬＡＮパケット１を生成する。また、ゲートウェイ装置１Ｘは、フラグメントＦ２にOuterヘッダを付与するカプセル化を行ってＶＸＬＡＮパケット２を生成する。すなわち、ゲートウェイ装置１Ｘにおいて、１個のユーザパケットから２個のカプセル化されたパケット（ＶＸＬＡＮパケット１およびＶＸＬＡＮパケット２）が生成される。
【００３４】
フラグメントＦ１は、図７に示すように、ユーザパケットのイーサネットヘッダ、ＩＰヘッダ、ＴＣＰヘッダ、およびユーザデータの一部（以下、ユーザデータ１）から構成される。一方、フラグメントＦ２は、ユーザデータの残り部分（以下、ユーザデータ２）から構成される。すなわち、フラグメントＦ２は、ユーザパケットのヘッダ情報を含んでいない。なお、ゲートウェイ装置１Ｘは、例えば、フラグメントＦ１の長さが１２００バイトとなるように、ユーザパケットからフラグメントＦ１およびフラグメントＦ２を生成する。
【００３５】
フラグメントＦ１、Ｆ２に付与されるOuterヘッダは、互いに実質的に同じである。ここで、Outerヘッダに設定される送信元ＩＰアドレス、送信先ＩＰアドレス、送信先ポート番号、ネットワーク識別子（ＶＮＩ）の組合せは、ＶＸＬＡＮパケットを伝送する仮想パスを識別する。したがって、ＶＸＬＡＮパケット１およびＶＸＬＡＮパケット２は、同じ仮想パスを介して伝送される。
【００３６】
ただし、ＶＸＬＡＮパケット１とＶＸＬＡＮパケット２との間で、Outerヘッダ中のＩＰヘッダに設定される識別子（ＩＰ−ＩＤ）は、互いに異なる。具体的には、ＶＸＬＡＮパケット２のＩＰ−ＩＤは、ＶＸＬＡＮパケット１のＩＰ−ＩＤを１だけインクリメントすることにより生成される。
【００３７】
上記構成の通信システム１００において、ゲートウェイ装置１Ｘは、上述のカプセル化により生成されるＶＸＬＡＮパケットをゲートウェイ装置１Ｙに送信する。このとき、ゲートウェイ装置１Ｘは、ミラーリング機能を利用して、生成したＶＸＬＡＮパケットをモニタ装置１１にも送信する。
【００３８】
モニタ装置１１において、パケット取得装置１２は、受信したＶＸＬＡＮパケットをキャプチャし、そのＶＸＬＡＮパケットからユーザパケットを取得する。このとき、１個のユーザパケットから複数のＶＸＬＡＮパケットが生成されている場合には、パケット取得装置１２は、それら複数のＶＸＬＡＮパケットからユーザパケットを取得する。そして、モニタ装置１１は、ユーザパケットを解析し、パケットロス、ＲＴＴ、アプリケーションの遅延、転送バイト数、転送パケット数などをモニタする。
【００３９】
図８は、第２の実施形態におけるモニタ装置１２の処理の一例を示すフローチャートである。なお、ゲートウェイ装置１Ｘは、ミラーリング機能により、ゲートウェイ装置１Ｙに向かうＶＸＬＡＮパケットをモニタ装置１１に導くものとする。
【００４０】
Ｓ１１〜Ｓ１２は、図５に示すＳ１〜Ｓ２と実質的に同じである。すなわち、パケット取得装置１２は、受信ＶＸＬＡＮパケットのOuterヘッダに基づいて、そのＶＸＬＡＮパケットに係わるユーザを識別する。なお、Ｓ１３〜Ｓ１８およびＳ２１〜Ｓ２６の処理は、Ｓ１２で識別されるユーザ毎に実行される。
【００４１】
なお、パケット取得装置１２は、Ｓ１２で識別されるユーザ毎に、後述するフラグメント中フラグを管理する。各ユーザのフラグメント中フラグは、図９に示すように、フラグメモリに記録される。そして、各ユーザのフラグメント中フラグは、ユーザを識別するユーザＩＤにより検索可能であるものとする。
【００４２】
加えて、パケット取得装置１２は、受信ＶＸＬＡＮパケットから抽出するユーザパケットデータを一時的に格納するデータバッファメモリを備える。そして、パケット取得装置１２は、Ｓ１２で識別されるユーザ毎に、受信ＶＸＬＡＮパケットから抽出するユーザパケットデータをデータバッファメモリ格納するためのメモリ領域を確保する。このメモリ領域のアドレスは、図９に示すように、ユーザＩＤに一意に対応付けられている。ユーザＩＤは、この実施例では、ＶＸＬＡＮパケットに設定されている送信元ＩＰアドレス、送信先ＩＰアドレス、送信先ポート番号、ネットワーク識別子の組合せに基づいて生成される。
【００４３】
Ｓ１３において、パケット取得装置１２は、Ｓ１１で受信したＶＸＬＡＮパケットに対して、フラグメント処理が必要か否かを判定する。フラグメント処理は、１個のユーザパケットから複数のＶＸＬＡＮパケットが生成されるときに、２個目のＶＸＬＡＮパケットから最後のＶＸＬＡＮパケットに対して実行される。すなわち、１個のユーザパケットから複数のＶＸＬＡＮパケットが生成されるケースにおいて、受信ＶＸＬＡＮパケットがユーザパケットの一部のみを含むときに、フラグメント処理が必要と判定される。ただし、フラグメント処理が必要か否かは、図９に示すフラグメモリに記録されるフラグメント中フラグにより表される。したがって、パケット取得装置１２は、ユーザＩＤでフラグメモリにアクセスし、受信パケットに係わるユーザに対応するフラグメント中フラグを参照することにより、フラグメント処理が必要か否かを判定する。なお、フラグメント中フラグは、後で説明するが、初期状態においてＯＦＦであり、Ｓ１７またはＳ２４により更新される。
【００４４】
フラグメント処理を実行しないときは（Ｓ１３：Ｎｏ）、パケット取得装置１２は、Ｓ１４において、受信ＶＸＬＡＮパケットからOuterヘッダおよびユーザパケットのイーサネットヘッダを削除する。この結果、ユーザパケットのＩＰヘッダおよびＴＣＰヘッダ、及びユーザデータの少なくとも一部が得られる。受信ＶＸＬＡＮパケットからOuterヘッダおよびユーザパケットのイーサネットヘッダを削除する処理は、この実施例では、ＶＸＬＡＮパケットのカプセル化を解除する処理（即ち、デカプセル化処理）に相当する。
【００４５】
Ｓ１５において、パケット取得装置１２は、ユーザパケットのＩＰヘッダから「データグラム長」を取得する。データグラム長は、ユーザパケットのＩＰヘッダのバイト数、ユーザパケットのＴＣＰヘッダのバイト数、及びユーザデータ全体のバイト数の和を表す。
【００４６】
Ｓ１６において、パケット取得装置１２は、受信パケットのデータ長がＩＰヘッダから取得したデータグラム長と一致するか否かを判定する。「受信パケットのデータ長」は、Ｓ１４において受信ＶＸＬＡＮパケットからOuterヘッダおよびユーザパケットのイーサネットヘッダを削除することで得られる残り部分のバイト数を表す。よって、このデータ長は、受信ＶＸＬＡＮパケットのバイト数からOuterヘッダのバイト数およびユーザパケットのイーサネットヘッダのバイト数を引算することで得られる。
【００４７】
受信パケットのデータ長がＩＰヘッダから取得したデータグラム長と一致するときは、パケット取得装置１２は、受信ＶＸＬＡＮパケットの中に１個のユーザパケット全体がカプセル化されていると判定する。この場合、パケット取得装置１２は、Ｓ２５において、Ｓ１４で取得した残り部分（ＩＰヘッダ、ＴＣＰヘッダ、ユーザデータ）を１個のユーザパケットとして取得する。そして、Ｓ２６において、モニタ装置１１は、このユーザパケットを利用してネットワークの品質および状態を解析する。
【００４８】
受信パケットのデータ長がＩＰヘッダから取得したデータグラム長と一致しないときには（Ｓ１６：Ｎｏ）、パケット取得装置１２は、Ｓ１７において、ユーザパケットが複数のフラグメントに分割され、且つ、それら複数のフラグメントのうちの最初のフラグメントがＳ１１で受信したＶＸＬＡＮパケットに格納されている、と判定する。すなわち、パケット取得装置１２は、上述した複数のフラグメントのうちの２番目以降のフラグメントが存在すると判定する。さらに換言すれば、パケット取得装置１２は、フラグメント処理が必要であると判定する。したがって、パケット取得装置１２は、フラグメント中フラグをＯＮ状態に更新する。
【００４９】
Ｓ１８において、パケット取得装置１２は、受信ＶＸＬＡＮパケットから取得したデータをデータバッファメモリに保存する。このデータは、図９に示すように、ユーザＩＤに対応する領域に格納される。なお、Ｓ１８においてデータバッファメモリに保存されるデータは、ユーザパケットのＩＰヘッダおよびＴＣＰヘッダ、及びユーザデータの一部から構成される。なお、Ｓ１７〜Ｓ１８の処理を実行した後は、パケット取得装置１２は、２番目以降のフラグメントが格納されたＶＸＬＡＮパケットを待ち受ける。
【００５０】
フラグメント処理を実行するときは（Ｓ１３：Ｙｅｓ）、パケット取得装置１２は、Ｓ２１において、受信ＶＸＬＡＮパケットからOuterヘッダを削除する。この残り部分は、２番目以降のフラグメントのいずれか１つに相当する。ここで、２番目以降のフラグメントは、ユーザデータの一部のみから構成される。したがって、パケット取得装置１２は、受信ＶＸＬＡＮパケットからOuterヘッダを削除することにより、ユーザデータの一部を取得する。なお、受信ＶＸＬＡＮパケットからOuterヘッダを削除する処理は、この実施例では、ＶＸＬＡＮパケットのカプセル化を解除する処理（即ち、デカプセル化処理）に相当する。
【００５１】
Ｓ２２において、パケット取得装置１２は、ユーザＩＤに対応するメモリ領域に保存されているデータ（又は、結合データ）に、Ｓ２１で新たに取得したフラグメントを結合して結合データを生成する。すなわち、データバッファメモリに保存されているデータ（又は、結合データ）に、Ｓ２１で新たに取得したユーザデータが結合される。
【００５２】
Ｓ２３において、パケット取得装置１２は、Ｓ２２で生成した結合データのデータ長がＩＰヘッダから取得したデータグラム長と一致するか否かを判定する。結合データのデータ長がデータグラム長よりも短いときは、パケット取得装置１２は、後続のフラグメントが残っていると判定する。この場合、パケット取得装置１２の処理は終了する。即ち、パケット取得装置１２は、次のＶＸＬＡＮパケットを待ち受ける。
【００５３】
結合データのデータ長がデータグラム長と一致するときは、パケット取得装置１２は、１個のユーザパケットから生成される複数のＶＸＬＡＮパケットをすべて受信したと判定する。すなわち、パケット取得装置１２は、後続のフラグメントが残っていないと判定する。この場合、パケット取得装置１２は、Ｓ２４において、フラグメント中フラグをＯＦＦ状態に更新する。また、パケット取得装置１２は、Ｓ２５において、Ｓ２２で生成される結合データを１個のユーザパケットとして取得する。そして、Ｓ２６において、モニタ装置１１は、このユーザパケットを利用してネットワークの品質および状態を解析する。
【００５４】
なお、Ｓ１６において受信パケットのデータ長がデータグラム長と一致しなかったときは、図８に示すフローチャートの処理は、結合データのデータ長がデータグラム長と一致するまで繰り返し実行される。そして、結合データのデータ長がデータグラム長と一致したときに、パケット取得装置１２は、その結合データを１個のユーザパケットとして取得する。
【００５５】
また、Ｓ２３において、結合データのデータ長がデータグラム長よりも長いときは、何らかの通信エラーが発生したと考えられる。したがって、この場合、パケット取得装置１２は、フラグメント中フラグを初期化し、また、データバッファメモリに格納されているデータを廃棄する。
【００５６】
このように、第２の実施形態のパケット取得方法においては、ユーザパケットが複数のフラグメントに分割されて伝送されるときに、パケット取得装置１２は、先頭のフラグメントに含まれるユーザパケットのヘッダ情報からデータグラム長を取得する。そして、パケット取得装置１２は、複数のフラグメントを結合したときの長さがデータグラム長に一致するときに、その結合データを１個のユーザパケットとして取得する。したがって、ユーザパケットのヘッダ情報を含まないフラグメントがＶＸＬＡＮパケット内にカプセル化されて伝送される場合であっても、パケット取得装置１２は、カプセル化前のユーザパケットを取得できる。
【００５７】
次に、図６〜図７に示す実施例を参照しながら図８に示すフローチャートの処理を説明する。なお、図６〜図７に示す実施例では、１個のユーザパケットから２個のＶＸＬＡＮパケットが生成される。ＶＸＬＡＮパケット１には、ユーザパケットのイーサネットヘッダ、ＩＰヘッダ、ＴＣＰヘッダ、及びユーザデータの一部（ユーザデータ１）がカプセル化される。ＶＸＬＡＮパケット２には、残りのユーザデータ（ユーザデータ２）がカプセル化される。
【００５８】
パケット取得装置１２は、Ｓ１１においてＶＸＬＡＮパケット１を受信すると、Ｓ１２においてOuterヘッダを参照してユーザを識別する。このとき、このユーザに対応するフラグメント中フラグは、ＯＦＦ状態に初期化されている。よって、パケット取得装置１２の処理はＳ１４に進む。
【００５９】
Ｓ１４において、パケット取得装置１２は、ＶＸＬＡＮパケット１からOuterヘッダおよびユーザパケットのイーサネットヘッダを削除することにより、ユーザパケットのＩＰヘッダおよびＴＣＰヘッダ、及びユーザデータ１を取得する。Ｓ１５において、パケット取得装置１２は、ＩＰヘッダから「データグラム長」を取得する。Ｓ１６において、パケット取得装置１２は、ユーザパケットのＩＰヘッダおよびＴＣＰヘッダ、及びユーザデータ１の合計バイト数とデータグラム長とを比較する。
【００６０】
この実施例では、ユーザパケットのＩＰヘッダおよびＴＣＰヘッダ、及びユーザデータ１の合計バイト数は、データグラム長よりも小さい。よって、Ｓ１７において、パケット取得装置１２は、フラグメント中フラグをＯＮ状態に更新する。また、Ｓ１８において、パケット取得装置１２は、図１０に示すように、Ｓ１４で取得したユーザパケットのＩＰヘッダおよびＴＣＰヘッダ、及びユーザデータ１をパケットデータメモリに保存する。
【００６１】
次に、パケット取得装置１２は、ＶＸＬＡＮパケット２を受信し、ユーザを識別する。そして、パケット取得装置１２は、ＶＸＬＡＮパケット２と同じユーザに係わるパケットを先に受信しているか否かを判定する。この実施例では、ＶＸＬＡＮパケット１およびＶＸＬＡＮパケット２は同じユーザに係わる。よって、パケット取得装置１２は、ＶＸＬＡＮパケット１に対して実行した処理を引き継ぎながら、ＶＸＬＡＮパケット２に対する処理を実行する。具体的には、パケット取得装置１２は、ＶＸＬＡＮパケット１を受信したときに更新したフラグメント中フラグおよびパケットデータメモリに保存されているデータを利用しながら、ＶＸＬＡＮパケット２に対する処理を実行する。
【００６２】
ＶＸＬＡＮパケット１に対するパケット取得処理においては、フラグメント中フラグがＯＮ状態に更新されている。また、ユーザパケットのＩＰヘッダおよびＴＣＰヘッダ、及びユーザデータ１がパケットデータメモリに保存されている。
【００６３】
Ｓ１３において、パケット取得装置１２は、フラグメント中フラグを参照する。このとき、フラグメント中フラグはＯＮ状態なので、パケット取得装置１２の処理はＳ２１に進む。
【００６４】
Ｓ２１において、パケット取得装置１２は、ＶＸＬＡＮパケット２からOuterヘッダを削除することでユーザデータ２を取得する。Ｓ２２において、パケット取得装置１２は、ユーザＩＤを用いてパケットデータメモリにアクセスすることにより、ＶＸＬＡＮパケット１から取得したデータをサーチする。そして、パケット取得装置１２は、図１０に示すように、ＶＸＬＡＮパケット１から取得したデータに、ＶＸＬＡＮパケット２から新たに取得したデータを結合することで、結合データを生成する。
【００６５】
この実施例では、Ｓ２２で生成される結合データのデータ長は、ＩＰヘッダから取得したデータグラム長と一致する。よって、パケット取得装置１２は、Ｓ２５において、この結合データを１個のユーザパケットとして取得する。
【００６６】
なお、図６〜図７に示す実施例では、１個のユーザパケットから２個のＶＸＬＡＮパケットが生成されるが、本発明は、１個のユーザパケットから任意の個数のＶＸＬＡＮパケットが生成されるケースに適用可能である。即ち、１個のユーザパケットから複数のＶＸＬＡＮパケットが生成されるケースでは、パケット取得装置１２は、結合データの長さがデータグラム長に一致するまで、先に受信しているデータに新たなデータを結合する処理を繰り返し実行する。そして、結合データの長さがデータグラム長に一致したときに、パケット取得装置１２は、この結合データを１個のユーザパケットとして取得する。
【００６７】
図１１（ａ）は、第２の実施形態に係わるパケット取得装置の一例を示す図である。パケット取得装置１２は、インタフェース回路２１、プロセッサ２２、およびメモリ２３を備える。インタフェース回路２１は、ゲートウェイ装置から転送されてくるＶＸＬＡＮパケットを終端する。プロセッサ２２は、メモリ２３に格納されているパケット取得プログラムを実行することにより、受信ＶＸＬＡＮパケットからユーザパケットを取得する。パケット取得プログラムは、図８に示すフローチャートのＳ１１〜Ｓ１８およびＳ２１〜Ｓ２５の処理を記述する。よって、プロセッサ２２は、パケット取得プログラムを実行することにより、図８に示すフローチャートの処理を実現する。
【００６８】
なお、メモリ２３は、他のプログラムを格納してもよい。また、メモリ２３は、受信パケットを一時的に保存するデータバッファメモリおよびフラグメント中フラグを格納するフラグメモリを含む。さらに、メモリ２３は、複数のフラグメントを結合するための作業領域としても使用される。
【００６９】
＜第３の実施形態＞
図１２は、第３の実施形態に係わる通信システムの一例を示す。第３の実施形態においは、サーバ２Ｘからサーバ２Ｙにデータを伝送する上りパスおよびサーバ２Ｙからサーバ２Ｘにデータを伝送する下りパスは、物理的に異なる回線に設定されている。すなわち、ゲートウェイ装置１Ｘ＿Ｕは、サーバ２Ｘからサーバ２Ｙに向かうユーザパケットをＶＸＬＡＮパケットに変換してゲートウェイ装置１Ｙ＿Ｕに送信し、ゲートウェイ装置１Ｙ＿Ｕは、このＶＸＬＡＮパケットからユーザパケットを抽出してサーバ２Ｙに転送する。同様に、ゲートウェイ装置１Ｙ＿Ｄは、サーバ２Ｙからサーバ２Ｘに向かうユーザパケットをＶＸＬＡＮパケットに変換してゲートウェイ装置１Ｘ＿Ｄに送信し、ゲートウェイ装置１Ｘ＿Ｄは、このＶＸＬＡＮパケットからユーザパケットを抽出してサーバ２Ｘに転送する。
【００７０】
モニタ装置１１は、複数のインタフェース回路を備える。各インタフェース回路は、それぞれ対応するゲートウェイ装置に接続される。図１１に示す実施例では、モニタ装置１１は、インタフェースＩＦ１、ＩＦ２を備える。インタフェースＩＦ１は、ゲートウェイ装置１Ｘ＿Ｕから送られてくるＶＸＬＡＮパケットを終端し、インタフェースＩＦ２は、ゲートウェイ装置１Ｘ＿Ｄから送られてくるＶＸＬＡＮパケットを終端する。
【００７１】
モニタ装置１１は、インタフェースＩＦ１、ＩＦ２を介して受信するパケットを順番に処理する。このため、モニタ装置１１は、受信パケットを適切な順番で処理できないことがある。例えば、ゲートウェイ装置１Ｘ＿Ｕが１個のユーザパケットからＶＸＬＡＮパケット１およびＶＸＬＡＮパケット２を生成し、ゲートウェイ装置１Ｘ＿Ｄがゲートウェイ装置１Ｙ＿ＤからＶＸＬＡＮパケット３を受信するものとする。そして、モニタ装置１１は、順番に、インタフェースＩＦ１を介してＶＸＬＡＮパケット１を受信し、インタフェースＩＦ２を介してＶＸＬＡＮパケット３を受信し、インタフェースＩＦ１を介してＶＸＬＡＮパケット２を受信するものとする。ここで、ＶＸＬＡＮパケット１〜３は、同じユーザに係わる。よって、図８に示すフローチャートの手順でＶＸＬＡＮパケット１〜３が順番に処理されると、上りパスのデータおよび下りパスのデータが結合されてしまうおそれがある。すなわち、モニタ装置１１は、ネットワークの品質および状態を正しくモニタできないおそれがある。
【００７２】
そこで、第３の実施形態においては、パケット取得装置１２は、受信パケットに設定されている送信元ＩＰアドレス、送信先ＩＰアドレス、送信先ポート番号、ネットワーク識別子（ＶＮＩ）の組合せに基づいてユーザを識別する共に、ＩＰヘッダ内に設定されているＩＰ−ＩＤに基づいてパケットの連続性をチェックする。加えて、パケット取得装置１２は、パケット取得装置１２が備える複数のインタフェースのうちのどのインタフェースを介してパケットを受信したのかを考慮してパケット取得処理を実行する。
【００７３】
図１３〜図１４は、第３の実施形態におけるモニタ装置の処理の一例を示すフローチャートである。なお、モニタ装置１１に接続する各ゲートウェイ装置は、ミラーリング機能により、ＶＸＬＡＮパケットをモニタ装置１１に導くものとする。
【００７４】
Ｓ３１〜Ｓ３２は、図５に示すＳ１〜Ｓ２と実質的に同じである。すなわち、パケット取得装置１２は、受信ＶＸＬＡＮパケットのOuterヘッダに基づいて、そのＶＸＬＡＮパケットに係わるユーザを識別する。なお、Ｓ３３〜Ｓ３９およびＳ４１〜Ｓ５０の処理は、Ｓ３２で識別されるユーザ毎に実行される。
【００７５】
Ｓ３３において、パケット取得装置１２は、受信ＶＸＬＡＮパケット内にユーザパケットのヘッダ情報が格納されているか否か判定する。このとき、パケット取得装置１２は、ユーザパケットのＩＰヘッダを参照してもよい。この場合、例えば、ＩＰヘッダのチェックサムを利用した検証が正しければ、受信ＶＸＬＡＮパケット内にユーザパケットのヘッダ情報が格納されていると判定される。そして、受信ＶＸＬＡＮパケット内にユーザパケットのヘッダ情報が格納されているときは、パケット取得装置１２は、下記のいずれかのケースに起因するＶＸＬＡＮパケットがパケット取得装置１２に到着したと判定する。
【００７６】
（１）１個のユーザパケットから１個のＶＸＮＡＬパケットが生成され（すなわち、１個のユーザパケット全体を含むＶＸＮＡＬパケットが生成され）、そのＶＸＮＡＬパケットがパケット取得装置１２に到着した。
（２）１個のユーザパケットが複数のフラグメントに分割され、それら複数のフラグメントのうちの先頭のフラグメントが格納されたＶＸＮＡＬパケットがパケット取得装置１２に到着した。
そして、受信ＶＸＬＡＮパケット内にユーザパケットのヘッダ情報が格納されているときは、パケット取得装置１２の処理はＳ３４に進む。
【００７７】
Ｓ３４〜Ｓ３６の処理は、図８に示すＳ１４〜Ｓ１６と実質的に同じである。即ち、Ｓ３４において、パケット取得装置１２は、受信ＶＸＬＡＮパケットからOuterヘッダおよびユーザパケットのイーサネットヘッダを削除する。Ｓ３５において、パケット取得装置１２は、ユーザパケットのＩＰヘッダから「データグラム長」を取得する。そして、Ｓ３６において、パケット取得装置１２は、受信パケットのデータ長がＩＰヘッダから取得したデータグラム長と一致するか否かを判定する。
【００７８】
受信パケットのデータ長がＩＰヘッダから取得したデータグラム長と一致するときには（Ｓ３６：Ｙｅｓ）、パケット取得装置１２は、受信ＶＸＬＡＮパケットの中に１個のユーザパケット全体がカプセル化されていると判定する。この場合、パケット取得装置１２は、Ｓ４９において、Ｓ３４で取得した残り部分（ＩＰヘッダ、ＴＣＰヘッダ、ユーザデータ）を１個のユーザパケットとして取得する。そして、Ｓ５０において、モニタ装置１１は、このユーザパケットを利用してネットワークの品質および状態を解析する。
【００７９】
受信パケットのデータ長がＩＰヘッダから取得したデータグラム長と一致しないときには（Ｓ３６：Ｎｏ）、パケット取得装置１２は、Ｓ３７において、受信ＶＸＬＡＮパケットから取得したデータをデータバッファメモリに格納する。このデータは、図９に示すように、ユーザＩＤに対応する領域に格納される。なお、このデータは、ユーザパケットのＩＰヘッダおよびＴＣＰヘッダ、及びユーザデータの一部から構成される。
【００８０】
Ｓ３８において、パケット取得装置１２は、受信ＶＸＬＡＮパケットのOuterヘッダからＩＰ−ＩＤを取得する。そして、パケット取得装置１２は、取得したＩＰ−ＩＤをＩＰ−ＩＤ／ＩＦ名テーブルに保存する。
【００８１】
ＩＰ−ＩＤは、ゲートウェイ装置がユーザパケットをカプセル化する際に、ＶＸＬＡＮパケットのＩＰヘッダに設定される。ここで、１個のユーザパケットから複数のＶＸＬＡＮパケットが生成されるときは、それら複数のＶＸＬＡＮパケットに設定されるＩＰ−ＩＤの値は連続している。
【００８２】
例えば、図１５に示すように、ゲートウェイ装置において１個のユーザパケットが３個のフラグメントＦ１〜Ｆ３に分割されるものとする。すなわち、ゲートウェイ装置は、３個のＶＸＬＡＮパケット１〜３を順番に生成する。ここで、最初に生成されるＶＸＬＡＮパケット１のヘッダに「ＩＰ−ＩＤ：１０００」が設定されるものとする。この場合、ＶＸＬＡＮパケット２のヘッダに「ＩＰ−ＩＤ：１００１」が設定され、ＶＸＬＡＮパケット３のヘッダに「ＩＰ−ＩＤ：１００２」が設定される。
【００８３】
Ｓ３９において、パケット取得装置１２は、受信したＶＸＬＡＮパケットが到着したインタフェース回路を表すＩＦ名を取得する。なお、各インタフェース回路を識別するＩＦ名は、パケット取得装置１２のＯＳにより管理されており、各インタフェース回路のドライバに設定されている。そして、あるインタフェース回路にパケットが到着すると、そのインタフェース回路のドライバからパケット取得装置１２のプロセッサにＩＦ名が通知される。その後、パケット取得装置１２は、取得したＩＦ名をＩＰ−ＩＤ／ＩＦ名テーブルに保存する。
【００８４】
図１６は、ＩＰ−ＩＤ／ＩＦ名テーブルの一例を示す。ＩＰ−ＩＤ／ＩＦ名テーブルには、ＩＰ−ＩＤの値およびＩＦ名が互いに関連付けられて記録される。具体的には、パケット取得装置１２は、Ｓ３８〜Ｓ３９を実行するときに、ＩＰ−ＩＤ／ＩＦ名テーブルに新たなレコードを作成する。そして、パケット取得装置１２は、Ｓ３８において取得したＩＰ−ＩＤの値およびＳ３９において取得してＩＦ名をそのレコードに記録する。
【００８５】
なお、Ｓ３７〜Ｓ３９は「１個のユーザパケットから複数のＶＸＮＡＬパケットが生成され、それらのうちの先頭のＶＸＮＡＬパケットがパケット取得装置１２に到着した」ときに実行される。よって、Ｓ３９の処理を実行した後は、パケット取得装置１２は、２番目以降のフラグメントが格納されたＶＸＬＡＮパケットを待ち受ける。
【００８６】
受信ＶＸＬＡＮパケット内にユーザパケットのヘッダ情報が格納されていないときには（Ｓ３３：Ｎｏ）、パケット取得装置１２の処理はＳ４１に進む。Ｓ４１〜Ｓ４２の処理は、Ｓ３８〜Ｓ３９と実質的に同じである。すなわち、Ｓ４１において、パケット取得装置１２は、受信ＶＸＬＡＮパケットのOuterヘッダからＩＰ−ＩＤを取得する。Ｓ４２において、パケット取得装置１２は、受信したＶＸＬＡＮパケットが到着したインタフェース回路を表すＩＦ名を取得する。
【００８７】
Ｓ４３〜Ｓ４４において、パケット取得装置１２は、Ｓ４１〜Ｓ４２で取得したＩＰ−ＩＤおよびＩＦ名を用いてＩＰ−ＩＤ／ＩＦ名テーブルを検索する。具体的には、パケット取得装置１２は、Ｓ４２で取得したＩＦ名と同じＩＦ名が記録されており、且つ、Ｓ４１で取得したＩＰ−ＩＤの値よりも１だけ小さい値が記録されているレコードがＩＰ−ＩＤ／ＩＦ名テーブルに存在するか否かを判定する。そして、ＩＰ−ＩＤ／ＩＦ名テーブルにそのようなレコードが存在するときは、パケット取得装置１２の処理はＳ４５に進む。
【００８８】
Ｓ４５において、パケット取得装置１２は、ＩＰ−ＩＤ／ＩＦ名テーブルを更新する。具体的には、パケット取得装置１２は、Ｓ４４で発見されたレコードにおいて、先に記録されているＩＰ−ＩＤを、Ｓ４１で取得したＩＰ−ＩＤに書きかえる。
【００８９】
Ｓ４６〜Ｓ４８の処理は、図８に示すＳ２１〜Ｓ２３と実質的に同じである。即ち、Ｓ４６において、パケット取得装置１２は、受信ＶＸＬＡＮパケットからOuterヘッダを削除する。Ｓ４７において、パケット取得装置１２は、ユーザＩＤに対応するメモリ領域に保存されているデータ（又は、結合データ）に、Ｓ４６で新たに取得したフラグメントを結合して結合データを生成する。Ｓ４８において、パケット取得装置１２は、Ｓ４７で生成した結合データのデータ長がＩＰヘッダから取得したデータグラム長と一致するか否かを判定する。そして、結合データのデータ長がデータグラム長よりも小さいときは、パケット取得装置１２は、さらに後続するフラグメントが残っていると判定する。この場合、パケット取得装置１２の処理は終了する。すなわち、パケット取得装置１２は、次のＶＸＬＡＮパケットを待ち受ける。
【００９０】
なお、Ｓ３６において受信パケットのデータ長がデータグラム長と一致しなかったときは、図１３〜図１４に示すフローチャートの処理は、結合データのデータ長がデータグラム長と一致するまで繰り返し実行される。そして、結合データのデータ長がデータグラム長と一致したときに、パケット取得装置１２の処理はＳ４９に進む。
【００９１】
結合データのデータ長がデータグラム長と一致するときは、パケット取得装置１２は、１個のユーザパケットから生成される複数のＶＸＬＡＮパケットをすべて受信したと判定する。即ち、パケット取得装置１２は、後続のフラグメントが残っていないと判定する。この場合、パケット取得装置１２は、Ｓ４９において、Ｓ４７で生成される結合データを１個のユーザパケットとして取得する。そして、Ｓ５０において、モニタ装置１１は、このユーザパケットを利用してネットワークの品質および状態を解析する。
【００９２】
なお、Ｓ４８において、結合データのデータ長がデータグラム長よりも長いときは、何らかの通信エラーが発生したと考えられる。したがって、この場合、パケット取得装置１２は、データバッファメモリに格納されているデータを廃棄する。
【００９３】
このように、第３の実施形態では、複数のＶＸＬＡＮパケットのヘッダに付与されているＩＰ−ＩＤの連続性を考慮して複数のフラグメントからユーザパケットが組み立てられる。したがって、同じ仮想パスを介して複数の通信が行われるケースであっても、パケット取得装置１２は、ユーザパケットを正しく組み立てることができる。
【００９４】
なお、ＩＰ−ＩＤの連続性を考慮して複数のフラグメントからユーザパケットが組み立てられる場合であっても、例えば、図１２に示す上りパスおよび下りパスにおいて伝送されるＶＸＬＡＮパケットのＩＰ−ＩＤの値が互い同じであった場合には、それら２個のパケットを互いに識別できない。すなわち、パケット取得装置１２は、上りパスのデータおよび下りパスのデータを結合してしまうおそれがある。
【００９５】
そこで、第３の実施形態では、パケット取得装置１２は、受信するＶＸＬＡＮパケットのＩＰ−ＩＤの値が連続しており、且つ、それらのＶＸＬＡＮパケットが同じインタフェース回路に到着した場合に、それらのＶＸＬＡＮパケットから抽出されるデータを結合する。したがって、取得されるユーザパケットの信頼性がさらに高くなる。ただし、第３の実施形態は、必ずしもインタフェース回路の同一性を考慮しなくてもよい。
【００９６】
図１１（ｂ）は、第３の実施形態に係わるパケット取得装置の一例を示す図である。パケット取得装置１２は、複数のインタフェース回路２１、プロセッサ２２、およびメモリ２３を備える。各インタフェース回路２１は、対応するゲートウェイ装置から転送されてくるＶＸＬＡＮパケットを終端する。プロセッサ２２は、メモリ２３に格納されているパケット取得プログラムを実行することにより、受信ＶＸＬＡＮパケットからユーザパケットを取得する。パケット取得プログラムは、図１３〜図１４に示すフローチャートのＳ３１〜Ｓ３９およびＳ４１〜Ｓ４９の処理を記述する。よって、プロセッサ２２は、パケット取得プログラムを実行することにより、図１３〜図１４に示すフローチャートの処理を実現する。
【００９７】
なお、メモリ２３は、他のプログラムを格納してもよい。また、メモリ２３は、受信パケットを一時的に保存するバッファメモリおよびＩＰ−ＩＤ／ＩＦ名テーブルを含んでもよい。さらに、メモリ２３は、複数のフラグメントを結合するための作業領域としても使用される。
【００９８】
図１７は、第３の実施形態が適用される通信システムの一例を示す。この実施例では、サーバ間を接続するネットワークが冗長的に構成されており、障害の発生等に起因して、運用系（ＡＣＴ）および予備系（ＳＢＹ）が動的に切り替えられる。
【００９９】
パケット取得装置１２は、４個以上のインタフェースを備え、運用系の上りパス、運用系の下りパス、予備系の上りパス、予備系の下りパスからそれぞれパケットを受信できるように構成されている。したがって、上りパスおよび下りパスにおいてそれぞれどちらの経路が選択された場合であっても、パケット取得装置１２は、パスごとにユーザパケットを正しく組み立てることができる。
【０１００】
図１８は、モニタ装置１１およびパケット取得装置１２の機能の一例を示すブロック図である。モニタ装置１１は、この実施例では、パケット取得装置１２および解析部１３を備える。ただし、モニタ装置１１は、パケット取得装置１２を内蔵していなくてもよい。すなわち、パケット取得装置１２は、モニタ装置１１の外部に設けられてもよい。この場合、パケット取得装置１２により取得されるパケットは、モニタ装置１１に転送される。
【０１０１】
パケット取得装置１２は、パケット受信部３１、ユーザ識別部３２、フラグメント判定部３３、パケット組立て部３４を備える。なお、パケット取得装置１２は、図１８に示していない他の機能を備えていてもよい。
【０１０２】
パケット受信部３１は、カプセル化されたパケットをネットワークから受信する。上述した実施例では、パケット受信部３１は、ゲートウェイ装置からＶＸＬＡＮパケットを受信する。
【０１０３】
ユーザ識別部３２は、パケット受信部３１が受信したパケットを伝送する仮想パスを識別する。上述の実施例では、ユーザ識別部３２は、ＶＸＬＡＮパケットのOuterヘッダに設定されている送信元ＩＰアドレス、送信先ＩＰアドレス、送信先ポート番号、ネットワーク識別子の組合せに基づいて仮想パスを識別する。ここで、仮想パスは、ユーザ毎に設定される。よって、ユーザ識別部３２は、パケット受信部３１が受信したパケットに係わるユーザを識別することができる。
【０１０４】
フラグメント判定部３３は、パケット受信部３１が受信したパケットに含まれる長さ情報により表される長さが、そのパケットのカプセル化を解除することで得られるフラグメントに含まれるデータの長さと一致するか否かに基づいて、そのデータに結合すべきフラグメントが存在するか否かを判定する。上述の実施例では、長さ情報は、ＩＰヘッダに設定されているデータグラム長により実現される。なお、第２の実施例では、フラグメント中フラグを利用して、結合すべきフラグメントが存在するか否か（すなわち、フラグメント処理が必要か否か）が表される。また、第３の実施形態では、受信パケットがＴＣＰパケットのヘッダを含むか否か、及び、受信パケットから抽出されるデータの長さとＩＰヘッダに設定されているデータグラム長と一致するか否かに基づいて、結合すべきフラグメントが存在するか否か（すなわち、フラグメント処理が必要か否か）が判定される。
【０１０５】
パケット組立て部３４は、後続パケットのカプセル化を解除することで得られる後続フラグメントを、先に得られているデータに結合して結合データを生成する処理を、結合データの長さが長さ情報により表される長さと一致するまで繰り返し実行する。そして、パケット組立て部３４は、結合データの長さが長さ情報により表される長さと一致すると、その結合データを、カプセル化が解除されたパケットとして取得する。なお、第３の実施形態では、パケット組立て部３４は、Outerヘッダ中のＩＰヘッダに設定されているＩＰ−ＩＤが連続しているパケットから抽出されるデータを結合する。
【０１０６】
解析部１３は、パケット組立て部３４により取得されたパケットに基づいて、ネットワークの品質および状態を解析する。例えば、解析部１３は、ユーザ毎に、パケットロス、ＲＴＴ、アプリケーションの遅延、転送バイト数、転送パケット数などをモニタする。
【符号の説明】
【０１０７】
１Ｘ、１Ｙ  ゲートウェイ装置
２Ｘ、２Ｙ  サーバ
１１  モニタ装置
１２  パケット取得装置
１３  解析部
２１  インタフェース
２２  プロセッサ
２３  メモリ
３１  パケット受信部
３２  ユーザ識別部
３３  フラグメント判定部
３４  パケット組立て部
【図１】
2019193201.tif 000003
【図２】
2019193201.tif 000004
【図３】
2019193201.tif 000005
【図４】
2019193201.tif 000006
【図５】
2019193201.tif 000007
【図６】
2019193201.tif 000008
【図７】
2019193201.tif 000009
【図８】
2019193201.tif 000010
【図９】
2019193201.tif 000011
【図１０】
2019193201.tif 000012
【図１１】
2019193201.tif 000013
【図１２】
2019193201.tif 000014
【図１３】
2019193201.tif 000015
【図１４】
2019193201.tif 000016
【図１５】
2019193201.tif 000017
【図１６】
2019193201.tif 000018
【図１７】
2019193201.tif 000019
【図１８】
2019193201.tif 000020