kern/117456: ipv6 neighbour discovery / bce multicast problem

Jacek Zapala jacek at ipv6.jacek.it.pl
Wed Oct 24 09:40:03 PDT 2007


>Number:         117456
>Category:       kern
>Synopsis:       ipv6 neighbour discovery / bce multicast  problem
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Oct 24 16:40:02 UTC 2007
>Closed-Date:
>Last-Modified:
>Originator:     Jacek Zapala
>Release:        6.2-RELEASE-p8
>Organization:
>Environment:
FreeBSD 6.2-RELEASE-p8 #0: Mon Oct 15 15:29:48 CEST 2007     root at server:/usr/src/sys/i386/compile/DELL_2950  i386
>Description:
There are two FreeBSD-6.2 servers on the same subnet: A (2001:XXXX:YYYY:1::270) and B (2001:XXXX:YYYY:1::267)
I try to ping6 B from A.
B does not see neighbour discovery packets sent by A.
It starts to see them just after enabling promiscuous mode on B.

A:~# ifconfig bce0
bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
        inet6 fe80::21a:a0ff:fe0e:8990%bce0 prefixlen 64 scopeid 0x1
        inet6 2001:XXXX:YYYY:1::270 prefixlen 120
        inet6 2001:XXXX:YYYY:1::272 prefixlen 120
        (inet4 addresses deleted)
        ether 00:1a:a0:0e:89:90
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active

B:~# ifconfig bce0
bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
        inet6 fe80::21a:a0ff:fe34:e724%bce0 prefixlen 64 scopeid 0x1
        inet6 2001:XXXX:YYYY:1::267 prefixlen 120
        inet6 2001:XXXX:YYYY:1::269 prefixlen 120
        (inet4 addresses deleted)
        ether 00:1a:a0:34:e7:24
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active

B:~# netstat -ia
Name    Mtu Network       Address              Ipkts Ierrs    Opkts Oerrs
Coll
bce0   1500 <Link#1>      00:1a:a0:34:e7:24   398232     0   416485     0
0
                          33:33:ff:00:02:69      729              8
                          33:33:ff:00:02:67      729              8
                          01:00:5e:00:00:01      729              8
                          33:33:f2:4c:bf:48      729              8
                          33:33:00:00:00:01      729              8
                          33:33:ff:34:e7:24      729              8


Packets on the wire (sniffed on third machine):

16:06:55.584139 00:1a:a0:0e:89:90 > 33:33:ff:00:02:67, ethertype IPv6
(0x86dd), length 86: 2001:XXXX:YYYY:1::270 > ff02::1:ff00:267: ICMP6,
neighbor solicitation, who has 2001:XXXX:YYYY:1::267, length 32

16:06:56.607487 00:1a:a0:0e:89:90 > 33:33:ff:00:02:67, ethertype IPv6
(0x86dd), length 86: 2001:XXXX:YYYY:1::270 > ff02::1:ff00:267: ICMP6,
neighbor solicitation, who has 2001:XXXX:YYYY:1::267, length 32

B does not see them:

B:~# tcpdump -n -p host 2001:XXXX:YYYY:1::270
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bce0, link-type EN10MB (Ethernet), capture size 96 bytes
^C
0 packets captured
746805 packets received by filter
0 packets dropped by kernel

Enabling promiscuous mode (no -p option) solves the problem:

B:~# tcpdump -n  host 2001:XXXX:YYYY:1::270
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bce0, link-type EN10MB (Ethernet), capture size 96 bytes
16:46:11.348129 IP6 2001:XXXX:YYYY:1::270 > ff02::1:ff00:267: ICMP6,
neighbor solicitation, who has 2001:XXXX:YYYY:1::267, length 32
16:46:11.348202 IP6 2001:XXXX:YYYY:1::267 > 2001:XXXX:YYYY:1::270: ICMP6,
neighbor advertisement, tgt is 2001:XXXX:YYYY:1::267, length 32
16:46:11.348373 IP6 2001:XXXX:YYYY:1::270 > 2001:XXXX:YYYY:1::267: ICMP6,
echo request, seq 258, length 16
16:46:11.348393 IP6 2001:XXXX:YYYY:1::267 > 2001:XXXX:YYYY:1::270: ICMP6,
echo reply, seq 258, length 16


Do I miss something very obvious?
I use pf, but pfctl -d does not help

>How-To-Repeat:
Well, boot a machine and try to ping6 it. I know it sounds like I'm drunk ;-)
>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list