0

Why RFC 8445 for ICE says the transport protocol of ICE Candidate is always UDP?

RFC 6544 (2012) extended ICE to TCP 6 years earlier. Why RFC 8445 (2018) is still limiting to UDP and no reference to TCP.

RFC 8445 - 2. Overview of ICE says the transport protocol is always UDP.

The basic idea behind ICE is as follows: each agent has a variety of candidate transport addresses (combination of IP address and port for a particular transport protocol, which is always UDP in this specification) it could use to communicate with the other agent.

However, as RFC 8656 3.1. Transports, the transport protocol between a Peer (Turn Client) and the TURN Server includes TCP.

TURN, as defined in this specification, always uses UDP between the server and the peer. However, this specification allows the use of any one of UDP, TCP, Transport Layer Security (TLS) over TCP, or Datagram Transport Layer Security (DTLS) over UDP to carry the TURN messages between the client and the server.

TURN client to TURN server TURN server to peer
UDP UDP
TCP UDP
TLS-over-TCP UDP
DTLS-over-UDP UDP

The support of TCP between TURN client and TURN server was defined in RFC 5766 (2010) as well.

RFC 5766 - 2.1. Transports

TURN supports TCP transport between the client and the server because some firewalls are configured to block UDP entirely.

Then, the Transport Protocol specified in the ICE Server Reflexive Candidate must allow TCP, otherwise TURN cannot be used in the situation where firewalls are configured to block UDP entirely specified in the RFC.

                      To Internet
                      |
                      |
                      |  /------------  Relayed
                  Y:y | /               Address
                  +--------+
                  |        |
                  |  TURN  |
                  | Server |
                  |        |
                  +--------+
                      | <-- TURN support TCP (RFC 8656 3.1. RFC 5766 2.1)
                      |
                      | /------------  Server
               X1':x1'|/               Reflexive
                +------------+         Address
                |    NAT     |
                +------------+
                      |
                      | /------------  Local
                  X:x |/               Address
                  +--------+
                  |        |
                  | Agent  |
                  |        |
                  +--------+

Please help understand why the Transport Protocol in ICE Candidate in RFC 8445 is limited to UDP only. ICE has to support TURN and TURN needs to support TCP. Then why only UDP is in ICE specification of RFC 8445 (2018)? Is it not a discrepancy?

mon
  • 285

0 Answers0