I can confirm the problem.
I did some tests and hope my results will help to fix the problem.
First some background information about my setup:
OS Version: 4.4.0.64
Hardware: Xperia 10 III
Android Support: Not Installed
Android Version before flashing Sailfish: 62.0.A.9.11
UI Language: German
Mobile Network Operator: Congstar (subsidiary of Telekom Deutschland)
My WLAN/LAN network and my DSL connection is IPv4 only (desired behavior).
My Mobile Data Network is IPv6 only (this is another bug I’m investigating).
After switching on mobile data, one of the rmnet_data network interfaces is assigned to it.
But the assignment is not always the same, sometimes it is assigned to rmnet_data1, sometimes to rmnet_data2 or rmnet_ data3, etc.
At the same time, a corresponding default route is entered in the routing table:
[root@Xperia10III defaultuser]# connmanctl services cellular_XXXXXXXXXXXXXXX_context1 | grep Ethernet
Ethernet = [ Method=auto, Interface=rmnet_data1, Address=00:00:00:00:00:00, MTU=1500 ]
[root@Xperia10III defaultuser]# ip -6 route | grep default
default via fe80::6002:dc5c:cea5:83e0 dev rmnet_data1 proto ra metric 1024 expires 65187sec
After switching on VOLTE, another interface of the rmnet_data network interfaces is assigned to it.
But here, the assignment is not always the same either, sometimes rmnet_data1 or rmnet_data2 or rmnet_data3.
Unfortunately, a further default route is entered in the routing table for this interface:
[root@Xperia10III defaultuser]# ip -6 route | grep default
default via fe80::6002:dc5c:cea5:83e0 dev rmnet_data1 proto ra metric 1024 expires 65187sec
default via fe80::c4f5:5ae:ce9f:265b dev rmnet_data2 proto ra metric 1024 expires 65533sec
This ends up with two default gateways, which is not desirable and usually causes connection problems.
If the following constellation occurs, the user will not notice any problems:
If the network interface with the lower number (e.g. rmnet_data1) is used for mobile data and for VOLTE, the network interface with the higher number is assigned (e.g. rmnet_data2), then the default gateway for mobile data is at the top of the routing table and is therefore used first and everything works as expected.
BUT, repeatedly turning mobile data and/or flight mode on and off may result in the following constellation:
VOLTE is assigned to a low-numbered network interface (e.g. rmnet_data1) and the network interface with a higher number (e.g. rmnet_data3) is assigned to mobile data.
[root@Xperia10III defaultuser]# connmanctl services cellular_XXXXXXXXXXXXXXX_context1 | grep Ethernet
Ethernet = [ Method=auto, Interface=rmnet_data3, Address=00:00:00:00:00:00, MTU=1500 ]
[root@Xperia10III defaultuser]# ip -6 route | grep default
default via fe80::d906:e1d5:affa:6b11 dev rmnet_data1 proto ra metric 1024 expires 65534sec
default via fe80::7960:6c01:83e2:f683 dev rmnet_data3 proto ra metric 1024 expires 65532sec
The default gateway from VOLTE network interface is used, because it is now at the top of the routing table. As a result, network access via mobile data is no longer possible.
After deleting the entry of the default gateway for the VOLTE interface, the mobile data works perfectly again.
[root@Xperia10III defaultuser]# ip -6 route del default via fe80::d906:e1d5:affa:6b11
[root@Xperia10III defaultuser]# ip -6 route | grep default
default via fe80::7960:6c01:83e2:f683 dev rmnet_data3 proto ra metric 1024 expires 65532sec
After this change, VOLTE still works perfectly! So the question is: Why is a default gateway for the VOLTE interface entered into the routing table?
Maybe, this findings could be as well interesting for the Bug reports:
and/or for the described problems in this thread: