envoyproxy/envoy

rlqs: Support percentage/ratio-based rate limit strategies

Open

#46,086 创建于 2026年7月10日

在 GitHub 查看
 (1 评论) (1 反应) (0 负责人)C++ (5,373 fork)batch import
area/ratelimitenhancementhelp wanted

仓库指标

Star
 (27,997 star)
PR 合并指标
 (平均合并 8天) (30 天内合并 378 个 PR)

描述

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

贡献者指南