Re: [dtn-interest] Comments on RFC 5050

Michael Noisternig <michael.noisternig@cased.de> Mon, 24 June 2013 09:37 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 B26B621F8B04 for <dtn-interest@ietfa.amsl.com>; Mon, 24 Jun 2013 02:37:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.745
X-Spam-Level:
X-Spam-Status: No, score=-2.745 tagged_above=-999 required=5 tests=[AWL=0.504, BAYES_00=-2.599, HELO_EQ_DE=0.35, 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 LGaocLdc67rp for <dtn-interest@ietfa.amsl.com>; Mon, 24 Jun 2013 02:37:28 -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 0ADFF21F9A03 for <dtn-interest@irtf.org>; Mon, 24 Jun 2013 02:37:27 -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 r5O9bOxT011054 for <dtn-interest@irtf.org>; Mon, 24 Jun 2013 11:37:24 +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 D884941A0D7 for <dtn-interest@irtf.org>; Mon, 24 Jun 2013 11:37:23 +0200 (CEST)
Message-ID: <51C81350.1000606@cased.de>
Date: Mon, 24 Jun 2013 11:37:20 +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
References: <51C0239C.5080104@cased.de> <A5BEAD028815CB40A32A5669CF737C3B235FFDAC@ap-embx-sp40.RES.AD.JPL>
In-Reply-To: <A5BEAD028815CB40A32A5669CF737C3B235FFDAC@ap-embx-sp40.RES.AD.JPL>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
X-PMX-TU: seen v1.2 by 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2013.6.24.92415
X-PMX-RELAY: outgoing
Subject: Re: [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: Mon, 24 Jun 2013 09:37:36 -0000

Thanks again, Scott. See my replies inline.

Michael

> 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?
>
>   * Can you describe in more detail the specific alternative you are
>     proposing?  That would give us a basis for comparison, which might
>     answer this question.

Well, there are various solutions though they may not be as pretty. One 
is as such, with bits in standard order (msb first):

  0....... data preceded by length value, where
  00......   length value has one byte (6 bits)
  01......   length value has more than one byte (SDNV-encoded)
  10...... data has one byte (6 bits)
  110..... data has two bytes (13 bits)
  1110.... data has three bytes (20 bits)
  aso.

The intent is solely to avoid the decision at the protocol design phase 
whether to directly SDNV-encode the data or to precede it by some 
SDNV-encoded length field.

> 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.
>
>   * Sure, but while SDNVs are not extremely processor-intensive to
>     handle they always consume more cycles than simply operating on a
>     byte.  If there’s a significant likelihood that a field will need to
>     be of different sizes under different circumstances, defining it as
>     an SDNV makes sense; otherwise it doesn’t.

No, the point is that this doesn't make the processing any more complex. 
Type codes etc. are still compared on a byte basis just as now. The only 
difference is that bytes values 128-255 are "reserved" to indicate a 
multi-byte (SDNV-encoded) value. At least that way one can assure that 
the number of type codes later defined will never become too large. (And 
if you are confident that the number will always stay slow then nothing 
is lost either.)

> 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.
>
>   * This doesn’t seem like a significant disadvantage.  Even if a BP
>     agent received its bundles one byte at a time, it probably shouldn’t
>     act on the basis of bundle processing control flags until at least
>     the entire primary block has been received.

I agree, the disadvantage is likely negligible. Still, I dispute the 
rationale given in the RFC for why bits are not in the standard order of 
RFCs:
"This is
    why the descriptions in this section and the next do not follow
    standard RFC conventions with bit 0 on the left; 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."

> Flag 4 "Destination endpoint is a singleton.": Requiring this knowledge
> seems to be in direct conflict with late binding.
>
>   * I don’t think so.  Late binding is about not requiring the source
>     node to know the topological location of the destination.  Endpoint
>     cardinality is about constraining the processing performed at
>     forwarding nodes.

Hm, but then someone (the source/the application) must know that the 
destination EID represents a singleton. It might be a restriction or it 
might be not. (I take your word if you say it is not.)

> 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 is why there’s an RFC for CBHE.

Maybe I don't understand what RFC 6260 (CBHE) says. Section 2.2 states that
"In a CBHE-compressed primary block, the eight SDNVs that
    normally contain EIDs' scheme name and SSP offsets within the
    dictionary are instead used to contain the eight integer values..."
As per the BP spec these must be SDNV values. Are they instead encoded 
as 64-bit integer values? If so, how can non-compatible receivers 
correctly parse the bundle header?

> 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.
>
>   * Yes, but that’s implicit.  Strings that are needed in order to
>     verify authenticity are referenced, so they can’t be removed from
>     the dictionary.

Could it happen that some extension block be processed, removed and its 
EID references removed by some intermediate node on a security path? I 
am still trying to figure out what is possible with the current security 
spec.

> 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?
>
>   * Can you say a little more about why they shouldn’t be?

Let's say a duplicate bundle has been received. Then by steps 2 and 3 
the receiving node would potentially already have sent several redundant 
bundle reception status reports. It seems that such behavior on replays 
should be avoided.