Re: [Stox] Review of: draft-ietf-stox-presence-06

Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com> Tue, 21 January 2014 15:57 UTC

Return-Path: <gonzalo.camarillo@ericsson.com>
X-Original-To: stox@ietfa.amsl.com
Delivered-To: stox@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 63D051A03D9; Tue, 21 Jan 2014 07:57:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.24
X-Spam-Level:
X-Spam-Status: No, score=-101.24 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_SE=0.35, HOST_MISMATCH_NET=0.311, SPF_PASS=-0.001, USER_IN_WHITELIST=-100] 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 rsKzrrK1sKFF; Tue, 21 Jan 2014 07:57:20 -0800 (PST)
Received: from sessmg20.mgmt.ericsson.se (sessmg20.ericsson.net [193.180.251.50]) by ietfa.amsl.com (Postfix) with ESMTP id 438711A0393; Tue, 21 Jan 2014 07:57:17 -0800 (PST)
X-AuditID: c1b4fb32-b7f4c8e0000012f5-2c-52de98dd975e
Received: from ESESSHC008.ericsson.se (Unknown_Domain [153.88.253.124]) by sessmg20.mgmt.ericsson.se (Symantec Mail Security) with SMTP id 05.C4.04853.DD89ED25; Tue, 21 Jan 2014 16:57:17 +0100 (CET)
Received: from [147.214.22.241] (153.88.183.153) by smtp.internal.ericsson.com (153.88.183.44) with Microsoft SMTP Server id 14.2.347.0; Tue, 21 Jan 2014 16:57:16 +0100
Message-ID: <52DE98DC.90900@ericsson.com>
Date: Tue, 21 Jan 2014 16:57:16 +0100
From: Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0
MIME-Version: 1.0
To: dcrocker@bbiw.net, Peter Saint-Andre <stpeter@stpeter.im>, Apps Discuss <apps-discuss@ietf.org>, draft-ietf-stox-presence.all@tools.ietf.org, stox@ietf.org
References: <52A94AF6.8090702@dcrocker.net> <52AB8E69.7070906@stpeter.im> <52B07028.4020609@dcrocker.net>
In-Reply-To: <52B07028.4020609@dcrocker.net>
X-Enigmail-Version: 1.6
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrHLMWRmVeSWpSXmKPExsUyM+Jvje7dGfeCDLa0SlmsfrmCzeL3pw9s FvN6rzJbzPgzkdni/44mVotje/qZHdg8Lu08yeaxZMlPJo+5e14we3y5/JktgCWKyyYlNSez LLVI3y6BK6Nv9wTGggmJFfe7lzI2MO717mLk5JAQMJH4s3oKI4QtJnHh3nq2LkYuDiGBE4wS 6yd/YoJw1jBKLLuyG6iKg4NXQFNi71IDkAYWAVWJg33d7CA2m4CFxJZb91lAbFGBKIkD83aA DeUVEJQ4OfMJC8gcEYGVjBLvV15mB5nDLCAhcWRlEEiNsIC1xLpF69hAbCGBTImlK0+DreIU 0JG4sK0KxJQQEJfoaQSrZhbQk5hytYURwpaX2P52DjNEp7bE8mctLBMYhWYhWTwLScssJC0L GJlXMUoWpxYX56YbGejlpueW6KUWZSYXF+fn6RWnbmIExsHBLb+NdjCe3GN/iFGag0VJnPc6 a02QkEB6YklqdmpqQWpRfFFpTmrxIUYmDk6pBsY9LDPVOf9+t/7etnfT/x3Cqcrn3Zyt94ft 3Fz7teR9Q7A398/7tZP/q/s84NW/J9vNM+3bRIvDLJOKrpgZLYzqZWe503nyqtGfxfPlYriv tJvfjebZw95x9ohiMItlrcyt7e75Zl+D71r2vru+Z2Oq6PmC06aqL20zYubEXvfboH59S9SC txOUWIozEg21mIuKEwG1cXvPUQIAAA==
Cc: iesg <iesg@ietf.org>
Subject: Re: [Stox] Review of: draft-ietf-stox-presence-06
X-BeenThere: stox@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: SIP-TO-XMPP Working Group discussion list <stox.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/stox>, <mailto:stox-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/stox/>
List-Post: <mailto:stox@ietf.org>
List-Help: <mailto:stox-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/stox>, <mailto:stox-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Jan 2014 15:57:22 -0000

Hi Peter,

when do you think you will get around to revising the draft per Dave's
comments?

Thanks for the review, Dave.

Cheers,

Gonzalo

On 17/12/2013 4:39 PM, Dave Crocker wrote:
> Only responded where it seems needed or useful...
> 
> 
> 
> On 12/13/2013 2:47 PM, Peter Saint-Andre wrote:
> 
>>>     1.  When citing the earlier efforts, there should be something to
>>> explain why the current work is expected to be more successful.
>>
>> Not "expected", but "is". :-) AFAIK there are no implementations of the
> 
> I'd missed that this is based on deployed work.  That is a point that
> always makes writing text justifying/motivating the document quite easy:
>  just say that.
> 
> 
>> approach taken by RFC 3922 and draft-ietf-simple-cpim-mapping (i.e.,
>> mapping to the abstract semantics of RFC 3860), whereas there are
>> multiple implementations of the approach described here (i.e., direct
>> mapping between SIP and XMPP).
>>
>>> That is,
>>> what makes the current approach notably tractable for implementation and
>>> deployment?
>>
>> Do you think that explaining why would improve the document? IMHO this
> 
> I'm a fan of context and systems views, because I think it orients the
> reader usefully, so the simple answer is yes.
> 
> Whenever there is a lengthy history with alternative efforts, readers
> can benefit from some context that distinguishes the current work.  Not
> in qualitative terms like better or worse, but in technical and
> operational terms.
> 
> Hence I think language like what's already in the document, that
> distinguishes the 'architectural' difference from earlier work, but also
> one that says that the current work is based on deployed industry choice.
> 
> 
>> verges into developer psychology (I've got this SIP thing here and this
> 
> 
>>>     5.  When showing protocol examples, usually only one side of the
>>> sequence is shown.  For gatewaying that does interesting transforms,
>>> such as this one, an example should show both the before and after
>>> versions.  That is, the 'native' protocol unit that was created and then
>>> the one that results from the translation.
>>
>> I thought we'd already done that. For instance, Example 2 is the SIP
>> transformation of the XMPP stanza shown in Example 1.
> 
> Either the document didn't do it as diligently as I'm suggesting, or I
> didn't understand this aspect of the document, which might be remedied
> by better labeling.
> 
> For any example that is done in a gateway and is a translation between
> sip presence and xmpp presence, something simple and rigorous, such as
> "before" and "after" labels to source and transformed versions, ought to
> remedy this.
> 
> 
> 
> 
>>> This probably raises a larger issue:  How much expertise is expected of
>>> someone who is implementing this or otherwise reading for deep
>>> comprehension?  In the extreme, they will need to have serious expertise
>>> on both protocol sets.  The other extreme would be a cookbook inside
>>> this document, with no outside knowledge required.  The document needs
>>> to specify the nature and extent of the expertise required.  (In fact,
>>> the document seems pretty clean, in terms of explaining things, so I
>>> suspect that 'fair' knowledge of one suite will suffice.  But the author
>>> and wg beliefs about the requirement should be made explicit.)
>>
>> See above. Perhaps not expert level, but significant familiarity with
>> one "side" or the other.
> 
> Just to emphasize, whatever the knowledge-level of reader that's
> required, the document should make that explicit.
> 
> I'm always a fan of making documents more accessible to wider
> readership, but it's not practical to make all documents fully
> accessible, especially within a suite of docs that build on each other.
> 
> 
>>>>     |  SUBSCRIBE sip:romeo@example.net SIP/2.0
>>>
>>> Later text (section 4.1) equates the label pres: with sip: and sips:.
>>> Why choose sip: here?
>>
>> In practice, we don't see 'pres' URIs in the wild.
> 
> Hmmm.  While 'statistics' of use is a relatively fragile basis for
> putting things into a spec -- since a doc can last for decades and
> statistics can change -- it might be worth mentioning as the basis for
> the choice in the doc.  I suppose that's in the realm of giving the
> reader a bit of operational insight.  But definitely not an important
> point.
> 
> 
> 
>>>>     Example 3: SIP accepts subscription request:
>>>>
>>>>     |  SIP/2.0 200 OK
>>>>     |  Via: SIP/2.0/TCP s2x.example.net;branch=z9hG4bKna998sk
>>>>     |  From: <sip:romeo@example.net>;tag=ffd2
>>>>     |  To: <sip:juliet@example.com>;tag=j89d
>>>>     |  Call-ID: 5BCF940D-793D-43F8-8972-218F7F4EAA8C
>>>>     |  CSeq: 234 SUBSCRIBE
>>>>     |  Contact: <sip:simple.example.net;transport=tcp>
>>>>     |  Expires: 3600
>>>>     |  Content-Length: 0
>>>
>>> Hmmm.  This appears to be the original SIP acceptance, but with no
>>> separate display of it's being translated into XMPP.
>>
>> That is Example 5.
> 
> Oh. It's worth making that explicit.  (My tendency to get confused
> reading specs is a useful canary in the tunnel, for what needs
> clarifying for other readers, IMO...)
> 
> 
> 
>>>>     Example 10: SIP user subscribes to XMPP contact:
>>>>
>>>>     |  SUBSCRIBE sip:juliet@example.com SIP/2.0
>>>>     |  Via: SIP/2.0/TCP s2x.example.net;branch=z9hG4bKna998sk
>>>>     |  From: <sip:romeo@example.net>;tag=xfg9
>>>>     |  Call-ID: AA5A8BE5-CBB7-42B9-8181-6230012B1E11
>>>>     |  Event: presence
>>>>     |  Max-Forwards: 70
>>>>     |  CSeq: 263 SUBSCRIBE
>>>>     |  Contact: <sip:simple.example.net;transport=tcp>
>>>>     |  Accept: application/pidf+xml
>>>>     |  Content-Length: 0
>>>>
>>>>     Notice that the "Expires" header was not included in the SUBSCRIBE
>>>>     request; this means that the default value of 3600 (i.e., 3600
>>>>     seconds = 1 hour) applies.
>>>>
>>>>     Upon receiving the SUBSCRIBE, the SIP server needs to determine the
>>>>     identity of the domain portion of the Request-URI or To header,
>>>> which
>>>>     it does by following the procedures discussed in
>>>>     [I-D.ietf-stox-core].  Here we assume that the SIP server has
>>>>     determined that the domain is serviced by an XMPP server, that it
>>>
>>>
>>> This seems to mean that a regular SIP server needs to be familiar with
>>> technical details in a gatewaying specification??
>>
>> Well, it is (IMHO) really the responsibility of a core "server" to
>> implement this kind of routing functionality, but the "gateway" might
>> make the determination that the remote domain uses SIP or XMPP and if
>> SIP then pass it on to the SIP "server" and if not handle delivery to
> 
> I think this matches the usual model:  an unchanged server does routing
> as if all participants were part of its 'native' protocol service.  A
> gateway translates and tries to hide any differences between two services.
> 
> The current doc language seems confusing on this point, when it talks
> about a (native) server choosing a server that is part of the other
> service.
> 
> This is a sufficiently basic point to probably warrant going into -core,
> rather than here.  But the language here probably therefore ought to
> just be in terms of originators and recipients (or whatever generic
> terminology works for presence) with an initial, simple note that
> knowledge of the need for translation only resides in the gateway(s).
> 
> But I'm not sure I mentioned another point that confused me from -core:
>  It shows the two types of gateways as talking to each other, but I
> suspect that's not reality.  FOr example, when doing SIP-XMPP, I suspect
> the actual flow is:
> 
>    SIP User
>    SIP Server
>    SIP-XMPP Server
>    XMPP Server
>    XMPP User
> 
> whereas the implication from the -core diagram and some of the language
> in the spec(s) is:
> 
>    SIP User
>    SIP Server
>    SIP-XMPP Server
>    XMPP-SIP Server
>    XMPP Server
>    XMPP Use
> 
> If it really is the later sequence, I don't understand why.
> 
> 
> 
>> the remote XMPP domain. To some extent it's a matter of implementation
>> where exactly the code lives to complete these functions, which is why
>> draft-ietf-stox-core talks about a "SIP service" consisting of both a
>> SIP "server" and a "gateway". In XMPP this translation function is often
>> handled by what we call a "connection manager", but that depends a bit
>> on the internal architecture of the overall "service".
> 
> This point highlights the essential difference between a "networking
> architecture" and an "implementation architecture".
> 
> Mapping from the first to the second often permits very wide variations.
>  The former concerns distinct functionality that /can/ be distributed,
> where the latter makes specific choices for what /is/ distributed.
> 
> 
> 
> 
>>>>     As described in [RFC3856], presence information about an entity is
>>>>     communicated by means of a SIP NOTIFY event sent from a SIP user
>>>>     agent to an intended recipient who is most generally referenced
>>>> by an
>>>>     Presence URI of the form <pres:user@domain> but who might be
>>>>     referenced by a SIP or SIPS URI of the form <sip:user@domain> or
>>>>     <sips:user@domain>.  Here again we introduce the simplifying
>>>>     assumption that the user agent is controlled by a human user.
>>>
>>> I guess I'm not understanding how the nature of what is controlling the
>>> agent affects anything in this document.  Might be worth explaining
>>> that.
>>
>> A "presentity" doesn't have to be a human -- it could be a bot, a
>> device, or some other automated entity. People related more to human
>> users.
> 
> Sure, but when reading the doc, it felt as if the reference to this
> issue was relevant to functionality.  I'd expect the issue to be raised
> once in an Intro and then avoided later by use of a neutral term like
> user or presentity or whatever.
> 
> 
> 
>>>>     Note the following regarding these mappings:
>>>>
>>>>     1.  Only a presence stanza that lacks a 'type' attribute or whose
>>>
>>>     presence -> XMPP presence
>>
>> Stanzas are an XMPP artifact. But yes.
> 
> Choosing the level of semantic redundancy in the language is always a
> balancing act.  In a gatewaying document that will be reader by folks
> likely to be expert in only one half of the necessary technologies, I'd
> be inclined towards more redundancy, to reduce likelihood of
> misunderstanding...
> 
> 
> 
>>>>         'type' attribute has a value of "unavailable" SHOULD be
>>>> mapped by
>>>>         an XMPP-SIMPLE gateway to a SIP NOTIFY request, since those are
>>>>         the only presence stanzas that represent notifications.
>>>>     2.  The PIDF schema defines the tuple 'id' attribute as having a
>>>>         datatype of "xs:ID"; because this datatype is more restrictive
>>>>         than the "xs:string" datatype for XMPP resourceparts (in
>>>>         particular, a number is not allowed as the first character
>>>> of an
>>>>         ID), it is RECOMMENDED to prepend the resourcepart with
>>>> "ID-" or
>>>>         some other alphabetic string when mapping from XMPP to SIP.
>>>>     3.  This mapping is OPTIONAL.
>>>
>>> What does that mean?  This sort of mapping is usually the essence of
>>> gatewaying semantics.  How can interoperability tolerate it's being
>>> optional?
>>
>> In XMPP, the 'id' attribute is not usually included in presence stanzas,
>> and nothing is lost if it's ignored. But I'll give it a bit more thought.
>>
>>>> 4.3.  SIP to XMPP
>>>>
>>>>     When Romeo changes his presence, his SIP user agent generates a SIP
>>>
>>> Romeo is doing SIP?  And Juliet does XMPP?
>>
>> You noticed, eh? "Juliet does Jabber" makes it easy to remember, at
>> least for me.
> 
> So why isn't the other side Steve or Sid or...
> 
> Nevermind...
> 
> 
> 
>>> So, SIP is more macho than XMPP???
>>
>> Have you configured a SIP client lately? ;-)
>>
>> But seriously, the Romeo and Juliet scenarios enable me to use a male
> 
> The word seriously is entirely out of scope for this segment.  Or at
> least, it certainly was when I started it...
> 
> d/
>