Issue 134: DTLS/SRTP (non-mux): Are separate DTLS transports required for RTP and RTCP?

Filed by Rajesh Gunnalan:

RFC 5764 Section 4.2 (see below) discusses how DTLS/SRTP sessions are used to derive distinct RTP and RTCP keys, in the case where RTP and RTCP are not multiplexed. My understanding is that distinct DTLS/SRTP sessions for RTP and RTCP can occur within a single DTLS session. In that case the use of separate DTLS transports for RTP and RTCP does not make sense -- you should just have a single DTLS transport with a "mux" property.

RFC 5764 Section 4.2: 

   When both RTCP and RTP use the same source and destination ports,
   then both the SRTP and SRTCP keys are needed.  Otherwise, there are
   two DTLS-SRTP sessions, one of which protects the RTP packets and one
   of which protects the RTCP packets; each DTLS-SRTP session protects
   the part of an SRTP session that passes over a single source/
   destination transport address pair, as shown in Figure 2, independent
   of which SSRCs are used on that pair.  When a DTLS-SRTP session is
   protecting RTP, the SRTCP keys derived from the DTLS handshake are
   not needed and are discarded.  When a DTLS-SRTP session is protecting
   RTCP, the SRTP keys derived from the DTLS handshake are not needed
   and are discarded.

      Client            Server
     (Sender)         (Receiver)
   (1)   <----- DTLS ------>    src/dst = a/b and b/a
         ------ SRTP ------>    src/dst = a/b, uses client write keys

   (2)   <----- DTLS ------>    src/dst = c/d and d/c
         ------ SRTCP ----->    src/dst = c/d, uses client write keys
         <----- SRTCP ------    src/dst = d/c, uses server write keys

     Figure 2: A DTLS-SRTP session protecting RTP (1) and another one
    protecting RTCP (2), showing the transport addresses and keys used.

Received on Friday, 18 July 2014 18:39:04 UTC