UDP packet loss

I read from http://luxul.com/wp-content/documents/LUX-HT-iPerf.pdf that "the greater the UDP data rate, the greater the likelihood that your packet loss percentage will increase".

why is that? Thanks
LVL 1
leblancAccountingAsked:
Who is Participating?
 
nociConnect With a Mentor Software EngineerCommented:
@EndPoint:
Per definition, if there is no UDP socket waiting for a packet (=program reading socket)  
a packet is dropped.  In other words if a server is busy doing other work without a pending read on the socket, an incoming packet will be discarded.

@Network:
Also if a router has no memory to receive packets for passing on, it is expected that it should drop the UDP packets it has queued over any TCP packets.
0
 
kevinhsiehConnect With a Mentor Commented:
This is basic forwarding of IP traffic 101. The more packets you have going over your links, the greater the likelihood that there will be congestion or some event that causes packets to not get to their destination. The statement applies to ALL IP traffic types. In general, if a piece of networking equipment is receiving traffic faster than is can forward, the queues will fill until there is no more room in the transmit queue and all subsequent packets will be discarded until there is room in the queue again.

UDP will let you try to squeeze 1 Gb of traffic into a 1 Mb pipe, in which case at least 99% of your traffic won't make it through. TCP has built in flow control and will slow down when it senses that packets are getting dropped. UDP doesn't have any flow control.
0
 
Brian UtterbackConnect With a Mentor Principle Software EngineerCommented:
Noci, your statement about end point drops is not totally true. There is a receive buffer associated with all UDP sockets and the data from the received packet will be queued  until the server does a read on the socket. However, there is only a limited amount of space available in the buffer, so a few packets will be queued and after that packets will be dropped until a read is done to free up more space in the receive buffer.

But everything else is true. UDP has no flow control mechanism. As long as you can transmit more packets than the pipe between the systems can handle, some of the packets will be dropped.
0
Improve Your Query Performance Tuning

In this FREE six-day email course, you'll learn from Janis Griffin, Database Performance Evangelist. She'll teach 12 steps that you can use to optimize your queries as much as possible and see measurable results in your work. Get started today!

 
nociConnect With a Mentor Software EngineerCommented:
@blu, you are technically correct, but for the ease of communication about dropping it doesn't help to tell that there is a UDP buffer with a size depending on config & memory availablity. For a massive transport there is a lack of space. And programmers CANNOT rely on that buffer.
0
 
leblancAccountingAuthor Commented:
So if I understand correctly, there is a buffer notion that will store the arrival packets. If the buffer is full then packets will be dropped. The buffer can be on the network devices or on the OS. Correct? and of course the buffer size varies depending on the devices.
0
 
Brian UtterbackConnect With a Mentor Principle Software EngineerCommented:
Every packet has to be somewhere if it hasn't been dropped. You sender can send at some maximum rate, the receiver can receive at some maximum rate, and there is some limited amount of memory space total on all of the network devices in between. As you increase the data rate at the transmission end, each packet must be somewhere until it has been received. If at any point, any device receives packets from the transmitter at a faster rate than it can transmit them to the next device, then eventually the buffer for that device will fill and it will start to drop packets. But you have to keep in mind that network devices and wires are generally shared resources, so other traffic can fill the buffer or compete with the wire. And once the transmission rate exceeds the rate at which the receiver can receive packets must be dropped and any further increase in rate will cause more packets to be dropped. That is what your original post is saying.
0
 
nociConnect With a Mentor Software EngineerCommented:
wires also act as a buffer btw. a 1500 byte packet can be stored in ~2.5Km of glass fiber, when 1Gbps speed is the transferspeed.
0
 
leblancAccountingAuthor Commented:
So it does not matter how big my connection is with UDP. I can have a 50mbps link but if my end devices cannot buffer the packets correctly, they can be dropped. Correct?
0
 
Brian UtterbackConnect With a Mentor Principle Software EngineerCommented:
That is true, but I am not sure about your use of the word "correctly". It isn't a matter so much of correctly, but whether or not the buffers are large enough in comparison to the bandwidth. Just figure that if packets are produced faster than they can be consumed then they will be dropped. This can happen momentarily or continuously. All UDP applications should expect that some packets will occasionally be dropped, with a faster transmission rate resulting in a higher drop rate, which is what the original quote said.
0
 
leblancAccountingAuthor Commented:
Right "large enough". Thx
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.