1

I have a server application which send UDP packets at 200Mbps speed. The output ethernet interface is 1000Mbps. But UDP packets burst loss in a irregular interval. I noticed the field SndbufErrors in /proc/net/snmp increased as long as packet loss issue occurred. The packet loss not exists if UDP packets are sent to loopback interface.

There is not any error return by udp.send.

I have digged into Linux kernel, but I'm missing when I reach the route subsystem.

What does SndbufErrors mean? Why does the number increase?

LiJunjie
  • 90
  • 1
  • 11
  • what size are the packets? Most network interfaces have a "packets per second" limit as well as a "Mbps" limit. – Alnitak Nov 11 '12 at 09:41
  • Packets size is around 1140 byte. How to check 'packets per second' in Linux? – LiJunjie Nov 11 '12 at 09:47
  • At that packet size it's unlikely to be packet size related - this is normally only a problem with very small packets (e.g. < 100 bytes) – Alnitak Nov 11 '12 at 09:48
  • Ah, there are also lots of small packets which exactly less than 100 bytes. The phenomenon got from captured packets with `tcpdump` is that OS suddenly pause to send UDP packets in around 960ms. Then OS continue to send UDP packets, but burst packet loss occurs. Does the 'packets per second' limitation cause that phenomenon? – LiJunjie Nov 11 '12 at 10:27
  • SndbufErrors is to count if there is not enough space in send buffer i think. If packet loss is not there when sending through loopback then there is some problem with the driver you are using with the 1G card. You can check #netstat -S under UDP section and see were it actually drops. You can tune the values of net.core.rmem_default net.core.wmem_default net.core.rmem_max net.core.wmem_max and see if it goes away. if not there is some issue with driver like http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2019944 – Ranjith Ruban Nov 18 '12 at 11:53
  • Which layer the `send buffer` located? I think the `send buffer` may be the output queue in datalink layer, rather than socket buffer. Actually, UDP don't have send buffer as descripted in UNPv2. – LiJunjie Nov 19 '12 at 07:27
  • After several tests, I think the issue is because `blade virtual connect`. But I have no idea why `virtual connect` cause udp `SndbuffErrors` in OS level. – LiJunjie Nov 19 '12 at 07:35

0 Answers0