TCP/IP overhead: what "94% of line rate" means

A 1 Gb/s Ethernet port never shows 1000 Mb/s in a speed test. The best result is about 940–949 Mb/s. The missing bits carry packet headers and gaps between packets. This page shows the arithmetic from RFC 6349.

The source

RFC 6349, *Framework for TCP Throughput Testing*, §4.1.1, states that each standard Ethernet frame takes 1538 bytes on the wire: "MTU is 1500 Bytes, Ethernet is 14 Bytes, CRC32 is 4 Bytes, IFG is 12 Bytes, Preamble is 7 Bytes, and SFD is 1 Byte." It gives "Maximum TCP Throughput = (MTU - 40) in Bytes X 8 bits X max FPS" (RFC 6349).

The arithmetic

Part of each frameBytesCarries your data?
TCP payload1460yes
TCP header20no
IPv4 header20no
Ethernet header14no
CRC324no
Inter-frame gap12no
Preamble + SFD8no
Total on the wire1538

Byte sizes from RFC 6349 §4.1.1; the TCP and IPv4 headers are the RFC's "40" bytes.

Efficiency = 1460 / 1538 = 94.93% (computed).

Results by port speed

CasePayload per frameEfficiencyAt 1 Gb/sAt 2.5 Gb/s
IPv4, no TCP options1460 B94.93% (computed)949.3 Mb/s (computed)2373 Mb/s (computed)
IPv4, TCP timestamps on1448 B94.15% (computed)941.5 Mb/s (computed)2354 Mb/s (computed)
IPv6, no TCP options1440 B93.63% (computed)936.3 Mb/s (computed)2341 Mb/s (computed)

RFC 6349's own table gives 949.2 Mb/s for 1000 Mb/s (RFC 6349). The 12-byte timestamp option is defined in RFC 7323 (RFC 7323); the 1448-byte row uses that size. The IPv6 row uses a 40-byte IPv6 header instead of 20 bytes for IPv4 (RFC 8200).

What a carrier says

AT&T states that 1 Gbps Ethernet ports see "IP/Ethernet framing overhead limitations … resulting in an estimated max throughput of 940Mbps" (AT&T). That matches the timestamps-on row above.

What this means for you

Sources

UNSOURCED count: 1 (Wi-Fi MAC overhead percentage).