Cố gắng tìm hiểu chi phí TCP chính xác


9

Tương ứng chủ đề này:

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

Kích thước phân đoạn tối đa (không bao gồm các tiêu đề TCP hoặc IP) thường được thỏa thuận giữa các lớp với kích thước của MTU trừ đi kích thước tiêu đề. Đối với Ethernet MTU thường được cấu hình ở mức 1500 byte. Tiêu đề TCP là 160 bit, hoặc 20 byte. Phần cố định của tiêu đề IPv4 là 160 bit, hoặc 20 byte. ... Như vậy:

  • cho HTTP qua TCP / IPv4

phí = TCP + IP = 40 byte

tải trọng = 1500 - 40 = 1460 byte

chi phí% = 2% (40 * 100/1460)

Đây là kết quả iperf 100 Mbit và 1Gbit trong chế độ TCP với các bản phân phối Debian mặc định:

[  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

Tôi có thể hạ thấp nó xuống gần 2% chi phí bằng cách nâng MTU lên 9000:

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

Nhưng nó có nên ít hơn không?

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

Tại sao "mất băng thông" thực tế lớn hơn đáng kể so với lý thuyết? Nếu công thức thiếu thứ gì có giá trị?

Câu trả lời:


15

Gói Ethernet 1,5k

1500 - 20 B (IPv4) - 20 B (TCP + checksum) = 1460 B DATA (và 40 B Overhead)

Thêm 40 B + 14 B (Ethernet) + 4 B (FCS) + 12 B (Khoảng cách liên khung) + 8 B (lời mở đầu) = 78 B Chi phí trên cao

78/1460 * 100 = 5,34% phí

1460 / (1460 + 78) * 100 = 94,93% Thông lượng / Thông lượng

1.000.000.000 (1Gbit) * 94,93% = 949Mbit / giây (0,949Gbit / giây)

bạn đã đo 941Mbit / s cho (949 - 941) / 949 * 100 = 0,84% lỗi giữa lý thuyết và thực tế.


Gói Jumbo 9k - Tối đa lý thuyết

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

1.000.000.000 (1Gbit) * 99,14% = 991Mbit / s (0,99Gbit / s)


1
Có lẽ cũng có ảnh hưởng của tính năng khởi động chậm, nhưng tôi không chắc nó có đủ lớn không. Cảm ơn bạn. :)
agrrh

À, ethernet có FCS 4 byte ở cuối khung, hãy để tôi thêm nó vào phép tính.
Pieter

4

Chi phí thường được tính dựa trên tổng kích thước dữ liệu. Bằng cách đó, con số phù hợp với giá trị hiệu quả.

Đối với TCP qua IPv4 qua Ethernet, bạn có (không có tùy chọn tiêu đề):

  • Chi phí L1 - mở đầu, IPG: 8 + 12 = 20
  • Chi phí L2 - Tiêu đề Ethernet, FCS = 18
  • Chi phí L3 - Tiêu đề IPv4 = 20
  • Chi phí L4 - Tiêu đề TCP = 20

Kích thước gói tối đa L3 là 1500 kết quả trong tổng kích thước dữ liệu L1 là 1500 + 18 + 20 = 1538 byte và kích thước tải trọng L4 tối đa là 1500-20-20 = 1460 byte .

  • Chi phí trên: 78/1538 * 100% = 5,07%
  • Hiệu quả: 1460/1538 * 100% = 94,93%

Với khung hình khổng lồ 9k (không phải là 802.3), bạn sẽ nhận được

  • Chi phí trên: 78/9038 * 100% = .86%
  • Hiệu quả: 8960/9038 * 100% = 99,14%

Đây là những giá trị lý thuyết, trường hợp tốt nhất . Trong cuộc sống thực, bạn cũng có một số chi phí phần cứng và hệ điều hành hơi ăn sâu vào giá trị hiệu quả. Các tính năng như giảm tải và điều khiển ngắt đa lõi có thể giảm chi phí xử lý và giúp bạn đến gần hơn với các số liệu lý thuyết (phù hợp hơn với các NIC tốc độ cao hơn). Những cái bạn đã đo trông khá thực tế như của Peter đã chỉ ra.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.