mobile connectivity: degraded performance for specific domains-carriers pairs
#26.707 geöffnet am 12. Apr. 2023
Repository-Metriken
- Stars
- (27.997 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 8T) (378 gemergte PRs in 30 T)
Beschreibung
Title: mobile connectivity: degraded performance for specific domains-carriers pairs
Description: TL;DR: Forcing IPv6 (https://github.com/envoyproxy/envoy/pull/21803, https://github.com/envoyproxy/envoy/pull/24517) is needed to fix connectivity issues seen by some U.S. Cellular carrier users but at the time enabling feature degrades the connectivity of Cricket users. The issue exists on both iOS and Android platforms.
Context: Our past data analysis showed that Envoy Mobile on Android had issue to talk with one of Lyft owned domains that advertises IPv4 addresses only for U.S. Cellular carrier users. It did not happen for all U.S. Cellular users and it was common for an issue to go away after a few days/weeks. That being said, once the issue started happening for a given user they were unable to talk with aforementioned Lyft domain at all - all connections to that domain were failing.
To work around this issue @mattklein123 inspected the source code of Android and found out that Android uses dual stack IPv6 sockets for all of its connections. The change from https://github.com/envoyproxy/envoy/pull/21803 have fixed U.S. Cellular connectivity issues.
Present: The same U.S. Cellular connectivity issues happened on iOS and we confirmed that they went away after we applied dual stack IPv6 sockets change aforementioned above (PR adding config knob on iOS side of things https://github.com/envoyproxy/envoy/pull/24517). As we continued to look at the data we noticed other impact that enabling dual stack sockets had: it degraded the performance (success rate) of requests going to some 3rd party domains (s3 buckets) for Cricket carrier users. We confirmed that the Cricket users issue exists on both iOS and Android.
So while forcing dual socket IPv6 sockets seems to be helping U.S. Cellular users to talk with some domains they degrade the performance of some network requests performed by Cricket users.
Possible solution Instead of forcing dual stack sockets for all connections made by Envoy Mobile, make "IPv4 to IPv6 transformed address" to be one of the addresses that Happy Eyeballs mechanism tries out when trying to connect to a given domain.