[FS#3728] IPv6 Connectivity Lost When ISP Router is Restarted

OpenWrt Bugs openwrt-bugs at lists.openwrt.org
Tue Apr 6 18:02:43 BST 2021


A new Flyspray task has been opened.  Details are below. 

User who did this - Hannah Rittich (hrittich) 

Attached to Project - OpenWrt/LEDE Project
Summary - IPv6 Connectivity Lost When ISP Router is Restarted
Task Type - Bug Report
Category - Base system
Status - Unconfirmed
Assigned To - 
Operating System - All
Severity - Low
Priority - Very Low
Reported Version - openwrt-19.07
Due in Version - Undecided
Due Date - Undecided
Details - I am running OpenWrt 19.07.7 on a TpLink Archer C7 (v5). The OpenWrt router is connected to a Router that is provided by my ISP. The ISP router connects to the Internet using DS-Lite.

    ------------     -----------     ----------     ------------
    | Local    |     | OpenWrt |     |  ISP   |     | Internet |
    | Network  |-----| Router  |-----| Router |-----|          |
    ------------     -----------     ----------     ------------

The OpenWrt router receives a delegated prefix using DHCPv6, which provides global addresses to the network connected to the OpenWrt router. This works perfectly fine, until the ISP router is restarted, which sometimes happens when it upgrades its firmware. In this situation, the IPv6 connectivity is lost and is not automatically restored. To get IPv6 connectivity, I have to restart the WAN6 interface, which estabilshes the IPv6 connection again. The IPv4 connectivity is restored automatically.

After the IPS router has been restarted, the OpenWrt router cannot ping IPv6 hosts via global addresses. Even the global address of the ISP router cannot be reached via ping. Pings via link-local addresses work fine.

When the IPv6 connection is gone, restarting the WAN6 interface, seems to change nothing on the side of the OpenWrt router. The output before and after the restart of //ip -6 addr//, //ip -6 route//, and //ip6tables -L// are identical (except for the IP address life-times). Also the information displayed by LuCI on the Interface page stays the same. However, the connectivity is restored after the interface is restarted.

My guess for explaining this behavior is as follows. When the ISP router is restarted, it receives the same IPv6 address lease and prefix from my ISP as earlier. (The IPv6 address lease is valid for a few days.) The ISP router, however, has "forgotten" that it had delegated a prefix to the OpenWrt router. Hence, the ISP router is not routing any traffic to the prefix the OpenWrt router is using. Since the IPv6 address of the ISP router does not change, the OpenWrt router does not detect this change. The RAs that the OpenWrt router receives are the same as before. When I restart the WAN6 interface, however, it asks for a new IPv6 address and a new IPv6 prefix, which in turn leads to the ISP router creating the proper route for the delegated prefix, which restores the IPv6 connectivity.

Unfortunately, I do not have access to the routing table of the ISP router, and hence, I cannot verify my hypothesis. (The reason for using OpenWrt is, that the ISP router is severely limited. I have to use the ISP router, however.)

Is there a way to force odhcp6c to probe whether the current delegated prefix is valid? Maybe sending some sort of renew/refresh message via DHCPv6? Is there a way to ask odhcp6c to regularly update/renew the delegated prefix, say every 5 minutes?

I currently have a cron job, which pings an IPv6 host on the internet and restarts the WAN6 interface when the ping fails. This workaround does the trick, but is rather ugly.

More information can be found at the following URL:

You are receiving this message because you have requested it from the Flyspray bugtracking system.  If you did not expect this message or don't want to receive mails in future, you can change your notification settings at the URL shown above.

More information about the openwrt-bugs mailing list