Re: [core] Subscribe/Notify for CoAP

Paul Duffy <paduffy@cisco.com> Thu, 03 June 2010 00:10 UTC

Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C5B1F28C10E for <core@core3.amsl.com>; Wed, 2 Jun 2010 17:10:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.698
X-Spam-Level:
X-Spam-Status: No, score=-5.698 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HTML_MESSAGE=0.001, MANGLED_TOOL=2.3, RCVD_IN_DNSWL_HI=-8]
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 zVO3RL+fWD8T for <core@core3.amsl.com>; Wed, 2 Jun 2010 17:10:37 -0700 (PDT)
Received: from rtp-iport-2.cisco.com (rtp-iport-2.cisco.com [64.102.122.149]) by core3.amsl.com (Postfix) with ESMTP id 138613A6847 for <core@ietf.org>; Wed, 2 Jun 2010 17:10:34 -0700 (PDT)
Authentication-Results: rtp-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAD+PBkxAZnwM/2dsb2JhbACeJXGmUIFyCwGYFwKCcYIjBA
X-IronPort-AV: E=Sophos; i="4.53,349,1272844800"; d="scan'208,217"; a="117504608"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-2.cisco.com with ESMTP; 03 Jun 2010 00:10:20 +0000
Received: from [161.44.65.108] ([161.44.65.108]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o530AK9s017300 for <core@ietf.org>; Thu, 3 Jun 2010 00:10:20 GMT
Message-ID: <4C06F2EC.7010508@cisco.com>
Date: Wed, 02 Jun 2010 20:10:20 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com> <OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com> <0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com> <6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de> <727919DA-EB90-4772-A9EB-B516333ACE43@gmail.com>
In-Reply-To: <727919DA-EB90-4772-A9EB-B516333ACE43@gmail.com>
Content-Type: multipart/alternative; boundary="------------080403060605030100030109"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 00:10:45 -0000

+1


On 6/2/2010 3:12 AM, Vlad Trifa wrote:
> Hi, sorry to join the discussion only now.
>
> I think we should avoid explicitly defining a messaging/eventing 
> construction in coap which would be an "add-on" on top of http. HTTP 
> doesn't define any by design, but doesn't mean we can't use/create a 
> pattern that implements this behavior, and we just just propose the 
> pattern, not turn it into a design. It'd be more useful to stay as 
> close as possible to the original http/rest (unless the mapping to 
> http/web is more of an "nice-to-have"option that the motivation of 
> doing coap), which means it's great if we can show show how to 
> implement messaging on top of coap, but avoid inserting additional 
> verbs, etc that would not be directly supported in http (thus making 
> the mapping between coap-http more complex).
>
> We just wrote a paper on Web-based restful messaging for embedded 
> devices which will be presented next month at ICWE, and as it's highly 
> relevant to this notification discussion thread, I thought I'd share 
> it here.
>
>
>
>
> Please let me know your thoughts/comments/questions,
>
> thx!
>
> Vlad
>
>
>
> On Jun 2, 2010, at 9:21 AM, Guido Moritz wrote:
>
>> Dear WG,
>>
>> I agree to focus on the ToDos and not on the maybes. But a comprehensive
>> eventing concept includes more than only the method/message type. It
>> requires lease concepts, filtering mechanisms ... It would also require
>> mechanisms to assign incoming NOTIFYs to a specific SUBSCRIBTION if 
>> one and
>> the same client has SUBSCRIBED to more than one event of the same 
>> device. Is
>> this out of scope of COAP or should it be considered already at this 
>> point
>> to have a straight forward and clean protocol design? Hence it might be
>> reasonable to have SUBSCRIBE and NOTIFY as single methods and 
>> grouping every
>> sub functionality as type below the method?
>>
>> However, as HTTP has no native mechanism to feature eventing, for 
>> eventing
>> it would be always required to have a caching intermediate entity 
>> (proxy,
>> gateway, what ever). This one can provide which interface ever to the
>> external networks (HTPP, polling, WebHooks, XMPP, WS-Eventing, ...). 
>> So this
>> is implementation specific and might not be considered in COAP at all.
>>
>> Guido
>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag 
>>> von
>> Zach
>>> Shelby
>>> Gesendet: Freitag, 28. Mai 2010 14:50
>>> An: Adriano Pezzuto
>>> Cc: core
>>> Betreff: Re: [core] Subscribe/Notify for CoAP
>>>
>>> Hi,
>>>
>>> This is a really good conversation. One thing we need to do is remember
>> what
>>> our minimum requirements are for subscribe/notify and not try to solve
>>> something more than we should. From what I know it is sufficient to be
>> able to
>>> receive notifications when a URI changes or periodically. You might
>> consider
>>> new URIs under this URI path to be changes to a URI though...
>>>
>>> On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>>
>>>> Hello,
>>>> with this flavor, the SUBSCRIBE may be replaced by a simple POST. 
>>>> So no
>>> needs to have an explicit SUBSCRIBE method.
>>>
>>> This is what coap-01 assumes.
>>>
>>>> If we want support a more oriented peer-to-peer transaction on 
>>>> CoAP, it
>>> looks to me both SUB and NOTIFY should be treated as messages.
>>>
>>> The Request/Response model can be used peer-to-peer, and in CoAP you 
>>> can
>> even
>>> use a Request asynchronously. Additionally, we want a native RESTful
>>> subscribe/notify technique, that is, we want to subscribe to 
>>> resources and
>> be
>>> susequently notified about those resources when they change.
>>>
>>> In that sense, you can think of a subscription as a request to receive
>>> asynchronous notifications about a resource (about a URI). This can be
>>> achieved by:
>>>
>>> 1.  as a SUBSCRIBE Request on the URI with some option indicating the
>> lifetime
>>> as in coap-01,
>>> 2.  as a Subcsribe message (no methods) on the URI with some option,
>>> 3.  or as a POST Request on the URI with options indicating that 
>>> this is
>>> actually a subscription and the lifetime.  This bends the meaning of 
>>> POST
>>> quite a bit and might be prone to mistakes?
>>>
>>> The asynchronous response is a harder one. Can we bend the meaning of a
>>> Request for making asynchronous notifications? Also a notification
>> includes a
>>> URI about a resource on the requestor, which is inverse from normal
>> Requests
>>> in REST. So the options here are:
>>>
>>> 1. as a Notify message about a URI (no methods) as in coap-01,
>>> 2. as a NOTIFY Request about a URI as was in coap-00,
>>> 3. hmmm... reusing CRUD methods really doesn't work for this one at 
>>> all...
>>>
>>> I wonder what the HTTP designers would have done if this would have 
>>> been a
>>> requirement back then? Maybe we should ask them...
>>>
>>> Zach
>>>
>>>>
>>>> Adriano
>>>>
>>>> From: matthieu.vial@fr.non.schneider-electric.com
>>> [mailto:matthieu.vial@fr.non.schneider-electric.com]
>>>> Sent: venerdì 28 maggio 2010 13.52
>>>> To: Adriano Pezzuto (apezzuto)
>>>> Cc: core; core-bounces@ietf.org; robert.cragie@gridmerge.com
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
>>> methods!
>>>>
>>>> SUBSCRIBE can be just an asynchronous GET on update then I think it 
>>>> is a
>>> method and NOTIFY is an asynchronous response so a message.
>>>> But if we want to have selective notifications when a resource is
>> created,
>>> updated or deleted then I think you're right NOTIFY and SUBSCRIBE are
>>> messages.
>>>>
>>>> Does that make sense ?
>>>>
>>>> Matthieu
>>>>
>>>> <image001.gif>"Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
>>>>
>>>>
>>>>
>>>>
>>>> "Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
>>>> Envoyé par : core-bounces@ietf.org
>>>> 28/05/2010 12:50
>>>>
>>>> <image003.png>
>>>> A
>>>> <image004.png>
>>>> <robert.cragie@gridmerge.com>
>>>> <image003.png>
>>>> cc
>>>> <image004.png>
>>>> core <core@ietf.org>
>>>> <image003.png>
>>>> Objet
>>>> <image004.png>
>>>> Re: [core] Subscribe/Notify for CoAP
>>>> <image004.png>
>>>> <image004.png>
>>>>
>>>> Hi Roberto,
>>>> I understand your point and personally agree on M2M is quite different
>> from
>>> web page model. On the architectural RESTful style, the method 
>>> information
>>> tells the server what to do with data kept in the URI information.
>>>>
>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
>>> methods!
>>>>
>>>> Adriano
>>>>
>>>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
>>>> Sent: venerdì 28 maggio 2010 11.53
>>>> To: Adriano Pezzuto (apezzuto)
>>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>> I think the point here is that there are two levels we are 
>>>> considering.
>>>>
>>>> At the lowest (foundation) level, there are the transaction 
>>>> messages as
>>> described below. This provides a flexible mechanism for the application
>> with
>>> regard to synchronicity and threading. This is important for the 
>>> types of
>>> devices CoAP is being aimed at.
>>>>
>>>> Above that, the methods can be used according to the architectural
>> style. So
>>> in this case, it is RESTful (COnstrained Restful Environments), 
>>> which will
>>> naturally limit the number of methods and how transactions occur.
>>>>
>>>> The actual architecture using a combination of the methods and 
>>>> messages
>> also
>>> depends on what is required at the application layer. Consider a 
>>> typical
>>> client which wants to subscribe to a resource. That client controls the
>> feed
>>> of data but needs a component which is capable of handling (possibly
>>> buffering) the data it receives through notifications. Is this a 
>>> separate
>>> server? Or would we want to consider it part of an enhanced client 
>>> model
>> which
>>> is able to process feeds of data? These are the sort of models which 
>>> have
>> led
>>> to the myriad of solutions (GENA, Webhooks, long polling, pubsubhubbub,
>> RESTMS
>>> etc.) based around HTTP which are all essentially ingenious ways of
>> getting
>>> around the limitations imposed by HTTP and how it is processed for
>> anything
>>> which deviates from the classic web page access model.
>>>>
>>>> I think the aim of CoAP should be clean from the word go with 
>>>> regard to
>>> supporting these more peer-to-peer transactions, where the client can
>> exist on
>>> either entity and both entities can feed data to each other; typical in
>> M2M
>>> applications.
>>>>
>>>> Robert
>>>>
>>>> Robert Cragie (Pacific Gas & Electric)
>>>>
>>>> Gridmerge Ltd.
>>>> 89 Greenfield Crescent,
>>>> Wakefield, WF4 4WA, UK
>>>> +44 1924 910888
>>>> +1 415 513 0064
>>>> http://www.gridmerge.com
>>>>
>>>> On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>>> Hi Robert,
>>>>
>>>> in my personal opinion, the option 1a) brings some sort of 
>>>> ambiguity to
>> CoAP
>>> specs.
>>>>
>>>> My be my understatement of new CoAP specs is not so deep, but now we
>> have 5
>>> methods and 3 message types: request, response and notify. Which 
>>> methods
>> are
>>> allowed with which messages types?
>>>> I suppose you have to use PUT/POST method with notify message for 
>>>> asynch
>>> data notification. How to make a subscribe? I suppose you would use a
>>> SUBSCRIBE method with request/response message or SUBSCRIBE with notify
>>> message? Also what about POST/DELETE methods in a notify message? 
>>> They not
>>> make any sense..
>>>>
>>>> I think the choice is between: option 1) -> only CRUD methods and 
>>>> option
>> 1b)
>>> -> CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits of both
>> solutions.
>>>>
>>>> Adriano
>>>>
>>>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
>>>> Sent: mercoledì 26 maggio 2010 20.09
>>>> To: Adriano Pezzuto (apezzuto)
>>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>> Hi Adrian,
>>>>
>>>> I would also prefer to keep the protocol in CoAP asynchronous. You can
>>> always map an asynchronous protocol to a synchronous one but, as we 
>>> see in
>>> HTTP, it always ends up as a kludge to do it the other way round. The
>> efforts
>>> which have been gone to to make HTTP quasi-asynchronous via all the
>> schemes
>>> mentioned below and many more besides (all non-interoperable of 
>>> course) is
>>> testament to how important this is for M2M communication.
>>>>
>>>> So, back to Zach's list, I favor 1a) for the following reasons:
>>>>
>>>> Foundation level of messages:
>>>>
>>>> 1. request/response can be asynchronous or synchronous messages (as
>> there is
>>> a transaction ID in there)
>>>> 2. notify is an asynchronous message
>>>> Derived methods:
>>>>
>>>> I think it makes sense to add a pub/sub model as a useful mechanism 
>>>> for
>> M2M.
>>>>
>>>> So, looking at it the other way round: It will be entirely possible to
>>> translate whatever is currently built on HTTP to CoAP based on the 
>>> above,
>> with
>>> all its restrictions regarding synchronous and client/server 
>>> transactions.
>>> What may be harder is to translate directly is a CoAP-based 
>>> application to
>>> HTTP. So I guess the question is: Do we want to be hamstrung to
>> synchronous
>>> client/server transactions as dictated by HTTP and provide a direct
>> mapping to
>>> HTTP, then have to come up with similar kludges for asynchronous
>> peer-to-peer
>>> transactions as has been done in numerous ways for HTTP, or do we 
>>> want to
>>> define the protocol cleanly to start with and accept that some sort of
>>> transaction relaying/conversion would have to take place at a mapping
>> node?
>>>>
>>>> Robert
>>>> Robert Cragie (Pacific Gas & Electric)
>>>>
>>>> Gridmerge Ltd.
>>>> 89 Greenfield Crescent,
>>>> Wakefield, WF4 4WA, UK
>>>> +44 1924 910888
>>>> +1 415 513 0064
>>>> http://www.gridmerge.com
>>>>
>>>> On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
>>>> Hi,
>>>> it looks to me that CoAP should use an explicit sub/notify mechanism
>> since
>>> this is the core of the machine-to-machine interaction model.
>>>> HTTP suffers of this lack and we have seen a plethora of solutions to
>> give
>>> an asynch taste to it. Webhooks and websockets are only the lasts of 
>>> the
>> list.
>>>> As someone has already pointed out on this list, it is theoretically
>>> possible to describe sub/notify using only CRUD methods but it looks a
>> little
>>> bit tricky and verbose.
>>>>
>>>> Now we have a chance to build from scratch a new protocol with and I
>> think
>>> using explicit sub/notify methods with a clear and well defined 
>>> semantic
>> is
>>> the best option. It is easily understanding from every developer and 
>>> will
>>> prevent to build other fanny solutions on top of the CoAP. HTTP does 
>>> not
>> have
>>> this well defined semantic and (for hundreds of other reasons also) 
>>> it is
>> not
>>> used as wide protocol for machine-to-machine communication.
>>>>
>>>> CoAP - as binary protocol - and with an explicit asynch model has a
>> chance
>>> to be a really wide protocol for M2M communication not only for
>> constrained
>>> environments.
>>>>
>>>> my 2 cents
>>>>
>>>> - adriano
>>>>
>>>> -----Original Message-----
>>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On 
>>>> Behalf Of
>> Paul
>>> Duffy (paduffy)
>>>> Sent: mercoledì 26 maggio 2010 0.47
>>>> To: Zach Shelby
>>>> Cc: core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>> On 5/25/2010 6:41 PM, Zach Shelby wrote:
>>>>
>>>> Hi,
>>>>
>>>> On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
>>>>
>>>>
>>>> Hi folks
>>>>
>>>> It occurs to me that CoRE should be keeping a close eye on ZigBee 
>>>> SE2.0
>>> work, so that it is as easy as possible for ZigBee SE to use CoRE when
>> ready.
>>> That suggests to me that we should align with their subscribe/notify
>> process.
>>>>
>>>>
>>>> I am not sure I understand that. I mean, ZigBee SE2.0 is defining an
>>> application specific subscribe/notify mechanism for that purpose so far
>> for
>>> HTTP. This uses standard HTTP methods and some custom payload and REST
>>> interfaces. CoAP Req/Res is already totally compatible with SE2.0 in 
>>> that
>>> respect, so alignment is already OK there. Nothing stopping someone 
>>> from
>> using
>>> SE2.0 over CoAP.
>>>>
>>>> Specifying a native susbcription/notify into CoAP is another 
>>>> matter. We
>>> can't adopt a solution specific to one application as that won't 
>>> solve the
>>> problems of other applications nor general HTTP mapping at all 
>>> (probably
>> would
>>> make it worse). It seems that for the near future there will be a 
>>> bunch of
>>> HTTP push mechanisms in use without any clear standard appearing - 
>>> or am I
>>> wrong there?
>>>>
>>>>
>>>>
>>>>
>>>> If COAP extends HTTP semantics with new subscription methods, it will
>>>> not be possible to easily interchange HTTP/COAP, and translation
>>>> gateways will become more complex to implement.
>>>>
>>>>
>>>>
>>>> Zach
>>>>
>>>>
>>>> Regards - Charles
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On 
>>>> Behalf Of
>> Paul
>>> Duffy
>>>> Sent: 25 May 2010 03:48
>>>> To: Zach Shelby
>>>> Cc: core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>> Recommend something like #2, primarily to avoid introducing non HTTP
>>>> method semantics, simplifying HTTP/COAP translation.gateways, etc.
>>>>
>>>>
>>>> On 5/24/2010 11:49 AM, Zach Shelby wrote:
>>>>
>>>> (thread renamed)
>>>>
>>>> We have two different paths with regard to a subscribe/notify 
>>>> mechanism
>> for
>>> CoAP:
>>>>
>>>> 1. Use specific Subscription and Notify mechanisms for CoAP as HTTP
>> really
>>> does not include this concept.
>>>> 1a) Notify as a message and SUBSCRIBE as a method. This is currently
>> used in
>>> coap-01.
>>>> 1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but we
>> had a
>>> good list discussion about this leading to a. In practice it doesn't 
>>> make
>> a
>>> big difference if notification is a message or method.
>>>>
>>>> 2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.0
>>> proposal or GENA.
>>>>
>>>> So far we have focused on 1 in the WG, and every now and again 2 comes
>> up.
>>> At least I am not convinced that we need to suffer the drawbacks of 
>>> HTTP
>> here.
>>> Anyways 2 does not help our mapping to HTTP in reality very much as 
>>> there
>> is
>>> no standard way of doing this over HTTP. Thus a CoAP-HTTP proxy may 
>>> end up
>>> anyways translating between multiple HTTP frameworks depending on the
>>> application. So instead of doing a CoAP Notify/Subscribe to Webhooks
>> mapping,
>>> you will could end up having to do a CoAP Webhooks to HTTP GENA 
>>> mapping.
>>>>
>>>>
>>>>
>>>> I don't understand this last para. If CoAP sticks to the semantics of
>>>> the current HTTP methods, would this not offer a fairly 
>>>> straightforward
>>>> translation to/from HTTP?
>>>>
>>>>
>>>>
>>>> From what I have heard so far 1 still seems like a wise choice, 
>>>> although
>> I
>>> need to look at Webhooks more deeply. In reality many applications 
>>> specify
>>> their own way of doing a push interface using REST methods and specific
>>> payloads (ZigBee SE2.0 is such an example). That is just fine, and 
>>> might
>> be
>>> used instead of a specific CoAP notify/subscribe in that case. So 1
>> doesn't
>>> prevent the application using its own mechanism, it just provides a 
>>> native
>> way
>>> for doing push.
>>>>
>>>> What do people think?
>>>>
>>>> Zach
>>>>
>>>> On May 17, 2010, at 6:44 
>>>> PM,matthieu.vial@fr.non.schneider-electric.com
>>> wrote:
>>>>
>>>>
>>>>
>>>> Hi,
>>>>
>>>> My comments about the subscribe/notify mechanism of Zigbee IP.
>>>>
>>>> Pros:
>>>> - Derived from the webhooks concept
>>>> - If used by CORE it will be easier to map to HTTP because it uses 
>>>> only
>> CRUD
>>> verbs.
>>>> - The subscription message is extendable and could support advanced
>> options
>>> (delays, increment, ...)
>>>> - Only one listening port whatever the transport binding is.
>>>>
>>>> Cons:
>>>> - No interoperability without well known URIs and a well defined
>>> subscription message format (Not sure CoAP draft is the right place to
>> specify
>>> this).
>>>> - XML/EXI is too complex to be the required format for the default
>>> subscription/notification mechanism.
>>>> - The notification should not require a subsequent GET to retrieve the
>>> content.
>>>> - Subresource subscription is redundant.
>>>>
>>>> Hope this could help,
>>>> Matthieu
>>>>
>>>>
>>>> <graycol.gif>"Charles Palmer"<charles.palmer@onzo.com>
>>>>
>>>>
>>>>
>>>>
>>>> "Charles Palmer"<charles.palmer@onzo.com>
>>>> Envoyé par : core-bounces@ietf.org
>>>> 15/05/2010 14:06
>>>>
>>>> <ecblank.gif>
>>>> A
>>>> <ecblank.gif>
>>>> "core"<core@ietf.org>
>>>> <ecblank.gif>
>>>> cc
>>>> <ecblank.gif>
>>>> <ecblank.gif>
>>>> Objet
>>>> <ecblank.gif>
>>>> Re: [core] Selecting a WG document for CoAP
>>>> <ecblank.gif> <ecblank.gif>
>>>>
>>>> Dear all
>>>>
>>>> Those interested in the subscribe/notify discussion might like to look
>>>> at the draft Smart Energy Profile 2.0 Application Protocol
>>>> Specification. It is available here:
>>>> http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp 
>>>>
>>>> licationProfile.aspx
>>>>
>>>> It manages subscribe/notify by using POST. This seems to remove the 
>>>> need
>>>> for SUBSCRIBE and notify.
>>>>
>>>> "Imagine a host A, which exposes a resource at http{s}://A/resource 
>>>> and
>>>> a second host B, which wishes to learn of changes to this resource. To
>>>> facilitate a subscription/ notification mechanism, A would expose a
>>>> resource http{s}://A/sub and B would expose a resource 
>>>> http{s}://B/ntfy.
>>>> To subscribe to notifications regarding http{s}://A/resource, B would
>>>> send a POST to the address http{s}://A/sub/B containing the URI of the
>>>> resource of interest (http{s}://A/resource) and the URI of B's
>>>> notification resource (http{s}://B/ntfy). Following this subscription
>>>> step, should A wish to notify B of a change to the resource 
>>>> addressed at
>>>> http{s}://A/resource, A would send a POST to the address
>>>> http{s}://B/ntfy containing the URI of the resource changed
>>>> (http{s}://A/resource) and the URI of A's subscription resource
>>>> (http{s}://A/sub/B), should A wish to change its subscription. The 
>>>> host
>>>> B can then query the resource (or not) at its leisure."
>>>>
>>>> Sleepy nodes are not allowed to subscribe, and must poll.
>>>>
>>>> Regards - Charles Palmer
>>>>
>>>> -----Original Message-----
>>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On 
>>>> Behalf Of
>>>> Angelo P. Castellani
>>>> Sent: 14 May 2010 13:14
>>>> To: Zach Shelby
>>>> Cc: core
>>>> Subject: Re: [core] Selecting a WG document for CoAP
>>>>
>>>> Zach,
>>>>
>>>> thanks for the comments, but please refer to my most recent e-mail for
>>>> a more specific list of technical issues I'm pointing to.
>>>>
>>>> I want to do only a little integration to what I've written there.
>>>>
>>>> In my very personal opinion, to maximize adherence with the REST model
>>>> and minimize implementation effort SUBSCRIBE and NOTIFY should be
>>>> mapped to methods (as discussed many times together...).
>>>>
>>>> Uniform interface principle (Fielding PhD dissertation Section 5.1.5,
>>>> "The central feature that distinguishes the REST architectural style
>>>> [...]") states that to simplify the software architecture, resource
>>>> interfaces/interfaces should be as general as possible.
>>>>
>>>> I agree with this principle in this specific case, mainly because
>>>> handling a special message type for notify leads node software design
>>>> to a more complex architecture.
>>>>
>>>> The reason is that this new message type requires special handling and
>>>> introduces a complexity in the software modularization.
>>>>
>>>> Best,
>>>> Angelo
>>>>
>>>> On Fri, May 14, 2010 at 13:06, Zach Shelby<zach@sensinode.com> wrote:
>>>>
>>>>
>>>> Hi Angelo,
>>>>
>>>> On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
>>>>
>>>>
>>>>
>>>> Dear C. Bormann, all,
>>>>
>>>> before deciding for the final direction, I've the following
>>>> observations about draft-shelby-core-coap-01
>>>>
>>>> While I mostly share Zach's view of the protocol approach, and
>>>> appreciate many aspects of the proposal, there are in my opinion
>>>>
>>>>
>>>> still
>>>>
>>>>
>>>> some open issues that need to be at least discussed before the
>>>>
>>>>
>>>> current
>>>>
>>>>
>>>> document can be selected.
>>>>
>>>>
>>>> Of course there are plenty of open issues. Remember that working group
>>>>
>>>>
>>>> documents still undertake as much change and improvement as the WG
>>>> wants, so by no means is coap-01 set in stone. I would expect at least
>>>> 5-10 more revisions still along the way. Already several of your ideas
>>>> have been integrated into coap-01, and several more are under
>>>> consideration, so it is coming along. Patience ;-)
>>>>
>>>>
>>>>
>>>> In particular, I would like to highlight the following:
>>>>
>>>> a) As it is now, it is not possible to have a straightforward
>>>> translation of HTTP -> CoAP and viceversa: see
>>>> http://www.ietf.org/mail-archive/web/core/current/msg00133.html (this
>>>> impacts the scalability of the web service model too)
>>>>
>>>>
>>>> In coap-01 the Method names are now identical to HTTP methods. The
>>>>
>>>>
>>>> Req/Res interaction is a direct translation. The URI hierarchy is
>>>> compatible, and the URI binary code format we are still working on
>>>> obviously. The only thing that takes some state to translate is
>>>> Subscribe/Notify. But note, Subscribe/Notify takes some state no 
>>>> matter
>>>> how you do it, even with HTTP-HTTP there is no clean and easy way to
>>>> handle subscriptions.
>>>>
>>>>
>>>>
>>>> b) Moreover, CoAP's implementation is not as simple as it should be.
>>>> I've investigated the implementation and some design choices (as
>>>> Options) are leading to very high program complexity (ROM) on a
>>>> MSP430-based device.
>>>>
>>>>
>>>> This we can definitely improve, and already made several optimizations
>>>>
>>>>
>>>> from -00 to -01. Here I need some very concrete proposals though. Also
>>>> remember that many things are optional, for example 
>>>> subscribe/notify is
>>>> not required if you don't need it.
>>>>
>>>>
>>>>
>>>> c) Finally when comparing HTTP message size with CoAP message size,
>>>> the resulting compression isn't as good as you may expect.
>>>>
>>>> Example:
>>>> HTTP: GET /sensor/temp.xml HTTP/1.0 = 32 B
>>>> CoAP: 24 B with options parsing procedure requiring an added
>>>> implementation complexity
>>>>
>>>>
>>>> Right, that is not how it will work in practice. Working with a real
>>>>
>>>>
>>>> HTTP server that HTTP header will be more complex, and on the CoAP 
>>>> side
>>>> you would chose shorter URLs. The biggest improvement possible here is
>>>> from using binary coded URLs of course. We need to look at a wider 
>>>> range
>>>> of interactions and real HTTP headers as well to check that we are
>>>> efficient enough.
>>>>
>>>>
>>>>
>>>> Addressing all these points potentially leads to major technical
>>>> modifications (especially point a) on the current draft, hence it is
>>>> appropriate in my opinion to discuss these points before making the
>>>> final decision.
>>>>
>>>>
>>>> I am not sure what else you have in mind for a). If we just forget
>>>>
>>>>
>>>> about Subscribe/Notify then you are good to go. But then you are also
>>>> not fulfilling the charter or the industry needs in that respect.
>>>>
>>>>
>>>> Thanks,
>>>> Zach
>>>>
>>>>
>>>>
>>>> Best regards,
>>>>
>>>> Angelo P. Castellani
>>>>
>>>>
>>>> On Mon, May 10, 2010 at 18:51, Carsten Bormann<cabo@tzi.org>wrote:
>>>>
>>>>
>>>> The CORE WG has a milestone to select a WG document for CoAP in
>>>>
>>>>
>>>> April:
>>>>
>>>>
>>>> http://datatracker.ietf.org/wg/core/charter/
>>>> ...
>>>> Apr 2010 Select WG document for basis of the CoAP protocol
>>>>
>>>> Of the various documents that have been contributed,
>>>>
>>>>
>>>> draft-shelby-core-coap has significant discussion, as well as the
>>>> largest number of updates (including a previous version that was still
>>>> called -6lowapp-coap).
>>>>
>>>>
>>>> Today, another updated version of that draft was announced. See
>>>> http://www.ietf.org/mail-archive/web/core/current/msg00138.html
>>>> for the announcement and
>>>> http://tools.ietf.org/html/draft-shelby-core-coap-01
>>>> for the draft itself.
>>>>
>>>> However, as the authors say, there are still significant TODOs.
>>>>
>>>> Are we in a state yet where we can say whether this is the right
>>>>
>>>>
>>>> direction for the WG to take?
>>>>
>>>>
>>>> If yes, is it the right direction? Should we adopt it as a WG
>>>>
>>>>
>>>> document?
>>>>
>>>>
>>>> If you don't think we can say yet, is there a set of technical
>>>>
>>>>
>>>> decisions you would like the authors to take with priority?
>>>>
>>>>
>>>> Note that once a document has become a WG document, the authors act
>>>>
>>>>
>>>> as editors for the working group, making (and usually fleshing out the
>>>> details of) any change that the WG decides it needs.
>>>>
>>>>
>>>> If you think we can still improve the draft, this is not an obstacle
>>>>
>>>>
>>>> to making it a WG document.
>>>>
>>>>
>>>> But of course we shouldn't do that if we intend to reverse its
>>>>
>>>>
>>>> fundamental technical direction.
>>>>
>>>>
>>>> In order to stay roughly in sync with our milestones, we should
>>>>
>>>>
>>>> reach at a decision on how to go forward this week.
>>>>
>>>>
>>>> Gruesse, Carsten
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>>
>>>> -- 
>>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>>> http://zachshelby.org - My blog "On the Internet of Things"
>>>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
>>>> Mobile: +358 40 7796297
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>> --------------------------------
>>>> Onzo is a limited company number 06097997 registered in England& 
>>>> Wales.
>> The
>>>> registered office is 6 Great Newport Street, London, WC2H 7JB, United
>>> Kingdom.
>>>>
>>>> This email message may contain confidential and/or privileged
>> information,
>>> and
>>>> is intended solely for the addressee(s). If you have received this 
>>>> email
>> in
>>>> error, please notify Onzo immediately. Unauthorised copying, 
>>>> disclosure
>> or
>>>> distribution of the material in this email is forbidden.
>>>> --------------------------------
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>> ______________________________________________________________________
>>>> This email has been scanned by the MessageLabs Email Security System.
>>>> ______________________________________________________________________
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>> --------------------------------
>>>> Onzo is a limited company number 06097997 registered in England& 
>>>> Wales.
>> The
>>>> registered office is 6 Great Newport Street, London, WC2H 7JB, United
>>> Kingdom.
>>>>
>>>> This email message may contain confidential and/or privileged
>> information,
>>> and
>>>> is intended solely for the addressee(s). If you have received this 
>>>> email
>> in
>>>> error, please notify Onzo immediately. Unauthorised copying, 
>>>> disclosure
>> or
>>>> distribution of the material in this email is forbidden.
>>>> --------------------------------
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>>
>>>>
>>>> ______________________________________________________________________
>>>> This email has been scanned by the MessageLabs Email Security System.
>>>>
>>>
>> ____________________________________________________________________________ 
>>
>> __
>>> _______________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> -- 
>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>> http://zachshelby.org  - My blog "On the Internet of Things"
>>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
>>> Mobile: +358 40 7796297
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>