Re: [MMUSIC] Partial Offer/Partial Answer draft

Adam Roach <adam@nostrum.com> Tue, 15 October 2013 03:28 UTC

Return-Path: <adam@nostrum.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 1010D21E814F for <mmusic@ietfa.amsl.com>; Mon, 14 Oct 2013 20:28:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.83
X-Spam-Level:
X-Spam-Status: No, score=-101.83 tagged_above=-999 required=5 tests=[AWL=-0.431, BAYES_00=-2.599, HTML_MESSAGE=0.001, J_CHICKENPOX_12=0.6, J_CHICKENPOX_15=0.6, SPF_PASS=-0.001, USER_IN_WHITELIST=-100]
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 qjmi8zGBTG-5 for <mmusic@ietfa.amsl.com>; Mon, 14 Oct 2013 20:28:08 -0700 (PDT)
Received: from shaman.nostrum.com (nostrum-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:267::2]) by ietfa.amsl.com (Postfix) with ESMTP id B04E021E815E for <mmusic@ietf.org>; Mon, 14 Oct 2013 20:28:03 -0700 (PDT)
Received: from orochi.roach.at (99-152-145-110.lightspeed.dllstx.sbcglobal.net [99.152.145.110]) (authenticated bits=0) by shaman.nostrum.com (8.14.3/8.14.3) with ESMTP id r9F3Rp2b078517 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Mon, 14 Oct 2013 22:27:51 -0500 (CDT) (envelope-from adam@nostrum.com)
Message-ID: <525CB632.3030602@nostrum.com>
Date: Mon, 14 Oct 2013 22:27:46 -0500
From: Adam Roach <adam@nostrum.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Thunderbird/24.0.1
MIME-Version: 1.0
To: Martin Thomson <martin.thomson@gmail.com>
References: <525C7537.4080209@nostrum.com> <CABkgnnV+VihxB1X_KdaG5fAAVfuk2s06fQKApxFHWd_wG8Wksw@mail.gmail.com> <C5BA15C5-34BF-4ACA-B41A-B65927801346@nostrum.com> <CABkgnnV1aXP6LJ6KYsob4TbG2H5o0+4532AxGBA6npGm5DjbNg@mail.gmail.com>
In-Reply-To: <CABkgnnV1aXP6LJ6KYsob4TbG2H5o0+4532AxGBA6npGm5DjbNg@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------020804020700080006050800"
Received-SPF: pass (shaman.nostrum.com: 99.152.145.110 is authenticated by a trusted mechanism)
Cc: "mmusic@ietf.org" <mmusic@ietf.org>
Subject: Re: [MMUSIC] Partial Offer/Partial Answer draft
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 03:28:09 -0000

On 10/14/13 19:28, Martin Thomson wrote:
> On 14 October 2013 17:22, Adam Roach <adam@nostrum.com> wrote:
>> It's certainly not unsolvable, it's just unsolved. From an information perspective, it can be done unambiguously. We just need to come up with an elegant syntax.
> Leaving impossibilities regarding the juxtaposition of the terms
> "elegant syntax" and "SDP" aside, I don't disagree.  I'm just
> disappointed that you didn't try.

The issue here was actually having too many ideas, not lacking any; and 
spelling all of them out in formal detail would have made the "open 
issue" much larger than was reasonable. I briefly considered putting 
several of them into an appendix, but writing out these approaches at 
the level of formality worthy of a document would have delayed things by 
another day or two, and I already was running much later delivering this 
than I was happy with.

I'll sketch out three of the more interesting ways you can skin this cat 
below.

>  From an information perspective, would you consider a partial offer
> that amends a group to (potentially) generate glare for all of the
> lines already in that group?  E.g., I have a group of "a b c" and
> generate a partial offer to add "d" to that group.  Does this cause
> glare with an offer to amend any of "a", "b", or "c"?

I would hate that.

> I think that could be made to work, but I don't like the
> ramifications.  Without further consideration, all I can envisage is
> the creation of a new grouping semantic.  Maybe I'm just being a
> little pessimistic.

I think so. Either that or just a bit unimaginative.

For the trivial case where we care *only* about being able to put new 
lines into bundles, we could very easily specify that any new media 
section that contains the same port as one or more other media sections 
is implicitly added to the same bundle as those media sections. It's an 
easy, clean, "done and done" solution. It's also very specific to 
solving the BUNDLE case (which is the must-have here) which means that 
it leaves any other grouping (LS, FID, SRF, ANAT, FEC, DDP) out to dry. 
For that reason, I don't think this is the approach we want.

The other two solutions that I would propose, which solve the general 
grouping case, are somewhat less elegant syntactically (all sniping 
aside), and vary primarily in how they choose to identify group lines. 
In the first case, you identify the a=group lines at the session level 
by the order in which they appear (the first one has an index of 1; the 
second has an index of 2; and so on).

Then, we could do something like define a new attribute, valid only in 
sdpfrag, and stripped out between partial processing and incorporation 
into the overall session, that indicates "this media section is also 
added to the indicated group."

For example, if you had an ongoing session that looked like this (yeah, 
I'm just grabbing from RFC 5888 because it's the easiest way to 
demonstrate my point, although I've changed the MIDs to match the notion 
of randomness that pof/pan calls for):

v=0
o=Laura 289083124 289083124 IN IP4 one.example.com
c=IN IP4 192.0.2.1
t=0 0
a=group:LS ZLSQLQ*YBSYMLZD4ETXME5892052JKRN 8WVTFSA^ASZ7R70!9#OZ0WRKA0BR-J1V
m=audio 30000 RTP/AVP 0
a=mid:ZLSQLQ*YBSYMLZD4ETXME5892052JKRN
m=video 30002 RTP/AVP 31
a=mid:8WVTFSA^ASZ7R70!9#OZ0WRKA0BR-J1V

And wanted to add a new video stream to the LS group, you could send a 
partial offer like:

m=video30004 RTP/AVP 31
a=mid:UUWPVLGKPFU#*OI!GB**B*9S5E4#1RKO
a=add-group:1

And that would mean "add this media to the first a=group line that is 
indicated at the session level," resulting in an final session that 
looks like this:

v=0
o=Laura 289083124 289083124 IN IP4 one.example.com
c=IN IP4 192.0.2.1
t=0 0
a=group:LS ZLSQLQ*YBSYMLZD4ETXME5892052JKRN 8WVTFSA^ASZ7R70!9#OZ0WRKA0BR-J1V
UUWPVLGKPFU#*OI!GB**B*9S5E4#1RKO
m=audio 30000 RTP/AVP 0
a=mid:ZLSQLQ*YBSYMLZD4ETXME5892052JKRN
m=video 30002 RTP/AVP 31
a=mid:8WVTFSA^ASZ7R70!9#OZ0WRKA0BR-J1V
m=video  30004 RTP/AVP 31
a=mid:UUWPVLGKPFU#*OI!GB**B*9S5E4#1RKO

(Note the on the a=group line is different than it had been before; also 
note that the third m-section does not include an "a=add-group" 
attribute, even though one was present in the partial offer).

An alternate approach, if we think that the use of numerical indices to 
point to the group we're talking about, is to instead say "add to the 
group that is uniquely identified as containing at least the following 
MIDs (and probably some others too)." For this example, the end result 
is the same, but the "add-group" attribute would instead look something 
like this:

a=add-group:LS 8WVTFSA^ASZ7R70!9#OZ0WRKA0BR-J1V

Which means "there is only one LS group that contains the MID 
8WVTFSA^ASZ7R70!9#OZ0WRKA0BR-J1V, and this media section should be added 
to it." If the combination of LS and "8WVTFSA^ASZ7R70!9#OZ0WRKA0BR-J1V" 
were not sufficiently unique to identify the group, then the attribute 
would include enough other MIDs until the group were uniquely 
identified; e.g.:

a=add-group:LS 8WVTFSA^ASZ7R70!9#OZ0WRKA0BR-J1V 
ZLSQLQ*YBSYMLZD4ETXME5892052JKRN

And so on. If, by some fluke, you wanted to add a new media section to a 
group that happened to be of the same type as another group whose 
members were a strict superset of the group you wanted to talk about, 
you'd have to fall back to a full offer. This is such an extreme corner 
case, however, that I don't think it bears much hand-wringing to worry 
about the glare that might result from such a situation.

For both of these last two cases, we would probably want to allow a 
partial offer or partial answer to also include an "a=group" at the 
session level, but only if it is defining a completely new group (i.e., 
not expanding an existing group). If we do this, we might choose to 
allow such POFs and PANs to incorporate media sections that aren't 
described in the sdpfrag (that is, existing and otherwise unmodified 
media sections). This does make the index-based approach to indicating 
group lines a bit more fiddly, as we need to define a canonical ordering 
for group lines in the rare circumstance that both sides try to add a 
new group simultaneously. As with this issue itself, it's an eminently 
solvable problem, but it *is* more specification and more code.

Of these three approaches, which I think are the most promising of the 
ones I've been able to come up with, I personally like the last one 
(where you describe a group by its type and the smallest set of MIDs 
required to uniquely identify it). I suspect they could all be refined 
and made slightly more elegant if we had enough people put their minds 
to the issue.

/a