I’ve written a custom C# program that receives about 1MByte/sec of UDP multicast data. Its running on a Gigabit NIC, connected to a dedicated server.
At some times of the day, when the network traffic is high, it loses UDP packets.
- If I have two copies of the program running, they all receive 100% of the UDP packets over an 8-hour period.
- If I have three copies of the program running, they all start losing the occasional UDP packet over the same 8-hour period.
In both cases, CPU usage is only about 15% peak.
How is this possible?
There is actually two buffers at work here: the hardware buffers (on the network card) and the windows side buffers (set in .NET). We reconfigured the hardware buffers on the network card to be 1024KB instead of 256KB, hopefully this solves the problem.