正確なTCPオーバーヘッドコストを見つけようとする


9

このトピックに対応:

/programming/3613989/what-of-traffic-is-network-overhead-on-top-of-http-s-requests

最大セグメントサイズ(TCPまたはIPヘッダーを含まない)は、通常、レイヤー間でMTUのサイズからヘッダーサイズを引いた値にネゴシエートされます。イーサネットの場合、MTUは通常1500バイトに構成されます。TCPヘッダーは160ビット、つまり20バイトです。IPv4ヘッダーの固定部分は160ビット、つまり20バイトです。... したがって:

  • HTTP over TCP / IPv4の場合

オーバーヘッド= TCP + IP = 40バイト

ペイロード= 1500〜40 = 1460バイト

オーバーヘッド%= 2%(40 * 100/1460)

デフォルトのDebianディストリビューションを使用したTCPモードでの100 Mbitおよび1Gbit iperfの結果は次のとおりです。

[  5] local 10.0.51.1 port 5001 connected with 10.0.51.20 port 45009
[  5]  0.0-10.0 sec   112 MBytes  94.1 Mbits/sec
[  4] local 10.0.51.1 port 5001 connected with 10.0.51.94 port 35065
[  4]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec

MTUを9000に上げることで、オーバーヘッドをほぼ2%に下げることができます。

[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  1.14 GBytes   982 Mbits/sec

しかし、それはもっと少ないはずではありませんか?

overhead = TCP + IP = 40 bytes
payload = 9000 - 40 = 8960 bytes
overhead % = 0.4% (40 * 100 / 8960)

なぜ実際の「帯域幅損失」は理論よりも著しく大きいのですか?式に何か価値のあるものが欠けている場合は?

回答:


15

イーサネットパケット1.5k

1500-20 B(IPv4)-20 B(TCP +チェックサム)= 1460 B DATA(および40 Bオーバーヘッド)

40 B + 14 B(イーサネット)+ 4 B(FCS)+ 12 B(フレーム間ギャップ)+ 8 B(プリアンブル)= 78 Bオーバーヘッドを追加

78/1460 * 100 = 5.34%のオーバーヘッド

1460 /(1460 + 78)* 100 = 94.93%スループット/グッドプット

1,000,000,000(1ギガビット)* 94.93%= 949メガビット/秒(0.949ギガビット/秒)

理論値と実際値の間に(949-941)/ 949 * 100 = 0.84%の誤差をもたらす941Mbit / sを測定しました。


ジャンボパケット9k-理論上の最大

(9000-40) / ( 9000 - 40 + 78 ) *100 = 99.14%  (Overhead 0.86%)  

1,000,000,000(1 ギガビット)* 99.14%= 991メガビット/秒(0.99ギガビット/秒)


1
スロースタート機能の影響もあるかもしれませんが、十分な大きさかどうかはわかりません。ありがとうございました。:)
agrrh 2015

ああ、イーサネットにはフレームの最後に4バイトのFCSがあります。これを計算に追加します。
Pieter

4

オーバーヘッドは通常、合計データサイズに基づいて計算されます。このようにして、図は効率値と一致します。

TCP over IPv4 over Ethernetの場合(ヘッダーオプションなし):

  • L1オーバーヘッド-プリアンブル、IPG:8 + 12 = 20
  • L2オーバーヘッド-イーサネットヘッダー、FCS = 18
  • L3オーバーヘッド-IPv4ヘッダー= 20
  • L4オーバーヘッド-TCPヘッダー= 20

L3の最大パケットサイズが1500の場合、L1の合計データサイズは1500 + 18 + 20 = 1538バイト、最大のL4ペイロードサイズは1500-20-20 = 1460バイトになります

  • オーバーヘッド:78/1538 * 100%= 5.07%
  • 効率:1460/1538 * 100%= 94.93%

9Kジャンボフレーム(非802.3)、あなたが取得したいです

  • オーバーヘッド:78/9038 * 100%= .86%
  • 効率:8960/9038 * 100%= 99.14%

これらは理論上の最良の値です。現実には、ハードウェアとOSのオーバーヘッドによって、効率の値が多少損なわれることもあります。オフロードやマルチコア割り込みステアリングなどの機能により、処理のオーバーヘッドを削減し、理論上の数値に近づけることができます(高速NICの場合により関連性があります)。ピーターがすでに指摘したように、測定したものはかなりリアルに見えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.