Ethernet numbers cheat sheet

by moorray

Every now and then I find myself calculating basic things like maximum frame rate or UDP throughput for one version of Ethernet or the other. It usually involve googling one or two values (every version of Ethernet seems to have different IFG length, hallelujah!). I intend to write down here every Ethernet number I calculate from now on, so I don’t have to keep the posted notes with them around my desk.

min - value for minimal size frame
max - value for maximal size frame
jum - value for 4k-payload jumbo frame

Packets per second: rate/(IFG + Preamble + L2 header + payload + FCS)

PPS min max jum
10M 14,881 813 302
100M 148,810 8,127 3,024
1G 1,562,500 81,486 30,266
10G 16,233,766 816,460 302,883
100G 171,232,877 8,185,986 3,031,773

UDP throughput: (paload – L3/L4 headers) * PPS

UDP tp [bps] min max jum
10M 2,142,857 9,570,871 9,840,348
100M 21,428,571 95,708,713 98,403,483
1G 225,000,000 959,582,790 984,987,893
10G 2,337,662,338 9,614,630,960 9,857,039,011
100G 24,657,534,247 96,398,166,339 98,666,019,888

Frame transmission time: (L2 header + payload + FCS)/rate

frame time min max jum
10M 51.2us 1.214ms 3.291ms
100M 5.12us 121.4us 329.1us
1G 512ns 12.144us 32.91us
10G 51.2ns 1.214us 3.291us
40G 12.8ns 304ns 822ns
100G 5.12ns 121.4ns 329.1ns

Two things that came to my mind while writing this:

  • If Cisco Nexus 9000 supports 36x 40GbE ports per board that board could be forwarding 2.5Gpps with minimal packets! That’s a packet per cycle if you use Intel CPUs!
  • Enabling jumbo frames with anything < 1GbE kills real time. If you want 9k frames you should probably go 10 GbE…


For calculations I used:
speed – nominal (10 Mbps for 10M Ethernet; 100 Mbps for Fast Ethernet etc)
preamble – 8B (note: preamble is optional/reusable in some variants of 100/10/1GbE)
L2 header + FCS – 6+6+2+4 = 18B
payload min – 46B
payload max – 1500B
IP + UDP header – 28B

10M 12 100M 12
1G 8 10G 5 100G 1