Re: [MMUSIC] Some issues with draft-ietf-mmusic-trickle-ice-sip-02

Paul Kyzivat <pkyzivat@alum.mit.edu> Tue, 28 July 2015 14:32 UTC

Return-Path: <pkyzivat@alum.mit.edu>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 462671AC3A7 for <mmusic@ietfa.amsl.com>; Tue, 28 Jul 2015 07:32:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.235
X-Spam-Level:
X-Spam-Status: No, score=-1.235 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, SPF_SOFTFAIL=0.665] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0rvfwIcHWI67 for <mmusic@ietfa.amsl.com>; Tue, 28 Jul 2015 07:32:08 -0700 (PDT)
Received: from resqmta-ch2-12v.sys.comcast.net (resqmta-ch2-12v.sys.comcast.net [IPv6:2001:558:fe21:29:69:252:207:44]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 34ED51A92E5 for <mmusic@ietf.org>; Tue, 28 Jul 2015 07:32:08 -0700 (PDT)
Received: from resomta-ch2-05v.sys.comcast.net ([69.252.207.101]) by resqmta-ch2-12v.sys.comcast.net with comcast id xqY21q0062Bo0NV01qY78G; Tue, 28 Jul 2015 14:32:07 +0000
Received: from Paul-Kyzivats-MacBook-Pro.local ([50.138.229.151]) by resomta-ch2-05v.sys.comcast.net with comcast id xqY61q00Y3Ge9ey01qY7H4; Tue, 28 Jul 2015 14:32:07 +0000
Message-ID: <55B79266.7040908@alum.mit.edu>
Date: Tue, 28 Jul 2015 10:32:06 -0400
From: Paul Kyzivat <pkyzivat@alum.mit.edu>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: Thomas Stach <thomass.stach@gmail.com>, MMUSIC <mmusic@ietf.org>
References: <55B02E3C.1090104@alum.mit.edu> <55B217A3.5030600@gmail.com> <55B2211E.6030801@alum.mit.edu> <55B649E2.8080605@gmail.com>
In-Reply-To: <55B649E2.8080605@gmail.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 7bit
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20140121; t=1438093927; bh=sif9h9DL8D0VgFAydin46FcB8z6bor4gXGCO8L/+Rn8=; h=Received:Received:Message-ID:Date:From:MIME-Version:To:Subject: Content-Type; b=ow2ynhIJypfh6KWpw4nSnDLP0cLhabd2qW2GOY7ck8GLU1MeRd7RbRK1wxfHj4RqZ vdox8+7egrZxw+lhf/AfK4V0W104BFwzU1Bg2c2SBTXB1s62dO+mIHTfbsmhAdA5ZU TxLMLnhaB5bWEfWlMH8mVoI20XNkor/Q05yRkatYIr0wxmAWDVPSMhYuX0g4MMQ7MR 5cFK14W1uIc/UDneEsLeSs7vi9F3XZ0hBgWlkkJHrX9oZdz3qIsDozuFeWoxbW0bRJ GRWfrYIkdIxlhObfKIjAPcnTwiWJkbdmIRqGPgdBX8c1ZRgp05mFamhPQPoHjCXsY3 5Hb5sXObJoa/w==
Archived-At: <http://mailarchive.ietf.org/arch/msg/mmusic/1be2OHjOQs5HZV6u4P-u9hAO9IA>
Subject: Re: [MMUSIC] Some issues with draft-ietf-mmusic-trickle-ice-sip-02
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.15
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: <https://mailarchive.ietf.org/arch/browse/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, 28 Jul 2015 14:32:11 -0000

Thomas - further comments inline...

On 7/27/15 11:10 AM, Thomas Stach wrote:
> Paul,
>
> Am 24.07.2015 um 13:27 schrieb Paul Kyzivat:
>> Thomas,
>>
>> Comments inline...
>>
>> On 7/24/15 6:46 AM, Thomas Stach wrote:
>>> Paul,
>>> thanks for looking into this and pointing out the issues
>>> I think they can be fixed quite easily.
>>> More below
>>>
>>> Am 23.07.2015 um 01:58 schrieb Paul Kyzivat:
>>>> This is not a complete review of the document - I'm focusing only on
>>>> the sdpfrag related stuff.
>>>>
>>>> Section 8.1 says:
>>>>
>>>>    A valid application/sdpfrag part could be obtained by starting with
>>>>    some valid SDP session description [I-D.ietf-mmusic-rfc4566bis] and
>>>>    deleting any number of lines.
>>>>
>>>> Then section 8.2 says:
>>>>
>>>>    The ABNF of an 'application/sdpfrag' body is based on
>>>>    [I-D.ietf-mmusic-rfc4566bis] with the following modification
>>>>
>>>>       ; SDPfrag Syntax
>>>>              sdp-frag = *1proto-version
>>>>                         *1origin-field
>>>>                         *1session-name-field
>>>>                         *1information-field
>>>>                         *1uri-field
>>>>                         *1email-fields
>>>>                         *1phone-fields
>>>>                         *1connection-field
>>>>                         *1bandwidth-fields
>>>>                         *1time-fields
>>>>                         *1key-field
>>>>                         *1attribute-fields
>>>>                         *1media-descriptions
>>>>
>>>> Those two sections are inconsistent. Some of the individual elements
>>>> above (media-descriptions and time-fields) expand into more than one
>>>> line. This leads to the possibility that you could take valid SDP body
>>>> and delete some lines, leading to something that doesn't match the
>>>> above syntax.
>>> I'll propose a more elaborate ABNF that will address this in the updated
>>> draft. I think it will just need a few tweaks.
>>
>> This whole issue is aggravated by the obtuse way that the ABNF syntax
>> of SDP is constructed. It makes it easy to miss seeing why there is a
>> problem here. (It was only recently that I realized the complex
>> relationship of t=,r=,z= and I've been studying this syntax for
>> years.) It also complicates writing an ABNF for sdpfrag using
>> references to rules in the SDP draft.
>> Since we have an SDPbis in progress, it might be worth discussing if
>> we should clean up the ABNF used to define the SDP syntax, in a way
>> that would make it clearer to a reader what is going on, and also
>> simplify what you are looking for.
> Agreed that the ABNF is ugly, but that's a good fit for the rest of SDP.
> Also agreed that it can make things easier when defining ABNF for
> sdpfrag, but I'm not conviced that we should go down that road
> considering the level of maturity that SDP has achieved in the last 17
> years.

I offered it up as a possibility. But I'm not going to insist.

>> For that matter, we might consider defining sdpfrag in sdpbis.
> I'd like to avoid making trickle-ice-sdp depending to 4566bis. This
> could delay things quite a bit.

Fair enough.

>>
>> If we did this, we would have to be careful that the new abnf is
>> equivalent to the old one, for backward compatibility. That should be
>> quite straightforward to do.
>>
>> There is a possibility that such a change could invalidate some other
>> existing rfc or draft that references one of the affected rules. That
>> would require some research.
> Another source for additional delay.
>>
>>>> For example, media-descriptions allows a variety of other lines
>>>> following an m= line. If you take a valid SDP and delete the m= lines
>>>> you can get something that has a c= following an a=.
>>>>
>>>> Similarly, time-fields only allows an r= line following a t= line.
>>>> According to 8.1 you could take an SDP containing t=,r= and delete the
>>>> t=, leaving a "naked" r= line. But the sdp-frag syntax in 8.2 can't
>>>> generate that.
>>> Will be fixed.
>>>>
>>>> Beyond that, both of those introduce context-sensitivity. E.g., an a=
>>>> following an m= has a different significance than one preceding the
>>>> first m=. If you removed all the m= lines from an SDP the result would
>>>> be incomprehensible. So the notion of stripping arbitrary lines from
>>>> and SDP and making sense of the result is nonsense.
>>> I agree that you can generate nonsense by removing arbitray lines from
>>> SDP. However, I don't intent to prevent that in general.
>>> In the next update I can put some warning text around this .
>>
>> That would be helpful.
>>
>>> The draft already says "The exact content of an 'application/sdpfrag'
>>> body MUST be specified the using protocol."
>>> Section 9.6 defines the necessary contraints for trickle-ice. Other
>>> future application will need to do something similar.
>>
>> My concern here is that this really means nobody needs/uses the syntax
>> of sdpfrag.
> That's a valid concern. The sdpfrag syntax  would of course be the
> basis/superset for other more constrained app-specifiic ABNFs.

But it really isn't the basis. Each needs to define its own syntax.
That is possible whether sdpfrag is defined or not.

The only good use I can think of for sdpfrag is as supporting 
information in reporting errors, or for something like the way sipfrag 
is used with the refer event package.

>> Everybody must define a new syntax, such that every body that matches
>> the protocol-specific syntax also matches the sdpfrag syntax.
> Exactly. Isn't this what we wanted? It constrains what you can put into
> the app-specific syntax and avoids that app-specifc syntax is totally
> arbitrary.
>> This is in addition to the rule that every body that matches the sdp
>> syntax must also match the sdpfrag syntax.
> It should follow naturally that SDP syntax is also a valid sdpfrag and I
> don't consider it a bad thing.

My point is that the requirement that app-specific subsets of sdp *also* 
match the syntax of sdpfrag isn't helpful.

AFAICT, the only real reason is so that a single generic content-type 
(application/sdpfrag) can be used rather than defining an app-specific 
content-type.

>> IIUC, the "value" of sdpfrag is that a single content-type can be
>> defined and used for all these different protocols. But then the
>> content-type isn't really precise, since not all bodies that conform
>> to its syntax are value for any particular usage of it.
> What do mean by 'precise' in this context?
> A valid body for a particular usage is always a valid sdpfrag, but no
> vice versa.
> I seem to remember that we didn't want that a trickle-ice agent needs to
> make sense out of arbitrary sdpfrags.
> Thus, a trickle-ice INFO package body is certainly a valid sdpfrag, but
> it adheres to a specifc structure and does not allow e.g. c=, b=, t=,...
> lines.

And that constraint would be *enhanced* if the content-type were 
application/trickle-ice-sdpfrag, rather than just application/sdpfrag.

>> ISTM that having a content-type that is specific to the allowed
>> content would be preferable. If that is done, then there ceases to be
>> any real need for sdpfrag.
>>
>>>> It does turn out that the definition of trickle-ice-sdpfrag is
>>>> consistent with the syntax of sdp-frag. So there isn't a big problem.
>>>> If you remove/replace the textual definition of sipfrag in 8.1 then
>>>> things are consistent and make sense.
>>>>
>>>> But is there any need for application/sdpfrag? Wouldn't it be more
>>>> straightforward to define application/trickle-ice-sdpfrag?
>>> My understanding from IETF90 was that there was consensus that the
>>> principle of taking vaild SDP and remove arbitrary lines should be kept,
>>> but there need to be application-specific contraints that define the
>>> semantics of a specific sdpfrag body.
>>> Since your issues can be fixed quite easily there isn't need to deviate
>>> from that concept.
>>
>> I agree that it *can* be fixed as you say. The question is whether
>> that is the best way forward.
> Maybe not the best way, but certainly a pragmatic way. Engineers often
> don't need it perfect, it's ok if it works just good enough.
> As next step I propose to correct the ABNF based on what we have now and
> continue from there.

Certainly it will work if the syntax for sdpfrag is "fixed".

An alternative is:

- drop all mention of application/sdpfrag

- instead, define content-type application/trickle-ice-sdpfrag, using
   the syntax in section 9.6.

	Thanks,
	Paul