Skip to content

Commit f07d4b6

Browse files
authoredApr 29, 2024
feat(destination): Add http2 client params to endpoints (#331)
This change updates the Destination API so that its WeightedAddr type, which represents an individual network endpoint, with HTTP/2 client parameters. This enables the control plane to alter keep-alive and flow control settings on a per-endpoint basis.
1 parent c123b27 commit f07d4b6

File tree

12 files changed

+830
-335
lines changed

12 files changed

+830
-335
lines changed
 

‎go/destination/destination.pb.go

+714-326
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/grpc_route/grpc_route.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/http_route/http_route.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/http_types/http_types.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/identity/identity.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/inbound/inbound.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/meta/meta.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/net/net.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/outbound/outbound.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/tap/tap.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎proto/destination.proto

+47
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ message WeightedAddr {
101101
TlsIdentity tls_identity = 5;
102102
ProtocolHint protocol_hint = 6;
103103
AuthorityOverride authority_override = 7;
104+
105+
// The HTTP/2 parameters to use when connecting to the destination, if HTTP/2
106+
// is used. These parameters are used by proxies when the application traffic
107+
// is HTTP/2 or when the H2 ProtocolHint is used to transport HTTP/1
108+
// connections over HTTP/2.
109+
Http2ClientParams http2 = 8;
104110
}
105111

106112
message TlsIdentity {
@@ -166,6 +172,47 @@ message ProtocolHint {
166172
}
167173
}
168174

175+
// Configures the parameters used to initialize an HTTP/2 connection.
176+
message Http2ClientParams {
177+
// Overrides the default client flow control settings.
178+
FlowControl flow_control = 1;
179+
180+
// Enables keep-alive timeouts.
181+
KeepAlive keep_alive = 2;
182+
183+
// Configures Hyper internals.
184+
Internals internals = 3;
185+
186+
message FlowControl {
187+
// Configures the maximum connection-level flow control window size.
188+
uint32 initial_connection_window_size = 1;
189+
190+
// Configures the maximum stream-level flow control window size.
191+
uint32 initial_stream_window_size = 2;
192+
193+
// Enables Hyper's adaptive flow control, ignoring other window settings.
194+
bool adaptive_flow_control = 3;
195+
}
196+
197+
message KeepAlive {
198+
// The time between pings.
199+
google.protobuf.Duration interval = 1;
200+
201+
// The time to wait for a ping response before considering the connection
202+
// dead.
203+
google.protobuf.Duration timeout = 2;
204+
205+
// Whether to send pings when there is no other traffic.
206+
bool while_idle = 3;
207+
}
208+
209+
message Internals {
210+
uint32 max_concurrent_reset_streams = 1;
211+
uint32 max_frame_size = 2;
212+
uint32 max_send_buf_size = 3;
213+
}
214+
}
215+
169216
message DestinationProfile {
170217
// The fully-qualified service name, if one exists.
171218
//

‎src/gen/io.linkerd.proxy.destination.rs

+60
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)