envoyproxy/envoy

mobile connectivity: degraded performance for specific domains-carriers pairs

Open

#26,707 建立於 2023年4月12日

在 GitHub 查看
 (0 留言) (0 反應) (0 負責人)C++ (5,373 fork)batch import
help wantedmobile

倉庫指標

Star
 (27,997 star)
PR 合併指標
 (平均合併 8天) (30 天內合併 378 個 PR)

描述

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.

貢獻者指南