(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-27
(45)【発行日】2025-04-04
(54)【発明の名称】トランスポート制御プロトコルのトリップタイムの推定
(51)【国際特許分類】
H04L 43/0864 20220101AFI20250328BHJP
H04L 43/0888 20220101ALI20250328BHJP
H04L 43/08 20220101ALI20250328BHJP
H04L 43/022 20220101ALI20250328BHJP
【FI】
H04L43/0864
H04L43/0888
H04L43/08
H04L43/022
【外国語出願】
(21)【出願番号】P 2023126290
(22)【出願日】2023-08-02
(62)【分割の表示】P 2021569197の分割
【原出願日】2019-11-21
【審査請求日】2023-08-24
(32)【優先日】2019-05-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】デシュパンデ,アカーシュ
【審査官】吉田 歩
(56)【参考文献】
【文献】特開2011-172270(JP,A)
【文献】特開2017-103653(JP,A)
【文献】特開2017-184044(JP,A)
【文献】特表2018-529296(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 43/0864
H04L 43/0888
H04L 43/08
H04L 43/022
(57)【特許請求の範囲】
【請求項1】
データ処理ハードウェアによって実行されると、前記データ処理ハードウェアに以下の動作を実行させるコンピュータ実施方法であって、前記動作は、
所定の期間にわたってミドルボックスを介して通信するソースエンドポイントと宛先エンドポイントとの間のトランスポート制御プロトコル(TCP)接続から、複数のパケットをサンプリングすることと、
前記サンプリングされた複数のパケットの各パケットの受領確認番号を記録することと、
前記受領確認番号の傾向線の勾配を決定することと、
前記所定の期間にわたって前記ミドルボックスを介して通信する前記ソースエンドポイントと前記宛先エンドポイントとの間の前記TCP接続の推定性能特性を生成することとを含み、前記推定性能特性は、前記受領確認番号の勾配に基づいた前記TCP接続のスループットを含
み、
前記動作は、前記サンプリングされた複数のパケットのために記録された前記受領確認番号を補間することによって、前記TCP接続からサンプリングされていないパケットのタイムスタンプを推定することをさらに含む、方法。
【請求項2】
前記動作は、前記サンプリングされた複数のパケットのうちの第1のパケットのために生成されたタイムスタンプと、前記サンプリングされた複数のパケットのうちの第2のパケットのために生成されたタイムスタンプとの間の差に基づいて、前記ミドルボックスと前記宛先エンドポイントとの間のトリップタイムを決定することをさらに含み、
前記第1のパケットは、第1のシーケンス番号を有し、
前記第2のパケットの前記受領確認番号は、前記第1のシーケンス番号と一致する、請求項1に記載の方法。
【請求項3】
前記サンプリングされていないパケットは、前記サンプリングされた複数のパケットのうちの第1のパケットの第1のシーケンス番号と一致する受領確認番号に関連付けられ、
前記動作は、前記第1のパケットのために生成された第1のタイムスタンプと前記サンプリングされていないパケットのために推定された前記タイムスタンプとの間の差に基づいて、前記ミドルボックスと前記宛先エンドポイントとの間のトリップタイムを決定することをさらに含む、請求項1に記載の方法。
【請求項4】
前記TCP接続の前記推定性能特性を生成することは、
前記ミドルボックスと前記宛先エンドポイントとの間のトリップタイムと、前記ミドルボックスと前記ソースエンドポイントとの間のトリップタイムとを合計することによって、前記ミドルボックスを介した前記ソースエンドポイントと前記宛先エンドポイントとの間のラウンドトリップタイムを計算することを含む、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記動作は、前記サンプリングされた複数のパケットのために記録されたシーケンス番号を補間することによって、前記TCP接続からサンプリングされていないパケットのタイムスタンプを推定することをさらに含む、請求項1に記載の方法。
【請求項6】
前記受領確認番号の前記傾向線の前記勾配を経時的に決定することは、
前記ミドルボックスを介して前記宛先エンドポイントから前記ソースエンドポイントに転送された前記サンプリングされた複数のパケットのために記録された前記受領確認番号に基づいて、前記受領確認番号の前記傾向線の前記勾配を決定することと、
前記受領確認番号の前記傾向線の前記勾配に基づいて、前記スループットを生成することとを含み、前記スループットは、前記ミドルボックスを介して、パケットを前記ソースエンドポイントから前記宛先エンドポイントに転送する速度に対応する、請求項1~
5のいずれか1項に記載の方法。
【請求項7】
前記受領確認番号の前記傾向線の前記勾配を経時的に決定することは、
前記ミドルボックスを介して前記ソースエンドポイントから前記宛先エンドポイントに転送された前記サンプリングされた複数のパケットのために記録された前記受領確認番号に基づいて、前記受領確認番号の前記傾向線の前記勾配を決定することと、
前記受領確認番号の前記傾向線の前記勾配に基づいて、前記スループットを生成することとを含み、前記スループットは、前記ミドルボックスを介して、パケットを前記宛先エンドポイントから前記ソースエンドポイントに転送する速度に対応する、請求項1~
5のいずれか1項に記載の方法。
【請求項8】
前記動作は、所定の時点において、
前記TCP接続を介して前記ソースエンドポイントから通信された第1のパケットを受信することを含み、前記第1のパケットは、第1のシーケンス番号と第1の受領確認番号とを含み、
前記TCP接続を介して前記宛先エンドポイントから通信された第2のパケットを受信することを含み、前記第2のパケットは、第2のシーケンス番号と第2の受領確認番号とを含み、
前記第1のパケットに関連付けられた前記第1のシーケンス番号と前記第2のパケットに関連付けられた前記第2の受領確認番号との間の差を決定することによって、前記ソースエンドポイントの前記TCP接続の前記推定性能特性のウィンドウサイズを推定することをさらに含む、請求項1~
7のいずれか1項に記載の方法。
【請求項9】
前記第2のパケットに関連付けられた前記第2のシーケンス番号と前記第1のパケットに関連付けられた前記第1の受領確認番号との間の差を決定することによって、前記宛先エンドポイントの前記TCP接続の前記推定性能特性の前記ウィンドウサイズを推定する、請求項
8に記載の方法。
【請求項10】
システムであって、
データ処理ハードウェアと、
前記データ処理ハードウェアと通信するメモリハードウェアとを備え、前記メモリハードウェアは、前記データ処理ハードウェア上で実行されると、前記データ処理ハードウェアに、以下の動作を実行させる命令を記憶し、
前記動作は、
所定の期間にわたってミドルボックスを介して通信するソースエンドポイントと宛先エンドポイントとの間のトランスポート制御プロトコル(TCP)接続から、複数のパケットをサンプリングすることと、
前記サンプリングされた複数のパケットの各パケットの受領確認番号を記録することと、
前記受領確認番号の傾向線の勾配を決定することと、
前記所定の期間にわたって前記ミドルボックスを介して通信する前記ソースエンドポイントと前記宛先エンドポイントとの間の前記TCP接続の推定性能特性を生成することとを含み、前記推定性能特性は、前記受領確認番号の勾配に基づいた前記TCP接続のスループットを含
み、
前記動作は、前記サンプリングされた複数のパケットのために記録された前記受領確認番号を補間することによって、前記TCP接続からサンプリングされていないパケットのタイムスタンプを推定することをさらに含む、システム。
【請求項11】
前記動作は、前記サンプリングされた複数のパケットのうちの第1のパケットのために生成されたタイムスタンプと、前記サンプリングされた複数のパケットのうちの第2のパケットのために生成されたタイムスタンプとの間の差に基づいて、前記ミドルボックスと前記宛先エンドポイントとの間のトリップタイムを決定することをさらに含み、
前記第1のパケットは、第1のシーケンス番号を有し、
前記第2のパケットの前記受領確認番号は、前記第1のシーケンス番号と一致する、請求項1
0に記載のシステム。
【請求項12】
前記サンプリングされていないパケットは、前記サンプリングされた複数のパケットのうちの第1のパケットの第1のシーケンス番号と一致する受領確認番号に関連付けられ、
前記動作は、前記第1のパケットのために生成された第1のタイムスタンプと前記サンプリングされていないパケットのために推定された前記タイムスタンプとの間の差に基づいて、前記ミドルボックスと前記宛先エンドポイントとの間のトリップタイムを決定することをさらに含む、請求項1
0に記載のシステム。
【請求項13】
前記TCP接続の前記推定性能特性を生成することは、
前記ミドルボックスと前記宛先エンドポイントとの間のトリップタイムと、前記ミドルボックスと前記ソースエンドポイントとの間のトリップタイムとを合計することによって、前記ミドルボックスを介した前記ソースエンドポイントと前記宛先エンドポイントとの間のラウンドトリップタイムを計算することを含む、請求項1
0~1
2のいずれか1項に記載のシステム。
【請求項14】
前記動作は、前記サンプリングされた複数のパケットのために記録されたシーケンス番号を補間することによって、前記TCP接続からサンプリングされていないパケットのタイムスタンプを推定することをさらに含む、請求項1
0に記載のシステム。
【請求項15】
前記受領確認番号の前記傾向線の前記勾配を経時的に決定することは、
前記ミドルボックスを介して前記宛先エンドポイントから前記ソースエンドポイントに転送された前記サンプリングされた複数のパケットのために記録された前記受領確認番号に基づいて、前記受領確認番号の前記傾向線の前記勾配を決定することと、
前記受領確認番号の前記傾向線の前記勾配に基づいて、前記スループットを生成することとを含み、前記スループットは、前記ミドルボックスを介して、パケットを前記ソースエンドポイントから前記宛先エンドポイントに転送する速度に対応する、請求項1
0~1
4のいずれか1項に記載のシステム。
【請求項16】
前記受領確認番号の前記傾向線の前記勾配を経時的に決定することは、
前記ミドルボックスを介して前記宛先エンドポイントから前記ソースエンドポイントに転送された前記サンプリングされた複数のパケットのために記録された前記受領確認番号に基づいて、前記受領確認番号の前記傾向線の前記勾配を決定することと、
前記受領確認番号の前記傾向線の前記勾配に基づいて、前記スループットを生成することとを含み、前記スループットは、前記ミドルボックスを介して、パケットを前記ソースエンドポイントから前記宛先エンドポイントに転送する速度に対応する、請求項1
0~1
4のいずれか1項に記載のシステム。
【請求項17】
前記動作は、所定の時点において、
前記TCP接続を介して前記ソースエンドポイントから通信された第1のパケットを受信することを含み、前記第1のパケットは、第1のシーケンス番号と第1の受領確認番号とを含み、
前記TCP接続を介して前記宛先エンドポイントから通信された第2のパケットを受信することを含み、前記第2のパケットは、第2のシーケンス番号と第2の受領確認番号とを含み、
前記第1のパケットに関連付けられた前記第1のシーケンス番号と前記第2のパケットに関連付けられた前記第2の受領確認番号との間の差を決定することによって、前記ソースエンドポイントの前記TCP接続の前記推定性能特性のウィンドウサイズを推定することをさらに含む、請求項1
0~1
6のいずれか1項に記載のシステム。
【請求項18】
前記第2のパケットに関連付けられた前記第2のシーケンス番号と前記第1のパケットに関連付けられた前記第1の受領確認番号との間の差を決定することによって、前記宛先エンドポイントの前記TCP接続の前記推定性能特性の前記ウィンドウサイズを推定する、請求項1
7に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、トランスポート制御プロトコルのトリップタイムの推定に関する。
【背景技術】
【0002】
背景
従来、ノード上で実行されるプロセスは、ノード(またはエンドポイント)間のトランスポート制御プロトコル(TCP)接続の性能を理解するのに役立ち得る。例えば、システムは、ノードがパケットを送信した開始時間と、ノードが受領確認を受信した受領確認時間とを測定することによって、パケットのラウンドトリップタイム(RTT)を取得するように配置されてもよい。しかし、ミドルボックスを使用することによって、より多くの従来のエンドポイントの間に実装される中間ノードが増加するので、TCP接続最適化を促進するために、エンドポイントでのTCP性能の測定は、新しい性能測定技法を考慮しなければならない。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
本開示の一態様は、トランスポート制御プロトコルの性能特性を推定するための方法を提供する。方法は、ミドルボックスのデータ処理ハードウェアが、所定の期間にわたってミドルボックスを介して通信するソースエンドポイントと宛先エンドポイントとの間のトランスポート制御プロトコル(TCP)接続から、複数のパケットを間引いてサンプリングすることを含む。サンプリングされた複数のパケットの各パケットに対して、方法は、データ処理ハードウェアが、当該パケットをサンプリングするときのタイムスタンプを生成することと、データ処理ハードウェアが、当該パケットのシーケンス番号および受領確認番号を記録することとを含む。また、方法は、データ処理ハードウェアが、サンプリングされた複数のパケットのうちの1つ以上のパケットに対応するタイムスタンプ、シーケンス番号、または受領確認番号のうちの少なくとも2つに基づいて、所定の期間にわたってミドルボックスを介して通信するソースエンドポイントと宛先エンドポイントとの間のTCP接続の推定性能特性を生成することをさらに含む。
【0004】
いくつかの実装形態において、方法は、データ処理ハードウェアが、ミドルボックスと宛先エンドポイントとの間で転送されたサンプリングされた複数のパケットのうちの第1のパケットに記録された第1のシーケンス番号を特定することを含む。また、方法は、データ処理ハードウェアが、第1のパケットに記録された第1のシーケンス番号が宛先エンドポイントとミドルボックスとの間で転送されたサンプリングされた複数のパケットに記録された受領確認番号のいずれかと一致するか否かを判定することを含む。この実装形態において、第1のシーケンス番号がサンプリングされた複数のパケットのうちの第2のパケットに記録された受領確認番号と一致する場合、方法は、データ処理ハードウェアが、第1のパケットに対して生成されたタイムスタンプと第2のパケットに対して生成されたタイムスタンプとの間の差に基づいて、ミドルボックスと宛先エンドポイントとの間の第1のトリップタイムを決定することを含む。この実装形態において、第1のシーケンス番号がサンプリングされた複数のパケットに記録された受領確認番号のいずれにも一致しない場合、方法は、データ処理ハードウェアが、サンプリングされた複数のパケットに記録された受領確認番号を補間することによって、TCP接続から第1のサンプリングされていないパケットのタイムスタンプを推定することを含み、第1のサンプリングされていないパケットは、第1のシーケンス番号と一致する受領確認番号に関連付けられる。この実
装形態は、データ処理ハードウェアが、生成された第1のパケットの第1のタイムスタンプと第1のサンプリングされていないパケットに対して推定されたタイムスタンプとの間の差に基づいて、ミドルボックスと宛先エンドポイントとの間の第1のトリップタイムを決定することをさらに含む。
【0005】
いくつかの例において、方法は、データ処理ハードウェアが、サンプリングされた複数のパケットのうちの第3のパケットに記録された第2のシーケンス番号を特定することを含み、第3のパケットは、ミドルボックスとソースエンドポイントとの間で転送される。また、方法は、データ処理ハードウェアが、第3のパケットに記録された第2のシーケンス番号がソースエンドポイントとミドルボックスとの間で転送されたサンプリングされた複数のパケットに記録された受領確認番号のいずれかと一致するか否かを判定することを含む。この例において、第2のシーケンス番号がサンプリングされた複数のパケットのうちの第4のパケットに記録された受領確認番号と一致する場合、方法は、データ処理ハードウェアが、第3のパケットに対して生成されたタイムスタンプと第4のパケットに対して生成されたタイムスタンプとの間の差に基づいて、ミドルボックスとソースエンドポイントとの間の第2のトリップタイムを決定することを含む。この例において、第2のシーケンス番号がサンプリングされた複数のパケットに記録された受領確認番号のいずれにも一致しない場合、方法は、データ処理ハードウェアが、サンプリングされた複数のパケットに記録された受領確認番号を補間することによって、TCP接続から第2のサンプリングされていないパケットのタイムスタンプを推定し、第2のサンプリングされていないパケットは、第2のシーケンス番号と一致する受領確認番号に関連付けられ、データ処理ハードウェアが、第3のパケットに対して生成された第3のタイムスタンプと第2のサンプリングされていないパケットに対して推定されたタイムスタンプとの間の差に基づいて、ミドルボックスとソースエンドポイントとの間の第2のトリップタイムを決定することをさらに含む。TCP接続の推定性能特性を生成することは、ミドルボックスと宛先エンドポイントとの間の第1のトリップタイムおよびミドルボックスとソースエンドポイントとの間の第2のトリップタイムを合計することによって、ミドルボックスを介して通信するソースエンドポイントと宛先エンドポイントとの間のラウンドトリップタイムを計算することを含む。
【0006】
他の構成において、方法は、サンプリングされた複数のパケットに記録された受領確認番号を補間することによって、TCP接続からサンプリングされていないパケットのタイムスタンプを推定することを含む。また、方法は、サンプリングされた複数のパケットに記録されたシーケンス番号を補間することによって、TCP接続からサンプリングされていないパケットのタイムスタンプを推定することを含んでもよい。
【0007】
いくつかの実装形態において、TCP接続の推定性能特性を生成することは、データ処理ハードウェアが、ミドルボックスを介して宛先エンドポイントからソースエンドポイントに転送されたサンプリングされた複数のパケットに記録された受領確認番号に基づいて、所定の期間にわたる受領確認番号の勾配を決定することと、受領確認番号の勾配に基づいて、スループットを生成することとを含み、スループットは、ミドルボックスを介してソースエンドポイントから宛先エンドポイントにパケットを転送する速度に対応する。他の実装形態において、TCP接続の推定性能特性を生成することは、ミドルボックスを介してソースエンドポイントから宛先エンドポイントに転送されたサンプリングされた複数のパケットに記録された受領確認番号に基づいて、受領確認番号の経時的な勾配を決定することと、受領確認番号の勾配に基づいて、スループットを生成することとを含み、スループットは、ミドルボックスを介して宛先エンドポイントからソースエンドポイントにパケットを転送する速度に対応する。
【0008】
いくつかの例において、方法は、特定の時点において、データ処理ハードウェアが、T
CP接続を介してソースエンドポイントから通信された第1のパケットを受信することを含み、第1のパケットは、第1のシーケンス番号および第1の受領確認番号を含み、データ処理ハードウェアが、TCP接続を介して宛先エンドポイントから通信された第2のパケットを受信ことを含み、第2のパケットは、第2のシーケンス番号および第2の受領確認番号を含む。また、方法は、データ処理ハードウェアが、第1のパケットに関連付けられた第1のシーケンス番号と第2のパケットに関連付けられた第2の受領確認番号との間の差を決定することによって、ソースエンドポイントのウィンドウサイズを推定することをさらに含む。これらの例において、方法は、データ処理ハードウェアが、第2のパケットに関連付けられた第2のシーケンス番号と第1のパケットに関連付けられた第1の受領確認番号との間の差を決定することによって、宛先エンドポイントのウィンドウサイズを推定することをさらに含んでもよい。
【0009】
いくつかの実装形態において、複数のパケットを間引いてサンプリングすることは、ソースエンドポイントと宛先エンドポイントとの間のTCP接続から、全てのパケットよりも少ないパケットをサンプリングすることを含む。複数のパケットを間引いてサンプリングすることは、ステートレス且つ系統的な方法で、TCP接続からパケットを均一にサンプリングすることを含んでもよい。ソースエンドポイントは、リモート分散ネットワークと通信するユーザ機器(UE)であってもよく、宛先エンドポイントは、リモート分散ネットワークと通信するサーバに対応する。
【0010】
本開示の別の態様は、トランスポート制御プロトコルの性能特性を推定するためのシステムを提供する。システムは、データ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアとを含む。メモリハードウェアは、データ処理ハードウェア上で実行されると、データ処理ハードウェアに以下の動作を実行させる命令を記憶する。動作は、ミドルボックスにおいて、所定の期間にわたってミドルボックスを介して通信するソースエンドポイントと宛先エンドポイントとの間のトランスポート制御プロトコル(TCP)接続から、複数のパケットを間引いてサンプリングするを含む。動作は、サンプリングされた複数のパケットの各パケットに対して、当該パケットをサンプリングするときのタイムスタンプを生成することと、当該パケットのシーケンス番号および受領確認番号を記録することを含む。動作は、サンプリングされた複数のパケットのうちの1つ以上のパケットに対応するタイムスタンプ、シーケンス番号、または受領確認番号のうちの少なくとも2つに基づいて、所定の期間にわたってミドルボックスを介して通信するソースエンドポイントと宛先エンドポイントとの間のTCP接続の推定性能特性を生成することをさらに含む。
【0011】
いくつかの実装形態において、動作は、ミドルボックスと宛先エンドポイントとの間で転送されたサンプリングされた複数のパケットのうちの第1のパケットに記録された第1のシーケンス番号を特定することを含む。また、動作は、第1のパケットに記録された第1のシーケンス番号が宛先エンドポイントとミドルボックスとの間で転送されたサンプリングされた複数のパケットに記録された受領確認番号のいずれかと一致するか否かを判定することを含む。この実装形態において、第1のシーケンス番号がサンプリングされた複数のパケットのうちの第2のパケットに記録された受領確認番号と一致する場合、動作は、第1のパケットに対して生成されたタイムスタンプと第2のパケットに対して生成されたタイムスタンプとの間の差に基づいて、ミドルボックスと宛先エンドポイントとの間の第1のトリップタイムを決定することを含む。この実装形態において、第1のシーケンス番号がサンプリングされた複数のパケットに記録された受領確認番号のいずれにも一致しない場合、動作は、サンプリングされた複数のパケットに記録された受領確認番号を補間することによって、TCP接続から第1のサンプリングされていないパケットのタイムスタンプを推定し、第1のサンプリングされていないパケットは、第1のシーケンス番号と一致する受領確認番号に関連付けられる。この実装形態において、動作は、生成された第
1のパケットの第1のタイムスタンプと第1のサンプリングされていないパケットに対して推定されたタイムスタンプとの間の差に基づいて、ミドルボックスと宛先エンドポイントとの間の第1のトリップタイムを決定することとをさらに含む。
【0012】
いくつかの例において、動作は、サンプリングされた複数のパケットのうちの第3のパケットに記録された第2のシーケンス番号を特定することを含み、第3のパケットは、ミドルボックスとソースエンドポイントとの間で転送される。また、動作は、第3のパケットに記録された第2のシーケンス番号がソースエンドポイントとミドルボックスとの間で転送されたサンプリングされた複数のパケットに記録された受領確認番号のいずれかと一致するか否かを判定することを含む。この例において、第2のシーケンス番号がサンプリングされた複数のパケットのうちの第4のパケットに記録された受領確認番号と一致する場合、動作は、第3のパケットに対して生成されたタイムスタンプと第4のパケットのタイムスタンプとの間の差に基づいて、ミドルボックスとソースエンドポイントとの間の第2のトリップタイムを決定することを含む。この例において、第2のシーケンス番号がサンプリングされた複数のパケットに記録された受領確認番号のいずれにも一致しない場合、動作は、サンプリングされた複数のパケットに記録された受領確認番号を補間することによって、TCP接続から第2のサンプリングされていないパケットのタイムスタンプを推定し、第2のサンプリングされていないパケットは、第2のシーケンス番号と一致する受領確認番号に関連付けられ、第3のパケットに対して生成された第3のタイムスタンプと第2のサンプリングされていないパケットに対して推定されたタイムスタンプとの間の差に基づいて、ミドルボックスとソースエンドポイントとの間の第2のトリップタイムを決定することを含む。TCP接続の推定性能特性を生成することは、ミドルボックスと宛先エンドポイントとの間の第1のトリップタイムおよびミドルボックスとソースエンドポイントとの間の第2のトリップタイムを合計することによって、ミドルボックスを介して通信するソースエンドポイントと宛先エンドポイントとの間のラウンドトリップタイムを計算することを含んでもよい。
【0013】
他の構成において、動作は、サンプリングされた複数のパケットに記録された受領確認番号を補間することによって、記録されていない受領確認番号の時間を推定することを含む。動作は、サンプリングされた複数のパケットに記録されたシーケンス番号を補間することによって、記録されていないシーケンス番号の時間を推定することを含んでもよい。
【0014】
いくつかの実装形態において、TCP接続の推定性能特性を生成することは、ミドルボックスを介して宛先エンドポイントからソースエンドポイントに転送されたサンプリングされた複数のパケットに記録された受領確認番号に基づいて、所定の期間にわたる受領確認番号の勾配を決定することと、受領確認番号の勾配に基づいて、スループットを生成することとを含み、スループットは、ミドルボックスを介してソースエンドポイントから宛先エンドポイントにパケットを転送する速度に対応する。他の実装形態において、TCP接続の推定性能特性を生成することは、ミドルボックスを介してソースエンドポイントから宛先エンドポイントに転送されたサンプリングされた複数のパケットに記録された受領確認番号に基づいて、受領確認番号の経時的な勾配を決定することと、受領確認番号の勾配に基づいて、スループットを生成することとを含み、スループットは、ミドルボックスを介して宛先エンドポイントからソースエンドポイントにパケットを転送する速度に対応する。
【0015】
いくつかの例において、動作は、特定の時点において、TCP接続を介してソースエンドポイントから通信された第1のパケットを受信することを含み、第1のパケットは、第1のシーケンス番号および第1の受領確認番号を含み、TCP接続を介して宛先エンドポイントから通信された第2のパケットを受信ことを含み、第2のパケットは、第2のシーケンス番号および第2の受領確認番号を含みを含む。また、動作は、第1のパケットに関
連付けられた第1のシーケンス番号と第2のパケットに関連付けられた第2の受領確認番号との間の差を決定することによって、ソースエンドポイントのウィンドウサイズを推定することを含む。これらの例において、動作は、第2のパケットに関連付けられた第2のシーケンス番号と第1のパケットに関連付けられた第1の受領確認番号との間の差を決定することによって、宛先エンドポイントのウィンドウサイズを推定することをさらに含んでもよい。
【0016】
いくつかの実装形態において、複数のパケットを間引いてサンプリングすることは、ソースエンドポイントと宛先エンドポイントとの間のTCP接続から、全てのパケットよりも少ないパケットをサンプリングすることを含む。追加的にまたは代替的に、複数のパケットを間引いてサンプリングすることは、ステートレス且つ系統的な方法で、TCP接続からパケットを均一にサンプリングすることを含んでもよい。ソースエンドポイントは、リモート分散ネットワークと通信するユーザ機器(UE)であってもよく、宛先エンドポイントは、リモート分散ネットワークと通信するサーバに対応する。
【0017】
本開示の別の態様は、トランスポート制御プロトコルのトリップタイムを推定するための方法を提供する。方法は、ミドルボックスのデータ処理ハードウェアが、所定の期間にわたってミドルボックスを介して通信するエンドポイント間のトランスポート制御プロトコル(TCP)接続から、複数のパケットを間引いてサンプリングすることを含む。サンプリングされた複数のパケットの各パケットに対して、方法は、データ処理ハードウェアが、当該パケットをサンプリングするときのタイムスタンプを生成することを含む。方法は、データ処理ハードウェアが、ミドルボックスと対応するエンドポイントとの間で転送されたサンプリングされた複数のパケットのうちの第1のサンプリングされたパケットの第1のシーケンス番号がサンプリングされた複数のパケットの受領確認番号のいずれにも合致しないと判定することを含む。また、方法は、データ処理ハードウェアが、サンプリングされた複数のパケットの複数の受領確認番号を補間することによって、第1のシーケンス番号と一致する受領確認番号の時間を推定することを含む。さらに、方法は、データ処理ハードウェアが、第1のパケットに関連付けられた第1のタイムスタンプと推定された時間との間の差に基づいて、ミドルボックスと対応するエンドポイントとの間のトリップタイムを決定することを含む。
【0018】
この態様は、以下の選択的な特徴のうちの1つ以上を含むことができる。いくつかの例において、複数のパケットを間引いてサンプリングすることは、ミドルボックスを介して通信するエンドポイント間のTCP接続から、全てのパケットよりも少ないパケットをサンプリングすることを含む。必要に応じて、ステートレス且つ系統的な方法で、TCP接続からパケットを均一にサンプリングすることを含むことができる。エンドポイントは、リモート分散ネットワークと通信するユーザ機器(UE)をソースエンドポイントとして含んでもよく、リモート分散ネットワークと通信するサーバを宛先エンドポイントとしてを含んでもよい。
【0019】
本開示の1つ以上の実装形態の詳細は、添付の図面および以下の説明に記載されている。他の態様、特徴、および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0020】
【
図1A】トランスポート制御プロトコル(TCP)接続を実装する例示的な通信ネットワークを示す概略図である。
【
図1B】トランスポート制御プロトコル(TCP)接続を実装する例示的な通信ネットワークを示す概略図である。
【
図1C】トランスポート制御プロトコル(TCP)接続を実装する例示的な通信ネットワークを示す概略図である。
【
図1D】通信ネットワークのエンドポイント間の例示的なTCP接続を示す概略図である。
【
図2A】通信ネットワークのミドルボックスの例示的な性能評価装置を示す概略図である。
【
図2B】通信ネットワークのミドルボックスの例示的な性能評価装置を示す概略図である。
【
図2C】通信ネットワークのミドルボックスの例示的な性能評価装置を示す概略図である。
【
図2D】通信ネットワークのミドルボックスの例示的な性能評価装置を示す概略図である。
【
図2E】通信ネットワークのミドルボックスの例示的な性能評価装置を示す概略図である。
【
図3】TCP性能を推定する方法の動作の例示的な構成を示すフローチャートである。
【
図4】TCP性能を推定する方法の動作の例示的な構成を示フローチャートである。
【
図5】仮想ネットワーク機能を移行するシステムおよび方法を実装するために使用される例示的なコンピューティング装置を示す概略図である。
【発明を実施するための形態】
【0021】
詳細な説明
様々な図面において、同様の参照符号は、同様の要素を示す。
【0022】
トランスポート制御プロトコル/インターネットプロトコル(TCP/IP)スイートは、主にネットワーク通信に使用される。TCP/IPプロトコルスイートは、当初はエンドツーエンド通信に基づいて設計されたものである。例えば、ユーザなどのソースエンドポイントは、サーバなどの宛先エンドポイントと通信する。このエンドツーエンド設計は、一般的に、2つの別個のネットワーク間で通信するように構成されたゲートウェイノード(すなわち、ルータ)が、データパケットのTCP/IPパケットストリームを(例えば、直接にまたは中継宛先間のホップを介して)宛先エンドポイントに転送すると仮定する。この仮定に基づいて、ルータは、パケットの送信中に、(例えば、ヘッダまたはペイロードを修正することによって)パケットを修正する必要がない。しかしながら、現在では、ネットワーク通信の発達につれて、ネットワーク内で接続されているノードおよび/またはネットワーク間で接続されているノードは、より複雑になっている。換言すれば、ネットワークは、パケットをルーティングする機能以外のネットワーク機能(すなわち、ネットワークサービス)を実行するように、ハードウェアおよび/またはソフトウェアをノードとしてネットワーク環境に配置する。例えば、これらのネットワーク機能は、ネットワーク保護用ファイアウォール、ネットワークアドレス変換(NAT)、負荷分散、および仮想プライベートネットワーク(VPN)トンネリングなどを含む。これらのネットワーク機能を実行するために、ネットワーク管理者および/またはネットワークプロバイダは、ミドルボックスを実装している。
【0023】
残念ながら、ミドルボックスは、TCPを用いて(すなわち、TCP接続を介して)パケットを伝送する汎用エンドツーエンド設計を妨害する可能性がある。例えば、一部のミドルボックスは、ネットワーク機能を実行するためにパケットを検査および/または修正するように構成されている。また、ミドルボックスは、しばしば、ミドルボックスを介して多重化された多くのTCP接続からパケットを受信し、典型的にはインターネットプロトコル(IP)層上で動作する。ミドルボックスは、IP層上で動作するため、フローの開始マーカまたは終了マーカもしくは確認などのTCPフローマーカを使用しない。換言
すれば、ミドルボックスの動作は、TCPフロー(例えば、エンドツーエンドTCP接続)と同じまたは同様のパケットフロー性能を示すインジケータを提供することができない。パケットフロー性能を示すインジケータがない場合、ネットワーク管理者またはネットワークサービスプロバイダは、ネットワーク通信を評価および/または改善することが困難である。
【0024】
TCP接続の接続特性(ラウンドトリップタイム、スループット、ウィンドウサイズなど)を決定することは、ネットワーク環境における通信を構成、改善、および/または最適化することを支援することに重要且つ有用である。換言すれば、TCP接続の性能は、エンティティがどのように効果的に相互通信しているかおよびTCP接続を介して特定のサービスを実際に提供している(例えば、目標品質レベルでオーディオ/ビデオをストリーミングしている)か否かに影響を与えることができる。いくつかのシナリオにおいて、接続特性は、TCP接続の一方または両方のエンド(すなわち、一方または両方のフローエンドポイント、例えば、ソースエンドポイントおよび宛先エンドポイント)において決定または推定される。しかしながら、これは、しばしば、カスタムメイドの機能を必要とする。エンドポイントが最小限の処理機能を有する場合、このようなフローエンドポイントにカスタムメイド機能を与えることはできない可能性がある。例えば、一部のIOT(Internet of Things)装置(例えば、家庭用電化製品など)は、低電力または低処理能力を有する。いくつかの例において、接続(例えば、ミドルボックスを介して通信する2つのエンドポイント間の接続)の性能を決定および/または推定することは、接続自体にさらなる負担をかける。換言すれば、システムが接続に悪影響を及ぼすことなく接続特性を決定することが重要である。そうでなければ、決定/推定された接続特性は、達成されるべき実際の接続特性を示さなくなるまたは精確に測定できなくなる(それによって、システム構成を正確に示すことができなくなる)と共に、システムが接続特性を決定するときに接続に負担をかけるため、スループットを低減させ、および/または通信に関与する全ての当事者に不利益を引き起こす可能性がある。
【0025】
これらの問題に対処するために、本開示の実装形態は、接続自体および接続に関与するエンティティに与える影響を最小限に抑えるように、TCP接続に関連付けられたミドルボックスにおいて、TCP接続特性またはTCP接続特性の推定値を生成するシステムを提供する。また、ミドルボックスが推定値を生成するためにTCPパケット/セグメント(例えば、TCP接続を介して通信されるTCPパケット/セグメントの小部分)のみをサンプリングするため、ミドルボックスに与える処理オーバーヘッドが比較的小さく、TCP接続の性能に与える影響が最小限(または目立たない)である。したがって、ミドルボックスによって管理される他のネットワーク接続の性能は、影響されない。
【0026】
図1Aおよび1Bを参照して、いくつかの実装形態において、ネットワーキング環境100は、緩く結合されたコンピューティングリソース110、110a~nを含む分散システム(例えば、クラウド環境などのリモートネットワーク)である。コンピューティングリソース110は、サーバ110と呼ばれてもよい。これらのコンピューティングリソース110は、1つ以上のクライアント120、120a~nがアクセス可能なデータ処理ハードウェア112(例えば、
図1Bおよび1Cに示された1つ以上の中央処理装置(CPU))および/またはメモリハードウェア114(例えば、
図1Bおよび1Cに示されたフラッシュメモリ、ランダムアクセスメモリ(RAM)、相変化メモリ(PCM)、および/またディスク)を含むことができる。例えば、コンピューティングリソース110は、複数のサーバとして示されている。クライアント120は、ネットワーク130を介して、物理ネットワーク層102上にホストされたコンピューティングリソース110と通信することができる。例えば、クライアント120およびサーバ110は、物理ネットワークのエンドポイントを形成する一群のマシン(例えば、ホスト)を表す。
【0027】
ネットワーク130は、プライベートネットワークおよび企業ネットワークからパブリックネットワークに及ぶ多くの異なる種類のネットワークを含む。いくつかのより具体的な例として、ネットワークは、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、ストレージ/システムエリアネットワーク(SAN)、パッシブ光ネットワーク(PON)、企業プライベートネットワーク(EPN)、仮想プライベートネットワーク(VPN)、無線アクセスネットワーク(RAN)、パケットコアネットワークなどを含む。いくつかの構成において、クライアント120およびエンドホスト(すなわち、コンピューティングリソース110のホスト)は、(ネットワークインターフェイスカード、ネットワークアダプタ、またはLANアダプタとしても知られている)ネットワークインターフェイスコントローラ(NIC)などのハードウェアを介して、または光ネットワークの場合に同期トランスポートモジュール(STM)を介して、ネットワーク130にアクセス(すなわち、接続)することができる。例えば、
図1Aは、少なくとも1つのNIC122、122a~nを含む各クライアント120と、少なくとも1つのNIC116、116a~nを含む各サーバ110とを示す。
【0028】
図1Aを参照して、いくつかの例において、ネットワーク130は、物理ネットワーク層102と、仮想ネットワーク層104とを含む。仮想ネットワーク層104は、物理ネットワーク層102上にオーバーレイされ、それ自体のインターネットプロトコル(IP)アドレス空間を有する仮想ネットワーク(オーバーレイネットワークとしても知られる)を形成することができる。仮想ネットワーク層104によって、(例えば、ネットワーク管理者が)ハードウェア設備(例えば、専有ハードウェア設備)からネットワーク機能を分離するように、ネットワーク130を管理、設計および/または配置することができる。換言すれば、仮想ネットワーク層104は、仮想ネットワーク機能(ネットワーク機能仮想化とも呼ばれる)を可能にする。これによって、ソフトウェアでネットワークサービスを提供することができ、専用ハードウェアを含む従来のネットワークよりも多くの適応性および拡張性を可能にする。例えば、仮想ネットワークのソフトウェア定義ネットワーキング(SDN)は、ネットワークハードウェアから制御プレーンを除去して、ソフトウェアで制御プレーンを実装する。いくつかの実装形態において、ネットワーク130の仮想ネットワーク層104は、ソフトウェアを用いて一部のネットワーク機能を仮想的に実行すると共に、専用ハードウェアを用いて他のネットワーク機能を実行するというハイブリッド仮想化手法でネットワーク機能を実行する。仮想および/またはハイブリッド手法は、ネットワーク空間、電力、サイズ、拡張性、配置時間、および/または修理および保守に関する柔軟性および/または最適化を、ネットワークプロバイダまたはネットワーク管理者に与えることができる。例えば、仮想ネットワーク層104は、ネットワークサービスを中断することなく、物理ネットワーク層102に対する基本的な変更を可能にするように動的に構成される。
【0029】
仮想ネットワーク層104は、様々なネットワーク機能を実行するように構成されてもよく、および/または物理ネットワークの従来のネットワーク機能をミラーリングするように構成されてもよい。いくつかの例として、ネットワーク機能は、ルーティング、ネットワークアドレス変換(NAT)、負荷分散(LB)、セキュリティ(例えば、ファイアウォールおよび侵入検出/防止システム)、プロトコル変換、ワイドエリアネットワーク最適化、プロキシ、およびキャッシングなどを含む。換言すれば、仮想ネットワーク機能は、ネットワーク130内の任意のデータプレーン処理または制御プレーン機能に適用可能である。また、
図1Aは、物理ネットワーク層102および仮想ネットワーク層104を点線で示している。これは、これらの層102、104の一部かまたは全ての機能が物理的および/または仮想的であり得ることを意味する。例えば、図示された仮想ネットワーク層104内の構成要素、例えば、クライアント仮想マシン140、ミドルボックス160、および/またはバックエンド仮想マシン150は、仮想ネットワーク層104上で
動作するのではなく、専用の物理ハードウェア(すなわち、物理層)として実装されてもよい。ネットワーク130および/またはネットワーク130によって提供されたサービスに応じて、異なる種類の物理層および仮想層構成は、様々な利点を有する。
【0030】
引き続き
図1Aおよび1Bを参照して、ネットワーク環境100は、様々なエンドポイントを含む。これらのエンドポイントは、(例えば、物理ネットワーク層102上に配置された)物理エンドポイントであってもよく、または(例えば、仮想ネットワーク層104上に配置された)仮想エンドポイントであってもよい。例えば、
図1A~1Cに示されたように、クライアント110および/またはサーバ120は、ネットワークアドレスを介して相互に通信する物理エンドポイントであってもよい。換言すれば、クライアント110は、ソースエンドポイントであってもよく、サーバ120は、宛先エンドポイントであってもよい(またはその逆)。パケットの形にしたデータ170(データパケット170またはパケット170とも呼ばれる)は、割り当てられたネットワークアドレスに基づいて、エンドポイント間で通信されてもよい。
【0031】
いくつかの例において、ネットワーク環境100は、仮想ネットワークエンドポイントを含む。
図1Aは、仮想ネットワークエンドポイントを、クライアント仮想マシン(クライアントVM)140、140a~nおよびバックエンド仮想マシン(バックエンドVM)150、150a~nなどの仮想マシン(VM)として示す。一般的に、仮想マシン(VM)は、対応するホストコンピュータシステムの基礎オペレーティングシステムを妨害せず、ホストコンピュータシステムの機能をユーザに与えることを可能にする1つ以上のホストコンピュータシステムのエミュレーションまたはイメージを指す。VMは、1つ以上のホスト環境において専用タスクを実行するために作成されてもよい。いくつかの例において、仮想ネットワーク層104によって、ホストコンピュータシステムにおいて複数のVMを同時に作成することができる。複数のVMが同時に動作することを可能にするために、多くの場合、VMは、サンドボックスの形で、ホストコンピュータシステムの重要なオペレーティングシステムリソースから分離される。VMは、バックエンドVM150を介して物理ネットワーク層102の1つ以上のコンピューティングリソース110にマッピング(例えば、アクセス)するように設計できるため、仮想ネットワーク層104にとって有利である。例えば、1つ以上のクライアントVM140を1つ以上のバックエンドVM150にマッピングすることができる。各バックエンドVM150は、物理ネットワーク層102(例えば、分散システム)のコンピューティングリソース110に関連付けられたVMである。特定のコンピューティングリソース110にマッピングすることによって、クライアントVM140は、バックエンドVM150と共に、特定のネットワークサービス(例えば、ネットワークアプリケーション)のために設計されてもよい。いくつかの構成において、バックエンドVM150は、ホストベースのVMとして動作し、そのデータは、物理ネットワーク層102のサーバに格納され、様々なリモートクライアント120によって利用されてもよく、または様々なリモートクライアント120に割り当てられてもよい。例えば、VMを含む仮想ネットワーク層104は、中央管理ネットワーク構造を可能にする。一般的にVMに関してネットワーク仮想化を説明したが、(例えば、仮想ネットワーク層104を用いた)ネットワーク仮想化は、仮想プライベートネットワーク(VPN)、ベアメタルサーバ、プロキシなどを含む他の種類のネットワークエンドポイントを接続するように一般化されてもよい。例えば、ネットワーキング環境100は、VPNゲートウェイを、顧客の施設からの要求を転送するクライアントとしてサポートする。したがって、いくつかの例において、VMは、より一般的には、他の種類のネットワーク接続に対応するためのネットワークエンドポイントである。
【0032】
いくつかの実装形態において、ネットワーク機能を実行するために、ネットワーク環境100は、少なくとも1つのミドルボックス160を含む。
図1Aに示されたように、ミドルボックス160は、データ処理ハードウェア502と、動作を実行する(例えば、図
3および4の方法300、400を実行する)ためにデータ処理ハードウェア502上で実行可能な命令を記憶するためのメモリハードウェア504とを含んでもよい。ミドルボックス160は、(例えば、
図1Aに示された)ネットワーク機能を実行するように構成された物理ハードウェア(例えば、物理ネットワーク層102上の専用機器)またはソフトウェアであってもよい。一般的に、ミドルボックス160は、ソースエンドポイント/ホスト(例えば、クライアントVM140を介したクライアント)と宛先エンドポイント/ホスト(例えば、バックエンドVM150を介した物理ネットワーク層102のサーバ)との間のデータグラム経路上のインターネットプロトコル(IP)ルータの通常機能または標準機能以外の機能を実行するための中間装置を指す。換言すれば、ミドルボックス160は、通常、パケットルーティング(例えば、ネットワークアドレス変換(NAT)、ネットワークアドレスポート変換(NAPT)、負荷分散(LB)、ファイアウォール、侵入検出/防止システム、プロトコル変換、およびプロキシ)以外のネットワーク機能を担当する。ミドルボックス160は、典型的にはルーティング以外のネットワーク機能を担当するが、ルーティングを処理する装置の一部であってもよい。これによって、ネットワーキング環境100は、ルーティング機能およびミドルボックス機能の両方をサポートする単一の装置を含む。
【0033】
ネットワーキング環境100において、ミドルボックス160は、ネットワーク機能を実行するために1つ以上のクライアント120からネットワークフローを受信する。ミドルボックス160とのネットワーク接続は、クライアント120からの接続要求に基づいて確立されてもよい。換言すれば、クライアント120とバックエンド(すなわち、サーバ110)とは、接続を協議することができる。その結果、ミドルボックス160は、中間に配置され、接続に属するパケットを処理し、必要に応じてパケットを修正する。ミドルボックス160との接続が確立される(すなわち、クライアントVM140とバックエンドVM150との間に仮想接続が形成される)と、ミドルボックス160は、構成されたミドルボックス160のネットワーク機能に基づいて、ネットワークトラフィック(例えば、データパケット170)を受信する。
【0034】
いくつかの例において、ミドルボックス160は、クライアント120とバックエンド(例えば、バックエンドVM)との間のパケットに対してNATまたはNAPTを実行する。NAPTの場合、ミドルボックス160は、各接続および各接続に割り当てられたポートマッピングを追跡する。他の例において、ミドルボックス160は、クライアント120とバックエンドとの間でパケットを転送すると共に、接続に属する将来のパケットを同じバックエンドに送信し続けることを保証するように接続を潜在的に追跡するレイヤ4ロードバランサミドルボックスである。代替的には、ミドルボックス160は、クライアント120がミドルボックス160と共に伝送制御プロトコル(TCP)を確立し、ミドルボックス160が(すなわち、クライアント120を代理する)バックエンドと共に別個の接続を確立するレイヤ7(すなわち、アプリケーションレイヤ)ロードバランサであってもよい。レイヤ7ロードバランサの場合、トランスポートプロトコル状態(例えば、TCPシーケンス番号およびウィンドウサイズ)は、ミドルボックス160から各々のエンドホストに転送される。
【0035】
前述したように、いくつかの実装において、仮想ネットワーク層104などのオーバーレイネットワークは、ミドルボックス機能を実行する必要がない。例えば、物理イーサネット(登録商標)ネットワークなどのネットワークにおいて、エンドホスト上で実行されるソフトウェアは、宛先メディアアクセス制御(MAC)アドレスを、ミドルボックス160に対応するMACアドレスに設定することによって、接続をミドルボックス160に案内することができる。この場合、接続の負荷を分散するために、ホストは、MACアドレスを宛先のアドレス(または宛先に到達するための適切なゲートウェイのアドレス)に設定する。換言すれば、ミドルボックス160は、VMではなく、物理マシンと通信する
ことができる。例えば、負荷分散の場合、クライアント120およびサーバ110は、仮想ネットワーク層104上のVMである必要がなく、むしろ物理マシン間の接続である。
【0036】
ミドルボックス160は、しばしばステートフルネットワーク機能を実行するという点で、ルータとは異なる。より具体的には、ステートフルネットワーク機能は、ネットワーク機能に関連するネットワーク接続の動作状態および/または特性を追跡するネットワーク機能を指す。例えば、ミドルボックス160は、接続を認識し、パケットコンテキストを検査し(例えば、ペイロードを定期的に検査し)、および/または新しい接続を既存の接続に関連付けるように、接続を追跡する。ステートフル機能を実行することによって、ミドルボックス160は、クライアント120またはVMの以前のセッションに関連付けられた接続イベントまたは接続データを特定および/または呼び出すためのより高いデータ粒度を含む。これらのステートフル機能は、ネットワークサービスの安定化を支援することができるセキュリティおよび性能を層102および層104に与えることができる。
【0037】
図1Bを参照して、いくつかの実装形態において、ネットワーク環境100は、互いに通信する2種類以上のネットワーク130、130a~cを含む。
図1Bにおいて、クライアント120は、RAN130、130aに関連付けられたユーザ機器(UE)として示されている。RAN130aは、基地局(例えば、進化型ノードB(eNB))と通信する3つのUE120a~cを含む。この例において、eNBは、インターフェイスを介して、ミドルボックス160を含む進化型パケットコア(EPC)ネットワーク130、130bに接続する。同様に、EPC130bは、リモートネットワーク130、130c(例えば、分散システムまたはクラウド環境)などの外部ネットワークと通信することができる。リモートネットワーク130cは、ネットワーク130a~cを介してクライアント120a~cとの間でデータのパケット170を通信し、パケット170を記憶するように構成されたサーバ110a~nを含む。
【0038】
図1Cは、2つのエンドポイント190間のネットワーク接続180を示す簡略化ネットワーク環境100を示している。ネットワーク接続180は、ミドルボックス160を通過する。これによって、パケット170は、(例えば、パケット170、170
sx1-6として)ソースエンドポイント190
sからミドルボックス160に伝送され、(例えば、パケット170、170
xd1-6として)ミドルボックス160から宛先エンドポイント190
dに伝送される。また、ネットワーク接続180を介して、パケット170は、逆の方向で、(例えば、サーバ110として示された)宛先エンドポイント190
dから(例えば、クライアント120として示された)ソースエンドポイント190
sに伝送されてもよい。例えば、
図1Cは、(例えば、パケット170、170
dx1-6として)宛先エンドポイント190
dからミドルボックス160に伝送され、(例えば、パケット170、170
xs1-6として)ミドルボックス160からソースエンドポイント190
sに伝送されるパケットを示している。
図1Cにおいて、パケット170の下付き文字は、パケット170を伝送する方向を特定する。「D」は、宛先エンドポイント190
dを指す。「X」は、ミドルボックス160を指す。「S」は、ソースエンドポイント190
sを指す。すなわち、「DX」は、宛先エンドポイント190
dからミドルボックス160に伝送されるパケット170に対応し、「XS」は、ミドルボックス160からソースエンドポイント190
sに伝送されるパケット170に対応する。
【0039】
ソースエンドポイント190sと宛先エンドポイント190dとの間でパケット170を伝送するために、接続180は、伝送制御プロトコル(TCP)を使用する。例えば、接続180は、TCP接続180と呼ばれる。TCPは、パケット交換通信ネットワーク130用のホストツーホストプロトコルである。一般的に、TCPは、ユーザまたはアプリケーションプロセスとインターネットプロトコル(IP)との間のインターフェイスを形成する。TCPは、一定数のバイトを(パケット170として知られる)セグメントに
パッケージングすることによって、連続的なバイトストリーム(すなわち、オクテット)をエンドポイント190(例えば、ソースと宛先)の間に伝送するように構成されている。TCP接続180が存在する場合、TCPは、2つのバイトストリーム(またはパケットストリーム)を、各方向(例えば、(1)ソースエンドポイント190sから宛先エンドポイント190dへの方向、および(2)宛先エンドポイント190dからソースエンドポイント190sへの方向)に1つずつ送信するように構成されている。
【0040】
また、TCPは、(例えば、
図1Cに示されたように)特定のパケット170に対して特定の構造を含む。パケット170の構造は、データ(すなわち、パケット170のペイロード)の信頼性を保証すると共に、TCP接続180に関する特性を通信することができる。損傷した、損失した、複製された、または順序がずれて送達されたデータの信頼性を保証するために、TCPは、送信された各バイトにシーケンス番号172を割り当て、(例えば、パケット170を送信する方向に依存してエンドポイント190の1つである)宛先ポートからの肯定的確認(ACK)を要求する。いくつかの例において、ACKは、パケット170自体であるが、他の例において、ACKは、受領確認番号174である。さらに他の例において、(例えば、宛先ポートによって指定された)確認エンドポイントがデータを(例えば、ソースポートによって指定された)ソースエンドポイント190
sに送信する場合、ACKは、ACKパケット170自体および受領確認番号174の両方を含む。ACKがタイムアウト間隔内に受信されていない場合、TCPは、データ(例えば、パケット170)を再送信する。(例えば、パケット170を送信する方向に依存してエンドポイント190の1つである)宛先は、必要に応じて、シーケンス番号172を用いて、パケット170を並べ替えるかまたは重複を排除することができる。TCPによって、宛先は、信頼性に加えて、受信するフローの量を決定することができる。いくつかの例において、受信者が最後に受信したいパケット170を正常に受信した後、宛先は、許容可能なシーケンス番号172の範囲を示すように、ACKを含むウィンドウ178を通信する。ウィンドウ178は、任意の時点で宛先に転送されるデータ(すなわち、バイト)の許容可能な帯域幅を指す。
【0041】
ソースエンドポイント190sと宛先エンドポイント190dとの間のTCP接続180を確立するために、エンドポイント190は、まず、3段階ハンドシェイクを行う。3段階ハンドシェイクの第1ステップにおいて、(例えば、クライアント120として示された)ソースエンドポイント190sは、(例えば、サーバ110として示された)宛先エンドポイント190dと接続180を確立する意向を示す。したがって、ソースエンドポイント190sは、同期シーケンス番号(SYN)を含むパケット170を送信することによって、ソースエンドポイント190sが宛先エンドポイント190dとの通信を開始したいことおよびソースエンドポイント190sが開始したいシーケンス番号を宛先エンドポイント190dに通知する。3段階ハンドシェイクの第2ステップにおいて、宛先エンドポイント190d(例えば、サーバ110)は、SYNおよびACKで応答する。宛先エンドポイント190dは、ACKを用いてソースエンドポイント190sから送信されたパケット170に確認し、SYNを用いてパケット送信を開始したいシーケンス番号172をソースエンドポイント190dに通知する。第3ステップにおいて、ソースエンドポイント190sは、宛先エンドポイント190dの応答を確認する。これによって、TCP接続180は、ソースエンドポイント190sと宛先エンドポイント190dとの間に確立される。
【0042】
3段階ハンドシェイクがエンドポイント190間でTCP接続180を確立するが、エンドポイント190間の中間装置として機能するミドルボックス160は、接続されたエンドポイント190間のTCP性能を監視する従来の手段を妨害する。前述したように、一部のミドルボックス160は、ネットワーク機能を実行するためにパケット170を検査および/または修正する。パケット170が修正された場合、TCP性能を監視するた
めの従来の技術は、標準パケット構造のフィールド/属性に依拠することができなくなる。追加的にまたは代替的に、ミドルボックス160は、しばしば、ミドルボックスを介して多重化された多くのTCP接続180からパケットを受信し、典型的にはインターネットプロトコル(IP)層上で動作する。ミドルボックスは、IP層上で動作するため、フローの開始マーカまたは終了マーカもしくは確認のTCPフローマーカを使用しない。換言すれば、ミドルボックスの動作は、TCPフロー(例えば、エンドツーエンドTCP接続)と同じまたは同様のパケットフロー性能を示すインジケータを提供することができない。パケットフロー性能を示すインジケータがない場合、ネットワーク管理者またはネットワークサービスプロバイダは、ネットワーク通信を評価および/または改善することが困難である。
【0043】
引き続き
図1A~1Cを参照して、ネットワーク環境100は、ミドルボックス160に設けられたまたはそれに結合された性能評価装置200をさらに含む。性能評価装置200は、エンドポイント190間のTCP接続180の性能特性202(
図1C)を推定するように構成されている。例えば、
図1Cは、クライアント120とサーバ110との間のTCP接続180の1つ以上の性能特性202、202a~cを推定するための性能評価装置200を示す。いくつかの例において、性能特性202は、トリップタイム202a(例えば、ラウンドトリップタイムRTT)、スループット202b、および推定ウィンドウサイズ202cを含む。
図1Cに示すように、性能評価装置200は、TCP接続180からパケット170をサンプリングすることによって、性能特性202を推定する。例えば、
図1Cにおいて、性能評価装置200は、ミドルボックス160からソースエンドポイント190
sへ移動する2つのパケット170
xs2,6と、ソースエンドポイント190
sからミドルボックス160へ移動する2つのパケット170
sx3,4と、宛先エンドポイント190
dからミドルボックス160へ移動する1つのパケット170
dx1と、ミドルボックス160から宛先エンドポイント190
dへ移動する1つのパケット170
xd4とを受信する。これは、性能評価装置200がミドルボックス160に配置され、パケット170および/またはパケットアクティビティを監視するように構成されているため、性能評価装置200がエンドポイント190間の双方向TCP接続180の各セグメントを監視することができることを示す。
【0044】
いくつかの実装形態において、TCP接続180が確立されると、各エンドポイント190(例えば、ソースエンドポイント190
sまたは宛先エンドポイント190
d)は、データのバイトをパケット170として転送する。各エンドポイント190は、TCP接続180を介してデータを転送できるため、送信されるパケット170のシーケンス番号172に対して、(例えば、
図1Dの各エンドポイントの下に示された)各々のタイムラインを有する。換言すれば、ソースエンドポイント190
sは、初期シーケンス番号(ISN)172から開始し、ソースエンドポイント190
sから宛先エンドポイント190
dに送信されるデータのバイトごとに初期シーケンス番号(ISN)172を増分する。同様に、宛先エンドポイント190
dは、(例えば、ソースエンドポイント190
sのISN172とは異なる可能性が高い)初期シーケンス番号(ISN)172から開始し、宛先エンドポイント190
dからソースエンドポイント190
sに送信されるデータのバイトごとに初期シーケンス番号172を増分する。各シーケンス番号172は、ソースエンドポイント190
sから転送されたバイトが宛先エンドポイント190
dから転送されたパケット170のシーケンス番号を増分しないように(またはその逆)、互いに独立して管理される。
【0045】
図1Dを参照して、ソースエンドポイント190
sのISN172は、(パケット170
sd1に示された)1024に等しいシーケンス番号172で開始し、宛先エンドポイント190
dのISN172は、(パケット170
sd1に示された)4000に等しいシーケンス番号172で開始する。ソースエンドポイント190
sは、32バイトのデー
タを宛先エンドポイント190
dに送信する場合、自分のシーケンス番号1024を32バイトで1056に増分する(例えば、図示のように、第1のパケット170
sd1から第2のパケット170
sd2になる)。一方、(たとえTCP接続180を介してソースエンドポイント190
sから32バイトが送信されたとしても)宛先エンドポイント190
dは、自分のデータ(すなわち、バイト)を送信するまで、宛先エンドポイント190
dのシーケンス番号172を4000に維持する。例えば、宛先エンドポイント190
dは、328バイトをソースエンドポイント190
sに送信することによって、自分のシーケンス番号172を4000から4328に増分する(例えば、図示のように、第1のパケット170
ds1から第2のパケット170
ds2になる)。その間に、ソースエンドポイント190
sは、自分のシーケンス番号172を1056に維持する。増分されたシーケンス番号172は、エンドポイント190によって送信される後続のパケット170のシーケンス番号172として見なされる。例えば、ソースエンドポイント190
sによって送信された32バイトのデータを含む第1のパケット170
sd1は、1024に等しいISN172を有し、ソースエンドポイント190
sによって送信された第2のパケット170
sd2は、ソースエンドポイント190
sによって以前に送信された第1のパケット170
sd1内の32バイトのデータによって、1056に増分されたシーケンス番号172を有する。宛先エンドポイント190
dは、同様に、各パケット170のシーケンス番号172を増分する(例えば、第1のパケット170
ds1および第2のパケット170
ds2を参照)。パケット170のペイロード176は、一般的に、パケット170に含まれるバイトを指す。例えば、ソースエンドポイント190
sによって送信された第1のパケット170
sd1は、32バイトのペイロード176を含み、宛先エンドポイント190
dによって送信された第1のパケット170
ds1は、328バイトのペイロード186を含む。いくつかの例において、TCPパケット170は、TCPに対してパッケージできる最大のバイト数を有する。他の例において、エンドポイント190間の接続自体は、接続180による制限/制約により、ペイロード176の最大のバイト数を更に制限する。
【0046】
図1Cおよび1Dのパケット構造によって示されたように、パケット170は、シーケンス番号172に加えて、確認(ACK)番号174を含んでもよい。パケット170内のACK番号174は、パケット170の送信者がACK番号174の前に(例えば、反対側のエンドポイント190から)シーケンス番号172を受信しており、次のシーケンス番号172を受信しようとすることを示す。例えば、エンドポイント190間にはいくらかの遅延(例えば、他の中間ホップまたはTCP接続180内の遅延)があり得るが、宛先エンドポイント190
dがソースエンドポイント190
sから32バイトの第1のパケット170
sd1を受信した場合、宛先エンドポイント190
dからソースエンドポイント190
sに送信される次のパケット170
ds1は、宛先エンドポイント190
dがソースエンドポイント190
sから受信したい次の予想されるバイトを示すように、ソースエンドポイント190
sからの第1のパケット170
sd1のシーケンス番号172(すなわち、1024のシーケンス番号172)のACK番号174を1バイトだけ増分して含むことによって、32バイトの受信を確認する。換言すれば、宛先エンドポイント190
dが1024に等しいシーケンス番号172を含む第1のパケット170
sd1から32バイトを受信するときに、宛先エンドポイント190
dから通信されるすぐ次のパケット170
ds1のACK番号174は、1025に等しくなる(このことは、宛先エンドポイント190
dが、シーケンス番号1024を受信しており、次の1025を受信したいことを意味する)。
【0047】
図2A~2Dを参照して、性能評価装置200は、サンプリング装置210と、推定装置220とを含む。サンプリング装置210は、エンドポイント190(例えば、ソースエンドポイント190
sおよび宛先エンドポイント190
d)の間のTCP接続180から、複数のパケット170をサンプリングするように構成されている。例えば、
図1Cは
、サンプリング装置210によってサンプリングされ、性能評価装置200に提供されるパケット170を点線ボックスで示す。性能評価装置200は、TCP接続180のパケットストリームからパケットをサンプリングすることによって、ミドルボックス160またはTCP接続180に与える負担(例えば、プロセッサおよび/またはリソースコスト)を低減することができる。例えば、性能評価装置200は、特定のTCP接続180のミドルボックス160を通過する各パケット170、全てのパケット170、または大部分のパケット170を評価することができる。この手法は、精確であるが、(例えば、ミドルボックス160における各フロー(すなわち、接続180)を測定するための完全なTCPプロキシを構築することによって)、ミドルボックス160のリソースに大きな負担を与える。換言すれば、この手法は、ミドルボックス160における各フローのTCPエンドポイントを再作成する。また、この手法は、ミドルボックス160のリソースに与える負担に加えて、プロキシのウィンドウサイズによって、クライアント120に追加の遅延を与えてしまう。追加の遅延は、特にTCP接続180がメディア伝送(例えば、リアルタイム通信時のオーディオ、ビデオ、またはその両方)を行う場合、ユーザ経験の減少をもたらす。このようなサンプリングは、クライアントおよび/またはホストの数が増加し、それに応じて、ミドルボックス160がミドルボックス160の動作をプログラムおよび/または管理するためにより多くのプログラミングリソースを要求するネットワークフローおよび接続を増加する、特にミドルボックス160がステートフルトラッキング(例えば、接続テーブル)を用いて実行する機能を増加するにつれて、ますます重要になってくる。例えば、ミドルボックス160を通過するパケットの数は、数百万に達す可能性がある。この場合、中間装置としてのミドルボックス160は、遅延、ボトルネック、および追加のホップをエンドポイント190間のネットワーク機能に加える可能性がある。
【0048】
いくつかの例において、サンプリング装置210は、サンプリングした各パケット170に対して、ミドルボックス160から各パケット170をサンプリングするときのタイムスタンプ212を生成する。換言すれば、タイムスタンプ212は、パケット170がミドルボックス160に到達する時間tに対応する。いくつかの実装形態において、サンプリング装置210は、各パケット170のタイムスタンプ212と共に、各パケット170のシーケンス番号172および/または受領確認番号174を記録する。また、サンプリング装置210は、各パケット170の他のフィールドまたは属性(例えば、パケットヘッダ情報、ペイロードサイズ、フラグ、およびチェックサム)を記録および/または記憶するように構成されてもよい。サンプリングされたパケット170がサンプリング装置210によって記録された属性を含まない場合、サンプリング装置210は、パケット170にフラグを付けて、および/またはパケット170を引き続き処理する(例えば、他のパケット属性を記録することおよび/またはタイムスタンプ212を生成する)ことができる。例えば、パケット170は、受領確認番号174を含まない。サンプリング装置210は、サンプリングされたパケット170のシーケンス番号172、受領確認番号174、タイムスタンプ212、および任意の他のパケット属性を記録および/または記憶するように構成されてもよい。追加的または代替的に、サンプリング装置210は、対応するタイムスタンプ212で記録した各シーケンス番号172および/または各受領確認番号174のプロット214または傾向線を生成する。換言すれば、サンプリング装置210は、時間に対してこれらの番号172、174をプロットすることができる。プロット214または傾向線を生成することによって、サンプリング装置210は、性能評価装置200による性能特性202の推定を能率的にすることができ、または様々なネットワークエンティティ(例えば、ネットワークユーザおよびネットワーク管理者)がTCP接続180の性能を経時的に見ることができる。
図2Aに示すように、サンプリング装置210は、記録された番号172、174を同じプロット214にプロットしてもよく、または別々のプロット(図示せず)にプロットしてもよい。
図2Aは、たとえ性能評価装置200が1つ以上の性能特性202を推定するためにプロット214を生成することを
サンプリング装置210に要求しなくても、サンプリング装置210の生成機能および/または記録機能を示す、時間tに対する番号172、174のプロット214を有するサンプリング装置210を示す。
【0049】
特に
図2Aを参照して、サンプリング装置210は、2つのパケット170
3および170
9を受信している(すなわち、サンプリングしている)。このとき、サンプリング装置210は、第1のサンプリングされたパケット170
3の第1のタイムスタンプ212
3と、第2のサンプリングされたパケット170
9の第2のタイムスタンプ212
9とを生成する。
図2Aにおいて、サンプリング装置210は、2つのパケット170
3および170
9に関連付けられた番号172、174を記録および/または記憶するための1つの可能な手段として、プロット214を生成する。例えば、シーケンス番号172および受領確認番号174は、個々の傾向線上の点として示される。いくつかの例において、傾向線は、既知のデータ点(例えば、記録された番号172、174およびタイムスタンプ212)の補間を表す。補間は、しばしば、データサンプリングにおいて使用され、サンプリングされたデータ点を表す関数(例えば、
図2Aの傾向線の勾配)を生成する。したがって、この関数を用いて、未知のデータ点(例えば、サンプリングされていないデータ点)の値を近似または推定することができる。いくつかの例において、サンプリングされたパケット170からの情報(例えば、パケット属性)の補間に基づいて、性能評価装置200(例えば、推定装置220)は、性能特性202を推定する。一例として、性能評価装置200は、シーケンス番号174の傾向線を使用して、2つのパケット170
3および170
9の間のパケット170
6が2つのパケット170
3および170
9のシーケンス番号172の間の中間点に関連付けられたタイムスタンプ212でサンプリングされる可能性が高いと推定する。
【0050】
いくつかの実装形態において、サンプリング装置210は、TCP接続180から、複数のパケット170を間引いて(sparsely)サンプリングする。全てのパケット170を評価するのではなく、間引いてサンプリングすることは、ミドルボックス160の最小リソースを消費することを保証する。一般的な意味で、TCP接続180からパケット170を間引いてサンプリングすることは、TCP接続180を介して通信されたパケットストリーム内の全てのパケット170よりも少ないパケットをサンプリングすることを意味する。いくつかの例において、間引いてサンプリングすることは、TCP接続180を介して通信されたパケットストリーム内のパケット170の大部分をサンプリングしないことを意味する。いくつかの実装形態において、サンプリング装置210は、TCP接続180のパケット170の1~10パーセント(1%~10%)をサンプリングすることによって、TCP接続180のパケット170を間引いてサンプリングするように構成されている。他の実装形態において、サンプリング装置210は、TCP接続180のパケット170の1パーセント(例えば、0.1%)未満をサンプリングすることによって、TCP接続180のパケット170を間引いてサンプリングするように構成されている。サンプリングの疎さにかかわらず、サンプリングは、系統的なサンプリング頻度で行われてもよい。サンプリングは、ランダムにまたは均一に(例えば、いくつかの異なる間隔で系統的に)行うことができる。サンプリング装置210によるサンプリングは、ステートレスな方法で行われてもよい。例えば、サンプリング装置210は、サンプリング中にTCP接続180の動作状態および/または特性を考慮しない。
【0051】
いくつかの構成において、推定装置220は、サンプリングされた複数のパケット170のうちの1つ以上のパケットに対応するタイムスタンプ212、シーケンス番号172、または受領確認番号174のうちの少なくとも2つに基づいて、所定の期間にわたってミドルボックス160を介して通信するソースエンドポイント190
sと宛先エンドポイント190
dとの間のTCP接続180の推定性能特性202を生成するように構成されている。推定装置220の機能は、推定装置220が推定しているTCP接続180の性
能特性202の種類に応じて変わってもよい。
図2Bは、RTT202a(またはトリップタイム222)に対応する性能特性202を決定する推定装置220を示す。
図2Cは、スループット202bに対応する性能特性202を決定するための推定装置2220を示す。
図2Dおよび2Eは、宛先エンドポイント190
dおよびソースエンドポイント190
sの各々の推定ウィンドウサイズ202cに対応する性能特性202を決定するための推定装置220を示す。
【0052】
図2Bを参照して、いくつかの例において、推定装置220は、ラウンドトリップタイム(RTT)202aを推定するために、エンドポイント190間のTCP接続180のセグメントを分析する。換言すれば、RTT202aは、(i)ソースエンドポイント190
sとミドルボックス160との間のTCP接続セグメントの第1のトリップタイム222、222a(例えば、装置/クライアント側トリップタイム)、および(ii)宛先エンドポイント190
dとミドルボックス160との間のTCP接続セグメントの第2のトリップタイム222、222b(例えば、サーバ/サービス側トリップタイム)を含む。RTT202aを精確に推定するために、推定装置220は、第1のトリップタイム222aと第2のトリップタイム222bとの合計を計算することができる。精確ではないかもしれないが、推定装置220は、いずれかのTCP接続セグメントのトリップタイム222に基づいてRTT202aを推定し、このトリップタイム222を2倍にすることによって、ミドルボックス160を介して通信するエンドポイント190間のRTT202aの推定値を生成することができる。
【0053】
いくつかの例において、トリップタイム222(例えば、第1のトリップタイム222aまたは第2のトリップタイム222b)に対して、推定装置220は、特定のTCP接続セグメント内のTCP接続180によって転送されたサンプリングされたパケット170からシーケンス番号172を特定する。例えば、
図2Bは、下付き文字「sx/xs」で、ソースエンドポイント190
sとミドルボックス160との間のTCP接続セグメントからサンプリングした少なくとも1つのパケット170
sx/xsを示し、下付き文字「dx/xd」で、宛先エンドポイント190
dとミドルボックス160との間のTCP接続セグメントからサンプリングした少なくとも1つのパケット170
dx/xdを示す。サンプリング装置210から生成されたタイムスタンプ212
sx/xs、タイムスタンプ212
dx/xdおよび関連する番号172、174に基づいて、推定装置220は、(例えば、ソースエンドポイント190
sとミドルボックス160との間の)TC接続セグメントからシーケンス番号172と一致する受領確認番号174を受信する時間を決定する。換言すれば、TCP接続セグメントにシーケンス番号172を通信した時間(例えば、性能評価装置200がシーケンス番号172を記録したときのタイムスタンプ212)と、同じTCP接続セグメントに当該シーケンス番号172を特定する受領確認番号174を確認した時間(例えば、性能評価装置がシーケンス番号172と一致する受領確認番号174を記録するときのタイムスタンプ212)との間の時間差は、当該TCP接続セグメントのトリップタイム222に対応する。これは、全てのTCP接続セグメントに対して成立する。
【0054】
推定装置220は、サンプリング装置210によって記録された2つ以上の既知のシーケンス番号172の補間に基づいて、サンプリング装置210によって記録された既知のシーケンス番号172または推定されたシーケンス番号172のいずれかを照合することができる。サンプリング装置210がエンドポイント190間のTCP接続180を介して通信された全てのパケット170をサンプリングしていないため、推定装置220は、シーケンス番号172と一致する記録された受領確認番号174を受信できない可能性がある。記録された受領確認番号174が、推定装置220によって特定され、トリップタイム222を決定する際に使用されるシーケンス番号172と一致しない場合、推定装置220は、サンプリング装置210によってサンプリングされたパケット170に記録さ
れた受領確認番号174の補間に基づいて、対応する受領確認番号174が特定されたシーケンス番号172と一致する時間を推定するように構成されている。例えば、
図2Bは、傾向線上の黒点ではなく、傾向線上の白点を用いて、サンプリング装置210からの記録されたシーケンス番号172と一致する受領確認番号174が未知であることを示す。推定装置220は、トリップタイム222aおよびトリップタイム222bの両方を決定するために、シーケンス番号172と一致する受領確認番号174の各々の時間を決定する。第1のトリップタイム222aは、推定されたマッチング確認時間t
3と、記録されたシーケンス番号172に対応するタイムスタンプ212、t
1との間の差として示される。同様に、第2のトリップタイム222aは、推定されたマッチング確認時間t
4と、記録されたシーケンス番号172に対応するタイムスタンプ212、t
2との間の差として示される。いくつかの構成において、推定装置220は、サンプリング装置210が(例えば、低頻度または疎なサンプリングによって)マッチング受領確認番号174を記録していないと仮定する。換言すれば、推定装置220は、シーケンス番号172と一致する記録された受領確認番号174を特定しようとするように構成されなくてもよい。
【0055】
図2Cを参照して、推定装置220は、エンドポイント190間のTCP接続180のいずれかの方向(例えば、ソースエンドポイント190
sから宛先エンドポイント190
dへの方向、または宛先エンドポイント190
dからソースエンドポイント190
sへの方向)のスループット202bを決定することができる。いずれの方向において、推定装置220は、記録された受領確認番号174に基づいて、所定の期間tにわたる受領確認番号174の勾配「m」を決定する。受領確認番号174は、シーケンス番号172を用いて、パケット170から受信したデータシーケンスを確認するため、受領確認番号174の勾配mは、パケット170が受領確認番号174を通信するエンドポイント190に転送されているまたは転送された速度に対応する。換言すれば、宛先エンドポイント190
dが受領確認番号174を通信しているときに、勾配mは、ソースエンドポイント190
sがパケット170を宛先エンドポイント190
dに転送している速度に対応する。逆も同様である。すなわち、ソースエンドポイント190
sが受領確認番号174を通信しているときに、これらの受領確認番号174の勾配mは、宛先エンドポイント190
dがパケット170をソースエンドポイント190
sに転送している速度に対応する。
【0056】
いくつかの例において、例えば
図2Dに示すように、TCP接続180の各エンドポイント190は、一度に1つのパケット170を送信し、応答(例えば、確認パケット170)を待つ代わりに、(ウィンドウと呼ばれる)1組のパケット170を他のエンドポイント190に送信する。各側は、各自のウィンドウを有する。各エンドポイント190は、パケット170またはパケット170のウィンドウを確認することによって、確認による遅延を最小限に抑えることができる。ウィンドウのサイズがTCP接続180に影響を与える可能性があるため、性能評価装置200は、エンドポイント190間の通信を最適化するために、各エンドポイント190の推定ウィンドウサイズ202cを生成するように構成されている。いくつかの例において、推定装置220は、サンプリング装置210によってサンプリングされたパケット170を選択することによって、推定ウィンドウサイズ202cを生成する。推定装置220は、サンプリングされたパケット170に基づいて、同じタイムスタンプ212に記録されたシーケンス番号172と受領確認番号174(例えば、記録された受領確認番号174または推定された受領確認番号174)との間の差を決定する。例えば
図2Dにおいて、(例えば、宛先エンドポイント190
dによって送信されたパケット170に関連付けられた)受領確認番号174が宛先エンドポイント190
dによって通信されたときに、推定装置220によって推定されたウィンドウサイズ202cは、宛先エンドポイント190
dの推定ウィンドウサイズ202cである。逆に、例えば
図2Eにおいて、(例えば、ソースエンドポイント190
sによって送信されたパケット170に関連付けられた)受領確認番号174がソースエンドポイント190
sによって通信されたときに、推定装置220によって推定されたウィンドウサイズ
202cは、ソースエンドポイント190
sの推定ウィンドウサイズである。推定ウィンドウサイズ202cがどのエンドポイント190に対応するかにかかわらず、推定装置220は、記録されたシーケンス番号172と受領確認番号174との間に決定された差に基づいて、推定ウィンドウサイズ202cを生成する。換言すれば、推定装置220は、同じタイムスタンプ212における番号172、174の差によって、推定ウィンドウサイズ202cを決定する。例えば、
図2Dは、同じ時間における番号172、174の周りのブロックを推定ウィンドウサイズ202cとして示す。いくつかの実装形態において、サンプリング装置210は、TCPパケットフローをサンプリングするたびに、各TCPフロー方向のパケット170(例えば、同じタイムスタンプ212における1対のパケット)をサンプリングするように構成されている。したがって、推定装置220は、推定ウィンドウサイズ202cをより効率的に生成する。他の実装形態において、サンプリング装置210は、いずれかのTCPフロー方向において、1つのパケット170のみをサンプリングする。したがって、推定装置220は、サンプリングされたパケット170を補間することによって、推定ウィンドウサイズ202cを生成する。
【0057】
図2Dおよび2Eは、サンプリング装置210および/または推定装置220が推定ウィンドウサイズ202cを決定するために生成することができる異なるプロット214を示す。
図2Dにおいて、サンプリング装置210および/または推定装置220は、(例えば、
図2Dの傾向線上の参照番号172
sとして示された)ソースエンドポイント190
sからのシーケンス番号172と共に、(例えば、
図2Dの傾向線上の参照番号174
dとして示された)宛先エンドポイント190
dからの受領確認番号174を示すプロット214を生成する。
図2Eにおいて、サンプリング装置210および/または推定装置220は、(例えば、
図2Eの傾向線上の参照番号174sとして示された)ソースエンドポイント190
sからの受領確認番号174と共に、(例えば、
図2Eの傾向線上の参照番号172dとして示された)宛先エンドポイント190
dからのシーケンス番号172を示すプロット214を生成する。いずれのプロット214において、推定ウィンドウサイズ202cは、同じ時間tにおけるシーケンス番号172の傾向線上の点と受領確認番号174の傾向線上の点との間の距離に等しい。
【0058】
図3は、TCP性能特性202を推定する方法300の動作の例示的な構成を示すフローチャートである。動作302において、方法300は、所定の期間tにわたってミドルボックス160を介して通信するソースエンドポイント190
sと宛先エンドポイント190
dとの間のTCP接続180から、複数のパケット170を間引いてサンプリングする。動作304において、方法400は、サンプリングされた複数のパケット170の各パケット170に対して動作304aおよび304bを実行する。動作304aにおいて、サンプリングされた各パケット170に対して、方法300は、各パケット170をサンプリングするときのタイムスタンプ212を生成する。動作304bにおいて、サンプリングされた各パケット170に対して、方法300は、各パケット170のシーケンス番号172および受領確認番号174を記録する。各パケット170は、確認パケット174を有しなくてもよい。動作306において、方法300は、サンプリングされた複数のパケット170のうちの1つ以上のパケットのタイムスタンプ212、シーケンス番号172、または受領確認番号174のうちの少なくとも2つに基づいて、所定の期間tにわたってミドルボックス160を介して通信するソースエンドポイント190
sと宛先エンドポイント190
dとの間のTCP接続180の推定性能特性202を生成する。
【0059】
図4は、TCP接続180のトリップタイムを推定する方法400の動作の例示的な構成を示すフローチャートである。動作402において、方法400は、ミドルボックス160において、所定の期間tにわたってミドルボックス160を介して通信するエンドポイント190間のTCP接続180から複数のパケット170を間引いてサンプリングする。動作404において、サンプリングされた複数のパケット170の各サンプリングさ
れたパケット170に対して、方法400は、当該パケット170をサンプリングするときのタイムスタンプ212を生成する。動作406において、方法400は、ミドルボックス160と対応するエンドポイント190との間で転送されるサンプリングされた複数のパケット170のうちの第1のサンプリングされたパケット170の第1のシーケンス番号172が、サンプリングされた複数のパケット170の受領確認番号174のいずれにも一致しないと判定する。動作408において、方法400は、サンプリングされた複数のパケット170の複数の受領確認番号174の補間に基づいて、第1のシーケンス番号172と一致する受領確認番号174に対応する時間tを推定する。動作410において、方法400は、第1のパケット170に関連する第1のタイムスタンプ212と推定された時間との間の差に基づいて、ミドルボックス160と対応するエンドポイント190との間のトリップタイムを決定する。
【0060】
図5は、本明細書に記載のシステム(例えば、性能評価装置200)および方法(例えば、方法300および400)を実装するために使用され得る例示的なコンピューティング装置500を示す概略図である。コンピューティング装置500は、ラップトップ、デスクトップ、ワークステーション、PDA(Personal Digital Assistant)、サーバ、ブレードサーバ、メインフレームおよび他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すように意図されている。図示された要素、それらの接続および関係並びにそれらの機能は、例示的なものに過ぎず、本明細書に記載および/または請求される発明の実施を限定するものではない。
【0061】
コンピューティング装置500は、プロセッサ(例えば、データ処理ハードウェア)510と、メモリ(例えば、メモリハードウェア)520と、記憶装置530と、メモリ520および高速拡張ポート550に接続する高速インターフェイス/コントローラ540と、低速バス550および記憶装置530に接続する低速インターフェイス/コントローラ560とを含む。要素510、520、530、540、550および560は、様々なバスを介して相互に接続され、共通のマザーボード上に実装されてもよく、または適切な他の方法で実装されてもよい。プロセッサ510は、メモリ520または記憶装置530に記憶された命令を含むコンピューティング装置500内に実行される命令を処理することによって、外部入力/出力装置のグラフィカルユーザインターフェイス(GUI)に、例えば高速インターフェイス540に接続されたディスプレイ580にグラフィック情報を表示することができる。他の実施態様において、必要に応じて、複数のメモリおよび複数種類のメモリと共に、複数のプロセッサおよび/または複数のバスを使用することができる。また、各装置が(例えば、サーババンク、一群のブレードサーバ、またはマルチプロセッサシステムとして)必要な動作の一部を実行するように、複数のコンピューティング装置500を接続することができる。
【0062】
メモリ520は、情報をコンピューティング装置500に非一時的に記憶する。メモリ520は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであってもよい。非一時的メモリ520は、コンピューティング装置500によって使用されるプログラム(例えば、一連の命令)またはデータ(例えば、プログラム状態情報)を一時的または永続的に記憶するための物理装置であってもよい。不揮発性メモリの例は、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラマブル読み取り専用メモリ(PROM)/消去可能なプログラマブル読み取り専用メモリ(EPROM)/(通常ブートプログラムなどのファームウェアに使用される)電子的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)を含むが、これらに限定されない。揮発性メモリの例は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープを含むが、これらに限定されない。
【0063】
記憶装置530は、コンピューティング装置500に大容量の記憶を提供することができる。いくつかの実装形態において、記憶装置530は、コンピュータ可読媒体である。様々な異なる実装形態において、記憶装置530は、フロッピー(登録商標)ディスク装置、ハードディスク装置、光学ディスク装置、テープディスク装置、フラッシュメモリまたは他の同様の固体メモリ装置、または記憶エリアネットワークまたは他の構成内の装置を含む一連の装置であってもよい。さらなる実装形態において、コンピュータプログラム製品は、情報担体に有形的に具体化されてもよい。また、コンピュータプログラム製品は、命令を含むことができる。これらの命令は、実行されると、上述したような1つ以上の方法を実行することができる。情報担体は、例えば、メモリ520、記憶装置530、またはプロセッサ510上のメモリなどのコンピュータ可読媒体または機械可読媒体である。
【0064】
高速コントローラ540は、コンピューティング装置500の帯域幅集約型動作を管理し、低速コントローラ560は、低速の帯域幅集約型動作を管理する。このような役務の割り当ては、例示にすぎない。いくつかの実装形態において、高速コントローラ540は、メモリ520、(例えば、グラフィックプロセッサまたはアクセラレータを介して)ディスプレイ580、および様々な拡張カード(図示せず)を挿入できる高速拡張ポート550に連結される。いくつかの実装形態において、低速コントローラ560は、記憶装置530および低速拡張ポート590に連結される。様々な通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット(登録商標))を含み得る低速拡張ポートは、例えば、キーボード、ポインティング装置、スキャナなどの1つ以上の入出力装置に連結されてもよく、またはネットワークアダプタを介して、スイッチまたはルータなどのネットワーキング装置に連結されてもよい。
【0065】
図示のように、コンピューティング装置500は、いくつかの異なる形態で実装されてもよい。例えば、コンピューティング装置500は、標準サーバ500aとしてまたは一群の標準サーバ500aに複数回に実装されてもよく、ラップトップコンピュータ500bとしてまたはラックサーバシステム500cの一部として実装されてもよい。
【0066】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子回路および/または光学回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェアおよび/またはそれらの組み合わせで実現することができる。これらの様々な実装は、プログラム可能なシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムによる実装を含むことができる。このプログラム可能なシステムは、記憶システムに連結され、記憶システムからデータおよび命令を受信し、データおよび命令を記憶システムに送信するように構成された少なくとも1つのプログラム可能な専用または汎用のプロセッサと、少なくとも1つの入力装置と、少なくとも1つの出力装置とを含む。
【0067】
(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)コンピュータプログラムは、プログラム可能なプロセッサ用の機械命令を含み、高度な手続き型プログラミング言語および/または高度なオブジェクト指向プログラミング言語で実装されてもよく、および/またはアセンブリ言語/機械言語で実装されてもよい。「機械可読媒体」および「コンピュータ可読媒体」という用語は、本明細書に使用された場合、プログラム可能なプロセッサに機械命令および/またはデータを提供するために使用された機械可読信号としての機械命令を受け取る機械可読媒体を含む任意のコンピュータプログラム製品、非一時的なコンピュータ可読媒体、機械および/または装置(例えば、磁気ディスク、光学ディスク、メモリ、プログラム可能な論理装置(PLD))を指す。「機械可読信号」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するために使用された任意の信号を指す。
【0068】
本明細書に記載されたプロセスおよび論理フローは、入力データを処理し、出力を生成することによって機能を実行するように、1つ以上のコンピュータプログラムを実行す1つ以上のプログラム可能なプロセッサによって実行されてもよい。また、プロセスおよび論理フローは、専用論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行されてもよい。コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサ、専用マイクロプロセッサ、および任意の種類のデジタルコンピュータの1つ以上のプロセッサを含む。一般的に、プロセッサは、読み取り専用メモリ、ランダムアクセスメモリ、またはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つ以上のメモリ装置とを含む。一般的に、コンピュータはまた、データを記憶するための1つ以上の大容量記憶装置、例えば磁気ディスク、光磁気ディスクまたは光ディスクを含むか、または1つ以上の大容量記憶装置からデータを受信する、または1つ以上の大容量記憶装置にデータを転送する、またはその両方を行うように1つ以上の大容量記憶装置に動作可能に結合される。しかしながら、コンピュータは、そのような装置を有する必要はない。コンピュータプログラム命令およびデータの記憶に適したコンピュータ可読媒体は、例えば、EPROM、EEPROMおよびフラッシュメモリ装置などの半導体メモリ装置、例えば内部ハードディスクまたは取外し可能なディスクなどの磁気ディスク、光磁気ディスク、CD ROMおよびDVD-ROMディスクを含む全ての不揮発性メモリ、媒体、およびメモリ装置を含む。プロセッサおよびメモリは、専用論理回路によって補足されてもよく、または専用論理回路に組み込まれてもよい。
【0069】
ユーザとの対話を提供するために、本開示の1つ以上の態様は、情報をユーザに表示するための表示装置、例えばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、およびユーザがコンピュータに入力を提供することができるキーボードおよびポインティング装置、例えばマウスまたはトラックボールを含むコンピュータ上で実装されてもよい。他の種類の装置を使用して、ユーザとの相互作用を提供することもできる。ユーザに提供されるフィードバックは、例えば、任意の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよい。ユーザから受信される入力は、音響入力、音声入力、または触覚入力を含んでもよい。さらに、コンピュータは、ユーザによって使用されている装置に文書を送信し、当該装置から文書を受信することによって、例えば、ウェブブラウザから受信された要求に応答して、ユーザのクライアント装置上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【0070】
いくつかの実装形態を説明した。これにもかかわらず、本開示の精神および範囲から逸脱することなく、様々な修正を行うことができることが理解されるであろう。したがって、他の実装形態は、以下の特許請求の範囲に含まれる。