| rfc9443xml2.original.xml | rfc9443.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| <!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2119.xml"> | ||||
| <!ENTITY RFC3550 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.3550.xml"> | ||||
| <!ENTITY RFC3711 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.3711.xml"> | ||||
| <!ENTITY RFC5764 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5764.xml"> | ||||
| <!ENTITY RFC7983 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7983.xml"> | ||||
| <!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8174.xml"> | ||||
| <!ENTITY RFC8489 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8489.xml"> | ||||
| <!ENTITY RFC8656 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8656.xml"> | ||||
| <!ENTITY RFC9000 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.9000.xml"> | ||||
| <!ENTITY RFC9001 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.9001.xml"> | ||||
| <!ENTITY RFC9147 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.9147.xml"> | ||||
| <!ENTITY RFC9287 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.9287.xml"> | ||||
| <!ENTITY I-D.ietf-avtcore-rtp-over-quic SYSTEM "https://xml2rfc.ietf.org/public/ | ||||
| rfc/bibxml3/reference.I-D.ietf-avtcore-rtp-over-quic.xml"> | ||||
| <!ENTITY I-D.ietf-quic-v2 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/re | ||||
| ference.I-D.ietf-quic-v2.xml"> | ||||
| <!ENTITY RFC6189 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6189.xml"> | ||||
| ]> | ||||
| <rfc submissionType="IETF" docName="draft-ietf-avtcore-rfc7983bis-09" category=" | ||||
| std" updates="7983, 5764" ipr="trust200902"> | ||||
| <!-- Generated by id2xml 1.5.0 on 2023-04-04T22:59:18Z --> | ||||
| <?rfc strict="yes"?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc text-list-symbols="o*+-"?> | ||||
| <?rfc toc="yes"?> | ||||
| <front> | ||||
| <title>Multiplexing Scheme Updates for QUIC</title> | ||||
| <author initials="B." surname="Aboba" fullname="Bernard Aboba"> | ||||
| <organization>Microsoft Corporation</organization> | ||||
| <address><postal><street>One Microsoft Way</street> | ||||
| <city>Redmond</city> | ||||
| <region>WA</region> | ||||
| <code>98052</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>bernard.aboba@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="G." surname="Salgueiro" fullname="Gonzalo Salgueiro"> | <!DOCTYPE rfc [ | |||
| <organization>Cisco Systems</organization> | <!ENTITY nbsp " "> | |||
| <address><postal><street>7200-12 Kit Creek Road</street> | <!ENTITY zwsp "​"> | |||
| <city>Research Triangle Park</city> | <!ENTITY nbhy "‑"> | |||
| <region>NC</region> | <!ENTITY wj "⁠"> | |||
| <code>27709</code> | ]> | |||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>gsalguei@cisco.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="C." surname="Perkins" fullname="Colin Perkins"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
| <organization abbrev="University of Glasgow">School of Computing Science< | std" consensus="true" docName="draft-ietf-avtcore-rfc7983bis-09" number="9443" u | |||
| /organization> | pdates="5764, 7983" ipr="trust200902" obsoletes="" xml:lang="en" symRefs="true" | |||
| <address><postal><street>University of Glasgow</street> | sortRefs="true" tocInclude="true" version="3"> | |||
| <city>Glasgow</city> | ||||
| <code>G12 8QQ</code> | ||||
| <country>United Kingdom</country> | ||||
| </postal> | ||||
| <email>csp@csperkins.org</email> | ||||
| </address> | ||||
| </author> | ||||
| <date year="2023" month="April"/> | ||||
| <area>art</area> | ||||
| <workgroup>avtcore</workgroup> | ||||
| <!-- [rfced] Please insert any keywords (beyond those that appear in the title) | <!-- xml2rfc v2v3 conversion 3.17.0 --> | |||
| for use on https://www.rfc-editor.org/search. --> | <!-- Generated by id2xml 1.5.0 on 2023-04-04T22:59:18Z --> | |||
| <front> | ||||
| <title>Multiplexing Scheme Updates for QUIC</title> | ||||
| <seriesInfo name="RFC" value="9443"/> | ||||
| <author initials="B." surname="Aboba" fullname="Bernard Aboba"> | ||||
| <organization>Microsoft Corporation</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>One Microsoft Way</street> | ||||
| <city>Redmond</city> | ||||
| <region>WA</region> | ||||
| <code>98052</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>bernard.aboba@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="G." surname="Salgueiro" fullname="Gonzalo Salgueiro"> | ||||
| <organization>Cisco Systems</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>7200-12 Kit Creek Road</street> | ||||
| <city>Research Triangle Park</city> | ||||
| <region>NC</region> | ||||
| <code>27709</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>gsalguei@cisco.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="C." surname="Perkins" fullname="Colin Perkins"> | ||||
| <organization abbrev="University of Glasgow">School of Computing Science</ | ||||
| organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>University of Glasgow</street> | ||||
| <city>Glasgow</city> | ||||
| <code>G12 8QQ</code> | ||||
| <country>United Kingdom</country> | ||||
| </postal> | ||||
| <email>csp@csperkins.org</email> | ||||
| </address> | ||||
| </author> | ||||
| <date year="2023" month="July"/> | ||||
| <area>art</area> | ||||
| <workgroup>avtcore</workgroup> | ||||
| <keyword>example</keyword> | <keyword>RTP</keyword> | |||
| <keyword>ZRTP</keyword> | ||||
| <keyword>STUN</keyword> | ||||
| <keyword>TURN</keyword> | ||||
| <keyword>DTLS</keyword> | ||||
| <abstract><t> | <abstract> | |||
| <t> | ||||
| RFC 7983 defines a scheme for a Real-time Transport Protocol (RTP) | RFC 7983 defines a scheme for a Real-time Transport Protocol (RTP) | |||
| receiver to demultiplex Datagram Transport Layer Security (DTLS), | receiver to demultiplex Datagram Transport Layer Security (DTLS), | |||
| Session Traversal Utilities for NAT (STUN), Secure Real-time | Session Traversal Utilities for NAT (STUN), Secure Real-time | |||
| Transport Protocol (SRTP) / Secure Real-time Transport Control | Transport Protocol (SRTP) / Secure Real-time Transport Control | |||
| Protocol (SRTCP), ZRTP and Traversal Using Relays around NAT (TURN) | Protocol (SRTCP), ZRTP, and Traversal Using Relays around NAT (TURN) | |||
| Channel packets arriving on a single port. This document updates RFC | channel packets arriving on a single port. This document updates RFC | |||
| 7983 and RFC 5764 to also allow QUIC packets to be multiplexed on a | 7983 and RFC 5764 to also allow QUIC packets to be multiplexed on a | |||
| single receiving socket.</t> | single receiving socket.</t> | |||
| </abstract> | ||||
| </abstract> | </front> | |||
| </front> | <middle> | |||
| <section anchor="sect-1" numbered="true" toc="default"> | ||||
| <middle> | <name>Introduction</name> | |||
| <section title="Introduction" anchor="sect-1"><t> | <t> | |||
| "Multiplexing Scheme Updates for Secure Real-time Transport Protocol (SRTP) E xtension for Datagram Transport Layer Security (DTLS)" | "Multiplexing Scheme Updates for Secure Real-time Transport Protocol (SRTP) E xtension for Datagram Transport Layer Security (DTLS)" | |||
| <xref target="RFC7983"/> defines a scheme for a Real-time Transport Protocol | <xref target="RFC7983" format="default"/> defines a scheme for a Real-time Tr | |||
| (RTP) | ansport Protocol (RTP) | |||
| <xref target="RFC3550"/> receiver to demultiplex DTLS <xref target="RFC9147"/ | <xref target="RFC3550" format="default"/> receiver to demultiplex DTLS <xref | |||
| >, Session Traversal | target="RFC9147" format="default"/>, Session Traversal | |||
| Utilities for NAT (STUN) <xref target="RFC8489"/>, Secure Real-time Transport | Utilities for NAT (STUN) <xref target="RFC8489" format="default"/>, Secure Re | |||
| al-time Transport | ||||
| Protocol (SRTP) / Secure Real-time Transport Control Protocol (SRTCP) | Protocol (SRTP) / Secure Real-time Transport Control Protocol (SRTCP) | |||
| <xref target="RFC3711"/>, ZRTP <xref target="RFC6189"/> and Traversal Using R | <xref target="RFC3711" format="default"/>, ZRTP <xref target="RFC6189" format | |||
| elays around NAT | ="default"/>, and Traversal Using Relays around NAT | |||
| (TURN) Channel packets arriving on a single port. This document | (TURN) channel packets arriving on a single port. This document | |||
| updates <xref target="RFC7983"/> and "Datagram Transport Layer Security (DTLS | updates <xref target="RFC7983" format="default"/> and "Datagram Transport Lay | |||
| ) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP) | er Security (DTLS) Extension to Establish Keys for the Secure Real-time Transpor | |||
| " <xref target="RFC5764"/> to also allow QUIC <xref target="RFC9000"/> to be | t Protocol (SRTP)" <xref target="RFC5764" format="default"/> to also allow QUIC | |||
| <xref target="RFC9000" format="default"/> to be | ||||
| multiplexed on the same port.</t> | multiplexed on the same port.</t> | |||
| <t> | <t> | |||
| The multiplexing scheme described in this document supports multiple | The multiplexing scheme described in this document supports multiple | |||
| use cases. Peer-to-peer QUIC in WebRTC scenarios, described in | use cases. In the WebRTC scenarios described in <xref target="P2P-QUIC" forma | |||
| <xref target="P2P-QUIC"/> <xref target="P2P-QUIC-TRIAL"/>, transports audio a | t="default"/> and <xref target="P2P-QUIC-TRIAL" format="default"/>, SRTP transpo | |||
| nd video over SRTP, | rts audio and video while peer-to-peer QUIC is used for data exchange. | |||
| alongside QUIC, used for data exchange. For this use case, SRTP | For this use case, SRTP | |||
| <xref target="RFC3711"/> is keyed using DTLS-SRTP <xref target="RFC5764"/> an | <xref target="RFC3711" format="default"/> is keyed using DTLS-SRTP <xref targ | |||
| d therefore SRTP/SRTCP | et="RFC5764" format="default"/>; therefore, SRTP/SRTCP | |||
| <xref target="RFC3550"/>, STUN, TURN, DTLS and QUIC need to be multiplexed on | <xref target="RFC3550" format="default"/>, STUN, TURN, DTLS, and QUIC need to | |||
| the | be multiplexed on the | |||
| same port. Were SRTP to be keyed using QUIC-SRTP (not yet | same port. Were SRTP to be keyed using QUIC-SRTP (not yet | |||
| specified), SRTP/SRTCP, STUN, TURN and QUIC would need to be | specified), SRTP/SRTCP, STUN, TURN, and QUIC would need to be | |||
| multiplexed on the same port. Where QUIC is used for peer-to-peer | multiplexed on the same port. Where QUIC is used for peer-to-peer | |||
| transport of data as well as RTP/RTCP <xref target="I-D.ietf-avtcore-rtp-over | transport of data as well as RTP/RTCP <xref target="I-D.ietf-avtcore-rtp-over | |||
| -quic"/> | -quic" format="default"/>, | |||
| STUN, TURN and QUIC need to be multiplexed on the same port.</t> | STUN, TURN, and QUIC need to be multiplexed on the same port.</t> | |||
| <t> | ||||
| <t> | ||||
| While the scheme described in this document is compatible with QUIC | While the scheme described in this document is compatible with QUIC | |||
| version 2 <xref target="I-D.ietf-quic-v2"/>, it is not compatible with QUIC b | version 2 <xref target="RFC9369" format="default"/>, it is not compatible wit | |||
| it | h QUIC bit | |||
| greasing <xref target="RFC9287"/>. As a result, endpoints that wish to use | greasing <xref target="RFC9287" format="default"/>. As a result, endpoints t | |||
| multiplexing on their socket MUST NOT send the grease_quic_bit | hat wish to use | |||
| multiplexing on their socket <bcp14>MUST NOT</bcp14> send the grease_quic_bit | ||||
| transport parameter.</t> | transport parameter.</t> | |||
| <section anchor="sect-1.1" numbered="true" toc="default"> | ||||
| <section title="Terminology" anchor="sect-1.1"><t> | <name>Terminology</name> | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t> | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
| 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, the | ", | |||
| y appear in all | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| capitals, as shown here.</t> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| </section> | be | |||
| interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | ||||
| </section> | target="RFC8174"/> when, and only when, they appear in all capitals, as | |||
| shown here. | ||||
| <section title="Multiplexing of TURN Channels" anchor="sect-2"><t> | </t> | |||
| </section> | ||||
| </section> | ||||
| <section anchor="sect-2" numbered="true" toc="default"> | ||||
| <name>Multiplexing of TURN Channels</name> | ||||
| <t> | ||||
| TURN channels are an optimization where data packets are exchanged | TURN channels are an optimization where data packets are exchanged | |||
| with a 4-byte prefix instead of the standard 36-byte STUN overhead | with a 4-byte prefix instead of the standard 36-byte STUN overhead | |||
| (see Section 3.5 of <xref target="RFC8656"/>). <xref target="RFC7983"/> allo cates the values from | (see <xref target="RFC8656" sectionFormat="of" section="3.5"/>). <xref targe t="RFC7983" format="default"/> allocates the values from | |||
| 64 to 79 in order to allow TURN channels to be demultiplexed when the | 64 to 79 in order to allow TURN channels to be demultiplexed when the | |||
| TURN Client does the channel binding request in combination with the | TURN client does the channel binding request in combination with the | |||
| demultiplexing scheme described in <xref target="RFC7983"/>.</t> | demultiplexing scheme described in <xref target="RFC7983" format="default"/>. | |||
| </t> | ||||
| <t> | <t> | |||
| In the absence of QUIC bit greasing, the first octet of a QUIC packet | In the absence of QUIC bit greasing, the first octet of a QUIC packet | |||
| (e.g. a short header packet in QUIC v1 or v2) may fall in the range | (e.g. a short header packet in QUIC v1 or v2) may fall in the range | |||
| 64 to 127, thereby overlapping with the allocated range for TURN | 64 to 127, thereby overlapping with the allocated range for TURN | |||
| channels of 64 to 79. However, in practice this overlap does not | channels of 64 to 79. However, in practice this overlap does not | |||
| represent a problem. TURN channel packets will only be received from | represent a problem. TURN channel packets will only be received from | |||
| a TURN server to which TURN allocation and channel-binding requests | a TURN server to which TURN allocation and channel-binding requests | |||
| have been sent. Therefore, a TURN client receiving packets from the | have been sent. Therefore, a TURN client receiving packets from the | |||
| source IP address and port of a TURN server only needs to | source IP address and port of a TURN server only needs to | |||
| disambiguate STUN (i.e. regular TURN) packets from TURN channel | disambiguate STUN (i.e., regular TURN) packets from TURN channel | |||
| packets; (S)RTP, (S)RTCP, ZRTP, DTLS or QUIC packets will not be sent | packets; (S)RTP, (S)RTCP, ZRTP, DTLS, or QUIC packets will not be sent | |||
| from a source IP address and port that had previously responded to | from a source IP address and port that had previously responded to | |||
| TURN allocation or channel-binding requests.</t> | TURN allocation or channel-binding requests.</t> | |||
| <t> | ||||
| <t> | As a result, if the source IP address and port of a packet do not | |||
| As a result, if the source IP address and port of a packet does not | ||||
| match that of a responding TURN server, a packet with a first octet | match that of a responding TURN server, a packet with a first octet | |||
| of 64 to 127 can be unambiguously demultiplexed as QUIC.</t> | of 64 to 127 can be unambiguously demultiplexed as QUIC.</t> | |||
| </section> | ||||
| </section> | <section anchor="sect-3" numbered="true" toc="default"> | |||
| <name>Updates to RFC 7983</name> | ||||
| <section title="Updates to RFC 7983" anchor="sect-3"><t> | <t> | |||
| This document updates the text in Section 7 of <xref target="RFC7983"/> (whic | This document updates the text in <xref target="RFC7983" sectionFormat="of" s | |||
| h in | ection="7"/> (which in | |||
| turn updates <xref target="RFC5764"/>) as follows:</t> | turn updates <xref target="RFC5764" format="default"/>) as follows:</t> | |||
| <t> | ||||
| <t> | ||||
| OLD TEXT</t> | OLD TEXT</t> | |||
| <blockquote> | ||||
| <t> | <t> | |||
| The process for demultiplexing a packet is as follows. The receiver | The process for demultiplexing a packet is as follows. The receiver | |||
| looks at the first byte of the packet. If the value of this byte is | looks at the first byte of the packet. If the value of this byte is | |||
| in between 0 and 3 (inclusive), then the packet is STUN. If the | in between 0 and 3 (inclusive), then the packet is STUN. If the | |||
| value is between 16 and 19 (inclusive), then the packet is ZRTP. If | value is between 16 and 19 (inclusive), then the packet is ZRTP. If | |||
| the value is between 20 and 63 (inclusive), then the packet is DTLS. | the value is between 20 and 63 (inclusive), then the packet is DTLS. | |||
| If the value is between 64 and 79 (inclusive), then the packet is | If the value is between 64 and 79 (inclusive), then the packet is | |||
| TURN Channel. If the value is in between 128 and 191 (inclusive), | TURN Channel. If the value is in between 128 and 191 (inclusive), | |||
| then the packet is RTP (or RTCP, if both RTCP and RTP are being | then the packet is RTP (or RTCP, if both RTCP and RTP are being | |||
| multiplexed over the same destination port). If the value does not | multiplexed over the same destination port). If the value does not | |||
| match any known range, then the packet MUST be dropped and an alert | match any known range, then the packet <bcp14>MUST</bcp14> be dropped | |||
| MAY be logged. This process is summarized in Figure 3.</t> | and an alert <bcp14>MAY</bcp14> be logged. This process is summarized | |||
| in Figure 3.</t> | ||||
| <figure title="The DTLS-SRTP receiver's packet demultiplexing algorithm." | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| anchor="fig-1"><artwork><![CDATA[ | ||||
| +----------------+ | +----------------+ | |||
| | [0..3] -+--> forward to STUN | | [0..3] -+--> forward to STUN | |||
| | | | | | | |||
| | [16..19] -+--> forward to ZRTP | | [16..19] -+--> forward to ZRTP | |||
| | | | | | | |||
| packet --> | [20..63] -+--> forward to DTLS | packet --> | [20..63] -+--> forward to DTLS | |||
| | | | | | | |||
| | [64..79] -+--> forward to TURN Channel | | [64..79] -+--> forward to TURN Channel | |||
| | | | | | | |||
| | [128..191] -+--> forward to RTP/RTCP | | [128..191] -+--> forward to RTP/RTCP | |||
| +----------------+ | +----------------+ | |||
| ]]></artwork> | ||||
| </figure> | ||||
| <t>END OLD TEXT</t> | Figure 3: The DTLS-SRTP receiver's packet demultiplexing algorithm. | |||
| <t>NEW TEXT </t> | ||||
| <t> | ]]></artwork> | |||
| </blockquote> | ||||
| <t>END OLD TEXT</t> | ||||
| <t>NEW TEXT </t> | ||||
| <blockquote> | ||||
| <t> | ||||
| The process for demultiplexing a packet is as follows. The receiver | The process for demultiplexing a packet is as follows. The receiver | |||
| looks at the first byte of the packet. If the value of this byte is | looks at the first byte of the packet. If the value of this byte is | |||
| between 0 and 3 (inclusive), then the packet is STUN. If the value | between 0 and 3 (inclusive), then the packet is STUN. If the value | |||
| is between 16 and 19 (inclusive), then the packet is ZRTP. If the | is between 16 and 19 (inclusive), then the packet is ZRTP. If the | |||
| value is between 20 and 63 (inclusive), then the packet is DTLS. If | value is between 20 and 63 (inclusive), then the packet is DTLS. If | |||
| the value is between 128 and 191 (inclusive) then the packet is RTP | the value is between 128 and 191 (inclusive), then the packet is RTP | |||
| (or RTCP, if both RTCP and RTP are being multiplexed over the same | (or RTCP, if both RTCP and RTP are being multiplexed over the same | |||
| destination port). If the value is between 80 and 127 (inclusive) | destination port). If the value is between 80 and 127 (inclusive) | |||
| or between 192 and 255 (inclusive) then the packet is QUIC. If the | or between 192 and 255 (inclusive), then the packet is QUIC. If the | |||
| value is between 64 and 79 (inclusive) and the packet has a source | value is between 64 and 79 (inclusive) and the packet has a source | |||
| IP address and port of a responding TURN server, then the packet | IP address and port of a responding TURN server, then the packet | |||
| is TURN channel; if the source IP address and port is not that of | is TURN channel; if the source IP address and port are not that of | |||
| a responding TURN server, then the packet is QUIC.</t> | a responding TURN server, then the packet is QUIC.</t> | |||
| <t> | ||||
| <t> | If the value does not match any known range, then the packet <bcp14>MUST</bcp | |||
| If the value does not match any known range, then the packet MUST | 14> | |||
| be dropped and an alert MAY be logged. This process is summarized | be dropped and an alert <bcp14>MAY</bcp14> be logged. This process is summari | |||
| zed | ||||
| in Figure 3.</t> | in Figure 3.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure title="The receiver's packet demultiplexing algorithm." anchor="f | ||||
| ig-2"><artwork><![CDATA[ | ||||
| +----------------+ | +----------------+ | |||
| | [0..3] -+--> forward to STUN | | [0..3] -+--> forward to STUN | |||
| | | | | | | |||
| | [4..15] -+--> DROP | | [4..15] -+--> DROP | |||
| | | | | | | |||
| | [16..19] -+--> forward to ZRTP | | [16..19] -+--> forward to ZRTP | |||
| | | | | | | |||
| packet --> | [20..63] -+--> forward to DTLS | packet --> | [20..63] -+--> forward to DTLS | |||
| | | | | | | |||
| | [64..79] -+--> forward to TURN Channel | | [64..79] -+--> forward to TURN Channel | |||
| | | (if from TURN server), else QUIC | | | (if from TURN server), else QUIC | |||
| | [80..127] -+--> forward to QUIC | | [80..127] -+--> forward to QUIC | |||
| | | | | | | |||
| | [128..191] -+--> forward to RTP/RTCP | | [128..191] -+--> forward to RTP/RTCP | |||
| | | | | | | |||
| | [192..255] -+--> forward to QUIC | | [192..255] -+--> forward to QUIC | |||
| +----------------+ | +----------------+ | |||
| ]]></artwork> | ||||
| </figure> | ||||
| <t>Note: Endpoints that wish to demultiplex QUIC MUST NOT send the | Figure 3: The receiver's packet demultiplexing algorithm. | |||
| grease_quic_bit transport parameter, described in [RFC9287].</t> | ]]></artwork> | |||
| <t>Note: Endpoints that wish to demultiplex QUIC <bcp14>MUST NOT</bcp14> s | ||||
| <t>END NEW TEXT</t> | end the | |||
| grease_quic_bit transport parameter, as described in <xref target="RFC9287"/> | ||||
| </section> | .</t> | |||
| </blockquote> | ||||
| <section title="Security Considerations" anchor="sect-4"><t> | <t>END NEW TEXT</t> | |||
| </section> | ||||
| <section anchor="sect-4" numbered="true" toc="default"> | ||||
| <name>Security Considerations</name> | ||||
| <t> | ||||
| The solution discussed in this document could potentially introduce | The solution discussed in this document could potentially introduce | |||
| some additional security issues beyond those described in <xref target="RFC79 83"/>. | some additional security issues beyond those described in <xref target="RFC79 83" format="default"/>. | |||
| These additional concerns are described below.</t> | These additional concerns are described below.</t> | |||
| <t> | ||||
| <t> | ||||
| In order to support multiplexing of QUIC, this document adds logic to | In order to support multiplexing of QUIC, this document adds logic to | |||
| the scheme defined in <xref target="RFC7983"/>. If mis-implemented, the logic | the scheme defined in <xref target="RFC7983" format="default"/>. If misimplem | |||
| could | ented, the logic could | |||
| potentially mis-classify packets, exposing protocol handlers to | potentially misclassify packets, exposing protocol handlers to | |||
| unexpected input.</t> | unexpected input.</t> | |||
| <t> | ||||
| <t> | ||||
| When QUIC is used solely for data exchange, the TLS-within-QUIC | When QUIC is used solely for data exchange, the TLS-within-QUIC | |||
| exchange <xref target="RFC9001"/> derives keys used solely to protect QUIC da ta | exchange <xref target="RFC9001" format="default"/> derives keys used solely t o protect QUIC data | |||
| packets. If properly implemented, this should not affect the | packets. If properly implemented, this should not affect the | |||
| transport of SRTP nor the derivation of SRTP keys via DTLS-SRTP. | transport of SRTP or the derivation of SRTP keys via DTLS-SRTP. | |||
| However, if a future specification were to define use of the TLS- | However, if a future specification were to define use of the TLS- | |||
| within-QUIC exchange to derive SRTP keys, both transport and SRTP key | within-QUIC exchange to derive SRTP keys, both transport and SRTP key | |||
| derivation could be adversely impacted by a vulnerability in the QUIC | derivation could be adversely impacted by a vulnerability in the QUIC | |||
| implementation.</t> | implementation.</t> | |||
| </section> | ||||
| <section anchor="sect-5" numbered="true" toc="default"> | ||||
| <name>IANA Considerations</name> | ||||
| <t> | ||||
| In the "TLS ContentType" registry, IANA replaced references to <xref target=" | ||||
| RFC7983"/> with references to this document.</t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| </section> | <displayreference target="I-D.ietf-avtcore-rtp-over-quic" to="RTP-OVER-QUIC"/> | |||
| <section title="IANA Considerations" anchor="sect-5"><t> | <references> | |||
| In the TLS ContentType registry, IANA will replace references to RFC | <name>References</name> | |||
| 7983 with references to this document.</t> | <references> | |||
| <name>Normative References</name> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
| 119.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
| 550.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
| 711.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
| 764.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 983.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 174.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 489.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 656.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 000.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 001.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 147.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 287.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| </section> | <!-- [I-D.ietf-avtcore-rtp-over-quic] IESG state I-D Exists --> | |||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | ||||
| ietf-avtcore-rtp-over-quic.xml"/> | ||||
| </middle> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9369.xml" | |||
| /> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
| 189.xml"/> | ||||
| <back> | <reference anchor="P2P-QUIC" target="https://www.w3.org/p2p-webtransport | |||
| <references title="Normative References"> | /"> | |||
| &RFC2119; | <front> | |||
| &RFC3550; | <title>QUIC API For Peer-to-Peer Connections</title> | |||
| &RFC3711; | <author initials="P." surname="Thatcher" fullname="P. Thatcher"> | |||
| &RFC5764; | ||||
| &RFC7983; | ||||
| &RFC8174; | ||||
| &RFC8489; | ||||
| &RFC8656; | ||||
| &RFC9000; | ||||
| &RFC9001; | ||||
| &RFC9147; | ||||
| &RFC9287; | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| &I-D.ietf-avtcore-rtp-over-quic; | ||||
| &I-D.ietf-quic-v2; | ||||
| &RFC6189; | ||||
| <reference anchor="P2P-QUIC" target="https://github.com/w3c/p2p-webtransp | ||||
| ort"><front> | ||||
| <title>QUIC API For Peer-to-Peer Connections</title> | ||||
| <author initials="P." surname="Thatcher" fullname="P. Thatcher"> | ||||
| </author> | </author> | |||
| <author initials="B." surname="Aboba" fullname="B. Aboba"> | ||||
| <author initials="B." surname="Aboba" fullname="B. Aboba"> | ||||
| </author> | </author> | |||
| <author initials="R." surname="Raymond" fullname="R. Raymond"> | ||||
| <author initials="R." surname="Raymond" fullname="R. Raymond"> | ||||
| </author> | </author> | |||
| <date day="20" month="May" year="2023" /> | ||||
| </front> | ||||
| <refcontent>W3C Community Group Draft Report</refcontent> | ||||
| <refcontent>commit 50d79c0</refcontent> | ||||
| </reference> | ||||
| <date month="23" year="May 2021"/> | <reference anchor="P2P-QUIC-TRIAL" target="https://developer.chrome.com/ | |||
| </front> | blog/rtcquictransport-api/"> | |||
| <front> | ||||
| <seriesInfo name="W3C" value="ORTC Community Group Draft (work in progres | <title>RTCQuicTransport Coming to an Origin Trial Near You (Chrome 7 | |||
| s)"/> | 3)</title> | |||
| </reference> | <author initials="S." surname="Hampson" fullname="S. Hampson"> | |||
| <reference anchor="P2P-QUIC-TRIAL" target="https://developers.google.com/ | ||||
| web/updates/2019/01/rtcquictransport-api"><front> | ||||
| <title>RTCQuicTransport Coming to an Origin Trial Near You (Chrome 73)</t | ||||
| itle> | ||||
| <author initials="S." surname="Hampson" fullname="S. Hampson"> | ||||
| </author> | </author> | |||
| <date month="January" year="2019"/> | ||||
| <date month="January" year="2019"/> | </front> | |||
| </front> | </reference> | |||
| </references> | ||||
| </reference> | </references> | |||
| </references> | <section numbered="false" anchor="acknowledgments" toc="default"> | |||
| <section title="Acknowledgments" numbered="no" anchor="acknowledgments">< | <name>Acknowledgments</name> | |||
| t> | <t> | |||
| We would like to thank Martin Thomson, Roni Even, Jonathan Lennox and | We would like to thank <contact fullname="Martin Thomson"/>, <contact fullnam | |||
| other participants in the IETF QUIC and AVTCORE working groups for | e="Roni Even"/>, <contact fullname="Jonathan Lennox"/>, and | |||
| other participants in the IETF QUIC and AVTCORE Working Groups for | ||||
| their discussion of the QUIC multiplexing issue, and their input | their discussion of the QUIC multiplexing issue, and their input | |||
| relating to potential solutions.</t> | relating to potential solutions.</t> | |||
| </section> | ||||
| </section> | </back> | |||
| </rfc> | ||||
| </back> | ||||
| </rfc> | ||||
| End of changes. 51 change blocks. | ||||
| 252 lines changed or deleted | 259 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||