(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-07
(45)【発行日】2023-11-15
(54)【発明の名称】パケット処理装置およびパケット処理方法
(51)【国際特許分類】
H04L 49/25 20220101AFI20231108BHJP
H04L 41/0895 20220101ALI20231108BHJP
H04L 43/02 20220101ALI20231108BHJP
H04L 49/10 20220101ALI20231108BHJP
【FI】
H04L49/25
H04L41/0895
H04L43/02
H04L49/10
(21)【出願番号】P 2019200402
(22)【出願日】2019-11-05
【審査請求日】2022-07-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(72)【発明者】
【氏名】岩倉 廣和
(72)【発明者】
【氏名】上野 仁
(72)【発明者】
【氏名】飯塚 史之
(72)【発明者】
【氏名】岡田 純代
【審査官】鈴木 香苗
(56)【参考文献】
【文献】米国特許出願公開第2014/0161123(US,A1)
【文献】米国特許出願公開第2015/0261556(US,A1)
【文献】特開2019-193201(JP,A)
【文献】米国特許出願公開第2018/0234360(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 49/25
H04L 41/0895
H04L 43/02
H04L 49/10
(57)【特許請求の範囲】
【請求項1】
仮想情報処理システム内で送信される通信パケットを前記仮想情報処理システムから受信し
て処理するパケット処理装置により実行されるパケット処理方法であって、
前記パケット処理装置は、
前記仮想情報処理システムから前記通信パケットを受信し、
前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであるか否かを判定し、
前記通信パケットが前記仮想情報処理システム内で送信された再送パケットでないときは、送信データの分割処理を実行するセグメントオフロード機能がオン状態に設定された第1の出力部を介して前記通信パケットを出力し、
前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであるときは、前記セグメントオフロード機能がオフ状態に設定された第2の出力部を介して前記通信パケットを出力する
ことを特徴とするパケット処理方法。
【請求項2】
前記通信パケットのシーケンス番号が、前記通信パケットと同じセッション内で前記通信パケットの直前に送信されたパケットのシーケンス番号と同じときは、
前記パケット処理装置は、前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであると判定する
ことを特徴とする請求項1に記載のパケット処理方法。
【請求項3】
前記仮想情報処理システムにおいて、第1のパケットの送信時刻から所定のタイムアウト時間が経過するまでの期間に対応するACKパケットが得られないときに、前記第1のパケットに対応する、予め決められた最大送信サイズ以下の複数の再送パケットが送信されるケースにおいて、
前記通信パケットの
送信時刻と、前記通信パケットと同じセッション内で前記通信パケットの直前に送信されたパケットの
送信時刻との差分が、前記タイムアウト時間以上であり、且つ、前記通信パケットのサイズが前記最大送信サイズ以下であるときは、
前記パケット処理装置は、前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであると判定する
ことを特徴とする請求項1に記載のパケット処理方法。
【請求項4】
前記仮想情報処理システムにおいて、前記複数の再送パケットが所定の連続送信間隔以下の間隔で順番に送信されるケースにおいて、
前記通信パケットの
送信時刻と、前記通信パケットと同じセッション内で前記通信パケットの直前に送信されたパケットの
送信時刻との差分が、前記連続送信間隔以下であり、且つ、前記通信パケットのサイズが前記最大送信サイズ以下であるときは、
前記パケット処理装置は、前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであると判定する
ことを特徴とする請求項3に記載のパケット処理方法。
【請求項5】
仮想情報処理システム内で送信される通信パケットを前記仮想情報処理システムから受信するパケット受信部と、
前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであるか否かを判定する再送判定部と、
送信データの分割処理を実行するセグメントオフロード機能がオン状態に設定された第1の出力部と、
前記セグメントオフロード機能がオフ状態に設定された第2の出力部と、
前記通信パケットが前記仮想情報処理システム内で送信された再送パケットでないときは、前記第1の出力部に前記通信パケットを出力させ、前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであるときは、前記第2の出力部に前記通信パケットを出力させる転送制御部と、
を備えるパケット処理装置。
【請求項6】
仮想情報処理システム内で送信される通信パケットを前記仮想情報処理システムから受信し、
前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであるか否かを判定し、
前記通信パケットが前記仮想情報処理システム内で送信された再送パケットでないときは、送信データの分割処理を実行するセグメントオフロード機能がオン状態に設定された第1の出力部を介して前記通信パケットを出力し、
前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであるときは、前記セグメントオフロード機能がオフ状態に設定された第2の出力部を介して前記通信パケットを出力する
処理をプロセッサに実行させるパケット処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信パケットを処理する装置および方法に係わる。
【背景技術】
【0002】
柔軟な情報処理サービスを提供するために、仮想環境下で動作する情報処理システムが実用化されている。仮想環境下で動作する情報処理システムは、例えば、複数の仮想サーバおよび仮想サーバ間に設けられる仮想スイッチを含む。そして、複数の仮想サーバは、仮想スイッチを介して通信パケットを送信および受信することで、要求された情報処理を実現する。なお、以下の記載では、仮想環境下で動作する情報処理システムを「仮想情報処理システム」と呼ぶことがある。
【0003】
仮想情報処理システムを監視する場合、仮想スイッチのミラーリング機能を利用して、仮想サーバ間で送信される通信パケットがコピーされる。コピーされた通信パケットは、中継装置によりシステム分析装置に転送される。システム分析装置は、受信した通信パケットに基づいて、仮想情報処理システムを監視する。例えば、システム分析装置は、仮想情報処理システムのパケット数、パケット損失率、応答時間、スループットなどを監視する。
【0004】
なお、関連技術として、TCP送信処理の効率化を実現する方法が提案されている(例えば、特許文献1)。また、データストリームを構成する映像データを授受して非信頼性伝送路上で動作する場合の映像品質を向上させる方法が提案されている(例えば、特許文献2)。
【先行技術文献】
【特許文献】
【0005】
【文献】WO2010/073671
【文献】特開2004-007823号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
仮想環境の外に設けられるシステム分析装置を用いて仮想情報処理システムを監視するときは、仮想サーバ間で送信される通信パケットの挙動を、システム分析装置上に再現する必要がある。ところが、仮想環境においては、演算効率を高くするために、仮想環境に特有の処理が行われることがある。このため、仮想サーバ間で送信される通信パケットの挙動をシステム分析装置上に再現することが難しいケースがある。そして、仮想サーバ間で送信される通信パケットの挙動をシステム分析装置上に正確に再現できなければ、仮想情報処理システムの監視の精度が低下してしまう。
【0007】
本発明の1つの側面に係わる目的は、仮想情報処理システムの監視精度を向上させることである。
【課題を解決するための手段】
【0008】
本発明の1つの態様のパケット処理方法は、仮想情報処理システム内で送信される通信パケットを前記仮想情報処理システムから受信し、前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであるか否かを判定し、前記通信パケットが前記仮想情報処理システム内で送信された再送パケットでないときは、送信データの分割処理を実行するセグメントオフロード機能がオン状態に設定された第1の出力部を介して前記通信パケットを出力し、前記通信パケットが前記仮想情報処理システム内で送信された再送パケットであるときは、前記セグメントオフロード機能がオフ状態に設定された第2の出力部を介して前記通信パケットを出力する。
【発明の効果】
【0009】
上述の態様によれば、仮想情報処理システムの監視精度が向上する。
【図面の簡単な説明】
【0010】
【
図1】仮想情報処理システムを監視する監視システムの一例を示す図である。
【
図2】セグメントオフロード機能に係わる問題を説明する図である。
【
図3】セグメントオフロード機能に係わる他の問題を説明する図である。
【
図4】本発明の実施形態に係わる監視システムの一例を示す図である。
【
図5】仮想サーバ間で通常パケットが送信されたときの中継装置の動作の一例を示す図である。
【
図6】仮想サーバ間で再送パケットが送信されたときの中継装置の動作の一例を示す図である。
【
図7】中継装置のハードウェア構成の一例を示す図である。
【
図8】パケットロスに起因する再送手順の例を示す図である。
【
図10】パケットバッファ、セッション管理テーブル、およびパラメータテーブルの実施例を示す図である。
【
図11】パケット受信部の処理の一例を示すフローチャートである。
【
図12】再送判定部の処理の一例を示すフローチャートである。
【
図13】転送制御部の処理の一例を示すフローチャートである。
【
図14】転送部の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
図1は、仮想情報処理システムを監視する監視システムの一例を示す。この例では、監視システムは、仮想情報処理システム1の動作状態を監視するために、中継装置2およびシステム分析装置3を備える。仮想情報処理システム1は、仮想環境下で動作する情報処理システムである。中継装置2は、仮想情報処理システム1内で送信される通信パケットを仮想情報処理システム1から受信してシステム分析装置3に転送する。システム分析装置3は、中継装置2から転送されてくる通信パケットを利用して仮想情報処理システム1の動作を監視する。
【0012】
仮想情報処理システム1は、
図1に示すように、複数の仮想サーバ11(11a、11b)、仮想スイッチ12、収集サーバ13、NIC(network interface card)14を備える。なお、仮想情報処理システム1は、
図1に示していない他の機能を備えていてもよい。また、仮想情報処理システム1は、3以上の仮想サーバ11を備えてもよい。
【0013】
仮想サーバ11は、仮想マシンにより実現される。そして、仮想サーバ11は、演算結果を他の仮想サーバ11に送信できる。また、仮想サーバ11は、他の仮想サーバ11の演算結果を受信できる。演算結果(及び、制御情報)は、例えば、TCPパケットに格納されて送信される。
【0014】
仮想スイッチ12は、仮想サーバ11間で通信パケットを転送する。また、仮想スイッチ12は、ミラーリング機能を利用して、仮想サーバ11間で送信される通信パケットをコピーして収集サーバ13に導くことができる。よって、収集サーバ13は、仮想サーバ11間で送信される通信パケットを収集できる。なお、収集サーバ13も仮想マシンにより実現される。
【0015】
収集サーバ13は、収集した通信パケットを、NIC14を介して中継装置2に送信する。そうすると、中継装置2は、NIC21を介して、通信パケットを受信する。すなわち、中継装置2は、仮想サーバ11間で送信される通信パケットを受信する。なお、仮想情報処理システム1と中継装置2との間は、TCPプロトコルで通信が行われる。すなわち、仮想サーバ11間で送信される通信パケットは、TCPパケットに格納されて仮想情報処理システム1から中継装置2に送信される。
【0016】
なお、以下の記載では、仮想情報処理システム1から中継装置2に送信されるパケットを「カプセルパケット」と呼ぶことがある。すなわち、仮想サーバ11間で送信される通信パケットは、カプセルパケットに格納されて仮想情報処理システム1から中継装置2に送信される。また、「通信パケット」は、仮想サーバ11間で送信されるパケット、または、仮想サーバ11間で送信されるパケットをコピーすることで生成されるパケットを表すものとする。
【0017】
中継装置2は、
図1に示すように、NIC21、パケット受信部22、パケットバッファ23、転送部24、NIC25を備える。なお、中継装置2は、
図1に示していない他の機能を備えていてもよい。
【0018】
パケット受信部22は、仮想情報処理システム1から送信されるカプセルパケットを受信する。そして、パケット受信部22は、カプセルパケットから通信パケットを抽出してパケットバッファ23に書き込む。すなわち、仮想サーバ11間で送信される通信パケットがパケットバッファ23に書き込まれる。転送部24は、パケットバッファ23から通信パケットを読み出す。そして、転送部24は、この通信パケットを、NIC25を介してシステム分析装置2に送信する。
【0019】
システム分析装置3は、NIC31を介して、通信パケットを受信する。そして、分析部32は、中継装置2から受信する通信パケットを分析する。ここで、システム分析装置3が受信する通信パケットは、仮想サーバ11間で送信される通信パケットである。よって、分析部32は、この通信パケットを分析することにより、仮想情報処理システム1を監視できる。このとき、分析部32は、例えば、仮想情報処理システム1のパケット数、パケット損失率、応答時間、スループットなどを監視する。
【0020】
図2は、セグメントオフロード機能に係わる問題を説明する図である。なお、仮想情報処理システム1、中継装置2、およびシステム分析装置3の構成は、
図1および
図2において実質的に同じである。
【0021】
仮想情報処理システム1においては、通信処理のオーバヘッドを削減するために、仮想NIC(
図2では、V_NIC)のセグメントオフロード機能がオン状態に設定されることが多い。セグメントオフロード機能は、CPUの代わりにTCP通信における送信データの分割処理を実行する。
図2に示す仮想情報処理システム1においては、セグメントオフロード機能がオン状態に設定されるときは、仮想サーバ11間で、MTUより大きい通信パケットが送信され得る。なお、MTU(maximum transmission unit)値は、たとえば、1500Bに設定される。そして、MTUより大きい通信パケット(
図2では、64KBのパケット)が、仮想サーバ11間で送信されるものとする。
【0022】
仮想情報処理システム1と中継装置2との間は、TCPプロトコルで通信が行われる。よって、仮想サーバ11間で送信される通信パケットは、1または複数のカプセルパケットに格納されて仮想情報処理システム1から中継装置2に送信される。このとき、仮想サーバ11間で送信される通信パケットは、必要に応じて、複数に分割される。
【0023】
中継装置2は、仮想情報処理システム1から受信する1または複数のカプセルパケットから、仮想サーバ11間で送信される通信パケットを抽出する。そして、抽出された通信パケットは、
図2に示すように、いったんパケットバッファ23に保存される。その後、転送部24は、パケットバッファ23から通信パケットを読み出してNIC25に渡す。
【0024】
中継装置2とシステム分析装置3との間は、物理的にイーサネット(登録商標)で接続され、MTU値は1500Bであるものとする。ここで、仮想情報処理システム1内の通信パケットの挙動をシステム分析装置3で精度よく監視するためには、中継装置2は、パケットバッファ23から読み出した通信パケットをそのままシステム分析装置3にストリーム出力することが好ましい。このため、中継装置2とシステム分析装置3との間に実装されるNIC(即ち、NIC25、31)のセグメントオフロード機能は、オフ状態に設定される。
【0025】
ところが、NIC25、31のMTU値は、1500Bに設定されている。このため、仮想サーバ11間で送信される通信パケットのサイズがMTU値より大きいときは、その通信パケットは、NIC25、31により廃棄されてしまう。すなわち、仮想情報処理システム1内の仮想NICのセグメントオフロード機能がオン状態に設定され、中継装置2とシステム分析装置3との間に実装されるNICのセグメントオフロード機能がオフ状態に設定されると、システム分析装置3は、仮想情報処理システム1内の通信パケットの挙動を正しく監視できない。
【0026】
図2を参照して説明した問題は、中継装置2とシステム分析装置3との間に実装されるNICのセグメントオフロード機能をオン状態に設定することで解決され得る。即ち、NIC25、31のセグメントオフロード機能がオン状態に設定されると、MTUより大きな通信パケットは、NIC25によりMTU以下の通信パケットに分割されてシステム分析装置3に送信される。そして、NIC31は、NIC25により分割された通信パケットを結合することで元の通信パケットを再生する。したがって、仮想サーバ11間でMTUより大きい通信パケットが送信されるケースであっても、その通信パケットが中継装置2とシステム分析装置3との間で廃棄されることはない。
【0027】
しかしながら、中継装置2とシステム分析装置3との間に実装されるNICのセグメントオフロード機能をオン状態に設定すると、別の問題が発生することがある。例えば、仮想サーバ11間でパケットロスが発生した場合、仮想サーバ11間で再送が行われる。このとき、MTUより大きい通信パケットのロスが発生した後の再送手順において、再度、パケットロスが発生すると、リカバリするための処理コストが大きくなる。このため、MTUより大きい通信パケットのロスが発生した場合には、その通信パケットは、MTU以下のパケットに分割されて再送されることがある。
図3に示す例では、64KBの通信パケットのロスが発生した後、MTU以下の複数の再送パケットP1~Pnが送信されている。
【0028】
このような再送が行われるケースでは、
図3に示すように、複数の再送パケットP1~Pnが中継装置2からシステム分析装置3に転送される。ところが、NIC25、31のセグメントオフロード機能がオン状態に設定されている。よって、NIC31は、それら複数の再送パケットP1~Pnを結合して1つの通信パケットを再生する。すなわち、実際には仮想サーバ11間で複数の再送パケットP1~Pnが送信されたにもかかわらず、分析部32は、1個の通信パケットが送信されたと認識してしまう。この結果、監視精度が低下することになる。
【0029】
このように、中継装置2とシステム分析装置3との間に実装されるNICのセグメントオフロード機能をオン状態に設定すれば、仮想サーバ11間で送信される通信パケットのサイズがMTUより大きくてもその通信パケットを正しく認識できるが、仮想サーバ11間で通信パケットの再送が行われたときは、監視精度が低下することがある。そこで、本発明の実施形態に係わるパケット処理装置は、仮想情報処理システムから受信する通信パケットが、仮想サーバ11間で送信された再送パケットであるか否かを判定する機能を備える。そして、パケット処理装置は、この判定結果に応じて異なるパケット処理を実行する。
【0030】
<実施形態>
図4は、本発明の実施形態に係わる監視システムの一例を示す。この例では、監視システムは、仮想情報処理システム1の動作状態を監視するために、中継装置2Aおよびシステム分析装置3Aを備える。仮想情報処理システム1は、仮想環境下で動作する情報処理システムである。中継装置2Aは、仮想情報処理システム1内で送信される通信パケットを仮想情報処理システム1から受信してシステム分析装置3Aに転送する。システム分析装置3Aは、中継装置2Aから転送されてくる通信パケットを利用して仮想情報処理システム1の動作状態を監視する。
【0031】
仮想情報処理システム1は、
図1および
図4において実質的に同じである。すなわち、仮想サーバ11(11a、11b)は、仮想NICを介して通信パケットを送信および受信する。仮想NICのセグメントオフロード機能は、オン状態に設定されている。すなわち、仮想サーバ11間でMTUより大きい通信パケットが送信され得る。また、仮想スイッチ12および収集サーバ13は、仮想サーバ11間で送信される通信パケットをコピーして中継装置2Aに送信する。なお、仮想サーバ11間で送信される通信パケットは、カプセルパケットに格納されて、仮想情報処理システム1から中継装置2Aに送信される。
【0032】
中継装置2Aは、NIC21、パケット受信部22、パケットバッファ23、再送判定部26、転送制御部27、転送部24a、24b、NIC25a、25bを備える。NIC21、パケット受信部22、パケットバッファ23は、
図1および
図4において実質的に同じである。即ち、パケット受信部22は、仮想情報処理システム1から受信するカプセルパケットから、仮想サーバ11間で送信される通信パケットを抽出する。そして、パケット受信部22は、仮想サーバ11間で送信される通信パケットをパケットバッファ23に保存する。なお、中継装置2は、
図4に示していない他の機能を備えていてもよい。
【0033】
再送判定部26は、パケットバッファ23に保存された通信パケットが、仮想情報処理システム1内で送信された再送パケットであるか否かを判定する。すなわち、再送判定部26は、パケットバッファ23に保存された通信パケットが、通常パケットであるか再送パケットであるかを判定する。再送パケットは、仮想情報処理システム1内で発生したパケットロスに起因して送信されるパケットである。通常パケットは、仮想情報処理システム1内で送信される、再送パケット以外のパケットである。
【0034】
なお、この実施例では、再送パケットのサイズは、MTU値以下であるものとする。よって、MTUより大きい通常パケットのロスが発生した場合、その通常パケットに対して複数の再送パケットが送信される。
【0035】
転送部24a、24bは、転送制御部27から与えられる指示に応じて、パケットバッファ23から通信パケットを読み出す。NIC25a、25bは、それぞれ、転送部24a、24bにより読み出された通信パケットを出力する。ここで、NIC25aのセグメントオフロード機能はオン状態に設定されており、NIC25bのセグメントオフロード機能はオフ状態に設定されている。すなわち、NIC25aは、転送部24aにより読み出された通信パケットのサイズがMTU値より大きいときは、その通信パケットを複数のパケットに分割して出力する。一方、NIC25bは、転送部24bにより読み出された通信パケットのサイズにかかわらず、その通信パケットをそのまま出力する。なお、転送部24aおよびNIC25aは、セグメントオフロード機能がオン状態に設定された第1の出力部の一例である。また、転送部24bおよびNIC25bは、セグメントオフロード機能がオフ状態に設定された第2の出力部の一例である。
【0036】
転送制御部27は、再送判定部26による判定結果に応じて転送部24a、24bに指示を与える。具体的には、パケットバッファ23に保存された通信パケットが再送パケットでないとき(即ち、パケットバッファ23に保存された通信パケットが通常パケットであるとき)は、転送制御部27は、その通信パケットを出力することを表す指示を転送部24aに与える。この場合、転送部24aはその通信パケットを読み出し、NIC25aはその通信パケットを出力する。一方、パケットバッファ23に保存された通信パケットが再送パケットであるきは、転送制御部27は、その通信パケットを出力することを表す指示を転送部24bに与える。この場合、転送部24bはその通信パケットを読み出し、NIC25bはその通信パケットを出力する。
【0037】
システム分析部3Aは、NIC31a、31b、および分析部32を備える。ここで、NIC31aのセグメントオフロード機能はオン状態に設定されており、NIC31bのセグメントオフロード機能はオフ状態に設定されている。
【0038】
NIC31aは、NIC25aから出力される通信パケットを受信する。すなわち、NIC31aは、通常パケットを受信する。ここで、NIC31aのセグメントオフロード機能はオン状態に設定されている。よって、NIC25aにおいてセグメントオフロード機能によりパケットが分割されたときは、NIC31aは、複数のパケットから元の通信パケットを再生する。
【0039】
NIC31bは、NIC25bから出力される通信パケットを受信する。すなわち、NIC31bは、再送パケットを受信する。ここで、NIC31bのセグメントオフロード機能はオフ状態に設定されている。したがって、NIC25aは、同じTCPセッション内の複数の再送パケットを受信したときに、それら複数の再送パケットを結合することはない。すなわち、複数の再送パケットは、結合されることなく、そのまま分析部32に導かれる。
【0040】
分析部32は、中継装置2Aから受信する通信パケットを分析する。ここで、システム分析装置3Aが受信する通信パケットは、仮想サーバ11間で送信される通信パケットである。よって、分析部32は、この通信パケットを分析することにより、仮想情報処理システム1を監視できる。このとき、分析部32は、例えば、仮想情報処理システム1のパケット数、パケット損失率、応答時間、スループットなどを監視する。
【0041】
図5は、仮想サーバ11間で通常パケットが送信されたときの中継装置2Aの動作の一例を示す。この場合、仮想サーバ11間で送信される通常パケットは、パケットバッファ23に保存される。再送判定部26は、パケットバッファ23に保存された通信パケットが通常パケットであると判定すると、転送部24aに対して送信指示を与える。そうすると、転送部24aは、送信指示に従ってパケットバッファ23から通常パケットを読み出す。そして、NIC25aは、この通常パケットをシステム分析装置3Aに送信する。ここで、NIC25aのセグメントオフロード機能がオン状態に設定されている。よって、通常パケットのサイズがMTU値より大きいときは、NIC25aは、この通常パケットをMTU以下のパケットに分割してシステム分析装置3Aに送信する。
【0042】
このように、仮想サーバ11間で通常パケットが送信されたときは、その通常パケットは、セグメントオフロード機能がオン状態に設定されているNICを介して中継装置2Aからシステム分析装置3Aに転送される。したがって、通常パケットのサイズがMTU値より大きい場合であっても、中継装置2Aからシステム分析装置3Aへの転送において、その通常パケットが廃棄されることはない。
【0043】
図6は、仮想サーバ11間で再送パケットが送信されたときの中継装置2Aの動作の一例を示す。この実施例では、仮想情報処理システム1において、通常パケットのロスに起因して、複数の再送パケットP1~Pnが送信されるものとする。また、各再送パケットP1~Pnのサイズは、MTU値以下である。
【0044】
この場合、仮想サーバ11間で送信される再送パケットP1~Pnは、パケットバッファ23に保存される。再送判定部26は、パケットバッファ23に保存された通信パケットが再送パケットであると判定すると、転送部24bに対して送信指示を与える。そうすると、転送部24bは、送信指示に従ってパケットバッファ23から再送パケットP1~Pnを順番に読み出す。そして、NIC25aは、再送パケットP1~Pnをシステム分析装置3Aに送信する。
【0045】
このように、仮想サーバ11間で再送パケットP1~Pnが送信されたときは、再送パケットP1~Pnは、セグメントオフロード機能がオフ状態に設定されているNICを介して中継装置2Aからシステム分析装置3Aに転送される。したがって、システム分析装置3Aに実装されるNICにおいて再送パケットP1~Pnが結合されることはなく、仮想情報処理システム1内での通信パケットの挙動が正しく再現される。
【0046】
図7は、中継装置2Aのハードウェア構成の一例を示す。中継装置2Aは、ハードディスク41、メモリ42、CPU43、およびNIC25a、25bを備える。なお、中継装置2Aは、
図7に示していない回路またはデバイスを備えてもよい。
【0047】
ハードディスク41には、OS(operating system)プログラムおよび中継プログラムが保存されている。中継プログラムは、パケット受信プログラム、再送判定プログラム、転送制御プログラム、および転送プログラムを含む。パケット受信プログラム、再送判定プログラム、転送制御プログラム、および転送プログラムは、それぞれ、パケット受信部22、再送判定部26、転送制御部27、および転送部24a、24bの処理を記述する。
【0048】
メモリ42は、例えば、半導体メモリであり、作業領域42aおよびパケットバッファ42bを実現する。作業領域42aは、CPU43の作業領域として使用される。したがって、OSプログラムおよび中継プログラムは、作業領域42aにロードされて実行される。パケットバッファ42bは、
図4~
図6に示すパケットバッファ23に相当する。
【0049】
CPU43は、中継プログラムを実行することにより、
図5~
図6に示すパケット処理を実行する。このとき、CPU43がパケット受信プログラム、再送判定プログラム、転送制御プログラム、および転送プログラムを実行することにより、パケット受信部22、再送判定部26、転送制御部27、および転送部24a、24bの機能が提供される。すなわち、中継装置2Aは、仮想情報処理システム1から受信するパケットをシステム分析装置3Aに転送するパケット処理装置として動作する。なお、CPU43は、複数のプロセッサを備えるマルチプロセッサシステムであってもよい。
【0050】
図8は、パケットロスに起因する再送手順の例を示す。この実施例では、時刻T1において仮想サーバ11aから仮想サーバ11bにSYNパケットが送信される。SYNパケットのヘッダは、宛先IPアドレス、宛先ポート番号、送信元IPアドレス、宛先ポート番号、TCPシーケンス番号を含む。そして、仮想サーバ11bから仮想サーバ11aに不図示のACNパケットが返送される。この手順により、仮想サーバ11aから仮想サーバ11bに通信パケットを送信するためのセッション(または、コネクション)が確立される。
【0051】
この後、時刻T2において仮想サーバ11aから仮想サーバ11bに通信パケット(すなわち、通常パケット)が送信される。通常パケットのヘッダに設定される宛先IPアドレス、宛先ポート番号、送信元IPアドレス、宛先ポート番号は、SYNパケットと同じである。ただし、通常パケットのTCPシーケンス番号は、SYNパケットとは異なる。また、この通常パケットのサイズは、MTU値より大きいものとする。そして、仮想サーバ11bは、通信パケットを受信したときは、不図示のACKパケットを返送する。すなわち、仮想サーバ11bは、仮想サーバ11aから通信パケットを受信したときは、仮想サーバ11aにACKパケットを送信する。
【0052】
ただし、
図8に示す例では、パケットロスが発生し、仮想サーバ11bは、仮想サーバ11aから送信される通常パケットを受信しない。この場合、仮想サーバ11bは、仮想サーバ11aにACKパケットを送信しない。すなわち、仮想サーバ11aは、時刻T2に送信した通常パケットに対応するACKパケットを受信できない。そして、時刻T2から所定のタイムアウト時間が経過すると、仮想サーバ11aは、再送手順を開始する。
【0053】
再送手順において、仮想サーバ11aは、先に送信した通常パケットの代わりに、再送パケットP1~Pnを送信する。各再送パケットP1~Pnのサイズは、MTU値以下である。各再送パケットP1~Pnは、所定の時間間隔ΔTまたはΔTより短い時間間隔で1つずつ順番に送信される。各再送パケットP1~Pnのヘッダに格納される宛先IPアドレス、宛先ポート番号、送信元IPアドレス、宛先ポート番号は、先に送信された通常パケットと同じである。また、再送パケットP1~Pnのうちで最初に送信されるパケット(即ち、再送パケットP1)のTCPシーケンス番号は、先に送信された通常パケットのTCPシーケンス番号と同じであるものとする。さらに、再送パケットP2~PnのTCPシーケンス番号は、再送パケットP1のTCPシーケンス番号から一意に計算されるものとする。
【0054】
上述の送信/再送手順において、仮想スイッチ12は、仮想サーバ11aから受信するパケットをコピーする。そして、仮想情報処理システム1(具体的には、収集サーバ13またはNIC14)は、このパケットを中継装置2Aに送信する。このとき、収集サーバ13またはNIC14は、中継装置2Aに送信する通信パケットに送信時刻情報を付与する。ただし、仮想サーバ11aが通信パケットを送信するときにその通信パケットに送信時刻情報を付与するときは、収集サーバ13またはNIC14は、中継装置2Aに送信する通信パケットに送信時刻情報を付与する必要はない。いずれにしても、中継装置2Aが受信する通信パケットには、その通信パケットの送信時刻を表す送信時刻情報が付与されている。
【0055】
図9は、仮想情報処理システム1から中継装置2Aに送信されるカプセルパケットの一例を示す。この実施例では、仮想サーバ11間で送信される通信パケットは、
図9に示すように、カプセルパケットのペイロードに格納される。このとき、このカプセルパケットのペイロードには、送信時刻情報も格納される。送信時刻情報は、仮想サーバ11間で送信された通信パケットがカプセルパケットに格納された時刻を表す。ただし、仮想サーバ11間で通信パケットが送信された直後に、その通信パケットがカプセルパケットに格納される。したがって、送信時刻情報は、実質的に、仮想サーバ11間で通信パケットが送信された時刻を表す。
【0056】
なお、仮想サーバ11間で送信された通信パケットのサイズによっては、その通信パケットは複数のパケット部分に分割され、複数のカプセルパケットを利用して中継装置2Aに送信される。この場合、中継装置2Aは、複数のパケット部分を結合することにより、元の通信パケットを再生できる。
【0057】
中継装置2Aは、仮想情報処理システム1から受信する1または複数のカプセルパケットから、仮想サーバ11間で送信された通信パケットを抽出する。抽出された通信パケットは、パケットバッファ23に保存される。また、中継装置2Aは、TCPセッション毎に通信パケットを管理する。TCPセッションは、この実施例では、宛先IPアドレス、宛先ポート番号、送信元IPアドレス、宛先ポート番号の組合せにより識別される。
【0058】
図10(a)は、パケットバッファ23の一例を示す。パケットバッファ23には、仮想サーバ11間で送信された通信パケットが保存される。なお、通信パケットに関連づけて、仮想情報処理システム1において通信パケットに付与される送信時刻情報もパケットバッファ23に保存される。
【0059】
図10(b)は、TCPセッション毎に通信パケットを管理するセッション管理テーブルの一例を示す。セッション管理テーブルは、TCPセッション毎に、通信パケットのシーケンス番号および送信時刻情報を管理する。なお、セッション管理テーブルには、TCPセッション毎に、最新の通信パケットのシーケンス番号および送信時刻情報が記録される。
【0060】
図10(c)は、パラメータテーブルの一例を示す。パラメータテーブルには、MTU値、タイムアウト時間、連続送信間隔が記録される。MTU値は、最大送信サイズの一例であり、予め決められている。タイムアウト時間は、仮想情報処理システム1内で発生するパケットロスを検出するために使用される。例えば、仮想サーバ11は、相手装置に通信パケットを送信したときからタイムアウト時間内に対応するACKパケットを受信できなければ、パケットロスが発生したと判定する。この場合、仮想サーバ11は、再送手順を実行する。連続送信間隔は、再送手順において複数の再送パケットを順番に送信する間隔を表す。
図8に示す例では、連続送信間隔は、ΔTで表記されている。
【0061】
図11は、パケット受信部22の処理の一例を示すフローチャートである。なお、パケット受信部22は、S1において、仮想情報処理システム1との間のTCP通信のためのソケットを生成する。この後、仮想情報処理システム1からパケット受信部22にTCPプロトコルパケットが到着するごとに、S2~S5の処理が実行される。
【0062】
S2において、パケット受信部22は、仮想情報処理システム1からTCPプロトコルパケットを受信する。この実施例では、パケット受信部22は、仮想情報処理システム1からカプセルパケットを受信する。カプセルパケットは、
図9に示すように、仮想サーバ11間で送信される通信パケットおよび送信時刻情報を含む。
【0063】
S3において、パケット受信部22は、受信したカプセルパケットから通信パケットを抽出する。S4において、パケット受信部22は、受信したカプセルパケットから送信時刻情報を抽出する。S5において、パケット受信部22は、
図10(a)に示すように、受信したカプセルパケットから抽出した通信パケットおよび送信時刻情報をパケットバッファ23に保存する。
【0064】
図12は、再送判定部26の処理の一例を示すフローチャートである。このフローチャートの処理は、パケット受信部22によりパケットバッファ23に通信パケットが保存されたときに実行される。
【0065】
S11において、再送判定部26は、パケットバッファ23に保存されている通信パケットを参照する。S12において、再送判定部26は、通信パケットのヘッダに設定されている宛先IPアドレス、宛先ポート番号、送信元IPアドレス、宛先ポート番号に基づいて、TCPセッション(又は、TCPコネクション)を識別する。S13において、再送判定部26は、通信パケットのヘッダに設定されているTCPシーケンス番号を抽出する。この後、再送判定部26は、S12で識別したTCPセッションに対してS14~S21の処理を実行する。以下の記載では、
図12に示すフローチャートにおいて処理される通信パケットを「対象通信パケット」と呼ぶことがある。
【0066】
S14において、再送判定部26は、S13で抽出したTCPシーケンス番号に基づいて、対象通信パケットが再送パケットであるか否かを判定する。例えば、仮想情報処理システム1においてパケットロスに起因して再送手順が実行され、1または複数の再送パケットが送信されるときに、最初の再送パケットのTCPシーケンス番号は、元の通信パケットのTCPシーケンス番号と同じであるものとする。この場合、S13で抽出したTCPシーケンス番号が、先に受信した通信パケットのTCPシーケンス番号と同じであるときは、再送判定部26は、対象通信パケットが再送パケットであると判定する。なお、対象通信パケットの直前に受信した通信パケットのTCPシーケンス番号は、セッション管理テーブルに記録されている。
【0067】
対象通信パケットが再送パケットであると判定されたときは(S14:Yes)、再送判定部26は、S20において、再送パケット通知を生成する。再送パケット通知は、対象通信パケットが再送パケットであることを表す。一方、対象通信パケットが再送パケットであると判定されなかったときは(S14:No)、再送判定部26の処理はS15に進む。
【0068】
S15において、再送判定部26は、対象通信パケットの送信間隔を算出する。具体的には、対象通信パケットの送信時刻と、対象通信パケットの直前に受信した通信パケットの送信時刻との差分を算出する。なお、対象通信パケットの送信時刻を表す情報は、
図10(a)に示すように、パケットバッファ23に保存されている。また、対象通信パケットの直前に受信した通信パケットの送信時刻を表す情報は、
図10(b)に示すように、セッション管理テーブルに記録されている。
【0069】
S16において、再送判定部26は、セッション管理テーブルを更新する。このとき、セッション管理テーブルは、対象通信パケットのTCPセッションに対応するレコードにおいて、TCPシーケンス番号および送信時刻情報が、対象通信パケットのTCPシーケンス番号および送信時刻情報に書き換えられる。すなわち、セッション管理テーブルは、最新の通信パケットを管理する。
【0070】
S17において、再送判定部26は、対象通信パケットの送信間隔がタイムアウト時間以上であるか否かを判定する。タイムアウト時間は、仮想情報処理システム1においてパケットロスを検知するために使用され、
図10(c)に示すパラメータテーブルに登録されている。そして、対象通信パケットの送信間隔がタイムアウト時間以上であれば、再送判定部26の処理はS19に進む。
【0071】
S19において、再送判定部26は、対象通信パケットのサイズとMTU値とを比較する。MTU値は、
図10(c)に示すパラメータテーブルに登録されている。そして、対象通信パケットのサイズがMTU値以下であるときは、再送判定部26の処理はS20に進む。すなわち、対象通信パケットの送信間隔がタイムアウト時間以上であり、且つ、対象通信パケットのサイズがMTU値以下であるときは、再送判定部26は、S20において、再送パケット通知を生成する。
【0072】
対象通信パケットの送信間隔がタイムアウト時間より短いときは、再送判定部26は、S18において、対象通信パケットの送信間隔と予め決められた連続送信間隔とを比較する。なお、仮想情報処理システム1の再送手順において複数の再送パケットが送信される場合は、再送パケットは、予め指定された連続送信間隔以下の間隔で送信されるものとする。よって、対象通信パケットの送信間隔が連続送信間隔以下であれば、再送判定部26の処理はS19に進む。すなわち、対象通信パケットの送信間隔が連続送信間隔以下であり、且つ、対象通信パケットのサイズがMTU値以下であるときは、再送判定部26は、S20において、再送パケット通知を生成する。
【0073】
一方、対象通信パケットの送信間隔がタイムオーバ時間より短く、且つ、連続送信間隔より長いときは(S17およびS18:No)、再送判定部26の処理はS21に進む。また、対象通信パケットのサイズがMTU値より大きいときも(S19:No)、再送判定部26の処理はS21に進む。S21において、再送判定部26は、通常パケット通知を生成する。通常パケット通知は、対象通信パケットが通常パケットであることを表す。
【0074】
このように、再送判定部26は、対象通信パケットの送信間隔およびパケットサイズに基づいて、対象パケットが通常パケットであるか再送パケットであるかを判定する。そして、再送判定部26は、その判定結果に応じて、通常パケット通知または再送パケット通知を生成する。
【0075】
図13は、転送制御部27の処理の一例を示すフローチャートである。転送制御部27は、再送判定部26の判定結果に応じて、転送部24aまたは転送部24bを起動する。
【0076】
S31~S32において、転送制御部27は、再送判定部26の判定結果を表す通知を受信する。すなわち、転送制御部27は、S20において生成される再送パケット通知またはS21において生成される通常パケット通知を受信する。
【0077】
通常パケット通知を受信したときは、転送制御部27は、S33において、セグメントオフロード機能がオン状態に設定されたNICに対応する転送部に送信指示を与える。この実施例では、NIC25aのセグメントオフロード機能がオン状態に設定されている。よって、通常パケット通知を受信したときは、転送制御部27は、転送部24aに送信指示を与える。なお、送信指示は、対象通信パケット(ここでは、通常パケット)が保存されたアドレスを含む。
【0078】
再送パケット通知を受信したときは、転送制御部27は、S34において、セグメントオフロード機能がオフ状態に設定されたNICに対応する転送部に送信指示を与える。この実施例では、NIC25bのセグメントオフロード機能がオフ状態に設定されている。よって、再送パケット通知を受信したときは、転送制御部27は、転送部24bに送信指示を与える。なお、送信指示は、対象通信パケット(ここでは、再送パケット)が保存されたアドレスを含む。
【0079】
図14は、転送部24の処理の一例を示すフローチャートである。なお、
図14に示すフローチャートの説明において、転送部24は、転送部24aまたは転送部24bの総称である。
【0080】
S41において、転送部24は、転送制御部27から送信指示を受信する。S42において、転送部24は、送信指示に従って、パケットバッファ23から通信パケットを取得する。送信指示は、上述したように、通信パケットが保存されているアドレスを含む。S43において、転送部24は、S42で取得した通信パケットをNICにストリーム出力する。すなわち、パケットバッファ23から読み出された通信パケットは、そのままNICを介して出力される。
【0081】
ここで、
図8に示す2つのケースを参照して
図12~
図14に示すフローチャートを説明する。なお、以下の記載では、時刻T1において仮想サーバ11aから送信されるSYNパケットは、仮想サーバ11bに到着するとともに、中継装置2Aにも到着する。この結果、SYNパケットのTCPシーケンス番号および送信時刻情報は、セッション管理テーブルに記録される。また、時刻T2において仮想サーバ11aから通常パケットが送信される。ここで、この通常パケットのサイズは、MTU値より大きいものとする。
【0082】
図8(a)に示すケースでは、仮想サーバ11aから送信される通常パケットは、仮想スイッチ12と仮想サーバ11bとの間でロスが発生する。この場合、この通常パケットは、仮想サーバ11bには到着しないが、中継装置2Aには到着する。そうすると、中継装置2Aにおいて下記の処理が実行される。
【0083】
通常パケットのTCPシーケンス番号は、直前の受信パケット(すなわち、SYNパケット)のTCPシーケンス番号とは異なる。したがって、S14の判定結果は「No」である。また、通常パケットの送信間隔(すなわち、時刻T1と時刻T2との差分)は、タイムアウト時間より短く、連続送信間隔より長い。よって、S17およびS18の判定結果はそれぞれ「No」である。この結果、S21において通常パケット通知が生成され、S33において転送部24aに送信指示が与えられる。そして、この通常パケットは、NIC25aを介してシステム分析装置3Aに送信される。
【0084】
時刻T2からタイムアウト時間が経過すると、仮想サーバ11aから再送パケットP1が送信される。ここで、再送パケットP1のTCPシーケンス番号は、時刻T2において送信された通常パケットのTCPシーケンス番号と同じであるものとする。この場合、中継装置2Aにおいて下記の処理が実行される。
【0085】
再送パケットP1のTCPシーケンス番号は、直前の受信パケット(すなわち、時刻T2に送信された通常パケット)のTCPシーケンス番号と同じである。よって、S14の判定結果は「Yes」であり、S20において再送パケット通知が生成される。そして、S34において転送部24bに送信指示が与えられるので、再送パケットP1は、NIC25bを介してシステム分析装置3Aに送信される。
【0086】
再送パケットP1が送信されたときから連続送信間隔ΔTが経過すると、仮想サーバ11aから再送パケットP2が送信される。ここで、再送パケットP2のTCPシーケンス番号は、再送パケットP1のTCPシーケンス番号と異なる。この場合、中継装置2Aにおいて下記の処理が実行される。
【0087】
再送パケットP2のTCPシーケンス番号は、直前の受信パケット(すなわち、再送パケットP1)のTCPシーケンス番号とは異なる。よって、S14の判定結果は「No」である。ところが、再送パケットP1の送信間隔(すなわち、再送パケットP1が送信されたときから再送パケットP2が送信されたときまでの時間)は、連続送信間隔ΔTである。よって、S18の判定結果は「Yes」である。さらに、再送パケットP2のサイズがMTU値より小さいので、S19の判定結果も「Yes」である。この結果、S20において再送パケット通知が生成され、S34において転送部24bに送信指示が与えられる。したがって、再送パケットP2も、NIC25bを介してシステム分析装置3Aに送信される。なお、この後に送信される各再送パケットは、再送パケットP2と同様に処理される。
【0088】
図8(b)に示すケースでは、仮想サーバ11aから送信される通常パケットは、仮想サーバ11aと仮想スイッチ12との間でロスが発生する。この場合、この通常パケットは、仮想サーバ11bに到着しないだけでなく、中継装置2Aにも到着しない。したがって、セッション管理テーブルには、時刻T1に送信されたSYNパケットのTCPシーケンス番号および送信時刻情報が登録されている。そして、中継装置2Aにおいて下記の処理が実行される。
【0089】
時刻T2からタイムアウト時間が経過すると、
図8(a)に示すケースと同様に、仮想サーバ11aから再送パケットP1が送信される。再送パケットP1のTCPシーケンス番号は、直前の受信パケット(
図8(b)に示すケースでは、時刻T1に送信されたSYNパケット)のTCPシーケンス番号と異なる。よって、S14の判定結果は「No」であり、S15~S21の処理が実行される。
【0090】
再送パケットP1の送信間隔は、SYNパケットが送信されたときから再送パケットP1が送信されたときまでの時間である。すなわち、再送パケットP1の送信間隔は、「タイムアウト時間+連続送信間隔ΔT」である。よって、S17の判定結果は「Yes」である。また、各再送パケットのサイズはMTU値以下なので、S19の判定結果も「Yes」である。したがって、S20において再送パケット通知が生成され、S34において転送部24bに送信指示が与えられるので、再送パケットP1は、NIC25bを介してシステム分析装置3Aに送信される。この後、再送パケットP2~Pnに対する処理は、
図8(a)および
図8(b)において同じである。
【0091】
このように、中継装置2Aは、仮想情報処理システム1内で送信される通信パケットが通常パケットであるか再送パケットであるかを判定する。具体的には、通信パケットのTCPシーケンス番号、送信間隔、パケットサイズに基づいて、通信パケットが通常パケットであるか再送パケットであるかが判定される。そして、通信パケットが通常パケットであるときは、セグメントオフロード機能がオン状態に設定されているNICを介して、その通信パケットが中継装置2Aからシステム分析装置3Aに送信される。よって、通信パケットのサイズがMTU値より大きい場合であっても、その通信パケットがNICにおいて廃棄されることはない。また、通信パケットが再送パケットであるときは、セグメントオフロード機能がオフ状態に設定されているNICを介して、その通信パケットが中継装置2Aからシステム分析装置3Aに送信される。よって、通常パケットのロスに起因して複数の再送パケットが送信される場合であっても、それら複数の再送パケットがシステム分析装置3Aにおいて結合されることはない。従って、仮想情報処理システム1内で送信される通信パケットの挙動がシステム分析装置3Aにおいて精度よく再現されるので、仮想情報処理システム1を精度よく監視できる。
【符号の説明】
【0092】
1 仮想情報処理システム
2A 中継装置
3A システム分析装置
11(11a、11b) 仮想サーバ
22 パケット受信部
23 パケットバッファ
24a、24b 転送部
25a、25b NIC
26 再送判定部
27 転送制御部
31a、31b NIC
32 分析部
41 ハードディスク
42 メモリ
43 CPU