REPRODUCIBILITY: 50%
OS VERSION: 4.4.0.64
HARDWARE: Sony Xperia 10 III
UI LANGUAGE: Finnish
REGRESSION: No*
MOBILE OPERATOR: Elisa / Finland
DESCRIPTION:
Update: This bus occurs only when VoLTE is enabled on Sony Xperia 10 III. Enabling VoLTE breaks IPv6 Internet connectivity, delaying IPv4 routing to take place as well. I suspect this is because the default IPv6 route is determined to be the “voice” interface and not the “data” interface.
Network analysis
This doesn’t include the VoLTE interface.
-
IPv4-only mode is affected by VoLTE
- IPv4 address is configured
- IPv6 link scope address is configured
- no IPv6 public address
-
ping www.google.com
resolves to IPv6 host, doesn’t work -
ping -4 www.jolla.com
works -
ip -4 route
shows a route to Internet -
ip -6 route
has only local routes - Jolla homepage is accessible via Browser
-
IPv6-only mode doesn’t work at all
- IPv4 address is not configured
- IPv6 link scope address is configured
- IPv6 public address is configured
-
ping www.google.com
resolves to IPv6 host, doesn’t work -
ping -4 www.google.com
doesn’t work -
ip -4 route
has only local routes -
ip -6 route
has only local routes ??? - Jolla homepage is not accessible via Browser, but it should
-
IPv4+IPv6 mode works over IPv4 only
- IPv4 address is configured
- IPv6 link scope address is configured
- IPv6 public address is configured
-
ping www.google.com
resolves to IPv6 host, doesn’t work -
ping -4 www.google.com
works -
ip -4 route
shows a route to Internet -
ip -6 route
shows a route to Internet (but no traffic gets through?) - Jolla homepage is eventually accessible via Browser
I think it boils down to IPv6 route misconfiguration or interface mix-up or just the order of the interfaces. When the IPv6 ping fails, the routes are as follows:
Broken IPv6 routing table with VoLTE
2001:999:xxxx:xxxx::/64 dev rmnet_data2 proto kernel metric 256
2001:999:zzzz:zzzz::/64 dev rmnet_data1 proto kernel metric 256
fe80::/64 dev rmnet_data0 proto kernel metric 256
fe80::/64 dev rmnet_ipa0 proto kernel metric 256
fe80::/64 dev rmnet_data1 proto kernel metric 256
fe80::/64 dev rndis0 proto kernel metric 256
fe80::/64 dev rmnet_data2 proto kernel metric 256
default via fe80::xxxx:xxxx:xxxx:xxxx dev rmnet_data1 proto ra metric 1024 expires 65444sec mtu 1280 hoplimit 64
default via fe80::xxxx:xxxx:xxxx:xxxx dev rmnet_data2 proto ra metric 1024 expires 65472sec mtu 1280 hoplimit 64
Then, after disabling VoLTE, there was only one IPv6 route and IPv4 + IPv6 traffic both worked.
I enabled VoLTE again, and this time the IPv6 connectivity was still there! This is the routing table now:
Functional IPv6 routing table with VoLTE
2001:999:xxxx:xxxx::/64 dev rmnet_data2 proto kernel metric 256
2001:999:yyyy:yyyy::/64 dev rmnet_data3 proto kernel metric 256
fe80::/64 dev rmnet_data0 proto kernel metric 256
fe80::/64 dev rmnet_ipa0 proto kernel metric 256
fe80::/64 dev rndis0 proto kernel metric 256
fe80::/64 dev rmnet_data2 proto kernel metric 256
fe80::/64 dev rmnet_data3 proto kernel metric 256
default via fe80::xxxx:xxxx:xxxx:xxxx dev rmnet_data2 proto ra metric 1024 expires 64247sec mtu 1280 hoplimit 64
default via fe80::yyyy:yyyy:yyyy:yyyy dev rmnet_data3 proto ra metric 1024 expires 64588sec mtu 1280 hoplimit 64
PRECONDITIONS:
- Sony Xperia 10 III
- VoLTE enabled and usable
- FI / Elisa SIM card with VoLTE, IPv4 and IPv6 (others should work, too)
STEPS TO REPRODUCE:
- Test Internet connectivity with IP, IPv6, and Both modes
- Required disabling and enabling mobile data in order to be fully effective (another bug?)
- Enabling and disabling VoLTE also affect the bug occurring
EXPECTED RESULT:
- Applications using Internet connectivity work snappily as expected
ACTUAL RESULT:
- Applications lag before beginning data transfer
- Caused by IPv6 name resolution in IPv4-only situation, or
- Caused by broken IPv6 support
MODIFICATIONS:
None
ADDITIONAL INFORMATION:
Enabling and disabling VoLTE breaks IPv6 Internet connectivity, but after setting it off and on again, connectivity restored. This doesn’t seem to happen every time though. Things could be different after a restart when VoLTE is enabled, or when it’s toggled on and off.
WORKAROUND
Update 2: Removing the wrong gateway seems to fix the issue, as @senders posted into one of the many reports of the same issue.
Update: To get IPv4+IPv6 connectivity with VoLTE, you can try do disable VoLTE, check connectivity, and try enabling VoLTE again.
The forceful method: Using the usual Linux spells, disabling IPv6 restores proper functionality in Email attachments and a few other applications, too:
- Set the mobile broadband type to IP (IPv4 only)
- In terminal, as root, execute the following commands (at your own risk):
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
Restoring the IPv6 can be done by rebooting the phone, or by executing:
sysctl -w net.ipv6.conf.all.disable_ipv6=0
sysctl -w net.ipv6.conf.default.disable_ipv6=0
Doing this (weirdly) doesn’t seem to affect VoLTE calls - at least the indicator showed “4G” when I made a call yesterday with IPv6 disabled.