Subject: kern/16244: ipv6 ftp problem
To: None <gnats-bugs@gnats.netbsd.org>
From: Wolfgang Rupprecht <wolfgang@wsrcc.com>
List: netbsd-bugs
Date: 04/08/2002 07:27:28
>Number:         16244
>Category:       kern
>Synopsis:       ipv6 packets get stuck in stack (ipv6 ftp demo)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 08 07:28:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Wolfgang Rupprecht
>Release:        NetBSD 1.5ZC
>Organization:
W S Rupprecht Computer Consulting, Fremont CA
>Environment:
System: NetBSD capsicum.wsrcc.com 1.5ZC NetBSD 1.5ZC (WSRCC_ATHLON) #65: Sun Apr 7 09:46:57 PDT 2002 wolfgang@capsicum.wsrcc.com:/v/src/netbsd/src/sys/arch/i386/compile/WSRCC_ATHLON i386
Architecture: i386
Machine: i386
>Description:
	ipv6 packets sometimes get stuck in the stack

	ftp over ipv6 sometimes hangs with tcpdump showing a packet
	getting stuck in the local stack and only released when the
	TCP connection is torn down by the local system.

>How-To-Repeat:

	Setup: ipv6 connectivity via a gif tunnel over ipv4.  In
	general ipv6 connectivity "just works".  The only known
	anomaly is the following ftp example.

	ipf -D # disable ipf -- just so that there is no doubt.

	Here I start "ftp -p -6 dumbcat.example.org" here.

	    06:59:08.868872 sonic.wsrcc.com.49408 > dumbcat.example.org.ftp: S 3004566095:3004566095(0) win 16384 <mss 33160,nop,wscale 0,nop,nop,timestamp 0 0> [flowlabel 0x60518]
	    06:59:09.568490 dumbcat.example.org.ftp > sonic.wsrcc.com.49408: S 2983161253:2983161253(0) ack 3004566096 win 16912 <mss 1440,nop,wscale 0,nop,nop,timestamp 1215838319 0>
	    06:59:09.568578 sonic.wsrcc.com.49408 > dumbcat.example.org.ftp: . ack 1 win 16384 <nop,nop,timestamp 2 1215838319> [flowlabel 0x60518]

	Here the local ftp has its 60 second timeout and prints:
	"421 Service not available, remote server timed out. Connection closed"
	The local ftp then closes its side of the connection.

	    07:00:09.577992 sonic.wsrcc.com.49408 > dumbcat.example.org.ftp: F 1:1(0) ack 1 win 16384 <nop,nop,timestamp 122 1215838319> [flowlabel 0x60518]
	    07:00:10.338432 dumbcat.example.org.ftp > sonic.wsrcc.com.49408: . ack 2 win 16912 <nop,nop,timestamp 1215838440 122>

	I wait 15 seconds and then hit ^D at the ftp prompt.  The next
	two packets from dumbcat were cached / detained by the local
	system and were now released.  

			*** THIS IS THE BUG ***

	Note no packets get sent from my system to the remote one at
	the ^D time.  Either the timing of the remote packet is
	uncanny or the remote packet was already in the local system
	and was just released now.  Since this is very repeatable, it
	is clear it wasn't just a timing fluke.

	    07:00:25.408741 dumbcat.example.org.ftp > sonic.wsrcc.com.49408: P 1:8(7) ack 2 win 16912 <nop,nop,timestamp 1215838471 122>
	    07:00:25.408833 sonic.wsrcc.com.49408 > dumbcat.example.org.ftp: R 3004566097:3004566097(0) win 0 [flowlabel 0x60519]
	    07:00:25.455406 dumbcat.example.org.ftp > sonic.wsrcc.com.49408: FP 8:215(207) ack 2 win 16912 <nop,nop,timestamp 1215838471 122>
	    07:00:25.455432 sonic.wsrcc.com.49408 > dumbcat.example.org.ftp: R 3004566097:3004566097(0) win 0 [flowlabel 0x6051a]

	Slapping a snoop program on the line revealed that these two
	packets were the first two lines of the ftp greeting from the 
	remote system.
	
	    220- 
	    220-                      EXAMPLE.ORG -- [...]
	
	This bug is somewhat random in that a few times out of many
	tests ftp does work as expected.  For a while it appeared that
	ftp would work correctly whenever I turned ipf off.  That
	doesn't appear to be the case always.

>Fix:
	none supplied 
>Release-Note:
>Audit-Trail:
>Unformatted: