ネットワーク遅延・帯域幅計算ツールによるTCPパフォーマンスの算出
ネットワーク遅延・帯域幅計算ツールは、ネットワーク経路の条件に基づいて、単一のTCPフローにおける現実的なパフォーマンス上限を算出する無料のオンラインツールです。回線速度、往復時間(RTT)、およびデータサイズを入力することで、接続を制限しているボトルネックを即座に特定し、予想されるTCPスループットと推定総転送時間を表示します。
本ツールは完全にWebブラウザ上で動作し、入力されたデータを外部サーバーに送信することなく、すべての計算をローカルで実行します。
入力パラメータと設定値
計算を行うために、以下の経路情報、転送データ、およびTCPパラメータを設定します。
- 回線速度: 経路上の最も遅いホップ(通常はご契約プランの最大速度)を指定します。値はゼロより大きい必要があります。
- 往復時間 (RTT): 相手先へのping時間であり、負荷時に想定される最大値を使用します。値はゼロより大きい必要があります。
- データサイズ: 転送するペイロード(ファイル、バックアップ、データセットなど)を指定します。値はゼロより大きい必要があります。
- 受信ウィンドウ: 受信側がバッファできるバイト数です。値はゼロより大きく、1,073,725,440バイト以下である必要があります。空欄の場合はウィンドウ制限なしとして扱われます。
- MSS (バイト): 1パケットあたりのペイロードバイト数です。1から65,495バイトの間の整数である必要があります。空欄にすると、オーバーヘッドと損失が無視されます。
- パケット損失 (%): 平均パケット損失率を指定します。0から100パーセントの間である必要があります。空欄または0の場合は損失による制限なしとして扱われます。
- 表示する小数点以下桁数: 出力値の小数点以下の表示精度を制御します。
インターフェースには、サンプルデータを自動入力する「例を読み込む」 ボタンと、入力をリセットする「クリア」 ボタンが用意されています。
計算結果と出力項目
計算結果は以下の3つのセクションに分かれて表示されます。
スループットと転送時間
- 予想TCPスループット: アクティブなボトルネックを示すサブラベル「
‹constraint›による制限」 を伴って表示されます。制限要因は、回線容量、受信ウィンドウ、またはパケット損失 のいずれかとして動的に特定されます。 - 転送時間
- 最初の1バイトまでの時間 (1 RTT)
- データ転送時間
- 帯域幅遅延積
- 経路を満たすウィンドウ
- ウィンドウ制限スループット
- 損失制限スループット (Mathis)
- オーバーヘッド考慮後の回線上限
- プロトコル効率
動的システム通知
入力値の組み合わせに応じて、以下の通知が表示されます。
- 「この経路を満たすには
‹window›のウィンドウが必要ですが、これはスケーリングなしの最大値である65,535バイトを超えているため、双方でTCPウィンドウスケーリング (RFC 7323) をネゴシエートする必要があります。」 - 「この経路を満たすには
‹window›が必要ですが、これはTCPがネゴシエートできる最大のウィンドウ (1,073,725,440バイト) を超えています。この経路上の単一フローは‹value›を超えることはできません。」 - 「受信ウィンドウを
‹window›に引き上げると、この転送は最大‹value›に達する可能性があります。」 - 「1%を超える損失はMathisモデルの信頼できる範囲外です。損失上限は楽観的な予測値として扱ってください。」
数式と値の代入
- 数式:
スループット = min(回線速度 × 効率, ウィンドウ ÷ RTT, MSS ÷ RTT ÷ √p) ・ BDP = 回線速度 × RTT - プロトコル効率:
プロトコル効率 = MSS ÷ (MSS + 78 B) = ‹mss› ÷ ‹frame› = ‹eff› (パケットヘッダー 40 B + 回線オーバーヘッド 38 B) - 回線上限:
回線上限 = 回線速度 × 効率 = ‹rate› × ‹eff› = ‹value› - BDP:
BDP = 回線速度 × RTT = ‹rate› × ‹rtt› = ‹bdp› = ‹bytes› - 経路を満たすウィンドウ:
経路を満たすウィンドウ = BDP ÷ 8 = ‹bdp› → ‹window› - ウィンドウ上限:
ウィンドウ上限 = ウィンドウ ÷ RTT = ‹window› ÷ ‹rtt› = ‹value› - 損失上限 (Mathis):
損失上限 (Mathis) = MSS ÷ RTT ÷ √p = ‹mss› ÷ ‹rtt› ÷ √‹p› = ‹value› - 予想スループット:
予想スループット = これら上限値の最小値 = ‹value› → ‹constraint›による制限 - 転送時間:
転送時間 = RTT + 8 × サイズ ÷ スループット = ‹rtt› + 8 × ‹size› ÷ ‹throughput› = ‹time›
計算結果は「結果をコピー」 ボタンを使用してクリップボードにコピーできます。
動作規則と技術的仕様
- 単位の定義: すべての単位は10進数ベース(例: 1 kbit = 1,000ビット、1 MB = 1,000,000バイト)で計算されます。ファイルマネージャーで一般的に使用される1024ベースのバイナリ単位(100 MBと表示されるファイルが実際には100 MiB、すなわち約104.86 10進数MBであるなど)とは異なります。
- プロトコルオーバーヘッド: 標準的なイーサネットを基準とし、1パケットあたり78バイト(TCP/IPヘッダー40バイト、物理回線オーバーヘッド38バイト)を加算して計算します。
- Mathisモデルの適用範囲: Mathis損失モデルは、パケット損失が均等かつ独立して発生することを前提としています。このモデルが信頼できるのは損失率が約1%未満の場合に限られ、1%を超える場合は警告 が表示されます。
- ウィンドウスケーリング制限: スケーリングなしのTCPウィンドウ最大値は65,535バイトです。これを超える場合はRFC 7323に基づくウィンドウスケーリングのネゴシエーションが必要です。また、RFC 7323でネゴシエート可能な絶対最大ウィンドウサイズは1,073,725,440バイトです。
- モデルの除外事項: 本計算は定常状態における単一のTCPフローを想定しています。TCPスロースタート、混雑制御のチューニング、受信側の処理遅延、TLSハンドシェイクなどの要因は考慮されていないため、実際の転送は算出値より遅く始まる可能性があります。
入力エラーメッセージ一覧
入力値が不正な場合、以下のエラーメッセージが表示されます。
- 解析不能な入力:
"‹field›: 「‹token›」は数値ではありません。" - 回線速度がゼロ以下:
"回線速度はゼロより大きい必要があります。" - 往復時間がゼロ以下:
"往復時間はゼロより大きい必要があります。" - データサイズがゼロ以下:
"データサイズはゼロより大きい必要があります。" - 受信ウィンドウがゼロ以下:
"受信ウィンドウはゼロより大きい必要があります。" - 受信ウィンドウがRFC 7323制限超過:
"TCPは1,073,725,440バイトを超えるウィンドウをネゴシエートできません (RFC 7323 ウィンドウスケーリング)。" - MSSが範囲外:
"MSSは1から65,495バイトの間の整数である必要があります。" - パケット損失が範囲外:
"損失率は0から100パーセントの間である必要があります。" - システム制限超過:
"値または中間結果がサポートされている数値範囲を超えています。"
よくある質問 (FAQ)
転送速度が、契約している回線速度よりも遅いのはなぜですか?
単一のTCPフローは3つの独立した上限に直面し、最も低いものが適用されます。プロトコルのオーバーヘッドにより、回線自体が約5%削減されます。標準的なイーサネットフレームは、回線上の1,538バイトのうち1,460バイトのペイロードを運びます。受信ウィンドウはスループットを「ウィンドウ ÷ RTT」に制限するため、従来の65,535バイトのウィンドウでは、回線がどれだけ高速であっても、50 msの経路で約10.5 Mbit/sに制限されます。そして、損失は「(MSS ÷ RTT) ÷ √損失」に制限します。上記の計算結果は、入力された数値においてどの上限がボトルネックになっているかを示します。
帯域幅遅延積とは何ですか?なぜそれがウィンドウサイズを決定するのですか?
BDP (帯域幅遅延積 — 回線速度 × 往復時間) は、常にネットワーク上を流れているデータの量です。TCPは未確認のウィンドウを最大1つしか送信できないため、BDPより小さいウィンドウではパイプが部分的に空になります。例えば、RTTが50 msで100 Mbit/sの場合、パイプには625 kBが保持されますが、65,535バイトのウィンドウではそのわずか10分の1しか満たせません。そのため、高速で遅延の大きい経路では、ネゴシエート可能な最大値を65,535バイトから約1 GBに引き上げるTCPウィンドウスケーリング (RFC 7323) が必要になります。
パケット損失はどのようにTCPスループットを制限しますか?
TCPはパケット損失を混雑として扱い、損失が発生するたびに送信速度を半分にするため、高速な経路では極めて小さな損失率でも影響を及ぼします。Mathisモデルは、上限を「(MSS ÷ RTT) ÷ √p」として推定します。例えば、MSSが1,460バイト、RTTが50 msの経路で0.01%の損失が発生した場合、回線速度に関係なく約23 Mbit/sに制限されます。このモデルは、損失が均等に分散し、独立して発生することを前提としています。損失が約1%未満であれば現実をよく反映しますが、バースト的な損失に対しては楽観的な予測になります。
ここでのメガバイトは、ファイルマネージャーでの表示と同じですか?
同じではありません。このページでは、ネットワークの慣例である10進数単位を使用しています (1 kbit = 1,000ビット、1 MB = 1,000,000バイト)。ほとんどのファイルマネージャーは1024ベースの単位で計算し、しばしば「MB」と誤表記されます。そこでの「100 MB」のファイルは通常100 MiB ≈ 104.86 10進数MBであり、転送には10進数の計算値より約5%長くかかります。正確に一致させるには、ここに104.86 MBと入力してください。