kern/137089: lagg falsely triggers IPv6 duplicate address detection

Alex Hayward xelah-freebsdpr at xelah.com
Fri Jul 24 18:40:02 UTC 2009


>Number:         137089
>Category:       kern
>Synopsis:       lagg falsely triggers IPv6 duplicate address detection
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jul 24 18:40:01 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Alex Hayward
>Release:        7.2-RC2
>Organization:
>Environment:
FreeBSD db2.xxxxxxxxxxx 7.2-RC2 FreeBSD 7.2-RC2 #6: Tue Apr 28 20:43:30 BST 2009     alex at db2.xxxxxxxxx:/usr/obj/usr/src/sys/DB2  amd64

>Description:
When an IPv6 alias is added to a lagg interface one duplicate address detection ICMP neighbour solicitation message is sent from each interface forming the link. The kernel then thinks that the address is a duplicate when it isn't. This does not happen when only one physical interface is being used.

>How-To-Repeat:
[root at db2 /usr/home/alex]# jobs
[2]-  Running                 tail -f /var/log/messages &
[3]+  Running                 tcpdump -vnpi lagg1 icmp6 &
[root at db2 /usr/home/alex]# ifconfig lagg1
lagg1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:15:60:0a:4d:9a
        inet6 fe80::214:38ff:fe51:5da0%lagg1 prefixlen 64 scopeid 0x6
        inet 10.10.10.11 netmask 0xffffff00 broadcast 10.10.10.255
        inet6 fda8:48b8:b52c:1::b prefixlen 120
        media: Ethernet autoselect
        status: active
        laggproto lacp
        laggport: bge3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
[root at db2 /usr/home/alex]#
[root at db2 /usr/home/alex]#
[root at db2 /usr/home/alex]# ifconfig lagg1 inet6 fda8:48b8:b52c:3::b prefixlen 120 alias
[root at db2 /usr/home/alex]#
[root at db2 /usr/home/alex]# 19:06:54.716072 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) :: > ff02::1:ff00:b: [icmp6 sum ok] ICMP6, neighbor so
licitation, length 24, who has fda8:48b8:b52c:3::b

[root at db2 /usr/home/alex]#
[root at db2 /usr/home/alex]#
[root at db2 /usr/home/alex]# ifconfig lagg1
lagg1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:15:60:0a:4d:9a
        inet6 fe80::214:38ff:fe51:5da0%lagg1 prefixlen 64 scopeid 0x6
        inet 10.10.10.11 netmask 0xffffff00 broadcast 10.10.10.255
        inet6 fda8:48b8:b52c:1::b prefixlen 120
        inet6 fda8:48b8:b52c:3::b prefixlen 120
        media: Ethernet autoselect
        status: active
        laggproto lacp
        laggport: bge3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>


[root at db2 /usr/home/alex]# ifconfig lagg1 inet6 fda8:48b8:b52c:3::b prefixlen 120 -alias
[root at db2 /usr/home/alex]# ifconfig lagg1 laggport bge1
[root at db2 /usr/home/alex]# ifconfig lagg1
lagg1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:15:60:0a:4d:9a
        inet6 fe80::214:38ff:fe51:5da0%lagg1 prefixlen 64 scopeid 0x6
        inet 10.10.10.11 netmask 0xffffff00 broadcast 10.10.10.255
        inet6 fda8:48b8:b52c:1::b prefixlen 120
        media: Ethernet autoselect
        status: active
        laggproto lacp
        laggport: bge1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
        laggport: bge3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
[root at db2 /usr/home/alex]# ifconfig lagg1 inet6 fda8:48b8:b52c:3::b prefixlen 120 alias
[root at db2 /usr/home/alex]# 19:12:04.364760 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) :: > ff02::1:ff00:b: [icmp6 sum ok] ICMP6, neighbor so
licitation, length 24, who has fda8:48b8:b52c:3::b
19:12:04.364826 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) :: > ff02::1:ff00:b: [icmp6 sum ok] ICMP6, neighbor solicitation, length 24, who
has fda8:48b8:b52c:3::b
Jul 24 19:12:05 db2 kernel: lagg1: DAD detected duplicate IPv6 address fda8:48b8:b52c:3::b: NS in/out=1/1, NA in=0
Jul 24 19:12:05 db2 kernel: lagg1: DAD complete for fda8:48b8:b52c:3::b - duplicate found
Jul 24 19:12:05 db2 kernel: lagg1: manual intervention required
[root at db2 /usr/home/alex]# ifconfig lagg1
lagg1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:15:60:0a:4d:9a
        inet6 fe80::214:38ff:fe51:5da0%lagg1 prefixlen 64 scopeid 0x6
        inet 10.10.10.11 netmask 0xffffff00 broadcast 10.10.10.255
        inet6 fda8:48b8:b52c:1::b prefixlen 120
        inet6 fda8:48b8:b52c:3::b prefixlen 120 duplicated
        media: Ethernet autoselect
        status: active
        laggproto lacp
        laggport: bge1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
        laggport: bge3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>

>Fix:
Not really a fix, of course:

[root at db2 /usr/home/alex]# ifconfig lagg1 inet6 fda8:48b8:b52c:3::b prefixlen 120 -alias
[root at db2 /usr/home/alex]# ipfw add 50 deny icmp6 from any to any
00050 deny ipv6-icmp from any to any
[root at db2 /usr/home/alex]#
[root at db2 /usr/home/alex]# ifconfig lagg1 inet6 fda8:48b8:b52c:3::b prefixlen 120 alias
[root at db2 /usr/home/alex]# ipfw delete 50
[root at db2 /usr/home/alex]#
[root at db2 /usr/home/alex]# ifconfig lagg
lagg1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:15:60:0a:4d:9a
        inet6 fe80::214:38ff:fe51:5da0%lagg1 prefixlen 64 scopeid 0x6
        inet 10.10.10.11 netmask 0xffffff00 broadcast 10.10.10.255
        inet6 fda8:48b8:b52c:1::b prefixlen 120
        inet6 fda8:48b8:b52c:3::b prefixlen 120
        media: Ethernet autoselect
        status: active
        laggproto lacp
        laggport: bge1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
        laggport: bge3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>


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


More information about the freebsd-bugs mailing list