(usagi-users 03782) Re: [Patch][IPv6] Fix wrong routing mechanism for Link Local IPv6 packets
Stuart MacIntosh <[email protected]> Wed, 31 Jan 2007 02:41:31 +1300
| Newsgroups | gmane.linux.ipv6.usagi.users |
|---|---|
| Message-ID | <[email protected]> |
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]