[dtn-interest] Comments on RFC 5050

Michael Noisternig <michael.noisternig@cased.de> Tue, 18 June 2013 09:16 UTC

Return-Path: <michael.noisternig@cased.de>
X-Original-To: dtn-interest@ietfa.amsl.com
Delivered-To: dtn-interest@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4180E21F9C3E for <dtn-interest@ietfa.amsl.com>; Tue, 18 Jun 2013 02:16:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.799
X-Spam-Level:
X-Spam-Status: No, score=-2.799 tagged_above=-999 required=5 tests=[AWL=-0.150, BAYES_00=-2.599, HELO_EQ_DE=0.35, J_CHICKENPOX_34=0.6, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gxfC2lRr8dq9 for <dtn-interest@ietfa.amsl.com>; Tue, 18 Jun 2013 02:16:51 -0700 (PDT)
Received: from lnx503.hrz.tu-darmstadt.de (lnx503.hrz.tu-darmstadt.de [130.83.156.232]) by ietfa.amsl.com (Postfix) with ESMTP id C1E7A21F9C49 for <dtn-interest@irtf.org>; Tue, 18 Jun 2013 02:16:48 -0700 (PDT)
Received: from mail.cased.de (mail.cased.de [130.83.33.42]) by lnx503.hrz.tu-darmstadt.de (8.14.4/8.14.4/HRZ/PMX) with ESMTP id r5I9DkrD003726 for <dtn-interest@irtf.org>; Tue, 18 Jun 2013 11:14:44 +0200 (envelope-from michael.noisternig@cased.de)
Received: from [130.83.33.155] (cased155.cased.tu-darmstadt.de [130.83.33.155]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.cased.de (Postfix) with ESMTPSA id 4484E47A072 for <dtn-interest@irtf.org>; Tue, 18 Jun 2013 11:08:46 +0200 (CEST)
Message-ID: <51C0239C.5080104@cased.de>
Date: Tue, 18 Jun 2013 11:08:44 +0200
From: Michael Noisternig <michael.noisternig@cased.de>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130509 Thunderbird/17.0.6
MIME-Version: 1.0
To: dtn-interest@irtf.org
Content-Type: text/plain; charset="ISO-8859-15"; format="flowed"
Content-Transfer-Encoding: 7bit
X-PMX-TU: seen v1.2 by 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2013.6.18.85119
X-PMX-RELAY: outgoing
Subject: [dtn-interest] Comments on RFC 5050
X-BeenThere: dtn-interest@irtf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "The Delay-Tolerant Networking Research Group \(DTNRG\) - Announce." <dtn-interest.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/dtn-interest>, <mailto:dtn-interest-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www.irtf.org/mail-archive/web/dtn-interest>
List-Post: <mailto:dtn-interest@irtf.org>
List-Help: <mailto:dtn-interest-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/dtn-interest>, <mailto:dtn-interest-request@irtf.org?subject=subscribe>
X-List-Received-Date: Tue, 18 Jun 2013 09:17:53 -0000

Continuing my review (part 2/3) with RFC 5050...

4. Bundle Format:
"At most one of the blocks in the sequence may be a payload block." 
Would it be advanteous to allow more payload blocks with different 
(e.g., security) processing?

4.1. SDNVs:
I am not convinced this is the best solution. Even if we acknowledge 
that some flexible way to encode variable-length data is needed protocol 
designers are still faced with the decision whether to directly 
SDNV-encode some data field or instead SDNV-encode a length field such 
as to more efficiently carry lengthy data. Why not combine the current 
SDNV solution with some UTF-8-like encoding, such that the length of the 
data field is implicitly encoded?

The protocol also includes several byte values that are not 
SDNV-encoded: Version field, Block Type code, etc. These could easily be 
declared SDNV values without loosing backwards compatibility (to 
currently defined values) or processing efficiency.

4.2. Bundle Processing Control Flags:
"if fields are added
    in the future, the SDNV will grow to the left, and using this
    representation allows the references here to remain valid."
I see no reason why references should become invalid if the field would 
grow to the right with bit number 0 put on the left. The present 
representation has the disadvantage that the whole field needs to be 
received first before standard flags (those in earlier versions) can be 
parsed.

Flag 0 "Bundle is a fragment.": This flag obviously refers to the 
payload block, only, but could it be desirable to support fragmentation 
in other blocks as well such as in "optional" extension blocks?

Flag 4 "Destination endpoint is a singleton.": Requiring this knowledge 
seems to be in direct conflict with late binding.

4.3., last paragraph:
Why the restriction that "the block processing flags must be set to zero 
on all blocks that follow the payload block"?

4.4. Endpoint EIDs:
"Each endpoint ID conveyed in any bundle block takes the form of a 
Uniform Resource Identifier (URI; [URI])."
URIs are nice in being human-readable but they are also very wordy. It 
would be beneficial to generalize the current notion to support any kind 
of encoding (including binary) for the scheme-specific part given an 
(ASCII) scheme name. This is crucial for bandwidth-constrained 
environments, and definitely sufficient for applications that don't span 
multiple networks.

"This array is simply the concatenation of any number of null-terminated 
scheme names and SSPs."
Instead of null-terminating strings, why not encode them with prefixed 
SDNV length values? This seems to make the design more consistent and 
may improve string copy operations. But that's a minor comment.

4.7. Dictionary Revision:
"Any [unreferenced] strings (scheme names and SSPs) in a bundle's 
dictionary ... may be removed from the
    dictionary at the time the bundle is forwarded."
...subject to that authenticity is not lost.

5.2. Bundle Transmission, step 2:
"... with current custodian endpoint ID set to the null endpoint ID 
"dtn:none"
It should be up to the source to decide whether to support custody 
transfer, i.e., whether to set the current custodian EID to the source 
EID or to dtn:none.

5.6. Bundle Reception, step 4:
"If [a duplicate bundle has been received that] has the
       retention constraint "Custody accepted", custody transfer
       redundancy must be handled."
Why are processing steps 2 and 3, which generate bundle reception status 
reports, being executed before step 4?