Answer the question
In order to leave comments, you need to log in
How to get maximum throughput with UDP broadcast in gigabit network?
There is some specific equipment - several boards with FPGAs on board. I need to send them data (lots of data) over ethernet.
It was decided to send UDP broadcasts.
Packets average about 1300 bytes.
The PC program opens a UDP socket and uses it to send packets. That is, I use the standard WIndows API of the computer.
From my laptop (Core i7, windows 8.1 prof) I can easily send more than 900 Mbps since the network is gigabit. All OK.
On other computers, it happens that more than 250 Mbps can not be pumped. Why?
All settings of the network card seem to be the same (offloading UDP checksum, RSS, jumbo frames, interrupt moderation, etc. ..). The firewall is off. Static IP assigned, IPv6 disabled. I tried the QoS settings for the application, but it seems that they can only limit the bandwidth, but it can not be raised. Used PowerShell commands to assign application QoS properties like new-netqospolicy -name "qqq" -app "myApp.exe" -proto UDP -minbw 90 and other commands. In general, they influence but allow you to limit - you can’t raise it.
Interestingly, one application can send 250Mbps. And two applications already together send more than 400 Mbps. That is, in principle, the network card itself is quite capable of sending, but is there some kind of bandwidth limit on the process?
On my Core i7 laptop, I don't really set anything up at all.
What to do?
Answer the question
In order to leave comments, you need to log in
It was decided to send UDP broadcasts.I hope you will at least make it into a multicast.
All settings of the network card seem to be the same (offload UDP checksumIf I were you, I wouldn't consider it at all.
.RSSas far as I remember, RSS distributes incoming packets, I didn’t understand how this technology will help you
, jumbo framesAgain, I did not understand how the jumbo frames setting should improve the delivery of frames less than 1500 bytes in size.
What to do?Use Linux/FreeBSD OS with normal network cards (Intel 82576 and similar). For FreeBSD, try NETMAP. Windows OS is not the best option for high performance network traffic processing. If for some reason you cannot abandon Windows, try to separate devices to different addresses (possibly multicast) and send traffic from a separate process for each device (or group of devices).
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question