I have a simple C# application that uses UDP multicast in a single-receiver, single-sender scenario. The goal is to get message delivery as fast as possible in a local network environment.
I have used SocketAsyncEventArgs/SendAsync/ReceiveAsync, BeginSend/BeginReceive, Threads/Send/Receive, and have tried both PGM and UDP multicast.
Each implementation attempt works OK for repeated message delivery up to around 1000 messages with local send, local receive. After that, the performance starts to drop exponentially. Where 1000 messages take a few hundredths of a second, 10,000 messages might take anywhere from 2-10 seconds.
Does anyone have experience in high-performance UDP/PGM multicasting? What is the best design to get maximum throughput?
Update
Right now, it's just a single program running locally - 1 application with 1 sender and 1 receiver. The test messages are 4 bytes.