(57)【特許請求の範囲】
【請求項１】
端末群がネットワークA及びネットワークBを介して、TCP(Transmission Control Protocol)通信を行うIP(Internet Protocol)ネットワークにおいて、該ネットワークのパケットロス率を推定するパケットロス率推定装置であって、
前記ネットワークAと前記ネットワークＢ間を流れるフローと該フローの受信データパケットが流れる方向を検出し、フロー記憶手段に格納すると共に、該受信データパケットから受信データパケット情報とACKパケット情報を取り出して出力するフロー処理手段と、
前記ACKパケット情報に受信確認済みであるSACKパケットが含まれている場合には、該SACKパケットのシーケンス番号をSACK番号記憶手段に格納するACKパケット処理手段と、
前記データパケット情報、前記フロー記憶手段、前記SACK番号記憶手段を参照することにより、前記データパケット情報から当該受信データパケットのシーケンス番号の順序がシーケンスになっているか否か、当該パケットが再送パケットか否か、当該受信パケットが重複パケットか否か、及び、重複パケットである場合に送信端末がタイムアウトにより再送されたパケットか否かを判定し、判定結果に基づいてフロー方向に対応するネットワークのパケットロスをカウントするデータパケット処理手段と、
を有することを特徴とするパケットロス率推定装置。
【請求項２】
前記データパケット処理手段は、
前記データパケット情報から当該受信パケットのシーケンス番号の順序がシーケンスになっているか否かを判定し、欠落しているシーケンス番号がある場合は、欠落しているシーケンス番号をギャップ記憶手段に格納するギャップ検出手段と、
前記ギャップ記憶手段を参照して該ギャップ記憶手段に前記受信データパケットのシーケンス番号がある場合は、該受信データパケットが再送パケットと判定して、前記フロー記憶手段を参照してフロー方向に対応させてパケットロス数記憶手段のカウント値をカウントアップする再送パケットチェック手段と、
前記受信パケットのシーケンス番号が、前記フロー記憶手段に格納されているフローの最終シーケンス番号以下で、かつ、前記ギャップ記憶手段に含まれておらず、かつ、前記SACK番号記憶手段に含まれていない場合のみ、重複パケットと判定して、前記パケットロス数記憶手段のフロー方向に対応するカウント値をカウントアップする重複チェック手段と、を含む
請求項1記載のパケットロス率推定装置。
【請求項３】
前記フロー処理手段は、
前記ネットワークAと前記ネットワークＢ間を流れるフローと該フローの受信データパケットが流れる方向に加え、該ネットワークＢの片道の遅延時間を取得して前記フロー記憶手段に格納する手段を含み、
前記データパケット処理手段は、
前記フロー処理手段から、データパケット情報を取得すると、TCPシーケンス番号分析を行い、再送パケットを検出した場合には、再送パケット記憶手段に該パケットのシーケンス番号のLeft Edge、Right Edge、タイムスタンプを記録する手段を含み、
前記ACKパケット処理手段は、
ACKパケットが属するフローＩＤに基づいて前記再送パケット記憶手段を検索し、該ACKパケットもしくはSACKパケットに含まれる受信確認済みのシーケンス番号がある場合には、現在時刻、前記フロー記憶手段の前記ネットワークＢの片道の遅延時間、該再送パケット記憶手段の前記タイムスタンプを取得して、
（現在時刻−ネットワークＢの片道遅延時間）＜タイムスタンプ
が成立するとき、前記パケットロス数記憶手段の前記カウント値から１減算する手段を含む請求項１または２記載のパケットロス率推定装置。
【請求項４】
端末群がネットワークA及びネットワークBを介して、TCP(Transmission Control Protocol)通信を行うIP(Internet Protocol)ネットワークにおいて、該ネットワークのパケットロス率を推定するパケットロス率推定方法であって、
フロー処理手段が、前記ネットワークAと前記ネットワークＢ間を流れるフローと該フローの受信データパケットが流れる方向を検出し、フロー記憶手段に格納すると共に、該受信データパケットから受信データパケット情報とACKパケット情報を取り出して出力するフロー処理ステップと、
ACKパケット処理手段が、前記ACKパケット情報に受信確認済みであるSACKパケットが含まれている場合には、該SACKパケットのシーケンス番号を対応付けてSACK番号記憶手段に格納するACKパケット処理ステップと、
データパケット処理手段が、前記データパケット情報、前記フロー記憶手段、前記SACK番号記憶手段を参照することにより、前記データパケット情報から当該受信データパケットのシーケンス番号の順序がシーケンスになっているか否か、当該パケットが再送パケットか否か、当該受信パケットが重複パケットか否か、及び、重複パケットである場合に送信端末がタイムアウトにより再送されたパケットか否かを判定し、判定結果に基づいてフロー方向に対応するネットワークのパケットロスをカウントするデータパケット処理ステップと、
を行うことを特徴とするパケットロス率推定方法。
【請求項５】
前記データパケット処理ステップにおいて、
前記データパケット情報から当該受信パケットのシーケンス番号の順序がシーケンスになっているか否かを判定し、欠落しているシーケンス番号がある場合は、欠落しているシーケンス番号をギャップ記憶手段に格納するギャップ検出ステップと
前記ギャップ記憶手段を参照して該ギャップ記憶手段に前記受信データパケットのシーケンス番号がある場合は、該受信データパケットが再送パケットと判定して、前記フロー記憶手段を参照してフロー方向に対応させてパケットロス数記憶手段のカウント値をカウントアップする再送パケットチェックステップと、
前記受信パケットのシーケンス番号が、前記フロー記憶手段に格納されているフローの最終シーケンス番号以下で、かつ、前記ギャップ記憶手段に含まれておらず、かつ、前記SACK番号記憶手段に含まれていない場合のみ、重複パケットと判定して、前記パケットロス数記憶手段のフロー方向に対応するカウント値をカウントアップする重複チェックステップと、
を行う請求項４記載のパケットロス率推定方法。
【請求項６】
前記フロー処理ステップにおいて、
前記ネットワークAと前記ネットワークＢ間を流れるフローと該フローの受信データパケットが流れる方向に加え、該ネットワークＢの片道の遅延時間を取得して前記フロー記憶手段に格納し、
前記データパケット処理ステップにおいて、
前記フロー処理手段から、データパケット情報を取得すると、TCPシーケンス番号分析を行い、再送パケットを検出した場合には、再送パケット記憶手段に該パケットのシーケンス番号のLeft Edge、Right Edge、タイムスタンプを記録する手段を含み、
前記ACKパケット処理ステップにおいて、
ACKパケットが属するフローＩＤに基づいて前記再送パケット記憶手段を検索し、該ACKパケットもしくはSACKパケットに含まれる受信確認済みのシーケンス番号がある場合には、現在時刻、前記フロー記憶手段の前記ネットワークＢの片道の遅延時間、該再送パケット記憶手段の前記タイムスタンプを取得して、
（現在時刻−ネットワークＢの片道遅延時間）＜タイムスタンプ
が成立するとき、前記パケットロス数記憶手段の前記カウント値から１減算する
請求項４または５記載のパケットロス率推定方法。
【請求項７】
請求項１乃至３のいずれか１項に記載のパケットロス率推定装置を構成する各手段としてコンピュータを機能させるためのパケットロス率推定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットロス率推定装置及び方法及びプログラムに係り、特に、TCP(Transmission Control Protocol)を用いて通信を行うＩＰ(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.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
パケットロス率の推定精度は、上記の非特許文献１の評価によると、分析に用いるデータ量とネットワークの実際のパケットロス率に依存する特徴がある。測定ポイント〜TCP受信端末の推定においては、パケットロス率10-3程度のネットワークにおいては、測定誤差が0.2〜0.6（20〜60%）になることが文献の中で示されている（非特許文献１中のFig4・右下の図）。また、文献１「Dynamic Performance Limits of the Benko-Veres Passive TCP Packet Loss Estimation Algorithm", Claudio Favi and Grenville Armitage, ATNAC 2004, p.336-340.」において同じアルゴリズムで評価した結果があるが、非特許文献１の評価結果と同様に、10-3のパケットロス率では10,000パケットのデータ量を用いても約50%程度の誤差が出ることが示されている（同文献１中のFig5・0.001のグラフ）。国内のインターネットにおいては、パケットロス率が10-3程度であると言われており、非特許文献１のアルゴリズムを用いて推定した場合、最大で60%程度の誤差が出ることになる。誤差60%は非常に大きく、精度の向上が必要である。
【０００６】
非特許文献１の方法では、TCPのデータパケットの情報のみを用いて推定を行っているが、データパケットから得られる情報は限られており、同じ方法で大幅な精度向上を行うのは困難であると考えられる。TCPは双方向の通信プロトコルであり、受信端末から送信端末に送られるACKパケットには正常に受信できたパケットのシーケンス番号の情報が含まれる。非特許文献１の方法において誤差が大きいのは、測定ポイント〜TCP受信端末の推定であり、誤差を大きくしている要因の一つがTCP送信端末のタイムアウト処理と考えられている。非特許文献１の方法では、同じシーケンス番号を持つデータパケットが複数回転送されてきた場合、ネットワークにおけるパケットロスが原因で再送されたものであると考える。しかし、実際には、TCPの送信端末は、データパケットの送信後一定の条件を満たすと、タイムアウト処理として、同じパケットの再送を行う。この再送によって、ネットワークでパケットロスが起きていないにも関わらず、パケットロスとカウントしてしまい、誤差を大きくする原因になっていると考えられている。
【０００７】
本発明は、上記の点に鑑みなされたもので、タイムアウトによるパケットロスの誤判定を改善し、パケットロス率の推定精度を向上させることが可能なパケットロス率推定装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明は、端末群がネットワークA及びネットワークBを介して、TCP通信を行うIPネットワークにおいて、該ネットワークのパケットロス率を推定するパケットロス率推定装置であって、
前記ネットワークAと前記ネットワークＢ間を流れるフローと該フローの受信データパケットが流れる方向を検出し、フロー記憶手段に格納すると共に、該受信データパケットから受信データパケット情報とACKパケット情報を取り出して出力するフロー処理手段と、
前記ACKパケット情報に受信確認済みであるSACKパケットが含まれている場合には、SACKパケットのシーケンス番号をSACK番号記憶手段に格納するACKパケット処理手段と、
前記データパケット情報、前記フロー記憶手段、前記SACK番号記憶手段を参照することにより、当該受信データパケットのシーケンス番号の順序がシーケンスになっているか否かの判定、当該パケットが再送パケットか否かの判定、当該受信パケットが重複パケットか否か、及び、重複パケットである場合に送信端末がタイムアウトにより再送されたパケットか否かを判定し、判定結果に基づいてフロー方向に対応するネットワークのパケットロスをカウントするデータパケット処理手段と、を有する。
【０００９】
また、前記データパケット処理手段は、
前記データパケット情報から当該受信パケットのシーケンス番号の順序がシーケンスになっているか否かを判定し、欠落しているシーケンス番号がある場合は、欠落しているシーケンス番号をギャップ記憶手段に格納するギャップ検出手段と、
前記ギャップ記憶手段を参照して該ギャップ記憶手段に前記受信データパケットのシーケンス番号がある場合は、該受信データパケットが再送パケットと判定して、前記フロー記憶手段を参照してフロー方向に対応させてパケットロス数記憶手段のカウント値をカウントアップする再送パケットチェック手段と、
前記受信パケットのシーケンス番号が、前記フロー記憶手段に格納されているフローの最終シーケンス番号以下で、かつ、前記ギャップ記憶手段に含まれておらず、かつ、前記SACK番号記憶手段に含まれていない場合のみ、重複パケットと判定して、前記パケットロス数記憶手段のフロー方向に対応するカウント値をカウントアップする重複チェック手段と、を含む。
【００１０】
また、前記フロー処理手段は、
前記ネットワークAと前記ネットワークＢ間を流れるフローと該フローの受信データパケットが流れる方向に加え、該ネットワークＢの片道の遅延時間を取得して前記フロー記憶手段に格納する手段を含み、
前記データパケット処理手段は、
前記フロー処理手段から、データパケット情報を取得すると、TCPシーケンス番号分析を行い、再送パケットを検出した場合には、再送パケット記憶手段に該パケットのシーケンス番号のLeft Edge、Right Edge、タイムスタンプを記録する手段を含み、
前記ACKパケット処理手段は、
ACKパケットが属するフローＩＤに基づいて前記再送パケット記憶手段を検索し、該ACKパケットもしくはSACKパケットに含まれる受信確認済みのシーケンス番号がある場合には、現在時刻、前記フロー記憶手段の前記ネットワークＢの片道の遅延時間、該再送パケット記憶手段の前記タイムスタンプを取得して、
（現在時刻−ネットワークＢの片道遅延時間）＜タイムスタンプ
が成立するとき、前記パケットロス数記憶手段の前記カウント値から１減算する手段を含む。
【発明の効果】
【００１１】
上記のように、本発明によれば、ACKパケットを用い、ACKパケットによって受信確認されたパケットが再度送られてきた場合（SACK番号記憶手段に受信パケットのシーケンス番号が存在する場合）には、TCP送信端末がタイムアウトで再送したパケットであり、パケットロスではないと判断することにより、パケットロス率の推定精度が向上する。
【図面の簡単な説明】
【００１２】
【図１】本発明で想定するネットワークの構成図である。
【図２】本発明の第１の実施の形態におけるパケットロス率推定装置のブロック構成図である。
【図３】本発明の第１の実施の形態におけるフローテーブルの例である。
【図４】本発明の第１の実施の形態におけるデータパケット情報の例である。
【図５】本発明の第１の実施の形態におけるACKパケット情報の例である。
【図６】本発明の第１の実施の形態におけるTCPデータパケット処理部の処理のフローチャートである。
【図７】本発明の第１の実施の形態におけるパケットロス数テーブルの例である。
【図８】本発明の第１の実施の形態におけるギャップ番号テーブルの例である。
【図９】本発明の第１の実施の形態におけるSACK番号テーブルの例である。
【図１０】本発明の第１の実施の形態におけるTCP ACKパケット処理部の処理のフローチャートである。
【図１１】本発明の第１の実施の形態における測定ポイントの両側のパケットロス率を推定するアルゴリズムである。
【図１２】本発明の第１の実施の形態と第２の実施の形態の差異を示す図である。
【図１３】本発明の第２の実施の形態におけるTCPの３wayハンドシェイクの例である。
【図１４】本発明の第２の実施の形態におけるフローテーブルの例である。
【図１５】本発明の第２の実施の形態におけるパケットロス率推定装置のブロック構成図である。
【図１６】本発明の第２の実施の形態における再送パケットテーブルの例である。
【図１７】本発明の第２の実施の形態におけるTCP ACKパケット処理部の処理のフローチャートである。
【発明を実施するための形態】
【００１３】
以下図面と共に、本発明の実施の形態を説明する。
【００１４】
従来、ＩＰネットワークのパケットロス率を測定する方法において、パッシブ型としてTCPのデータパケットのシーケンス番号を監視し、重複、番号飛びを検出し、測定ポイントの前後のネットワークのパケットロス率を推定していたが、誤差が非常に大きくなるという問題があった。それは、TCPの送信端末は、データパケット送信後一定の条件を満たすとタイムアウト処理として同じパケットの再送を行うため、パケットロスが発生していないも関わらず、パケットロスとカウントしてしまうことが原因になっていると考えられる。
【００１５】
そこで、本発明では、上記の問題を解決するために、TCPのACKパケットの情報を用いる。ACKパケットには、TCP受信端末が正常に受信できたパケットの情報が含まれており、ACKパケットによって受信確認されたパケットが後から再度送られてきた場合には、TCP送信端末がタイムアウトで再送したパケットであり、ネットワークにおけるパケットロスではないと判断することができる。この考え方を取り入れることで、非特許文献１に比べてパケットロス率の推定精度の向上が見込める。ACKパケットに含まれる情報としては、TCPの標準仕様（RFC793）で規定されている" Acknowledgment Number"と、オプションとしてRFC2018にて規定されている" SACK option"がある。いずれも正常に受信できたパケットのシーケンス番号を伝達するための規定であり、タイムアウトによるパケットロスの誤判定の改善に用いることができる。
【００１６】
図１は、本発明で想定するネットワークの構成を示したものである。
【００１７】
同図に示すシステムは、複数の端末群１００、２００がネットワークA、及びネットワークBを介してTCP通信を行う。ネットワークAとネットワークB間に通信データをコピーする装置（ネットワークスイッチのポートミラーリング機能、タップ装置等）を置き、端末１００と端末２００の間でやり取りされるパケットのコピーがパケットロス率推定装置３００に転送されるように接続する。パケットロス率推定装置３００では、ネットワークAとネットワークBの間を流れるパケットを分析することにより、ネットワークAとネットワークBのパケットロス率の推定を行う。
【００１８】
［第１の実施の形態］
図２は、本発明の第１の実施の形態におけるパケットロス率推定装置の構成を示す。
【００１９】
同図に示すパケットロス率推定装置３００Ａは、フロー処理部１１、TCPデータパケット処理部１２、TCP ACKパケット処理部１３、ギャップ番号テーブル１４、SACK番号テーブル１５、パケットロス数テーブル１６、フローテーブル１７を有する。このうち、ギャップ番号テーブル１４、SACK番号テーブル１５、パケットロス数テーブル１６、フローテーブル１７は、メモリやハードディスク等の記憶媒体である。
【００２０】
以下の説明において、ネットワークAからネットワークBへ流れるパケット、ネットワークBからネットワークAへ流れるパケットは、それぞれパケットが流れる方向が識別できるように、例えば別回線で接続する等して、フロー処理部１１に転送されるものとする。
【００２１】
フロー処理部１１では、受信したパケットのIPヘッダ、及びTCPヘッダから、下記の情報で一意に識別できるものをフローとして検出し、フローテーブル１７を参照し、当該フローテーブル１７に既に登録されているフローであれば、フローIDを取得し、登録されていなければユニークなフローIDを新たに付与して、図３に示すように、フローテーブル１７に登録する。
・送信元IPアドレス（Source Address）
・送信先IPアドレス（Destination Address）
・送信元TCPポート番号（Source Port）
・送信先TCPポート番号（Destination Port）
・フローの方向
上記のフローの方向は、例えば、データパケットが流れる方向を基準にして、ネットワークAからネットワークBに流れる場合は"１"、ネットワークBからネットワークAに流れる場合は"０"というような識別番号を設定する。
【００２２】
TCPは双方向の通信プロトコルであるため、一つのパケットに、データパケットとしてのシーケンス番号と受信確認のためのACKシーケンス番号の両方が含まれる。
【００２３】
フロー処理部１１は、ネットワークAからネットワークBへの受信パケットから図４に示すデータパケット情報を取り出して、TCPデータパケット処理部１２に渡す。また、ネットワークBからネットワークAへのパケットから、図５に示すACKパケット情報を取り出して、TCP ACKパケット処理部１３に渡す。
【００２４】
TCPデータパケット処理部１２は、
ａ）パケットシーケンス番号が欠落しているかのチェック；
ｂ）受信パケットが再送パケットか否かのチェック；
ｃ）受信パケットが重複パケットか否かのチェック；
を行う。
【００２５】
ａ）のパケットシーケンス番号が飛んでいるか否かのチェックは、フローの最終シーケンス番号と受信パケットのシーケンス番号が連続しているかをチェックする。具体的には、前のパケットが"１〜９９９"、到着パケットが"２０００〜２９９９"である場合には、"１０００〜１９９９"が欠落していることになる。この場合、欠落している"１０００〜１９９９"をギャップ番号テーブル１４に格納する。この場合は、左端を"１０００"、右端を"１９９９"としてギャップ番号テーブル１４に設定する。
【００２６】
ｂ）の受信パケットが再送パケットか否かのチェックは、受信パケットのシーケンス番号が未受信の番号かをチェックする。具体的には、ギャップ番号テーブル１４に記録されていれば欠落（未受信）と判定する。未受信であれば、観測ポイント(当該パケットロス率推定装置３００Ａを設置している地点)よりも前でパケットロスが発生し、そのパケットが再送されてきたものと見做す。例えば、ネットワークＡ⇒ネットワークＢのフローであれば、ネットワークＡのパケットロスと見做し、ネットワークＢ⇒ネットワークＡのフローであれば、ネットワークＢのパケットロスと見做してカウントし、パケットロス数テーブル１６に格納する。
【００２７】
ｃ）の受信パケットが重複パケットか否かのチェックは、既に受信済みのシ−ケンス番号のパケットが再度送られてきたかをチェックし、再度送られてきたら重複パケットと判断する。判断の具体的な方法としては、フローテーブル１７のフローの最終シーケンス番号（受信済みパケットで最も大きいシーケンス番号）よりも小さく（＝古い番号のパケットである）、ギャップ番号テーブル１４に含まれていないもの（＝未受信パケットではない）を重複パケットと見做す。重複パケットであるということは、観測ポイントよりも後でパケットロスが起きたと見做し、ネットワークＡ⇒ネットワークＢのフローであれば、ネットワークＢのパケットロス、ネットワークＢ⇒ネットワークＡのフローであれば、ネットワークＡのパケットロスとしてカウントし、パケットロス数テーブル１６に格納する。但し、重複パケットであっても、既に受信端末によってパケットの受信確認がされている場合（ACKまたはSACKパケットが送信され、観測ポイントに届いている場合）は、観測ポイントよりも後でパケットロスが起きたことによる再送ではなく、送信端末がTCPのタイムアウト等により再送されたパケットであるため、ネットワークのパケットロスとしてはカウントしないようにする。
【００２８】
具体的には、TCP データパケット処理部１２では以下に示す手順でデータパケット情報を処理する。
【００２９】
図６は、本発明の第１の実施の形態におけるTCPデータパケット処理部の処理のフローチャートである。
【００３０】
ステップ１０１）  TCPデータパケット処理部１２は、フロー処理部１１からデータパケット情報を取得する。データパケット情報に含まれるフローＩＤに基づいて、フローテーブル１７を検索し、フロー情報を取得する。
【００３１】
ステップ１０２）  フローＩＤに基づいて、図７に示すパケットロステーブル１６を検索し、該当するフローＩＤの転送パケット数に１加える。
【００３２】
ステップ１０３）  データパケット情報に含まれるシーケンス番号（受信シーケンス番号）が、フローテーブル１６の最終シーケンス番号より大きく、かつ、最終シーケンス番号に１を加算した値と受信シーケンス番号が等しい場合には、シーケンス番号が欠落しているものとしてステップ１０４に移行し、等しくない場合はステップ１０５に移行する。
【００３３】
ステップ１０４）  図８に示すギャップ番号テーブル１４にステップ１０３の欠落している番号（ギャップ）を記録する。ギャップ番号テーブル１４の「Left Edge」には、最終シーケンス番号に１加えた値を、「Right Edge」には受信シーケンス番号から１を引いた値を記録する。
【００３４】
ステップ１０５）  ギャップ番号テーブル１４に受信パケットのシーケンス番号が含まれるかを判定し、含まれる場合はステップ１０６に移行し、含まれない場合はステップ１０８に移行する。
【００３５】
ステップ１０６）  ステップ１０５において含まれると判定された場合はパケットロスと見做し、当該パケットロスをパケットロス数テーブル１６に記録する。具体的には、フロー方向が、ネットワークAからネットワークBであれば（識別番号"１"）、パケットロス数テーブル１７のフローＩＤに対応するネットワークＡのパケットロス数に１を加算する。一方、フロー方向がネットワークＢからネットワークＡであれば（識別番号"０"）、パケットロス数テーブル１７のフローＩＤに対応するネットワークＢのパケットロス数に１を加算する。
【００３６】
ステップ１０７）  ギャップ番号テーブル１４から区間（受信パケットのシーケンス番号〜受信パケットのシーケンス番号＋データ長−１）を除く。具体的には、ギャップ番号テーブル１４のLeft Edgeもしくは、Right Edgeの修正による除去、または、該当エントリを削除して、除去区間を含まないように新たに２つのエントリを作成し、処理を終了する。
【００３７】
ステップ１０８）  ステップ１０５において、ギャップ番号テーブル１４に受信パケットのシーケンス番号が存在しない場合には、パケットロスではないと見做し、パケットの重複受信のチェックを行う。具体的には、受信パケットのシーケンス番号が最終シーケンス番号（フローテーブル）以下、かつ、受信パケットのシーケンス番号が最終ACKシーケンス番号（フローテーブル）より大きく、かつ、受信パケットのシーケンス番号が図９に示すSACK番号テーブル１５に登録されていない場合は、ステップ１０９に移行し、登録されている場合には受信端末からの受信確認パケット（SACKパケット)を受信しているため、ステップ１１０に移行する。
【００３８】
ステップ１０９）  パケットロスをパケットロス数テーブル１６に記録する。具体的には、フロー方向がネットワークＡからネットワークＢであれば、パケットロス数テーブル１６の該当フローＩＤのネットワークＢのパケットロス数に１加算する。フロー方向が根とワークＢからネットワークＡであれば、パケットロス数テーブル１６の該当フローＩＤのネットワークＡのパケットロス数に１加算し、処理を終了する。
【００３９】
ステップ１１０）  フローテーブル１４の最終シーケンス番号を更新する。具体的には、フローテーブル１４の該当号フローＩＤの最終シーケンス番号を、シーケンス番号＋データ長−１として更新し、パケットカウンタ数をカウントアップせずに処理を終了する。
【００４０】
TCP ACKパケット処理部１３は、ACKパケット、SACKパケットの受信が確認されると、確認されたACKパケットのシーケンス番号をフローテーブル１７に格納し、その中にSACKパケットが含まれている場合はSACKの情報をSACK番号テーブル１５に格納する。
【００４１】
次に、TCP ACKパケット処理部１３がフロー処理部１１から、ネットワークBからネットワークAへのパケット取り出されたACKパケット情報を取得した場合の処理を説明する。
【００４２】
図１０は、本発明の第１の実施の形態におけるTCK ACKパケット処理部の処理のフローチャートである。
【００４３】
ステップ２０１）  TCK ACKパケット処理部１３は、フロー処理部１１から取得したACKパケット情報のフローIDに基づいて、フローテーブル１７のACKシーケンス番号をACKパケット情報として取得したACKシーケンス番号で更新する。
【００４４】
ステップ２０２）  取得したACKパケット情報にSACKの情報が含まれているかを判定し、含まれている場合にはステップ２０３に移行し、含まれていない場合は当該処理を終了する。
【００４５】
ステップ２０３）  SACK情報が含まれている場合には当該SACK情報をSACK番号テーブル１５に記録する。具体的には、ACKパケット情報のフローＩＤ、SACK Left Edge(N)，SACK Right (n)の情報をそれぞれSACK番号テーブル１５のフローID、Left Edge、Right Edgeとして追加する（ｎ＝１〜４）。
【００４６】
ステップ２０４）  古いSACK情報をSACK番号テーブル１５から削除する。具体的には、ACKパケット情報のACKシーケンス番号より小さい番号のLeft Edge、及び、Right Edgeを持つエントリをSACK番号テーブル１５から削除する。
【００４７】
上記の処理により、TCPのデータパケットがTCPデータパケット処理部１２で処理される毎に、フローがネットワークA、ネットワークBにおいてロスしたと想定されるパケット数とパケットロス率（＝パケットロス数／転送パケット数）を算出することができる。
【００４８】
本実施の形態では、図１１に示すように、TCP受信端末から送られるACKパケットのシーケンス番号を記録しておき、重複パケットが既にACKパケットにより受信確認されているパケットであることが確認できれば、ネットワークＢにおいてパケットロスが発生していないことが明らかであるため、TCP送信端末による誤再送と見做し、ネットワークＢのパケットロスとしてはカウントしない。
【００４９】
［第２の実施の形態］
前述の第１の実施の形態では、図１２（Ａ）に示すように、測定ポイントを通過したACKパケットを記録し、再送パケットと記録済みのACKパケットを照合するため、ACKパケットが再送パケットより先に通過することが条件であった。これに対し、本実施の形態では、図１２（Ｂ）に示すように、測定ポイントとTCP受信端末の遅延時間を予め測定しておき、再送パケットより後にACKパケットが到着した場合でも、遅延時間からACKパケットの送信時刻を推定し、再送パケットの通過時刻とACKパケットの送信時刻の比較で順序関係を決める。再送パケットよりACKパケットの方が早く送信されたとみなした場合には、ACKパケットをロス率の補正に用いる。つまり、再送パケットはタイムアウト等による誤送信とみなし、ネットワークＢのパケットロスとしてカウントしない。
【００５０】
したがって、本発明では、測定端末とTCP受信端末の遅延時間に基づいて、パケットの順序関係を補正するため、遅延時間の測定が必要になる。遅延時間の測定方法の一つとして、TCP3wayハンドシェイクの例を示す。
【００５１】
TCPは双方向の通信プロトコルであるため、１つのコネクションに２つ（双方向）のフローが含まれる。このため、TCP端末ｐ１からｐ２に対してTCPコネクション接続を開始した場合、図１３に示すように、SYNとSYN+ACKのパケットのタイムスタンプTs，Teを用いて、測定ポイントとTCP端末ｐ２の片道遅延時間を（Te−Ts）／2として算出し、ｐ１→ｐ２のフローにおけるネットワークＢの片道遅延時間として用いる。なお、測定ポイントとTCP端末間の遅延時間は対称であるものとする。
【００５２】
ｐ１→ｐ２のフローにおけるネットワークＢの片道遅延時間は、SYN+ACKとACKのタイムスタンプから同様に（Te−Ts)／２にて算出する。算出した片道遅延時間は、フロー処理部１１により図１４に示すようにフローテーブル１７に格納される。同図に示すフローテーブル２７は、図３のフローテーブルにネットワークＢの片道遅延時間のデータ項目を追加した構成である。
【００５３】
フローテーブル２７の片道遅延時間を用いてパケットの順序関係を補正するために、本実施の形態では、再送パケットに対してタイムスタンプを記録する。タイムスタンプ記録ため、図１５に示すように、パケットロス率推定装置３００Ｂに再送パケットテーブル２８を備える。
【００５４】
TCP データパケット処理部１２は、フロー処理部１１からデータパケット情報を取得すると、TCPシーケンス番号分析を行う。これにより、再送パケットを検出した場合には、図１６に示すように、再送パケットテーブル２８にパケットのシーケンス番号のLeft Edge、Right Edge、現在時刻（タイムスタンプ）を記録する。再送パケットの検出方法としては、受信パケットが重複パケットか否かのチェックは、既に受信済みのシ−ケンス番号のパケットが再度送られてきたかをチェックし、再度送られてきたら重複パケットと判断する。判断の具体的な方法としては、フローテーブル２７のフローの最終シーケンス番号（受信済みパケットで最も大きいシーケンス番号）よりも小さく（＝古い番号のパケットである）、ギャップ番号テーブル１４に含まれていないもの（＝未受信パケットではない）を重複パケットと見做す。重複パケットであるということは、観測ポイントよりも後でパケットロスが起きたと見做し、ネットワークＡ⇒ネットワークＢのフローであれば、ネットワークＢのパケットロス、ネットワークＢ⇒ネットワークＡのフローであれば、ネットワークＡのパケットロスとしてカウントする。
【００５５】
ここで、パケットの順序関係の補正により、ACKが再送パケットの後に到着した場合に対応できるようにするため、本実施の形態では、TCP ACKパケット処理部１３では、図１０の処理に加えて、以下の処理を行う。
【００５６】
図１７は、本発明の第２の実施の形態におけるTCP ACKパケット処理部の処理のフローチャートである。同図において、図１０と同一の処理部分には図１０と同一のステップ番号を付し、その説明を省略する。
【００５７】
TCP ACKパケット処理部１３では、フロー処理部１１からACKパケット情報を取得すると、ACKパケットが属するフローＩＤから、再送パケットテーブル２８を検索し、SACKパケットに含まれるシーケンス番号をチェックする（ステップ３０１）。当該チェックにおいて、（SACKのLeft Edge≦再送パケットテーブルのLeft Edge） and (再送パケットテーブルのRight Edge≦ SACKのRight Edge)であれば（ステップ３０２、Yes）、パケットの順序関係を補正する（ステップ３０３）。次に、ACKパケットが属するフローIDから再送パケットテーブル２８を検索してACKパケットに含まれるシーケンス番号をチェックする（ステップ３０４）。当該チェックにおいて、再送パケットテーブルのRight Edge ＜ ACKシーケンス番号であるとき（ステップ３０５，Yes）、以下に示すパケットの順序関係の補正を行う（ステップ３０６）。なお、前述の図１０のステップ２０２において、ACKパケット情報にSACKの情報が含まれていない場合（ステップ２０２,No）は、ステップ３０４の処理に移行するものとする。
【００５８】
パケットの順序関係の補正を以下の式で行う。
【００５９】
（現在時刻−フローテーブルのネットワークＢの片道遅延時間）＜再送パケットテーブルのタイムスタンプ
上記の式が成り立つならば、再送パケットが測定ポイントを通過する前に、ACKパケットが送信されたと見做し（＝最初のパケットは受信端末に届いており、ネットワークでパケットロスは発生していない）、既にパケットロスとしてカウントされている分を補正するため、パケットロス数テーブル１６の該当フローＩＤの行において、ネットワークＢのパケットロス数から１を減算する。
【００６０】
＜評価＞
本発明をネットワークシミュレータNS-2（http://www.isi.edu/nsnam/ns/）を用いて評価した結果を示す。評価では、2台の端末が2つのネットワークA・Bを経由してTCP通信を行い、ネットワークA・Bでパケットロスがランダムに発生するシミュレーション環境を構築した。シミュレーションでは、
端末１→ネットワークA→ネットワークB→端末２
の経路でTCPのデータパケットを流し、ネットワークA・Bの間を流れるパケットに対して、本発明のアルゴリズムを用いてネットワークBにおけるパケットロス率を推定した。また、シミュレーションは同一の条件で10回行い、推定誤差の最大値を結果とした。分析対象のパケットは約10,000パケットになるようにした。以下に評価結果を示す。
【００６１】
【表１】
0005292444.tif 000002
非特許文献２では、分析対象パケット数10,000、ネットワークのパケットロス率10-3の条件において約50%程度の推定誤差が出ていたのに対して、本発明のアルゴリズムでは最大でも誤差が２％程度である結果が得られ、ACK及びSACKの情報を用いることで大幅な精度向上を達成することが確認できた。
【００６２】
なお、上記の実施の形態におけるパケットロス率推定装置の各構成要素の動作をプログラムとして構築し、パケットロス率推定装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００６３】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用可能である。
【符号の説明】
【００６４】
１１  フロー処理部
１２  TCPデータパケット処理部
１３  TCP ACKパケット処理部
１４  ギャップ番号テーブル
１５  SACK番号テーブル
１６  パケットロス数テーブル
１７  フローテーブル
２７  フローテーブル
２８  再送パケットテーブル
１００，２００  端末
３００  パケットロス率推定装置
【図１】
0005292444.tif 000003
【図２】
0005292444.tif 000004
【図３】
0005292444.tif 000005
【図４】
0005292444.tif 000006
【図５】
0005292444.tif 000007
【図６】
0005292444.tif 000008
【図７】
0005292444.tif 000009
【図８】
0005292444.tif 000010
【図９】
0005292444.tif 000011
【図１０】
0005292444.tif 000012
【図１１】
0005292444.tif 000013
【図１２】
0005292444.tif 000014
【図１３】
0005292444.tif 000015
【図１４】
0005292444.tif 000016
【図１５】
0005292444.tif 000017
【図１６】
0005292444.tif 000018
【図１７】
0005292444.tif 000019