Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Having trouble achieving 1Gbit UDP throughput

For UDP packets with a payload less then 1470, is it possible to achieve 1Gbit throughput? Due to the small packet size, there should be some bottlenecks in achieving such throughput (I/O, OS, network, etc.). I imagine drivers and hardware might have to be tuned to small packet/high throughput. Has anybody attempted successfully achieved 1Gbit throughput with small UDP packets?

like image 237
PiNoYBoY82 Avatar asked Sep 19 '08 02:09

PiNoYBoY82


People also ask

What is the max throughput for a 1518 byte frame?

So the max throughput, given a 1518 byte frames, is 974Mbps (986 – 5 – 7) or 121MB/s. Note that these numbers do not include Ethernet frame, IP, TCP or UDP overhead, so we will take an additional hit there. Let’s take a look at a 9k MTU (jumbo frames) with all accompanying overhead for TCP.

What is the theoretical throughput of Gigabit Ethernet?

Theoretical throughput of Gigabit Ethernet with jumbo frames, and using TCP: 997Mbps –.886 – 1.33 – 1.55 –.443 – 2.21 – 2.21 – 1.33 = 987Mbps or 123MB/s. The approximate throughput for Gigabit Ethernet without jumbo frames and using TCP is around 928Mbps or 116MB/s. Limitations in Real-world applications

What is the uncoded payload of Gigabit Ethernet?

When the 8b10b line coding is removed from the raw data stream by the Gigabit Ethernet chipset, this allows an uncoded payload of exactly 1.0Gbps.

What is the raw line rate of a Gigabit Ethernet interface?

Also covered is how that relates to throughput of a Wireless Link with Gigabit Ethernet interfaces. On a Fibre Optic Gigabit Ethernet Network (1000BaseSX, 1000BaseLX), the raw line rate is 1.25Gbps. This raw data rate is chosen to include 8b10b Line Coding.


2 Answers

I've previously done some experimenting with throughput on gigabit links on relatively standard pc hardware, albeit doing just transmits (via tcpreplay), rather than udp.

The biggest bottleneck that I found was in just getting packets to the NIC itself. This can be significantly improved by using a high speed bus to interface to your NIC (eg. a 4x pci-express NIC). But even with this there was a very definate packet/second limit. Obviously increasing the packet size would allow you to utilize more of your bandwidth while reducing processor load.

Along the same lines as the comment by Steve Moyer, there is a theoretical limit for the utilization of any network. In my experiments (which were being done on a completely quiet network) I was seeing a maximum of approximately (and only off the top of my memory) 900Mb/s. This was with cpu loads of 30 to 40%.

It's more likely that the limitation is going to be imposed by your system hardware (ie. PC) than your network infrastructure - any network switch worth its salt should be capable of sustaining full speed network access with small packets - certainly at much higher rates than most PCs can cope with.

like image 84
Andrew Edgecombe Avatar answered Oct 05 '22 10:10

Andrew Edgecombe


What type of network connection are you using? If you're using a 1000BaseTx/Fx link, don't expect more than 80% throughput with maximum sized packets. As your packet size decreases, the overhead for spacing, synchronization, Ethernet headers, IP headers and UDP headers increases in relation to the payload and therefore degrades your maximum throughput even more.

like image 33
Steve Moyer Avatar answered Oct 05 '22 09:10

Steve Moyer