draft-ietf-httpapi-ratelimit-headers-08.unpg.txt   draft-ietf-httpapi-ratelimit-headers-latest.txt 
HTTPAPI Working Group R. Polli HTTPAPI Working Group R. Polli
Internet-Draft Team Digitale, Italian Government Internet-Draft Team Digitale, Italian Government
Intended status: Standards Track A. Martinez Intended status: Standards Track A. Martinez
Expires: April 10, 2025 Red Hat Expires: April 27, 2025 Red Hat
D. Miller D. Miller
Microsoft Microsoft
October 7, 2024 October 24, 2024
RateLimit header fields for HTTP RateLimit header fields for HTTP
draft-ietf-httpapi-ratelimit-headers-08 draft-ietf-httpapi-ratelimit-headers-latest
Abstract Abstract
This document defines the RateLimit-Policy and RateLimit HTTP header This document defines the RateLimit-Policy and RateLimit HTTP header
fields for servers to advertise their quota policies and the current fields for servers to advertise their quota policies and the current
service limits, thereby allowing clients to avoid being throttled. service limits, thereby allowing clients to avoid being throttled.
About This Document About This Document
This note is to be removed before publishing as an RFC. This note is to be removed before publishing as an RFC.
skipping to change at line 52 skipping to change at page 2, line 7
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 10, 2025. This Internet-Draft will expire on April 27, 2025.
Copyright Notice Copyright Notice
Copyright (c) 2024 IETF Trust and the persons identified as the Copyright (c) 2024 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Goals 1.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Notational Conventions 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 5
2. Terminology 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. RateLimit-Policy Field 3. RateLimit-Policy Field . . . . . . . . . . . . . . . . . . . 6
3.1. Quota Policy Item 3.1. Quota Policy Item . . . . . . . . . . . . . . . . . . . . 6
3.1.1. Quota Parameter 3.1.1. Quota Parameter . . . . . . . . . . . . . . . . . . . 6
3.1.2. Quota Unit Parameter 3.1.2. Quota Unit Parameter . . . . . . . . . . . . . . . . 6
3.1.3. Window Parameter 3.1.3. Window Parameter . . . . . . . . . . . . . . . . . . 7
3.1.4. Partition Key Parameter 3.1.4. Partition Key Parameter . . . . . . . . . . . . . . . 7
3.2. RateLimit Policy Field Examples 3.2. RateLimit Policy Field Examples . . . . . . . . . . . . . 7
4. RateLimit Field 4. RateLimit Field . . . . . . . . . . . . . . . . . . . . . . . 8
4.1. Service Limit Item 4.1. Service Limit Item . . . . . . . . . . . . . . . . . . . 8
4.1.1. Remaining Parameter 4.1.1. Remaining Parameter . . . . . . . . . . . . . . . . . 8
4.1.2. Reset Parameter 4.1.2. Reset Parameter . . . . . . . . . . . . . . . . . . . 9
4.1.3. Partition Key Parameter 4.1.3. Partition Key Parameter . . . . . . . . . . . . . . . 9
4.2. RateLimit Field Examples 4.2. RateLimit Field Examples . . . . . . . . . . . . . . . . 9
5. Server Behavior 5. Server Behavior . . . . . . . . . . . . . . . . . . . . . . . 10
5.1. Generating Partition Keys 5.1. Generating Partition Keys . . . . . . . . . . . . . . . . 10
5.2. Performance Considerations 5.2. Performance Considerations . . . . . . . . . . . . . . . 11
6. Client Behavior 6. Client Behavior . . . . . . . . . . . . . . . . . . . . . . . 11
6.1. Consuming Partition Keys 6.1. Consuming Partition Keys . . . . . . . . . . . . . . . . 12
6.2. Intermediaries 6.2. Intermediaries . . . . . . . . . . . . . . . . . . . . . 12
6.3. Caching 6.3. Caching . . . . . . . . . . . . . . . . . . . . . . . . . 13
7. Security Considerations 7. Security Considerations . . . . . . . . . . . . . . . . . . . 13
7.1. Throttling does not prevent clients from issuing requests 7.1. Throttling does not prevent clients from issuing requests 13
7.2. Information disclosure 7.2. Information disclosure . . . . . . . . . . . . . . . . . 13
7.3. Remaining quota units are not granted requests 7.3. Remaining quota units are not granted requests . . . . . 14
7.4. Reliability of the reset parameter 7.4. Reliability of the reset parameter . . . . . . . . . . . 14
7.5. Resource exhaustion 7.5. Resource exhaustion . . . . . . . . . . . . . . . . . . . 14
7.5.1. Denial of Service 7.5.1. Denial of Service . . . . . . . . . . . . . . . . . . 15
8. Privacy Considerations 8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 16
9. IANA Considerations 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16
9.1. RateLimit quota unit registry 9.1. RateLimit quota unit registry . . . . . . . . . . . . . . 16
9.1.1. Registration Template 9.1.1. Registration Template . . . . . . . . . . . . . . . . 17
10. References 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 17
10.1. Normative References 10.1. Normative References . . . . . . . . . . . . . . . . . . 17
10.2. Informative References 10.2. Informative References . . . . . . . . . . . . . . . . . 18
Appendix A. Rate-limiting and quotas Appendix A. Rate-limiting and quotas . . . . . . . . . . . . . . 18
A.1. Interoperability issues A.1. Interoperability issues . . . . . . . . . . . . . . . . . 19
Appendix B. Examples Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 20
B.1. Responses without defining policies B.1. Responses without defining policies . . . . . . . . . . . 20
B.1.1. Throttling information in responses B.1.1. Throttling information in responses . . . . . . . . . 20
B.1.2. Multiple policies in response B.1.2. Multiple policies in response . . . . . . . . . . . . 21
B.1.3. Use for limiting concurrency B.1.3. Use for limiting concurrency . . . . . . . . . . . . 22
B.1.4. Use in throttled responses B.1.4. Use in throttled responses . . . . . . . . . . . . . 23
B.2. Responses with defined policies B.2. Responses with defined policies . . . . . . . . . . . . . 23
B.2.1. Throttling window specified via parameter B.2.1. Throttling window specified via parameter . . . . . . 23
B.2.2. Dynamic limits with parameterized windows B.2.2. Dynamic limits with parameterized windows . . . . . . 24
B.2.3. Dynamic limits for pushing back and slowing down B.2.3. Dynamic limits for pushing back and slowing down . . 24
B.3. Dynamic limits for pushing back with Retry-After and slow B.3. Dynamic limits for pushing back with Retry-After and slow
down down . . . . . . . . . . . . . . . . . . . . . . . . . . 25
B.3.1. Missing Remaining information B.3.1. Missing Remaining information . . . . . . . . . . . . 26
B.3.2. Use with multiple windows B.3.2. Use with multiple windows . . . . . . . . . . . . . . 27
FAQ FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
RateLimit header fields currently used on the web RateLimit header fields currently used on the web . . . . . . . . 30
Acknowledgements Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 31
Changes Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
F.1. Since draft-ietf-httpapi-ratelimit-headers-07 F.1. Since draft-ietf-httpapi-ratelimit-headers-07 . . . . . . 32
F.2. Since draft-ietf-httpapi-ratelimit-headers-03 F.2. Since draft-ietf-httpapi-ratelimit-headers-03 . . . . . . 32
F.3. Since draft-ietf-httpapi-ratelimit-headers-02 F.3. Since draft-ietf-httpapi-ratelimit-headers-02 . . . . . . 32
F.4. Since draft-ietf-httpapi-ratelimit-headers-01 F.4. Since draft-ietf-httpapi-ratelimit-headers-01 . . . . . . 32
F.5. Since draft-ietf-httpapi-ratelimit-headers-00 F.5. Since draft-ietf-httpapi-ratelimit-headers-00 . . . . . . 32
Authors' Addresses Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33
1. Introduction 1. Introduction
Rate limiting of HTTP clients has become a widespread practice, Rate limiting of HTTP clients has become a widespread practice,
especially for HTTP APIs. Typically, servers who do so limit the especially for HTTP APIs. Typically, servers who do so limit the
number of acceptable requests in a given time window (e.g. 10 number of acceptable requests in a given time window (e.g. 10
requests per second). See Appendix A for further information on the requests per second). See Appendix A for further information on the
current usage of rate limiting in HTTP. current usage of rate limiting in HTTP.
Currently, there is no standard way for servers to communicate quotas Currently, there is no standard way for servers to communicate quotas
 End of changes. 6 change blocks. 
67 lines changed or deleted 67 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/