Open Gowee opened 1 year ago
A tight window limits bandwidth, while a loose window undermines the effectiveness of flow control, resulting in higher latency & jitter.
The current implementation (in dev branch) is ported from hyper, which appears to be nonoptimal.
Similar strategies are also used in other libraries:
Dotnet: https://github.com/dotnet/runtime/pull/54755/files gRPC: https://github.com/grpc/grpc-go/blob/master/internal/transport/bdp_estimator.go cURL: https://github.com/curl/curl/commit/a4d888857ede39a8e2aa5f961048c6362d3a5377 Chromium: https://source.chromium.org/search?q=kSpdySessionMaxRecvWindowSize&sq= Nginx: https://github.com/nginx/nginx/blob/b489ba83e9be446923facfe1a2fe392be3095d1f/src/http/v2/ngx_http_v2.c#L244 Go: https://github.com/golang/net/blob/47caaff48d7cdfbc45b155988009eb57a72bbeaf/http2/server.go#L158
A tight window limits bandwidth, while a loose window undermines the effectiveness of flow control, resulting in higher latency & jitter.
The current implementation (in dev branch) is ported from hyper, which appears to be nonoptimal.
Similar strategies are also used in other libraries:
Dotnet: https://github.com/dotnet/runtime/pull/54755/files gRPC: https://github.com/grpc/grpc-go/blob/master/internal/transport/bdp_estimator.go cURL: https://github.com/curl/curl/commit/a4d888857ede39a8e2aa5f961048c6362d3a5377 Chromium: https://source.chromium.org/search?q=kSpdySessionMaxRecvWindowSize&sq= Nginx: https://github.com/nginx/nginx/blob/b489ba83e9be446923facfe1a2fe392be3095d1f/src/http/v2/ngx_http_v2.c#L244 Go: https://github.com/golang/net/blob/47caaff48d7cdfbc45b155988009eb57a72bbeaf/http2/server.go#L158