Understanding "cat proc/net/udp"

0

# cat /proc/net/udp | egrep "sl|3ADBFE0A"
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode ref pointer drops             
   16: 3ADBFE0A:007B 00000000:0000 07 00000000:00000000 00:00000000 00000000    74        0 40124 2 f203ca80 0                 
  509: 3ADBFE0A:0868 00000000:0000 07 00008C00:00000000 00:00000000 00000000     0        0 79208333 2 ea226340 0

I would like to seek for deeper and more beginner friendly explanation of the fields of the "cat proc/net/udp" output, especially the tx_queue.

From the proc(5) man page:

/proc/net/udp
          Holds a dump of the UDP socket table. Much of the information is not of use apart from debugging. The "sl" value is the kernel hash slot for the socket, the "local address" is  the  local  address  and
          port  number pair.  The "remote address" is the remote address and port number pair (if connected). ’St’ is the internal status of the socket.  The ’tx_queue’ and ’rx_queue’ are the outgoing and incom-
          ing data queue in terms of kernel memory usage.  The "tr", "tm->when", and "rexmits" fields hold internal information of the kernel socket state and are only useful  for  debugging.   The  "uid"  field
          holds the effective UID of the creator of the socket.

If I am correct with my understanding that when this [tx_queue] value is greater than 0 meaning that there are more packets that are waiting to be sent and that the application is not fast enough to send those packets?

fearfox

Posted 2015-12-17T10:00:52.123

Reputation: 1

Answers

0

If tx_queue is greater than 0, then it is the OS that cannot deliver packets as fast as the sending application is trying to send them. I guess it could also mean that Ethernet Flow Control is at work. In any event, the sending application is not the culprit.

The actual value in tx_queue will be hexadecimal.

Eugene Beresovsky

Posted 2015-12-17T10:00:52.123

Reputation: 707