Re: [BLISS] [Fwd: I-D Action:draft-roach-sip-http-subscribe-00.txt]

Adam Roach <adam@nostrum.com> Fri, 09 January 2009 21:26 UTC

Return-Path: <bliss-bounces@ietf.org>
X-Original-To: bliss-archive@optimus.ietf.org
Delivered-To: ietfarch-bliss-archive@core3.amsl.com
Received: from [127.0.0.1] (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BF5DA3A6936; Fri, 9 Jan 2009 13:26:32 -0800 (PST)
X-Original-To: bliss@core3.amsl.com
Delivered-To: bliss@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 198423A6936 for <bliss@core3.amsl.com>; Fri, 9 Jan 2009 13:26:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.398
X-Spam-Level:
X-Spam-Status: No, score=-2.398 tagged_above=-999 required=5 tests=[AWL=0.202, BAYES_00=-2.599, SPF_PASS=-0.001]
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 Pbr3JBf7lWqp for <bliss@core3.amsl.com>; Fri, 9 Jan 2009 13:26:30 -0800 (PST)
Received: from nostrum.com (nostrum-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:267::2]) by core3.amsl.com (Postfix) with ESMTP id 10CED3A67EE for <bliss@ietf.org>; Fri, 9 Jan 2009 13:26:29 -0800 (PST)
Received: from dn3-231.estacado.net (vicuna-alt.estacado.net [75.53.54.121]) (authenticated bits=0) by nostrum.com (8.14.3/8.14.3) with ESMTP id n09LQD5r034957 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 9 Jan 2009 15:26:14 -0600 (CST) (envelope-from adam@nostrum.com)
Message-ID: <4967C0F5.6000709@nostrum.com>
Date: Fri, 09 Jan 2009 15:26:13 -0600
From: Adam Roach <adam@nostrum.com>
User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209)
MIME-Version: 1.0
To: Mark Nottingham <mnot@mnot.net>
References: <4925F054.5020205@nostrum.com> <167dfb9b0811201703i3162dbbbpabfc085ccef6754b@mail.gmail.com> <4926351B.6000907@nostrum.com> <167dfb9b0811210007q46e938b3y9d1f9589b271bed6@mail.gmail.com> <4926D995.2010508@nostrum.com> <4D3036ED-3CDC-4FEE-ABB1-AE2D341AA3FC@mnot.net> <4942FCF5.1090509@nostrum.com> <115660BB-5C4F-4F94-BC45-D8358EE3474D@mnot.net>
In-Reply-To: <115660BB-5C4F-4F94-BC45-D8358EE3474D@mnot.net>
Received-SPF: pass (nostrum.com: 75.53.54.121 is authenticated by a trusted mechanism)
X-Virus-Scanned: ClamAV 0.94.2/8848/Fri Jan 9 07:16:38 2009 on shaman.nostrum.com
X-Virus-Status: Clean
Cc: bliss@ietf.org, Theo Zourzouvillys <theo@voip.co.uk>
Subject: Re: [BLISS] [Fwd: I-D Action:draft-roach-sip-http-subscribe-00.txt]
X-BeenThere: bliss@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Basic Level of Interoperability for SIP Services \(BLISS\) BoF" <bliss.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/bliss>, <mailto:bliss-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/pipermail/bliss>
List-Post: <mailto:bliss@ietf.org>
List-Help: <mailto:bliss-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/bliss>, <mailto:bliss-request@ietf.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: bliss-bounces@ietf.org
Errors-To: bliss-bounces@ietf.org

I propose that we move further discussion of this to the SIP mailing list.

/a

On 1/1/09 10:52 PM, Mark Nottingham wrote:
> Hi Adam,
>
> Sorry for the holiday-induced delay.
>
> On 13/12/2008, at 11:08 AM, Adam Roach wrote:
>>
>>> * Following on that thought, the idea behind the most recent Link 
>>> draft is to talk about link relations generically, and make Link 
>>> headers one use of them.
>>
>> I understand what you're saying, but I'm somewhat sensitive to having 
>> many optional ways of doing the same thing in the same protocol. In 
>> my experience, you either end up with everyone supporting every way 
>> of doing things (driving up implementation costs), or with people 
>> selecting only their favorite mechanisms (driving down 
>> interoperability). There is, of course, an unhappy medium between 
>> those two extremes, in which you get both an increase in 
>> implementation complexity and a decrease in interoperability (albeit 
>> to a lesser degree).
>
> I agree, and wasn't proposing that multiple discovery mechanisms be 
> called out (I see others drafts doing this and wince too); rather, 
> just that the door be left open for other ways to be used if someone 
> wants build on top of this in the future.
>
>
>>> * 3.4 Subscription Duration -- just a thought, is it worth tying the 
>>> default subscription duration to the freshness lifetime of the HTTP 
>>> response (as defined by HTTP)?
>>
>> I'm not sure. The goal behind selecting subscription durations is to 
>> balance server load against time to recover in the case of a failure. 
>> If you want to propose a concrete formula, I'll be happy to 
>> incorporate it into the document, but I think it is of limited value.
>
> I'm not sure enough of it to make a concrete proposal. I can 
> definitely see situations where the subscription lifetime varies 
> significantly, just wondering if it's better to use the expiry time as 
> a default, instead of baking in a (fairly arbitrary) number.
>
>
>>> * 3.5.1 message/httpfrag -- did you consider using application/http 
>>> (defined in RFC2616)? I mention this because HTTP already defines 
>>> how to update a cache entry's headers based upon a HEAD or 304 
>>> response; it would be nice to reuse that if possible. Also, what 
>>> does making the status-line optional bring? The semantics of the 
>>> message would be clearer if it were required...
>>
>> I'm hardly an HTTP expert -- so, on first glance, I feared that 
>> re-using message/http would run afoul of semantic restrictions 
>> associated with that content type (in the same way that omitting 
>> critical header fields from a SIP message would make it invalid; that 
>> is what drove development of the message/sipfrag content type).
>>
>> If you think that re-use of message/http is kosher in this context, 
>> then I'd be quite pleased to use that instead of defining a new 
>> content-type. I strongly prefer re-use over re-invention.
>>
>> The optional status-line feature was copied from message/sipfrag. It 
>> has little value here, so I'm happy to make status lines mandatory.
>
> Not message/http, application/http;
>> The application/http type can be used to enclose a pipeline of one or 
>> more HTTP request or response messages (not intermixed).
> I think this will work, provided that the status-line is mandatory. 
> Remember that a HEAD response is allowed to omit a body, so from the 
> purely syntactic standpoint, you should be OK if the body is missing. 
> However, see below.
>
>
>>> * 3.5.2 - Why require an ETag or Content-MD5? Why recommend a 
>>> Last-Modified?
>>
>> Philosophically: SIP Events, in general, reports the state of a 
>> resource, not events that change its state (despite its name, which I 
>> have grown to regret). It is true that state is usefully reported 
>> when it changes, but thinking about it as the changes themselves 
>> instead of the resultant state tends to put the cart before the horse.
>>
>> Practically: without some means of tying the notification to the 
>> resultant HTTP document, you end up with race conditions in which the 
>> state of a document changes between retrieval and subscription to its 
>> state. There are other ways to solve this race, but they're messy.
>
> OK, that makes sense. Would you be comfortable making these 
> requirements a SHOULD (if they aren't already)?
>
>
>> [from a later message]
>>
>>> * Does the NOTIFY message include the URI of the resource that has 
>>> changed (didn't see it, but I may be missing something). It should 
>>> be added if not; otherwise, you're baking in a one-to-one 
>>> relationship between monitoring channels and http URIs. There will 
>>> be use cases where the receiver of the NOTIFY doesn't have enough 
>>> context to associate the message body you're sending with a URI.
>>
>> Good point. How would you feel about adding a requirement to include 
>> a "Link" header in the message/http body with a relation type of "self"?
>
> Content-Location is probably more appropriate.
>
>
>>> * The simplest and most efficient notification message to send is 
>>> "this resource has changed"; the client can then decide whether or 
>>> not to fetch an update, and combining any old response with a new 
>>> one is simple. It also assures that the subscribing client isn't 
>>> required to implement a cache. I would very much encourage you to 
>>> support this mode of interaction.
>>
>> That is effectively what I'm trying to do; however, see my notes 
>> above about race conditions. If a client doesn't want to cache 
>> anything, they can simply treat each NOTIFY message as an indication 
>> that the resource has (likely) changed. (They would still be well off 
>> keeping track of the Content-MD5 and/or ETag for the brief period 
>> between the HTTP operation and the SIP subscription just to make sure 
>> the resource didn't change between those steps).
>
> OK. My concern is when the client does have a cached or otherwise 
> locally stored copy, and they need to combine it with a partial 
> response -- e.g., when the status code isn't present, or partial 
> headers are there, etc. This area is reasonably well-defined when used 
> inside of HTTP, but taken out of context, it doesn't hold up terribly 
> well. 
>
>
>>> * Conversely, if you are you intent on allowing transfer of an 
>>> entity with a notification, you may want to consider allowing the 
>>> transfer of multiple entities, to allow the use of content 
>>> negotiation (e.g., both an English and French representation under 
>>> the same URI, or a png and a gif). application/http would support this.
>>
>> I'm ambivalent about allowing the inclusion of bodies in the 
>> notifications. I would hesitate precluding future specifications from 
>> doing so, but I'm not all that interested in developing a complicated 
>> mechanism in this document that replicates the full set of HTTP 
>> features (such as language and content negotiation).
>
> I see. I didn't get that from reading the spec; my concerns were about 
> the more complex cases where people were trying to update headers and 
> bodies using the notifications (as above). 
>
> Perhaps the right thing to do is to have a very limited new media type 
> that communicates just a few things;
>  * URI (required)
>  * Content-MD5 (optional)
>  * ETag (optional)
>  * Last-Modified (optional)
>
> without the option for status-line, other headers or body, to avoid 
> the complexity. More advanced uses could use application/http (but you 
> wouldn't necessarily need to specify how to do this...)
>
> Conneg definitely makes things more complex. I think that it's 
> legitimate to say that a notification applies to all representations 
> of a resource, and that you can't selectively send notifications for a 
> particular representation. The only sticky part here is that if there 
> *are* multiple representations for a resource, it's important for the 
> server to keep which one it's using for the ETag and/or Content-MD5 
> straight. 
>
>
>> [responses to previous messages in thread]
>>
>>> ...
>>> That said, I agree that the draft shouldn't preclude other discovery 
>>> mechanisms, as mentioned above.
>>
>> I'll reiterate my concerns about too many ways to do something. I'm 
>> adding in the <link> and <atom:link/> mechanisms, but I'd hate to see 
>> an explosion of mechanisms here, as it would make client 
>> implementations untenably complicated.
>
> Yes; see above.
>
> Cheers,
>
> --
> Mark Nottingham     http://www.mnot.net/
>

_______________________________________________
BLISS mailing list
BLISS@ietf.org
https://www.ietf.org/mailman/listinfo/bliss