Re: [rtcweb] How to multiplex between peers

Matthew Kaufman <matthew.kaufman@skype.net> Tue, 19 July 2011 15:39 UTC

Return-Path: <matthew.kaufman@skype.net>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 77A0E11E8070 for <rtcweb@ietfa.amsl.com>; Tue, 19 Jul 2011 08:39:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CpLER2Pv8pt4 for <rtcweb@ietfa.amsl.com>; Tue, 19 Jul 2011 08:39:54 -0700 (PDT)
Received: from mx.skype.net (mx.skype.net [78.141.177.88]) by ietfa.amsl.com (Postfix) with ESMTP id 2F59911E8074 for <rtcweb@ietf.org>; Tue, 19 Jul 2011 08:39:54 -0700 (PDT)
Received: from mx.skype.net (localhost [127.0.0.1]) by mx.skype.net (Postfix) with ESMTP id EF90416FC; Tue, 19 Jul 2011 17:39:52 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=skype.net; h=message-id :date:from:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; s=mx; bh=qtzmWiu7EnhLRV JazAgxuTNSCyQ=; b=JpJ+Qt23JCERBPIF+KGZ6mio8i2ynbjpQvpD26yiD6J/Ri pZ/TavI6Y9dOzw0nbXpZlZ1xCcKc8pXry0kxX4RXZNQxcrqU9f7UYhP5uxTJSz85 Y6E5ydRS5SMzx6cXY/sbEedtm0/KW7HVFvSoYmtvAqzLHJVl5pn7+dLhD7PYo=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=skype.net; h=message-id:date:from :mime-version:to:cc:subject:references:in-reply-to:content-type: content-transfer-encoding; q=dns; s=mx; b=YsPObeeSgsFC64MSw4hC4V d/ksvEXCiZJy9DBYvSwTucayZRgIaK0ev4u9x24OZmhe3rslg0RblbUGIc7xL8qp bHXp3O2i3op9lo/01jqKFPP1wrSjjQqmc/YQjE7ZywBWW+rK3qfRAPM6LwhMxCsh KVF8V0F4SCkUDa6UUaq8c=
Received: from zimbra.skype.net (zimbra.skype.net [78.141.177.82]) by mx.skype.net (Postfix) with ESMTP id E4C707F6; Tue, 19 Jul 2011 17:39:52 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1]) by zimbra.skype.net (Postfix) with ESMTP id CCB8E35080D7; Tue, 19 Jul 2011 17:39:52 +0200 (CEST)
X-Virus-Scanned: amavisd-new at lu2-zimbra.skype.net
Received: from zimbra.skype.net ([127.0.0.1]) by localhost (zimbra.skype.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BwT0jBV-YCZw; Tue, 19 Jul 2011 17:39:47 +0200 (CEST)
Received: from [10.10.155.2] (unknown [198.202.199.254]) by zimbra.skype.net (Postfix) with ESMTPSA id 75293350806F; Tue, 19 Jul 2011 17:39:47 +0200 (CEST)
Message-ID: <4E25A53B.70500@skype.net>
Date: Tue, 19 Jul 2011 08:39:39 -0700
From: Matthew Kaufman <matthew.kaufman@skype.net>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11
MIME-Version: 1.0
To: Magnus Westerlund <magnus.westerlund@ericsson.com>
References: <4E259EAD.3060505@ericsson.com>
In-Reply-To: <4E259EAD.3060505@ericsson.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] How to multiplex between peers
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 19 Jul 2011 15:39:58 -0000

On 7/19/2011 8:11 AM, Magnus Westerlund wrote:
> 1. We have 4 or more protocols (The possible set of protocols include:
> STUN, RTP/RTCP, Datagram, and DTLS-SRTP. There is likely future
> extensions, like reliable protocol)  that needs to be identified and
> demultiplexed. A single extension in one of these protocols can cause
> the whole house of cards to come tumbling down.

Multiplexing RTP, RTCP, and STUN on the same port already needs to keep 
working for lots of other reasons, we can leverage those reasons.

draft-kaufman-rtp-compatible-data suggests that the data service can be 
multiplexed with these as well, in a way that is protected by the same 
things that protect the above.

> 2. It will require one to find an RTP internal session multiplexing
> mechanism. This is likely not easy or causes a fork of RTP into two
> non-compatible versions. In addition such a mechanism needs defining
> which takes time, likely substantial time as there is quite a lot of RTP
> mechanisms to consider.

There's one, SSRC. Since we already allow two or more audio streams to 
be multiplexed using SSRC, and two or more video streams to be 
multiplexed using SSRC, it really isn't a stretch to allow one audio and 
one video to be multiplexed using SSRC when the two ends agree that this 
works for them.

> 3. We likely need a multiplexing layer anyway if we want a fall back
> over WebSockets or HTTP.

I agree that we currently don't have good agreement of how a TCP 
fallback works for RTCWEB, but it is clearly necessary.

> Thus we see this a very fragile mechanism that creates additional work
> overhead and large uncertainties in when it would be available.

Not any more fragile than RTP+RTCP+STUN on the same port already is.

> We have in our draft:
> https://datatracker.ietf.org/doc/draft-perkins-rtcweb-rtp-usage/ looked
> at two possible suggestions for explicit multiplexing. Either a thin
> shim layer primarily consisting of a identifier that through negotiation
> is bound to a context, like an particular RTP session or a datagram
> channel.

Adding a shim layer causes two problems:
1. You need to be able to run the system in a way that has the shim 
layer removed when you want to do legacy interoperability.
2. Existing protocol stacks and middleboxes cannot be reused as easily.

> The other alternative we considered was using DCCP over UDP for RTP and
> datagram. That way we got a complete port space for multiplexing
> different purposes for flows. We also got a transport framework with its
> own negotiation, congestion control, a several other features.

Same problem, no matter what the shim layer is.

I've already considered explicit multiplexing. It has lots of 
advantages. But it also fails several of the tests laid out in the 
requirements, and delays implementation and adoption.

So I think we're down to implicit multiplexing, or no multiplexing at 
all. And when we run out of IPv4 NAT mappings, you'll understand why 
multiplexing should be in there.


Matthew Kaufman