TCP bug in 1.3.88 : frag packets confuse linux

Goemon (goemon@sasami.anime.net)
Mon, 15 Apr 1996 09:23:06 -0700 (PDT)


I applied the patch for tcp_input.c as per Eric Schenk's message, and I still
manange to get hangs ftp'ing. Here is a trace from tcpdump:

10:23:24.332765 sasami.ftp-data > bitgate.1097: . ack 511001 win 7168 [tos 0x8]
10:23:24.332765 bitgate.1097 > sasami.ftp-data: . 511001:512461(1460) ack 1 win 29696 [tos 0x8]
10:23:24.332765 bitgate.1097 > sasami.ftp-data: . 512461:513921(1460) ack 1 win 29696 [tos 0x8]
10:23:24.332765 bitgate.1097 > sasami.ftp-data: . 513921:515381(1460) ack 1 win 29696 [tos 0x8]
10:23:24.332765 bitgate.1097 > sasami.ftp-data: . 515381:516841(1460) ack 1 win 29696 [tos 0x8]
10:23:24.332765 sasami.ftp-data > bitgate.1097: . ack 516841 win 3072 [tos 0x8]
10:23:24.342765 bitgate.1097 > sasami.ftp-data: . 516841:518301(1460) ack 1 win 29696 [tos 0x8]
10:23:24.342765 bitgate.1097 > sasami.ftp-data: . 518301:519761(1460) ack 1 win 29696 [tos 0x8]
10:23:24.342765 sasami.ftp-data > bitgate.1097: . ack 519761 win 2048 [tos 0x8]
10:23:24.352765 bitgate.1097 > sasami.ftp-data: . 519761:521221(1460) ack 1 win 29696 [tos 0x8]
10:23:24.352765 sasami.ftp-data > bitgate.1097: . ack 521221 win 2048 [tos 0x8]
10:23:24.362765 bitgate.1097 > sasami.ftp-data: . 521221:522681(1460) ack 1 win 29696 [tos 0x8]
10:23:24.362765 sasami.ftp-data > bitgate.1097: . ack 522681 win 0 [tos 0x8]
10:23:24.432765 bitgate.1097 > sasami.ftp-data: . ack 1 win 29696 [tos 0x8]
10:23:24.432765 sasami.ftp-data > bitgate.1097: . ack 522681 win 0 [tos 0x8]
10:23:24.492765 bitgate.1097 > sasami.ftp-data: . ack 1 win 29696 [tos 0x8]
10:23:24.492765 sasami.ftp-data > bitgate.1097: . ack 522681 win 0 [tos 0x8]
10:23:24.552765 bitgate.1097 > sasami.ftp-data: . ack 1 win 29696 [tos 0x8]
10:23:24.552765 sasami.ftp-data > bitgate.1097: . ack 522681 win 0 [tos 0x8]
10:23:24.612765 bitgate.1097 > sasami.ftp-data: . ack 1 win 29696 [tos 0x8]
10:23:24.612765 sasami.ftp-data > bitgate.1097: . ack 522681 win 0 [tos 0x8]
10:23:24.642765 sasami.ftp-data > bitgate.1097: . ack 522681 win 0 [tos 0x8]
10:23:24.642765 sasami.ftp-data > bitgate.1097: . ack 522681 win 2048 [tos 0x8]
10:23:24.642765 sasami.ftp-data > bitgate.1097: . ack 522681 win 4096 [tos 0x8]
10:23:24.642765 bitgate.1097 > sasami.ftp-data: . 522681:524141(1460) ack 1 win 29696 [tos 0x8]
10:23:24.642765 sasami.ftp-data > bitgate.1097: . ack 524141 win 3072 [tos 0x8]
10:23:24.652765 sasami.ftp-data > bitgate.1097: . ack 524141 win 6144 [tos 0x8]
10:23:24.652765 bitgate.1097 > sasami.ftp-data: P 524141:525601(1460) ack 1 win 29696 [tos 0x8]
10:23:24.652765 sasami.ftp-data > bitgate.1097: . ack 525601 win 10240 [tos 0x8]
10:23:24.652765 bitgate.1097 > sasami.ftp-data: . 525601:527061(1460) ack 1 win 29696 [tos 0x8]
10:23:24.652765 sasami.ftp-data > bitgate.1097: . ack 527061 win 16384 [tos 0x8]
10:23:24.662765 bitgate.1097 > sasami.ftp-data: . 527061:528521(1460) ack 1 win 29696 [tos 0x8]
10:23:24.662765 sasami.ftp-data > bitgate.1097: . ack 528521 win 23552 [tos 0x8]
10:23:24.682765 bitgate.1097 > sasami.ftp-data: . 528521:529965(1444) ack 1 win 29696 (frag 4471:1464@0+) [tos 0x8]
10:23:24.692765 bitgate.1097 > sasami.ftp-data: . 528521:529981(1460) ack 1 win 29696 [tos 0x8]
10:23:24.692765 sasami.ftp-data > bitgate.1097: . ack 543445 win 22528 [tos 0x8]
10:23:24.692765 bitgate.1097 > sasami.ftp-data: . 529981:531441(1460) ack 1 win 29696 [tos 0x8]
10:23:24.702765 sasami.ftp-data > bitgate.1097: . ack 543445 win 29696 [tos 0x8]
10:23:25.052765 bitgate.1097 > sasami.ftp-data: . 528521:529981(1460) ack 1 win 29696 [tos 0x8]
10:23:25.052765 sasami.ftp-data > bitgate.1097: . ack 543445 win 29696 [tos 0x8]
10:23:25.852765 bitgate.1097 > sasami.ftp-data: . 528521:529981(1460) ack 1 win 29696 [tos 0x8]
10:23:25.852765 sasami.ftp-data > bitgate.1097: . ack 543445 win 29696 [tos 0x8]
10:23:27.452765 bitgate.1097 > sasami.ftp-data: . 528521:529981(1460) ack 1 win 29696 [tos 0x8]
10:23:27.452765 sasami.ftp-data > bitgate.1097: . ack 543445 win 29696 [tos 0x8]
10:23:30.652765 bitgate.1097 > sasami.ftp-data: . 528521:529981(1460) ack 1 win 29696 [tos 0x8]
10:23:30.652765 sasami.ftp-data > bitgate.1097: . ack 543445 win 29696 [tos 0x8]
10:23:37.052765 bitgate.1097 > sasami.ftp-data: . 528521:529981(1460) ack 1 win 29696 [tos 0x8]
10:23:37.052765 sasami.ftp-data > bitgate.1097: . ack 543445 win 29696 [tos 0x8]

The weirdness seems to happen exactly at the first fragged packet, in this
case:

10:23:24.682765 bitgate.1097 > sasami.ftp-data: . 528521:529965(1444) ack 1 win 29696 (frag 4471:1464@0+) [tos 0x8]

After this packet is sent, the receiving end gets confused and sends an ACK for
a completely nonsensical sequence number:

10:23:24.692765 sasami.ftp-data > bitgate.1097: . ack 543445 win 22528 [tos 0x8]

sasami and bitgate are connected via ethernet.

I have a raw packet dump from tcpdump (via the 'w' option) if anyone wants to
examine it. It's only 47kb.

-Dan