outbound: handle Opaque protocol hints on endpoints#2237
Merged
Conversation
olix0r
approved these changes
Apr 13, 2023
Opaque protocol hints on endpoints (take 2)Opaque protocol hints on endpoints
hawkw
added a commit
to linkerd/linkerd2
that referenced
this pull request
Apr 18, 2023
This proxy release changes the proxy to handle `Opaque` protocol hints on endpoints when sent by the Destination service. In addition, it updates the dependency on `h2` to fix a potential crash in the HTTP/2 implementation. --- * build(deps): bump `h2` to v0.3.18 (linkerd/linkerd2-proxy#2394) * outbound: handle `Opaque` protocol hints on endpoints (linkerd/linkerd2-proxy#2237) * build(deps): bump cmake from 0.1.49 to 0.1.50 (linkerd/linkerd2-proxy#2365)
hawkw
added a commit
to linkerd/linkerd2
that referenced
this pull request
Apr 19, 2023
This proxy release changes the proxy to handle `Opaque` protocol hints on endpoints when sent by the Destination service. In addition, it updates the dependency on `h2` to fix a potential crash in the HTTP/2 implementation. --- * build(deps): bump `h2` to v0.3.18 (linkerd/linkerd2-proxy#2394) * outbound: handle `Opaque` protocol hints on endpoints (linkerd/linkerd2-proxy#2237) * build(deps): bump cmake from 0.1.49 to 0.1.50 (linkerd/linkerd2-proxy#2365)
alpeb
pushed a commit
to linkerd/linkerd2
that referenced
this pull request
Apr 24, 2023
This proxy release changes the proxy to handle `Opaque` protocol hints on endpoints when sent by the Destination service. In addition, it updates the dependency on `h2` to fix a potential crash in the HTTP/2 implementation. --- * build(deps): bump `h2` to v0.3.18 (linkerd/linkerd2-proxy#2394) * outbound: handle `Opaque` protocol hints on endpoints (linkerd/linkerd2-proxy#2237) * build(deps): bump cmake from 0.1.49 to 0.1.50 (linkerd/linkerd2-proxy#2365)
risingspiral
pushed a commit
to linkerd/linkerd2
that referenced
this pull request
May 4, 2023
This proxy release changes the proxy to handle `Opaque` protocol hints on endpoints when sent by the Destination service. In addition, it updates the dependency on `h2` to fix a potential crash in the HTTP/2 implementation. --- * build(deps): bump `h2` to v0.3.18 (linkerd/linkerd2-proxy#2394) * outbound: handle `Opaque` protocol hints on endpoints (linkerd/linkerd2-proxy#2237) * build(deps): bump cmake from 0.1.49 to 0.1.50 (linkerd/linkerd2-proxy#2365)
risingspiral
pushed a commit
to linkerd/linkerd2
that referenced
this pull request
May 5, 2023
This proxy release changes the proxy to handle `Opaque` protocol hints on endpoints when sent by the Destination service. In addition, it updates the dependency on `h2` to fix a potential crash in the HTTP/2 implementation. --- * build(deps): bump `h2` to v0.3.18 (linkerd/linkerd2-proxy#2394) * outbound: handle `Opaque` protocol hints on endpoints (linkerd/linkerd2-proxy#2237) * build(deps): bump cmake from 0.1.49 to 0.1.50 (linkerd/linkerd2-proxy#2365) Signed-off-by: Eric Anderson <eric@buoyant.io>
risingspiral
pushed a commit
to linkerd/linkerd2
that referenced
this pull request
May 5, 2023
This proxy release changes the proxy to handle `Opaque` protocol hints on endpoints when sent by the Destination service. In addition, it updates the dependency on `h2` to fix a potential crash in the HTTP/2 implementation. --- * build(deps): bump `h2` to v0.3.18 (linkerd/linkerd2-proxy#2394) * outbound: handle `Opaque` protocol hints on endpoints (linkerd/linkerd2-proxy#2237) * build(deps): bump cmake from 0.1.49 to 0.1.50 (linkerd/linkerd2-proxy#2365) Signed-off-by: Eric Anderson <eric@buoyant.io>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Currently, when the outbound proxy makes a direct connection prefixed
with a
TransportHeaderin order to send HTTP traffic, it will alwayssend a
SessionProtocolhint with the HTTP version as part of theheader. This instructs the inbound proxy to use that protocol, even if
the target port has a ServerPolicy that marks that port as opaque, which
can result in incorrect handling of that connection. See
linkerd/linkerd2#9888 for details.
In order to prevent this, linkerd/linkerd2-proxy-api#197 adds a new
ProtocolHintvalue to the protobuf endpoint metadata message. Thiswill allow the Destination controller to explicitly indicate to the
outbound proxy that a given endpoint is known to handle all connections
to a port as an opaque TCP stream, and that the proxy should not perform
a protocol upgrade or send a
SessionProtocolin the transport header.This branch updates the proxy to handle this new hint value, and adds
tests that the outbound proxy behaves as expected.
Along with linkerd/linkerd2#10301, this will fix linkerd/linkerd2#9888.
I opened a new PR for this change rather than attempting to rebase my
previous PR #2209, as it felt a bit easier to start with a new branch
and just make the changes that were still relevant. Therefore, this
closes #2209.