[要約] RFC 8516は、CoAPプロトコルにおける「Too Many Requests」レスポンスコードについて説明しています。このRFCの目的は、CoAPクライアントがサーバーに対して過剰なリクエストを送信した場合に、適切なエラーレスポンスを提供するためのガイドラインを提供することです。

Internet Engineering Task Force (IETF)                        A. Keranen
Request for Comments: 8516                                      Ericsson
Category: Standards Track                                   January 2019
ISSN: 2070-1721
        

"Too Many Requests" Response Code for the Constrained Application Protocol

制約付きアプリケーションプロトコルの「要求が多すぎます」応答コード

Abstract

概要

A Constrained Application Protocol (CoAP) server can experience temporary overload because one or more clients are sending requests to the server at a higher rate than the server is capable or willing to handle. This document defines a new CoAP response code for a server to indicate that a client should reduce the rate of requests.

制約付きアプリケーションプロトコル(CoAP)サーバーは、1つまたは複数のクライアントがサーバーの処理能力または処理能力を超えるレートでサーバーに要求を送信しているため、一時的な過負荷が発生する可能性があります。このドキュメントでは、クライアントがリクエストのレートを下げる必要があることを示すために、サーバーの新しいCoAP応答コードを定義しています。

Status of This Memo

本文書の状態

This is an Internet Standards Track document.

これはInternet Standards Trackドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。インターネット標準の詳細については、RFC 7841のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8516.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、https://www.rfc-editor.org/info/rfc8516で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2019 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

この文書は、BCP 78およびIETF文書に関するIETFトラストの法的規定(https://trustee.ietf.org/license-info)の対象であり、この文書の発行日に有効です。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents

目次

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  CoAP Server Behavior  . . . . . . . . . . . . . . . . . . . .   3
   4.  CoAP Client Behavior  . . . . . . . . . . . . . . . . . . . .   3
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .   4
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   4
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   5
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .   5
     7.2.  Informative References  . . . . . . . . . . . . . . . . .   5
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .   6
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   6
        
1. Introduction
1. はじめに

The Constrained Application Protocol (CoAP) [RFC7252] response codes are used by a CoAP server to indicate the result of an attempt to understand and satisfy a request sent by a client.

制約付きアプリケーションプロトコル(CoAP)[RFC7252]応答コードは、クライアントによって送信された要求を理解して満足するための試行の結果を示すためにCoAPサーバーによって使用されます。

CoAP response codes are similar to the HTTP [RFC7230] status codes, and many codes are shared with similar semantics by both CoAP and HTTP. HTTP has the code "429" registered for "Too Many Requests" [RFC6585]. This document registers a CoAP response code "4.29" for similar purposes and uses the Max-Age option (see Section 5.10.5 of [RFC7252]) to indicate a back-off period after which a client can try the request again.

CoAP応答コードはHTTP [RFC7230]ステータスコードに似ており、多くのコードはCoAPとHTTPの両方で同様のセマンティクスで共有されています。 HTTPには、「Too Many Requests」[RFC6585]に登録されたコード「429」があります。このドキュメントでは、同様の目的でCoAP応答コード「4.29」を登録し、Max-Ageオプション([RFC7252]のセクション5.10.5を参照)を使用して、クライアントがリクエストを再試行できるようになるまでのバックオフ期間を示しています。

While a server may not be able to respond to one kind of request, it may be able to respond to a request of a different kind, even from the same client. Therefore, the back-off period applies only to similar requests. For the purpose of this response code, a request is similar if it has the same method and Request-URI. Also, if a client is sending a sequence of requests that are part of the same series (e.g., a set of measurements to be processed by the server), they can be considered similar even if request URIs are different. Because request similarity is context-dependent, it is up to the application logic to decide how the similarity of the requests should be evaluated.

サーバーは1種類の要求に応答できない場合がありますが、同じクライアントからであっても、別の種類の要求に応答できる場合があります。したがって、バックオフ期間は同様のリクエストにのみ適用されます。この応答コードの目的では、同じメソッドとRequest-URIを持つリクエストは似ています。また、クライアントが同じシリーズの一部である一連のリクエスト(サーバーで処理される一連の測定値など)を送信している場合、リクエストURIが異なっていても、それらは類似していると見なすことができます。リクエストの類似性はコンテキストに依存するため、リクエストの類似性を評価する方法を決定するのはアプリケーションロジックです。

The 4.29 code is similar to the 5.03 "Service Unavailable" [RFC7252] code in that the 5.03 code can also be used by a server to signal an overload situation. The 5.03 code also uses the Max-Age option to indicate the time after which a client can retry. However, the 4.29 code indicates that the too-frequent requests from the requesting client are the reason for the overload.

4.29コードは、5.03 "Service Unavailable" [RFC7252]コードと似ていますが、5.03コードはサーバーが過負荷状態を通知するためにも使用できます。 5.03コードは、Max-Ageオプションを使用して、クライアントが再試行できるまでの時間を示します。ただし、4.29コードは、要求元のクライアントからの要求が多すぎることが過負荷の原因であることを示しています。

2. Terminology
2. 用語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

キーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、「OPTIONALこのドキュメントの「」は、BCP 14 [RFC2119] [RFC8174]で説明されているように解釈されます。

Readers should also be familiar with the terms and concepts discussed in [RFC7252].

読者は、[RFC7252]で説明されている用語と概念にも精通している必要があります。

3. CoAP Server Behavior
3. CoAPサーバーの動作

If a CoAP server is unable to serve a client that is sending CoAP request messages more often than the server is capable or willing to handle, the server SHOULD respond to the request(s) with the response code 4.29, "Too Many Requests". The Max-Age option is used to indicate the number of seconds after which the server assumes it is OK for the client to retry the request.

CoAPサーバーが、CoAP要求メッセージを送信するクライアントに、サーバーが処理できるか、処理できるよりも頻繁にサービスを提供できない場合、サーバーは、応答コード4.29、「Too Many Requests」で要求に応答する必要があります(SHOULD)。 Max-Ageオプションは、クライアントが要求を再試行しても問題がないとサーバーが判断するまでの秒数を示すために使用されます。

An action result payload (see Section 5.5.1 of [RFC7252]) can be sent by the server to give more guidance to the client, e.g., details of the overload situation.

アクション結果ペイロード([RFC7252]のセクション5.5.1を参照)をサーバーから送信して、過負荷状況の詳細など、クライアントにさらにガイダンスを提供できます。

The 4.29 response code is only returned to the client(s) sending requests too frequently; if other clients are sending requests that cannot be served due to server overload, the 5.03 response code is more appropriate.

4.29応答コードは、要求を頻繁に送信しているクライアントにのみ返されます。他のクライアントがサーバーの過負荷のために処理できない要求を送信している場合は、5.03応答コードがより適切です。

If a client repeats a request that was answered with 4.29 before Max-Age time has passed, it is possible that the client sent multiple requests before receiving the first answer or that the client did not recognize the response code. To slow down clients that do not recognize the 4.29 code, the server MAY respond with a more generic error code (e.g., 5.03). The server SHOULD rate-limit 4.29 replies taking into account its usual load-shedding policies. However, any such method that adds per-client state to the server may be counterproductive to reducing the load.

Max-Age時間が経過する前にクライアントが4.29で応答された要求を繰り返す場合、クライアントが最初の応答を受信する前に複数の要求を送信したか、クライアントが応答コードを認識しなかった可能性があります。 4.29コードを認識しないクライアントを遅くするために、サーバーはより一般的なエラーコード(5.03など)で応答してもよい(MAY)。サーバーは、通常の負荷制限ポリシーを考慮して、レート制限4.29で応答する必要があります(SHOULD)。ただし、クライアントごとの状態をサーバーに追加するこのような方法は、負荷を軽減するには逆効果になる場合があります。

4. CoAP Client Behavior
4. CoAPクライアントの動作

If a client receives the 4.29 response code from a CoAP server to a request, it SHOULD NOT send a similar request to the server before the time indicated in the Max-Age option has passed. If the 4.29 response does not contain a Max-Age option, the default value (60 seconds, as defined in Section 5.10.5 of [RFC7252]) is assumed.

クライアントがCoAPサーバーからリクエストへの4.29応答コードを受信した場合、Max-Ageオプションで指定された時間が経過するまで、同様のリクエストをサーバーに送信しないでください。 4.29応答にMax-Ageオプションが含まれていない場合、デフォルト値([RFC7252]のセクション5.10.5で定義されている60秒)が想定されます。

Note that a client may receive a 4.29 response code on a first request to a server. This can happen, for example, if there is a proxy on the path and the server replies based on the load from multiple clients aggregated by the proxy, or if a client has restarted recently and does not remember its recent requests.

クライアントがサーバーへの最初の要求で4.29応答コードを受け取る場合があることに注意してください。これは、たとえば、パスにプロキシがあり、サーバーがプロキシによって集約された複数のクライアントからの負荷に基づいて応答した場合や、クライアントが最近再起動して最近の要求を覚えていない場合に発生する可能性があります。

A client should not rely on a server being able to send the 4.29 response code in an overload situation because an overloaded server may not be able to reply at all to some requests.

過負荷状態のサーバーは一部の要求にまったく応答できない可能性があるため、クライアントは、過負荷状態で4.29応答コードを送信できるサーバーに依存しないでください。

5. Security Considerations
5. セキュリティに関する考慮事項

Security considerations of [RFC7252] apply to this response code also.

[RFC7252]のセキュリティに関する考慮事項は、この応答コードにも適用されます。

Replying to CoAP requests with a response code consumes resources from a server. For a server under attack, it may be more appropriate to simply drop requests without responding at all. However, dropping requests is also likely to cause well-behaving clients to simply retry the requests.

CoAP要求に応答コードで応答すると、サーバーのリソースが消費されます。攻撃を受けているサーバーの場合は、まったく応答せずに単に要求をドロップする方が適切な場合があります。ただし、要求をドロップすると、正常に動作しているクライアントが単に要求を再試行する可能性もあります。

As with any other CoAP reply, a client should trust this response code only to the extent that it trusts the underlying security mechanisms (e.g., DTLS [RFC6347]) for authentication and freshness. If a CoAP reply with the "Too Many Requests" response code is not authenticated and integrity protected, an attacker can attempt to spoof a reply and make the client wait for an extended period of time before trying again.

他のCoAP応答と同様に、クライアントは、認証と鮮度のために基盤となるセキュリティメカニズム(DTLS [RFC6347]など)を信頼する範囲でのみ、この応答コードを信頼する必要があります。 「Too Many Requests」応答コードを含むCoAP応答が認証されておらず、整合性が保護されていない場合、攻撃者は応答を偽装してクライアントを長時間待機させてから、再試行できます。

If the response code is sent without encryption, it may leak information about the server overload situation and client traffic patterns.

応答コードが暗号化されずに送信されると、サーバーの過負荷状態やクライアントのトラフィックパターンに関する情報が漏洩する可能性があります。

6. IANA Considerations
6. IANAに関する考慮事項

IANA has registered the following response code in the "CoAP Response Codes" subregistry within the "Constrained RESTful Environments (CoRE) Parameters" registry:

IANAは、「Constrained RESTful Environments(CoRE)Parameters」レジストリ内の「CoAP Response Codes」サブレジストリに次の応答コードを登録しました。

o Response Code: 4.29

o 応答コード:4.29

o Description: Too Many Requests

o 説明:リクエストが多すぎます

o Reference: RFC 8516

o リファレンス:RFC 8516

IANA has added this document as an additional reference for the Max-Age option in the "CoAP Option Numbers" subregistry.

IANAは、このドキュメントを「CoAPオプション番号」サブレジストリのMax-Ageオプションの追加リファレンスとして追加しました。

7. References
7. 参考文献
7.1. Normative References
7.1. 引用文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、DOI 10.17487 / RFC2119、1997年3月、<https://www.rfc-editor.org/info/ rfc2119>。

[RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained Application Protocol (CoAP)", RFC 7252, DOI 10.17487/RFC7252, June 2014, <https://www.rfc-editor.org/info/rfc7252>.

[RFC7252] Shelby、Z.、Hartke、K。、およびC. Bormann、「The Constrained Application Protocol(CoAP)」、RFC 7252、DOI 10.17487 / RFC7252、2014年6月、<https://www.rfc-editor。 org / info / rfc7252>。

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174] Leiba、B。、「RFC 2119キーワードの大文字と小文字のあいまいさ」、BCP 14、RFC 8174、DOI 10.17487 / RFC8174、2017年5月、<https://www.rfc-editor.org/info/ rfc8174>。

7.2. Informative References
7.2. 参考引用

[CoAP-BROKER] Koster, M., Keranen, A., and J. Jimenez, "Publish-Subscribe Broker for the Constrained Application Protocol (CoAP)", Work in Progress, draft-ietf-core-coap-pubsub-06, January 2019.

[CoAP-BROKER]コスター、M。、ケラネン、A.、J。ヒメネス、「制約付きアプリケーションプロトコル(CoAP)のパブリッシュサブスクライブブローカー」、作業中、draft-ietf-core-coap-pubsub-06 、2019年1月。

[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, January 2012, <https://www.rfc-editor.org/info/rfc6347>.

[RFC6347] Rescorla、E。およびN. Modadugu、「Datagram Transport Layer Security Version 1.2」、RFC 6347、DOI 10.17487 / RFC6347、2012年1月、<https://www.rfc-editor.org/info/rfc6347>。

[RFC6585] Nottingham, M. and R. Fielding, "Additional HTTP Status Codes", RFC 6585, DOI 10.17487/RFC6585, April 2012, <https://www.rfc-editor.org/info/rfc6585>.

[RFC6585]ノッティンガム、M。およびR.フィールディング、「追加のHTTPステータスコード」、RFC 6585、DOI 10.17487 / RFC6585、2012年4月、<https://www.rfc-editor.org/info/rfc6585>。

[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing", RFC 7230, DOI 10.17487/RFC7230, June 2014, <https://www.rfc-editor.org/info/rfc7230>.

[RFC7230]フィールディング、R。、エド。およびJ. Reschke編、「Hypertext Transfer Protocol(HTTP / 1.1):Message Syntax and Routing」、RFC 7230、DOI 10.17487 / RFC7230、2014年6月、<https://www.rfc-editor.org/info/ rfc7230>。

Acknowledgements

謝辞

This response code definition was originally part of the "Publish-Subscribe Broker for CoAP" document [CoAP-BROKER]. The author would like to thank Abhijan Bhattacharyya, Carsten Bormann, Daniel Migault, Gyorgy Rethy, Jana Iyengar, Jim Schaad, Klaus Hartke, Mohit Sethi, and Sandor Katona for their contributions and reviews.

この応答コードの定義は、元々は「CoAPのパブリッシュサブスクライブブローカー」ドキュメント[CoAP-BROKER]の一部でした。著者は、Abhijan Bhattacharyya、Carsten Bormann、Daniel Migault、Gyorgy Rethy、Jana Iyengar、Jim Schaad、Klaus Hartke、Mohit Sethi、Sandor Katonaの貢献とレビューに感謝します。

Author's Address

著者のアドレス

Ari Keranen Ericsson Hirsalantie 11 02420 Jorvas Finland

あり けらねん えりcっそん ひrさぁんちえ 11 02420 じょrゔぁs ふぃんぁんd

   Email: ari.keranen@ericsson.com