Skip to content

Conversation

@mariash
Copy link
Member

@mariash mariash commented Jul 13, 2021

Add the list of ALPN protocols that will be used by Envoy for
negotiation when connecting to applications.

#178805678

Co-authored-by: Merric de Launey [email protected]

What is this change about?

Executor now generates Envoy config with AlpnProtocols list as h2,http/1.1

What problem it is trying to solve?

It allows Gorouter to communicate with Envoy over HTTP2

What is the impact if the change is not made?

There would be no end to end HTTP2 support.

How should this change be described in diego-release release notes?

Update Envoy configuration to include http2 and http/1.1 ALPN Protocols

Please provide any contextual information.

Routing release issue - cloudfoundry/routing-release#200

Tag your pair, your PM, and/or team!

@weymanf

Thank you!

Add the list of ALPN protocols that will be used by Envoy for
negotiation when connecting to applications.

[#178805678](https://www.pivotaltracker.com/story/show/178805678)

Co-authored-by: Merric de Launey <[email protected]>
@cf-gitbot
Copy link

We have created an issue in Pivotal Tracker to manage this. Unfortunately, the Pivotal Tracker project is private so you may be unable to view the contents of the story.

The labels on this github issue will be updated when the story is started.

@ameowlia
Copy link
Member

  • I noticed that you only added "h2" and "http/1.1" to the list of approved protocols in envoy.
  • I know that Gorouter allows HTTP/1.0 traffic. See code here.
  • However, I don't know if gorouter passes it through to the backend as HTTP/1.0 traffic.

❓ Have you tested to see if this breaks http/1.0 traffic?
❓ If not, can you?

@mariash
Copy link
Member Author

mariash commented Jul 20, 2021

@ameowlia there is a test in a gorouter. Even if you send HTTP/1.0 the backend will get HTTP/1.1. This is because golang http client Request will always send either HTTP/1.1 or HTTP/2. https://pkg.go.dev/net/http#Request

	// For client requests, these fields are ignored. The HTTP
	// client code always uses either HTTP/1.1 or HTTP/2.
	// See the docs on Transport for details.
	Proto      string // "HTTP/1.0"
	ProtoMajor int    // 1
	ProtoMinor int    // 0

Do we care about HTTP/1.0 if request comes not from the gorouter?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants