From owner-freebsd-bugs Tue Aug 27 20:57:44 2002 Delivered-To: freebsd-bugs@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id ACAE937B401 for ; Tue, 27 Aug 2002 20:57:26 -0700 (PDT) Received: from exchange.globalpac.com (exchange.wwwn.com [216.237.6.43]) by mx1.FreeBSD.org (Postfix) with ESMTP id C404243E6E for ; Tue, 27 Aug 2002 20:57:25 -0700 (PDT) (envelope-from JEggleston@wwwn.com) Received: by exchange.wwwn.com with Internet Mail Service (5.5.2653.19) id ; Tue, 27 Aug 2002 20:57:20 -0700 Message-ID: <1B588B0FBBADD311A69F00EA00E000E0BF3D11@exchange.wwwn.com> From: Jason Eggleston To: "'freebsd-bugs@freebsd.org'" Subject: TCP RFC 1323 bug Date: Tue, 27 Aug 2002 20:57:13 -0700 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Hi, I have a standard FreeBSD 4.6.2 install running qmail and saw a whole bunch of TCP sessions that weren't moving along very quickly. Looks like a bug in FreeBSD's implimentation of RFC 1323 (which is turned on by default). I turned RFC 1323 off, and my problem went away. Here is the problem that is hopefully fixed (maybe by PR kern/41552, I don't know). Basically, up until frame 23 everything appears fine, but there's no good reason to wait 64 seconds and start retransmitting old data, when the TCP window hasn't been reached... or I don't understand TCP. I've included the syn and syn-ack, frame 23 and 24, and an overall list of the conversation taken from ethereal with the payloads mostly deleted. Please let me know if this is fixed or if there is anything I can do to fix it. I have the complete packet dump for the TCP session. Thanks, -Jason Eggleston Frame 1 (74 on wire, 74 captured) Arrival Time: Aug 26, 2002 14:48:52.991788000 Time delta from previous packet: 0.000000000 seconds Time relative to first packet: 0.000000000 seconds Frame Number: 1 Packet Length: 74 bytes Capture Length: 74 bytes Ethernet II Destination: 00:90:69:6f:2c:22 (00:90:69:6f:2c:22) Source: 00:90:27:52:11:02 (00:90:27:52:11:02) Type: IP (0x0800) Internet Protocol, Src Addr: 216.237.6.33 (216.237.6.33), Dst Addr: 208.139.198.9 (208.139.198.9) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 60 Identification: 0x497c Flags: 0x04 .1.. = Don't fragment: Set ..0. = More fragments: Not set Fragment offset: 0 Time to live: 64 Protocol: TCP (0x06) Header checksum: 0x7b9c (correct) Source: 216.237.6.33 (216.237.6.33) Destination: 208.139.198.9 (208.139.198.9) Transmission Control Protocol, Src Port: 1863 (1863), Dst Port: 25 (25), Seq: 1644315094, Ack: 0 Source port: 1863 (1863) Destination port: 25 (25) Sequence number: 1644315094 Header length: 40 bytes Flags: 0x0002 (SYN) 0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...0 .... = Acknowledgment: Not set .... 0... = Push: Not set .... .0.. = Reset: Not set .... ..1. = Syn: Set .... ...0 = Fin: Not set Window size: 57344 Checksum: 0x35a8 (correct) Options: (20 bytes) Maximum segment size: 1460 bytes NOP Window scale: 0 bytes NOP NOP Time stamp: tsval 24777481, tsecr 0 Frame 2 (74 on wire, 74 captured) Arrival Time: Aug 26, 2002 14:48:53.051685000 Time delta from previous packet: 0.059897000 seconds Time relative to first packet: 0.059897000 seconds Frame Number: 2 Packet Length: 74 bytes Capture Length: 74 bytes Ethernet II Destination: 00:90:27:52:11:02 (00:90:27:52:11:02) Source: 00:90:69:6f:2c:22 (00:90:69:6f:2c:22) Type: IP (0x0800) Internet Protocol, Src Addr: 208.139.198.9 (208.139.198.9), Dst Addr: 216.237.6.33 (216.237.6.33) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 60 Identification: 0x6a75 Flags: 0x04 .1.. = Don't fragment: Set ..0. = More fragments: Not set Fragment offset: 0 Time to live: 108 Protocol: TCP (0x06) Header checksum: 0x2ea3 (correct) Source: 208.139.198.9 (208.139.198.9) Destination: 216.237.6.33 (216.237.6.33) Transmission Control Protocol, Src Port: 25 (25), Dst Port: 1863 (1863), Seq: 481092603, Ack: 1644315095 Source port: 25 (25) Destination port: 1863 (1863) Sequence number: 481092603 Acknowledgement number: 1644315095 Header length: 40 bytes Flags: 0x0012 (SYN, ACK) 0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not set .... .0.. = Reset: Not set .... ..1. = Syn: Set .... ...0 = Fin: Not set Window size: 64240 Checksum: 0x2e82 (correct) Options: (20 bytes) Maximum segment size: 1460 bytes NOP Window scale: 0 bytes NOP NOP Time stamp: tsval 0, tsecr 0 Frame 23 (1514 on wire, 1514 captured) Arrival Time: Aug 26, 2002 14:48:53.635669000 Time delta from previous packet: 0.000124000 seconds Time relative to first packet: 0.643881000 seconds Frame Number: 23 Packet Length: 1514 bytes Capture Length: 1514 bytes Ethernet II Destination: 00:90:69:6f:2c:22 (00:90:69:6f:2c:22) Source: 00:90:27:52:11:02 (00:90:27:52:11:02) Type: IP (0x0800) Internet Protocol, Src Addr: 216.237.6.33 (216.237.6.33), Dst Addr: 208.139.198.9 (208.139.198.9) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 1500 Identification: 0x49d6 Flags: 0x04 .1.. = Don't fragment: Set ..0. = More fragments: Not set Fragment offset: 0 Time to live: 64 Protocol: TCP (0x06) Header checksum: 0x75a2 (correct) Source: 216.237.6.33 (216.237.6.33) Destination: 208.139.198.9 (208.139.198.9) Transmission Control Protocol, Src Port: 1863 (1863), Dst Port: 25 (25), Seq: 1644322640, Ack: 481092996 Source port: 1863 (1863) Destination port: 25 (25) Sequence number: 1644322640 Next sequence number: 1644324088 Acknowledgement number: 481092996 Header length: 32 bytes Flags: 0x0010 (ACK) 0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set Window size: 57920 Checksum: 0xbca2 (correct) Options: (12 bytes) NOP NOP Time stamp: tsval 24777546, tsecr 1098818 Frame 24 (1514 on wire, 1514 captured) Arrival Time: Aug 26, 2002 14:49:57.632424000 Time delta from previous packet: 63.996755000 seconds Time relative to first packet: 64.640636000 seconds Frame Number: 24 Packet Length: 1514 bytes Capture Length: 1514 bytes Ethernet II Destination: 00:90:69:6f:2c:22 (00:90:69:6f:2c:22) Source: 00:90:27:52:11:02 (00:90:27:52:11:02) Type: IP (0x0800) Internet Protocol, Src Addr: 216.237.6.33 (216.237.6.33), Dst Addr: 208.139.198.9 (208.139.198.9) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 1500 Identification: 0x9aa1 Flags: 0x04 .1.. = Don't fragment: Set ..0. = More fragments: Not set Fragment offset: 0 Time to live: 64 Protocol: TCP (0x06) Header checksum: 0x24d7 (correct) Source: 216.237.6.33 (216.237.6.33) Destination: 208.139.198.9 (208.139.198.9) Transmission Control Protocol, Src Port: 1863 (1863), Dst Port: 25 (25), Seq: 1644316640, Ack: 481092996 Source port: 1863 (1863) Destination port: 25 (25) Sequence number: 1644316640 Next sequence number: 1644318088 Acknowledgement number: 481092996 Header length: 32 bytes Flags: 0x0010 (ACK) 0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set Window size: 57920 Checksum: 0xf924 (correct) Options: (12 bytes) NOP NOP Time stamp: tsval 24783946, tsecr 1098818 No. Time Source Destination Protocol Info 1 0.000000 216.237.6.33 208.139.198.9 TCP 1863 > 25 [SYN] Seq=1644315094 Ack=0 Win=57344 Len=0 2 0.059897 208.139.198.9 216.237.6.33 TCP 25 > 1863 [SYN, ACK] Seq=481092603 Ack=1644315095 Win=64240 Len=0 3 0.059995 216.237.6.33 208.139.198.9 TCP 1863 > 25 [ACK] Seq=1644315095 Ack=481092604 Win=57920 Len=0 4 0.062078 208.139.198.9 216.237.6.33 SMTP Response: 220 rocky.extendthereach.com ESMTP Server (Microsoft Exchange Internet Mail Service 5.5.2656.59) ready 5 0.062258 216.237.6.33 208.139.198.9 SMTP Command: EHLO mail.globalpac.com 6 0.122730 208.139.198.9 216.237.6.33 SMTP Response: 250-rocky.extendthereach.com Hello [mail.globalpac.com] 7 0.122958 216.237.6.33 208.139.198.9 SMTP Command: MAIL FROM:<> SIZE=33467 8 0.257376 208.139.198.9 216.237.6.33 SMTP Response: 250 OK - mail from <>; can accomodate 33467 bytes 9 0.257536 216.237.6.33 208.139.198.9 SMTP Command: RCPT TO: 10 0.322357 208.139.198.9 216.237.6.33 SMTP Response: 250 OK - Recipient 11 0.322459 216.237.6.33 208.139.198.9 SMTP Command: DATA 12 0.426724 208.139.198.9 216.237.6.33 SMTP Response: 354 Send data. End with CRLF.CRLF 13 0.435471 216.237.6.33 208.139.198.9 SMTP Message Body 14 0.435482 216.237.6.33 208.139.198.9 SMTP Message Body 15 0.435934 216.237.6.33 208.139.198.9 SMTP Message Body 16 0.435945 216.237.6.33 208.139.198.9 SMTP Message Body 17 0.436398 216.237.6.33 208.139.198.9 SMTP Message Body 18 0.436409 216.237.6.33 208.139.198.9 SMTP Message Body 19 0.436851 216.237.6.33 208.139.198.9 SMTP Message Body 20 0.436862 216.237.6.33 208.139.198.9 SMTP Message Body 21 0.643440 208.139.198.9 216.237.6.33 TCP 25 > 1863 [ACK] Seq=481092996 Ack=1644316640 Win=64240 Len=0 22 0.643757 216.237.6.33 208.139.198.9 SMTP Message Body 23 0.643881 216.237.6.33 208.139.198.9 SMTP Message Body 24 64.640636 216.237.6.33 208.139.198.9 SMTP Message Body 25 64.860303 208.139.198.9 216.237.6.33 TCP 25 > 1863 [ACK] Seq=481092996 Ack=1644318088 Win=62792 Len=0 26 64.860662 216.237.6.33 208.139.198.9 SMTP Message Body 27 64.860788 216.237.6.33 208.139.198.9 SMTP Message Body 28 128.860708 216.237.6.33 208.139.198.9 SMTP Message Body 29 129.049428 208.139.198.9 216.237.6.33 TCP 25 > 1863 [ACK] Seq=481092996 Ack=1644319536 Win=64240 Len=0 30 129.049791 216.237.6.33 208.139.198.9 SMTP Message Body 31 129.049913 216.237.6.33 208.139.198.9 SMTP Message Body 32 193.040784 216.237.6.33 208.139.198.9 SMTP Message Body 33 193.252186 208.139.198.9 216.237.6.33 TCP 25 > 1863 [ACK] Seq=481092996 Ack=1644320984 Win=62792 Len=0 34 193.252551 216.237.6.33 208.139.198.9 SMTP Message Body 35 193.252675 216.237.6.33 208.139.198.9 SMTP Message Body 36 257.250940 216.237.6.33 208.139.198.9 SMTP Message Body 37 257.456253 208.139.198.9 216.237.6.33 TCP 25 > 1863 [ACK] Seq=481092996 Ack=1644322432 Win=64240 Len=0 38 257.456649 216.237.6.33 208.139.198.9 SMTP Message Body 39 257.456773 216.237.6.33 208.139.198.9 SMTP Message Body 40 321.450986 216.237.6.33 208.139.198.9 SMTP Message Body 41 321.657035 208.139.198.9 216.237.6.33 TCP 25 > 1863 [ACK] Seq=481092996 Ack=1644323880 Win=62792 Len=0 42 321.657404 216.237.6.33 208.139.198.9 SMTP Message Body 43 321.657523 216.237.6.33 208.139.198.9 SMTP Message Body 44 385.651102 216.237.6.33 208.139.198.9 SMTP Message Body 45 385.970251 208.139.198.9 216.237.6.33 TCP 25 > 1863 [ACK] Seq=481092996 Ack=1644325328 Win=64240 Len=0 46 385.970591 216.237.6.33 208.139.198.9 SMTP Message Body 47 385.970714 216.237.6.33 208.139.198.9 SMTP Message Body 48 449.961154 216.237.6.33 208.139.198.9 SMTP Message Body 49 450.173323 208.139.198.9 216.237.6.33 TCP 25 > 1863 [ACK] Seq=481092996 Ack=1644326776 Win=62792 Len=0 50 450.173636 216.237.6.33 208.139.198.9 SMTP Message Body 51 450.173755 216.237.6.33 208.139.198.9 SMTP Message Body To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message