[decade] Review of draft-ietf-decade-reqs-08

Konstantinos Pentikousis <k.pentikousis@huawei.com> Fri, 17 August 2012 16:43 UTC

Return-Path: <k.pentikousis@huawei.com>
X-Original-To: decade@ietfa.amsl.com
Delivered-To: decade@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7C41021F85D6 for <decade@ietfa.amsl.com>; Fri, 17 Aug 2012 09:43:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.372
X-Spam-Level:
X-Spam-Status: No, score=-6.372 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, SARE_SUB_OBFU_Q1=0.227]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id L+sBeDhEMwfG for <decade@ietfa.amsl.com>; Fri, 17 Aug 2012 09:43:07 -0700 (PDT)
Received: from dfwrgout.huawei.com (dfwrgout.huawei.com [206.16.17.72]) by ietfa.amsl.com (Postfix) with ESMTP id BAF8E21F85A3 for <decade@ietf.org>; Fri, 17 Aug 2012 09:43:06 -0700 (PDT)
Received: from 172.18.9.243 (EHLO dfweml202-edg.china.huawei.com) ([172.18.9.243]) by dfwrg02-dlp.huawei.com (MOS 4.2.3-GA FastPath) with ESMTP id AIY63917; Fri, 17 Aug 2012 08:43:05 -0800 (PST)
Received: from DFWEML404-HUB.china.huawei.com (10.193.5.203) by dfweml202-edg.china.huawei.com (172.18.9.108) with Microsoft SMTP Server (TLS) id 14.1.323.3; Fri, 17 Aug 2012 09:42:55 -0700
Received: from SZXEML424-HUB.china.huawei.com (10.82.67.163) by dfweml404-hub.china.huawei.com (10.193.5.203) with Microsoft SMTP Server (TLS) id 14.1.323.3; Fri, 17 Aug 2012 09:42:52 -0700
Received: from SZXEML545-MBS.china.huawei.com ([169.254.2.55]) by szxeml424-hub.china.huawei.com ([10.82.67.163]) with mapi id 14.01.0323.003; Sat, 18 Aug 2012 00:42:47 +0800
From: Konstantinos Pentikousis <k.pentikousis@huawei.com>
To: "Rahman, Akbar" <Akbar.Rahman@interdigital.com>, "decade@ietf.org" <decade@ietf.org>
Thread-Topic: Review of draft-ietf-decade-reqs-08
Thread-Index: AQHNek8zSOtXNshZRkafaYo+6v08l5ddw0pw
Date: Fri, 17 Aug 2012 16:42:45 +0000
Message-ID: <8D38716F0C1A444BA0CD7E96454366C23A4C5095@szxeml545-mbs.china.huawei.com>
References: <20120813195006.29392.94335.idtracker@ietfa.amsl.com>
In-Reply-To: <20120813195006.29392.94335.idtracker@ietfa.amsl.com>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-cr-hashedpuzzle: Ab5Y AfBV CNAe DNpt E/Bj GGX4 G+fV IpFP L/k+ NGmb OsZT OyhO P2C+ TkvB UfxM VJ1n; 2; YQBrAGIAYQByAC4AcgBhAGgAbQBhAG4AQABpAG4AdABlAHIAZABpAGcAaQB0AGEAbAAuAGMAbwBtADsAZABlAGMAYQBkAGUAQABpAGUAdABmAC4AbwByAGcA; Sosha1_v1; 7; {7B260787-A640-4CF1-B158-2B97C4CFA064}; awAuAHAAZQBuAHQAaQBrAG8AdQBzAGkAcwBAAGgAdQBhAHcAZQBpAC4AYwBvAG0A; Fri, 17 Aug 2012 16:42:33 GMT; UgBlAHYAaQBlAHcAIABvAGYAIABkAHIAYQBmAHQALQBpAGUAdABmAC0AZABlAGMAYQBkAGUALQByAGUAcQBzAC0AMAA4AA==
x-cr-puzzleid: {7B260787-A640-4CF1-B158-2B97C4CFA064}
x-originating-ip: [10.200.37.56]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Subject: [decade] Review of draft-ietf-decade-reqs-08
X-BeenThere: decade@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "To start the discussion on DECoupled Application Data Enroute, to discuss the in-network data storage for p2p applications and its access protocol" <decade.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/decade>, <mailto:decade-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/decade>
List-Post: <mailto:decade@ietf.org>
List-Help: <mailto:decade-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/decade>, <mailto:decade-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 17 Aug 2012 16:43:08 -0000

Dear Akbar, Yingjie, David, All,

I went through the draft (-08) and I find that there's a significant improvement compared to -06. Well done! However, there are still some things that should be addressed, as I explain below. The general comment I have about the whole draft is that it's a bit long and does not get to the main point early on. If I am going to use this document as a checklist against which I will evaluate my proposed implementation of DECADE I have to spend significant effort, when perhaps things could be a bit simpler. Terminology has improved a lot in this version but some inflation of terms remains. Since no real implementation exists so far, I reckon that only high-level requirements can be set at this stage. I tried to summarize all reqs in a cheat sheet at the end of this email. More comments and suggestions below.

Abstract
--------
s/The target of the DECoupled/The goal of the DECoupled


Section 2
---------
In terms of style, I do not see why each term needs its own 2nd level section, besides providing a shorthand for referring to the definitions :)

The Resource Provider/Consumer definitions effectively point to roles that a DECADE client can play. As such, it would be better, imo, to fold them into the client definition instead of having them standout. Suggestion--remove Sec. 2.5-6 and add the following at the end of Sec. 2.1: "A DECADE client can act as a resource provider and/or consumer. In the former role, a client uses his credentials with a server to distribute content to other clients, which act as consumers".

No real need for including the definition of Sec. 2.7. The term is not used later on.

Section 2.8: I would propose to s/Target Application/DECADE-compatible Application/, or simply application. The ID does not actually talk about or differentiate against other apps (i.e. non-DECADE-compatible).

Furthermore:

s/application with that/application which

s/Application divides/Application may divide

Finally, the last sentence of Sec. 2.8 ("We use the term ... supported by DECADE system") is a bit confusing. If an app does not include a client, how is it supported by the DECADE system? If it does include a client, then isn't it a Target App anyway? Do you refer to apps that share the same client? What other apps do you have in mind? I propose to remove this last sentence unless it becomes more clear.

Similarly with Sec. 2.7, the definition of Sec. 2.9 is likely redundant. The term is used only where it is defined and in Fig. 1. I propose to remove it altogether. 

s/The data object is a string/In practice, the data object is a string

s/all the requirements/all requirements


Section 3
---------
Wrt to Fig. 1, just as an observation, I see that there is a hidden app-to-client API, which is not mentioned at all. Second, as I think of implementation, I could imagine that two (or more) apps on the same host could use the same DECADE client. This is alluded to by Req. 8.1 as well, but it's not illustrated here. I think it should. Finally, I would imagine, for instance, that the app/client on the right-hand side could also directly talk to the left-hand side server. In other words, a NE-SW diagonal is missing from Fig. 1 right now. Perhaps this is for keeping the Fig. simple, but it may give the wrong impression to uninitiated readers (i.e. that you always need the 2nd server in the middle to relay the DOs). I guess this is not what you mean.

Moreover, do you foresee the use case where the right-hand side client downloads the DOs to his own server rather than to the local host? (kind of scheduled mirroring case, for example).


Section 4
---------
s/existing ones or new ones/existing or new ones

The term Target Applications is used here, and I think it would be better to use DECADE-compatible Application, or simply application; see above. "Target" does not mean much in this context.

s/existing protocols and new protocols/existing and new protocols


Section 5
---------
Req. 5.1 is very fuzzy. It does not make a case for global uniqueness, neither for local uniqueness (in the confines of a single provider). It's not clear how a provider/server detects that the name is not unique. It's also a bit convoluted. On the one hand, I think the main requirement is that "two objects with the same name should be the same content". One the other hand, RATIONALE calls for a collision handling mechanism. This is a subtle requirement (i.e. it is not a SHOULD, but a MUST--"it is required to provide...")

s/among multiple/between different

This "Exception" text seems to apply to several requirements and it's repeated (7.5, 7.6). Why not group all "exceptions" in one place? And, isn't this covered by Req. 9.5 anyway?

Sec. 5.2 is empty. Accident?

s/flexibility (e.g.,/flexibility,/  and then remove the matching parenthesis.

s/query-able/that can be queried

s/MUST NOT be able to associate/MUST NOT associate

s/what is provided by Section 5.4/what is required by Section 5.4


Section 6
---------
Req. 6.1: what exactly does this add?

"based on cryptographic security". This is not very clear to me. What exactly is this requirement mandating? 

s/its server on whether a Consumer/its server that a Consumer

I think req. 6.5 could be folded into 6.4 

s/should able to/should be able to

s/individual clients, individual data objects/individual clients and data objects

In req. 6.8, what about the case where a server is behind a NAT/firewall?


Section 7
---------
"DECADE MUST specify at least...": I gather you refer to the DECADE WG here, not the DECADE system.

Perhaps you could explain what a "range read/write" is. And what about uploading least popular chunks first, or in any order for that matter? (I guess this not range read/write, right?)

s/in multiple round/in multiple rounds

Req. 7.2 (partial write) and 7.5 (concurrent write) seem to be at odds with each other as the text stands now. I think 7.5 should be modified to address locking a data object, and then it can be folded into Req 7.2 (atomic).

I am not in favor of Req. 7.6 and propose to remove it. The fact that the req. also points to how to handle the error cases popping up once you follow this requirement is not a good thing either :) To some degree this is included in Req. 7.2 as well ("It MAY support range read/write"). But, imo, more importantly the way that this is phrased reads more like an optimization, not a requirement. The motivation behind it (RATIONALE) is also weak, if not wrong. Streaming is not the case for a "data object that has been completely written". Streaming could be perpetual, and the client would typically upload self-contained chunks/frames/etc. If you're talking about the case where the client starts uploading some chunks of a data object to the server and while doing so starts to distribute them to its peers through the decade server, then it's best to include this aspect in Req. 7.2 (partial read/write).


Section 8
---------
See comment about Fig. 1.

Req. 8.2 could be actually part of Section 6 (if it's not already covered by what was said there, e.g. Req. 6.3). Ditto for Req. 8.3 and Req. 6.4.


Section 9
---------

I'm not really in favor of Req. 9.1. I guess you must be familiar with the discussion in httpbis (and elsewhere :) re: error 451. What is the purpose of this requirement from a _technical_ perspective?

More generally, Sec. 9 is a bit more protocol-oriented than it needs to be (a slight resemblance to the error codes of HTTP, for example, could be detected). Reqs 9.3 and 9.4, for instance, could be simply folded under Req. 7.7. Req. 9.2 is part of Req. 6.2, imo.


Section 10
----------
No manageability aspects/requirements from the DECADE Storage Provider pov are listed.


Section 11
----------

Perhaps this section should be based on the 5-tuple (Privacy, Authentication, Identification, Trust, Verification).

Sec. 11.2 reads slightly contradictory to Req. 7.3 ("DECADE-compatible clients may opt to encrypt data before it is transported to the server" vs. "A secure transport MUST be implemented for all communications between a DECADE-compatible client and DECADE-compatible server", respectively).
 
I'm not sure about the added value of Sec. 11.3, which could have been folded into Req. 9.5 anyway.


Requirements Cheat Sheet
------------------------
After reading the ID a couple times I prepared the following cheat sheet, taking some text from the draft in verbatim and adding/rephrasing text (when needed) based on my understanding of the requirements. Please correct me where I'm wrong.
 
The goal of the DECoupled Application Data Enroute (DECADE) system is to provide an open and standard in-network storage system primarily for peer-to-peer applications.

In a DECADE system, efficient storage and data transfer of small data objects is required [5.3]. The data transport protocol can be negotiated but must be secure [7.1, 7.3]. Security is based on cryptographic methods which allow a DECADE provider to access system resources, distribute content to content consumers of its choosing, even when offline, using (if needed) fine-grained access control policies [6.2, 6.3, 6.4, 6.5, 6.6, 8.2, 8.3]. Client data on a server are by default private [6.7]. It is the client that always discovers and initiates a connection to a server [6.8, 6.9], not vice versa. Data objects can be written by a provider in one go or several rounds and can be read by multiple consumers simultaneously [7.2, 7.4]. Every provider is given the means to obtain resource usage stats and quotas [10.1]. Overall, attack mitigation is a MUST [9.5] and transport redirection SHOULD be supported [7.7]

A DECADE system is application independent: 
* two data objects with the same name should be the same content [5.1]
* attributes associated with a data object, such as object creation time, TTL, size, and type have local (server) scope only [5.4]
* application-defined properties (metadata) of data objects are not to be related with the objects themselves within the DECADE system [5.5]

Best Regards,

Kostas