I am operating OpenWrt routers with mwan3 and also know other people that do this. A longstanding issue is that IPv6 allows deprecated rules and mwan3 uses them and then has connectivity issues.
However, deprecated routes should still work. So I suspected an issue in the upstream routers (issue was always with IPv6 RA with Fritz! routers, but never when OpenWrt itself did PPPoE). A packet capture showed that what OpenWrt considerd valid but deprecated was sent as invalid (valid lifetime = zero) from the uplink. odhcp6c handles RA prefixes here [1] by calling odhcp6c_update_entry; the third parameter (called "safe") is hardcoded as 7200 (2 hours). In its implementation, something strange is done using it [2]: 803 if (x && x->valid > new->valid && new->valid < safe) 804 new->valid = safe; Note: x is the previous data for that prefix. If new->valid is zero, then it is very likely smaller than x->valid and at the same time smaller than safe (2 hours). In this case, valid = 0 is replaced with valid = 2 hours. As the next RA is received within two hours, it is again extended to the full two hours. RFC 4861 recommends another behavior: > If the prefix is already present in the host's Prefix List as > the result of a previously received advertisement, reset its > invalidation timer to the Valid Lifetime value in the Prefix > Information option. If the new Lifetime value is zero, time-out > the prefix immediately (see Section 6.3.5). Now, one could add valid = zero as special case. However, I see an bigger issue. I suspect that the whole if statement has a logic error and something else was intended. Maybe clamping valid to up to two hours? [1] https://git.openwrt.org/?p=project/odhcp6c.git;a=blob;f=src/ra.c;h=01a8b721d719f0e0e545a3ca7471c47490597969;hb=77e1ae21e67f81840024ffe5bb7cf69a8fb0d2f0#l511 [2] https://git.openwrt.org/?p=project/odhcp6c.git;a=blob;f=src/odhcp6c.c;h=8354820746131b8d0c9d01f7141af635edc0b8fe;hb=77e1ae21e67f81840024ffe5bb7cf69a8fb0d2f0#l803 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
