| < draft-pardue-quic-http-mcast-07.txt | draft-pardue-quic-http-mcast-08.txt > | |||
|---|---|---|---|---|
| Network Working Group L. Pardue | Network Working Group L. Pardue | |||
| Internet-Draft | Internet-Draft | |||
| Intended status: Informational R. Bradbury | Intended status: Experimental R. Bradbury | |||
| Expires: February 8, 2021 S. Hurst | Expires: August 22, 2021 S. Hurst | |||
| BBC Research & Development | BBC Research & Development | |||
| August 7, 2020 | February 18, 2021 | |||
| Hypertext Transfer Protocol (HTTP) over multicast QUIC | Hypertext Transfer Protocol (HTTP) over multicast QUIC | |||
| draft-pardue-quic-http-mcast-07 | draft-pardue-quic-http-mcast-08 | |||
| Abstract | Abstract | |||
| This document specifies a profile of the QUIC protocol and the HTTP/3 | This document specifies a profile of the QUIC protocol and the HTTP/3 | |||
| mapping that facilitates the transfer of HTTP resources over | mapping that facilitates the transfer of HTTP resources over | |||
| multicast IP using the QUIC transport as its framing and | multicast IP using the QUIC transport as its framing and | |||
| packetisation layer. Compatibility with the QUIC protocol's syntax | packetisation layer. Compatibility with the QUIC protocol's syntax | |||
| and semantics is maintained as far as practical and additional | and semantics is maintained as far as practical and additional | |||
| features are specified where this is not possible. | features are specified where this is not possible. | |||
| skipping to change at page 1, line 37 ¶ | skipping to change at page 1, line 37 ¶ | |||
| 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 February 8, 2021. | This Internet-Draft will expire on August 22, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | |||
| skipping to change at page 2, line 51 ¶ | skipping to change at page 2, line 51 ¶ | |||
| 4.6. Stream Termination . . . . . . . . . . . . . . . . . . . 20 | 4.6. Stream Termination . . . . . . . . . . . . . . . . . . . 20 | |||
| 4.7. Connection Shutdown . . . . . . . . . . . . . . . . . . . 20 | 4.7. Connection Shutdown . . . . . . . . . . . . . . . . . . . 20 | |||
| 4.8. Connection Migration . . . . . . . . . . . . . . . . . . 20 | 4.8. Connection Migration . . . . . . . . . . . . . . . . . . 20 | |||
| 4.9. Explicit Congestion Notification . . . . . . . . . . . . 21 | 4.9. Explicit Congestion Notification . . . . . . . . . . . . 21 | |||
| 4.10. Session Keep-alive . . . . . . . . . . . . . . . . . . . 21 | 4.10. Session Keep-alive . . . . . . . . . . . . . . . . . . . 21 | |||
| 4.11. Loss Detection and Recovery . . . . . . . . . . . . . . . 21 | 4.11. Loss Detection and Recovery . . . . . . . . . . . . . . . 21 | |||
| 4.12. Prohibited QUIC Frames and Packets . . . . . . . . . . . 22 | 4.12. Prohibited QUIC Frames and Packets . . . . . . . . . . . 22 | |||
| 5. HTTP/3 Profile . . . . . . . . . . . . . . . . . . . . . . . 22 | 5. HTTP/3 Profile . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.1. HTTP Connection Settings . . . . . . . . . . . . . . . . 23 | 5.1. HTTP Connection Settings . . . . . . . . . . . . . . . . 23 | |||
| 5.2. Server Push . . . . . . . . . . . . . . . . . . . . . . . 23 | 5.2. Server Push . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 5.3. Metadata Compression . . . . . . . . . . . . . . . . . . 23 | 5.3. Metadata Compression . . . . . . . . . . . . . . . . . . 24 | |||
| 5.4. Session Tear-down . . . . . . . . . . . . . . . . . . . . 24 | 5.4. Session Tear-down . . . . . . . . . . . . . . . . . . . . 24 | |||
| 5.5. HTTP/3 Extension frames . . . . . . . . . . . . . . . . . 24 | 5.5. Effects of Packet Loss . . . . . . . . . . . . . . . . . 24 | |||
| 5.6. Prohibited HTTP/3 Frames . . . . . . . . . . . . . . . . 24 | 5.6. HTTP/3 Extension frames . . . . . . . . . . . . . . . . . 25 | |||
| 6. Application-Layer Security . . . . . . . . . . . . . . . . . 24 | 5.7. Prohibited HTTP/3 Frames . . . . . . . . . . . . . . . . 25 | |||
| 6.1. Content Integrity . . . . . . . . . . . . . . . . . . . . 25 | 6. Application-Layer Security . . . . . . . . . . . . . . . . . 26 | |||
| 6.2. Content Authenticity . . . . . . . . . . . . . . . . . . 25 | 6.1. Content Integrity . . . . . . . . . . . . . . . . . . . . 26 | |||
| 6.3. Content Confidentiality . . . . . . . . . . . . . . . . . 27 | 6.2. Content Authenticity . . . . . . . . . . . . . . . . . . 26 | |||
| 7. Loss Recovery . . . . . . . . . . . . . . . . . . . . . . . . 27 | 6.3. Content Confidentiality . . . . . . . . . . . . . . . . . 28 | |||
| 7.1. Forward Error Correction . . . . . . . . . . . . . . . . 27 | 7. Loss Recovery . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 7.2. Unicast Repair . . . . . . . . . . . . . . . . . . . . . 27 | 7.1. Forward Error Correction . . . . . . . . . . . . . . . . 28 | |||
| 8. Transmission of Partial Content . . . . . . . . . . . . . . . 28 | 7.2. Unicast Repair . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 9. Protocol Identifier . . . . . . . . . . . . . . . . . . . . . 28 | 8. Transmission of Partial Content . . . . . . . . . . . . . . . 29 | |||
| 9.1. Draft Version Identification . . . . . . . . . . . . . . 28 | 9. Protocol Identifier . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 10. Discovery of Multicast QUIC Sessions . . . . . . . . . . . . 29 | 9.1. Draft Version Identification . . . . . . . . . . . . . . 29 | |||
| 10.1. Source-specific Multicast Advertisement . . . . . . . . 30 | 10. Discovery of Multicast QUIC Sessions . . . . . . . . . . . . 30 | |||
| 10.2. Session Parameter Advertisement . . . . . . . . . . . . 30 | 10.1. Source-specific Multicast Advertisement . . . . . . . . 31 | |||
| 10.2.1. Cipher Suite . . . . . . . . . . . . . . . . . . . . 30 | 10.2. Session Parameter Advertisement . . . . . . . . . . . . 31 | |||
| 10.2.2. Session Key . . . . . . . . . . . . . . . . . . . . 31 | 10.2.1. Cipher Suite . . . . . . . . . . . . . . . . . . . . 31 | |||
| 10.2.3. Session Cipher Initialization Vector . . . . . . . . 31 | 10.2.2. Session Key . . . . . . . . . . . . . . . . . . . . 32 | |||
| 10.2.4. Session Identification . . . . . . . . . . . . . . . 31 | 10.2.3. Session Cipher Initialization Vector . . . . . . . . 32 | |||
| 10.2.5. Session Idle Timeout Period . . . . . . . . . . . . 32 | 10.2.4. Session Identification . . . . . . . . . . . . . . . 32 | |||
| 10.2.6. Resource Concurrency . . . . . . . . . . . . . . . . 32 | 10.2.5. Session Idle Timeout Period . . . . . . . . . . . . 33 | |||
| 10.2.7. Session Peak Flow Rate . . . . . . . . . . . . . . . 32 | 10.2.6. Resource Concurrency . . . . . . . . . . . . . . . . 33 | |||
| 10.2.8. Digest Algorithm . . . . . . . . . . . . . . . . . . 33 | 10.2.7. Session Peak Flow Rate . . . . . . . . . . . . . . . 33 | |||
| 10.2.9. Signature Algorithm . . . . . . . . . . . . . . . . 33 | 10.2.8. Digest Algorithm . . . . . . . . . . . . . . . . . . 34 | |||
| 10.2.10. Extensions . . . . . . . . . . . . . . . . . . . . . 34 | 10.2.9. Signature Algorithm . . . . . . . . . . . . . . . . 34 | |||
| 11. Security and Privacy Considerations . . . . . . . . . . . . . 34 | 10.2.10. Extensions . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 11.1. Pervasive Monitoring . . . . . . . . . . . . . . . . . . 34 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 35 | |||
| 11.1.1. Large-scale Data Gathering and Correlation . . . . . 35 | 11.1. Pervasive Monitoring . . . . . . . . . . . . . . . . . . 35 | |||
| 11.1.2. Changing Content . . . . . . . . . . . . . . . . . . 35 | 11.1.1. Large-scale Data Gathering and Correlation . . . . . 36 | |||
| 11.2. Protection of Discovery Mechanism . . . . . . . . . . . 35 | 11.1.2. Changing Content . . . . . . . . . . . . . . . . . . 36 | |||
| 11.3. Spoofing . . . . . . . . . . . . . . . . . . . . . . . . 36 | 11.2. Protection of Discovery Mechanism . . . . . . . . . . . 36 | |||
| 11.3.1. Spoofed Ack Attacks . . . . . . . . . . . . . . . . 36 | 11.3. Spoofing . . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 11.3.2. Sender Spoofing . . . . . . . . . . . . . . . . . . 36 | 11.3.1. Sender Spoofing . . . . . . . . . . . . . . . . . . 37 | |||
| 11.3.3. Receiver Spoofing . . . . . . . . . . . . . . . . . 36 | 11.4. Replay Attacks . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 11.4. Replay Attacks . . . . . . . . . . . . . . . . . . . . . 36 | ||||
| 11.5. Message Deletion . . . . . . . . . . . . . . . . . . . . 37 | 11.5. Message Deletion . . . . . . . . . . . . . . . . . . . . 37 | |||
| 11.6. Denial of Service . . . . . . . . . . . . . . . . . . . 37 | 11.6. Denial of Service . . . . . . . . . . . . . . . . . . . 38 | |||
| 11.6.1. Unprotected Frames and Packets . . . . . . . . . . . 37 | 11.6.1. Unprotected Frames and Packets . . . . . . . . . . . 38 | |||
| 11.6.2. Network Performance Degradation . . . . . . . . . . 37 | 11.6.2. Network Performance Degradation . . . . . . . . . . 38 | |||
| 11.6.3. Unicast Repair Stampeding Herd . . . . . . . . . . . 38 | 11.6.3. Unicast Repair Stampeding Herd . . . . . . . . . . . 38 | |||
| 11.7. Receiver Resource Usage . . . . . . . . . . . . . . . . 38 | 11.7. Receiver Resource Usage . . . . . . . . . . . . . . . . 38 | |||
| 11.8. Unicast Repair Information Leakage . . . . . . . . . . . 38 | 11.8. Unicast Repair Information Leakage . . . . . . . . . . . 39 | |||
| 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 12.1. Registration of Protocol Identification String . . . . . 39 | 12.1. Registration of Protocol Identification String . . . . . 39 | |||
| 12.2. Registration of Alt-Svc parameters . . . . . . . . . . . 39 | 12.2. Registration of Alt-Svc parameters . . . . . . . . . . . 40 | |||
| 12.2.1. Source Address . . . . . . . . . . . . . . . . . . . 39 | 12.2.1. Source Address . . . . . . . . . . . . . . . . . . . 40 | |||
| 12.2.2. Cipher Suite . . . . . . . . . . . . . . . . . . . . 39 | 12.2.2. Cipher Suite . . . . . . . . . . . . . . . . . . . . 40 | |||
| 12.2.3. Key . . . . . . . . . . . . . . . . . . . . . . . . 39 | 12.2.3. Key . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 12.2.4. Initialization Vector . . . . . . . . . . . . . . . 40 | 12.2.4. Initialization Vector . . . . . . . . . . . . . . . 40 | |||
| 12.2.5. Session Identifier . . . . . . . . . . . . . . . . . 40 | 12.2.5. Session Identifier . . . . . . . . . . . . . . . . . 40 | |||
| 12.2.6. Session Idle Timeout . . . . . . . . . . . . . . . . 40 | 12.2.6. Session Idle Timeout . . . . . . . . . . . . . . . . 40 | |||
| 12.2.7. Maximum Concurrent Resources . . . . . . . . . . . . 40 | 12.2.7. Maximum Concurrent Resources . . . . . . . . . . . . 41 | |||
| 12.2.8. Peak Flow Rate . . . . . . . . . . . . . . . . . . . 40 | 12.2.8. Peak Flow Rate . . . . . . . . . . . . . . . . . . . 41 | |||
| 12.2.9. Digest Algorithm . . . . . . . . . . . . . . . . . . 40 | 12.2.9. Digest Algorithm . . . . . . . . . . . . . . . . . . 41 | |||
| 12.2.10. Signature Algorithm . . . . . . . . . . . . . . . . 40 | 12.2.10. Signature Algorithm . . . . . . . . . . . . . . . . 41 | |||
| 12.2.11. Extension . . . . . . . . . . . . . . . . . . . . . 40 | 12.2.11. Extension . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 41 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 41 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 42 | 13.2. Informative References . . . . . . . . . . . . . . . . . 43 | |||
| Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 44 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 45 | |||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 44 | Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 45 | |||
| B.1. Session Advertisement . . . . . . . . . . . . . . . . . . 44 | B.1. Session Advertisement . . . . . . . . . . . . . . . . . . 45 | |||
| B.1.1. Source-specific Multicast QUIC Session . . . . . . . 45 | B.1.1. Source-specific Multicast QUIC Session . . . . . . . 45 | |||
| B.1.2. Source-specific Multicast QUIC Session with Transport | B.1.2. Source-specific Multicast QUIC Session with Transport | |||
| Encryption using a Symmetric Key . . . . . . . . . . 45 | Encryption using a Symmetric Key . . . . . . . . . . 46 | |||
| B.1.3. Source-specific Multicast QUIC Session with Transport | B.1.3. Source-specific Multicast QUIC Session with Transport | |||
| Encryption, Content Integrity and Authenticity . . . 45 | Encryption, Content Integrity and Authenticity . . . 46 | |||
| B.2. Resource Transfer . . . . . . . . . . . . . . . . . . . . 46 | B.2. Resource Transfer . . . . . . . . . . . . . . . . . . . . 47 | |||
| B.2.1. Transfer without Content Integrity or Authenticity . 46 | B.2.1. Transfer without Content Integrity or Authenticity . 47 | |||
| B.2.2. Transfer of Partial Content without Content Integrity | B.2.2. Transfer of Partial Content without Content Integrity | |||
| or Authenticity . . . . . . . . . . . . . . . . . . . 46 | or Authenticity . . . . . . . . . . . . . . . . . . . 47 | |||
| B.2.3. Transfer with Content Integrity and without | B.2.3. Transfer with Content Integrity and without | |||
| Authenticity . . . . . . . . . . . . . . . . . . . . 47 | Authenticity . . . . . . . . . . . . . . . . . . . . 48 | |||
| B.2.4. Partial Transfer with Content Integrity and without | B.2.4. Partial Transfer with Content Integrity and without | |||
| Authenticity . . . . . . . . . . . . . . . . . . . . 48 | Authenticity . . . . . . . . . . . . . . . . . . . . 48 | |||
| B.2.5. Transfer with Content Integrity and Authenticity . . 48 | B.2.5. Transfer with Content Integrity and Authenticity . . 49 | |||
| B.2.6. Partial Transfer with Content Integrity and | B.2.6. Partial Transfer with Content Integrity and | |||
| Authenticity . . . . . . . . . . . . . . . . . . . . 49 | Authenticity . . . . . . . . . . . . . . . . . . . . 50 | |||
| Appendix C. Summary of differences from unicast QUIC and HTTP/3 50 | Appendix C. Summary of differences from unicast QUIC and HTTP/3 51 | |||
| Appendix D. Changelog . . . . . . . . . . . . . . . . . . . . . 61 | Appendix D. Changelog . . . . . . . . . . . . . . . . . . . . . 62 | |||
| D.1. Since draft-pardue-quic-http-mcast-06 . . . . . . . . . . 61 | D.1. Since draft-pardue-quic-http-mcast-07 . . . . . . . . . . 62 | |||
| D.2. Since draft-pardue-quic-http-mcast-05 . . . . . . . . . . 62 | D.2. Since draft-pardue-quic-http-mcast-06 . . . . . . . . . . 63 | |||
| D.3. Since draft-pardue-quic-http-mcast-04 . . . . . . . . . . 63 | D.3. Since draft-pardue-quic-http-mcast-05 . . . . . . . . . . 63 | |||
| D.4. Since draft-pardue-quic-http-mcast-03 . . . . . . . . . . 63 | D.4. Since draft-pardue-quic-http-mcast-04 . . . . . . . . . . 64 | |||
| D.5. Since draft-pardue-quic-http-mcast-02 . . . . . . . . . . 64 | D.5. Since draft-pardue-quic-http-mcast-03 . . . . . . . . . . 64 | |||
| D.6. Since draft-pardue-quic-http-mcast-01 . . . . . . . . . . 64 | D.6. Since draft-pardue-quic-http-mcast-02 . . . . . . . . . . 65 | |||
| D.7. Since draft-pardue-quic-http-mcast-00 . . . . . . . . . . 64 | D.7. Since draft-pardue-quic-http-mcast-01 . . . . . . . . . . 65 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 65 | D.8. Since draft-pardue-quic-http-mcast-00 . . . . . . . . . . 66 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 66 | ||||
| 1. Introduction | 1. Introduction | |||
| The means to bulk transfer resources over multicast IP [RFC1112] | The means to bulk transfer resources over multicast IP [RFC1112] | |||
| using HTTP semantics presents an opportunity to more efficiently | using HTTP semantics presents an opportunity to more efficiently | |||
| deliver services at scale, while leveraging the wealth of existing | deliver services at scale, while leveraging the wealth of existing | |||
| HTTP-related standards, tools and applications. Audio-visual | HTTP-related standards, tools and applications. Audio-visual | |||
| segmented media, in particular, would benefit from this mode of | segmented media, in particular, would benefit from this mode of | |||
| transmission. | transmission. | |||
| skipping to change at page 16, line 11 ¶ | skipping to change at page 16, line 11 ¶ | |||
| to show willingness to receive one or more extension frame types. It | to show willingness to receive one or more extension frame types. It | |||
| is not possible for multicast QUIC receivers to signal this | is not possible for multicast QUIC receivers to signal this | |||
| information to senders. | information to senders. | |||
| This document defines an "extensions" session parameter, which is | This document defines an "extensions" session parameter, which is | |||
| advertised as the Alt-Svc parameter "extensions" Section 10.2.10 and | advertised as the Alt-Svc parameter "extensions" Section 10.2.10 and | |||
| replaces the transport parameter exchange detailed above. The Alt- | replaces the transport parameter exchange detailed above. The Alt- | |||
| Svc "extensions" parameter is optional. Session advertisements MAY | Svc "extensions" parameter is optional. Session advertisements MAY | |||
| contain zero or more instances of this parameter. The parameter | contain zero or more instances of this parameter. The parameter | |||
| lists transport parameter values present in the QUIC Transport | lists transport parameter values present in the QUIC Transport | |||
| Parameter Registry as specified in Section 22.2 of [QUIC-TRANSPORT]. | Parameter Registry as specified in Section 22.3 of [QUIC-TRANSPORT]. | |||
| Only transport parameters which expressly reference Multicast QUIC | Only transport parameters which expressly reference Multicast QUIC | |||
| are considered valid extension parameters. | are considered valid extension parameters. | |||
| *Authors' Note:* The authors welcome suggestions for how to map | *Authors' Note:* The authors welcome suggestions for how to map | |||
| these extension types more cleanly into this document. | these extension types more cleanly into this document. | |||
| Participants SHOULD NOT join sessions advertising extensions that | Participants SHOULD NOT join sessions advertising extensions that | |||
| they do not support, as QUIC frames are not self-describing. | they do not support, as QUIC frames are not self-describing. | |||
| skipping to change at page 18, line 18 ¶ | skipping to change at page 18, line 18 ¶ | |||
| This section is based on our best understanding of draft-ietf- | This section is based on our best understanding of draft-ietf- | |||
| quic-transport-29. The authors will track developments and will | quic-transport-29. The authors will track developments and will | |||
| update this section accordingly. | update this section accordingly. | |||
| The profile of [QUIC-TRANSPORT] is presented in this section. In | The profile of [QUIC-TRANSPORT] is presented in this section. In | |||
| order to preserve compatibility with conventional QUIC, the | order to preserve compatibility with conventional QUIC, the | |||
| specification works with a limited scope of change. However, the | specification works with a limited scope of change. However, the | |||
| nature of unidirectional multicast communications means that some | nature of unidirectional multicast communications means that some | |||
| protocol procedures or behaviours need to be modified. | protocol procedures or behaviours need to be modified. | |||
| Section 5.4 of [QUIC-TRANSPORT] defines a set of required actions | Section 5.3 of [QUIC-TRANSPORT] defines a set of required actions | |||
| that a QUIC server and QUIC client must be able to perform. Due to | that a QUIC server and QUIC client must be able to perform. Due to | |||
| the limitations of this profile, all of the requirements in | the limitations of this profile, all of the requirements in | |||
| Section 5.4 of [QUIC-TRANSPORT] are removed except for: | Section 5.3 of [QUIC-TRANSPORT] are removed except for: | |||
| o Configuring the minimum and total number of permitted streams of | o Configuring the minimum and total number of permitted streams of | |||
| each type is described in Section 3.5. | each type is described in Section 3.5. | |||
| o Multicast QUIC senders may still send "PING" frames to stop a | o Multicast QUIC senders may still send "PING" frames to stop a | |||
| session from expiring as described in Section 4.10. | session from expiring as described in Section 4.10. | |||
| 4.1. Packet Size | 4.1. Packet Size | |||
| The means for determining an appropriate size for QUIC packets are | The means for determining an appropriate size for QUIC packets are | |||
| skipping to change at page 23, line 9 ¶ | skipping to change at page 23, line 9 ¶ | |||
| comply with the requirements of the session parameters, as described | comply with the requirements of the session parameters, as described | |||
| earlier in Section 3. | earlier in Section 3. | |||
| The profile of HTTP/3 specified in this section places additional | The profile of HTTP/3 specified in this section places additional | |||
| constraints on the use of metadata compression (Section 5.3). | constraints on the use of metadata compression (Section 5.3). | |||
| 5.1. HTTP Connection Settings | 5.1. HTTP Connection Settings | |||
| The HTTP/3 "SETTINGS" frame is prohibited by this profile. | The HTTP/3 "SETTINGS" frame is prohibited by this profile. | |||
| Participants MUST NOT make any attempt to send this frame type. | Participants MUST NOT make any attempt to send this frame type. | |||
| Reception of this frame MUST be handled as described in Section 5.6. | Reception of this frame MUST be handled as described in Section 5.7. | |||
| 5.2. Server Push | 5.2. Server Push | |||
| Server push is, by default, disabled for HTTP/3 connections. A | Server push is, by default, disabled for HTTP/3 connections. A | |||
| conventional HTTP/3 client enables and manages server push by | conventional HTTP/3 client enables and manages server push by | |||
| controlling the maximum Push ID ([QUIC-HTTP], Section 7.2.7), | controlling the maximum Push ID ([QUIC-HTTP], Section 7.2.7), | |||
| achieved by sending the HTTP/3 "MAX_PUSH_ID" frame. | achieved by sending the HTTP/3 "MAX_PUSH_ID" frame. | |||
| This profile mandates the use of server push, and specifies no means | This profile mandates the use of server push, and specifies no means | |||
| to disable it. The maximum Push ID for multicast QUIC sessions | to disable it. The maximum Push ID for multicast QUIC sessions | |||
| (initial and always) is 2^62. Values of Push ID SHALL be allocated | (initial and always) is 2^62. Values of Push ID SHALL be allocated | |||
| in accordance with [QUIC-HTTP]. | in accordance with [QUIC-HTTP]. | |||
| Server push concurrency in multicast QUIC is described in | Server push concurrency in multicast QUIC is described in | |||
| Section 3.5. There is no role for the HTTP/3 "MAX_PUSH_ID" frame and | Section 3.5. There is no role for the HTTP/3 "MAX_PUSH_ID" frame and | |||
| it is prohibited. Participants MUST NOT send this frame type. | it is prohibited. Participants MUST NOT send this frame type. | |||
| Reception of this frame type MUST be handled as described in | Reception of this frame type MUST be handled as described in | |||
| Section 5.6. | Section 5.7. | |||
| For this profile, the Stream Type for any new server-initiated | For this profile, the Stream Type for any new server-initiated | |||
| unidirectional stream MUST be Server Push ("0x01"). | unidirectional stream MUST be Server Push ("0x01"). | |||
| The HTTP/3 "CANCEL_PUSH" frame MAY be used by sending participants to | The HTTP/3 "CANCEL_PUSH" frame MAY be used by sending participants to | |||
| abort sending a response for the identified server push. Usage of | abort sending a response for the identified server push. Usage of | |||
| this frame SHALL follow the guidance for servers in [QUIC-HTTP]. | this frame SHALL follow the guidance for servers in [QUIC-HTTP]. | |||
| Receiving participants MUST NOT make any attempt to send HTTP/3 | Receiving participants MUST NOT make any attempt to send HTTP/3 | |||
| "CANCEL_PUSH" frames to the multicast group. | "CANCEL_PUSH" frames to the multicast group. | |||
| Receiving participants SHOULD ignore all frames on server-initiated | ||||
| unidirectional streams for which the packet containing the Push ID | ||||
| has not been received. Receiving participants SHOULD ignore all | ||||
| frames on server-initiated unidirectional streams carrying a Push ID | ||||
| that was not previously promised to the receiver. | ||||
| Conventionally, pushed responses are associated with an explicit | Conventionally, pushed responses are associated with an explicit | |||
| request from a client. This is not possible when using a | request from a client. This is not possible when using a | |||
| unidirectional transport such as multicast IP. This profile reserves | unidirectional transport such as multicast IP. This profile reserves | |||
| the first client-initiated, bidirectional QUIC stream. HTTP/3 | the first client-initiated, bidirectional QUIC stream. HTTP/3 | |||
| "PUSH_PROMISE" frames MUST be sent on this reserved Stream ID. | "PUSH_PROMISE" frames MUST be sent on this reserved Stream ID. | |||
| 5.3. Metadata Compression | 5.3. Metadata Compression | |||
| The compression of HTTP header fields is considered in QPACK | The compression of HTTP header fields is considered in QPACK | |||
| [QUIC-QPACK], which describes two methods for the compression of HTTP | [QUIC-QPACK], which describes two methods for the compression of HTTP | |||
| skipping to change at page 24, line 25 ¶ | skipping to change at page 24, line 32 ¶ | |||
| A multicast QUIC session MAY be explicitly torn down by means of the | A multicast QUIC session MAY be explicitly torn down by means of the | |||
| "Connection: close" HTTP header described in section 6.6 of | "Connection: close" HTTP header described in section 6.6 of | |||
| [RFC7230]. A sender intending to leave the session SHOULD include | [RFC7230]. A sender intending to leave the session SHOULD include | |||
| the "Connection: close" header in its response metadata. A sender | the "Connection: close" header in its response metadata. A sender | |||
| SHOULD transmit all outstanding frames related to remaining request/ | SHOULD transmit all outstanding frames related to remaining request/ | |||
| response exchanges before ending transmission to the multicast group. | response exchanges before ending transmission to the multicast group. | |||
| A receiver SHOULD continue to receive and process frames until all | A receiver SHOULD continue to receive and process frames until all | |||
| outstanding request/response exchanges are complete. | outstanding request/response exchanges are complete. | |||
| The HTTP/3 "GOAWAY" frame is prohibited. Participants MUST NOT send | The HTTP/3 "GOAWAY" frame is prohibited. Participants MUST NOT send | |||
| this and reception MUST be handled as described in Section 5.6. | this and reception MUST be handled as described in Section 5.7. | |||
| 5.5. HTTP/3 Extension frames | 5.5. Effects of Packet Loss | |||
| HTTP/3 extension frames (e.g. "ALTSVC") are prohibited by this | Since multicast QUIC is an inherently unreliable delivery mechanism, | |||
| profile. Participants MUST NOT make any attempt to send extension | portions of HTTP messages sent by the sender may not be received by | |||
| frame types. Reception of these MUST be handled as described in | the receiver. Conventional HTTP/3 frames assume reliable, in-order | |||
| Section 5.6. | delivery by the underlying QUIC stream. HTTP/3 frames do not | |||
| therefore carry any information indicating their position within the | ||||
| stream, because this information is instead carried in the QUIC | ||||
| "STREAM" frame header. | ||||
| 5.6. Prohibited HTTP/3 Frames | In multicast QUIC, packet loss leaves gaps in the flow of a stream, | |||
| and therefore gaps in the HTTP/3 frame(s) that are carried on that | ||||
| stream. | ||||
| 1. Loss of an HTTP/3 "PUSH_PROMISE" frame renders the reception of | ||||
| an entire stream impossible, since the receiver ignores the new | ||||
| push stream that has not been promised as described in | ||||
| Section 5.2. | ||||
| 2. Loss of a QUIC packet comprising all or part of an HTTP/3 | ||||
| "HEADERS" frame will likely prevent the QPACK decoder from | ||||
| successfully parsing the received metadata, leaving the receiver | ||||
| unable to make use of the affected HTTP representation. | ||||
| 3. Loss of a QUIC packet containing an HTTP/3 "DATA" frame header | ||||
| leaves a receiver unsure where to look for the start of the next | ||||
| HTTP/3 frame on the same stream. In the unlikely event that the | ||||
| receiver manages to resynchronise to the start of a subsequent | ||||
| HTTP/3 "DATA" frame, the position of the payload in the HTTP | ||||
| representation data is unknown because it is not explicitly | ||||
| signalled in the "DATA" frame header. The Offset field in the | ||||
| QUIC "STREAM" header describes the offset within the stream, but | ||||
| it is impossible for the receiver to know the size of any "DATA" | ||||
| frame headers that were lost. | ||||
| 4. Loss of QUIC packets that only contain part of an HTTP/3 "DATA" | ||||
| frame Data field (i.e. beyond the frame header) can be recovered | ||||
| using the unicast repair mechanism described in Section 7.2. | ||||
| [H3-DATA-OFFSET] describes the "DATA_WITH_OFFSET" HTTP/3 extension | ||||
| frame type, which can be used to solve the third problem described | ||||
| above. Multicast QUIC sessions that make use of the | ||||
| "DATA_WITH_OFFSET" extension frame MUST advertise the session with | ||||
| the appropriate non-compatible experiment identifier "data-offset" in | ||||
| the ALPN string, as specified in Section 9.1. | ||||
| 5.6. HTTP/3 Extension frames | ||||
| Except where explicitly allowed by this specification (e.g. in | ||||
| Section 5.5 above), HTTP/3 extension frames (e.g. "ALTSVC") are | ||||
| prohibited by this profile. Participants MUST NOT make any attempt | ||||
| to send prohibited extension frame types. Reception of these MUST be | ||||
| handled as described in Section 5.7. | ||||
| 5.7. Prohibited HTTP/3 Frames | ||||
| The following HTTP/3 frames MUST NOT be transmitted by participants: | The following HTTP/3 frames MUST NOT be transmitted by participants: | |||
| "GOAWAY", "MAX_PUSH_ID", "SETTINGS". | "GOAWAY", "MAX_PUSH_ID", "SETTINGS". | |||
| In addition, all HTTP/3 extension frame types MUST NOT be transmitted | In addition, all HTTP/3 extension frame types MUST NOT be transmitted | |||
| by participants. | by participants. | |||
| The following HTTP/3 frames MUST NOT be transmitted by receivers: | The following HTTP/3 frames MUST NOT be transmitted by receivers: | |||
| "CANCEL_PUSH". | "CANCEL_PUSH". | |||
| skipping to change at page 34, line 12 ¶ | skipping to change at page 35, line 12 ¶ | |||
| signature-algorithm=rsa-sha256 | signature-algorithm=rsa-sha256 | |||
| The requirements for endpoint usage of "signature-algorithm" are | The requirements for endpoint usage of "signature-algorithm" are | |||
| described in Section 3.8. | described in Section 3.8. | |||
| 10.2.10. Extensions | 10.2.10. Extensions | |||
| This document specifies the "extensions" parameter for Alt-Svc, which | This document specifies the "extensions" parameter for Alt-Svc, which | |||
| carries a list of extension types potentially in use by a multicast | carries a list of extension types potentially in use by a multicast | |||
| QUIC session. "extensions" MUST only contain values from the QUIC | QUIC session. "extensions" MUST only contain values from the QUIC | |||
| Transport Parameter registry ([QUIC-TRANSPORT], section 22.2) that | Transport Parameter registry ([QUIC-TRANSPORT], section 22.3) that | |||
| have explicit support for multicast QUIC. Each entry in the list | have explicit support for multicast QUIC. Each entry in the list | |||
| consists of a key identifying the transport parameter, and an | consists of a key identifying the transport parameter, and an | |||
| optional value. Both the key and the value are hex-encoded. | optional value. Both the key and the value are hex-encoded. | |||
| Syntax: | Syntax: | |||
| extensions = DQUOTE ext-transport-param *[ "," ext-transport-param ] DQUOTE | extensions = DQUOTE ext-transport-param | |||
| ext-transport-param = ext-key [ "=" ext-value ] | *[ "," ext-transport-param ] DQUOTE | |||
| ext-key = 4*4HEXDIG; Transport Parameter key | ext-transport-param = ext-key [ "=" ext-value ] | |||
| ext-value = *HEXDIG; Optional Transport Parameter value | ext-key = 4*4HEXDIG; Transport Parameter key | |||
| ext-value = *HEXDIG; Optional Transport Parameter value | ||||
| For example, the following specifies two extensions: | For example, the following specifies two extensions: | |||
| extensions="0094,0d0d=f00" | extensions="0094,0d0d=f00" | |||
| The requirements for endpoint usage of "extensions" are described in | The requirements for endpoint usage of "extensions" are described in | |||
| Section 3.6 | Section 3.6 | |||
| 11. Security and Privacy Considerations | 11. Security Considerations | |||
| This document specifies a profile of QUIC and HTTP/3 that changes the | This document specifies a profile of QUIC and HTTP/3 that changes the | |||
| security model. In order to address this, application-level security | security model. In order to address this, application-level security | |||
| methods are described in Section 6. This document does not preclude | methods are described in Section 6. This document does not preclude | |||
| the use of secure multicast approaches that may provide additional | the use of secure multicast approaches that may provide additional | |||
| security assurances required for certain use cases. | security assurances required for certain use cases. | |||
| The use of side-channel or out-of-band technologies (potentially | The use of side-channel or out-of-band technologies (potentially | |||
| bidirectional interactions) to support multicast QUIC sessions are | bidirectional interactions) to support multicast QUIC sessions are | |||
| considered out of this document's scope. Services using such | considered out of this document's scope. Services using such | |||
| skipping to change at page 35, line 43 ¶ | skipping to change at page 36, line 44 ¶ | |||
| Sessions that use a symmetric key for packet protection are subject | Sessions that use a symmetric key for packet protection are subject | |||
| to the possibility of a malicious actor modifying traffic at some | to the possibility of a malicious actor modifying traffic at some | |||
| point in the network between a legitimate sender and one (or more) | point in the network between a legitimate sender and one (or more) | |||
| receivers. Receiver-side validation, as specified in Section 6 of | receivers. Receiver-side validation, as specified in Section 6 of | |||
| the present document, and also in [QUIC-TRANSPORT], allows for the | the present document, and also in [QUIC-TRANSPORT], allows for the | |||
| detection of such modification. Two approaches help mitigate the | detection of such modification. Two approaches help mitigate the | |||
| impact of modification; the first is application-level methods that | impact of modification; the first is application-level methods that | |||
| protect data (Section 6.1) and metadata (Section 6.2); the second is | protect data (Section 6.1) and metadata (Section 6.2); the second is | |||
| reduction of the QUIC packet attack surface by means of removal of | reduction of the QUIC packet attack surface by means of removal of | |||
| many frame types (Section 4.12 and Section 5.6). | many frame types (Section 4.12 and Section 5.7). | |||
| 11.2. Protection of Discovery Mechanism | 11.2. Protection of Discovery Mechanism | |||
| Multicast QUIC session advertisements SHOULD be conveyed over a | Multicast QUIC session advertisements SHOULD be conveyed over a | |||
| secure transport that guarantees authenticity and integrity in order | secure transport that guarantees authenticity and integrity in order | |||
| to mitigate attacks related to a malicious service advertisement, for | to mitigate attacks related to a malicious service advertisement, for | |||
| example a "man in the middle" directing endpoints to a service that | example a "man in the middle" directing endpoints to a service that | |||
| may lead to other attacks or exploitations. | may lead to other attacks or exploitations. | |||
| *Authors' Note:* We invite review comments on mandating the use of | *Authors' Note:* We invite review comments on mandating the use of | |||
| a secure transport for advertising sessions. | a secure transport for advertising sessions. | |||
| Endpoints that make use of multicast QUIC session advertisements | Endpoints that make use of multicast QUIC session advertisements | |||
| SHOULD have reasonable assurance that the alternative service is | SHOULD have reasonable assurance that the alternative service is | |||
| under control of, and valid for, the whole origin, as described in | under control of, and valid for, the whole origin, as described in | |||
| Section 2.1 of [RFC7838]. Section 6.2 discusses measures that may be | Section 2.1 of [RFC7838]. Section 6.2 discusses measures that may be | |||
| used to fulfil this requirement. | used to fulfil this requirement. | |||
| 11.3. Spoofing | 11.3. Spoofing | |||
| 11.3.1. Spoofed Ack Attacks | 11.3.1. Sender Spoofing | |||
| The Spoofed "ACK" attack described in Section 13.1 of | ||||
| [QUIC-TRANSPORT] is out of scope because use of the QUIC "ACK" frame | ||||
| is prohibited (Section 4.11) by the present document. | ||||
| 11.3.2. Sender Spoofing | ||||
| A malicious actor may be able to stage a spoof attack by sending fake | A malicious actor may be able to stage a spoof attack by sending fake | |||
| QUIC packets to a multicast QUIC session. This could affect the | QUIC packets to a multicast QUIC session. This could affect the | |||
| operation or behaviour of receivers. In a multicast scenario, this | operation or behaviour of receivers. In a multicast scenario, this | |||
| form of attack has the potential to scale massively. | form of attack has the potential to scale massively. | |||
| The feasibility of spoofing a multicast sender is governed by the | The feasibility of spoofing a multicast sender is governed by the | |||
| characteristics of the multicast deployment and network | characteristics of the multicast deployment and network | |||
| infrastructure. The use of source-specific multicast [RFC4607] may | infrastructure. The use of source-specific multicast [RFC4607] may | |||
| reduce the feasibility. The use of content authenticity | reduce the feasibility. The use of content authenticity | |||
| (Section 6.2) may mitigate concerns for the application-level | (Section 6.2) may mitigate concerns for the application-level | |||
| messages. However, there remains the possibility for transport-level | messages. However, there remains the possibility for transport-level | |||
| messages to be spoofed. Multicast applications should consider | messages to be spoofed. Multicast applications should consider | |||
| further mitigations to address this concern. | further mitigations to address this concern. | |||
| 11.3.3. Receiver Spoofing | ||||
| Client source address concerns discussed in Section 7.5 of | ||||
| [QUIC-TRANSPORT] are out of scope because the connection | ||||
| establishment is replaced with session establishment in the present | ||||
| document. Further, the impact that spoofed receivers would have on | ||||
| the sender is minimal. The impact of malicious participants on the | ||||
| network is discussed in Section 11.6.2. | ||||
| 11.4. Replay Attacks | 11.4. Replay Attacks | |||
| Conventional QUIC strategies for protecting against replay attacks | Conventional QUIC strategies for protecting against replay attacks | |||
| apply similarly here. | apply similarly here. | |||
| Certain multicast QUIC sessions may use a shared key for transport- | Certain multicast QUIC sessions may use a shared key for transport- | |||
| level encryption, which would allow an attacker to record, decrypt, | level encryption, which would allow an attacker to record, decrypt, | |||
| repackage and replay QUIC packets. Section 6.2 discusses how the | repackage and replay QUIC packets. Section 6.2 discusses how the | |||
| application-level contents may be protected from replay (by signing | application-level contents may be protected from replay (by signing | |||
| the "Date" HTTP header), which provides some mitigation to the | the "Date" HTTP header), which provides some mitigation to the | |||
| skipping to change at page 37, line 18 ¶ | skipping to change at page 38, line 4 ¶ | |||
| application-level contents may be protected from replay (by signing | application-level contents may be protected from replay (by signing | |||
| the "Date" HTTP header), which provides some mitigation to the | the "Date" HTTP header), which provides some mitigation to the | |||
| success rate or effects of replay attacks. | success rate or effects of replay attacks. | |||
| 11.5. Message Deletion | 11.5. Message Deletion | |||
| Since HTTP over multicast QUIC is designed to tolerate unreliable | Since HTTP over multicast QUIC is designed to tolerate unreliable | |||
| delivery, the impacts of message deletion attacks are presumed to be | delivery, the impacts of message deletion attacks are presumed to be | |||
| small. Deletion of packets carrying HTTP headers will cause a | small. Deletion of packets carrying HTTP headers will cause a | |||
| receiver to ignore subsequent packets carrying body data. | receiver to ignore subsequent packets carrying body data. | |||
| Furthermore, the use of multicast QUIC sessions is opportunistic; | Furthermore, the use of multicast QUIC sessions is opportunistic; | |||
| disruption in service (for example, deleting packets and causing a | disruption in service (for example, deleting packets and causing a | |||
| receiver to fail in construction of a content object) is mitigated by | receiver to fail in construction of a content object) is mitigated by | |||
| falling back to a unicast service. Considerations for how this may | falling back to a unicast service. Considerations for how this may | |||
| affect the performance of the unicast service are given in | affect the performance of the unicast service are given in | |||
| Section 11.6.3. | Section 11.6.3. | |||
| 11.6. Denial of Service | 11.6. Denial of Service | |||
| 11.6.1. Unprotected Frames and Packets | 11.6.1. Unprotected Frames and Packets | |||
| The handling of unprotected QUIC packets is discussed in section | The profile described in the present document provides the means for | |||
| 9.1.4 of [QUIC-TLS]. The profile described in the present document | a multicast sender to protect QUIC packets with a shared key, which | |||
| provides the means for a multicast sender to protect QUIC packets | is not a strong protection. The weak protection of QUIC packets | |||
| with a shared key, which is not a strong protection. The weak | could present a denial-of-service risk. To mitigate the impact of | |||
| protection of QUIC packets could present a denial-of-service risk. | handling such QUIC packets, certain frames and packets are prohibited | |||
| To mitigate the impact of handling such QUIC packets, certain frames | as described in (Section 4.12 and Section 5.7). | |||
| and packets are prohibited as described in (Section 4.12 and | ||||
| Section 5.6). | ||||
| The frame types that are allowed by this profile do not present a | The frame types that are allowed by this profile do not present a | |||
| risk of denial of service. Concerns over authenticity and integrity | risk of denial of service. Concerns over authenticity and integrity | |||
| are addressed by the application-layer protection mechanisms | are addressed by the application-layer protection mechanisms | |||
| described in Section 6. | described in Section 6. | |||
| 11.6.2. Network Performance Degradation | 11.6.2. Network Performance Degradation | |||
| The possibility for malfunctioning or malicious participants to | The possibility for malfunctioning or malicious participants to | |||
| degrade the network is a broad issue and considered out of scope for | degrade the network is a broad issue and considered out of scope for | |||
| skipping to change at page 41, line 9 ¶ | skipping to change at page 41, line 39 ¶ | |||
| 12.2.11. Extension | 12.2.11. Extension | |||
| Parameter name: extension | Parameter name: extension | |||
| Specification: This document, Section 10.2.10 | Specification: This document, Section 10.2.10 | |||
| 13. References | 13. References | |||
| 13.1. Normative References | 13.1. Normative References | |||
| [H3-DATA-OFFSET] | ||||
| Hurst, S., "An Offset Extension Frame For HTTP/3 Data", | ||||
| draft-hurst-quic-http-data-offset-frame-00 (work in | ||||
| progress). | ||||
| [I-D.cavage-http-signatures] | [I-D.cavage-http-signatures] | |||
| Cavage, M. and M. Sporny, "Signing HTTP Messages", draft- | Cavage, M. and M. Sporny, "Signing HTTP Messages", draft- | |||
| cavage-http-signatures-12 (work in progress), October | cavage-http-signatures-12 (work in progress), October | |||
| 2019. | 2019. | |||
| [QUIC-HTTP] | [QUIC-HTTP] | |||
| Bishop, M., Ed., "Hypertext Transfer Protocol Version 3 | Bishop, M., Ed., "Hypertext Transfer Protocol Version 3 | |||
| (HTTP/3)", draft-ietf-quic-http-29 (work in progress). | (HTTP/3)", draft-ietf-quic-http-34 (work in progress). | |||
| [QUIC-QPACK] | [QUIC-QPACK] | |||
| Krasic, C., Ed., Bishop, M., Ed., and A. Frindell, Ed., | Krasic, C., Ed., Bishop, M., Ed., and A. Frindell, Ed., | |||
| "QPACK: Header Compression for HTTP over QUIC", draft- | "QPACK: Header Compression for HTTP over QUIC", draft- | |||
| ietf-quic-qpack-16 (work in progress). | ietf-quic-qpack-21 (work in progress). | |||
| [QUIC-TRANSPORT] | [QUIC-TRANSPORT] | |||
| Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
| Multiplexed and Secure Transport", draft-ietf-quic- | Multiplexed and Secure Transport", draft-ietf-quic- | |||
| transport-29 (work in progress). | transport-34 (work in progress). | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | |||
| of Explicit Congestion Notification (ECN) to IP", | of Explicit Congestion Notification (ECN) to IP", | |||
| RFC 3168, DOI 10.17487/RFC3168, September 2001, | RFC 3168, DOI 10.17487/RFC3168, September 2001, | |||
| <https://www.rfc-editor.org/info/rfc3168>. | <https://www.rfc-editor.org/info/rfc3168>. | |||
| skipping to change at page 42, line 41 ¶ | skipping to change at page 43, line 26 ¶ | |||
| April 2016, <https://www.rfc-editor.org/info/rfc7838>. | April 2016, <https://www.rfc-editor.org/info/rfc7838>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| 13.2. Informative References | 13.2. Informative References | |||
| [QUIC-RECOVERY] | [QUIC-RECOVERY] | |||
| Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection | Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection | |||
| and Congestion Control", draft-ietf-quic-recovery-29 (work | and Congestion Control", draft-ietf-quic-recovery-34 (work | |||
| in progress). | in progress). | |||
| [QUIC-TLS] | [QUIC-TLS] | |||
| Thomson, M., Ed. and S. Turner, Ed, Ed., "Using Transport | Thomson, M., Ed. and S. Turner, Ed, Ed., "Using Transport | |||
| Layer Security (TLS) to Secure QUIC", draft-ietf-quic- | Layer Security (TLS) to Secure QUIC", draft-ietf-quic- | |||
| tls-29 (work in progress). | tls-34 (work in progress). | |||
| [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, | [RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, | |||
| RFC 1112, DOI 10.17487/RFC1112, August 1989, | RFC 1112, DOI 10.17487/RFC1112, August 1989, | |||
| <https://www.rfc-editor.org/info/rfc1112>. | <https://www.rfc-editor.org/info/rfc1112>. | |||
| [RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, | [RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, | |||
| DOI 10.17487/RFC1191, November 1990, | DOI 10.17487/RFC1191, November 1990, | |||
| <https://www.rfc-editor.org/info/rfc1191>. | <https://www.rfc-editor.org/info/rfc1191>. | |||
| [RFC2974] Handley, M., Perkins, C., and E. Whelan, "Session | [RFC2974] Handley, M., Perkins, C., and E. Whelan, "Session | |||
| skipping to change at page 61, line 44 ¶ | skipping to change at page 62, line 44 ¶ | |||
| | | 0. | | | | | 0. | | | |||
| +-------------+----------------------------------+------------------+ | +-------------+----------------------------------+------------------+ | |||
| Table 7: HTTP Metadata Compression Layer | Table 7: HTTP Metadata Compression Layer | |||
| Appendix D. Changelog | Appendix D. Changelog | |||
| *RFC Editor's Note:* Please remove this section prior to | *RFC Editor's Note:* Please remove this section prior to | |||
| publication of a final version of this document. | publication of a final version of this document. | |||
| D.1. Since draft-pardue-quic-http-mcast-06 | D.1. Since draft-pardue-quic-http-mcast-07 | |||
| o Update references to QUIC I-Ds. | o Update references to QUIC WG I-Ds. | |||
| o Remove stale references to sections of the QUIC WG I-Ds that don't | ||||
| exist any more. | ||||
| o Add references to the DATA_WITH_OFFSET frame I-D. | ||||
| D.2. Since draft-pardue-quic-http-mcast-06 | ||||
| o Update references to QUIC WG I-Ds. | ||||
| o Clarify that only the first source-address parameter should be | o Clarify that only the first source-address parameter should be | |||
| used if duplicated. | used if duplicated. | |||
| o Fix source-address example to not be a quoted string. | o Fix source-address example to not be a quoted string. | |||
| o Fix bytes in the ALPN identification sequence following change to | o Fix bytes in the ALPN identification sequence following change to | |||
| h3m. | h3m. | |||
| o Update language around QUIC Connection IDs to reflect the core | o Update language around QUIC Connection IDs to reflect the core | |||
| skipping to change at page 62, line 27 ¶ | skipping to change at page 63, line 36 ¶ | |||
| o Update language around QPACK static and dynamic table indexing to | o Update language around QPACK static and dynamic table indexing to | |||
| more closely align with the core spec. | more closely align with the core spec. | |||
| o Update Session Idle Timeout to match core specs, including | o Update Session Idle Timeout to match core specs, including | |||
| removing limitation of 600 seconds and expressing in milliseconds, | removing limitation of 600 seconds and expressing in milliseconds, | |||
| not seconds. | not seconds. | |||
| o Preface Session Termination with a statement clarifying that | o Preface Session Termination with a statement clarifying that | |||
| participants may leave at any time. | participants may leave at any time. | |||
| D.2. Since draft-pardue-quic-http-mcast-05 | D.3. Since draft-pardue-quic-http-mcast-05 | |||
| o Update references to QUIC I-Ds. | o Update references to QUIC WG I-Ds. | |||
| o Sender packet number size is now fixed for the duration of a | o Sender packet number size is now fixed for the duration of a | |||
| session. | session. | |||
| o Change how to handle multiple session IDs: sessions are now only | o Change how to handle multiple session IDs: sessions are now only | |||
| allowed a single ID. | allowed a single ID. | |||
| o Remove incompatible requirements set by [QUIC-TRANSPORT]'s | o Remove incompatible requirements set by [QUIC-TRANSPORT]'s | |||
| "Required Operations". | "Required Operations". | |||
| skipping to change at page 63, line 5 ¶ | skipping to change at page 64, line 14 ¶ | |||
| o Remove HTTP Prioritization references. | o Remove HTTP Prioritization references. | |||
| o Add new "extensions" Alt-Svc parameter. | o Add new "extensions" Alt-Svc parameter. | |||
| o Broaden peak flow rate to QUIC payload to encompass all frame | o Broaden peak flow rate to QUIC payload to encompass all frame | |||
| types. | types. | |||
| o Change ALPN identifier to h3m. | o Change ALPN identifier to h3m. | |||
| D.3. Since draft-pardue-quic-http-mcast-04 | D.4. Since draft-pardue-quic-http-mcast-04 | |||
| o Update references to QUIC I-Ds, remove QUIC-SPIN. (draft-ietf- | o Update references to QUIC WG I-Ds, remove QUIC-SPIN. (draft-ietf- | |||
| quic-transport-20) | quic-transport-20) | |||
| o Update session ID length to match new connection ID length. | o Update session ID length to match new connection ID length. | |||
| (draft-ietf-quic-transport-22) | (draft-ietf-quic-transport-22) | |||
| o Clarify the mapping for the new "active_connection_id_limit" | o Clarify the mapping for the new "active_connection_id_limit" | |||
| session parameter. (draft-ietf-quic-transport-21) | session parameter. (draft-ietf-quic-transport-21) | |||
| o Update text to conform with latest version negotiation text from | o Update text to conform with latest version negotiation text from | |||
| [QUIC-TRANSPORT]. | [QUIC-TRANSPORT]. | |||
| skipping to change at page 63, line 37 ¶ | skipping to change at page 64, line 46 ¶ | |||
| o Clarify difference between connection and session migration. | o Clarify difference between connection and session migration. | |||
| o Move GOAWAY frame to HTTP/3 profile. | o Move GOAWAY frame to HTTP/3 profile. | |||
| o Renamed Session Shutdown to Connection Shutdown to mirror concept | o Renamed Session Shutdown to Connection Shutdown to mirror concept | |||
| in [QUIC-TRANSPORT]. | in [QUIC-TRANSPORT]. | |||
| o Clarify the layer of each frame type when referred to. | o Clarify the layer of each frame type when referred to. | |||
| D.4. Since draft-pardue-quic-http-mcast-03 | D.5. Since draft-pardue-quic-http-mcast-03 | |||
| o Update references to QUIC I-Ds. | o Update references to QUIC WG I-Ds. | |||
| o Change crypto handshake text now that it's no longer done on | o Change crypto handshake text now that it's no longer done on | |||
| Stream ID 0. | Stream ID 0. | |||
| o Update to reference Source and Destination Connection IDs. | o Update to reference Source and Destination Connection IDs. | |||
| o Prohibit the use of connection coalescing, migration and ECN. | o Prohibit the use of connection coalescing, migration and ECN. | |||
| o Update allowed and disallowed packets and frames to match the core | o Update allowed and disallowed packets and frames to match the core | |||
| specs. | specs. | |||
| skipping to change at page 64, line 20 ¶ | skipping to change at page 65, line 30 ¶ | |||
| o Clarify packet number space (only use application data space, not | o Clarify packet number space (only use application data space, not | |||
| initial or handshake). | initial or handshake). | |||
| o Add statement on QUIC latency spin bit. | o Add statement on QUIC latency spin bit. | |||
| o Removed sentence stating that multiple Connection IDs cannot be | o Removed sentence stating that multiple Connection IDs cannot be | |||
| used concurrently in a unicast QUIC session, in accordance with | used concurrently in a unicast QUIC session, in accordance with | |||
| [QUIC-TRANSPORT] section 5.1.2. | [QUIC-TRANSPORT] section 5.1.2. | |||
| D.5. Since draft-pardue-quic-http-mcast-02 | D.6. Since draft-pardue-quic-http-mcast-02 | |||
| o No changes. | o No changes. | |||
| D.6. Since draft-pardue-quic-http-mcast-01 | D.7. Since draft-pardue-quic-http-mcast-01 | |||
| o Explicit guidance on maximum stream ID value permitted. | o Explicit guidance on maximum stream ID value permitted. | |||
| o Updated guidance on PING (and PONG) frame. | o Updated guidance on PING (and PONG) frame. | |||
| o Added a comparison table to appendix. | o Added a comparison table to appendix. | |||
| o Remove invalid use of trailing headers. | o Remove invalid use of trailing headers. | |||
| o Use the new HTTP/QUIC DATA frame. | o Use the new HTTP/QUIC DATA frame. | |||
| skipping to change at page 64, line 48 ¶ | skipping to change at page 66, line 10 ¶ | |||
| o Redefine server push to reflect core document changes. | o Redefine server push to reflect core document changes. | |||
| o Remove default idle time out value. | o Remove default idle time out value. | |||
| o Clarify session parameter requirements (session-idle-timeout | o Clarify session parameter requirements (session-idle-timeout | |||
| became mandatory). | became mandatory). | |||
| o Update frame notation convention. | o Update frame notation convention. | |||
| D.7. Since draft-pardue-quic-http-mcast-00 | D.8. Since draft-pardue-quic-http-mcast-00 | |||
| o Update references to QUIC I-Ds. | o Update references to QUIC WG I-Ds. | |||
| o Relax session leaving requirements language. | o Relax session leaving requirements language. | |||
| o Clarify handling of omitted session parameter advertisements. | o Clarify handling of omitted session parameter advertisements. | |||
| o Rename "Idle" state to "Quiescent". | o Rename "Idle" state to "Quiescent". | |||
| o Add digest algorithm session parameter. | o Add digest algorithm session parameter. | |||
| o Add signature algorithm session parameter. | o Add signature algorithm session parameter. | |||
| End of changes. 54 change blocks. | ||||
| 137 lines changed or deleted | 189 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/ | ||||