envoyproxy/envoy

rlqs: Support percentage/ratio-based rate limit strategies

Open

#46,086 opened on Jul 10, 2026

View on GitHub
 (1 comment) (1 reaction) (0 assignees)C++ (5,373 forks)batch import
area/ratelimitenhancementhelp wanted

Repository metrics

Stars
 (27,997 stars)
PR merge metrics
 (Avg merge 8d) (378 merged PRs in 30d)

Description

RLQS RateLimitStrategy only supports absolute counts, not percentage/ratio-based limits

Description: The Rate Limit Quota Service (RLQS) protocol expresses quota assignments via type.v3.RateLimitStrategy, which currently supports only:

  • blanket_rule (allow all / deny all)
  • requests_per_time_unit (an absolute uint64 count per time unit)
  • token_bucket (absolute max tokens + fill rate)

There is no way to express a quota as a percentage or ratio of some baseline (e.g. "allow 10% of traffic to this bucket" or "shed 25% of requests"). This would be useful for use cases like gradual rollout/ramp-up of a rate limiting policy, proportional load shedding across buckets, or percentage-based traffic shaping that scales automatically with incoming volume instead of requiring a control plane to compute and continuously update absolute request-per-second figures.

Requesting a new RateLimitStrategy variant (e.g. PercentageRule or ratio) that lets the control plane express limits as a percentage/fraction of observed request volume, similar to the existing percentage-based fault injection / traffic shifting semantics elsewhere in Envoy (e.g. envoy.type.v3.FractionalPercent).

[optional Relevant Links:]

https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/rate_limit_quota/v3/rlqs.proto https://www.envoyproxy.io/docs/envoy/latest/api-v3/type/v3/ratelimit_strategy.proto

Contributor guide