Re: [dtn] New Custody Transfer Spec

Keith Scott <kscott.mitre@gmail.com> Tue, 11 April 2017 11:53 UTC

Return-Path: <kscott.mitre@gmail.com>
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 8870312945B for <dtn@ietfa.amsl.com>; Tue, 11 Apr 2017 04:53:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.698
X-Spam-Level:
X-Spam-Status: No, score=-2.698 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 3eQ2fmLaoej8 for <dtn@ietfa.amsl.com>; Tue, 11 Apr 2017 04:53:34 -0700 (PDT)
Received: from mail-wm0-x234.google.com (mail-wm0-x234.google.com [IPv6:2a00:1450:400c:c09::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 14DF5129468 for <dtn@ietf.org>; Tue, 11 Apr 2017 04:53:34 -0700 (PDT)
Received: by mail-wm0-x234.google.com with SMTP id u2so59021355wmu.0 for <dtn@ietf.org>; Tue, 11 Apr 2017 04:53:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=4H0yJ+XAvhIOHZY7xhmFNBqXI+EOT4IG9mon4yZEwPE=; b=OT9mHsuntayu857l9fIBcaAdl0sPXTK0KGnBkPQIPceUapj0pT+k8oCCRooaMr3aj2 qxsplsj4TQGecQHw4WehltNoWpTo5htkIuG6hRO5aORUj46nM3AxFl3VZ79o991qmLkX tqfZ/gyIZTN9qp4FGsDkdMQZK3lzAu/cYxSdNYeg/+sPO4B+8aAbcUMCu2HcQcRarSbo VMVDrHUh7Mw8Sl7QF2RMC7HHfE66gL+jLNtsMxs6M9vGk3EVjmjoemqNmfaAAK5qff8T S2rmjLjIcmYC+GhmrK9uUJKgVcgehnvTc8NNTI5FSY9XcVo9r5lSMmkNccQVN7sGoLg9 C9UA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=4H0yJ+XAvhIOHZY7xhmFNBqXI+EOT4IG9mon4yZEwPE=; b=OVcJPWkTPzIpA3XfzHwciwHMQs63BsKen4XNkvMFGbm8Aixt09Q9ROHQtOyeHhOpje sPfzOd93oTDhxkEVAPm/CSuDRFXU/0N0OIlADR0EtnmU7lCT5hn0qYbYKMFN6SsXWWxP 3jTkSqkbHW+gc0/3DlWLldG6Gryd6dTKA5pAi5pxOHAnz6mdSPAead+DzehpxuynwBMt t7IYTIvYBW+eUllGs6U3atWsAQvtn7JAZjzCnH1sPaxeXbeCmpY9PKkZ22y36r3n1q4q sEr9NHSSEP1olSD5ZsWezNlW/OVJDAE062kP6KrlS4f5xB2NhhcUB4IttE3liBu24cb9 lkqg==
X-Gm-Message-State: AN3rC/4nzuzff4AnSVuSxYoKqCaqitnbHlLfJUO8BShjb8FctoXoe5pMRl4AOPgxrxQ2oHER2GQDoh+vdhQmrQ==
X-Received: by 10.28.24.79 with SMTP id 76mr13868623wmy.111.1491911612608; Tue, 11 Apr 2017 04:53:32 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.28.236.70 with HTTP; Tue, 11 Apr 2017 04:53:32 -0700 (PDT)
In-Reply-To: <A5BEAD028815CB40A32A5669CF737C3B8A3D5C10@ap-embx-sp10.RES.AD.JPL>
References: <CAMXgdkRdQFWZLLOferBTXcepr9fvFKhLknWw51tJfO+8U4DKhA@mail.gmail.com> <c7aba84553a54f43b762d32b7383ea9a@E13-MBX4-DR.personale.dir.unibo.it> <A5BEAD028815CB40A32A5669CF737C3B8A3D5C10@ap-embx-sp10.RES.AD.JPL>
From: Keith Scott <kscott.mitre@gmail.com>
Date: Tue, 11 Apr 2017 07:53:32 -0400
Message-ID: <CAMXgdkRMdeX0RphDDO=uBT=bW=+9+JxK3rn2vhkXsWo3J-9AkA@mail.gmail.com>
To: "Burleigh, Scott C (312B)" <scott.c.burleigh@jpl.nasa.gov>
Cc: Carlo Caini <carlo.caini@unibo.it>, "dtn@ietf.org" <dtn@ietf.org>
Content-Type: multipart/alternative; boundary="001a11469e06b4b6c1054ce2bd68"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dtn/268rysZdGl94JTuPnoY-cx8YTDY>
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: Tue, 11 Apr 2017 11:53:38 -0000

Scott,

Yes, I concur that the current definition of 'bundle' as (source EID,
sending timestamp [, fragment offset, fragment length]) is wrong, and that
the unique identifier should go back to (source EID, sending timestamp)*.
I *believe* this was the original notion but at some point in the past we
made the switch and I don't think it has served us well.

If one equates (source EID, sending timestamp) to 'IPID' for IP, then we
have a unique token that identifies 'the bundle' to which the fragment(s)
apply, and can manage custody accordingly.

Since what you describe is what I proposed in my email of April 3, I'm for
it.

  --keith



On Fri, Apr 7, 2017 at 5:37 PM, Burleigh, Scott C (312B) <
scott.c.burleigh@jpl.nasa.gov> wrote:

> 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
>