Messages in this thread |  | | Date | Wed, 30 Aug 2000 00:52:59 +0200 | From | Felix von Leitner <> | Subject | [2.4.0test6] IPv6 link-local TCP still slightly broken |
| |
The application that triggers this problem is npoll (to be found at http://www.fefe.de/ncp/). Basically, it consists of two parts, npush and npoll. npush will send IPv6 multicast packets to the network and npoll will use them to see where it has to connect().
The multicast packets are send out on eth0, and (I had a bug report about this earlier) the IPv6 scope_id now signals the interface as eth0, too.
npoll then tries to connect to my own link local address on eth0. This fails horribly. Here is a tcpdump:
00:14:38.506140 ::1.32796 > fe80::260:67ff:fe33:d15b.8002: S 3266263975:3266263975(0) win 32144 <mss 16084,sackOK,timestamp 276547 0,nop,wscale 0> 00:14:38.506180 fe80::260:67ff:fe33:d15b.8002 > ::1.32796: S 3269115708:3269115708(0) ack 3266263976 win 32144 <mss 16084,sackOK,timestamp 276547 276547,nop,wscale 0> 00:14:38.506191 ::1.32796 > fe80::260:67ff:fe33:d15b.8002: R 3266263976:3266263976(0) win 0 00:14:41.502287 ::1.32796 > fe80::260:67ff:fe33:d15b.8002: S 3266263975:3266263975(0) win 32144 <mss 16084,sackOK,timestamp 276847 0,nop,wscale 0> 00:14:41.502316 fe80::260:67ff:fe33:d15b.8002 > ::1.32796: R 1025851588:1025851588(0) ack 1 win 0
Due to another bug that I haven't isolated yet, the packets are actually received twice by tcpdump. I edited the duplicates away. Please note that this traffic was captured off lo, not eth0, so although I specified eth0 as interface, the SYN packet is sent over lo. And, the source IP is ::1, the loopback IP.
Apparently, through some major kludge somewhere, the kernel is allowed to send a packet from an eth0 link-local address to ::1 on lo, but the receiver code understands that this can't be right and tries to reset the connection. Please note that the reset is apparently never seen by the other side, though, so the connect() system call eventually times out. This is just a dump of the first seconds.
I don't think that "::1" is the proper source address. This should be changed to fe80::260:67ff:fe33:d15b, my link-local address. Then, the lo code should be changed to allow packets to and from any of my link-local addresses.
Any comments? Does this make any sense? I am not sure if my resubscription on linux-kernel worked (haven't received a confirmation yet), and I am not subscribed to netdev yet, so please carbon-copy comments to me. Thanks.
Felix - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |