Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Jul 2009 17:48:57 -0700
From:      Bob Van Zant <bob@veznat.com>
To:        <freebsd-net@freebsd.org>
Subject:   IPv6 traffic between two hosts not flowing
Message-ID:  <C68E5309.36C3E%bob@veznat.com>

next in thread | raw e-mail | index | archive | help
I have 2 FreeBSD machines each with 3 ethernet interfaces each with an IPv6
address.

Here's a table showing how the two machines are connected. To try to blame
the switch or its configuration I have tried directly connecting the
machines. The results were the same.

6.3                    4948             6.2
---                    ----             ---
fxp0                                  em2
fc00:dada::47                         fc00:dada::2

bge0                                  em0
fc00:dada:1::47                       fc00:dada:1::2

bge1                                  em1
fc00:dada:2::47                       fc00:dada:2::2

Traffic from fxp0 to em2 works fine.
bge0 to em0 and bge1 to em1 doesn't work as I'll explain below and is the
reason I'm writing to the list.


This host is able to communicate with it's IPv6 neighbor over the fxp0
interface, however, neither of the bge interfaces are able to communicate
with their peers.

ndp(8) output on the 6.3 machine (with bge interfaces) seems to highlight
something weird. In addition to the errors occurring, the Netif column for
fc00:dada:1::47 shows fxp0. ifconfig shows that address on bge0. The same is
true for fc00:dada:2::47; in ndp it shows up on fxp0 but ifconfig thinks
it's on bge1 (it should be). The linklayer address being "(incomplete)" also
seems weird given that this is a normal ethernet interface on the local
machine.


$ ndp -an
Neighbor                             Linklayer Address  Netif Expire    S
Flags
fc00:dada::2                         0:e:c:b4:13:8f      fxp0 22h38m10s S R
fc00:dada::47                        0:2:b3:e7:4a:56     fxp0 permanent R
ndp: ioctl(SIOCGNBRINFO_IN6): Invalid argument
ndp: failed to get neighbor information
fc00:dada:1::47                      (incomplete)        fxp0
ndp: ioctl(SIOCGNBRINFO_IN6): Invalid argument
ndp: failed to get neighbor information
fc00:dada:2::47                      (incomplete)        fxp0
fe80::20d:56ff:fe70:a9ae%bge0        0:d:56:70:a9:ae     bge0 permanent R
fe80::20d:56ff:fe70:a9af%bge1        0:d:56:70:a9:af     bge1 permanent R
fe80::202:b3ff:fee7:4a56%fxp0        0:2:b3:e7:4a:56     fxp0 permanent R


Output from ifmcstat looks correct to me (mostly the same as fxp0 but with
the appropriate addresses different).

I did find this message in the logfile at least once:

    nd6_storelladdr: sdl_alen == 0


If I do a ping6 in between the two hosts and then run tcpdump on either of
the bge interfaces I can see neighbor discovery traffic going back and
forth.

If the ping is from the bge interface to the corresponding em interface then
all I ever see is the NDP traffic.

If the ping is from the em interface to the corresponding bge interface then
I see a normal solicitation and advertisement followed by ICMP echo requests
(there are never any replies). The 6.2 machine's ndp cache looks correct.
The 6.3 machine's ndp cache is the one pasted above.


I feel like I'm just rambling here and not necessarily putting together a
sane question. If this is making sense to anyone and it isn't immediately
obvious what's going on please ask me some follow up questions.

In addition to all of this, after what appears to be about an hour of
sending ping packets that go nowhere and pulling interfaces in and out of
promiscuous mode (tcpdump) the system appears to deadlock. I don't have any
proof that it's deadlock other than a completely unresponsive box that needs
to have the power cable removed. It's happened twice so far this afternoon.

Thanks for reading this far,

Bob





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C68E5309.36C3E%bob>