Re: [MMUSIC] Bundle-only, Port 0, and other options

Christer Holmberg <christer.holmberg@ericsson.com> Tue, 15 October 2013 16:26 UTC

Return-Path: <christer.holmberg@ericsson.com>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6DD6E21F9CCC for <mmusic@ietfa.amsl.com>; Tue, 15 Oct 2013 09:26:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.754
X-Spam-Level:
X-Spam-Status: No, score=-5.754 tagged_above=-999 required=5 tests=[AWL=0.494, BAYES_00=-2.599, HELO_EQ_SE=0.35, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wmFCX8JUWldK for <mmusic@ietfa.amsl.com>; Tue, 15 Oct 2013 09:26:06 -0700 (PDT)
Received: from mailgw1.ericsson.se (mailgw1.ericsson.se [193.180.251.45]) by ietfa.amsl.com (Postfix) with ESMTP id 2D3BC21E80F1 for <mmusic@ietf.org>; Tue, 15 Oct 2013 09:25:30 -0700 (PDT)
X-AuditID: c1b4fb2d-b7f738e000003ee3-e9-525d6c78a4ad
Received: from ESESSHC023.ericsson.se (Unknown_Domain [153.88.253.125]) by mailgw1.ericsson.se (Symantec Mail Security) with SMTP id FD.F5.16099.87C6D525; Tue, 15 Oct 2013 18:25:29 +0200 (CEST)
Received: from ESESSMB209.ericsson.se ([169.254.9.146]) by ESESSHC023.ericsson.se ([153.88.183.87]) with mapi id 14.02.0328.009; Tue, 15 Oct 2013 18:25:28 +0200
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: Adam Roach <adam@nostrum.com>, "mmusic@ietf.org" <mmusic@ietf.org>
Thread-Topic: [MMUSIC] Bundle-only, Port 0, and other options
Thread-Index: AQHOyb6UYlrVbVrjzE+6A+wFMyNYppn17aY2gAAFL7w=
Date: Tue, 15 Oct 2013 16:25:28 +0000
Message-ID: <7594FB04B1934943A5C02806D1A2204B1C4BEF17@ESESSMB209.ericsson.se>
References: <525D649E.5040608@nostrum.com>
In-Reply-To: <525D649E.5040608@nostrum.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [153.88.183.19]
Content-Type: multipart/alternative; boundary="_000_7594FB04B1934943A5C02806D1A2204B1C4BEF17ESESSMB209erics_"
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrELMWRmVeSWpSXmKPExsUyM+JvrW5lTmyQQe9HVos9fxexW0xd/pjF gcljyZKfTB6zdj5hCWCK4rJJSc3JLEst0rdL4MpYumIOU8HqiIp3pxUbGF97dDFyckgImEjc efKXEcIWk7hwbz1bFyMXh5DAYUaJzq7D7BDOEkaJZXMXADkcHGwCFhLd/7RBTBEBN4l5p9JB eoUFbCSu3pvKBGKLCNhK/P/QywxhW0lMfLgLzGYRUJW4/ukS2C5eAV+J6VM2sIDYQgJaEu9e vQKLcwpoS8x8ewcszgh0z/dTa8BmMguIS9x6Mp8J4k4BiSV7zjND2KISLx//Y4WwFSXanzYw QtTnSyw50c4EsUtQ4uTMJywTGEVmIRk1C0nZLCRlEHE9iRtTp7BB2NoSyxa+ZoawdSVm/DsE VWMt0bnmBzOymgWMHKsY2XMTM3PSyw03MQLj6eCW37o7GE+dEznEKM3BoiTO++Gtc5CQQHpi SWp2ampBalF8UWlOavEhRiYOTqkGxkiJ3t6XxRl5yz1CF3kdu3TfYo7WpEx3B/ZJcl4XhVce zeNhebyna0edKi/bkjTtu11Nvy6eO/n1/FoT6cbqKZ+0eO1XFk63yzwj8vN5eGT3yoi06a5F h69d+ydtflhh/4kFxxL/FR2UeOXHFypz0qfAZ+87lnffZvrWMXqv2snG5b354UnxZUosxRmJ hlrMRcWJAGBWG9N1AgAA
Subject: Re: [MMUSIC] Bundle-only, Port 0, and other options
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <mmusic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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: Tue, 15 Oct 2013 16:26:12 -0000

Hi Adam,



I have also been thinking about defining new BUNDLE values for media types, address types etc, but I agree it's probably something we shouldn't do - at least not for media type and net/address type.



Also, your alternatives are based on the assumption the the bundle-only m- lines are added before it is known whether the Answerer supports. There has been a suggestion that the bundle-only m- lines are added in the "2nd Offer" (BAS Offer in BUNDLE), when the Answerer has indicated support of BUNDLE, and selected the BUNDLE address for the Offerer. In that case, the BUNDLE address can be addded to each m- line (including the bundle-only m- lines) in the BUNDLE group.



Regards,



Christer



________________________________
From: mmusic-bounces@ietf.org [mmusic-bounces@ietf.org] on behalf of Adam Roach [adam@nostrum.com]
Sent: Tuesday, 15 October 2013 6:51 PM
To: mmusic@ietf.org
Subject: [MMUSIC] Bundle-only, Port 0, and other options

There's been a bit of a brouhaha (from small but disproportionately vocal quarters) around the use of port zero in an offer for bundle-only lines. So I wanted to take a step back and see whether we could untangle this knot a bit.

The key property that we need here is that bundle-only lines must be formed in a way that causes them to be rejected by non-bundling agents, but accepted by bundling agents. Since bundle deals with ports, that seems like an extremely natural place to make the distinction. It has the spectacular advantage of being defined in a crystal clear way in RFC 3264:

  "A port number of zero in the offer indicates that the
   stream is offered but MUST NOT be used.  This has no useful semantics
   in an initial offer, but is allowed for reasons of completeness..."

  "A stream that is offered with a port of zero MUST be marked with port
   zero in the answer."

By overriding this second normative statement for bundle clients, we turn it into an extremely well-defined extension point.

----------------------------------------------------------------------

But this is exactly the approach that is causing people heartburn, so let's look at other potential ways of achieving the goal. In a media section, there are only a small handful of fields that an implementation is required to read and understand:

  m=<media> <port>/<number of ports> <proto> <fmt> ...
  c=<nettype> <addrtype> <connection-address>

Taken one-by-one:


  1.  Extending "media" would be somewhat problematic, since we use this information extensively in our use cases. We would effectively have to register bundle-only variations on "audio," "video," and "application" (at a minimum), which is horribly inelegant.

  2.  Port is discussed above.

  3.  Setting "number of ports" to zero would clearly have the semantics that we're interested in here. The down-side of using this approach is that (in my experience) there are a lot of implementations that simply ignore the "number of ports" field, and a small handful that simply choke when it is present.

  4.  Proto is an interesting one. Right now, we use RTP/SAVPF and DTLS/SCTP. We could conceivably additionally register RTP/SAVPF/BUNDLEONLY and DTLS/SCTP/BUNDLEONLY, which would presumably be rejected by non-bundle clients as unrecognized.

  5.  Fmt isn't really an option -- we need to use it to identify formats.

  6.  Moving on to the c= line (which, if present, is mandatory to parse, understand, and honor), nettype is pretty much hardwired to "IN." We could register an "IN-BUNDLEONLY" option, but there's a good chance that implementations don't really look at the value of this field, so they wouldn't reject the new value.

  7.  Addrtype is necessary for indicating IP4 versus IP6. We could register IP4-BUNDLEONLY and IP6-BUNDLEONLY, but this is approximately as elegant as option #1.

  8.  Overloading connection-address would be dicey, since it ruins the ability to send different streams to different places. While WebRTC might not care too much about these use cases, they *are* important in other contexts.

In summary: of the above options, the strongest option still seems to be "port," followed (perhaps) by "proto." We could probably force "media" or "addrtype" to work, but these would be pretty messy. I think "number of ports" and "nettype" are at high risk of being ignored by non-bundle implementations (i.e., they won't trigger the failure we want), and we need to maintain the existing meanings for "fmt" and "connection-address".

Even more tersely: if we don't want to port zero, I think the only other realistic option is registering new "proto" values.

/a