Feature #5059
openCongestion Detection: Monitor NIC incoming buffer queue
0%
Description
I noticed in VM experiments that often NFD processing speed is the performance bottleneck, which leads to many/all of packet loss being caused by drops at a router's incoming queue.
One solution would be to monitor the incoming queue, and if it exceeds some threshold to put in a congestion mark to tell the consumers to slow down.
The relevant buffer information can be queried with the "ss" (socket status) tool, although only in the version available in Ubuntu 18.04 and later.
ss -u -m
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 10.1.0.1:6363 10.2.0.3:6363
skmem:(r20352,rb212992,t0,tb212992,f128,w0,o0,bl0,d2549)
The relevant information here are the 2549 socket drops.
-m, --memory
Show socket memory usage. The output format is:
skmem:(r<rmem_alloc>,rb<rcv_buf>,t<wmem_alloc>,tb<snd_buf>,
f<fwd_alloc>,w<wmem_queued>,o<opt_mem>,
bl<back_log>,d<sock_drop>)
We could query this information with the netlink API, however it is quite complicated to use.
For example, the ss tool itself uses this API, and takes up over 5000 lines of code. https://github.com/shemminger/iproute2/blob/master/misc/ss.c