[Bug 265588] [TCP] - tcp send a retransmission identical sequence number packet with different payload
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 20 Oct 2022 09:47:12 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265588
--- Comment #10 from Richard Scheffenegger <rscheff@freebsd.org> ---
There seems to be a discrepancy in the TSO vs LRO payload bytes (maybe my
script is broken?):
Server:
2 10.234.1.9 35249 229 15928 11
72053392291 385714934591 419632206729 401031568921 410043220839
398170924830 381008236919 388657879560 400554947764
390059647829 401051361480
Client:
2 10.234.1.9 35249 229 11584 8
72053392291 385714934591 419632206729 401031568921 410043220839
398170924830 381008236919 388657879560
3 10.234.1.9 46833 229 4344 3
403699027891 383855600553 414816586574
The last 3 chunks from the server side trace, don't seem to be identical with
the three chunks received in a separate LRO aggregation (!).
This is how I create these chunk-sums:
tshark -r ClientIdenticalSeq.pcap -T fields -e frame.number -e ip.src -e
tcp.seq -e tcp.ack -e tcp.len -e tcp.options.sack_le -e tcp.options.sack_re -e
tcp.payload | awk '
//{
fr=int($5/1448);
if ((fr*1448 == $5) && (fr > 0)) {
print $1" "$2" "$3" "$4" "$5" "fr;
for (i=0;i<fr;i++) {
s = 0;
for (n=0;n<(1448/8);n++) {
v = sprintf("%d ", "0x"
substr($6,i*1448+n*8,8));
s = s + v;
}
f[s]++;
if (f[s] > 1) { printf("#") };
printf("%d \t", s);
}
}
printf("\n");
}
My expectation would be that the sums calculated this way for the tcp payload
is identical when TSO / LRO capture data...
Note that this difference is visible before the SACK retransmissions.
Was the capture created just before issuing the NFS read? Because the
expectation there would be for the sender side to transmit all the data in
sequence, and not skip over some data. It appears the captures were trimmed
after taking, in the middle of a loss recovery episode from a prior NFS read
IO...
--
You are receiving this mail because:
You are the assignee for the bug.