Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Dec 2009 16:27:40 -0500
From:      Tom Pusateri <pusateri@bangj.com>
To:        "Li, Qing" <qing.li@bluecoat.com>
Cc:        freebsd-net@freebsd.org, freebsd-stable@freebsd.org
Subject:   Re: patch: bad ipv6 neighbor solicitation
Message-ID:  <5ED6B687-4191-4B11-A2F7-B01F67FB9D16@bangj.com>
In-Reply-To: <B583FBF374231F4A89607B4D08578A430619B543@bcs-mail03.internal.cacheflow.com>
References:  <alpine.BSF.2.00.0912131456440.83238@Elmer.dco.penx.com><9223.83.206.131.26.1260781902.squirrel@webmail.esigetel.fr><alpine.BSF.2.00.0912141451480.16515@Elmer.dco.penx.com> <B583FBF374231F4A89607B4D08578A4304673758@bcs-mail03.internal.cacheflow.com> <B583FBF374231F4A89607B4D08578A430619B543@bcs-mail03.internal.cacheflow.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I didn't think this routing patch was related to the "bad neighbor =
solicitation messages" as suggested in the subject field but I tried it =
anyway. It does not fix my IPv6 problem. I still get "bad neighbor =
solicitation messages" and freebsd 8 doesn't respond to 4/5 IPv6 pings.

Thanks,
Tom

On Dec 14, 2009, at 11:53 PM, Li, Qing wrote:

> Please find the more proper fix at
>=20
> 	http://people.freebsd.org/~qingli/nd6-patch.diff
>=20
> I realized I was slightly off in my previous email after
> I spent a bit more time looking through the problem.=20
> Both prefixes are present but one was marked off-link due
> to the fact only a single prefix route was installed in
> the routing table (non RADIX_MPATH system).
>=20
> I evaluated various options to fixing this issue, however,=20
> due to the association between NDPRF_ONLINK and the route
> installation, I decided to go with what I have here for
> the time being.
>=20
> I have verified the fix in my setup. Please apply the
> patch and report back.
>=20
> Thanks,
>=20
> -- Qing
>=20
>=20
>> -----Original Message-----
>> From: owner-freebsd-net@freebsd.org [mailto:owner-freebsd-
>> net@freebsd.org] On Behalf Of Li, Qing
>> Sent: Monday, December 14, 2009 3:00 PM
>> To: Dennis Glatting; JASSAL Aman
>> Cc: freebsd-net@freebsd.org
>> Subject: RE: Understanding multiple IPv6 interfaces under 8.0 (fwd)
>>=20
>>=20
>> You don't need to perform all that route-foo. I believe the root =
cause
>> of
>> this issue may be due to a bit of regression in the IPv6 prefix
>> management
>> code, and I am in the process of putting together a permanent fix.
>>=20
>> The issue as it stands today, is due to how the prefix was inserted =
in
>> the first place. Since bce0 was configured first, the interface
>> associated
>> with the prefix is bce0. Later the reference count on the prefix is
>> simply incremented when bce1 configures another IPv6 address of the
>> same prefix.
>>=20
>> When ND6 NS arrives for bce1, due to the interface mismatch of the
>> prefix
>> interface against the input interface, the NS packet was considered
>> invalid and thus dropped.
>>=20
>> Again, in case you didn't see my earlier reply, try the temporary =
hack
>> at
>>    http://people.freebsd.org/~qingli/nd6-ns.diff
>>=20
>> until I commit a permanent patch. The problem was easily reproducible
>> and
>> I have verified with limited unit testing the patch works.
>>=20
>> -- Qing
>>=20
>>=20
>> -----Original Message-----
>> From: owner-freebsd-net@freebsd.org on behalf of Dennis Glatting
>> Sent: Mon 12/14/2009 2:03 PM
>> To: JASSAL Aman
>> Cc: freebsd-net@freebsd.org
>> Subject: Re: Understanding multiple IPv6 interfaces under 8.0 (fwd)
>>=20
>>=20
>> Thanks. Responses in-line.
>>=20
>>=20
>>=20
>> On Mon, 14 Dec 2009, JASSAL Aman wrote:
>>=20
>>> Hello Mr.Glatting,
>>>=20
>>> Not that I'm an IPv6 genius, but at first sight your problem seems
> to
>> be a
>>> route-related. I've put comments in-line.
>>>=20
>>>=20
>>> Le Dim 13 d?cembre 2009 22:58, Dennis Glatting a ?crit :
>>>>=20
>>>>=20
>>>> Elmer# netstat -rn
>>>> Routing tables
>>>>=20
>>>>=20
>>>> Internet6:
>>>> Destination                       Gateway
>> Flags
>>>> Netif Expire
>>>> ::/96                             ::1
> UGRS
>>>> lo0  =3D> default                           fd7c:3f2b:e791:1::1
>>>> UGS        bce0
>>>> ::1                               ::1                           UH
>>>> lo0 ::ffff:0.0.0.0/96                 ::1
>> UGRS
>>>> lo0 fd7c:3f2b:e791:1::/64             link#1
>> U
>>>> bce0 fd7c:3f2b:e791:1::ac13:a0a        link#1
>> UHS
>>>> lo0 fd7c:3f2b:e791:1:0:1:ac13:a0a     link#2
>> UHS
>>>> lo0 fe80::/10                         ::1
>> UGRS
>>>> lo0 fe80::%bce0/64                    link#1
>> U
>>>> bce0 fe80::213:72ff:fe60:ac52%bce0     link#1
>> UHS
>>>> lo0 fe80::%bce1/64                    link#2
>> U
>>>> bce1 fe80::213:72ff:fe60:ac50%bce1     link#2
>> UHS
>>>> lo0 fe80::%lo0/64                     link#3
>> U
>>>> lo0 fe80::1%lo0                       link#3
>> UHS
>>>> lo0 ff01:1::/32                       fe80::213:72ff:fe60:ac52%bce0
>> U
>>>> bce0 ff01:2::/32
> fd7c:3f2b:e791:1:0:1:ac13:a0a
>> U
>>>> bce1 ff01:3::/32                       ::1
>> U
>>>> lo0 ff02::/16                         ::1
>> UGRS
>>>> lo0 ff02::%bce0/32                    fe80::213:72ff:fe60:ac52%bce0
>> U
>>>> bce0 ff02::%bce1/32
> fd7c:3f2b:e791:1:0:1:ac13:a0a
>> U
>>>> bce1 ff02::%lo0/32                     ::1
>> U
>>>> lo0
>>>>=20
>>>=20
>>> Hmm, the entry for fd7c:3f2b:e791:1:0:1:ac13:a0a looks suspect. I
> was
>>> expecting bce1 rather than lo0, I suppose you were as well :) If I'm
>> not
>>> mistaken, the packets emanating from bce1 go to the loopback
>> interface,
>>> thus not really going out. You can try specifying the route manually
>>> with "route add *your parameters*" or even set it in /etc/rc.conf so
>>> that it's loaded at boot-time. There's no reason why among 2
> physical
>>> interfaces sharing the same fabric, one can ship packets out and the
>>> other can't.
>>>=20
>>=20
>> I was wondering about the route however I haven't figured out the
> trick
>> to
>> get what I want. For example:
>>=20
>> Elmer# route delete -inet6 fd7c:3f2b:e791:1:0:1:ac13:a0a
>> delete host fd7c:3f2b:e791:1:0:1:ac13:a0a
>>=20
>> Elmer# route add
>> -inet6 fd7c:3f2b:e791:1:0:1:ac13:a0a/64 -iface bce1
>> route: writing to routing socket: File exists
>> add net fd7c:3f2b:e791:1:0:1:ac13:a0a/64: gateway bce1: route already
>> in table
>>=20
>> I did delete the lo0 route before I exected the above command. Also, =
I
>> haven't been able to specify a higher metric (e.g., -metric 2). That
> is
>> rejected too. However, I can say:
>>=20
>> Elmer# route delete -inet6 fd7c:3f2b:e791:1:0:1:ac13:a0a
>> delete host fd7c:3f2b:e791:1:0:1:ac13:a0a
>>=20
>> Elmer# route add -inet6 fd7c:3f2b:e791:1:0:1:ac13:a0a -iface bce1
>> add host fd7c:3f2b:e791:1:0:1:ac13:a0a: gateway bce1
>>=20
>> Elmer# netstat -rn
>> (snip)
>> fd7c:3f2b:e791:1:0:1:ac13:a0a     00:13:72:60:ac:50             UHS
>> bce1
>>=20
>> I don't think that is what I want. WHat I think I just said is "host
> X"
>> is
>> out that door, rather than route net. If, however, I say Docs is out
>> that
>> door, I get:
>>=20
>> Elmer# route add -inet6 docs.dco.penx.com -iface bce1
>> add host docs.dco.penx.com: gateway bce1
>>=20
>> Elmer# ping6
>> docs.penx.com
>> PING6(56=3D40+8+8 bytes) fd7c:3f2b:e791:1:0:1:ac13:a0a -->
>> fd7c:3f2b:e791:1::ac13:a15
>> ping6: sendmsg: Operation not permitted
>> ping6: wrote docs.dco.penx.com 16 chars, ret=3D-1
>>=20
>>=20
>>>>=20
>>>> Elmer's rc.config:
>>>>=20
>>>>=20
>>>> ipv6_enable=3D"YES" ipv6_network_interfaces=3D"bce0 bce1"
>>>> ipv6_ifconfig_bce0=3D"FD7C:3F2B:E791:0001::0:172.19.10.10 prefixlen
>> 64"
>>>> ipv6_ifconfig_bce1=3D"FD7C:3F2B:E791:0001::1:172.19.10.10 prefixlen
> 64
>> mtu
>>>> 8192"
>>>> ipv6_defaultrouter=3D"FD7C:3F2B:E791:0001::1"
>>>>=20
>>>=20
>>> Erm... You're using IPv4 addresses encapsulated in IPv6 ? I've never
>> used
>>> this myself so I can't really comment, and I can't say if there
>> aren't any
>>> sort of "interferences" with what you're trying to do.
>>>=20
>>=20
>> I hope what I am specifying is to use the 32 bit IPv4 address as the
>> last
>> 32 bits of the IPv6 address, at least that is how it works out
>> numerically. My numbering scheme for fixed assets is the last 32 bits
>> of
>> the 128 bit IPv6 address is the same as its IPv4 address.
>>=20
>>=20
>>>>=20
>>>>=20
>>>> The router (cisco):
>>>>=20
>>>>=20
>>>> interface GigabitEthernet0/0 ipv6 address FD7C:3F2B:E791:1::1/64
>> ipv6
>>>> enable ipv6 nd prefix FD7C:3F2B:E791:1::/64 (etc)
>>>>=20
>>>=20
>>> Just a side-note, I'm not sure if it will be really useful to you,
>> but you
>>> could give it a try if you want to. Have you tried using your Cisco
>> router
>>> as a Router Advertisement Daemon ? That way, addresses would be
> built
>>> automatically and you could see how both interfaces react to such
>>> advertisements.
>>>=20
>>> I hope this helps.
>>>=20
>>> ------------
>>> Aman Jassal
>>>=20
>>> Wisdom comes from experience.
>>> Experience comes from a lack of wisdom.
>>>=20
>>>=20
>> _______________________________________________
>> freebsd-net@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-net
>> To unsubscribe, send any mail to =
"freebsd-net-unsubscribe@freebsd.org"
>>=20
>> _______________________________________________
>> freebsd-net@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-net
>> To unsubscribe, send any mail to =
"freebsd-net-unsubscribe@freebsd.org"
> _______________________________________________
> freebsd-stable@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> To unsubscribe, send any mail to =
"freebsd-stable-unsubscribe@freebsd.org"




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5ED6B687-4191-4B11-A2F7-B01F67FB9D16>