Re: [6lowapp] Reliability Requirements in draft-shelby-6lowapp-coap-00

"G. Clark" <gc355804@ohio.edu> Mon, 15 February 2010 13:04 UTC

Return-Path: <gc355804@ohio.edu>
X-Original-To: 6lowapp@core3.amsl.com
Delivered-To: 6lowapp@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B2F7F3A7649 for <6lowapp@core3.amsl.com>; Mon, 15 Feb 2010 05:04:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[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 0jGBlxY8XhVs for <6lowapp@core3.amsl.com>; Mon, 15 Feb 2010 05:04:34 -0800 (PST)
Received: from mx2.oit.ohio.edu (mx2.oit.ohio.edu [132.235.51.19]) by core3.amsl.com (Postfix) with ESMTP id 940403A7530 for <6lowapp@ietf.org>; Mon, 15 Feb 2010 05:04:34 -0800 (PST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApsEAA/VeEuE6wiX/2dsb2JhbACcEK9eDoM5iFWCTYIOBIMU
X-IronPort-AV: E=Sophos;i="4.49,476,1262581200"; d="scan'208";a="30366349"
Received: from oak3a.cats.ohiou.edu (HELO oak.cats.ohiou.edu) ([132.235.8.151]) by smtpout2.oit.ohio.edu with ESMTP; 15 Feb 2010 08:06:04 -0500
Received: from [10.1.42.187] (cpe-75-180-9-158.columbus.res.rr.com [75.180.9.158]) (authenticated bits=0) by oak.cats.ohiou.edu (8.13.1/8.13.1) with ESMTP id o1FD5EGe1779517 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 15 Feb 2010 08:05:15 -0500 (EST)
Message-ID: <4B794690.7080100@ohio.edu>
Date: Mon, 15 Feb 2010 08:05:20 -0500
From: "G. Clark" <gc355804@ohio.edu>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
MIME-Version: 1.0
To: Zach Shelby <zach@sensinode.com>
References: <4B704E48.4030000@in.tum.de> <105CAD44-328B-497F-BBFE-DDFD692FEB58@sensinode.com> <4B75D82F.6060508@ohio.edu> <F63B8FE5-8A8F-40D2-8FA5-9091C894EC1A@sensinode.com>
In-Reply-To: <F63B8FE5-8A8F-40D2-8FA5-9091C894EC1A@sensinode.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: 6lowapp@ietf.org
Subject: Re: [6lowapp] Reliability Requirements in draft-shelby-6lowapp-coap-00
X-BeenThere: 6lowapp@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Application protocols for constrained nodes and networks <6lowapp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/6lowapp>, <mailto:6lowapp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/6lowapp>
List-Post: <mailto:6lowapp@ietf.org>
List-Help: <mailto:6lowapp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/6lowapp>, <mailto:6lowapp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 15 Feb 2010 13:04:35 -0000

Zach Shelby wrote:
> Gilbert,
>
> On Feb 13, 2010, at 0:37 , G. Clark wrote:
>
>   
>>> Good point. My own assumption is that the reliability feature over UDP can be shut off when not needed. 
>>>  
>>>       
>> I did notice that in section 2.8.1 (wrt UDP transport), the draft said: "Stop-and-wait would be sufficient for reliability.  A simple response message itself would suffice as an acknowledgement with retransmission support.  Not all requests require reliability, thus this should be optional."  I found this to be a bit confusing, though: how do we meet REQ10 without enforcing reliability in requests?
>>     
>
> The Section 2.8.1 text is correct. It is REQ10 that is a bit misleading. The protocol is required to have a reliability feature, but the application isn't required to use it ;-) I'll update that in the -01 spin (coming this week).
>
>   
Ah hah!  Got it; thanks.
>>>> I think it is very difficult to find a general set of such requirements (and other QoS requirements such as latency etc) that is suitable for all applications running in a resource constained network. Because QoS requirements are typically application specific, the subscriptions could be a good location for specifiying such requirements. I am thinking about a subscription mechanism that allows a subscriber to not only specify the resource he is interested in, but also additional parameters such as reliability. This could also be an interesting way for switching between UDP and TCP based communication; a subscriber could specify that the data should be delivered via TCP instead of the default transmission via UDP.
>>>>    
>>>>         
>>> This is something to consider wrt subscription, I could add some text about that to draft-shelby-6lowapp-coap.
>>>  
>>>       
>> Instead of including TCP / UDP in the subscription request, would it be a bad plan to encode reliability in a service's URL?  e.g. coap[s]://my.device/reliable/service.  In this way, you could also mirror services (coap[s]://my.device/xyz, coap[s]://my.device/reliable/xyz) pretty easily.  This does have the downside of introducing more overhead, and it wouldn't be practical for multiple options to be encoded this way. 
>> This approach would move the decision for reliable / non-reliable transport to the application layer.
>>     
>
> Reliability should be controlled by the application layer originating a message. For TCP/UDP this is simply done with a Socket API. For the UDP reliability feature, this can be a flag in the header of the message, for example an "ACK ME" flag. In that way a resource (URL) is not dependent on the protocol features used to access it. Makes sense? 
>   
It does; thanks!  I'm not sure I completely understand here, though; 
mind clarifying why don't we want a resource to be dependent on protocol 
features?  I can think of a few cases where I'd only want to offer 
access to a service over UDP as opposed to TCP, for example.
> Zach
>   
Thanks,
Gilbert