Re: [MMUSIC] [AVT] Sockets in multicast DTLS-SRTP

"Dan Wing" <dwing@cisco.com> Thu, 06 May 2010 21:52 UTC

Return-Path: <dwing@cisco.com>
X-Original-To: mmusic@core3.amsl.com
Delivered-To: mmusic@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 097E23A6ABF; Thu, 6 May 2010 14:52:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.043
X-Spam-Level:
X-Spam-Status: No, score=-8.043 tagged_above=-999 required=5 tests=[AWL=-1.244, BAYES_50=0.001, J_CHICKENPOX_12=0.6, J_CHICKENPOX_15=0.6, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 47xfZSgQhXtE; Thu, 6 May 2010 14:52:47 -0700 (PDT)
Received: from sj-iport-2.cisco.com (sj-iport-2.cisco.com [171.71.176.71]) by core3.amsl.com (Postfix) with ESMTP id D75C43A6A98; Thu, 6 May 2010 14:52:47 -0700 (PDT)
Authentication-Results: sj-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-AV: E=Sophos;i="4.52,343,1270425600"; d="scan'208";a="254553253"
Received: from sj-core-2.cisco.com ([171.71.177.254]) by sj-iport-2.cisco.com with ESMTP; 06 May 2010 21:52:35 +0000
Received: from dwingwxp01 (tbarkus-w2k-3.cisco.com [128.107.166.56]) by sj-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o46LqZ8J013923; Thu, 6 May 2010 21:52:35 GMT
From: Dan Wing <dwing@cisco.com>
To: 'Romain Biehlmann' <romain.biehlmann@gmail.com>
References: <9a06dcf1003230527q39fc7f9bye2ca616599e95cac@mail.gmail.com> <00f101cacad0$9d93fc10$1143150a@cisco.com> <9a06dcf1003240120g29db1b1bxb0f0a3e719336720@mail.gmail.com>
Date: Thu, 06 May 2010 14:52:35 -0700
Message-ID: <009201caed66$6fef95e0$38a66b80@cisco.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Office Outlook 11
Thread-Index: AcrLKt4sDzkOYw63Qz6NScUOmstpMAB5tgywB+MhKtA=
In-Reply-To:
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350
Cc: 'Flemming Andreasen' <fandreas@cisco.com>, avt@ietf.org, mmusic@ietf.org
Subject: Re: [MMUSIC] [AVT] Sockets in multicast DTLS-SRTP
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <mmusic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/mmusic>, <mailto:mmusic-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/mmusic>
List-Post: <mailto:mmusic@ietf.org>
List-Help: <mailto:mmusic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mmusic>, <mailto:mmusic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 06 May 2010 21:52:49 -0000

Romain,

(added MMUSIC, as this is mostly about SDP in this post.)

I talked with Flemming about this and there isn't an existing SDP mechanism we
could easily extend to allow unicast keying of a multicast session.  The
problem isn't just with multicast; there are some unicast scenarios, such as
really large unicast groups, where having the 'speaker' or 'mixer' do the
keying doesn't scale very well (and doing DTLS in a separate device can
improve things).

So, we would need to define a new SDP attribute that indicates the DTLS-SRTP
peer for keying, something like this (which shows a DTLS-SRTP-encrypted
multicast audio session),

        v=0
        o=- 25678 753849 IN IP4 192.0.2.1
        s=
        t=0 0
        m=audio 41000 UDP/TLS/RTP/SAVP 98
        c=IN IP4 233.252.0.2/255
        a=dtls-srtp IP4 192.0.2.2 556677             <<<<<<<
        a=dtls-srtp IP6 2001:db8:abcd::1234 556677   <<<<<<<

The Answerer would choose IPv6 or IPv4, and initiate a DTLS-SRTP handshake
with that address.  However, this won't work well if the DTLS-SRTP 'server' is
behind a NAT, and almost begs for ICE to support that situation.  There seem
to be two approaches:  (1) avoid the problem or (2) include support for ICE.

(1) In this approach, we dictate that the DTLS-SRTP server's IP address(es)
must be accessible to the Answerer.  This means the DTLS-SRTP server has to
use a publicly-routed IP address.  

(2) In this approach, we use ICE, inside a=dtls-srtp attribute lines, which
would look something like this:

        v=0
        o=- 25678 753849 IN IP4 192.0.2.1
        s=
        t=0 0
        m=audio 41000 UDP/TLS/RTP/SAVP 98
        c=IN IP4 233.252.0.2/255
        a=dtls-srtp ice-pwd asd88fgpdd777uzjYhagZg
        a=dtls-srtp ice-ufrag:8hhY
        a=dtls-srtp candidate:1 1 UDP 2130706431 10.0.1.1 8998 typ host
        a=dtls-srtp candidate:2 1 UDP 1694498815 192.0.2.3 45664 typ srflx
raddr
   10.0.1.1 rport 8998


Would approach (1) meet your needs?

-d



> -----Original Message-----
> From: Dan Wing [mailto:dwing@cisco.com] 
> Sent: Friday, March 26, 2010 11:31 AM
> To: 'Romain Biehlmann'
> Cc: 'avt@ietf.org'; 'Flemming Andreasen'
> Subject: RE: [AVT] Sockets in multicast DTLS-SRTP
> 
> Thanks for explaining the issue.  I believe we don't yet know
> how to have SDP associate a unicast session (for DTLS-SRTP)
> with a multicast session (for receiving the SRTP-encrypted
> stream).  I expect there is an answer in MMUSIC's SDP 
> Capability Negotiation and/or what is being done to mix
> unicast and multicast in draft-ietf-avt-rapid-acquisition-for-rtp,
> or somewhere.  
> 
> Flemming Andreasen (CC'd) will take a look at this over the
> next week (he is editor of SDP Capability Negotiation and 
> co-author of EKT).  But at this point I believe it will 
> require additional standards work to mix unicast/multicast.
> 
> -d
> 
> 
> > -----Original Message-----
> > From: Romain Biehlmann [mailto:romain.biehlmann@gmail.com] 
> > Sent: Wednesday, March 24, 2010 1:20 AM
> > To: Dan Wing
> > Cc: avt@ietf.org
> > Subject: Re: [AVT] Sockets in multicast DTLS-SRTP
> > 
> > Hi,
> > 
> > And thank you for your fast answer!
> > 
> > I actually already planned on using KTR, which uses EKT, 
> but got stuck
> > by this socket problem.
> > 
> > I don't get how the data should be multiplexed in the case of a
> > multicast session since two sockets will be opened on the clients'
> > side (as shown on the drawing below)... Or am I completely wrong?
> > 
> > ----------
> > | server |---- SRTP multicast session -------------------
> > ----------                                              |
> >   | | |                                  ------------   |
> >   | | |--- DTLS KTR unicast session 1 ---| client 1 |---|
> >   | |                                    ------------   |
> >   | |                                    ------------   |
> >   | |----- DTLS KTR unicast session 2 ---| client 2 |---|
> >   |                                      ------------   |
> >   |                                      ------------   |
> >   |------- DTLS KTR unicast session 3 ---| client 3 |---|
> >                                          ------------
> > 
> > Thank you very much for the time you take to read me.
> > 
> > Romain
> > 
> > 
> > 
> > 2010/3/23 Dan Wing <dwing@cisco.com>:
> > >> -----Original Message-----
> > >> From: avt-bounces@ietf.org [mailto:avt-bounces@ietf.org] On
> > >> Behalf Of Romain Biehlmann
> > >> Sent: Tuesday, March 23, 2010 5:27 AM
> > >> To: avt@ietf.org
> > >> Subject: [AVT] Sockets in multicast DTLS-SRTP
> > >>
> > >> Hi all,
> > >>
> > >> I hope my question is not too dumb, and not too
> > >> implementation-oriented; if so, please accept my apologies 
> > and ignore
> > >> it.
> > >>
> > >> In http://tools.ietf.org/html/draft-ietf-avt-dtls-srtp-07 chapter
> > >> 5.1.1, we can read the following:
> > >> "When a user of DTLS wishes to send an RTP packet in SRTP mode it
> > >> delivers it to the DTLS implementation as an ordinary 
> > application data
> > >> write (e.g., SSL_write())."
> > >>
> > >> From that, I understand that in the case of a unicast 
> session, only
> > >> one socket is needed for the transmission of STUN, SRTP and DTLS
> > >> datagrams.
> > >
> > > Right, and demultiplexed as shown in
> > > 
> http://tools.ietf.org/html/draft-ietf-avt-dtls-srtp-07#section-5.1.2
> > >
> > >> I am not sure, though, to get how it should work in the 
> > case of a (one
> > >> to many) multicast session.
> > >
> > > Use DTLS-SRTP with EKT.  EKT allows telling each of the receivers
> > > the same key.  The sender then sends the same multicast packet
> > > (or if using unicast, the sender sends the same packet, unicast,
> > > to each NNN receivers).
> > >
> > > EKT is http://tools.ietf.org/html/draft-ietf-avt-srtp-ekt-00
> > >
> > > -d
> > >
> > >> Isn't the server supposed to send SRTP datagrams to a broadcast
> > >> address, whereas DTLS data must be sent directly to (unicast)
> > >> designated clients? Is the sentence in the draft only 
> applicable to
> > >> unicast?
> > >>
> > >> I thank you in advance for your valuable insight.
> > >>
> > >> Romain
> > >> _______________________________________________
> > >> Audio/Video Transport Working Group
> > >> avt@ietf.org
> > >> https://www.ietf.org/mailman/listinfo/avt
> > >
> > >
> > 
>