Re: [dtn] New Custody Transfer Spec

"Burleigh, Scott C (312B)" <scott.c.burleigh@jpl.nasa.gov> Fri, 07 April 2017 21:37 UTC

Return-Path: <scott.c.burleigh@jpl.nasa.gov>
X-Original-To: dtn@ietfa.amsl.com
Delivered-To: dtn@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 416FB1250B8 for <dtn@ietfa.amsl.com>; Fri, 7 Apr 2017 14:37:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5umHv9975bj2 for <dtn@ietfa.amsl.com>; Fri, 7 Apr 2017 14:37:17 -0700 (PDT)
Received: from mail.jpl.nasa.gov (smtp.jpl.nasa.gov [128.149.139.109]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 07F7A127097 for <dtn@ietf.org>; Fri, 7 Apr 2017 14:37:16 -0700 (PDT)
Received: from mail.jpl.nasa.gov (ap-ehub-sp01.jpl.nasa.gov [128.149.137.148]) by smtp.jpl.nasa.gov (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with ESMTP id v37LbEVd010416 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256 bits) verified NO); Fri, 7 Apr 2017 14:37:14 -0700
Received: from AP-EMBX-SP10.RES.AD.JPL ([169.254.1.166]) by ap-ehub-sp01.RES.AD.JPL ([169.254.3.42]) with mapi id 14.03.0319.002; Fri, 7 Apr 2017 14:37:14 -0700
From: "Burleigh, Scott C (312B)" <scott.c.burleigh@jpl.nasa.gov>
To: Carlo Caini <carlo.caini@unibo.it>, Keith Scott <kscott.mitre@gmail.com>, "dtn@ietf.org" <dtn@ietf.org>
Thread-Topic: [dtn] New Custody Transfer Spec
Thread-Index: AQHSrLlrzMlsIQ1WwEeniprGNJr2E6G1ArY3gAVo4EA=
Date: Fri, 07 Apr 2017 21:37:13 +0000
Message-ID: <A5BEAD028815CB40A32A5669CF737C3B8A3D5C10@ap-embx-sp10.RES.AD.JPL>
References: <CAMXgdkRdQFWZLLOferBTXcepr9fvFKhLknWw51tJfO+8U4DKhA@mail.gmail.com> <c7aba84553a54f43b762d32b7383ea9a@E13-MBX4-DR.personale.dir.unibo.it>
In-Reply-To: <c7aba84553a54f43b762d32b7383ea9a@E13-MBX4-DR.personale.dir.unibo.it>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [207.151.104.72]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Source-Sender: scott.c.burleigh@jpl.nasa.gov
X-AUTH: Authorized
Archived-At: <https://mailarchive.ietf.org/arch/msg/dtn/jYNwMDSkyspVU99AR88ZGINSn8Y>
Subject: Re: [dtn] New Custody Transfer Spec
X-BeenThere: dtn@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Delay Tolerant Networking \(DTN\) discussion list at the IETF." <dtn.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dtn>, <mailto:dtn-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dtn/>
List-Post: <mailto:dtn@ietf.org>
List-Help: <mailto:dtn-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dtn>, <mailto:dtn-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Apr 2017 21:37:19 -0000

I started on another iteration of the CT book but on reflection I think I want to hold off on that for a moment and spend some time talking about the new stuff.

The fundamental problem, as I understand it, is that a non-custodial node - possibly even a non-CT-aware node, whose implementation does not conform to any of the CT specification requirements at all (as in fact any node might be) - might fragment a bundle for which an upstream node has taken custody.

Currently, a custody signal is applied only to the bundle that it pertains to, as identified by source node, creation timestamp, and the offset and length of the payload (within the application data unit that formed the payload of the original bundle before initial fragmentation).

Since in this case none of the fragments will have the same offset and length as the bundle for which custody was taken, no downstream node that accepts (or refuses) custody of any such fragment can cause the custodian to release custody of (or retransmit) the bundle of which it has custody.  All such custody signals have to be ignored and discarded.

So that bundle's retransmission timer will eventually expire and that (unfragmented) bundle will be retransmitted, perhaps unnecessarily, perhaps back to the same fragmenting non-CT node.  Custody transfer for that unfragmented bundle is no longer working properly.

Given this, I don't think the ETOOBIG concept helps: the node that fragments the bundle might not conform to the CT spec and therefore might not know about sending ETOOBIG.

In which case I am beginning to think that the only solution is to relax the principle that a custody signal is applied only to the identified bundle.  Instead, a custody signal is applied to the bundle(s) for which the receiving node has taken custody, for which source node and creation timestamp match those specified in the custody signal.

If the custody signal is Acceptance then all bytes in the intersections of the payload ranges of the custody signal and each such custodial bundle must be considered payload for which custody transfer has succeeded.

If the custody signal is Refusal then all bytes in the intersections of the payload ranges of the custody signal and each such custodial bundle must be considered payload for which custody transfer has failed.

When custody transfer has succeeded for ALL bytes in the payload range of a custodial bundle then we can process custody transfer success for that bundle.

When custody transfer has failed for ALL bytes in the payload range of a custodial bundle then we can process custody transfer failure for that bundle.

For each custodial bundle whose retransmission timer expires prior to either of those two outcomes, we retransmit the bundle.  Maybe fragment it and retransmit only the portions for which custody has not yet been accepted?

And maybe do a similar thing when it has been determined that, for each byte in the payload range of a given custodial bundle, custody has been either accepted or refused.  That is, fragment the bundle appropriately and release custody of the accepted portion(s) but retransmit the refused portion(s).

The bookkeeping is a little complex, but I don't see a good alternative.  Any ideas?

Scott

-----Original Message-----
From: Carlo Caini [mailto:carlo.caini@unibo.it] 
Sent: Tuesday, April 4, 2017 3:28 AM
To: Keith Scott <kscott.mitre@gmail.com>; Burleigh, Scott C (312B) <scott.c.burleigh@jpl.nasa.gov>; dtn@ietf.org
Subject: Re: [dtn] New Custody Transfer Spec

Dear Keith and Scott,
    I have added a few comments to the document in attachment, essentially to stress that there are now 3 options: acceptance, refusal and delegation. I hope they may be of some help, but feel absolutely free of dropping them.
Yours,
   Carlo

At 22:32 03/04/2017, Keith Scott wrote:
>[Changing subject to better match thread.]
>
>Scott,
>
>Thanks for your comments on my proposed methods.  I think I've 
>addressed these in the attached document, with the differences summarized as:
>
>    * Changed 'cover' to 'include' for payload ranges.  In cases  where 
>set theoretic A covers B was needed, I use text like "the  union of all 
>payload ranges meeting criteria XYZ includes range B'.
>    * I originally removed the encapsulation text, but added back a  
>version that references the note in section 3.2 of BPBIS -- not  sure 
>if the NOTE is 'spec-y' enough to reference or not -- what do you think?
>    * Changed all the 'custody signal information associated with a  
>bundle' to the simpler: Store all received custody signals that are  
>applicable to custodially-held bundles (where 'applicable to' is  add 
>to the definitions).  It's not as clean from the standpoint of  how I'd 
>want to implement things, but its easier to describe.
>The main difference between these and your original proposed text is 
>that these allow for a node to fragment a bundle that requests custody 
>without taking custody of it.  I think that would be very useful in 
>situations where nodes do not know the 'CL MTUs' of all links that a 
>bundle might traverse.  Without these mechanisms, if a node takes 
>custody of a bundle and all the next hops through which the bundle 
>might travel would need to fragment it, the bundle will be stuck and 
>have to expire at the custodian.
>
>An alternative mechanism might be the CT equivalent of ETOOBIG -- a 
>signal sent to the current custodian that a bundle needs to be 
>fragmented to size X before it can be forwarded.  That would have the 
>advantage of reducing complexity and processing at the expense of 
>efficiency (since the entire bundle WOULD have to be fragmented by the 
>current custodian(s?) and re-forwarded.
>
>Anyone have comments on an ETOOBIG equivalent vs. being able to 
>fragment bundles without taking custody of them?
>
>     --keith
>
>Content-Type: 
>application/vnd.openxmlformats-officedocument.wordprocessingml.document;
>         name="draft-ietf-dtn-bpct-00_fragEnabled.SB1_KLS2.docx"
>Content-Disposition: attachment;
>         filename="draft-ietf-dtn-bpct-00_fragEnabled.SB1_KLS2.docx"
>X-Attachment-Id: f_j12kno700
>
>_______________________________________________
>dtn mailing list
>dtn@ietf.org
>https://www.ietf.org/mailman/listinfo/dtn