Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connectivity grid for upstream connections #15649

Closed
alyssawilk opened this issue Mar 24, 2021 · 0 comments
Closed

Connectivity grid for upstream connections #15649

alyssawilk opened this issue Mar 24, 2021 · 0 comments
Assignees
Labels
area/quic cronvoy-alpha feature list for cronvoy alpha help wanted Needs help!

Comments

@alyssawilk
Copy link
Contributor

As #14829 nears completion we need to have support in Envoy for trying QUIC connections and failing over to TCP. This sort of "try something and fail over" is also needed for mobile and dynamic forward proxy for ipv6 vs ipv4, and for mobile cellular vs wifi so we need something which can at worst handle the full grid of [QUIC vs TCP][IPv4 vs IPv4][cellular vs wifi]

The plan of record is to have a connection pool which seamlessly tries one after another, hiding the complexity from both the TCP proxy code and the router, and just selects the best available connection and uses it.

@alyssawilk alyssawilk added the enhancement Feature requests. Not bugs or questions. label Mar 24, 2021
@alyssawilk alyssawilk self-assigned this Mar 24, 2021
@mattklein123 mattklein123 added area/quic help wanted Needs help! and removed enhancement Feature requests. Not bugs or questions. labels Mar 24, 2021
alyssawilk added a commit that referenced this issue Mar 30, 2021
Naive connectivity grid, which works for TCP/UDP and only does serial connections.

Risk Level: n/a (unused code)
Testing: new unit tests
Docs Changes: n/a
Release Notes: n/a
Part of #15649

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
alyssawilk added a commit that referenced this issue Apr 1, 2021
Adding trace logs to the connectivity grid
Risk Level: n/a (adding an accessor to connection pools)
Testing: new unit tests
Part of #15649
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
alyssawilk added a commit that referenced this issue Apr 5, 2021
Risk Level: n/a (not used in prod)
Testing: unit tests
Docs Changes: n/a
Part of #15649

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
alyssawilk added a commit that referenced this issue Apr 6, 2021
Turning up http2 upstream tests for http3.

Risk Level: n/a (test only)
Testing: yes
Docs Changes: n/a
Release Notes: n/a
Part of #15649

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
RyanTheOptimist added a commit to RyanTheOptimist/envoy that referenced this issue Apr 7, 2021
alyssawilk pushed a commit that referenced this issue Apr 8, 2021
…15649) (#15881)

Make the failover timeout a constructor argument of ConnectionGrid (#5649)

Commit Message: make the failover timeout a constructor argument of ConnectionGrid
Additional Description:
Risk Level: low
Testing: unit test ConnectivityGridTest.TimeoutThenSuccessParallelSecondConnects
Docs Changes: N/A
Release Notes: N/A
Platform Specific Features:

Signed-off-by: Ryan Hamilton <rch@google.com>
alyssawilk added a commit that referenced this issue Apr 8, 2021
Handle when newStream immediately connects/fails. In this case, all the wrappers should be immediately deleted, and return nullptr rather than returning wrappers.

Risk Level: n/a (code unused)
Testing: new unit tests
Docs Changes: n/a
Release Notes: n/a

Part of #15649

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
@alyssawilk alyssawilk added the cronvoy-alpha feature list for cronvoy alpha label May 4, 2021
alyssawilk added a commit that referenced this issue May 6, 2021
Addressing a TODO for upstream quic crypto. The clientContextConfig looks safe to access, as it does not reload, but QUIC was using the context to create a fresh Tls::ClientContextImpl per connection instead of reusing the factory built shared Ssl::ClientContextSharedPtr. This PR moves it to the ssl shared pointer.

Risk Level: low (mostly H3 only)
Testing: n/a (refactor)
Docs Changes: n/a
Release Notes: n/a
part of #15649

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
alyssawilk pushed a commit that referenced this issue May 6, 2021
Allow the ConnectivityGrid to take an optional AlternateProtocolsCache and use that for deciding if HTTP/3 should be enabled.
Rename AlternateProtocols to AlternateProtocolsCache.
Use uint32_t instead of int for ports in AlternateProtocolsCache to match other code in Envoy.

Follow up PRs will make the AlternateProtocolsCache mandatory and will plumb it in from the ClusterManager, based on the config.

Risk Level: Low
Testing: new unit tests
Docs Changes: N/A
Release Notes: N/A
Platform Specific Features: N/A
Part of #15649
Signed-off-by: Ryan Hamilton <rch@google.com>
@alyssawilk alyssawilk removed their assignment May 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/quic cronvoy-alpha feature list for cronvoy alpha help wanted Needs help!
Projects
None yet
Development

No branches or pull requests

3 participants