Re: [Simple] WGLC Comments on draft-ietf-sip-xcapevent-01

Ben Campbell <ben@estacado.net> Thu, 03 April 2008 13:28 UTC

Return-Path: <simple-bounces@ietf.org>
X-Original-To: simple-archive@megatron.ietf.org
Delivered-To: ietfarch-simple-archive@core3.amsl.com
Received: from core3.amsl.com (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 28DC03A6C5B; Thu, 3 Apr 2008 06:28:57 -0700 (PDT)
X-Original-To: simple@core3.amsl.com
Delivered-To: simple@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7394C28C1B6; Thu, 3 Apr 2008 06:28:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.058
X-Spam-Level:
X-Spam-Status: No, score=-2.058 tagged_above=-999 required=5 tests=[AWL=0.541, BAYES_00=-2.599]
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 EHnkTZzBIyeE; Thu, 3 Apr 2008 06:28:54 -0700 (PDT)
Received: from estacado.net (estacado-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:266::2]) by core3.amsl.com (Postfix) with ESMTP id A77363A6AF4; Thu, 3 Apr 2008 06:28:53 -0700 (PDT)
Received: from [10.0.1.193] (adsl-68-94-18-109.dsl.rcsntx.swbell.net [68.94.18.109]) (authenticated bits=0) by estacado.net (8.14.2/8.14.1) with ESMTP id m33DSolE050096 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Thu, 3 Apr 2008 08:28:54 -0500 (CDT) (envelope-from ben@estacado.net)
Message-Id: <FDF38B9C-0E5E-49D5-A96C-D12AF727B7BA@estacado.net>
From: Ben Campbell <ben@estacado.net>
To: Jari Urpalainen <jari.urpalainen@nokia.com>
In-Reply-To: <47F4CD85.3090203@nokia.com>
Mime-Version: 1.0 (Apple Message framework v919.2)
Date: Thu, 03 Apr 2008 08:28:49 -0500
References: <5DDFCB0D-ADEC-49A7-BDDC-4112A011CAF8@estacado.net> <47F35A1E.4070109@nokia.com> <208326E5-B78C-49E3-BADC-B1CE94FE2963@estacado.net> <47F4CD85.3090203@nokia.com>
X-Mailer: Apple Mail (2.919.2)
Cc: Sip List <sip@ietf.org>, Simple WG <simple@ietf.org>
Subject: Re: [Simple] WGLC Comments on draft-ietf-sip-xcapevent-01
X-BeenThere: simple@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SIP for Instant Messaging and Presence Leveraging Extensions <simple.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/simple>, <mailto:simple-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/pipermail/simple>
List-Post: <mailto:simple@ietf.org>
List-Help: <mailto:simple-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/simple>, <mailto:simple-request@ietf.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: simple-bounces@ietf.org
Errors-To: simple-bounces@ietf.org

On Apr 3, 2008, at 7:28 AM, Jari Urpalainen wrote:

[...]

>>>
>>>>
>>>>
>>>> Paragraph 2: (substantive)
>>>>
>>>> You cannot safely use non-sequential CSeq to detect missing  
>>>> NOTIFY requests. For example, if the NOTIFY request is challenged  
>>>> by an intervening proxy, the subscriber will see non-sequential  
>>>> CSeq values. It may be unusual for NOTIFY to get challenged, but  
>>>> unless we forbid it, then we cannot depend on CSeq for this  
>>>> purpose.
>>> ok, didn't think about that at all.
>>
>> This one needs some thought, then. There are actually a lot more  
>> causes than just digest challenges that may cause the client to see  
>> non-sequential CSeqs. If detection of lost notifies is critical, we  
>> need another solution (either to detect lost notifies or to remove  
>> the need to do so.)
> now I've managed to put this "utter crap" myself :-), sorry, i.e.  
> unordering doesn't happen when the notifier acts _properly_, so it's  
> better to move that text altogether.

The text was more about missing NOTIFY requests than it was out-of- 
order NOTIFYs (CSeq will actually catch the out-of-order case). Are  
you saying that it is okay to not be able to detect missing NOTIFYs,  
even in patch mode? Note that missing and out-of-order notifies can  
(rarely, we hope)  happen due to intervening devices even if the  
notifier is perfectly well behaved.

>
>>
>>>> Section 4.10 (substantive)
>>>>
>>>> It's not clear to me how this interacts with the "aggregation"  
>>>> mechanism. In particular, if the notifier has more than one  
>>>> change in the 5 second window, but the subscriber did not allow  
>>>> aggregation, how is it handled?
>>> yep this is indeed _difficult_. Easy to write (one sentence only),  
>>> but really, really hard to implement properly ;-). First off  
>>> there's a SHOULD directive fortunately... I'm not 100 % sure if  
>>> you mean that xcap-patching is also disabled. So there's not a big  
>>> difference in this context whether you have aggregation or xcap- 
>>> patching modes, since in the xcap-patching mode you will see  
>>> changes e.g. from "a" to "b" to "c" with all corresponding Etags  
>>> while in the aggregate mode you'll see e.g. only changes from "a"  
>>> to "c" in the notification body without the intermediate state.  
>>> Certainly aggregation body is smaller but it fails to show the  
>>> versioning history and the diff formats differ, but the end result  
>>> will be the same certainly, i.e. "c". So _if_ you obey the timer,  
>>> you wait for it to expire and then send the result in both cases  
>>> (and of course during this timer interval you wait for any changes  
>>> in these resources, and do something relevant, e.g. store internal  
>>> object states).  If there's not any patching modes applied, then  
>>> you should wait for the timer to expire and send appropriate  
>>> actions, i.e. document(s) has either been created, modified or  
>>> deleted.
>>
>> I'm not sure I understand what you mean on the last two sentences-- 
>> can you give an example?
> btw. just noted that a rate limit was per a _user_ what would that  
> mean ? so should be per _subscription_.
>
> let's say you'll notify a initial document at some time x. then  
> comes two changes 1 & 2 for the same document within 2 seconds  
> (ETags are those timestamps):
> NOTIFY  1  --  x change 1    --  x+1s.
> change 2    --  x+2s.
> NOTIFY 2  -- x+5s.
>
> so if those two changes are reported (NOTIFY 2) _without any  
> patching_ you'll report the document uri reference with Etags at  
> time x+5s due to this 5s rate limitation:
> <xcap-diff  xcap-root="http://xcap.example.com/root/">
>  <document new-etag="x+2s"
>            sel="resource-lists/users/sip:joe@example.com/coworkers"
>            previous-etag="x"/>
> </xcap-diff>
>
> with xcap-patching you could have:
>
> <xcap-diff  xcap-root="http://xcap.example.com/root/">
>  <document new-etag="x+1s"
>            sel="resource-lists/users/sip:joe@example.com/coworkers"
>            previous-etag="x">
>      <add sel="*"><foo/></add>
> </document>
> <document new-etag="x+2s"
>            sel="resource-lists/users/sip:joe@example.com/coworkers"
>            previous-etag="x+1s">
>      <add sel="*"><bar/></add>
> </document>
> </xcap-diff>'

Ah, I see you are effectively listing both change events in a single  
xcap-diff document, but still as separate events. That makes sense,  
but it was not obvious to me from the text that you could do this. I  
don't recall if the data format doc addressed it or not. It would  
definitely help to include examples for each mode of operation.

>
>
> while with the "aggregate" mode:
>
> <xcap-diff  xcap-root="http://xcap.example.com/root/">
>  <document new-etag="x+2s"
>            sel="resource-lists/users/sip:joe@example.com/coworkers"
>            previous-etag="x">
>      <add sel="*"><foo/><bar/></add>
> </document>
> </xcap-diff>
>
> So the first one shows the simplest case, and then the more complex  
> xcap-patching and lastly aggregate, does this help ? I've the  
> intention to add something similar to an appendix regardless of the  
> pain...
>
> So as can be seen from the example "aggregate" and "xcap-patching"  
> both aggregate patches, but the "real" aggregate can do much clever  
> decisions with the added complexity.
>
> And i've made it now explicit that the notifier MAY respond with all  
> of these 3 ways if aggregate is requested. If notifier requests xcap- 
> patching "aggregate" MUST NOT be used, and with "no-patching"  
> naturally only the simplest mode is allowed.
>
>>
>>> IIRC, in partial PIDF where we use the exact same patchings  
>>> there's not a single line about this since this timer is inherited  
>>> from the base PIDF package. In summary, you just don't have to do  
>>> anything mysterious with timers except wait for a certain period  
>>> of time. In practice, it happens to be quite a challenging task  
>>> (but these specs usually _ignore_ the implementation PITA ;-))
>>
>> It's still not clear to me if this is just a "hard implementation"  
>> problem or if it is really a conflict in normative requirements.  
>> Coding aside, what do you expect the most commen behavior to be if  
>> multiple changes occur inside the 5 second window, but the client  
>> has not allowed aggregation? (The example requested above might  
>> help me understand this.)
>>
> imo it is not a conflict, just a PITA in implementations, though  
> sometimes a very nice optimization.

I _think_ I am okay with this, pending seeing the new text.

[...]

Thanks!

Ben.

_______________________________________________
Simple mailing list
Simple@ietf.org
https://www.ietf.org/mailman/listinfo/simple