Internet DRAFT - draft-thatcher-p2p-quic
draft-thatcher-p2p-quic
Audio/Video Transport Core Maintenance P. Thatcher
Internet-Draft Microsoft
Intended status: Standards Track 10 July 2023
Expires: 11 January 2024
P2P QUIC
draft-thatcher-p2p-quic-00
Abstract
This document describes how to combine ICE and QUIC to do p2p QUIC.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 11 January 2024.
Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Thatcher Expires 11 January 2024 [Page 1]
Internet-Draft P2P QUIC July 2023
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology and Notation . . . . . . . . . . . . . . . . . . 2
3. ALPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4. (De)multiplexing ICE and QUIC . . . . . . . . . . . . . . . . 2
5. Signaling . . . . . . . . . . . . . . . . . . . . . . . . . . 3
6. Certificate verification . . . . . . . . . . . . . . . . . . 3
7. Grease bit . . . . . . . . . . . . . . . . . . . . . . . . . 3
8. Multipath . . . . . . . . . . . . . . . . . . . . . . . . . . 3
9. QUIC datagrams . . . . . . . . . . . . . . . . . . . . . . . 3
10. Congestion control . . . . . . . . . . . . . . . . . . . . . 3
11. QUIC Pings . . . . . . . . . . . . . . . . . . . . . . . . . 3
12. Network Migration . . . . . . . . . . . . . . . . . . . . . . 4
13. MultiplexingID . . . . . . . . . . . . . . . . . . . . . . . 4
14. SDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
15. Security Considerations . . . . . . . . . . . . . . . . . . . 5
16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
17. Normative References . . . . . . . . . . . . . . . . . . . . 5
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Introduction
ICE [RFC8445] is a protocol for establishing peer-to-peer (p2p)
connections. It can be combined with client-server protocols such as
DTLS [RFC9147] for p2p versions of those protocols. This document
describes how to use ICE with QUIC [RFC9000] for p2p QUIC
connections.
2. Terminology and Notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
3. ALPN
The QUIC ALPN MUST be "q2q".
4. (De)multiplexing ICE and QUIC
QUIC packets MUST be sent using the ICE selected candidate pair.
Thatcher Expires 11 January 2024 [Page 2]
Internet-Draft P2P QUIC July 2023
ICE and QUIC packets are demultiplexed using the STUN magic cookie.
If a packet contains a STUN magic cookied, it MUST treated as an ICE
packet. If it does not contain a STUN magic cookie, it SHOULD be
treated as a QUIC packet (but further demultiplexing between QUIC and
other protocols is possible).
5. Signaling
In addition to all signaling necessary for ICE (ICE parameters and
candidates), the following information MUST be signaled or otherwise
negotiated between the peers: - Which side will take on the active
(client) or passive (server) role. - Certificate fingerprint(s) -
Whether or not to enable the grease bit - Whether or not to the
MuliplexingID is used
6. Certificate verification
Peers MAY use self-signed certificates. Each peer MUST verify the
certificate, meaning a QUIC implementation MUST support a server
verifying a client certificate.
7. Grease bit
Peers SHOULD enable and use the grease bit if only multiplexing ICE
and QUIC. When multiplexing other protocols that conflict with the
grease bit, peers SHOULD NOT use the grease bit.
8. Multipath
QUIC multipath SHOULD NOT be used unless it is known that one of the
peers is a server.
9. QUIC datagrams
QUIC datagrams SHOULD be supported.
10. Congestion control
A real-time congestion control algorithm SHOULD be used, which may
require extensions to QUIC (such as additional timestamps in feedback
messages) and additional signaling.
11. QUIC Pings
ACKed QUIC PING frames MAY be treated the same as a succesful ICE
check, such that a peer may choose to send QUIC PING frames instead
of ICE checks once an ICE candidate pair has had at least one
successful ICE check.
Thatcher Expires 11 January 2024 [Page 3]
Internet-Draft P2P QUIC July 2023
12. Network Migration
Network migration SHOULD be done using ICE, not QUIC. But ICE
migrates between candidate pairs, QUIC should change behavior (such
as congestion control) as if it had done a network migration, but it
SHOULD NOT change the connection ID due to ICE migration.
13. MultiplexingID
Because it is often difficult to obtain an ICE connection, it is
often advantageous to multiplex many uses over a single ICE
connection. For example, one may wish to send control data, real-
time audio and video, and real-time data altogether over the same ICE
connection. If all of these uses are done using QUIC, there must be
a way to distinguish multiple uses of QUIC within the same QUIC
connection, both for streams and for datagrams.
The MultiplexingID is an optional, variable-length integer at the
beginning of every QUIC datagram and stream. If it is negotiated to
be used, it MUST be included on every datagram and stream. If it is
not negotiated to be used, it MUST NOT be included on any datagram or
stream.
The variable-length encoding is the same as used by QUIC, as defined
in section 16.
14. SDP
If SDP is used for signaling, the media type may be "audio", "video",
or "application". The transport protocol MUST begin with "UDP/QUIC".
The transport protocol suffix combined with the media format may be
any values which describe the protocol used on top of QUIC, either
defined by other specifications or by applications. The media format
MAY be the value "generic". The ICE parameters and candidates are
signaled as defined by ICE ("a=ice-ufrag", "a=ice-pwd", "a=ice-
options", "a=candidate"). The QUIC role and fingerprints are
signaled using the same attributes as DTLS ("a=setup", and
"a=fingerprint"). QUIC options are negotiated the same as ICE
options but with an "a=quic-options" field. The grease bit defaults
to off unless a QUIC option of "grease" is included. The
MultiplexingID is signaled using an "a=mid" line, and the value MUST
be a base-10 integer. If any "a=mid" is specified in any QUIC
m-section in a BUNDLE group, then all QUIC m-sections in the same
BUNDLE group MUST have an "a=mid" specified.
For example:
Thatcher Expires 11 January 2024 [Page 4]
Internet-Draft P2P QUIC July 2023
v=0
o=- 4962303333179871722 1 IN IP4 0.0.0.0
s=-
t=0 0
a=ice-ufrag:7sFv
a=ice-pwd:dOTZKZNVlO9RSGsEGM63JXT2
a=ice-options:trickle
a=quic-options:grease
a=fingerprint:sha-256
7B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35:
DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08
a=setup:active
a=group:BUNDLE 1 2 3
m=audio 9 UDP/QUIC/RTP/AVPF 99
a=mid:1
a=sendrecv
a=rtpmap:99 OPUS/4800/2
m=video 9 UDP/QUIC/RTP/AVPF 100
a=mid:2
a=sendrecv
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
m=application 9 UDP/QUIC generic
a=mid:3
15. Security Considerations
This document is subject to the security considerations of ICE and
QUIC.
16. IANA Considerations
The ALPN "q2q" should be registered.
17. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.
Thatcher Expires 11 January 2024 [Page 5]
Internet-Draft P2P QUIC July 2023
[RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive
Connectivity Establishment (ICE): A Protocol for Network
Address Translator (NAT) Traversal", RFC 8445,
DOI 10.17487/RFC8445, July 2018,
<https://www.rfc-editor.org/rfc/rfc8445>.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/rfc/rfc9000>.
[RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The
Datagram Transport Layer Security (DTLS) Protocol Version
1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022,
<https://www.rfc-editor.org/rfc/rfc9147>.
Author's Address
Peter Thatcher
Microsoft
Email: pthatcher@microsoft.com
Thatcher Expires 11 January 2024 [Page 6]