Closed dmavrommatis closed 2 weeks ago
Based on my knowledge of delta XDS, we could probably split up the subscription requests to avoid hitting the default receive message size limit. But that limit is somewhat arbitrary. It don't recall it showing up in the gRPC spec and there's nothing to prevent a different gRPC server implementation from choosing a different limit. I think this ends up being a well-meaning default for servers with untrusted clients that trips up systems with trusted clients as their scale grows.
Based on my knowledge of delta XDS, we could probably split up the subscription requests to avoid hitting the default receive message size limit. But that limit is somewhat arbitrary. It don't recall it showing up in the gRPC spec and there's nothing to prevent a different gRPC server implementation from choosing a different limit. I think this ends up being a well-meaning default for servers with untrusted clients that trips up systems with trusted clients as their scale grows.
I am using the https://github.com/envoyproxy/go-control-plane implementation of xDS server and it looks like it doesn't split up the requests and just full sends all the deltas disregarding the size.
In any case; the 4MB limit size on the receiving end of envoy seems very low. I haven't used/see other implementations of the control-plane (e.g. https://github.com/envoyproxy/java-control-plane) so it might be only the golang one that is the problematic and does not split-up messages.
This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions.
This issue has been automatically closed because it has not had activity in the last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted" or "no stalebot". Thank you for your contributions.
Title: xDS server sends larger message than max
Description: I have an envoy configuration that uses RDS and has more than 50k routes. Even though I am using
DELTA_GRPC
sometimes the proxy will end-up not being able to receive any new updates with the error message:Locally, I created a gRCP client with higher
grpc.MaxCallRecvMsgSize(math.MaxInt32)
and it worked but I am curious if this is something that we want to be able to configure on envoy as well. Any idea why using the DELTA API is not enough and it batches bigger updates than the gRPC can handle?I also saw that
defaultServerMaxSendMessageSize = math.MaxInt32
vsdefaultClientMaxReceiveMessageSize = 1024 * 1024 * 4
which is exactly what causes the issue to appear.Repro steps:
Config: envoy.yaml
lds.yaml
Logs: