TCPスループット計算ツールとは?
このツールは、TCPの受信ウィンドウサイズとネットワークのラウンドトリップタイム(RTT)をもとに、1本のTCPコネクションが理論上出せる最大スループットを試算します。TCPは「確認応答(ACK)がまだ返ってきていないデータ」を、一度にウィンドウサイズ分しか送信できません。そのため、回線そのものの帯域幅がどれだけ大きくても、ウィンドウサイズとRTTの組み合わせが転送速度の上限を決めてしまいます。これがよく知られた帯域幅遅延積(bandwidth-delay product)による制約です。
使い方
TCPウィンドウサイズをキロバイト(KB)で、ラウンドトリップタイムをミリ秒(ms)で入力してください。ツールはウィンドウサイズをビットに、RTTを秒に変換したうえで割り算を行い、スループットをMbps・Kbps・bpsで表示します。ウィンドウを大きくする、あるいはRTTを小さくすると、到達できるスループットはどちらの場合も上がります。
計算式の仕組み
基本となる式はとてもシンプルで、スループット = ウィンドウサイズ ÷ RTT です。単位をそろえるために、次のように換算します。1 KB = 1024 バイト = 8192 ビット。RTTはミリ秒を1000で割って秒に変換します。したがって1秒あたりのビット数(bps)は、次の式で求められます。
$$\text{スループット (Mbps)} = \frac{\text{ウィンドウ (KB)} \times 1024 \times 8}{\text{RTT (ms)} / 1000} \times \frac{1}{10^{6}}$$
これを1,000,000で割ればMbpsになります。
計算例
たとえばTCPウィンドウが64 KB、RTTが50 msだとします。ウィンドウをビットに直すと \(64 \times 1024 \times 8 = 524{,}288\) ビット。RTTを秒に直すと \(50 / 1000 = 0.05\) 秒です。スループットは次のようになります。
$$524{,}288 \div 0.05 = 10{,}485{,}760 \text{ bps} \approx 10.49 \text{ Mbps}$$
より高速な回線をフルに使い切るには、ウィンドウをさらに大きくする必要があります(TCPウィンドウスケーリング)。
よくある質問
なぜスループットが回線速度と一致しないの? RTTが大きい経路で小さなウィンドウを使うと、同時に転送できるデータ量が制限されてしまうためです。長距離回線でウィンドウスケーリングが欠かせないのは、まさにこの理由からです。
目標速度を出すにはどれくらいのウィンドウサイズが必要? 式を変形して、\(\text{ウィンドウ (ビット)} = \text{スループット} \times \text{RTT}\) で求められます。この積が帯域幅遅延積であり、理想的なバッファサイズの目安になります。
パケットロスは考慮されている? いいえ。これはロスのない状態での理論上の最大値です。実際のロスを伴う回線ではスループットはこれより低くなり、Mathis(マシス)の式を使うほうが現実に近いモデル化ができます。