(57)【特許請求の範囲】
【請求項１】
TCP送信端末群とTCP受信端末群が、ネットワークA（TCP送信端末〜測定ポイント）及びネットワークB（測定ポイント〜TCP受信端末）を介して、TCP(Transmission  Control  Protocol)通信を行うIP(Internet  Protocol)ネットワークの測定ポイントにおいて、該ネットワークのパケットロス数を測定するパケットロス数測定装置であって、
少なくとも、フロー識別子毎に、フローの方向、最終パケットの受信時刻、最終パケットの種類、タイムアウトフラグ、タイムアウト時シーケンス番号を格納するフロー記憶手段と、
前記ネットワークAと前記ネットワークＢ間を流れるフローと該フローの受信パケットが流れる方向を検出し、該受信パケットの情報を前記フロー記憶手段に格納すると共に、該受信パケットから受信データパケット情報とACKパケット情報を取り出して出力するフロー処理手段と、
前記フロー処理手段から取得した前記受信データパケット情報について、データパケットとその前に送られたACKパケットの時間差に基づいてタイムアウトしているか否かを判定し、所定の条件及び、再送パケットであるか否かに基づいて、パケットロス数を算出し、パケットロス数記憶手段を更新するTCPデータパケット処理手段と、
前記フロー処理手段から取得した前記ACKパケット情報に基づいて前記フロー記憶手段を参照し、前記測定ポイントと前記TCP受信端末との間のパケットロスの状況を示す前記タイムアウトフラグがオンの場合は、パケットロス数を算出し、前記パケットロス数記憶手段を更新するTCP  ACKパケット処理手段と、
を有することを特徴とするパケットロス数測定装置。
【請求項２】
前記TCPデータパケット処理手段は、
前記フロー処理手段から取得した前記受信データパケット情報について、タイムアウトしており、前記フロー記憶手段の最終パケットの種類がACKであり、該フロー記憶手段のACK番号の重複数が０であり、該フロー記憶手段の再送パケットフラグが０である条件を満たす場合は、パケットロス数を算出し、前記パケットロス数記憶手段に格納し、該フロー記憶手段の再送パケットフラグをオンに設定する第１のパケットロス数算出手段と、
前記条件を満たさず、前記データパケットのシーケンス番号が含まれていなければ、前記フロー記憶手段に該シーケンス番号の上限値及び下限値を記憶し、前記フロー記憶手段の再送パケットフラグをオフにし、含まれていれば、現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値以上である場合はタイムアウトと判断し、該フロー記憶手段の最終パケットの種類がデータパケットである場合は、該フロー記憶手段のタイムアウトフラグをオンにし、該最終パケットの種類がACKパケットである場合は、フローの方向に応じて前記パケットロス数記憶手段に加算し、前記フロー記憶手段の再送パケットフラグをオンにする第２のパケットロス数算出手段と、
前記フロー記憶手段の該タイムアウト時シーケンス番号に当該パケットのシーケンス番号の上限値を設定する手段と、
現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値より小さい場合には、前記フロー記憶手段の再送パケットフラグをオフに設定する手段と、
前記フロー記憶手段の前記最終のパケットの受信時刻に現在時刻を設定し、前記最終パケットの種類をデータパケットとして設定する手段と、
を含む請求項１記載のパケットロス数測定装置。
【請求項３】
前記TCPデータパケット処理手段は、
前記フロー処理手段から取得した前記受信データパケット情報について、タイムアウトしておらず、前記受信済みシーケンス番号記憶手段に、前記データパケットのシーケンス番号が含まれていなければ、該受信済みシーケンス番号記憶手段に該シーケンス番号の上限値及び下限値を記憶し、前記フロー記憶手段の再送パケットフラグをオフにし、含まれていれば、現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値以上である場合はタイムアウトと判断し、該フロー記憶手段の最終パケットの種類がデータパケットである場合は、該フロー記憶手段のタイムアウトフラグをオンにし、該最終パケットの種類がACKパケットである場合は、フローの方向に応じて前記パケットロス数記憶手段に加算し、前記フロー記憶手段の再送パケットフラグをオンにする手段と、
前記フロー記憶手段の該タイムアウト時シーケンス番号に当該パケットのシーケンス番号の上限値を設定する手段と、
現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値より小さい場合には、前記フロー記憶手段の再送パケットフラグをオフに設定する第３のパケットロス数算出手段と、
前記フロー記憶手段の前記最終のパケットの受信時刻に現在時刻を設定し、前記最終パケットの種類をデータパケットと設定する手段と、を含む
請求項1記載のパケットロス数測定装置。
【請求項４】
前記TCP  ACKパケット処理手段は、
前記フロー記憶手段を参照した結果、前記タイムアウトフラグがオンであり、かつ、前記タイムアウト時シーケンス番号に１加算した値が前記ACKパケットのシーケンス番号と等しい場合は、フローの方向に応じて、前記パケットロス数記憶手段のパケットロス数を１加算し、該フロー記憶手段におけるデータパケットのフローの再送パケットフラグをオンにする第４のパケットロス数算出手段と、
前記フロー記憶手段の前記タイムアウトフラグをオフにする手段と、を含む
請求項１記載のパケットロス数測定装置。
【請求項５】
前記TCP  ACKパケット処理手段は、
前記フロー記憶手段を参照した結果、前記タイムアウトフラグがオフであり、かつ、ACKパケットのシーケンス番号と該フロー記憶手段の最終ACKパケットのシーケンス番号が同じ値である場合は、該フロー記憶手段の重複数に1を加算し、同じ値でない場合は、該フロー記憶手段の重複数に0を設定する手段と、
前記フロー記憶手段の最終ACKパケットのシーケンス番号に、受信したACKパケットのシーケンス番号を設定する手段と、
を含む請求項1記載のパケットロス数測定装置。
【請求項６】
前記第２のパケットロス数算出手段は、
前記パケットロス数記憶手段に加算する際に、フローの方向が前記ネットワークＡから前記ネットワークＢに流れる場合には、前記パケットロス数記憶手段のネットワークＢのパケットロス数に前記パケットロス数Ｎを加算し、該ネットワークＢから該ネットワークＡに流れる場合には、該パケットロス数記憶手段のネットワークＡのパケットロス数に該パケットロス数Ｎを加算する手段を含む
請求項２記載のパケットロス数測定装置。
【請求項７】
前記第３のパケットロス数算出手段は、
前記パケットロス数記憶手段に加算する際に、フローの方向が前記ネットワークＡから前記ネットワークＢに流れる場合には、前記パケットロス数記憶手段のネットワークＢのパケットロス数に１を加算し、該ネットワークＢから該ネットワークＡに流れる場合には、該パケットロス数記憶手段のネットワークＡのパケットロス数に１を加算する手段を含む
請求項３記載のパケットロス数測定装置。
【請求項８】
前記第４のパケットロス数算出手段は、
前記パケットロス数記憶手段に加算する際に、フローの方向が前記ネットワークＡから前記ネットワークＢに流れる場合には、前記パケットロス数記憶手段のネットワークＢのパケットロス数に１を加算し、該ネットワークＢから該ネットワークＡに流れる場合には、該パケットロス数記憶手段のネットワークＡのパケットロス数に１を加算する手段を含む
請求項４記載のパケットロス数測定装置。
【請求項９】
TCP送信端末群とTCP受信端末群が、ネットワークA（TCP送信端末〜測定ポイント）及びネットワークB（測定ポイント〜TCP受信端末）を介して、TCP(Transmission  Control  Protocol)通信を行うIP(Internet  Protocol)ネットワークの測定ポイントにおいて、該ネットワークのパケットロス数を測定するパケットロス数測定方法であって、
少なくとも、フロー識別子毎に、フローの方向、最終パケットの受信時刻、最終パケットの種類、タイムアウトフラグ、タイムアウト時シーケンス番号を格納するフロー記憶手段を有する装置において、
フロー処理手段が、前記ネットワークAと前記ネットワークＢ間を流れるフローと該フローの受信パケットが流れる方向を検出し、該受信パケットの情報を前記フロー記憶手段に格納すると共に、該受信パケットから受信データパケット情報とACKパケット情報を取り出して出力するフロー処理ステップと、
TCPデータパケット処理手段が、前記フロー処理手段から取得した前記受信データパケット情報について、データパケットとその前に送られたACKパケットの時間差に基づいてタイムアウトしているか否かを判定し、所定の条件及び、再送パケットであるか否かに基づいて、パケットロス数を算出し、パケットロス数記憶手段を更新するTCPデータパケット処理ステップと、
TCP  ACKパケット処理手段が、前記ACKパケット情報に基づいて前記フロー記憶手段を参照し、前記測定ポイントと前記TCP受信端末との間のパケットロスの状況を示す前記タイムアウトフラグがオンの場合は、パケットロス数を算出し、前記パケットロス数記憶手段を更新するTCP  ACKパケット処理ステップと、
を行うことを特徴とするパケットロス数測定方法。
【請求項１０】
前記TCPデータパケット処理ステップにおいて、
前記受信データパケット情報について、タイムアウトしており、前記フロー記憶手段の最終パケットの種類がACKであり、該フロー記憶手段のACK番号の重複数が０であり、該フロー記憶手段の再送パケットフラグが０である条件を満たす場合は、パケットロス数を算出し、前記パケットロス数記憶手段に格納し、該フロー記憶手段の再送パケットフラグをオンに設定する第１のパケットロス数算出ステップと、
前記条件を満たさず、前記データパケットのシーケンス番号が含まれていなければ、前記フロー記憶手段に該シーケンス番号の上限値及び下限値を記憶し、前記フロー記憶手段の再送パケットフラグをオフにし、含まれていれば、現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値以上である場合はタイムアウトと判断し、該フロー記憶手段の最終パケットの種類がデータパケットである場合は、該フロー記憶手段のタイムアウトフラグをオンにし、該最終パケットの種類がACKパケットである場合は、フローの方向に応じて前記パケットロス数記憶手段に加算し、前記フロー記憶手段の再送パケットフラグをオンにする第２のパケットロス数算出ステップと、
前記フロー記憶手段の該タイムアウト時シーケンス番号に当該パケットのシーケンス番号の上限値を設定するステップと、
現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値より小さい場合には、前記フロー記憶手段の再送パケットフラグをオフに設定する第３のパケットロス数算出ステップと、
前記フロー記憶手段の前記最終のパケットの受信時刻に現在時刻を設定し、前記最終パケットの種類をデータパケットとして設定するステップと、を含む
請求項９記載のパケットロス数測定方法。
【請求項１１】
前記TCP  ACKパケット処理ステップにおいて、
前記フロー記憶手段を参照した結果、前記タイムアウトフラグがオンであり、かつ、前記タイムアウト時シーケンス番号に１加算した値が前記ACKパケットのシーケンス番号と等しい場合は、フローの方向に応じて、前記パケットロス数記憶手段のパケットロス数を１加算し、該フロー記憶手段におけるデータパケットのフローの再送パケットフラグをオンにし、該フロー記憶手段の前記タイムアウトフラグをオフにする第４のパケットロス数算出ステップと、
前記フロー記憶手段を参照した結果、前記タイムアウトフラグがオフであり、かつ、ACKパケットのシーケンス番号と該フロー記憶手段の最終ACKパケットのシーケンス番号が同じ値である場合は、該フロー記憶手段の重複数に1を加算し、同じ値でない場合は、該フロー記憶手段の重複数に0を設定し、該フロー記憶手段の最終ACKパケットのシーケンス番号に、受信したACKパケットのシーケンス番号を設定するステップと、
を含む請求項９記載のパケットロス数測定方法。
【請求項１２】
前記第２のパケットロス数算出ステップにおいて、
前記パケットロス数記憶手段に加算する際に、フローの方向が前記ネットワークＡから前記ネットワークＢに流れる場合には、前記パケットロス数記憶手段のネットワークＢのパケットロス数に前記パケットロス数Ｎを加算し、該ネットワークＢから該ネットワークＡに流れる場合には、該パケットロス数記憶手段のネットワークＡのパケットロス数に該パケットロス数Ｎを加算する
請求項１０記載のパケットロス数測定方法。
【請求項１３】
前記第３のパケットロス数算出ステップにおいて、
前記パケットロス数記憶手段に加算する際に、フローの方向が前記ネットワークＡから前記ネットワークＢに流れる場合には、前記パケットロス数記憶手段のネットワークＢのパケットロス数に１を加算し、該ネットワークＢから該ネットワークＡに流れる場合には、該パケットロス数記憶手段のネットワークＡのパケットロス数に１を加算する
請求項１０記載のパケットロス数測定方法。
【請求項１４】
前記第４のパケットロス数算出ステップにおいて、
前記パケットロス数記憶手段に加算する際に、フローの方向が前記ネットワークＡから前記ネットワークＢに流れる場合には、前記パケットロス数記憶手段のネットワークＢのパケットロス数に１を加算し、該ネットワークＢから該ネットワークＡに流れる場合には、該パケットロス数記憶手段のネットワークＡのパケットロス数に１を加算する
請求項１１記載のパケットロス数測定方法。
【請求項１５】
コンピュータを、
請求項１乃至８のいずれか1項に記載のパケットロス数測定装置の各手段として機能させるためのパケットロス数測定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットロス数測定装置及び方法及びプログラムに係り、特に、TCP(Transmission Control Protocol)を用いて通信を行うIP(Internet Protocol)ネットワークにおいて、ネットワークのパケットロス数を測定するためのパケットロス数測定装置及び方法及びプログラムに関する。
【背景技術】
【０００２】
IPネットワークのパケットロス率を測定する方法は、大きく分けてパッシブ型とアクティブ型の二つに分けられる。パッシブ型は、ネットワークを流れるパケットの情報から測定する方法で、アクティブ型はネットワークに試験パケットを流すことで測定する方法である。
【０００３】
アクティブ型とパッシブ型の測定には、それぞれ様々な方法が提案されているが、特にパッシブ型の測定方法の一つとして、TCPのシーケンス番号の情報を元にネットワークのパケットロス率を推定する方法がある。TCPは双方向の通信プロトコルであり、データパケットと受信確認のためのACKパケットから構成される。パッシブ型の測定方法として、TCPのデータパケットに着目し、データパケットのシーケンス番号を監視し、シーケンス番号の重複、番号飛びを検出し、独自の補正（再送パケットはパケットロスのカウントの母数に加えない等）を加えることによって測定ポイントの前後のネットワーク（TCP送信端末〜測定ポイント、測定ポイントからTCP受信端末）のパケットロス率を推定する方法がある（例えば、非特許文献1参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】"A Passive Method for Estimating End-to-End TCP Packet Loss", Peter Benko and Andras Veres, IEEE GLOBECOM 2002, vol.3, p. 2609-2613.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献1では、測定ポイントの前のネットワーク（TCP送信端末〜測定ポイント）のパケットロス率が後のネットワーク（測定ポイント〜TCP受信端末）のパケットロス率より大きい環境において、推定誤差が数百パーセントになることが非特許文献1の評価で明らかになっており、実用上の課題となっている。
【０００６】
非特許文献1の課題を解決するために、データパケットだけでなくACKパケットの情報も用いることで推定精度を向上させる技術がある。当該技術は、端末群がネットワークA及びネットワークBを介して、TCP通信を行うIPネットワークにおいて、ネットワークAとネットワークＢ間を流れるフローと当該フローの受信データパケットが流れる方向を検出し、受信データパケットから受信データパケット情報とACKパケット情報を抽出する。抽出されたACKパケット情報に受信確認済みであるSACKパケットが含まれている場合には、SACKパケットのシーケンス番号を記憶しておき、データパケット情報、フロー記憶手段、記憶されたSACK番号を参照することにより、当該受信データパケットのシーケンス番号の順序がシーケンスになっているか否かの判定、当該パケットが再送パケットか否かの判定、当該受信パケットが重複パケットか否か、及び、重複パケットである場合に送信端末がタイムアウトにより再送されたパケットか否かを判定し、判定結果に基づいてフロー方向に対応するネットワークのパケットロスをカウントする。当該技術を以下、『技術1』と記す。
【０００７】
当該技術１により、非特許文献1の課題を解決できた点は、測定ポイントの前のネットワークのACKパケットのロスが原因でタイムアウトが起き、測定ポイントの後のパケットロスとして誤カウントするケースだけである。これ以外にも、タイムアウトの発生による誤カウントの原因として、測定ポイントの後のACKパケットのロス、バーストロスによるTCP送信端末の輻輳ウィンドウのストール等がある。パケットロスの測定を高い精度で行うためには、これらを正しく判別し、誤カウントを低減させることが必要である。
【０００８】
本発明は、上記の点に鑑みなされたもので、パケットロス数の推定精度を向上させることが可能なパケットロス数測定装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するため、本発明（請求項１）は、TCP送信端末群とTCP受信端末群が、ネットワークA（TCP送信端末〜測定ポイント）及びネットワークB（測定ポイント〜TCP受信端末）を介して、TCP(Transmission Control Protocol)通信を行うIP(Internet Protocol)ネットワークの測定ポイントにおいて、該ネットワークのパケットロス数を測定するパケットロス数測定装置であって、
少なくとも、フロー識別子毎に、フローの方向、最終パケットの受信時刻、最終パケットの種類、タイムアウトフラグ、タイムアウト時シーケンス番号を格納するフロー記憶手段と、
前記ネットワークAと前記ネットワークＢ間を流れるフローと該フローの受信パケットが流れる方向を検出し、該受信パケットの情報を前記フロー記憶手段に格納すると共に、該受信パケットから受信データパケット情報とACKパケット情報を取り出して出力するフロー処理手段と、
前記フロー処理手段から取得した前記受信データパケット情報について、データパケットとその前に送られたACKパケットの時間差に基づいてタイムアウトしているか否かを判定し、所定の条件及び、再送パケットであるか否かに基づいて、パケットロス数を算出し、パケットロス数記憶手段を更新するTCPデータパケット処理手段と、
前記フロー処理手段から取得した前記ACKパケット情報に基づいて前記フロー情報記憶手段を参照し、前記測定ポイントと前記TCP受信端末との間のパケットロスの状況を示す前記タイムアウトフラグがオンの場合は、パケットロス数を算出し、前記パケットロス数記憶手段を更新するTCP ACKパケット処理手段と、有する。
【００１０】
また、本発明（請求項２）は、前記TCPデータパケット処理手段において、
前記フロー処理手段から取得した前記受信データパケット情報について、タイムアウトしており、前記フロー記憶手段の最終パケットの種類がACKであり、該フロー記憶手段のACK番号の重複数が０であり、該フロー記憶手段の再送パケットフラグが０である条件を満たす場合は、パケットロス数を算出し、前記パケットロス数記憶手段に格納し、該フロー記憶手段の再送パケットフラグをオンに設定する第１のパケットロス数算出手段と、
前記条件を満たさず、前記データパケットのシーケンス番号が含まれていなければ、前記フロー記憶手段に該シーケンス番号の上限値及び下限値を記憶し、前記フロー記憶手段の再送パケットフラグをオフにし、含まれていれば、現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値以上である場合はタイムアウトと判断し、該フロー記憶手段の最終パケットの種類がデータパケットである場合は、該フロー記憶手段のタイムアウトフラグをオンにし、該最終パケットの種類がACKパケットである場合は、フローの方向に応じて前記パケットロス数記憶手段に加算し、前記フロー記憶手段の再送パケットフラグをオンにする第２のパケットロス数算出手段と、
前記フロー記憶手段の該タイムアウト時シーケンス番号に当該パケットのシーケンス番号の上限値を設定する手段と、
現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値より小さい場合には、前記フロー記憶手段の再送パケットフラグをオフに設定する手段と、
前記フロー記憶手段の前記最終のパケットの受信時刻に現在時刻を設定し、前記最終パケットの種類をデータパケットと設定する手段と、
を含む。
【００１１】
また、本発明（請求項３）は、前記TCPデータパケット処理手段において、
前記フロー処理手段から取得した前記受信データパケット情報について、タイムアウトしておらず、前記受信済みシーケンス番号記憶手段に、前記データパケットのシーケンス番号が含まれていなければ、該受信済みシーケンス番号記憶手段に該シーケンス番号の上限値及び下限値を記憶し、前記フロー記憶手段の再送パケットフラグをオフにし、含まれていれば、現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値以上である場合はタイムアウトと判断し、該フロー記憶手段の最終パケットの種類がデータパケットである場合は、該フロー記憶手段のタイムアウトフラグをオンにし、該最終パケットの種類がACKパケットである場合は、フローの方向に応じて前記パケットロス数記憶手段に加算し、前記フロー記憶手段の再送パケットフラグをオンにする手段と、
前記フロー記憶手段の該タイムアウト時シーケンス番号に当該パケットのシーケンス番号の上限値を設定する手段と、
現在時刻から前記フロー記憶手段の最終パケットの受信時刻を引いた時間が推定RTO値より小さい場合には、前記フロー記憶手段の再送パケットフラグをオフに設定する第３のパケットロス数算出手段と、
前記フロー記憶手段の前記最終のパケットの受信時刻に現在時刻を設定し、前記最終パケットの種類をデータパケットと設定する手段と、を含む。
【００１２】
また、本発明（請求項４）は、前記TCP  ACKパケット処理手段において、
前記フロー記憶手段を参照した結果、前記タイムアウトフラグがオンであり、かつ、前記タイムアウト時シーケンス番号に１加算した値が前記ACKパケットのシーケンス番号と等しい場合は、フローの方向に応じて、前記パケットロス数記憶手段のパケットロス数を１加算し、該フロー記憶手段におけるデータパケットのフローの再送パケットフラグをオンにする第４のパケットロス数算出手段と、
前記フロー記憶手段の前記タイムアウトフラグをオフにする手段と、を含む。
【００１３】
また、本発明（請求項５）は、前記TCP ACKパケット処理手段において、
前記フロー情報記憶手段を参照した結果、前記タイムアウトフラグがオフであり、かつ、ACKパケットのシーケンス番号と該フロー情報記憶手段の最終ACKパケットのシーケンス番号が同じ値である場合は、該フロー情報記憶手段の重複数に1を加算し、同じ値でない場合は、該フロー情報記憶手段の重複数に0を設定する手段と、
前記フロー情報記憶手段の最終ACKパケットのシーケンス番号に、受信したACKパケットのシーケンス番号を設定する手段と、を含む。
【００１４】
また、本発明（請求項６）は、前記第２のパケットロス数算出手段において、
前記パケットロス数記憶手段に加算する際に、フローの方向が前記ネットワークＡから前記ネットワークＢに流れる場合には、前記パケットロス数記憶手段のネットワークＢのパケットロス数に前記パケットロス数Ｎを加算し、該ネットワークＢから該ネットワークＡに流れる場合には、該パケットロス数記憶手段のネットワークＡのパケットロス数に該パケットロス数Ｎを加算する手段を含む。
【００１５】
また、本発明（請求項７）は、前記第３のパケットロス数算出手段において、
前記パケットロス数記憶手段に加算する際に、フローの方向が前記ネットワークＡから前記ネットワークＢに流れる場合には、前記パケットロス数記憶手段のネットワークＢのパケットロス数に１を加算し、該ネットワークＢから該ネットワークＡに流れる場合には、該パケットロス数記憶手段のネットワークＡのパケットロス数に１を加算する手段を含む。
【００１６】
また、本発明（請求項８）は、前記第４のパケットロス数算出手段において、
前記パケットロス数記憶手段に加算する際に、フローの方向が前記ネットワークＡから前記ネットワークＢに流れる場合には、前記パケットロス数記憶手段のネットワークＢのパケットロス数に１を加算し、該ネットワークＢから該ネットワークＡに流れる場合には、該パケットロス数記憶手段のネットワークＡのパケットロス数に１を加算する手段を含む。
【発明の効果】
【００１７】
本発明によれば、TCP送信端末群とTCP受信端末群が、ネットワークA（TCP送信端末−測定ポイント）及びネットワークB（測定端末−TCP受信端末）を介して、TCP通信を行うIPネットワークの測定ポイントにおいて、パケットロスの可能性がある受信パケット情報を選別して、フローテーブル（フロー記憶手段）にフラグを設定していくことにより、
・測定ポイント〜TCP受信端末（ネットワークＡ⇒ネットワークＢ）におけるウィンドウの全パケットロス；
・測定ポイント〜TCP受信端末（ネットワークＡ⇒ネットワークＢ）におけるウィンドウの半数以上のパケットロス（ただし、全パケットロスではない）；
・TCP受信端末〜測定ポイント（ネットワークＢ⇒ネットワークＡ）におけるウィンドウの全ACKパケットロス；
の検出も可能となり、パケットロスの測定精度を向上させることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施の形態における測定ポイントを示す図である。
【図２】パケットロス発生ポイントと発生パターンである。
【図３】本発明で想定するネットワークの構成図である。
【図４】本発明の一実施の形態におけるパケットロス数測定装置の構成図である。
【図５】本発明の一実施の形態におけるフローテーブルの例である。
【図６】本発明の一実施の形態におけるパケットロス数テーブルの例である。
【図７】本発明の一実施の形態における受信済みシーケンス番号テーブルの例である。
【図８】本発明の一実施の形態におけるTCPデータパケット処理部のフローチャートである。
【図９】本発明の一実施の形態におけるTCP ACKパケット処理部のフローチャートである。
【発明を実施するための形態】
【００１９】
以下図面と共に、本発明の実施の形態を説明する。
【００２０】
本発明では、非特許文献1及び上記の技術１と同様に、図1に示すように、データパケットの転送方向（TCP送信端末）からTCP受信端末への通信方向）において、測定ポイントの前後のネットワークのパケットロス数を測定する。同図において、逆方向のｃ，ｄのパケットロスは、区間ａ，ｂのパケットロスと区別するために考慮が必要なため、本明細書で触れているが、実際にパケットロス数をカウントするのは、TCP送信端末からTCP受信端末方向における、区間ａ，ｂのポイントのみである。
【００２１】
なお、「測定ポイント」は、本発明のパケットロス数測定装置の位置とする。
【００２２】
図２は、パケットロスの発生ポイントと発生パターンを示している。
【００２３】
同図において、区間ａは、TCP送信端末からTCP受信端末に向かう通信におけるTCP送信端末と測定ポイント間を指す。区間ｂは、TCP送信端末からTCP受信端末に向かう通信における測定ポイントとTCP受信端末間を指す。区間ｃは、TCP受信端末からTCP送信端末に向かう通信におけるTCP受信端末と測定ポイント間を指す。区間ｄは、TCP受信端末からTCP送信端末に向かう通信における測定ポイントとTCP送信端末間を指す。
【００２４】
区間ａにおいて、ウィンドウの半数未満のパケットが損失するような状態（以下、「ａ−（２）」と記す）、区間ｂにおいて、ウィンドウの半数未満のパケットが損失するような状態（以下、「ｂ−（２）と記す」については、非特許文献1の手法で検出が可能である。
【００２５】
しかし、パケットが半数以上損失し、TCPの送信端末がタイムアウトを起こすようなケースとしては、区間ａにおいて、ウィンドウの全パケットが損失する状態（以下、「ａ−（１）と記す」や、区間ａにおいて、ウィンドウの半数以上のパケットが損失する状態（以下、「ａ−（３）」と記す）や、区間ｂにおいて、ウィンドウの全パケットが損失する状態（以下、「ｂ−（１）」と記す）や、ウィンドウの半数以上のパケットが損失する状態（以下、「ｂ−（３）」と記す）や、区間ｃにおいてウィンドウの全ACKパケットが損失する状態（以下、「ｃ−（１）」と記す）や、区間ｄにおいて、ウィンドウの全ACKパケットが損失する状態（以下、「ｄ−（１）」と記す）は、TCPの振る舞いは非常に似ており、判別が難しいが、これらを正しく判別できないことが非特許文献1の手法において大きな誤差を生じる原因となっている。
【００２６】
また、上記技術１では、区間ｄにおいてウィンドウの全ACKパケットが損失するｄ−（１）の検出を可能にしているが、本発明では、更に、「ａ−（１）」、「ｂ−（１）」、「ｂ−（３）」、「ｃ−（１）」の検出を可能にすることで、測定精度を向上させるものである。
【００２７】
図３は、本発明で想定するネットワークの構成図である。
【００２８】
同図に示すシステムは、複数の端末群１００，２００がネットワークＡ及びネットワークＢを介してTCP通信を行う。ネットワークＡとネットワークＢ間に通信データをコピーする装置（ネットワークスイッチのポートミラーリング機能、タップ装置等）を置き、TCP送信端末１００とTCP受信端末２００の間でやり取りされるパケットのコピーがパケットロス数測定装置３００に転送されるように接続する。パケットロス数測定装置３００では、ネットワークＡとネットワークＢの間を流れるパケットを分析することにより、ネットワークＡとネットワークＢのパケットロス数の測定を行う。
【００２９】
上記の各ケースについて説明する。
【００３０】
＜ａ−（１）のケース＞
当該ケースは、TCP送信端末１００から送信されたパケットが測定ポイントに到着する前に、全てのパケットがロスし、TCP送信端末１００のタイムアウト後に、パケットが再送され、測定ポイントに到着するケースである。
【００３１】
このケースでは、測定ポイントでは、最初のパケットが送信されたことはわからず、再送パケットだけが到着する。但し、再送パケットが初回送信のパケットか、再送パケットかは、TCPパケットにそのような情報がないため判別がつかない。このため、２つのパケットの時間差も分からないため、タイムアウトが発生したのかの判断さえも難しいケースである。
【００３２】
本発明では、タイムアウトを検出するために、到着したパケットpktiとその前に送られたACKパケットACKｉ−１の時間差から、タイムアウトの検出を行う。
【００３３】
Ti−TAｉ−１≧（RTOestimated+α）
の式が成り立てば、タイムアウトが発生したと見做す。また、この方法では、ACKパケットがTCP送信端末１００に到着するまでの伝搬遅延を考慮する必要があるため、例えば、TCP送信端末１００と測定ポイント間のRTT(Round Trip Time)の計測値を用いて、
α＝（TCP送信端末〜測定ポイント間のRTT）／２
として補正することも考えられる。
【００３４】
タイムアウトの発生が検出されたら、誤判定を防ぐために、下記の条件に当てはまるか評価を行う。
【００３５】
・pkt iと前のACKパケットは同一のシーケンス番号を持つ。
【００３６】
・重複ACKは発生していない。
【００３７】
・一つ前のデータパケットpktｉ−１は再送パケットでない。
【００３８】
以上をまとめると、下記の式になる。この式に当てはまる場合に、ａ−（１）のパケットロスのパターンが発生したと考える。
【００３９】
【数１】
0005557869.tif 000002
但し、
【００４０】
【数２】
0005557869.tif 000003
TA i：ACK iの測定ポイントにおける到着時間
ACK i：ACK iのAcknowledgement番号(次に期待するシーケンス番号
RTOestimated：RTOの推定値
Dupack：同一ACK番号を持つACKパケットの連続受信数
RX i：pkt iが再送パケット種別を示すフラグ
（再送パケット＝１、再送パケットではない＝０）
である。
【００４１】
当該パターンは、全てのパケットがロスし、タイムアウト発生後に、パケットが再送されたパターンであるが、再送パケットが更に1回、もしくは、複数回ロスしている可能性も考えられる。
【００４２】
TCPでは、タイムアウトによる再送が発生する毎に、再送間隔を2倍にする指数バックオフが規定されている（RFC2988）。この指数バックオフを考慮することで、パケットの再送回数(＝パケットロス数)を下記のように指定する。αは前述の通り、ACKパケットがTCP送信端末１００に届くまでの伝搬遅延を考慮した補正である。
【００４３】
パケットロス数＝Log2((T i−TAｉ−１−α／RTOestimated)+1
＜ｂ−（１）のケース＞
当該ケースは、測定ポイントの後の区間ｂにおいて、TCPのウィンドウのパケットが全て損失するケースである。このケースでは、ACKがTCP送信端末１００に返ってこないため、TCP送信端末１００はタイムアウトを起こす。
【００４４】
タイムアウトが発生するため、再送されたデータパケットpktiとその一つ前のデータパケットpktｉ−１の間隔は、RTO(Retransmission TimeOut)値以上になる。TCP受信端末２００は、再送パケットpktiを受け取った後、ACKを返信するが、ウィンドウのパケットが全てTCP受信端末２００に到着する前に損失しているため、再送されたpkt i以外のパケットは受信できていない。このため、返送されるACKは、pkt iの次のシーケンス番号を示すことが期待できる。よって、当該ケースの検出方法としては、測定ポイントにおいて、再送パケット（既に測定ポイントにて観測されたパケット）に対して、下記の判定式により検出することができる。
【００４５】
【数３】
0005557869.tif 000004
ただし、
【００４６】
【数４】
0005557869.tif 000005
である。
【００４７】
＜ｂ−（３）のケース＞
当該ケースは、測定ポイントの後の区間ｂにおいて、TCPのウィンドウのパケットの半数以上が損失するケースである。この場合、TCP送信端末１００では、Triple Duplicated ACKの検出により、輻輳回避モードになりウィンドウが半分になるが、半数以上のパケットが損失しているため、TCP送信端末１００はタイムアウトを引き起こすことになる。
【００４８】
タイムアウトが発生するため、再送されたデータパケットpkt iとその一つ前のデータパケットpkti i-1の間隔は、RTO値以上になる。タイムアウトは発生するものの、ACKは正常にTCP送信端末１００に届いているため、再送パケットpkt iはACKパケットの受信確認情報に従った再送パケットになる。すなわち、pkt iのシーケンス番号の下限は、前に届いたACKパケットACK i-1で示されたシーケンス番号と同じになる。そして、TCP受信端末２００は損失したパケット以外の一部のパケットについては既に受信しているため、pkt iを受信したTCP受信端末２００が返送するACKパケットACKiは、acknowledgment番号としてpkt iの次のシーケンス番号よりも大きい番号を示すことが期待できる。よって、ｂ−（３）の検出方法としては、測定のポイントにおいて、再送パケット（既に測定ポイントにて観測されたパケット）に対して、下記の判定式により検出することができる。
【００４９】
【数５】
0005557869.tif 000006
ただし、
【００５０】
【数６】
0005557869.tif 000007
である。
【００５１】
また、下記の判定式のように、タイムアウトの検出と、前のパケットがACKであることの確認だけで、検出することも可能である。
【００５２】
【数７】
0005557869.tif 000008
＜ｃ−（１）のケース＞
当該ケースは、測定ポイントの後の区間ｃにおいて、TCPのウィンドウのACKパケットが全て損失するケースである。当該ケースでは、ACKがTCP送信端末１００に返って来ないため、TCP送信端末１００はタイムアウトを引き起こす。タイムアウトが発生するため、再送されたデータパケットpkt iとその一つ前のデータパケットpkt i-1の間隔は、RTO値以上になる。TCP受信端末２００は、再送パケットpkt iを受け取った後、ACKを返送するが、損失したのはACKパケットであり、データパケットは既にTCP受信端末２００に届いている。このため、返送されるACKはpkt iの次のシーケンス番号によりも大きい番号を示すことが期待できる。よって、ｃ−（１）の検出方法としては、測定ポイントにおいて、再送パケット（既に測定ポイントにて観測されたパケットに対して、下記の判定式により検出することができる。
【００５３】
【数８】
0005557869.tif 000009
以下に、本発明のパケットロス数測定装置について説明する。
【００５４】
図４は、本発明の一実施の形態におけるパケットロス数測定装置の構成を示す。
【００５５】
同図に示すパケットロス測定装置３００は、フロー処理部１、TCPデータパケット処理部２、TCP ACKパケット処理部３、フローテーブル４、受信済みシーケンス番号テーブル５、パケットロス数テーブル６から構成される。フローテーブル４、受信済みシーケンス番号テーブル５、パケットロス数テーブル６は、メモリやハードディスク装置等の記憶媒体である。
【００５６】
同図において、ネットワークＡからネットワークＢへ流れるパケット、ネットワークＢからネットワークＡへ流れるパケットは、それぞれパケットが流れる方向が識別できるように、例えば、別回線で接続するなどして、フロー処理部１に転送されるものとする。
【００５７】
図５は、本発明の一実施の形態におけるフローテーブルの例である。
【００５８】
同図に示すフローテーブル４は、フローＩＤ、送信元IPアドレス、送信先IPアドレス、送信元TCPポート番号、送信先TCPポート番号、フローの方向、最終パケットの受信時刻、最終ACKパケットの受信時刻、最終ACKパケットのシーケンス番号、ACK番号の重複数、最終パケットの種類（データまたはACK）、再送パケットフラグ、タイムアウトフラグ、タイムアウト時シーケンス番号を格納する。再送パケットフラグは、区間ｂにおいてウィンドウの半数以上のパケッとロス（ただし、全パケットロスではない）の可能性があるときにオンとなるフラグである。タイムアウトフラグは、区間ｂにおいてウィンドウの全パケットロスの可能性がある、または、区間ｃにおいてウィンドウの全ACKパケットロスの可能性があるときにオンとなるフラグである。
【００５９】
図６は、本発明の一実施の形態におけるパケットロス数テーブルの例である。
【００６０】
同図に示すパケットロス数テーブル５は、フローＩＤ、ネットワークＡのパケットロス数、ネットワークＢのパケットロス数が格納される。
【００６１】
図７は、本発明の一実施の形態における受信済みシーケンス番号テーブルの例である。
【００６２】
同図に示す受信済みシーケンス番号テーブル５は、フローＩＤ、パケットのシーケンス番号の下限値及び上限値を格納する。
【００６３】
フロー処理部１では、受信したパケットのIPヘッダ、及びTCPヘッダから、送信元IPアドレス、送信先IPアドレス、送信元TCPポート番号、送信先TCPポート番号、フローの方向で一意に識別できるものをフローとして検出し、フローテーブル４を参照し、当該フローテーブル４に既に登録されているフローであれば、フローIDを取得し、登録されていなければユニークなフローIDを新たに付与して、フローテーブル４に登録する。なお、この時点の再送パケットフラグ、タイムアウトフラグにはデフォルトとして"０"（オフ）が設定されているものとする。
【００６４】
フローテーブル４に設定されるフローの方向は、例えば、データパケットが流れる方向を基準にして、ネットワークAからネットワークBに流れる場合は"１"、ネットワークBからネットワークAに流れる場合は"０"というような識別番号を設定する。
【００６５】
TCPは双方向の通信プロトコルであるため、一つのパケットに、データパケットとしてのシーケンス番号と受信確認のためのACKシーケンス番号の両方が含まれる。
【００６６】
フロー処理部１は、ネットワークAからネットワークBへの受信パケットからデータパケット情報を取り出して、TCPデータパケット処理部２に渡す。また、ネットワークBからネットワークAへのパケットから、ACKパケット情報を取り出して、TCP ACKパケット処理部３に渡す。
【００６７】
TCPデータパケット処理部２は、
ａ）再送パケットの確認；
ｂ）タイムアウトの確認；
ｃ）タイムアウト前のACKの確認；
を行う。
【００６８】
ａ）再送パケットの確認は、受信済みシーケンス番号テーブル６にパケットのシーケンス番号が含まれるかをチェックする。
【００６９】
ｂ）タイムアウトの確認は、現在時刻からフローテーブル４の最終パケットの受信時刻が推定(Retransmission TimeOut)値以上であるかをチェックする。
【００７０】
ｃ）タイムアウト前のACKの確認は、上記のｂ）において（現在時刻−フローテーブル４の最終パケットの受信時刻≧推定RTO値）である場合に、フローテーブル４の最終パケットの種類がデータパケットかACKパケットかのチェックを行う。
【００７１】
以下に、TCPデータパケット処理部３の処理を説明する。
【００７２】
図８は、本発明の一実施の形態におけるTCPデータパケット処理部のフローチャートである。
【００７３】
ステップ１０１）  TCPデータパケット処理部２は、フロー処理部１からフローＩＤとパケットデータを取得する。
【００７４】
ステップ１０２）  現在時刻−フローテーブル４の最終ACKパケットの受信時刻≧推定RTO値＋αである場合はステップ１０３に移行し、そうでない場合は、ステップ１０６に移行する。なお、αは補正値である。
【００７５】
ステップ１０３）  下記の条件を満たす場合はステップ１０４に移行し、満たさない場合はステップ１０６に移行する。
【００７６】
条件）
・フローテーブル４の最終パケットの種類=ACK；
・フローテーブル４のACK番号の重複数＝０；
・フローテーブル４の再送パケットフラグ＝０；
ステップ１０４）  パケットロス数を算出し、パケットロス数テーブル５に格納する。
【００７７】
パケットロス数は、
Ｎ＝LOG2(パケットの受信時刻−フローテーブルの最終ACKパケットの受信時刻−α)／推定TRO値）＋１
により求める。
【００７８】
パケットロス数をパケットロス数テーブル５に格納する場合は以下のように、フロー方向によって異なる。
【００７９】
・フローの方向がネットワークＡ→ネットワークＢの場合：
パケットロス数テーブル５のネットワークＢのパケットロス数にＮを加算する。
【００８０】
・フローの方向がネットワークＢ→ネットワークＡの場合：
パケットロス数テーブル５のネットワークＡのパケットロス数にＮを加算する。
【００８１】
ステップ１０５）  フローテーブル４の再送パケットフラグを１に設定し、ステップ１１６に移行する。
【００８２】
ステップ１０６）  受信済みシーケンス番号テーブル６にパケットのシーケンス番号が含まれるかを判定し、含まれる場合はステップ１０７に移行し、含まれない場合はステップ１１４に移行する。
【００８３】
ステップ１０７）  タイムアウトの確認として、
現在時刻−フローテーブルの最終パケットの受信時刻≧推定RTO値
である場合は「タイムアウトの可能性あり」として、ステップ１０８に移行し、そうでない場合はステップ１１３に移行する。
【００８４】
ステップ１０８）  タイムアウト前のACKパケットの確認として、フローテーブル４の最終パケットの種類がデータパケットであるかACKパケットであるかを判定し、データパケットである場合は、ステップ１０９に移行し、ACKパケットである場合はステップ１１０に移行する。
【００８５】
ステップ１０９）  ｂ−（１）または、ｃ−（１）のケースの可能性を示す、フローテーブル４のタイムアウトフラグに"１"を設定し、ステップ１１２に移行する。
【００８６】
ステップ１１０）  パケットロスをパケットロス数テーブル５に記録する。この際、フローの方向によって以下のように、格納する。
【００８７】
・フローの方向がネットワークＡ→ネットワークＢの場合：
パケットロス数テーブル５のネットワークＢのパケットロス数に１を加算する。
【００８８】
・フローの方向がネットワークＢ→ネットワークＡの場合：
パケットロス数テーブル５のネットワークＡのパケットロス数に１を加算する。
【００８９】
ステップ１１１）  フローテーブル４の再送パケットフラグを"１"に設定する。
【００９０】
ステップ１１２）  フローテーブル４のタイムアウト時シーケンス番号に当該パケットのシーケンス番号の上限値を記録し、ステップ１１６に移行する。
【００９１】
ステップ１１３）  フローテーブル４の再送パケットフラグを０に設定し、ステップ１１６に移行する。
【００９２】
ステップ１１４）  ステップ１０６において、受信済みシーケンス番号テーブル６にパケットシーケンス番号が含まれていない場合は、フローテーブル４の受信済みシーケンス番号にパケットのシーケンス番号の上限値及び下限値を記録する。
【００９３】
ステップ１１５）  フローテーブル４の再送パケットフラグを０に設定する。
【００９４】
ステップ１１６）  フローテーブル４の最終パケットの受信時刻に現在時刻を設定し、最終パケットの種類（データパケット／ACKパケット）を設定する。
【００９５】
TCP ACKパケット処理部３は、フロー処理部1を介してネットワークBからネットワークAへのパケット取り出されたACKパケット情報を取得し、フローがネットワークA、ネットワークBにおいてロスしたと想定されるパケット数とパケットロス率（＝パケットロス数／転送パケット数）を算出することができる。
【００９６】
次に、TCP ACKパケット処理部３の処理を説明する。
【００９７】
図９は、本発明の一実施の形態におけるTCP ACKパケット処理部のフローチャートである。
【００９８】
ステップ２０１）  TCP ACKパケット処理部３は、フローテーブル４からフロー情報として、フローIDとACKパケットデータを取得する。
【００９９】
ステップ２０２）  ｂ−（１）もしくは、ｃ−（１）のケースの可能性を示す、フローテーブル４のタイムアウトフラグが"１"であるかを判定し、"１"である場合は、ステップ２０３に移行し、"０"である場合はステップ２０７に移行する。
【０１００】
ステップ２０３）  フローテーブル４のタイムアウト時シーケンス番号＋１＝ACKパケットのシーケンス番号である場合は、パケットロスがあるものとして、ステップ２０４に移行し、そうでない場合はステップ２０６に移行する。
【０１０１】
ステップ２０４）  以下によりパケットロス数を求め、パケットロス数テーブル５に記録し、ステップ２０５に移行する。
【０１０２】
・フロー方向が（ネットワークA⇒ネットワークB）の場合：
パケットロス数テーブルのネットワークBのパケットロス数に１を加算する。
【０１０３】
・フロー方向が（ネットワークB⇒ネットワークA）の場合：
パケットロス数テーブルのネットワークAのパケットロス数に１を加算する。
【０１０４】
ステップ２０５）  フローテーブル４における逆方向のフロー（データパケットのフロー）の再送パケットフラグを１に設定する。
【０１０５】
ステップ２０６）  フローテーブル４のタイムアウトフラグを"０"に設定する。
【０１０６】
ステップ２０７）  ACKパケットのシーケンス番号とフローテーブル4の最終ACKパケットのシーケンス番号が同じ値であるかを判定し、同じ値である場合はステップ２０９に移行し、異なる値である場合はステップ２０８に移行する。
【０１０７】
ステップ２０８）  フローテーブル４のACK番号の重複数に0を設定し、ステップ２１０に移行する。
【０１０８】
ステップ２０９）  フローテーブル４のACK番号の重複数に1を加算する。
【０１０９】
ステップ２１０）  フローテーブル４の最終ACKパケットのシーケンス番号に、受信したACKパケットのシーケンス番号を設定する。
【０１１０】
なお、本発明は、データパケットのロスのカウントが目的とすることから、ｃ−（１）のケースは、ACKパケットのロスであるため、パケットロス数テーブル５への記録は行わない。
【０１１１】
なお、図４に示すパケットロス数測定装置の各構成要素の動作をプログラムとして構築し、パケットロス数測定装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【０１１２】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【０１１３】
１  フロー処理部
２  TCPデータパケット処理部
３  TCP ACKパケット処理部
４  フローテーブル
５  パケットロス数テーブル
６  受信済みシーケンス番号テーブル
１００  TCP送信端末
２００  TCP受信端末
３００  パケットロス数測定装置
【図１】
0005557869.tif 000010
【図２】
0005557869.tif 000011
【図３】
0005557869.tif 000012
【図４】
0005557869.tif 000013
【図６】
0005557869.tif 000014
【図７】
0005557869.tif 000015
【図８】
0005557869.tif 000016
【図９】
0005557869.tif 000017
【図５】
0005557869.tif 000018