Re: [dtn] [EXTERNAL] Alexey Melnikov's Discuss on draft-ietf-dtn-bpbis-22: (with DISCUSS and COMMENT)

"Burleigh, Scott C (US 312B)" <> Sat, 08 February 2020 00:45 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 3080E1200B3; Fri, 7 Feb 2020 16:45:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 8s7r-mz7y99M; Fri, 7 Feb 2020 16:45:34 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 680AD1200B6; Fri, 7 Feb 2020 16:45:34 -0800 (PST)
Received: from pps.filterd ( []) by ( with SMTP id 0180j8dV090522; Fri, 7 Feb 2020 16:45:26 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=InSight1906; bh=dTM2vAD5B7w+ofX8gcLuL1hiUjmUASiBXmfo/fDj5qc=; b=cm4kaNpGWT5wlndxlsUigFcjZMwRDha5Zq9BwlzO1Efj/OHUe2BtQFIftV7U2lJ/YP9q CuFcGQIS6+RKE7wkHfynbrGHESU15p4bnyNclU+GOxfUhT7GYWwMqbNiNHUPFriNJgky Fpe5+O4YT0AGZglIbQKQrTowgfwQzIBQWSKtb6Qbmn5IM9rfCulMn6IlsxrHYiRWHpkS Tmr5W24wYcpY5rVAO8b9o09yHRHSHAKo6gK12z26EgN0yFGcFZZPbMyV5k5Qp40QVvH2 4KnCM20GJmv18nt+KLX+hrV9AyB6LHdZCg4tNSHZJCg3bwGNJ3Cp5BoYZ7KvvHMhb1jO 3Q==
Received: from ( []) by with ESMTP id 2y1b2e1ssy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Feb 2020 16:45:26 -0800
Received: from ap-embx16-sp20.RES.AD.JPL ( []) by (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with ESMTP id 0180jPWO007010 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128 bits) verified FAIL); Fri, 7 Feb 2020 16:45:25 -0800
Received: from ap-embx16-sp10.RES.AD.JPL (2002:8095:8953::8095:8953) by ap-embx16-sp20.RES.AD.JPL (2002:8095:8954::8095:8954) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1591.10; Fri, 7 Feb 2020 16:45:25 -0800
Received: from ap-embx16-sp10.RES.AD.JPL ([fe80::4:f430:47b5:767b]) by ap-embx16-sp10.RES.AD.JPL ([fe80::4:f430:47b5:767b%17]) with mapi id 15.01.1591.008; Fri, 7 Feb 2020 16:45:25 -0800
From: "Burleigh, Scott C (US 312B)" <>
To: Alexey Melnikov <>, The IESG <>
CC: "" <>, "Fred Templin" <>, "" <>, "" <>, Benjamin Schwartz <>
Thread-Topic: [EXTERNAL] Alexey Melnikov's Discuss on draft-ietf-dtn-bpbis-22: (with DISCUSS and COMMENT)
Thread-Index: AQHV3cAf/EV+zd5l1kmkJpo2T1jPyKgP4JaQgACrUoD//4PDAA==
Date: Sat, 8 Feb 2020 00:45:24 +0000
Message-ID: <>
References: <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Source-IP: []
X-AUTH: Authorized
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2020-02-07_06:, , signatures=0
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1911140001 definitions=main-2002080003
Archived-At: <>
Subject: Re: [dtn] [EXTERNAL] Alexey Melnikov's Discuss on draft-ietf-dtn-bpbis-22: (with DISCUSS and COMMENT)
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Delay Tolerant Networking \(DTN\) discussion list at the IETF." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sat, 08 Feb 2020 00:45:37 -0000

Thanks, Alexey, I think we may be converging somewhat.  Further replies below (***), with some excess text removed.


-----Original Message-----
From: Alexey Melnikov <> 
Sent: Friday, February 7, 2020 10:02 AM
To: Burleigh, Scott C (US 312B) <>ov>; The IESG <>
Cc:; Fred Templin <>om>;;; Benjamin Schwartz <>
Subject: Re: [EXTERNAL] Alexey Melnikov's Discuss on draft-ietf-dtn-bpbis-22: (with DISCUSS and COMMENT)

Hi Scott,

Thank you for your responses. My replies below:

On Fri, Feb 7, 2020, at 5:19 PM, Burleigh, Scott C (US 312B) wrote:
> Thanks.  Some responses in-line below.
> Scott
> -----Original Message-----
> From: Alexey Melnikov via Datatracker <>
> Sent: Friday, February 7, 2020 6:09 AM
> To: The IESG <>
> Cc:; Fred Templin 
> <>om>;; 
> Subject: [EXTERNAL] Alexey Melnikov's Discuss on
> draft-ietf-dtn-bpbis-22: (with DISCUSS and COMMENT)
> Alexey Melnikov has entered the following ballot position for
> draft-ietf-dtn-bpbis-22: Discuss
> ----------------------------------------------------------------------
> ----------------------------------------------------------------------
> I am looking forward for this document to be finished and approved as 
> an RFC.
> Before I can recommend this, I have several DISCUSS points and 
> comments that I would like to address:


> Below I describe 3 relevant places in the text and suggest some 
> possible ways of addressing my DISCUSS:
> 5.4. Bundle Forwarding
>    Step 2: The bundle protocol agent MUST determine whether or not
>    forwarding is contraindicated (that is, rendered inadvisable) for
>    any of the reasons listed in Figure 4. In particular:
>      . The bundle protocol agent MAY choose either to forward the
>         bundle directly to its destination node(s) (if possible) or to
>         forward the bundle to some other node(s) for further
>         forwarding. The manner in which this decision is made may
>         depend on the scheme name in the destination endpoint ID 
> and/or
> Lack of this information (how node to forward to are discovered) would 
> prevent interoperability. (By comparison, SMTP specification which has 
> somewhat similar design contains information about how next nodes to 
> forward to are selected.)
> 		This information is provided in other documents, such as the CCSDS Schedule-Aware Bundle Routing standard.

Adding a reference here would address my concern about the above paragraph.

	***	Okay, I'll do that.

> I think you need to create a new section in this document specifying 
> requirements on URI scheme documents and include this as a MUST level 
> requirement there. (If you already have a document that does this, you 
> can just normatively point to it.)
> 		Can you please explain what you mean by "requirements on URI scheme 
> documents"?
> 		I don't know of any requirements on URI scheme documents that are 
> implied by this specification.  Can you give an example?

When a new URI scheme is registered for use with DTN (to get a new scheme specific number), a document describing this registration needs to be written. Let's imagine that I want to use "mailto:" URIs with DTN. In the document describing use of mailto: with DTN I would describe how routing is going to be performed. This might be something like this:

   When "mailto:" URIs are used with BPv7, SMTP protocol [RFC 5321] would be used for convergence layer. Location of the next node is done by using standard SMTP mechanism which is use of MX DNS records on the domain extracted from the right hand side of mailto: address.

(The above text happens to cover both routing and discovery of a next node to forward to by referencing SMTP.)

So the section with requirements on use of URI schemes with DTN would have something like:

When registering a new URI scheme with BPv7, the document registering the URI scheme MUST describe how URIs are used for next forwarding node location discovery. Such document MUST also define whether the URI scheme depends on any specific convergence layer(s).

Does this help?

	***	Thanks, I think I understand what you mean.  My original thought was that the URI-scheme-specific information that needed to be captured was limited
		to CBOR representation rules, which I figured could simply be included in the entries of the BP URI Scheme Type registry.  What you're talking about
		here is additional URI-scheme-specific information.

		From that perspective, it sounds like each entry in the BP URI Scheme Type registry needs two references: one to the document that the defines the URI
		scheme itself and a second reference to a document that defines the manner in which the URIs formed in that scheme are used as BP endpoint IDs: how
		such an endpoint ID must be represented in transmission (CBOR), what convergence-layer protocol(s) may be used to forward a bundle to a BP destination
		endpoint identified by such an ID, and how the ID of the convergence-layer protocol endpoint to use for that purpose can be inferred from that destination 			endpoint ID.

		Note, though, that in the general case the next BP node to forward to -- in a multi-hop path to the final destination node -- cannot be inferred from the
		destination EID.  Nor can the convergence-layer protocol that should be used to forward the bundle to that BP node.  This is the "late binding" concept that
		has been fundamental to the DTN architecture from the beginning.

		Taking up your example: suppose I am on Mars and I want to use BP to send an email.  My destination EID is a "mailto:" URI, but there is no SMTP server
		on Mars and SMTP itself does not run over BP.  My bundle will be forwarded to its final destination by an SMTP server on Earth, but I have to convey the
		bundle to that server somehow.  To do so, I need to forward the bundle to a relay node that uses two convergence-layer protocols: SMTP, for forwarding 			"mailto:" bundles to SMTP servers (acting as an SMTP client), and some protocol stack that operates over the space network (BP over LTP over encapsulation 			packets, for example), for receiving bundles forwarded from Mars.  I need to use that space network stack to get the bundle to the relay node, and the 				destination EID doesn't tell me how to do that.

		Mechanisms for route selection and convergence-layer protocol selection in DTN are going to be developed in multiple companion specifications as DTN is 			deployed in new environments and new requirements emerge.  Appealing as it would be to nail these things down in this specification somehow, we cannot.

>         on other state but in any case is beyond the scope of this
>         document. If the BPA elects to forward the bundle to some other
>         node(s) for further forwarding but finds it impossible to
>         select any node(s) to forward the bundle to, then forwarding is
>         contraindicated.
>      . Provided the bundle protocol agent succeeded in selecting the
>         node(s) to forward the bundle to, the bundle protocol agent
>         MUST subsequently select the convergence layer adapter(s) whose
>         services will enable the node to send the bundle to those
>         nodes.  The manner in which specific appropriate convergence
>         layer adapters are selected is beyond the scope of this
>         document.
> Similar to the above: lack of description of how convergence layers 
> are discovered (for example this might include discovery using DNS or 
> something
> else) or, alternatively, a mandatory to implement convergence layer 
> would affect interoperability. I think you need to add this as a 
> requirement to section 7 ("Services Required of the Convergence Layer").
> 		Adding a mandatory-to-implement convergence layer adapter in section
> 7 is an excellent idea.
> 		A specification for the TCP convergence-layer adapter is being 
> proposed concurrently with the BPv7 and BPsec specifications.
> 		If the Working Group agrees, we can simply reference that 
> specification in section 7.


> Also having some (even non normative) information about which 
> convergence layer to select if multiple are available would be useful.
>         If the agent finds it impossible to select any
>         appropriate convergence layer adapter(s) to use in forwarding
>         this bundle, then forwarding is contraindicated.
>    Step 5: When all selected convergence layer adapters have informed
>    the bundle protocol agent that they have concluded their data
>    sending procedures with regard to this bundle, processing may depend
>    on the results of those procedures.  If completion of the data
>    sending procedures by all selected convergence layer adapters has
>    not resulted in successful forwarding of the bundle (an
>    implementation-specific determination that is beyond the scope of
>    this specification), then the bundle protocol agent MAY choose (in
>    an implementation-specific manner, again beyond the scope of this
>    specification) to initiate another attempt to forward the bundle.
> Similar to the above: retries affect interoperability and should be 
> documented as description of a convergence layer document.
> I think you need to add this as a requirement to section 7 ("Services 
> Required of the Convergence Layer").
> 		I think mandating implementation of TCPCL in section 7 would address 
> this issue.


>    In that event, processing proceeds from Step 4 of Section 5.4.
> 2) As pointed out by Benjamin Schwartz:
> In Section 5.4.2
> Consistency: This section relies on the presence of a Previous Node 
> block, but nothing in the forwarding procedure instructs any agent to 
> add a Previous Node block.
> 		Right, Ben Kaduk pointed this out as well.  Language will be added 
> in version 23 of the draft.
> Correctness: If two nodes both opt to return failed bundles, how are 
> they to avoid a ping-pong loop?
> 		But on what basis would you terminate the ping pong, since on one of 
> those cycles a way out of the loop might appear?
> 		I think the answer is that the bundle lifetime and hop count 
> mechanisms will eventually cause the bundle to be destroyed, stopping 
> the routing loop.

Fair enough. I agree that hop count should be sufficient. So it would be worth pointing this out in the document.

	***	Okay.

> 3) As pointed out by Benjamin Schwartz:
> In Section 5.6
> Error handling: What about CBOR parsing failures?
> 		A CBOR parsing failure would constitute a malformation of the block; 
> Step 3 of 5.6 explains how block malformations are handled.

It was not clear to me that the current text covers this. Step 3 mostly talks about CRC. If the following text was supposed to cover invalid CBOR:

 If any block of the bundle is malformed according to this specification ...

then I suggest you clarify:

 If any block of the bundle is malformed according to this specification (including syntactically invalid CBOR) ...

	***	Sure, I will do that.

> ----------------------------------------------------------------------
> ----------------------------------------------------------------------


> ## Section 1
> Title: If this document doesn’t describe the operation, routing, or 
> management of bundles, maybe it doesn’t describe a complete protocol.
> Consider retitling to “Bundle Protocol Version 7: Format and 
> Architecture”
> [[Alexey]]: This relates to my DISCUSS points, but my DISCUSS position 
> is stronger than this statement.
> 		Please see my response to the DISCUSS position.
> 		I would note that RFC 791 doesn't include procedures for making 
> routing decisions (absent source routing) or retrying transmissions.

But there are other documents that do. They are required to implement an interoperable system.

To give you an example of why specifying retry behaviour is important:

a) one system implements no retries. As you don't specify that it is illegal, it is legal.
b) another system always retries once and only once. Again, as you don't specify that it is illegal, it is legal.

Systems a) and b) are not going to be interoperable.

I don't think you need to require a specific number of retries, but maybe specify that at least N retries should be attempted (unless the bundle expires before that) and maybe specify some minimum time period for retries.

	***	I disagree.  Systems (a) and (b) will interoperate; they will just exhibit different performance characteristics.  Why don't we let network operators make
		these kinds of decisions, based on the specific conditions under which their nodes run, rather than try to decide everything for them in this specification?

> ## Section 5.8
> Clarity: The insistence, here and earlier, that a bundle is only 
> fragmented into two packets, and that this can then be performed 
> recursively, seems unhelpful.  Bundles can be fragmented into 
> arbitrarily many pieces, and this binary subdivision concept is not 
> actually present in the protocol.  I suggest removing it from the text 
> as well.
> 		Why is this unhelpful?  It's the formal procedure by which bundles 
> are fragmented.  Let's not remove it.

I think saying that a bundle can only be fragmented into 2 pieces is a lie, because the algorithm says that it can be fragmented into more than 2. I found this text to be confusing as well. Just say that it can be fragmented into 2 or more non overlapping fragments.

	***	It is absolutely not a lie.  A bundle can be fragmented into exactly 2 pieces, each of which is a bundle.  There is no defined mechanism for fragmenting a single 		bundle into 3 pieces, or 4, other than the recursive exercise of the binary fragmentation mechanism defined in detail in section 5.8.  But I will try to make this 		clearer in the text.