web-dev-qa-db-ja.com

TCPアップストリーム帯域幅要件の経験則

TCPでは、受信者は送信されたパッケージの受信を確認することがあります。したがって、特定のダウンストリーム帯域幅を実現するには、常に最小のアップストリーム帯域幅が必要です。

私が探しているのは、特定のダウンストリーム帯域幅に必要なアップストリームを計算するための要素です。 TCPにはさまざまなウィンドウサイズとおそらく他の要因があり、この計算を難しくしているという事実を知っています。しかし、少なくとも概算を得ることができるデフォルトのシナリオがあるかもしれません。 。

3
aef

それは他の多くの要因に依存するので、それは答えるのが難しい質問です。非常に具体的な答えを得ようとすることは、少なくとも私にとっては、説明するのが難しく、さらに難しいでしょう。

エンドツーエンドリンクがウィンドウを最大にスケーリングするのに十分安定していると仮定すると、最大ウィンドウサイズごとに1つのACKが必要であると言えます。通常の最大ウィンドウサイズは64KBですが、少なくともこれがWindowsのデフォルトだと思います...レジストリキーによって設定されます。

これを知っているので、RTTごとに1つの最大ウィンドウサイズのデータ​​しか受信しないため、ラウンドトリップ時間が何であるかを知る必要があります。データを取得する1つの方法と、データをACKする1つの方法。これで、衛星上の1つのTCPソケットに必要なアップストリームを計算しようとしているように再生します。

RTT = 〜500ms
最大ウィンドウサイズ= 64KB

(64KB * 8)/。5 =最大ダウンロードは1Mbpsになります。もちろん、8倍はバイト値をビットに変換することでした。

ところで、多くの場合、バッファと呼ばれるウィンドウサイズが表示され、TCPスループット計算は(RxBuffer/RTT = Througput)として指定されます。次に、アップストリームを計算する必要があります。答えの上の内容は明らかです。送信者に戻るには、1秒間に2つのACKが必要です。これらのACKは、20B + 20B * 8(IP + TCPヘッダー)、1個あたり320bps)です。したがって、500ミリ秒のRTTと最大64KBのRxBufferを使用する接続の場合、1Mbps以下のダウンロードと640bpsのアップロードを期待する必要があります。

そういうことがあなたを正しい軌道に乗せてくれることを願っています。それを読み返して、私は自分自身を混乱させました...

1
matak