Hide Forgot
Description of problem: tcp->snd_cwd is a u32, but ss treats it like a signed int. This results in negative bandwidth calculations. src/include/linux/tcp.h 202: is_cwnd_limited:1;/* forward progress limited by snd_cwnd? */ 232: u32 snd_cwnd; /* Sending congestion window */ 233: u32 snd_cwnd_cnt; /* Linear increase counter */ 234: u32 snd_cwnd_clamp; /* Do not allow snd_cwnd to grow above this */ 235: u32 snd_cwnd_used; 236: u32 snd_cwnd_stamp; >>> Probably need to change this %d to a %u, and deal with the casting to double below. <<<< iproute2-3.10.0/misc/ss.c 1270 if (s.cwnd != 2) 1271 printf(" cwnd:%d", s.cwnd); 1416 if (info->tcpi_snd_cwnd != 2) 1417 printf(" cwnd:%d", info->tcpi_snd_cwnd); 1431 if (rtt > 0 && info->tcpi_snd_mss && info->tcpi_snd_cwnd) { 1432 printf(" send %sbps", 1433 sprint_bw(b1, (double) info->tcpi_snd_cwnd * 1434 (double) info->tcpi_snd_mss * 8000000. 1435 / rtt)); Sample data (DCTCP): [root@tesla02 ~]# /usr/lpp/mmfs/bin/mmdsh -F host.list 'ss -e -t -o -i | grep -A 1 gpfs | grep -A 1 10.219.31.131 | grep alpha' | grep -v tesla02 | sort | column -t tesla11: ts sack ecn ecnseen dctcp wscale:1,1 rto:11 rtt:0.144/0.047 ato:40 mss:1448 cwnd:1187830594 dctcp:(ce_state:0,alpha:15,ab_ecn:0,ab_tot:0) send 95554372228.4Mbps lastrcv:2 unacked:10 retrans:0/21231546 reordering:40 rcv_rtt:11.375 rcv_space:262236 tesla12: ts sack ecn ecnseen dctcp wscale:1,1 rto:11 rtt:0.109/0.028 ato:40 mss:1448 cwnd:-679123792 dctcp:(ce_state:0,alpha:15,ab_ecn:0,ab_tot:0) send 384274597709.5Mbps lastrcv:1 unacked:13 retrans:0/11495136 sacked:2 reordering:38 rcv_rtt:12.375 rcv_space:262236 tesla13: ts sack ecn ecnseen dctcp wscale:1,1 rto:11 rtt:0.095/0.035 ato:40 mss:1448 cwnd:28 dctcp: Version-Release number of selected component (if applicable): iproute-3.10.0-54.el7_2.1 How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
Maybe Hangbin already had this in his queue http://marc.info/?l=linux-netdev&m=147453365410663&w=2
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2017:2171