(usagi-users 03786) Re: [Patch][IPv6] Fix wrong routing mechanism for Link Local IPv6 packets
"Wei Dong" <[email protected]> Wed, 31 Jan 2007 13:22:08 +0900
| Newsgroups | gmane.linux.ipv6.usagi.users |
|---|---|
| Message-ID | <002201c744ef$5ed442b0$ccb1220a@ZhaoleiSOTEC> |
Hello, The latest RFC4291: 2.5.6. Link-Local IPv6 Unicast Addresses Link-Local addresses are designed to be used for addressing on a single link for purposes such as automatic address configuration, neighbor discovery, or when no routers are present. Routers must not forward any packets with Link-Local source or destination addresses to other links. Of course router MUST NOT forward Link-Local packet. Our case is very spcial. I think we can consider that router's eth1 and the host attached to router's eth0 are on the same site not the same Link. Because no wire connect them together:) ----- Original Message ----- > Hello, > this is from RFC2373: > Link-Local addresses are designed to be used for addressing on a > single link for purposes such as auto-address configuration, neighbor > discovery, or when no routers are present. > > Does the same problem occur when you are using globally route-able > unicast addresses (and subnets)? I'm not sure if link-local addresses > (fe80::/64) are supposed to be routed? > > From Stuart. > > Wei Dong wrote: >> Hello, Mr yoshfuji >> Take ping6 for example. Asumming there is a router which has 2 >> NICs. eth0 on router has ipv6 addr fe80::20c:29ff:fe24:fa0a, eth1 on >> router has ipv6 addr fe80::20c:29ff:fe24:fa14. Also there is a host >> connected to router's eth0, and the host's ipv6 addr is >> fe80::200:ff:fe00:100. We ping6 to router's eth1(ipv6 addr >> fe80::20c:29ff:fe24:fa14). But now Linux kernel deals with this kind >> of packet incorrectly. Router forward the Echo request to eth0. And >> send ICMP redirect packet to the host. In ICMP redirect packt >> TargetAddress =fe80::20c:29ff:fe24:fa14, DestinationAddress = >> fe80::20c:29ff:fe24:fa14. So I think Linux kernel considers that >> fe80::200:ff:fe00:100 and fe80::20c:29ff:fe24:fa14 are neighbors. >> >> I dived into the kernel, and found that maybe function >> rt6_score_route() has problems. In rt6_score_route(), if >> rt6_check_dev() return 0, and the dst ipv6 addr is link local addr, >> rt6_socre_route() return -1 directly. I think this is not correct, we >> should return -1 only if the entry is in the route cache, and the dst >> addr is link local addr. Only entries in cache will select wrong IPv6 >> Link Local NIC for a link local addr, because they are copied from >> static IPv6 fib tables. >> >> ----- Original Message ----- >>> Hello. >>> >>> In article <1172042666.4512.8.camel@LINE> (at Wed, 21 Feb 2007 >>> 02:24:26 -0500), weidong <[email protected]> says: >>> >>>> eth0: fe80::20c:29ff:fe24:fa0a >>>> | eth1: fe80::20c:29ff:fe24:fa14 >>>> | | >>>> ------------------------------------------------ >>>> | | >>>> | | >>>> | LAN1 |LAN2 >>>> | | >>>> ----- >>>> ^ >>>> | >>>> Send Echo Request(src addr = fe80::200:ff:fe00:100) >>> >>> Sorry, I could not understand this figure.... >>> Would you elaborate this? >>> >>> --yoshfuji >> >> > > -- > Stuart MacIntosh > IT Consultancy & Technical Services > Phone: +64 21 2259576 > Email: [email protected] > >