Description:
When the underlying network changes, Skywire's visor rebinds all services, which is effectively equivalent to a full restart. This is inherent to how Skywire currently works and there's no mechanism to avoid it. As a partial mitigation, switchkill can be used to prevent traffic from leaking over the underlying network instead of going through Skywire during this transition.
On mobile this becomes a real usability problem:
Switching between multiple BTS/cell towers is fine, since mobile networks are designed to handle that without dropping the connection.
Switching between SIM data and Wi-Fi is not handled well. When this happens, the VPN disconnects automatically, and the VPN node list frequently fails to reload, leaving the user with no visible nodes to connect to. The only workaround right now is restarting the core.
Steps to reproduce:
- Connect to a Skywire VPN node on mobile while on Wi-Fi.
- Switch from Wi-Fi to SIM data (or vice versa).
- Observe that the VPN disconnects and the node list often fails to reload.
- Restarting the core is currently required to recover.
Expected behavior:
Network interface changes (SIM ↔ Wi-Fi and SIM ↔ SIM) should not leave the visor in a broken state requiring a manual restart. Ideally the visor should detect the interface change and rebind/reconnect automatically, or at minimum reliably reload the VPN node list without user intervention.
Current behavior:
VPN disconnects on network switch and the node list frequently fails to reload, requiring a full core restart to recover.
Needs investigation:
Whether the rebind-on-network-change behavior can be scoped to be less disruptive on mobile specifically.
Why the VPN node list fails to reload after a network switch, this may be a separate underlying bug from the rebind behavior itself.
Whether switchkill's current behavior is sufficient during the transition window or needs adjustment for mobile.
Description:
When the underlying network changes, Skywire's visor rebinds all services, which is effectively equivalent to a full restart. This is inherent to how Skywire currently works and there's no mechanism to avoid it. As a partial mitigation, switchkill can be used to prevent traffic from leaking over the underlying network instead of going through Skywire during this transition.
On mobile this becomes a real usability problem:
Switching between multiple BTS/cell towers is fine, since mobile networks are designed to handle that without dropping the connection.
Switching between SIM data and Wi-Fi is not handled well. When this happens, the VPN disconnects automatically, and the VPN node list frequently fails to reload, leaving the user with no visible nodes to connect to. The only workaround right now is restarting the core.
Steps to reproduce:
Expected behavior:
Network interface changes (SIM ↔ Wi-Fi and SIM ↔ SIM) should not leave the visor in a broken state requiring a manual restart. Ideally the visor should detect the interface change and rebind/reconnect automatically, or at minimum reliably reload the VPN node list without user intervention.
Current behavior:
VPN disconnects on network switch and the node list frequently fails to reload, requiring a full core restart to recover.
Needs investigation:
Whether the rebind-on-network-change behavior can be scoped to be less disruptive on mobile specifically.
Why the VPN node list fails to reload after a network switch, this may be a separate underlying bug from the rebind behavior itself.
Whether switchkill's current behavior is sufficient during the transition window or needs adjustment for mobile.