-
Notifications
You must be signed in to change notification settings - Fork 1
Describe how a RoQ endpoint uses ICE #34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
@alvestrand and @rshpount, this PR replaces #30, and OUGHT to address your comments on that PR. Thank you for your help! |
| The profiles defined in {{rtp-protos}} assume that if an application needs to perform NAT traversal, the endpoints will perform ICE procedures as described in {{!RFC8445}} to gather and prioritize candidate pairs, and will then select candidate pairs that can be included in SDP media lines, as described in {{rtp-protos}}. | ||
| The profiles defined in {{rtp-protos}} assume that if an application needs to perform NAT traversal, the RoQ endpoints will perform ICE procedures as described in {{!RFC8445}} to gather and prioritize candidate pairs, and will then select candidate pairs that can be included in SDP media lines, as described in {{rtp-protos}}. | ||
|
|
||
| The RoQ endpoints need to negotiate a suitable candidate pair that can provide a UDP path, in order to open a QUIC connection and use RoQ. This is necessary because RoQ packets are encapsulated in QUIC packets, which are encapsulated in UDP packets. If no candidate pair suitable for UDP can be negotiated, fallback to another transport protocol might be a useful alternative (for example, {{?RFC4571}} framing using a TCP candidate port pair). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ROQ endpoint needs to be represented in a way that prevents matching up with an UDP candidate - an UDP candidate expects to match up with an endpoint sending / receiving raw RTP packets.
The easiest way to do this is to define a new "proto" field in the candidate (instead of "udp", "tcp" and "tls") of "roq" or "quic".
|
|
||
| The RoQ endpoints need to negotiate a suitable candidate pair that can provide a UDP path, in order to open a QUIC connection and use RoQ. This is necessary because RoQ packets are encapsulated in QUIC packets, which are encapsulated in UDP packets. If no candidate pair suitable for UDP can be negotiated, fallback to another transport protocol might be a useful alternative (for example, {{?RFC4571}} framing using a TCP candidate port pair). | ||
|
|
||
| ICE procedures are performed outside of RoQ, relying on {{!RFC9443}} multiplexing, which allows RoQ endpoints to distinguish QUIC packets from STUN and TURN packets (among other protocols) that can also arrive on the same UDP port. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given that QUIC still doesn't have peer-to-peer exensions specified, we might want to mention that the client end of the connection will have to specify port 9 (discard) - meaning that it can do outgoing QUIC but not incoming QUIC over this UDP port pair.
Closes #21
supersedes #30