Re: [core] Fwd: New Version Notification for draft-hartke-coap-observe-00

Klaus Hartke <klaus.hartke@googlemail.com> Thu, 24 June 2010 17:52 UTC

Return-Path: <klaus.hartke@googlemail.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 CB1113A682E for <core@core3.amsl.com>; Thu, 24 Jun 2010 10:52:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.223
X-Spam-Level: *
X-Spam-Status: No, score=1.223 tagged_above=-999 required=5 tests=[BAYES_50=0.001, FM_FORGED_GMAIL=0.622, J_CHICKENPOX_55=0.6]
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 uQLT1Ec5pR0F for <core@core3.amsl.com>; Thu, 24 Jun 2010 10:52:54 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id 1B1CB3A68DB for <core@ietf.org>; Thu, 24 Jun 2010 10:52:53 -0700 (PDT)
Received: by bwz12 with SMTP id 12so345535bwz.31 for <core@ietf.org>; Thu, 24 Jun 2010 10:52:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=Rvw63XDkNA0h9+FRGsEM9E+BE+9TI4kDIHn2YZQBQHI=; b=JCJuauoRC/wC3bmUMR9BqvaC7vxmQsjlMKItyhWbg8k8T5tfWk3eKsYLRoHUoNP+r7 9RYwSDuxYnU79F7D5y3ys22zq635ulpNJN5wcCNfgtF5lxeuPFL2obX1ZLHXJTe03Nfr B1bPuR2jO22Nwrm6RMwXXBHRm4/vIFsp7AtGc=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=Bd2ZDEykMkywhDVi4ze4UxAoFpHPlE7BB8ZZTEqFpOIV1OXuIOG+6fcth3TYE6PXLI dOuKPmImuMITT8X6dL5sMzMC2EDeWePwaEFYCNUy4nvqshiEdBB9ogZ4fmavzIvn2SH9 jUD91GysAwobCHJsgEaK5hFQV0QUC5J3g68fM=
MIME-Version: 1.0
Received: by 10.204.163.142 with SMTP id a14mr6686774bky.4.1277401976769; Thu, 24 Jun 2010 10:52:56 -0700 (PDT)
Received: by 10.204.65.84 with HTTP; Thu, 24 Jun 2010 10:52:56 -0700 (PDT)
In-Reply-To: <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com>
References: <20100622203528.0519A28C0D0@core3.amsl.com> <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org> <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com>
Date: Thu, 24 Jun 2010 19:52:56 +0200
Message-ID: <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com>
From: Klaus Hartke <klaus.hartke@googlemail.com>
To: core <core@ietf.org>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Subject: Re: [core] Fwd: New Version Notification for draft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
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, 24 Jun 2010 17:52:55 -0000

On 23 June 2010 17:24, Zach Shelby <zach@sensinode.com> wrote:
> - The requirements are good, however we should not require an end-point to support observation for its resources. It is up to the server if a resources is "observable" or not, and thus very simple end-points may leave that feature out to minimize code size.

Of course. If SUBSCRIBE has no meaning for a resource, it's not
required to offer that method ("405 Method Not Allowed"). If you
restrict a server to have no resources that allow SUBSCRIBE, such code
minimization is possible.

> - Are we sure we need all the requirements here, or are some nice-to-have?

I believe that all requirements are needed to implement the
architecture. Whether all elements of the architecture are needed,
should be discussed.

> For example: "A subscribing client must be able to influence the representation format in which the server supplies the resource state" I would hope this doesn't end up resulting in a bunch of Accept: style headers? Couldn't that be left to the application to offer URLs with different representation formats? I am not convinced this should be a transfer protocol requirement for CoAP.

I think both options (/sensors/temperature.xml or Accept:
application/xml) are valid ways to satisfy this requirement. If we go
with the Accept header, we need to add a new option to CoAP. I'm in
favour of .xml in the URL.

There is another requirement related to the representation format,
which is probably more important: "The representation format used
during the lifetime of a subscription must not change." I think this
is a requirement that should be stated somewhere.

> - At first glance this looks overly complicated, but I think it is because you are modeling this as a format design pattern and are exploring this is detail. I am hoping that realizing this would be a whole lot simpler?

The list of requirements aims to be exhaustive, but many requirements
can be satisfied by introducing very simple protocol elements (such as
confirmable requests). I think the message exchanges in
coap-observe-00 (section 4) are already quite pleasing to the eye.

> - SUBSCRIBE, UNSUBSCRIBE, YIELD, BREAK, THROW are abstract concepts at this point, I would think these could be combined quite a bit in realization? What kind of realization do you guys have in mind (just for a sneak preview to see if this is nuts or not).

Carsten and I are working on concrete message types. The result will
probably not be that different from what we have in coap-00 currently.

> - The notification messages seem to be sometimes representations and sometimes error codes. Is this suggesting that an (abstract) notification message would need to carry both a representation and a CoAP code. BREAK and THROW are also shows as being piggybacked on replies, so they basically are CoAP codes. So YEILD = representation, and BREAK+THROW = CoAP codes?

Yes. YIELD mainly carries a representation, but it may also just
indicate that the resource changed to one of the states cached by the
client ("304 Not Modified"). THROW mainly carries an error code (e.g.,
404, 401 or 500), but I think it might also be useful to be able to
include diagnostic information in the payload for debugging purposes.

> - Regarding Section 6, I prefer "way 1", seems much cleaner to me, has less state and is useful in a proxy.

I'm currently experimenting with an implementation that does way 2.
The implementation so far is very elegant and clean, requires less
state, and uses smaller messages. But I haven't made up my mind yet.

Klaus