package envoy.service.rate_limit_quota.v3

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

service RateLimitQuotaService

rlqs.proto:58

Defines the Rate Limit Quota Service (RLQS).

message BucketId

rlqs.proto:252

The identifier for the bucket. Used to match the bucket between the control plane (RLQS server), and the data plane (RLQS client), f.e.: * the data plane sends a usage report for requests matched into the bucket with ``BucketId`` to the control plane * the control plane sends an assignment for the bucket with ``BucketId`` to the data plane Bucket ID. Example: .. validated-code-block:: yaml :type-name: envoy.service.rate_limit_quota.v3.BucketId bucket: name: my_bucket env: staging .. note:: The order of ``BucketId`` keys do not matter. Buckets ``{ a: 'A', b: 'B' }`` and ``{ b: 'B', a: 'A' }`` are identical.

Used in: RateLimitQuotaResponse.BucketAction, RateLimitQuotaUsageReports.BucketQuotaUsage

message RateLimitQuotaResponse.BucketAction

rlqs.proto:106

Commands the data plane to apply one of the actions to the bucket with the :ref:`bucket_id <envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.bucket_id>`.

Used in: RateLimitQuotaResponse

message RateLimitQuotaResponse.BucketAction.AbandonAction

rlqs.proto:199

Abandon action for the bucket. Indicates that the RLQS server will no longer be sending updates for the given :ref:`bucket_id <envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.bucket_id>`. If no requests are reported for a bucket, after some time the server considers the bucket inactive. The server stops tracking the bucket, and instructs the the data plane to abandon the bucket via this message. **Abandoning the assignment** The data plane is to erase the bucket (including its usage data) from the memory. It should stop tracking the bucket, and stop reporting its usage. This effectively resets the data plane to the state prior to matching the first request into the bucket. **Restarting the subscription** If a new request is matched into a bucket previously abandoned, the data plane must behave as if it has never tracked the bucket, and it's the first request matched into it: 1. The process of :ref:`subscription and reporting <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.reporting_interval>` starts from the beginning. 2. The bucket transitions to the :ref:`"no assignment" <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.no_assignment_behavior>` state. 3. Once the new assignment is received, it's applied per "Applying the first assignment to the bucket" section of the :ref:`QuotaAssignmentAction <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction>`.

Used in: BucketAction

(message has no fields)

message RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction

rlqs.proto:140

Quota assignment for the bucket. Configures the rate limiting strategy and the duration for the given :ref:`bucket_id <envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.bucket_id>`. **Applying the first assignment to the bucket** Once the data plane receives the ``QuotaAssignmentAction``, it must send the current usage report for the bucket, and start rate limiting requests matched into the bucket using the strategy configured in the :ref:`rate_limit_strategy <envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction.rate_limit_strategy>` field. The assignment becomes bucket's ``active`` assignment. **Expiring the assignment** The duration of the assignment defined in the :ref:`assignment_time_to_live <envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction.assignment_time_to_live>` field. When the duration runs off, the assignment is ``expired``, and no longer ``active``. The data plane should stop applying the rate limiting strategy to the bucket, and transition the bucket to the "expired assignment" state. This activates the behavior configured in the :ref:`expired_assignment_behavior <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.expired_assignment_behavior>` field. **Replacing the assignment** * If the rate limiting strategy is different from bucket's ``active`` assignment, or the current bucket assignment is ``expired``, the data plane must immediately end the current assignment, report the bucket usage, and apply the new assignment. The new assignment becomes bucket's ``active`` assignment. * If the rate limiting strategy is the same as the bucket's ``active`` (not ``expired``) assignment, the data plane should extend the duration of the ``active`` assignment for the duration of the new assignment provided in the :ref:`assignment_time_to_live <envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction.assignment_time_to_live>` field. The ``active`` assignment is considered unchanged.

Used in: BucketAction

message RateLimitQuotaUsageReports.BucketQuotaUsage

rlqs.proto:72

The usage report for a bucket. .. note:: Note that the first report sent for a ``BucketId`` indicates to the RLQS server that the RLQS client is subscribing for the future assignments for this ``BucketId``.

Used in: RateLimitQuotaUsageReports