#20178: unstable ipv6 connectivity, odhcp6c invokes /lib/netifd/dhcpv6.script 
too
often
--------------------------+----------------------------------
 Reporter:  simon.vetter  |      Owner:  developers
     Type:  defect        |     Status:  new
 Priority:  normal        |  Milestone:  Chaos Calmer (trunk)
Component:  base system   |    Version:  Trunk
 Keywords:                |
--------------------------+----------------------------------
 My ISP is currently multicasting RAs from 4 different source ip addresses:

 {{{
 07:07:24.803144 cc:4e:24:1c:14:00 > 33:33:00:00:00:01, ethertype IPv6
 (0x86dd), length 118: (class 0xc0, hlim 255, next-header ICMPv6 (58)
 payload length: 64) fe80::ce4e:24ff:fe1c:1400 > ff02::1: [icmp6 sum ok]
 ICMP6, router advertisement, length 64
         hop limit 64, Flags [none], pref medium, router lifetime 1800s,
 reachable time 0s, retrans time 0s
           source link-address option (1), length 8 (1): cc:4e:24:1c:14:00
           mtu option (5), length 8 (1):  1500
           prefix info option (3), length 32 (4): 2001:8e0:9ff:2000::/64,
 Flags [onlink, auto], valid time 2592000s, pref. time 604800s
 07:07:24.826919 cc:4e:24:1c:33:00 > 33:33:00:00:00:01, ethertype IPv6
 (0x86dd), length 118: (class 0xc0, hlim 255, next-header ICMPv6 (58)
 payload length: 64) fe80::ce4e:24ff:fe1c:3300 > ff02::1: [icmp6 sum ok]
 ICMP6, router advertisement, length 64
         hop limit 64, Flags [none], pref medium, router lifetime 1800s,
 reachable time 0s, retrans time 0s
           source link-address option (1), length 8 (1): cc:4e:24:1c:33:00
           mtu option (5), length 8 (1):  1500
           prefix info option (3), length 32 (4): 2001:8e0:9ff:2000::/64,
 Flags [onlink, auto], valid time 2592000s, pref. time 604800s
 07:07:24.827699 02:e0:52:00:25:01 > 33:33:00:00:00:01, ethertype IPv6
 (0x86dd), length 118: (class 0xc0, hlim 255, next-header ICMPv6 (58)
 payload length: 64) fe80:132::1 > ff02::1: [icmp6 sum ok] ICMP6, router
 advertisement, length 64
         hop limit 64, Flags [none], pref medium, router lifetime 1800s,
 reachable time 0s, retrans time 0s
           source link-address option (1), length 8 (1): 02:e0:52:00:25:01
           mtu option (5), length 8 (1):  1500
           prefix info option (3), length 32 (4): 2001:8e0:9ff:2000::/64,
 Flags [onlink, auto], valid time 2592000s, pref. time 604800s
 07:07:24.828420 02:e0:52:00:25:01 > 33:33:00:00:00:01, ethertype IPv6
 (0x86dd), length 118: (class 0xc0, hlim 255, next-header ICMPv6 (58)
 payload length: 64) 2001:8e0:9ff:2000::1 > ff02::1: [icmp6 sum ok] ICMP6,
 router advertisement, length 64
         hop limit 64, Flags [none], pref medium, router lifetime 1800s,
 reachable time 0s, retrans time 0s
           source link-address option (1), length 8 (1): 02:e0:52:00:25:01
           mtu option (5), length 8 (1):  1500
           prefix info option (3), length 32 (4): 2001:8e0:9ff:2000::/64,
 Flags [onlink, auto], valid time 2592000s, pref. time 604800s
 }}}

 Although they are all advertising the same prefix and come in at roughly
 the same time (usually within a few milliseconds every 30s), dhcp6c emits
 multiple ra-updated events:

 {{{
 Sat Jul 25 07:25:39 2015 eth0.2 ra-updated
 Sat Jul 25 07:25:39 2015 RA_REACHABLE=0
 RA_ADDRESSES=2001:8e0:9ff:2000:xxxx:xxxx:xxxx:xxxx/64,604800,2592000
 SERVER=2001:8e0:40:11::254 SHLVL=2 RA_MTU=1500
 RA_ROUTES=::/0,fe80::ce4e:24ff:fe1c:3300,1767,512
 2001:8e0:9ff:2000::/64,,2592000,256 ::/0,fe80:132::1,1767,512
 ::/0,fe80::ce4e:24ff:fe1c:1400,1800,512
 PREFIXES=2001:8e0:xxxx:xxxx::/56,20
 Sat Jul 25 07:25:39 2015 eth0.2 ra-updated
 Sat Jul 25 07:25:39 2015 eth0.2 ra-updated
 Sat Jul 25 07:25:40 2015 RA_REACHABLE=0
 RA_ADDRESSES=2001:8e0:9ff:2000:xxxx:xxxx:xxxx:xxxx/64,604800,2592000
 SERVER=2001:8e0:40:11::254 SHLVL=2 RA_MTU=1500
 RA_ROUTES=::/0,fe80::ce4e:24ff:fe1c:3300,1800,512
 2001:8e0:9ff:2000::/64,,2592000,256 ::/0,fe80:132::1,1767,512
 ::/0,fe80::ce4e:24ff:fe1c:1400,1800,512
 PREFIXES=2001:8e0:xxxx:xxxx::/56,20
 Sat Jul 25 07:25:40 2015 RA_REACHABLE=0
 RA_ADDRESSES=2001:8e0:9ff:2000:xxxx:xxxx:xxxx:xxxx/64,604800,2592000
 SERVER=2001:8e0:40:11::254 SHLVL=2 RA_MTU=1500
 RA_ROUTES=::/0,fe80::ce4e:24ff:fe1c:3300,1800,512
 2001:8e0:9ff:2000::/64,,2592000,256 ::/0,fe80:132::1,1800,512
 ::/0,fe80::ce4e:24ff:fe1c:1400,1800,512
 PREFIXES=2001:8e0:xxxx:xxxx::/56,20
 }}}

 Additionally, all instances of the script seem to be fired concurrently,
 potentially leading to race conditions.

 On downstream interfaces where prefixes are delegated, this triggers
 spurious RA transmissions:
 {{{
 23:37:39.859586 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:37:39.860059 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:37:39.860492 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:37:41.088411 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:38:11.808657 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:38:11.809151 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:38:12.115866 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:38:13.037441 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:38:44.986535 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:38:44.986987 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:38:44.987356 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:38:45.908182 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:39:20.314863 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:39:20.315329 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:39:20.622034 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 23:39:21.333370 IP6 fe80::xxxx:xxxx:xxxx:xxxx > ff02::1: ICMP6, router
 advertisement, length 120
 }}}

 See how every 30s, 4 RAs are emitted on the LAN side.
 I've taken a deeper look at them, they all announce the same values
 (prefix, link mtu, rdnss, route info) so they shouldn't be confusing any
 on-link node, but frequent and spurious RAs are a known cause of battery
 drain on mobile devices.
 (Note that this one might be an odhcpd bug, but RA emission lines up with
 script invocations).


 More importantly, because /lib/netifd/dhcpv6.script refreshes route and
 address lifetimes in the kernel's FIB, this causes routing instability,
 interrupting traffic for about ~1s every 30-60s.
 {{{
 10:00:33.007279 IP6 2001:8e0:xxxx:xxxx::1 >
 2001:8e0:xxxx:xxxx:94f0:8898:897f:117d: ICMP6, destination unreachable,
 unreachable route 2001:6b0:e:2018::138, length 80
 10:00:33.007782 IP6 2001:8e0:xxxx:xxxx::1 >
 2001:8e0:xxxx:xxxx:94f0:8898:897f:117d: ICMP6, destination unreachable,
 unreachable route 2001:6b0:e:2018::138, length 80
 10:00:33.008197 IP6 2001:8e0:xxxx:xxxx::1 >
 2001:8e0:xxxx:xxxx:94f0:8898:897f:117d: ICMP6, destination unreachable,
 unreachable route 2001:6b0:e:2018::138, length 80
 [...]
 }}}


 Here's my relevant /etc/config/network entry:
 {{{
 config interface 'wan6'
         option ifname 'eth0.2'
         option proto 'dhcpv6'
         option reqaddress 'none' # don't request IA-NA
         option noslaaconly '1' # don't configure addresses from ISP RA
 pinfo (doesn't seem to work)
 }}}


 This is on a WDR3600 (env shows "board=TL-WDR4300") with Chaos Chalmer
 rc3.

 Let me know if you need additional info and sorry for the long post :)

--
Ticket URL: <https://dev.openwrt.org/ticket/20178>
OpenWrt <http://openwrt.org>
Opensource Wireless Router Technology
_______________________________________________
openwrt-tickets mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-tickets

Reply via email to