
From nobody Fri Dec 12 16:02:45 2014
Return-Path: <vangelis@netmode.ntua.gr>
X-Original-To: dtn-users@ietfa.amsl.com
Delivered-To: dtn-users@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E80191A1AB9 for <dtn-users@ietfa.amsl.com>; Fri, 12 Dec 2014 16:02:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.791
X-Spam-Level: 
X-Spam-Status: No, score=0.791 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 VnwTuXCTmD7l for <dtn-users@ietfa.amsl.com>; Fri, 12 Dec 2014 16:02:40 -0800 (PST)
Received: from ulysses.noc.ntua.gr (ulysses.noc.ntua.gr [IPv6:2001:648:2000:de::230]) by ietfa.amsl.com (Postfix) with ESMTP id A517D1A07BD for <dtn-users@irtf.org>; Fri, 12 Dec 2014 16:02:39 -0800 (PST)
Received: from netmode.ece.ntua.gr (dolly.netmode.ece.ntua.gr [147.102.13.10]) by ulysses.noc.ntua.gr (8.14.5/8.14.5) with ESMTP id sBD02anY075079 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT);  Sat, 13 Dec 2014 02:02:37 +0200 (EET) (envelope-from vangelis@netmode.ntua.gr)
Received: from [147.102.13.130] (dhcp-130.netmode.ece.ntua.gr [147.102.13.130]) (authenticated bits=0) by netmode.ece.ntua.gr (8.14.4/8.14.3) with ESMTP id sBD028jX061269 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Sat, 13 Dec 2014 02:02:09 +0200 (EET) (envelope-from vangelis@netmode.ntua.gr)
Message-ID: <548B81FD.7030500@netmode.ntua.gr>
Date: Sat, 13 Dec 2014 02:02:05 +0200
From: Vangelis Anifantis <vangelis@netmode.ntua.gr>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0
MIME-Version: 1.0
To: "Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <david.a.zoller@nasa.gov>,  "dtn-users@irtf.org" <dtn-users@irtf.org>
References: <544124B9.9010600@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C6131741@NDMSMBX404.ndc.nasa.gov>
In-Reply-To: <94CFB3711B4CAE4DBFC5BEB3374BF0C6131741@NDMSMBX404.ndc.nasa.gov>
Content-Type: multipart/alternative; boundary="------------010403090200080108010204"
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (ulysses.noc.ntua.gr [147.102.222.230]); Sat, 13 Dec 2014 02:02:37 +0200 (EET)
X-Virus-Scanned: clamav-milter 0.97.5 at ulysses.noc.ntua.gr
X-Virus-Status: Clean
Archived-At: http://mailarchive.ietf.org/arch/msg/dtn-users/VSOn-g73eLPXO7yQ4dWu2sZmuJ0
Subject: Re: [dtn-users] DTN2 custody signal handling
X-BeenThere: dtn-users@irtf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "The Delay-Tolerant Networking Research Group \(DTNRG\) - Users." <dtn-users.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www.irtf.org/mail-archive/web/dtn-users/>
List-Post: <mailto:dtn-users@irtf.org>
List-Help: <mailto:dtn-users-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=subscribe>
X-List-Received-Date: Sat, 13 Dec 2014 00:02:44 -0000

This is a multi-part message in MIME format.
--------------010403090200080108010204
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Hello David,

Thanks for your response. It actually helps a lot, since it answers my
question regarding the custody signal handling from the administrative
element.

However, on the subject of the Custody Timer, I still have problems on
setting the custody timer default values using the param command (e.g.,
param set custody_timer_max 1000). It seems that I cannot manually
override the default values by using the command "param" (it has been
validated by the debug logs, the forwarding log of each bundle, as well
as in practice by measuring the retransmission delay).

Following your suggestion/implementation, I have changed the timeout
calculation in the CustodyTimer.cc so as to cover my own needs and it
works fine, but it would be convenient for me to be able to change
on-the-fly the min/max values via the param command. May i miss any
configuration setup (or external package) that prevent my dtn
installation (i have not used any special customization) from this kind
of functionality?

I would appreciate any help.

Regards,
Vangelis Anifantis


On 10/22/2014 12:04 AM, Zoller, David A. (MSFC-EO50)[HOSC SERVICES
CONTRACT] wrote:
> Hi Vangelis,
> Since the bundles are displaying as (NOT PENDING) the custody signal wa=
s actually processed by the administrative element (AdminRegistration.cc)=
=2E=20
> The initial bundles remain in the all_bundles list because the Custody =
Timer still has a reference to the bundle - when the timer expires the bu=
ndle will be deleted. The Custody Signal remains in the all_bundles and p=
ending list because AdminRegistration does not update the fwdlog to indic=
ate that the bundle was delivered.
>
> I have not noticed a functional issue after changing the custody timer =
default values using the param command but may not have paid close enough=
 attention. It could just be a logging issue but I can't say for sure.=20
>
> While on the subject of the Custody Timer, I will say that I do not lik=
e the implementation which sets the timeout to the min plus the percentag=
e and then overrides that with the max if appropriate. We changed ours so=
 that it starts with the percentage and then overrides with the min and m=
ax if needed.
>
> Hope this helps a bit,
> DZ
>
> -----Original Message-----
> From: dtn-users [mailto:dtn-users-bounces@irtf.org] On Behalf Of Vangel=
is Anifantis
> Sent: Friday, October 17, 2014 9:16 AM
> To: dtn-users@irtf.org
> Subject: [dtn-users] DTN2 custody signal handling
>
> hello,
>
> I have been recently playing around with DTN2 (dtn2.9.0 version) refere=
nce implementation to better understand the custody transfer capability (=
e.g., sending a bundle via dtnsend with activated the option -c).
>
> What i am seeing is that, as expected, each dtn node in the communicati=
on chain accepts the custody request, becomes the custodian and sends bac=
k a custody signal administrative record to indicate "custody_succeeded s=
et to 1" (with indications regarding custody timer parameters as configur=
ed in the current custodian). However, I observe that the custody signal =
is not handled (neither received) by the administrative element, thus, re=
maining on the "all_bundles list" and "pending list"; and consequently, t=
he bundle protocol agent does not follow the custody transfer success pro=
cedure by deleting the initial bundle (i.e., there is still a reference o=
n the "all_bundles list"=20
> regarding the initial bundle with indication (NOT PENDING)). Do i miss =
any configuration setup regarding the administrative element which is dee=
med necessary?
>
> Furthermore, even though I have set manually (custody_timer_min, custod=
y_timer_lifetime_pct,  custody_timer_max) at all dtn nodes to differ from=
 the default values, the forwarding log of the initial generated bundle k=
eeps displaying the default values, e.g., e.g.,
>   forwarding log:
>          TRANSMITTED -> link_name [dtn:none] FORWARD at 1412929830.5129=
9 [custody min 1800 pct 25 max 0] Why is this happening?
>
> Thanks in advance for any help.
>
> Regards,
> Vangelis Anifantis
>
> _______________________________________________
> dtn-users mailing list
> dtn-users@irtf.org
> https://www.irtf.org/mailman/listinfo/dtn-users
>
--=20

OpenPGP public key ID:=20
pub  4096R/A97BA940 <https://pgp.mit.edu/pks/lookup?op=3Dget&search=3D0xD=
FB631A0A97BA940> 2014-11-15 Evangelos Anifantis <vangelis@netmode.ntua.gr=
> <https://pgp.mit.edu/pks/lookup?op=3Dvindex&fingerprint=3Don&search=3D0=
xDFB631A0A97BA940>
	 Fingerprint=3D9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B A940=20
=09
=09



--------------010403090200080108010204
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello David,<br>
    <br>
    Thanks for your response. It actually helps a lot, since it answers
    my question regarding the custody signal handling from the
    administrative element.<br>
    <br>
    However, on the subject of the Custody Timer, I still have problems
    on setting the custody timer default values using the param command
    (e.g., param set custody_timer_max 1000). It seems that I cannot
    manually override the default values by using the command "param"
    (it has been validated by the debug logs, the forwarding log of each
    bundle, as well as in practice by measuring the retransmission
    delay). <br>
    <br>
    Following your suggestion/implementation, I have changed the timeout
    calculation in the CustodyTimer.cc so as to cover my own needs and
    it works fine, but it would be convenient for me to be able to
    change on-the-fly the min/max values via the param command. May i
    miss any configuration setup (or external package) that prevent my
    dtn installation (i have not used any special customization) from
    this kind of functionality?<br>
    <br>
    I would appreciate any help.<br>
    <br>
    Regards,<br>
    Vangelis Anifantis<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 10/22/2014 12:04 AM, Zoller, David
      A. (MSFC-EO50)[HOSC SERVICES CONTRACT] wrote:<br>
    </div>
    <blockquote
cite="mid:94CFB3711B4CAE4DBFC5BEB3374BF0C6131741@NDMSMBX404.ndc.nasa.gov"
      type="cite">
      <pre wrap="">Hi Vangelis,
Since the bundles are displaying as (NOT PENDING) the custody signal was actually processed by the administrative element (AdminRegistration.cc). 
The initial bundles remain in the all_bundles list because the Custody Timer still has a reference to the bundle - when the timer expires the bundle will be deleted. The Custody Signal remains in the all_bundles and pending list because AdminRegistration does not update the fwdlog to indicate that the bundle was delivered.

I have not noticed a functional issue after changing the custody timer default values using the param command but may not have paid close enough attention. It could just be a logging issue but I can't say for sure. 

While on the subject of the Custody Timer, I will say that I do not like the implementation which sets the timeout to the min plus the percentage and then overrides that with the max if appropriate. We changed ours so that it starts with the percentage and then overrides with the min and max if needed.

Hope this helps a bit,
DZ

-----Original Message-----
From: dtn-users [<a class="moz-txt-link-freetext" href="mailto:dtn-users-bounces@irtf.org">mailto:dtn-users-bounces@irtf.org</a>] On Behalf Of Vangelis Anifantis
Sent: Friday, October 17, 2014 9:16 AM
To: <a class="moz-txt-link-abbreviated" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a>
Subject: [dtn-users] DTN2 custody signal handling

hello,

I have been recently playing around with DTN2 (dtn2.9.0 version) reference implementation to better understand the custody transfer capability (e.g., sending a bundle via dtnsend with activated the option -c).

What i am seeing is that, as expected, each dtn node in the communication chain accepts the custody request, becomes the custodian and sends back a custody signal administrative record to indicate "custody_succeeded set to 1" (with indications regarding custody timer parameters as configured in the current custodian). However, I observe that the custody signal is not handled (neither received) by the administrative element, thus, remaining on the "all_bundles list" and "pending list"; and consequently, the bundle protocol agent does not follow the custody transfer success procedure by deleting the initial bundle (i.e., there is still a reference on the "all_bundles list" 
regarding the initial bundle with indication (NOT PENDING)). Do i miss any configuration setup regarding the administrative element which is deemed necessary?

Furthermore, even though I have set manually (custody_timer_min, custody_timer_lifetime_pct,  custody_timer_max) at all dtn nodes to differ from the default values, the forwarding log of the initial generated bundle keeps displaying the default values, e.g., e.g.,
  forwarding log:
         TRANSMITTED -&gt; link_name [dtn:none] FORWARD at 1412929830.51299 [custody min 1800 pct 25 max 0] Why is this happening?

Thanks in advance for any help.

Regards,
Vangelis Anifantis

_______________________________________________
dtn-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a>
<a class="moz-txt-link-freetext" href="https://www.irtf.org/mailman/listinfo/dtn-users">https://www.irtf.org/mailman/listinfo/dtn-users</a>

</pre>
    </blockquote>
    <div class="moz-signature">-- <br>
      <meta http-equiv="content-type" content="text/html;
        charset=windows-1252">
      <title></title>
      <pre><font color="gray">OpenPGP public key ID: 
pub  4096R/<a href="https://pgp.mit.edu/pks/lookup?op=get&amp;search=0xDFB631A0A97BA940">A97BA940</a> 2014-11-15 <a href="https://pgp.mit.edu/pks/lookup?op=vindex&amp;fingerprint=on&amp;search=0xDFB631A0A97BA940">Evangelos Anifantis &lt;vangelis@netmode.ntua.gr&gt;</a>
	 Fingerprint=9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B A940 
	</font>
	</pre>
      <br>
      <vangelis@netmode.ntua.gr></vangelis@netmode.ntua.gr> </div>
  </body>
</html>

--------------010403090200080108010204--


From nobody Sun Dec 14 02:26:14 2014
Return-Path: <vangelis@netmode.ntua.gr>
X-Original-To: dtn-users@ietfa.amsl.com
Delivered-To: dtn-users@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4C7541A6F2B for <dtn-users@ietfa.amsl.com>; Sun, 14 Dec 2014 02:26:11 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.01
X-Spam-Level: 
X-Spam-Status: No, score=-0.01 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 JigpJl_fwjgf for <dtn-users@ietfa.amsl.com>; Sun, 14 Dec 2014 02:26:06 -0800 (PST)
Received: from diomedes.noc.ntua.gr (diomedes.noc.ntua.gr [IPv6:2001:648:2000:de::220]) by ietfa.amsl.com (Postfix) with ESMTP id 2E9921A6F2A for <dtn-users@irtf.org>; Sun, 14 Dec 2014 02:26:05 -0800 (PST)
Received: from netmode.ece.ntua.gr (dolly.netmode.ece.ntua.gr [147.102.13.10]) by diomedes.noc.ntua.gr (8.14.5/8.14.5) with ESMTP id sBEAQ3JT059371 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT);  Sun, 14 Dec 2014 12:26:03 +0200 (EET) (envelope-from vangelis@netmode.ntua.gr)
Received: from [192.168.1.4] (178-242-48.dynamic.cyta.gr [178.59.242.48]) (authenticated bits=0) by netmode.ece.ntua.gr (8.14.4/8.14.3) with ESMTP id sBEAPaA6096332 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Sun, 14 Dec 2014 12:25:37 +0200 (EET) (envelope-from vangelis@netmode.ntua.gr)
Message-ID: <548D65A0.2040601@netmode.ntua.gr>
Date: Sun, 14 Dec 2014 12:25:36 +0200
From: Vangelis Anifantis <vangelis@netmode.ntua.gr>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0
MIME-Version: 1.0
To: "Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <david.a.zoller@nasa.gov>,  "dtn-users@irtf.org" <dtn-users@irtf.org>
References: <544124B9.9010600@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C6131741@NDMSMBX404.ndc.nasa.gov> <548B81FD.7030500@netmode.ntua.gr>
In-Reply-To: <548B81FD.7030500@netmode.ntua.gr>
Content-Type: multipart/alternative; boundary="------------090706080107070800090601"
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (diomedes.noc.ntua.gr [147.102.222.220]); Sun, 14 Dec 2014 12:26:03 +0200 (EET)
X-Virus-Scanned: clamav-milter 0.97.5 at diomedes.noc.ntua.gr
X-Virus-Status: Clean
Archived-At: http://mailarchive.ietf.org/arch/msg/dtn-users/U2aBBeo2_Eb1Yn3bDY7UmqQ0Jas
Subject: Re: [dtn-users] DTN2 custody signal handling
X-BeenThere: dtn-users@irtf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "The Delay-Tolerant Networking Research Group \(DTNRG\) - Users." <dtn-users.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www.irtf.org/mail-archive/web/dtn-users/>
List-Post: <mailto:dtn-users@irtf.org>
List-Help: <mailto:dtn-users-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=subscribe>
X-List-Received-Date: Sun, 14 Dec 2014 10:26:11 -0000

This is a multi-part message in MIME format.
--------------090706080107070800090601
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: 7bit

Just for the records, I have finally found out what was going on
regarding the param command.

For my testing scenarios I used a static routing scheme by which each
bundle was forwarded to a predetermined link. To create disruptions, I
used to shut down the dtnd daemon of the remote dtn node. In this case,
each generated bundle was directly forwarded to the predetermined link
(as specified in the route entry by the initial configuration file),
where the custody timers (i.e., min, lifetime_pct, max) had values equal
to the ones at the time of the specific route entry creation/definition
(for my case, the route entry was static and created by the initial
dtn.conf, namely, before any param command reconfiguration). Thus, I
always noticed the default custody timer values ([custody min 1800 pct
25 max 0]).

In case that I change the custody timer values (using param), and then I
re-create the route entry, e.g.,
route del dtn://node20.dtn/*
route add dtn://node20.dtn/* link_0
any new custodian bundle will be bound with the new custody timer values
(as set using the param command).

Besides, I have also noticed that a custody timer is not rescheduled.
Specifically, if the custody_timeout fires and the bundle is not
successfully delivered to the next custodian node, the custody_timeout
is not rescheduled so as to try a new retransmission of the bundle in
the future (does this make sense?).

Regards,
Vangelis Anifantis


On 12/13/2014 2:02 AM, Vangelis Anifantis wrote:
> Hello David,
>
> Thanks for your response. It actually helps a lot, since it answers my
> question regarding the custody signal handling from the administrative
> element.
>
> However, on the subject of the Custody Timer, I still have problems on
> setting the custody timer default values using the param command
> (e.g., param set custody_timer_max 1000). It seems that I cannot
> manually override the default values by using the command "param" (it
> has been validated by the debug logs, the forwarding log of each
> bundle, as well as in practice by measuring the retransmission delay).
>
> Following your suggestion/implementation, I have changed the timeout
> calculation in the CustodyTimer.cc so as to cover my own needs and it
> works fine, but it would be convenient for me to be able to change
> on-the-fly the min/max values via the param command. May i miss any
> configuration setup (or external package) that prevent my dtn
> installation (i have not used any special customization) from this
> kind of functionality?
>
> I would appreciate any help.
>
> Regards,
> Vangelis Anifantis
>
>
> On 10/22/2014 12:04 AM, Zoller, David A. (MSFC-EO50)[HOSC SERVICES
> CONTRACT] wrote:
>> Hi Vangelis,
>> Since the bundles are displaying as (NOT PENDING) the custody signal was actually processed by the administrative element (AdminRegistration.cc). 
>> The initial bundles remain in the all_bundles list because the Custody Timer still has a reference to the bundle - when the timer expires the bundle will be deleted. The Custody Signal remains in the all_bundles and pending list because AdminRegistration does not update the fwdlog to indicate that the bundle was delivered.
>>
>> I have not noticed a functional issue after changing the custody timer default values using the param command but may not have paid close enough attention. It could just be a logging issue but I can't say for sure. 
>>
>> While on the subject of the Custody Timer, I will say that I do not like the implementation which sets the timeout to the min plus the percentage and then overrides that with the max if appropriate. We changed ours so that it starts with the percentage and then overrides with the min and max if needed.
>>
>> Hope this helps a bit,
>> DZ
>>
>> -----Original Message-----
>> From: dtn-users [mailto:dtn-users-bounces@irtf.org] On Behalf Of Vangelis Anifantis
>> Sent: Friday, October 17, 2014 9:16 AM
>> To: dtn-users@irtf.org
>> Subject: [dtn-users] DTN2 custody signal handling
>>
>> hello,
>>
>> I have been recently playing around with DTN2 (dtn2.9.0 version) reference implementation to better understand the custody transfer capability (e.g., sending a bundle via dtnsend with activated the option -c).
>>
>> What i am seeing is that, as expected, each dtn node in the communication chain accepts the custody request, becomes the custodian and sends back a custody signal administrative record to indicate "custody_succeeded set to 1" (with indications regarding custody timer parameters as configured in the current custodian). However, I observe that the custody signal is not handled (neither received) by the administrative element, thus, remaining on the "all_bundles list" and "pending list"; and consequently, the bundle protocol agent does not follow the custody transfer success procedure by deleting the initial bundle (i.e., there is still a reference on the "all_bundles list" 
>> regarding the initial bundle with indication (NOT PENDING)). Do i miss any configuration setup regarding the administrative element which is deemed necessary?
>>
>> Furthermore, even though I have set manually (custody_timer_min, custody_timer_lifetime_pct,  custody_timer_max) at all dtn nodes to differ from the default values, the forwarding log of the initial generated bundle keeps displaying the default values, e.g., e.g.,
>>   forwarding log:
>>          TRANSMITTED -> link_name [dtn:none] FORWARD at 1412929830.51299 [custody min 1800 pct 25 max 0] Why is this happening?
>>
>> Thanks in advance for any help.
>>
>> Regards,
>> Vangelis Anifantis
>>
>> _______________________________________________
>> dtn-users mailing list
>> dtn-users@irtf.org
>> https://www.irtf.org/mailman/listinfo/dtn-users
>>
> -- 
> OpenPGP public key ID: 
> pub  4096R/A97BA940 <https://pgp.mit.edu/pks/lookup?op=get&search=0xDFB631A0A97BA940> 2014-11-15 Evangelos Anifantis <vangelis@netmode.ntua.gr> <https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0xDFB631A0A97BA940>
> 	 Fingerprint=9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B A940 
> 	
> 	
>


--------------090706080107070800090601
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 7bit

<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Just for the records, I have finally found out what was going on
    regarding the param command. <br>
    <br>
    For my testing scenarios I used a static routing scheme by which
    each bundle was forwarded to a predetermined link. To create
    disruptions, I used to shut down the dtnd daemon of the remote dtn
    node. In this case, each generated bundle was directly forwarded to
    the predetermined link (as specified in the route entry by the
    initial configuration file), where the custody timers (i.e., min,
    lifetime_pct, max) had values equal to the ones at the time of the
    specific route entry creation/definition (for my case, the route
    entry was static and created by the initial dtn.conf, namely, before
    any param command reconfiguration). Thus, I always noticed the
    default custody timer values ([custody min 1800 pct 25 max 0]).<br>
    <br>
    In case that I change the custody timer values (using param), and
    then I re-create the route entry, e.g.,<br>
    route del dtn://node20.dtn/* <br>
    route add dtn://node20.dtn/* link_0<br>
    any new custodian bundle will be bound with the new custody timer
    values (as set using the param command).<br>
    <br>
    Besides, I have also noticed that a custody timer is not
    rescheduled. Specifically, if the custody_timeout fires and the
    bundle is not successfully delivered to the next custodian node, the
    custody_timeout is not rescheduled so as to try a new retransmission
    of the bundle in the future (does this make sense?).<br>
    <br>
    Regards,<br>
    Vangelis Anifantis<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 12/13/2014 2:02 AM, Vangelis
      Anifantis wrote:<br>
    </div>
    <blockquote cite="mid:548B81FD.7030500@netmode.ntua.gr" type="cite">
      <meta content="text/html; charset=windows-1252"
        http-equiv="Content-Type">
      Hello David,<br>
      <br>
      Thanks for your response. It actually helps a lot, since it
      answers my question regarding the custody signal handling from the
      administrative element.<br>
      <br>
      However, on the subject of the Custody Timer, I still have
      problems on setting the custody timer default values using the
      param command (e.g., param set custody_timer_max 1000). It seems
      that I cannot manually override the default values by using the
      command "param" (it has been validated by the debug logs, the
      forwarding log of each bundle, as well as in practice by measuring
      the retransmission delay). <br>
      <br>
      Following your suggestion/implementation, I have changed the
      timeout calculation in the CustodyTimer.cc so as to cover my own
      needs and it works fine, but it would be convenient for me to be
      able to change on-the-fly the min/max values via the param
      command. May i miss any configuration setup (or external package)
      that prevent my dtn installation (i have not used any special
      customization) from this kind of functionality?<br>
      <br>
      I would appreciate any help.<br>
      <br>
      Regards,<br>
      Vangelis Anifantis<br>
      <br>
      <br>
      <div class="moz-cite-prefix">On 10/22/2014 12:04 AM, Zoller, David
        A. (MSFC-EO50)[HOSC SERVICES CONTRACT] wrote:<br>
      </div>
      <blockquote
cite="mid:94CFB3711B4CAE4DBFC5BEB3374BF0C6131741@NDMSMBX404.ndc.nasa.gov"
        type="cite">
        <pre wrap="">Hi Vangelis,
Since the bundles are displaying as (NOT PENDING) the custody signal was actually processed by the administrative element (AdminRegistration.cc). 
The initial bundles remain in the all_bundles list because the Custody Timer still has a reference to the bundle - when the timer expires the bundle will be deleted. The Custody Signal remains in the all_bundles and pending list because AdminRegistration does not update the fwdlog to indicate that the bundle was delivered.

I have not noticed a functional issue after changing the custody timer default values using the param command but may not have paid close enough attention. It could just be a logging issue but I can't say for sure. 

While on the subject of the Custody Timer, I will say that I do not like the implementation which sets the timeout to the min plus the percentage and then overrides that with the max if appropriate. We changed ours so that it starts with the percentage and then overrides with the min and max if needed.

Hope this helps a bit,
DZ

-----Original Message-----
From: dtn-users [<a moz-do-not-send="true" class="moz-txt-link-freetext" href="mailto:dtn-users-bounces@irtf.org">mailto:dtn-users-bounces@irtf.org</a>] On Behalf Of Vangelis Anifantis
Sent: Friday, October 17, 2014 9:16 AM
To: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a>
Subject: [dtn-users] DTN2 custody signal handling

hello,

I have been recently playing around with DTN2 (dtn2.9.0 version) reference implementation to better understand the custody transfer capability (e.g., sending a bundle via dtnsend with activated the option -c).

What i am seeing is that, as expected, each dtn node in the communication chain accepts the custody request, becomes the custodian and sends back a custody signal administrative record to indicate "custody_succeeded set to 1" (with indications regarding custody timer parameters as configured in the current custodian). However, I observe that the custody signal is not handled (neither received) by the administrative element, thus, remaining on the "all_bundles list" and "pending list"; and consequently, the bundle protocol agent does not follow the custody transfer success procedure by deleting the initial bundle (i.e., there is still a reference on the "all_bundles list" 
regarding the initial bundle with indication (NOT PENDING)). Do i miss any configuration setup regarding the administrative element which is deemed necessary?

Furthermore, even though I have set manually (custody_timer_min, custody_timer_lifetime_pct,  custody_timer_max) at all dtn nodes to differ from the default values, the forwarding log of the initial generated bundle keeps displaying the default values, e.g., e.g.,
  forwarding log:
         TRANSMITTED -&gt; link_name [dtn:none] FORWARD at 1412929830.51299 [custody min 1800 pct 25 max 0] Why is this happening?

Thanks in advance for any help.

Regards,
Vangelis Anifantis

_______________________________________________
dtn-users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://www.irtf.org/mailman/listinfo/dtn-users">https://www.irtf.org/mailman/listinfo/dtn-users</a>

</pre>
      </blockquote>
      <div class="moz-signature">-- <br>
        <meta http-equiv="content-type" content="text/html;
          charset=windows-1252">
        <title></title>
        <pre><font color="gray">OpenPGP public key ID: 
pub  4096R/<a moz-do-not-send="true" href="https://pgp.mit.edu/pks/lookup?op=get&amp;search=0xDFB631A0A97BA940">A97BA940</a> 2014-11-15 <a moz-do-not-send="true" href="https://pgp.mit.edu/pks/lookup?op=vindex&amp;fingerprint=on&amp;search=0xDFB631A0A97BA940">Evangelos Anifantis &lt;vangelis@netmode.ntua.gr&gt;</a>
	 Fingerprint=9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B A940 
	</font>
	</pre>
        <br>
        <vangelis@netmode.ntua.gr></vangelis@netmode.ntua.gr> </div>
    </blockquote>
    <br>
  </body>
</html>

--------------090706080107070800090601--


From nobody Mon Dec 15 06:50:15 2014
Return-Path: <david.a.zoller@nasa.gov>
X-Original-To: dtn-users@ietfa.amsl.com
Delivered-To: dtn-users@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 63B821A6F5B for <dtn-users@ietfa.amsl.com>; Mon, 15 Dec 2014 06:50:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 7-Yfod4S6B55 for <dtn-users@ietfa.amsl.com>; Mon, 15 Dec 2014 06:50:08 -0800 (PST)
Received: from ndmsnpf01.ndc.nasa.gov (ndmsnpf01.ndc.nasa.gov [IPv6:2001:4d0:8302:1100::101]) by ietfa.amsl.com (Postfix) with ESMTP id 4B0BD1A1B64 for <dtn-users@irtf.org>; Mon, 15 Dec 2014 06:50:08 -0800 (PST)
Received: from ndmsppt103.ndc.nasa.gov (ndmsppt103.ndc.nasa.gov [198.117.0.68]) by ndmsnpf01.ndc.nasa.gov (Postfix) with ESMTP id 6F12F26005A; Mon, 15 Dec 2014 08:50:07 -0600 (CST)
Received: from NDMSCHT112.ndc.nasa.gov (ndmscht112-pub.ndc.nasa.gov [198.117.0.212]) by ndmsppt103.ndc.nasa.gov (8.14.7/8.14.7) with ESMTP id sBFEo7O3018677; Mon, 15 Dec 2014 08:50:07 -0600
Received: from NDMSMBX404.ndc.nasa.gov ([169.254.1.68]) by NDMSCHT112.ndc.nasa.gov ([198.117.0.212]) with mapi id 14.03.0195.001; Mon, 15 Dec 2014 08:50:07 -0600
From: "Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <david.a.zoller@nasa.gov>
To: Vangelis Anifantis <vangelis@netmode.ntua.gr>, "dtn-users@irtf.org" <dtn-users@irtf.org>
Thread-Topic: [dtn-users] DTN2 custody signal handling
Thread-Index: AQHP6hUPkdQ7fepR00uUzvS8flw0WJw0W2vggFkFDoCAAkCLAIABYjeg
Date: Mon, 15 Dec 2014 14:50:06 +0000
Message-ID: <94CFB3711B4CAE4DBFC5BEB3374BF0C616935F@NDMSMBX404.ndc.nasa.gov>
References: <544124B9.9010600@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C6131741@NDMSMBX404.ndc.nasa.gov> <548B81FD.7030500@netmode.ntua.gr> <548D65A0.2040601@netmode.ntua.gr>
In-Reply-To: <548D65A0.2040601@netmode.ntua.gr>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [198.119.225.186]
Content-Type: multipart/alternative; boundary="_000_94CFB3711B4CAE4DBFC5BEB3374BF0C616935FNDMSMBX404ndcnasa_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.13.68, 1.0.33,  0.0.0000 definitions=2014-12-15_02:2014-12-15,2014-12-15,1970-01-01 signatures=0
Archived-At: http://mailarchive.ietf.org/arch/msg/dtn-users/3iOYQzCq8OjbYkrumzGFgzz26nY
Subject: Re: [dtn-users] DTN2 custody signal handling
X-BeenThere: dtn-users@irtf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "The Delay-Tolerant Networking Research Group \(DTNRG\) - Users." <dtn-users.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www.irtf.org/mail-archive/web/dtn-users/>
List-Post: <mailto:dtn-users@irtf.org>
List-Help: <mailto:dtn-users-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=subscribe>
X-List-Received-Date: Mon, 15 Dec 2014 14:50:14 -0000

--_000_94CFB3711B4CAE4DBFC5BEB3374BF0C616935FNDMSMBX404ndcnasa_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hello Vangelis,
Thanks for digging into and figuring out how the custody timer specs and ro=
ute specs interrelate. It looks like it would be useful to be able to overr=
ide custody spec params on the "route add" command and possibly to implemen=
t a "route reconfigure" command to change them on the fly.

A custody timer is started for the bundle as part of the BundleDaemon's pro=
cessing of the BundleTransmitted event which the convergence layer issues. =
When a custody_timeout fires, the bundle should be re-routed and transmitte=
d resulting in another BundleTransmitted event being issued resulting in st=
arting a new custody timer. If there is not an open connection when the cus=
tody_timeout fires, then the bundle should either be queued as deferred on =
a known link(s) or there may not be a link to add it to at the time. If the=
 known link eventually establishes its connection then the bundle should be=
 transmitted which starts the next custody timer. If a new link is establis=
hed then all pending bundles are checked to see if they can be routed throu=
gh the new connection which when transmitted would start a new custody time=
r.

Basically, the custody timer is only started after it is known that the bun=
dle has been transmitted. There is a special case in the comments in Bundle=
Daemon::handle_bundle_transmitted() if configured to wait for reliable tran=
smission that could result in returning without starting a new custody time=
r which should issue a warning "XXX/demmer fixme transmitted special case".

Could you be hitting the special case?
Or, can you provide more detail on the custody timer not being rescheduled =
scenario including which convergence layer?
Regards,
DZ


From: Vangelis Anifantis [mailto:vangelis@netmode.ntua.gr]
Sent: Sunday, December 14, 2014 4:26 AM
To: Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]; dtn-users@irtf.or=
g
Subject: Re: [dtn-users] DTN2 custody signal handling

Just for the records, I have finally found out what was going on regarding =
the param command.

For my testing scenarios I used a static routing scheme by which each bundl=
e was forwarded to a predetermined link. To create disruptions, I used to s=
hut down the dtnd daemon of the remote dtn node. In this case, each generat=
ed bundle was directly forwarded to the predetermined link (as specified in=
 the route entry by the initial configuration file), where the custody time=
rs (i.e., min, lifetime_pct, max) had values equal to the ones at the time =
of the specific route entry creation/definition (for my case, the route ent=
ry was static and created by the initial dtn.conf, namely, before any param=
 command reconfiguration). Thus, I always noticed the default custody timer=
 values ([custody min 1800 pct 25 max 0]).

In case that I change the custody timer values (using param), and then I re=
-create the route entry, e.g.,
route del dtn://node20.dtn/*
route add dtn://node20.dtn/* link_0
any new custodian bundle will be bound with the new custody timer values (a=
s set using the param command).

Besides, I have also noticed that a custody timer is not rescheduled. Speci=
fically, if the custody_timeout fires and the bundle is not successfully de=
livered to the next custodian node, the custody_timeout is not rescheduled =
so as to try a new retransmission of the bundle in the future (does this ma=
ke sense?).

Regards,
Vangelis Anifantis

On 12/13/2014 2:02 AM, Vangelis Anifantis wrote:
Hello David,

Thanks for your response. It actually helps a lot, since it answers my ques=
tion regarding the custody signal handling from the administrative element.

However, on the subject of the Custody Timer, I still have problems on sett=
ing the custody timer default values using the param command (e.g., param s=
et custody_timer_max 1000). It seems that I cannot manually override the de=
fault values by using the command "param" (it has been validated by the deb=
ug logs, the forwarding log of each bundle, as well as in practice by measu=
ring the retransmission delay).

Following your suggestion/implementation, I have changed the timeout calcul=
ation in the CustodyTimer.cc so as to cover my own needs and it works fine,=
 but it would be convenient for me to be able to change on-the-fly the min/=
max values via the param command. May i miss any configuration setup (or ex=
ternal package) that prevent my dtn installation (i have not used any speci=
al customization) from this kind of functionality?

I would appreciate any help.

Regards,
Vangelis Anifantis

On 10/22/2014 12:04 AM, Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT=
] wrote:

Hi Vangelis,

Since the bundles are displaying as (NOT PENDING) the custody signal was ac=
tually processed by the administrative element (AdminRegistration.cc).

The initial bundles remain in the all_bundles list because the Custody Time=
r still has a reference to the bundle - when the timer expires the bundle w=
ill be deleted. The Custody Signal remains in the all_bundles and pending l=
ist because AdminRegistration does not update the fwdlog to indicate that t=
he bundle was delivered.



I have not noticed a functional issue after changing the custody timer defa=
ult values using the param command but may not have paid close enough atten=
tion. It could just be a logging issue but I can't say for sure.



While on the subject of the Custody Timer, I will say that I do not like th=
e implementation which sets the timeout to the min plus the percentage and =
then overrides that with the max if appropriate. We changed ours so that it=
 starts with the percentage and then overrides with the min and max if need=
ed.



Hope this helps a bit,

DZ



-----Original Message-----

From: dtn-users [mailto:dtn-users-bounces@irtf.org] On Behalf Of Vangelis A=
nifantis

Sent: Friday, October 17, 2014 9:16 AM

To: dtn-users@irtf.org<mailto:dtn-users@irtf.org>

Subject: [dtn-users] DTN2 custody signal handling



hello,



I have been recently playing around with DTN2 (dtn2.9.0 version) reference =
implementation to better understand the custody transfer capability (e.g., =
sending a bundle via dtnsend with activated the option -c).



What i am seeing is that, as expected, each dtn node in the communication c=
hain accepts the custody request, becomes the custodian and sends back a cu=
stody signal administrative record to indicate "custody_succeeded set to 1"=
 (with indications regarding custody timer parameters as configured in the =
current custodian). However, I observe that the custody signal is not handl=
ed (neither received) by the administrative element, thus, remaining on the=
 "all_bundles list" and "pending list"; and consequently, the bundle protoc=
ol agent does not follow the custody transfer success procedure by deleting=
 the initial bundle (i.e., there is still a reference on the "all_bundles l=
ist"

regarding the initial bundle with indication (NOT PENDING)). Do i miss any =
configuration setup regarding the administrative element which is deemed ne=
cessary?



Furthermore, even though I have set manually (custody_timer_min, custody_ti=
mer_lifetime_pct,  custody_timer_max) at all dtn nodes to differ from the d=
efault values, the forwarding log of the initial generated bundle keeps dis=
playing the default values, e.g., e.g.,

  forwarding log:

         TRANSMITTED -> link_name [dtn:none] FORWARD at 1412929830.51299 [c=
ustody min 1800 pct 25 max 0] Why is this happening?



Thanks in advance for any help.



Regards,

Vangelis Anifantis



_______________________________________________

dtn-users mailing list

dtn-users@irtf.org<mailto:dtn-users@irtf.org>

https://www.irtf.org/mailman/listinfo/dtn-users


--

OpenPGP public key ID:

pub  4096R/A97BA940<https://pgp.mit.edu/pks/lookup?op=3Dget&search=3D0xDFB6=
31A0A97BA940> 2014-11-15 Evangelos Anifantis <vangelis@netmode.ntua.gr><htt=
ps://pgp.mit.edu/pks/lookup?op=3Dvindex&fingerprint=3Don&search=3D0xDFB631A=
0A97BA940>

   Fingerprint=3D9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B A940








--_000_94CFB3711B4CAE4DBFC5BEB3374BF0C616935FNDMSMBX404ndcnasa_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	color:black;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:"Consolas","serif";
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-priority:99;
	mso-style-link:"Balloon Text";
	font-family:"Tahoma","sans-serif";
	color:black;}
span.EmailStyle21
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hello Vangelis,<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks for digging into a=
nd figuring out how the custody timer specs and route specs interrelate. It=
 looks like it would be useful to be able to override custody
 spec params on the &#8220;route add&#8221; command and possibly to impleme=
nt a &#8220;route reconfigure&#8221; command to change them on the fly.<o:p=
></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">A custody timer is starte=
d for the bundle as part of the BundleDaemon&#8217;s processing of the Bund=
leTransmitted event which the convergence layer issues. When a
 custody_timeout fires, the bundle should be re-routed and transmitted resu=
lting in another BundleTransmitted event being issued resulting in starting=
 a new custody timer. If there is not an open connection when the custody_t=
imeout fires, then the bundle should
 either be queued as deferred on a known link(s) or there may not be a link=
 to add it to at the time. If the known link eventually establishes its con=
nection then the bundle should be transmitted which starts the next custody=
 timer. If a new link is established
 then all pending bundles are checked to see if they can be routed through =
the new connection which when transmitted would start a new custody timer.<=
o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Basically, the custody ti=
mer is only started after it is known that the bundle has been transmitted.=
 There is a special case in the comments in BundleDaemon::handle_bundle_tra=
nsmitted()
 if configured to wait for reliable transmission that could result in retur=
ning without starting a new custody timer which should issue a warning &#82=
20;XXX/demmer fixme transmitted special case&#8221;.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Could you be hitting the =
special case?<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Or, can you provide more =
detail on the custody timer not being rescheduled scenario including which =
convergence layer? &nbsp;<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Regards,<o:p></o:p></span=
></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">DZ<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">From:</span></b><spa=
n style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif=
&quot;;color:windowtext"> Vangelis Anifantis [mailto:vangelis@netmode.ntua.=
gr]
<br>
<b>Sent:</b> Sunday, December 14, 2014 4:26 AM<br>
<b>To:</b> Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]; dtn-users@=
irtf.org<br>
<b>Subject:</b> Re: [dtn-users] DTN2 custody signal handling<o:p></o:p></sp=
an></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt">Just for the records,=
 I have finally found out what was going on regarding the param command.
<br>
<br>
For my testing scenarios I used a static routing scheme by which each bundl=
e was forwarded to a predetermined link. To create disruptions, I used to s=
hut down the dtnd daemon of the remote dtn node. In this case, each generat=
ed bundle was directly forwarded
 to the predetermined link (as specified in the route entry by the initial =
configuration file), where the custody timers (i.e., min, lifetime_pct, max=
) had values equal to the ones at the time of the specific route entry crea=
tion/definition (for my case, the
 route entry was static and created by the initial dtn.conf, namely, before=
 any param command reconfiguration). Thus, I always noticed the default cus=
tody timer values ([custody min 1800 pct 25 max 0]).<br>
<br>
In case that I change the custody timer values (using param), and then I re=
-create the route entry, e.g.,<br>
route del dtn://node20.dtn/* <br>
route add dtn://node20.dtn/* link_0<br>
any new custodian bundle will be bound with the new custody timer values (a=
s set using the param command).<br>
<br>
Besides, I have also noticed that a custody timer is not rescheduled. Speci=
fically, if the custody_timeout fires and the bundle is not successfully de=
livered to the next custodian node, the custody_timeout is not rescheduled =
so as to try a new retransmission
 of the bundle in the future (does this make sense?).<br>
<br>
Regards,<br>
Vangelis Anifantis<br>
<br>
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal">On 12/13/2014 2:02 AM, Vangelis Anifantis wrote:<o:p=
></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt">Hello David,<br>
<br>
Thanks for your response. It actually helps a lot, since it answers my ques=
tion regarding the custody signal handling from the administrative element.=
<br>
<br>
However, on the subject of the Custody Timer, I still have problems on sett=
ing the custody timer default values using the param command (e.g., param s=
et custody_timer_max 1000). It seems that I cannot manually override the de=
fault values by using the command
 &quot;param&quot; (it has been validated by the debug logs, the forwarding=
 log of each bundle, as well as in practice by measuring the retransmission=
 delay).
<br>
<br>
Following your suggestion/implementation, I have changed the timeout calcul=
ation in the CustodyTimer.cc so as to cover my own needs and it works fine,=
 but it would be convenient for me to be able to change on-the-fly the min/=
max values via the param command.
 May i miss any configuration setup (or external package) that prevent my d=
tn installation (i have not used any special customization) from this kind =
of functionality?<br>
<br>
I would appreciate any help.<br>
<br>
Regards,<br>
Vangelis Anifantis<br>
<br>
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal">On 10/22/2014 12:04 AM, Zoller, David A. (MSFC-EO50)=
[HOSC SERVICES CONTRACT] wrote:<o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Hi Vangelis,<o:p></o:p></pre>
<pre>Since the bundles are displaying as (NOT PENDING) the custody signal w=
as actually processed by the administrative element (AdminRegistration.cc).=
 <o:p></o:p></pre>
<pre>The initial bundles remain in the all_bundles list because the Custody=
 Timer still has a reference to the bundle - when the timer expires the bun=
dle will be deleted. The Custody Signal remains in the all_bundles and pend=
ing list because AdminRegistration does not update the fwdlog to indicate t=
hat the bundle was delivered.<o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>I have not noticed a functional issue after changing the custody timer=
 default values using the param command but may not have paid close enough =
attention. It could just be a logging issue but I can't say for sure. <o:p>=
</o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>While on the subject of the Custody Timer, I will say that I do not li=
ke the implementation which sets the timeout to the min plus the percentage=
 and then overrides that with the max if appropriate. We changed ours so th=
at it starts with the percentage and then overrides with the min and max if=
 needed.<o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>Hope this helps a bit,<o:p></o:p></pre>
<pre>DZ<o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>-----Original Message-----<o:p></o:p></pre>
<pre>From: dtn-users [<a href=3D"mailto:dtn-users-bounces@irtf.org">mailto:=
dtn-users-bounces@irtf.org</a>] On Behalf Of Vangelis Anifantis<o:p></o:p><=
/pre>
<pre>Sent: Friday, October 17, 2014 9:16 AM<o:p></o:p></pre>
<pre>To: <a href=3D"mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><o:p><=
/o:p></pre>
<pre>Subject: [dtn-users] DTN2 custody signal handling<o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>hello,<o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>I have been recently playing around with DTN2 (dtn2.9.0 version) refer=
ence implementation to better understand the custody transfer capability (e=
.g., sending a bundle via dtnsend with activated the option -c).<o:p></o:p>=
</pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>What i am seeing is that, as expected, each dtn node in the communicat=
ion chain accepts the custody request, becomes the custodian and sends back=
 a custody signal administrative record to indicate &quot;custody_succeeded=
 set to 1&quot; (with indications regarding custody timer parameters as con=
figured in the current custodian). However, I observe that the custody sign=
al is not handled (neither received) by the administrative element, thus, r=
emaining on the &quot;all_bundles list&quot; and &quot;pending list&quot;; =
and consequently, the bundle protocol agent does not follow the custody tra=
nsfer success procedure by deleting the initial bundle (i.e., there is stil=
l a reference on the &quot;all_bundles list&quot; <o:p></o:p></pre>
<pre>regarding the initial bundle with indication (NOT PENDING)). Do i miss=
 any configuration setup regarding the administrative element which is deem=
ed necessary?<o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>Furthermore, even though I have set manually (custody_timer_min, custo=
dy_timer_lifetime_pct,&nbsp; custody_timer_max) at all dtn nodes to differ =
from the default values, the forwarding log of the initial generated bundle=
 keeps displaying the default values, e.g., e.g.,<o:p></o:p></pre>
<pre>&nbsp; forwarding log:<o:p></o:p></pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRANSMITTED -&gt; lin=
k_name [dtn:none] FORWARD at 1412929830.51299 [custody min 1800 pct 25 max =
0] Why is this happening?<o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>Thanks in advance for any help.<o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>Regards,<o:p></o:p></pre>
<pre>Vangelis Anifantis<o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>dtn-users mailing list<o:p></o:p></pre>
<pre><a href=3D"mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><o:p></o:p=
></pre>
<pre><a href=3D"https://www.irtf.org/mailman/listinfo/dtn-users">https://ww=
w.irtf.org/mailman/listinfo/dtn-users</a><o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
</blockquote>
<div>
<p class=3D"MsoNormal">-- <o:p></o:p></p>
<pre><span style=3D"color:gray">OpenPGP public key ID: <o:p></o:p></span></=
pre>
<pre><span style=3D"color:gray">pub&nbsp; 4096R/<a href=3D"https://pgp.mit.=
edu/pks/lookup?op=3Dget&amp;search=3D0xDFB631A0A97BA940">A97BA940</a> 2014-=
11-15 <a href=3D"https://pgp.mit.edu/pks/lookup?op=3Dvindex&amp;fingerprint=
=3Don&amp;search=3D0xDFB631A0A97BA940">Evangelos Anifantis &lt;vangelis@net=
mode.ntua.gr&gt;</a><o:p></o:p></span></pre>
<pre><span style=3D"color:gray">&nbsp;  Fingerprint=3D9759 E043 8873 9FD3 D=
095&nbsp; C717 DFB6 31A0 A97B A940 <o:p></o:p></span></pre>
<pre><span style=3D"color:gray">&nbsp; </span><o:p></o:p></pre>
<pre>&nbsp; <o:p></o:p></pre>
<p class=3D"MsoNormal"><br>
<br>
<o:p></o:p></p>
</div>
</blockquote>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>

--_000_94CFB3711B4CAE4DBFC5BEB3374BF0C616935FNDMSMBX404ndcnasa_--


From nobody Sat Dec 20 11:15:32 2014
Return-Path: <vangelis@netmode.ntua.gr>
X-Original-To: dtn-users@ietfa.amsl.com
Delivered-To: dtn-users@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 536681A88CF for <dtn-users@ietfa.amsl.com>; Sat, 20 Dec 2014 11:15:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.791
X-Spam-Level: 
X-Spam-Status: No, score=0.791 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 MSZPE7BjvSyG for <dtn-users@ietfa.amsl.com>; Sat, 20 Dec 2014 11:15:26 -0800 (PST)
Received: from ulysses.noc.ntua.gr (ulysses.noc.ntua.gr [IPv6:2001:648:2000:de::230]) by ietfa.amsl.com (Postfix) with ESMTP id 3CCCB1A878A for <dtn-users@irtf.org>; Sat, 20 Dec 2014 11:15:25 -0800 (PST)
Received: from netmode.ece.ntua.gr (dolly.netmode.ece.ntua.gr [147.102.13.10]) by ulysses.noc.ntua.gr (8.14.5/8.14.5) with ESMTP id sBKJFNHi078604 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT);  Sat, 20 Dec 2014 21:15:24 +0200 (EET) (envelope-from vangelis@netmode.ntua.gr)
Received: from [147.102.13.49] (dimitra.netmode.ece.ntua.gr [147.102.13.49]) (authenticated bits=0) by netmode.ece.ntua.gr (8.14.4/8.14.3) with ESMTP id sBKJEvFw078627 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Sat, 20 Dec 2014 21:14:57 +0200 (EET) (envelope-from vangelis@netmode.ntua.gr)
Message-ID: <5495CAAC.3000501@netmode.ntua.gr>
Date: Sat, 20 Dec 2014 21:14:52 +0200
From: Vangelis Anifantis <vangelis@netmode.ntua.gr>
User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:31.0) Gecko/20100101 Thunderbird/31.3.0
MIME-Version: 1.0
To: "Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <david.a.zoller@nasa.gov>,  "dtn-users@irtf.org" <dtn-users@irtf.org>
References: <544124B9.9010600@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C6131741@NDMSMBX404.ndc.nasa.gov> <548B81FD.7030500@netmode.ntua.gr> <548D65A0.2040601@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C616935F@NDMSMBX404.ndc.nasa.gov>
In-Reply-To: <94CFB3711B4CAE4DBFC5BEB3374BF0C616935F@NDMSMBX404.ndc.nasa.gov>
Content-Type: multipart/alternative; boundary="------------070809080906070701080003"
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (ulysses.noc.ntua.gr [147.102.222.230]); Sat, 20 Dec 2014 21:15:24 +0200 (EET)
X-Virus-Scanned: clamav-milter 0.97.5 at ulysses.noc.ntua.gr
X-Virus-Status: Clean
Archived-At: http://mailarchive.ietf.org/arch/msg/dtn-users/_aV5rkYGGFeDJdoThHNxcYIZhi0
Subject: Re: [dtn-users] DTN2 custody signal handling
X-BeenThere: dtn-users@irtf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "The Delay-Tolerant Networking Research Group \(DTNRG\) - Users." <dtn-users.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www.irtf.org/mail-archive/web/dtn-users/>
List-Post: <mailto:dtn-users@irtf.org>
List-Help: <mailto:dtn-users-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=subscribe>
X-List-Received-Date: Sat, 20 Dec 2014 19:15:31 -0000

This is a multi-part message in MIME format.
--------------070809080906070701080003
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 8bit

Hello David,

Thanks again for your response.
The problem with the custody timer not being rescheduled happens with 
the UDPconvergenceLayer. To reproduce the problem with the custody timer 
rescheduling, consider a trivial scenario:
Let assume two dtn nodes (node A and node B) communicating using udp 
convergence layer and via a static routing. By using "link dump" I 
observe the corresponding link, e.g., my_link  ONDEMAND udp 
state=AVAILABLE. Now,  shut down the dtnd in node B and then send a 
bundle with custody transfer enabled from node A to node B. I observe 
that the custody_timer is started. When it fires, node A attempts to 
retransmit the bundle and now i have a debug message
[1419099989.900814 CustodyTimer 0xb4416a60 info] CustodyTimer::timeout
[1419099989.940186 UDPConvergenceLayer::Sender 0xb4404e24 error] 
send_bundle: error sending bundle (wrote -1/110): Connection refused
Then, the bundle remains in the "custody_bundles" list and it is added 
to the list "my_link:queue". Now on, it would be never been 
retransmitted again. Start the dtnd daemon at node B. The bundle remains 
as custodian in node A, but it would not be rescheduled for retransmission.

Sorry, I have not checked if i hit the special case that you mentioned 
in the previous mail. I will check it out and i ll come back soon.

p.s. By using the TCP convergence layer, the problem does not exist.

Regards,
Vangelis

On 12/15/2014 4:50 PM, Zoller, David A. (MSFC-EO50)[HOSC SERVICES 
CONTRACT] wrote:
>
> Hello Vangelis,
>
> Thanks for digging into and figuring out how the custody timer specs 
> and route specs interrelate. It looks like it would be useful to be 
> able to override custody spec params on the “route add” command and 
> possibly to implement a “route reconfigure” command to change them on 
> the fly.
>
> A custody timer is started for the bundle as part of the 
> BundleDaemon’s processing of the BundleTransmitted event which the 
> convergence layer issues. When a custody_timeout fires, the bundle 
> should be re-routed and transmitted resulting in another 
> BundleTransmitted event being issued resulting in starting a new 
> custody timer. If there is not an open connection when the 
> custody_timeout fires, then the bundle should either be queued as 
> deferred on a known link(s) or there may not be a link to add it to at 
> the time. If the known link eventually establishes its connection then 
> the bundle should be transmitted which starts the next custody timer. 
> If a new link is established then all pending bundles are checked to 
> see if they can be routed through the new connection which when 
> transmitted would start a new custody timer.
>
> Basically, the custody timer is only started after it is known that 
> the bundle has been transmitted. There is a special case in the 
> comments in BundleDaemon::handle_bundle_transmitted() if configured to 
> wait for reliable transmission that could result in returning without 
> starting a new custody timer which should issue a warning “XXX/demmer 
> fixme transmitted special case”.
>
> Could you be hitting the special case?
>
> Or, can you provide more detail on the custody timer not being 
> rescheduled scenario including which convergence layer?
>
> Regards,
>
> DZ
>
> *From:*Vangelis Anifantis [mailto:vangelis@netmode.ntua.gr]
> *Sent:* Sunday, December 14, 2014 4:26 AM
> *To:* Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]; 
> dtn-users@irtf.org
> *Subject:* Re: [dtn-users] DTN2 custody signal handling
>
> Just for the records, I have finally found out what was going on 
> regarding the param command.
>
> For my testing scenarios I used a static routing scheme by which each 
> bundle was forwarded to a predetermined link. To create disruptions, I 
> used to shut down the dtnd daemon of the remote dtn node. In this 
> case, each generated bundle was directly forwarded to the 
> predetermined link (as specified in the route entry by the initial 
> configuration file), where the custody timers (i.e., min, 
> lifetime_pct, max) had values equal to the ones at the time of the 
> specific route entry creation/definition (for my case, the route entry 
> was static and created by the initial dtn.conf, namely, before any 
> param command reconfiguration). Thus, I always noticed the default 
> custody timer values ([custody min 1800 pct 25 max 0]).
>
> In case that I change the custody timer values (using param), and then 
> I re-create the route entry, e.g.,
> route del dtn://node20.dtn/*
> route add dtn://node20.dtn/* link_0
> any new custodian bundle will be bound with the new custody timer 
> values (as set using the param command).
>
> Besides, I have also noticed that a custody timer is not rescheduled. 
> Specifically, if the custody_timeout fires and the bundle is not 
> successfully delivered to the next custodian node, the custody_timeout 
> is not rescheduled so as to try a new retransmission of the bundle in 
> the future (does this make sense?).
>
> Regards,
> Vangelis Anifantis
>
> On 12/13/2014 2:02 AM, Vangelis Anifantis wrote:
>
>     Hello David,
>
>     Thanks for your response. It actually helps a lot, since it
>     answers my question regarding the custody signal handling from the
>     administrative element.
>
>     However, on the subject of the Custody Timer, I still have
>     problems on setting the custody timer default values using the
>     param command (e.g., param set custody_timer_max 1000). It seems
>     that I cannot manually override the default values by using the
>     command "param" (it has been validated by the debug logs, the
>     forwarding log of each bundle, as well as in practice by measuring
>     the retransmission delay).
>
>     Following your suggestion/implementation, I have changed the
>     timeout calculation in the CustodyTimer.cc so as to cover my own
>     needs and it works fine, but it would be convenient for me to be
>     able to change on-the-fly the min/max values via the param
>     command. May i miss any configuration setup (or external package)
>     that prevent my dtn installation (i have not used any special
>     customization) from this kind of functionality?
>
>     I would appreciate any help.
>
>     Regards,
>     Vangelis Anifantis
>
>     On 10/22/2014 12:04 AM, Zoller, David A. (MSFC-EO50)[HOSC SERVICES
>     CONTRACT] wrote:
>
>         Hi Vangelis,
>
>         Since the bundles are displaying as (NOT PENDING) the custody signal was actually processed by the administrative element (AdminRegistration.cc).
>
>         The initial bundles remain in the all_bundles list because the Custody Timer still has a reference to the bundle - when the timer expires the bundle will be deleted. The Custody Signal remains in the all_bundles and pending list because AdminRegistration does not update the fwdlog to indicate that the bundle was delivered.
>
>           
>
>         I have not noticed a functional issue after changing the custody timer default values using the param command but may not have paid close enough attention. It could just be a logging issue but I can't say for sure.
>
>           
>
>         While on the subject of the Custody Timer, I will say that I do not like the implementation which sets the timeout to the min plus the percentage and then overrides that with the max if appropriate. We changed ours so that it starts with the percentage and then overrides with the min and max if needed.
>
>           
>
>         Hope this helps a bit,
>
>         DZ
>
>           
>
>         -----Original Message-----
>
>         From: dtn-users [mailto:dtn-users-bounces@irtf.org] On Behalf Of Vangelis Anifantis
>
>         Sent: Friday, October 17, 2014 9:16 AM
>
>         To:dtn-users@irtf.org  <mailto:dtn-users@irtf.org>
>
>         Subject: [dtn-users] DTN2 custody signal handling
>
>           
>
>         hello,
>
>           
>
>         I have been recently playing around with DTN2 (dtn2.9.0 version) reference implementation to better understand the custody transfer capability (e.g., sending a bundle via dtnsend with activated the option -c).
>
>           
>
>         What i am seeing is that, as expected, each dtn node in the communication chain accepts the custody request, becomes the custodian and sends back a custody signal administrative record to indicate "custody_succeeded set to 1" (with indications regarding custody timer parameters as configured in the current custodian). However, I observe that the custody signal is not handled (neither received) by the administrative element, thus, remaining on the "all_bundles list" and "pending list"; and consequently, the bundle protocol agent does not follow the custody transfer success procedure by deleting the initial bundle (i.e., there is still a reference on the "all_bundles list"
>
>         regarding the initial bundle with indication (NOT PENDING)). Do i miss any configuration setup regarding the administrative element which is deemed necessary?
>
>           
>
>         Furthermore, even though I have set manually (custody_timer_min, custody_timer_lifetime_pct,  custody_timer_max) at all dtn nodes to differ from the default values, the forwarding log of the initial generated bundle keeps displaying the default values, e.g., e.g.,
>
>            forwarding log:
>
>                   TRANSMITTED -> link_name [dtn:none] FORWARD at 1412929830.51299 [custody min 1800 pct 25 max 0] Why is this happening?
>
>           
>
>         Thanks in advance for any help.
>
>           
>
>         Regards,
>
>         Vangelis Anifantis
>
>           
>
>         _______________________________________________
>
>         dtn-users mailing list
>
>         dtn-users@irtf.org  <mailto:dtn-users@irtf.org>
>
>         https://www.irtf.org/mailman/listinfo/dtn-users
>
>           
>
>     -- 
>
>     OpenPGP public key ID:
>
>     pub  4096R/A97BA940  <https://pgp.mit.edu/pks/lookup?op=get&search=0xDFB631A0A97BA940>  2014-11-15Evangelos Anifantis <vangelis@netmode.ntua.gr>  <https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0xDFB631A0A97BA940>
>
>         Fingerprint=9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B A940
>
>        
>
>        
>
>
>


--------------070809080906070701080003
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello David,<br>
    <br>
    Thanks again for your response. <br>
    The problem with the custody timer not being rescheduled happens
    with the UDPconvergenceLayer. To reproduce the problem with the
    custody timer rescheduling, consider a trivial scenario:<br>
    Let assume two dtn nodes (node A and node B) communicating using udp
    convergence layer and via a static routing. By using "link dump" I
    observe the corresponding link, e.g., my_link  ONDEMAND udp
    state=AVAILABLE. Now,  shut down the dtnd in node B and then send a
    bundle with custody transfer enabled from node A to node B. I
    observe that the custody_timer is started. When it fires, node A
    attempts to retransmit the bundle and now i have a debug message <br>
    [1419099989.900814 CustodyTimer 0xb4416a60 info]
    CustodyTimer::timeout      <br>
    [1419099989.940186 UDPConvergenceLayer::Sender 0xb4404e24 error]
    send_bundle: error sending bundle (wrote -1/110): Connection
    refused  <br>
    Then, the bundle remains in the "custody_bundles" list and it is
    added to the list "my_link:queue". Now on, it would be never been
    retransmitted again. Start the dtnd daemon at node B. The bundle
    remains as custodian in node A, but it would not be rescheduled for
    retransmission.<br>
    <br>
    Sorry, I have not checked if i hit the special case that you
    mentioned in the previous mail. I will check it out and i ll come
    back soon.<br>
    <br>
    p.s. By using the TCP convergence layer, the problem does not exist.<br>
    <br>
    Regards,<br>
    Vangelis<br>
    <br>
    <div class="moz-cite-prefix">On 12/15/2014 4:50 PM, Zoller, David A.
      (MSFC-EO50)[HOSC SERVICES CONTRACT] wrote:<br>
    </div>
    <blockquote
cite="mid:94CFB3711B4CAE4DBFC5BEB3374BF0C616935F@NDMSMBX404.ndc.nasa.gov"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="Microsoft Word 14 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	color:black;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:"Consolas","serif";
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-priority:99;
	mso-style-link:"Balloon Text";
	font-family:"Tahoma","sans-serif";
	color:black;}
span.EmailStyle21
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hello
            Vangelis,<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks
            for digging into and figuring out how the custody timer
            specs and route specs interrelate. It looks like it would be
            useful to be able to override custody spec params on the
            “route add” command and possibly to implement a “route
            reconfigure” command to change them on the fly.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">A
            custody timer is started for the bundle as part of the
            BundleDaemon’s processing of the BundleTransmitted event
            which the convergence layer issues. When a custody_timeout
            fires, the bundle should be re-routed and transmitted
            resulting in another BundleTransmitted event being issued
            resulting in starting a new custody timer. If there is not
            an open connection when the custody_timeout fires, then the
            bundle should either be queued as deferred on a known
            link(s) or there may not be a link to add it to at the time.
            If the known link eventually establishes its connection then
            the bundle should be transmitted which starts the next
            custody timer. If a new link is established then all pending
            bundles are checked to see if they can be routed through the
            new connection which when transmitted would start a new
            custody timer.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Basically,
            the custody timer is only started after it is known that the
            bundle has been transmitted. There is a special case in the
            comments in BundleDaemon::handle_bundle_transmitted() if
            configured to wait for reliable transmission that could
            result in returning without starting a new custody timer
            which should issue a warning “XXX/demmer fixme transmitted
            special case”.
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Could
            you be hitting the special case?<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Or,
            can you provide more detail on the custody timer not being
            rescheduled scenario including which convergence layer?  <o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Regards,<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">DZ<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <div>
          <div style="border:none;border-top:solid #B5C4DF
            1.0pt;padding:3.0pt 0in 0in 0in">
            <p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">From:</span></b><span
style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">
                Vangelis Anifantis [<a class="moz-txt-link-freetext" href="mailto:vangelis@netmode.ntua.gr">mailto:vangelis@netmode.ntua.gr</a>]
                <br>
                <b>Sent:</b> Sunday, December 14, 2014 4:26 AM<br>
                <b>To:</b> Zoller, David A. (MSFC-EO50)[HOSC SERVICES
                CONTRACT]; <a class="moz-txt-link-abbreviated" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><br>
                <b>Subject:</b> Re: [dtn-users] DTN2 custody signal
                handling<o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal" style="margin-bottom:12.0pt">Just for the
          records, I have finally found out what was going on regarding
          the param command.
          <br>
          <br>
          For my testing scenarios I used a static routing scheme by
          which each bundle was forwarded to a predetermined link. To
          create disruptions, I used to shut down the dtnd daemon of the
          remote dtn node. In this case, each generated bundle was
          directly forwarded to the predetermined link (as specified in
          the route entry by the initial configuration file), where the
          custody timers (i.e., min, lifetime_pct, max) had values equal
          to the ones at the time of the specific route entry
          creation/definition (for my case, the route entry was static
          and created by the initial dtn.conf, namely, before any param
          command reconfiguration). Thus, I always noticed the default
          custody timer values ([custody min 1800 pct 25 max 0]).<br>
          <br>
          In case that I change the custody timer values (using param),
          and then I re-create the route entry, e.g.,<br>
          route del dtn://node20.dtn/* <br>
          route add dtn://node20.dtn/* link_0<br>
          any new custodian bundle will be bound with the new custody
          timer values (as set using the param command).<br>
          <br>
          Besides, I have also noticed that a custody timer is not
          rescheduled. Specifically, if the custody_timeout fires and
          the bundle is not successfully delivered to the next custodian
          node, the custody_timeout is not rescheduled so as to try a
          new retransmission of the bundle in the future (does this make
          sense?).<br>
          <br>
          Regards,<br>
          Vangelis Anifantis<br>
          <br>
          <o:p></o:p></p>
        <div>
          <p class="MsoNormal">On 12/13/2014 2:02 AM, Vangelis Anifantis
            wrote:<o:p></o:p></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal" style="margin-bottom:12.0pt">Hello David,<br>
            <br>
            Thanks for your response. It actually helps a lot, since it
            answers my question regarding the custody signal handling
            from the administrative element.<br>
            <br>
            However, on the subject of the Custody Timer, I still have
            problems on setting the custody timer default values using
            the param command (e.g., param set custody_timer_max 1000).
            It seems that I cannot manually override the default values
            by using the command "param" (it has been validated by the
            debug logs, the forwarding log of each bundle, as well as in
            practice by measuring the retransmission delay).
            <br>
            <br>
            Following your suggestion/implementation, I have changed the
            timeout calculation in the CustodyTimer.cc so as to cover my
            own needs and it works fine, but it would be convenient for
            me to be able to change on-the-fly the min/max values via
            the param command. May i miss any configuration setup (or
            external package) that prevent my dtn installation (i have
            not used any special customization) from this kind of
            functionality?<br>
            <br>
            I would appreciate any help.<br>
            <br>
            Regards,<br>
            Vangelis Anifantis<br>
            <br>
            <o:p></o:p></p>
          <div>
            <p class="MsoNormal">On 10/22/2014 12:04 AM, Zoller, David
              A. (MSFC-EO50)[HOSC SERVICES CONTRACT] wrote:<o:p></o:p></p>
          </div>
          <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
            <pre>Hi Vangelis,<o:p></o:p></pre>
            <pre>Since the bundles are displaying as (NOT PENDING) the custody signal was actually processed by the administrative element (AdminRegistration.cc). <o:p></o:p></pre>
            <pre>The initial bundles remain in the all_bundles list because the Custody Timer still has a reference to the bundle - when the timer expires the bundle will be deleted. The Custody Signal remains in the all_bundles and pending list because AdminRegistration does not update the fwdlog to indicate that the bundle was delivered.<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>I have not noticed a functional issue after changing the custody timer default values using the param command but may not have paid close enough attention. It could just be a logging issue but I can't say for sure. <o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>While on the subject of the Custody Timer, I will say that I do not like the implementation which sets the timeout to the min plus the percentage and then overrides that with the max if appropriate. We changed ours so that it starts with the percentage and then overrides with the min and max if needed.<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>Hope this helps a bit,<o:p></o:p></pre>
            <pre>DZ<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>-----Original Message-----<o:p></o:p></pre>
            <pre>From: dtn-users [<a moz-do-not-send="true" href="mailto:dtn-users-bounces@irtf.org">mailto:dtn-users-bounces@irtf.org</a>] On Behalf Of Vangelis Anifantis<o:p></o:p></pre>
            <pre>Sent: Friday, October 17, 2014 9:16 AM<o:p></o:p></pre>
            <pre>To: <a moz-do-not-send="true" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><o:p></o:p></pre>
            <pre>Subject: [dtn-users] DTN2 custody signal handling<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>hello,<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>I have been recently playing around with DTN2 (dtn2.9.0 version) reference implementation to better understand the custody transfer capability (e.g., sending a bundle via dtnsend with activated the option -c).<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>What i am seeing is that, as expected, each dtn node in the communication chain accepts the custody request, becomes the custodian and sends back a custody signal administrative record to indicate "custody_succeeded set to 1" (with indications regarding custody timer parameters as configured in the current custodian). However, I observe that the custody signal is not handled (neither received) by the administrative element, thus, remaining on the "all_bundles list" and "pending list"; and consequently, the bundle protocol agent does not follow the custody transfer success procedure by deleting the initial bundle (i.e., there is still a reference on the "all_bundles list" <o:p></o:p></pre>
            <pre>regarding the initial bundle with indication (NOT PENDING)). Do i miss any configuration setup regarding the administrative element which is deemed necessary?<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>Furthermore, even though I have set manually (custody_timer_min, custody_timer_lifetime_pct,  custody_timer_max) at all dtn nodes to differ from the default values, the forwarding log of the initial generated bundle keeps displaying the default values, e.g., e.g.,<o:p></o:p></pre>
            <pre>  forwarding log:<o:p></o:p></pre>
            <pre>         TRANSMITTED -&gt; link_name [dtn:none] FORWARD at 1412929830.51299 [custody min 1800 pct 25 max 0] Why is this happening?<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>Thanks in advance for any help.<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>Regards,<o:p></o:p></pre>
            <pre>Vangelis Anifantis<o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
            <pre>_______________________________________________<o:p></o:p></pre>
            <pre>dtn-users mailing list<o:p></o:p></pre>
            <pre><a moz-do-not-send="true" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><o:p></o:p></pre>
            <pre><a moz-do-not-send="true" href="https://www.irtf.org/mailman/listinfo/dtn-users">https://www.irtf.org/mailman/listinfo/dtn-users</a><o:p></o:p></pre>
            <pre><o:p> </o:p></pre>
          </blockquote>
          <div>
            <p class="MsoNormal">-- <o:p></o:p></p>
            <pre><span style="color:gray">OpenPGP public key ID: <o:p></o:p></span></pre>
            <pre><span style="color:gray">pub  4096R/<a moz-do-not-send="true" href="https://pgp.mit.edu/pks/lookup?op=get&amp;search=0xDFB631A0A97BA940">A97BA940</a> 2014-11-15 <a moz-do-not-send="true" href="https://pgp.mit.edu/pks/lookup?op=vindex&amp;fingerprint=on&amp;search=0xDFB631A0A97BA940">Evangelos Anifantis &lt;vangelis@netmode.ntua.gr&gt;</a><o:p></o:p></span></pre>
            <pre><span style="color:gray">   Fingerprint=9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B A940 <o:p></o:p></span></pre>
            <pre><span style="color:gray">  </span><o:p></o:p></pre>
            <pre>  <o:p></o:p></pre>
            <p class="MsoNormal"><br>
              <br>
              <o:p></o:p></p>
          </div>
        </blockquote>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------070809080906070701080003--


From nobody Fri Dec 26 08:07:41 2014
Return-Path: <david.a.zoller@nasa.gov>
X-Original-To: dtn-users@ietfa.amsl.com
Delivered-To: dtn-users@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4431F1A8969 for <dtn-users@ietfa.amsl.com>; Fri, 26 Dec 2014 08:07:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.79
X-Spam-Level: 
X-Spam-Status: No, score=0.79 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 WA5s8R7H_aBm for <dtn-users@ietfa.amsl.com>; Fri, 26 Dec 2014 08:07:31 -0800 (PST)
Received: from ndmsnpf03.ndc.nasa.gov (ndmsnpf03.ndc.nasa.gov [IPv6:2001:4d0:8302:1100::103]) by ietfa.amsl.com (Postfix) with ESMTP id 2EFC81A895E for <dtn-users@irtf.org>; Fri, 26 Dec 2014 08:07:31 -0800 (PST)
Received: from ndmsppt102.ndc.nasa.gov (ndmsppt102.ndc.nasa.gov [198.117.0.67]) by ndmsnpf03.ndc.nasa.gov (Postfix) with ESMTP id 39BA11829FA; Fri, 26 Dec 2014 10:07:30 -0600 (CST)
Received: from NDMSCHT105.ndc.nasa.gov (ndmscht105-pub.ndc.nasa.gov [198.117.0.205]) by ndmsppt102.ndc.nasa.gov (8.14.7/8.14.7) with ESMTP id sBQG7Mah025100; Fri, 26 Dec 2014 10:07:29 -0600
Received: from NDMSMBX404.ndc.nasa.gov ([169.254.1.190]) by NDMSCHT105.ndc.nasa.gov ([198.117.0.205]) with mapi id 14.03.0195.001; Fri, 26 Dec 2014 10:07:22 -0600
From: "Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <david.a.zoller@nasa.gov>
To: Vangelis Anifantis <vangelis@netmode.ntua.gr>, "dtn-users@irtf.org" <dtn-users@irtf.org>
Thread-Topic: [dtn-users] DTN2 custody signal handling
Thread-Index: AQHP6hUPkdQ7fepR00uUzvS8flw0WJw0W2vggFkFDoCAAkCLAIABYjeggAifpgCACLxB8A==
Date: Fri, 26 Dec 2014 16:07:22 +0000
Message-ID: <94CFB3711B4CAE4DBFC5BEB3374BF0C61730AC@NDMSMBX404.ndc.nasa.gov>
References: <544124B9.9010600@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C6131741@NDMSMBX404.ndc.nasa.gov> <548B81FD.7030500@netmode.ntua.gr> <548D65A0.2040601@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C616935F@NDMSMBX404.ndc.nasa.gov> <5495CAAC.3000501@netmode.ntua.gr>
In-Reply-To: <5495CAAC.3000501@netmode.ntua.gr>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [198.119.225.186]
Content-Type: multipart/alternative; boundary="_000_94CFB3711B4CAE4DBFC5BEB3374BF0C61730ACNDMSMBX404ndcnasa_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.13.68, 1.0.33,  0.0.0000 definitions=2014-12-26_06:2014-12-24,2014-12-26,1970-01-01 signatures=0
Archived-At: http://mailarchive.ietf.org/arch/msg/dtn-users/bjmIJuad181rFPbGzW6ozuL844E
Subject: Re: [dtn-users] DTN2 custody signal handling
X-BeenThere: dtn-users@irtf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "The Delay-Tolerant Networking Research Group \(DTNRG\) - Users." <dtn-users.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www.irtf.org/mail-archive/web/dtn-users/>
List-Post: <mailto:dtn-users@irtf.org>
List-Help: <mailto:dtn-users-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=subscribe>
X-List-Received-Date: Fri, 26 Dec 2014 16:07:39 -0000

--_000_94CFB3711B4CAE4DBFC5BEB3374BF0C61730ACNDMSMBX404ndcnasa_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi Vangelis,
Good catch! No need to check for the special case because you are not hitti=
ng it. I experimented with the UDP CL and reproduced the issue just as you =
outlined. After the connection refused error is generated, the state of the=
 Link remains "OPEN" so there is no attempt to ever re-establish the connec=
tion. After bringing up node B again, if you send a new bundle then that bu=
ndle will be sent but the original one remains queued at the Link level ins=
tead of being sent.

I think that to continue cleanly along the lines of the current implementat=
ion would require at a minimum issuing an event to close the contact when a=
n error is detected on the socket write.  However, after reading through th=
e latest specification for the UDP CL (RFC 7122), I do not see any reason t=
o use a connected UDP socket and my opinion is that the UDP CL should be ch=
anged to use an unconnected socket and it should always transmit bundles as=
 they are queued. It is fairly easy to change to using an unconnected socke=
t:

In UDPConvergenceLayer::Sender::init()

*         Insert these lines right after the line socket_.set_logfd(false):

socket_.init_socket();

socket_.set_remote_addr(addr);

socket_.set_remote_port(port);



*         Comment out or delete the socket_.connect() code block.


In UDPConvergenceLayer::Sender::send_bundle()

*         Change the socket_.write to use sendto:

int cc =3D socket_.sendto((char*)buf_, total_len, 0,

                        socket_.remote_addr(), socket_.remote_port());

That is my take on it.
Regards,
DZ


From: Vangelis Anifantis [mailto:vangelis@netmode.ntua.gr]
Sent: Saturday, December 20, 2014 1:15 PM
To: Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]; dtn-users@irtf.or=
g
Subject: Re: [dtn-users] DTN2 custody signal handling

Hello David,

Thanks again for your response.
The problem with the custody timer not being rescheduled happens with the U=
DPconvergenceLayer. To reproduce the problem with the custody timer resched=
uling, consider a trivial scenario:
Let assume two dtn nodes (node A and node B) communicating using udp conver=
gence layer and via a static routing. By using "link dump" I observe the co=
rresponding link, e.g., my_link  ONDEMAND udp state=3DAVAILABLE. Now,  shut=
 down the dtnd in node B and then send a bundle with custody transfer enabl=
ed from node A to node B. I observe that the custody_timer is started. When=
 it fires, node A attempts to retransmit the bundle and now i have a debug =
message
[1419099989.900814 CustodyTimer 0xb4416a60 info] CustodyTimer::timeout
[1419099989.940186 UDPConvergenceLayer::Sender 0xb4404e24 error] send_bundl=
e: error sending bundle (wrote -1/110): Connection refused
Then, the bundle remains in the "custody_bundles" list and it is added to t=
he list "my_link:queue". Now on, it would be never been retransmitted again=
. Start the dtnd daemon at node B. The bundle remains as custodian in node =
A, but it would not be rescheduled for retransmission.

Sorry, I have not checked if i hit the special case that you mentioned in t=
he previous mail. I will check it out and i ll come back soon.

p.s. By using the TCP convergence layer, the problem does not exist.

Regards,
Vangelis
On 12/15/2014 4:50 PM, Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]=
 wrote:
Hello Vangelis,
Thanks for digging into and figuring out how the custody timer specs and ro=
ute specs interrelate. It looks like it would be useful to be able to overr=
ide custody spec params on the "route add" command and possibly to implemen=
t a "route reconfigure" command to change them on the fly.

A custody timer is started for the bundle as part of the BundleDaemon's pro=
cessing of the BundleTransmitted event which the convergence layer issues. =
When a custody_timeout fires, the bundle should be re-routed and transmitte=
d resulting in another BundleTransmitted event being issued resulting in st=
arting a new custody timer. If there is not an open connection when the cus=
tody_timeout fires, then the bundle should either be queued as deferred on =
a known link(s) or there may not be a link to add it to at the time. If the=
 known link eventually establishes its connection then the bundle should be=
 transmitted which starts the next custody timer. If a new link is establis=
hed then all pending bundles are checked to see if they can be routed throu=
gh the new connection which when transmitted would start a new custody time=
r.

Basically, the custody timer is only started after it is known that the bun=
dle has been transmitted. There is a special case in the comments in Bundle=
Daemon::handle_bundle_transmitted() if configured to wait for reliable tran=
smission that could result in returning without starting a new custody time=
r which should issue a warning "XXX/demmer fixme transmitted special case".

Could you be hitting the special case?
Or, can you provide more detail on the custody timer not being rescheduled =
scenario including which convergence layer?
Regards,
DZ


From: Vangelis Anifantis [mailto:vangelis@netmode.ntua.gr]
Sent: Sunday, December 14, 2014 4:26 AM
To: Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]; dtn-users@irtf.or=
g<mailto:dtn-users@irtf.org>
Subject: Re: [dtn-users] DTN2 custody signal handling

Just for the records, I have finally found out what was going on regarding =
the param command.

For my testing scenarios I used a static routing scheme by which each bundl=
e was forwarded to a predetermined link. To create disruptions, I used to s=
hut down the dtnd daemon of the remote dtn node. In this case, each generat=
ed bundle was directly forwarded to the predetermined link (as specified in=
 the route entry by the initial configuration file), where the custody time=
rs (i.e., min, lifetime_pct, max) had values equal to the ones at the time =
of the specific route entry creation/definition (for my case, the route ent=
ry was static and created by the initial dtn.conf, namely, before any param=
 command reconfiguration). Thus, I always noticed the default custody timer=
 values ([custody min 1800 pct 25 max 0]).

In case that I change the custody timer values (using param), and then I re=
-create the route entry, e.g.,
route del dtn://node20.dtn/*
route add dtn://node20.dtn/* link_0
any new custodian bundle will be bound with the new custody timer values (a=
s set using the param command).

Besides, I have also noticed that a custody timer is not rescheduled. Speci=
fically, if the custody_timeout fires and the bundle is not successfully de=
livered to the next custodian node, the custody_timeout is not rescheduled =
so as to try a new retransmission of the bundle in the future (does this ma=
ke sense?).

Regards,
Vangelis Anifantis


On 12/13/2014 2:02 AM, Vangelis Anifantis wrote:
Hello David,

Thanks for your response. It actually helps a lot, since it answers my ques=
tion regarding the custody signal handling from the administrative element.

However, on the subject of the Custody Timer, I still have problems on sett=
ing the custody timer default values using the param command (e.g., param s=
et custody_timer_max 1000). It seems that I cannot manually override the de=
fault values by using the command "param" (it has been validated by the deb=
ug logs, the forwarding log of each bundle, as well as in practice by measu=
ring the retransmission delay).

Following your suggestion/implementation, I have changed the timeout calcul=
ation in the CustodyTimer.cc so as to cover my own needs and it works fine,=
 but it would be convenient for me to be able to change on-the-fly the min/=
max values via the param command. May i miss any configuration setup (or ex=
ternal package) that prevent my dtn installation (i have not used any speci=
al customization) from this kind of functionality?

I would appreciate any help.

Regards,
Vangelis Anifantis


On 10/22/2014 12:04 AM, Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT=
] wrote:

Hi Vangelis,

Since the bundles are displaying as (NOT PENDING) the custody signal was ac=
tually processed by the administrative element (AdminRegistration.cc).

The initial bundles remain in the all_bundles list because the Custody Time=
r still has a reference to the bundle - when the timer expires the bundle w=
ill be deleted. The Custody Signal remains in the all_bundles and pending l=
ist because AdminRegistration does not update the fwdlog to indicate that t=
he bundle was delivered.



I have not noticed a functional issue after changing the custody timer defa=
ult values using the param command but may not have paid close enough atten=
tion. It could just be a logging issue but I can't say for sure.



While on the subject of the Custody Timer, I will say that I do not like th=
e implementation which sets the timeout to the min plus the percentage and =
then overrides that with the max if appropriate. We changed ours so that it=
 starts with the percentage and then overrides with the min and max if need=
ed.



Hope this helps a bit,

DZ



-----Original Message-----

From: dtn-users [mailto:dtn-users-bounces@irtf.org] On Behalf Of Vangelis A=
nifantis

Sent: Friday, October 17, 2014 9:16 AM

To: dtn-users@irtf.org<mailto:dtn-users@irtf.org>

Subject: [dtn-users] DTN2 custody signal handling



hello,



I have been recently playing around with DTN2 (dtn2.9.0 version) reference =
implementation to better understand the custody transfer capability (e.g., =
sending a bundle via dtnsend with activated the option -c).



What i am seeing is that, as expected, each dtn node in the communication c=
hain accepts the custody request, becomes the custodian and sends back a cu=
stody signal administrative record to indicate "custody_succeeded set to 1"=
 (with indications regarding custody timer parameters as configured in the =
current custodian). However, I observe that the custody signal is not handl=
ed (neither received) by the administrative element, thus, remaining on the=
 "all_bundles list" and "pending list"; and consequently, the bundle protoc=
ol agent does not follow the custody transfer success procedure by deleting=
 the initial bundle (i.e., there is still a reference on the "all_bundles l=
ist"

regarding the initial bundle with indication (NOT PENDING)). Do i miss any =
configuration setup regarding the administrative element which is deemed ne=
cessary?



Furthermore, even though I have set manually (custody_timer_min, custody_ti=
mer_lifetime_pct,  custody_timer_max) at all dtn nodes to differ from the d=
efault values, the forwarding log of the initial generated bundle keeps dis=
playing the default values, e.g., e.g.,

  forwarding log:

         TRANSMITTED -> link_name [dtn:none] FORWARD at 1412929830.51299 [c=
ustody min 1800 pct 25 max 0] Why is this happening?



Thanks in advance for any help.



Regards,

Vangelis Anifantis



_______________________________________________

dtn-users mailing list

dtn-users@irtf.org<mailto:dtn-users@irtf.org>

https://www.irtf.org/mailman/listinfo/dtn-users


--

OpenPGP public key ID:

pub  4096R/A97BA940<https://pgp.mit.edu/pks/lookup?op=3Dget&search=3D0xDFB6=
31A0A97BA940> 2014-11-15 Evangelos Anifantis <vangelis@netmode.ntua.gr><htt=
ps://pgp.mit.edu/pks/lookup?op=3Dvindex&fingerprint=3Don&search=3D0xDFB631A=
0A97BA940>

   Fingerprint=3D9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B A940










--_000_94CFB3711B4CAE4DBFC5BEB3374BF0C61730ACNDMSMBX404ndcnasa_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	color:black;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:Consolas;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-priority:99;
	mso-style-link:"Balloon Text";
	font-family:"Tahoma","sans-serif";
	color:black;}
span.EmailStyle21
	{mso-style-type:personal;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:1406608026;
	mso-list-type:hybrid;
	mso-list-template-ids:1603853590 640076030 67698691 67698693 67698689 6769=
8691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-start-at:0;
	mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
@list l0:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi Vangelis,<o:p></o:p></=
span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Good catch! No need to ch=
eck for the special case because you are not hitting it. I experimented wit=
h the UDP CL and reproduced the issue just as you outlined.
 After the connection refused error is generated, the state of the Link rem=
ains &#8220;OPEN&#8221; so there is no attempt to ever re-establish the con=
nection. After bringing up node B again, if you send a new bundle then that=
 bundle will be sent but the original one remains
 queued at the Link level instead of being sent.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">I think that to continue =
cleanly along the lines of the current implementation would require at a mi=
nimum issuing an event to close the contact when an error
 is detected on the socket write. &nbsp;However, after reading through the =
latest specification for the UDP CL (RFC 7122), I do not see any reason to =
use a connected UDP socket and my opinion is that the UDP CL should be chan=
ged to use an unconnected socket and
 it should always transmit bundles as they are queued. It is fairly easy to=
 change to using an unconnected socket:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">In UDPConvergenceLayer::S=
ender::init()<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo1"><![if !supportLists]><span style=3D"font-size:11.0pt;font-family:Sy=
mbol;color:#1F497D"><span style=3D"mso-list:Ignore">&middot;<span style=3D"=
font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;
</span></span></span><![endif]><span style=3D"font-size:11.0pt;font-family:=
&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Insert these line=
s right after the line
</span><span style=3D"font-size:10.0pt;font-family:&quot;Courier New&quot;;=
color:#1F497D">socket_.set_logfd(false)</span><span style=3D"font-size:11.0=
pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">:<=
o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:1.0in"><span style=3D"fo=
nt-size:10.0pt;font-family:&quot;Courier New&quot;;color:#1F497D">socket_.i=
nit_socket();<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:1.0in"><span style=3D"fo=
nt-size:10.0pt;font-family:&quot;Courier New&quot;;color:#1F497D">socket_.s=
et_remote_addr(addr);<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:1.0in"><span style=3D"fo=
nt-size:10.0pt;font-family:&quot;Courier New&quot;;color:#1F497D">socket_.s=
et_remote_port(port);<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"margin-left:1.0in"><span style=3D"fo=
nt-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color=
:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo1"><![if !supportLists]><span style=3D"font-size:11.0pt;font-family:Sy=
mbol;color:#1F497D"><span style=3D"mso-list:Ignore">&middot;<span style=3D"=
font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;
</span></span></span><![endif]><span style=3D"font-size:11.0pt;font-family:=
&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Comment out or de=
lete the socket_.connect() code block.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">In UDPConvergenceLayer::S=
ender::send_bundle()<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo1"><![if !supportLists]><span style=3D"font-size:11.0pt;font-family:Sy=
mbol;color:#1F497D"><span style=3D"mso-list:Ignore">&middot;<span style=3D"=
font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;
</span></span></span><![endif]><span style=3D"font-size:11.0pt;font-family:=
&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Change the socket=
_.write to use sendto:<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:.5in"><span style=3D"fon=
t-size:10.0pt;font-family:&quot;Courier New&quot;;color:#1F497D">int cc =3D=
 socket_.sendto((char*)buf_, total_len, 0,
<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:.5in"><span style=3D"fon=
t-size:10.0pt;font-family:&quot;Courier New&quot;;color:#1F497D">&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket_.remote_a=
ddr(), socket_.remote_port());<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">That is my take on it.<o:=
p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Regards,<br>
DZ<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">From:</span></b><spa=
n style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif=
&quot;;color:windowtext"> Vangelis Anifantis [mailto:vangelis@netmode.ntua.=
gr]
<br>
<b>Sent:</b> Saturday, December 20, 2014 1:15 PM<br>
<b>To:</b> Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]; dtn-users@=
irtf.org<br>
<b>Subject:</b> Re: [dtn-users] DTN2 custody signal handling<o:p></o:p></sp=
an></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt">Hello David,<br>
<br>
Thanks again for your response. <br>
The problem with the custody timer not being rescheduled happens with the U=
DPconvergenceLayer. To reproduce the problem with the custody timer resched=
uling, consider a trivial scenario:<br>
Let assume two dtn nodes (node A and node B) communicating using udp conver=
gence layer and via a static routing. By using &quot;link dump&quot; I obse=
rve the corresponding link, e.g., my_link&nbsp; ONDEMAND udp state=3DAVAILA=
BLE. Now,&nbsp; shut down the dtnd in node B and then
 send a bundle with custody transfer enabled from node A to node B. I obser=
ve that the custody_timer is started. When it fires, node A attempts to ret=
ransmit the bundle and now i have a debug message
<br>
[1419099989.900814 CustodyTimer 0xb4416a60 info] CustodyTimer::timeout&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; <br>
[1419099989.940186 UDPConvergenceLayer::Sender 0xb4404e24 error] send_bundl=
e: error sending bundle (wrote -1/110): Connection refused&nbsp;
<br>
Then, the bundle remains in the &quot;custody_bundles&quot; list and it is =
added to the list &quot;my_link:queue&quot;. Now on, it would be never been=
 retransmitted again. Start the dtnd daemon at node B. The bundle remains a=
s custodian in node A, but it would not be rescheduled
 for retransmission.<br>
<br>
Sorry, I have not checked if i hit the special case that you mentioned in t=
he previous mail. I will check it out and i ll come back soon.<br>
<br>
p.s. By using the TCP convergence layer, the problem does not exist.<br>
<br>
Regards,<br>
Vangelis<o:p></o:p></p>
<div>
<p class=3D"MsoNormal">On 12/15/2014 4:50 PM, Zoller, David A. (MSFC-EO50)[=
HOSC SERVICES CONTRACT] wrote:<o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hello Vangelis,</span><o:=
p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks for digging into a=
nd figuring out how the custody timer specs and route specs interrelate. It=
 looks like it would be useful to be able to override custody
 spec params on the &#8220;route add&#8221; command and possibly to impleme=
nt a &#8220;route reconfigure&#8221; command to change them on the fly.</sp=
an><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">&nbsp;</span><o:p></o:p><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">A custody timer is starte=
d for the bundle as part of the BundleDaemon&#8217;s processing of the Bund=
leTransmitted event which the convergence layer issues. When a
 custody_timeout fires, the bundle should be re-routed and transmitted resu=
lting in another BundleTransmitted event being issued resulting in starting=
 a new custody timer. If there is not an open connection when the custody_t=
imeout fires, then the bundle should
 either be queued as deferred on a known link(s) or there may not be a link=
 to add it to at the time. If the known link eventually establishes its con=
nection then the bundle should be transmitted which starts the next custody=
 timer. If a new link is established
 then all pending bundles are checked to see if they can be routed through =
the new connection which when transmitted would start a new custody timer.<=
/span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">&nbsp;</span><o:p></o:p><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Basically, the custody ti=
mer is only started after it is known that the bundle has been transmitted.=
 There is a special case in the comments in BundleDaemon::handle_bundle_tra=
nsmitted()
 if configured to wait for reliable transmission that could result in retur=
ning without starting a new custody timer which should issue a warning &#82=
20;XXX/demmer fixme transmitted special case&#8221;.
</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">&nbsp;</span><o:p></o:p><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Could you be hitting the =
special case?</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Or, can you provide more =
detail on the custody timer not being rescheduled scenario including which =
convergence layer? &nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Regards,</span><o:p></o:p=
></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">DZ</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">&nbsp;</span><o:p></o:p><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">&nbsp;</span><o:p></o:p><=
/p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">From:</span></b><spa=
n style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif=
&quot;;color:windowtext"> Vangelis Anifantis [<a href=3D"mailto:vangelis@ne=
tmode.ntua.gr">mailto:vangelis@netmode.ntua.gr</a>]
<br>
<b>Sent:</b> Sunday, December 14, 2014 4:26 AM<br>
<b>To:</b> Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]; <a href=3D=
"mailto:dtn-users@irtf.org">
dtn-users@irtf.org</a><br>
<b>Subject:</b> Re: [dtn-users] DTN2 custody signal handling</span><o:p></o=
:p></p>
</div>
</div>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt">Just for the records,=
 I have finally found out what was going on regarding the param command.
<br>
<br>
For my testing scenarios I used a static routing scheme by which each bundl=
e was forwarded to a predetermined link. To create disruptions, I used to s=
hut down the dtnd daemon of the remote dtn node. In this case, each generat=
ed bundle was directly forwarded
 to the predetermined link (as specified in the route entry by the initial =
configuration file), where the custody timers (i.e., min, lifetime_pct, max=
) had values equal to the ones at the time of the specific route entry crea=
tion/definition (for my case, the
 route entry was static and created by the initial dtn.conf, namely, before=
 any param command reconfiguration). Thus, I always noticed the default cus=
tody timer values ([custody min 1800 pct 25 max 0]).<br>
<br>
In case that I change the custody timer values (using param), and then I re=
-create the route entry, e.g.,<br>
route del dtn://node20.dtn/* <br>
route add dtn://node20.dtn/* link_0<br>
any new custodian bundle will be bound with the new custody timer values (a=
s set using the param command).<br>
<br>
Besides, I have also noticed that a custody timer is not rescheduled. Speci=
fically, if the custody_timeout fires and the bundle is not successfully de=
livered to the next custodian node, the custody_timeout is not rescheduled =
so as to try a new retransmission
 of the bundle in the future (does this make sense?).<br>
<br>
Regards,<br>
Vangelis Anifantis<br>
<br>
<br>
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal">On 12/13/2014 2:02 AM, Vangelis Anifantis wrote:<o:p=
></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt">Hello David,<br>
<br>
Thanks for your response. It actually helps a lot, since it answers my ques=
tion regarding the custody signal handling from the administrative element.=
<br>
<br>
However, on the subject of the Custody Timer, I still have problems on sett=
ing the custody timer default values using the param command (e.g., param s=
et custody_timer_max 1000). It seems that I cannot manually override the de=
fault values by using the command
 &quot;param&quot; (it has been validated by the debug logs, the forwarding=
 log of each bundle, as well as in practice by measuring the retransmission=
 delay).
<br>
<br>
Following your suggestion/implementation, I have changed the timeout calcul=
ation in the CustodyTimer.cc so as to cover my own needs and it works fine,=
 but it would be convenient for me to be able to change on-the-fly the min/=
max values via the param command.
 May i miss any configuration setup (or external package) that prevent my d=
tn installation (i have not used any special customization) from this kind =
of functionality?<br>
<br>
I would appreciate any help.<br>
<br>
Regards,<br>
Vangelis Anifantis<br>
<br>
<br>
<o:p></o:p></p>
<div>
<p class=3D"MsoNormal">On 10/22/2014 12:04 AM, Zoller, David A. (MSFC-EO50)=
[HOSC SERVICES CONTRACT] wrote:<o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Hi Vangelis,<o:p></o:p></pre>
<pre>Since the bundles are displaying as (NOT PENDING) the custody signal w=
as actually processed by the administrative element (AdminRegistration.cc).=
 <o:p></o:p></pre>
<pre>The initial bundles remain in the all_bundles list because the Custody=
 Timer still has a reference to the bundle - when the timer expires the bun=
dle will be deleted. The Custody Signal remains in the all_bundles and pend=
ing list because AdminRegistration does not update the fwdlog to indicate t=
hat the bundle was delivered.<o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>I have not noticed a functional issue after changing the custody timer=
 default values using the param command but may not have paid close enough =
attention. It could just be a logging issue but I can't say for sure. <o:p>=
</o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>While on the subject of the Custody Timer, I will say that I do not li=
ke the implementation which sets the timeout to the min plus the percentage=
 and then overrides that with the max if appropriate. We changed ours so th=
at it starts with the percentage and then overrides with the min and max if=
 needed.<o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>Hope this helps a bit,<o:p></o:p></pre>
<pre>DZ<o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>-----Original Message-----<o:p></o:p></pre>
<pre>From: dtn-users [<a href=3D"mailto:dtn-users-bounces@irtf.org">mailto:=
dtn-users-bounces@irtf.org</a>] On Behalf Of Vangelis Anifantis<o:p></o:p><=
/pre>
<pre>Sent: Friday, October 17, 2014 9:16 AM<o:p></o:p></pre>
<pre>To: <a href=3D"mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><o:p><=
/o:p></pre>
<pre>Subject: [dtn-users] DTN2 custody signal handling<o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>hello,<o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>I have been recently playing around with DTN2 (dtn2.9.0 version) refer=
ence implementation to better understand the custody transfer capability (e=
.g., sending a bundle via dtnsend with activated the option -c).<o:p></o:p>=
</pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>What i am seeing is that, as expected, each dtn node in the communicat=
ion chain accepts the custody request, becomes the custodian and sends back=
 a custody signal administrative record to indicate &quot;custody_succeeded=
 set to 1&quot; (with indications regarding custody timer parameters as con=
figured in the current custodian). However, I observe that the custody sign=
al is not handled (neither received) by the administrative element, thus, r=
emaining on the &quot;all_bundles list&quot; and &quot;pending list&quot;; =
and consequently, the bundle protocol agent does not follow the custody tra=
nsfer success procedure by deleting the initial bundle (i.e., there is stil=
l a reference on the &quot;all_bundles list&quot; <o:p></o:p></pre>
<pre>regarding the initial bundle with indication (NOT PENDING)). Do i miss=
 any configuration setup regarding the administrative element which is deem=
ed necessary?<o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>Furthermore, even though I have set manually (custody_timer_min, custo=
dy_timer_lifetime_pct,&nbsp; custody_timer_max) at all dtn nodes to differ =
from the default values, the forwarding log of the initial generated bundle=
 keeps displaying the default values, e.g., e.g.,<o:p></o:p></pre>
<pre>&nbsp; forwarding log:<o:p></o:p></pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRANSMITTED -&gt; lin=
k_name [dtn:none] FORWARD at 1412929830.51299 [custody min 1800 pct 25 max =
0] Why is this happening?<o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>Thanks in advance for any help.<o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>Regards,<o:p></o:p></pre>
<pre>Vangelis Anifantis<o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>dtn-users mailing list<o:p></o:p></pre>
<pre><a href=3D"mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><o:p></o:p=
></pre>
<pre><a href=3D"https://www.irtf.org/mailman/listinfo/dtn-users">https://ww=
w.irtf.org/mailman/listinfo/dtn-users</a><o:p></o:p></pre>
<pre>&nbsp;<o:p></o:p></pre>
</blockquote>
<div>
<p class=3D"MsoNormal">-- <o:p></o:p></p>
<pre><span style=3D"color:gray">OpenPGP public key ID: </span><o:p></o:p></=
pre>
<pre><span style=3D"color:gray">pub&nbsp; 4096R/<a href=3D"https://pgp.mit.=
edu/pks/lookup?op=3Dget&amp;search=3D0xDFB631A0A97BA940">A97BA940</a> 2014-=
11-15 <a href=3D"https://pgp.mit.edu/pks/lookup?op=3Dvindex&amp;fingerprint=
=3Don&amp;search=3D0xDFB631A0A97BA940">Evangelos Anifantis &lt;vangelis@net=
mode.ntua.gr&gt;</a></span><o:p></o:p></pre>
<pre><span style=3D"color:gray">&nbsp;&nbsp; Fingerprint=3D9759 E043 8873 9=
FD3 D095&nbsp; C717 DFB6 31A0 A97B A940 </span><o:p></o:p></pre>
<pre><span style=3D"color:gray">&nbsp; </span><o:p></o:p></pre>
<pre>&nbsp; <o:p></o:p></pre>
<p class=3D"MsoNormal"><br>
<br>
<br>
<o:p></o:p></p>
</div>
</blockquote>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
</blockquote>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>

--_000_94CFB3711B4CAE4DBFC5BEB3374BF0C61730ACNDMSMBX404ndcnasa_--


From nobody Fri Dec 26 09:34:16 2014
Return-Path: <vangelis@netmode.ntua.gr>
X-Original-To: dtn-users@ietfa.amsl.com
Delivered-To: dtn-users@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 178B61A90FD for <dtn-users@ietfa.amsl.com>; Fri, 26 Dec 2014 09:34:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level: 
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 So7WlONCyUZW for <dtn-users@ietfa.amsl.com>; Fri, 26 Dec 2014 09:34:08 -0800 (PST)
Received: from ulysses.noc.ntua.gr (ulysses.noc.ntua.gr [IPv6:2001:648:2000:de::230]) by ietfa.amsl.com (Postfix) with ESMTP id 686351A90D8 for <dtn-users@irtf.org>; Fri, 26 Dec 2014 09:34:07 -0800 (PST)
Received: from netmode.ece.ntua.gr (dolly.netmode.ece.ntua.gr [147.102.13.10]) by ulysses.noc.ntua.gr (8.14.5/8.14.5) with ESMTP id sBQHY4CN099950 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT);  Fri, 26 Dec 2014 19:34:05 +0200 (EET) (envelope-from vangelis@netmode.ntua.gr)
Received: from [192.168.2.4] (ppp005055100099.access.hol.gr [5.55.100.99]) (authenticated bits=0) by netmode.ece.ntua.gr (8.14.4/8.14.3) with ESMTP id sBQHXb5R082714 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Fri, 26 Dec 2014 19:33:38 +0200 (EET) (envelope-from vangelis@netmode.ntua.gr)
Message-ID: <549D9BEF.7060503@netmode.ntua.gr>
Date: Fri, 26 Dec 2014 19:33:35 +0200
From: Vangelis Anifantis <vangelis@netmode.ntua.gr>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0
MIME-Version: 1.0
To: "Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <david.a.zoller@nasa.gov>,  "dtn-users@irtf.org" <dtn-users@irtf.org>
References: <544124B9.9010600@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C6131741@NDMSMBX404.ndc.nasa.gov> <548B81FD.7030500@netmode.ntua.gr> <548D65A0.2040601@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C616935F@NDMSMBX404.ndc.nasa.gov> <5495CAAC.3000501@netmode.ntua.gr> <94CFB3711B4CAE4DBFC5BEB3374BF0C61730AC@NDMSMBX404.ndc.nasa.gov>
In-Reply-To: <94CFB3711B4CAE4DBFC5BEB3374BF0C61730AC@NDMSMBX404.ndc.nasa.gov>
Content-Type: multipart/alternative; boundary="------------000807030001010603050905"
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (ulysses.noc.ntua.gr [147.102.222.230]); Fri, 26 Dec 2014 19:34:05 +0200 (EET)
X-Virus-Scanned: clamav-milter 0.97.5 at ulysses.noc.ntua.gr
X-Virus-Status: Clean
Archived-At: http://mailarchive.ietf.org/arch/msg/dtn-users/LSpEGusNAE2b73Ndr17yxu203dA
Subject: Re: [dtn-users] DTN2 custody signal handling
X-BeenThere: dtn-users@irtf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "The Delay-Tolerant Networking Research Group \(DTNRG\) - Users." <dtn-users.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www.irtf.org/mail-archive/web/dtn-users/>
List-Post: <mailto:dtn-users@irtf.org>
List-Help: <mailto:dtn-users-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/dtn-users>, <mailto:dtn-users-request@irtf.org?subject=subscribe>
X-List-Received-Date: Fri, 26 Dec 2014 17:34:14 -0000

This is a multi-part message in MIME format.
--------------000807030001010603050905
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Thanks a lot David for your time on addressing all my inquiries.

Merry Christmas and a Happy New Year,
--Vangelis


On 12/26/2014 6:07 PM, Zoller, David A. (MSFC-EO50)[HOSC SERVICES
CONTRACT] wrote:
>
> Hi Vangelis,
>
> Good catch! No need to check for the special case because you are not
> hitting it. I experimented with the UDP CL and reproduced the issue
> just as you outlined. After the connection refused error is generated,
> the state of the Link remains =93OPEN=94 so there is no attempt to ever=

> re-establish the connection. After bringing up node B again, if you
> send a new bundle then that bundle will be sent but the original one
> remains queued at the Link level instead of being sent.
>
> =20
>
> I think that to continue cleanly along the lines of the current
> implementation would require at a minimum issuing an event to close
> the contact when an error is detected on the socket write.  However,
> after reading through the latest specification for the UDP CL (RFC
> 7122), I do not see any reason to use a connected UDP socket and my
> opinion is that the UDP CL should be changed to use an unconnected
> socket and it should always transmit bundles as they are queued. It is
> fairly easy to change to using an unconnected socket:
>
> =20
>
> In UDPConvergenceLayer::Sender::init()
>
> =B7         Insert these lines right after the line
> socket_.set_logfd(false):
>
> socket_.init_socket();
>
> socket_.set_remote_addr(addr);
>
> socket_.set_remote_port(port);
>
> =20
>
> =B7         Comment out or delete the socket_.connect() code block.
>
> =20
>
> =20
>
> In UDPConvergenceLayer::Sender::send_bundle()
>
> =B7         Change the socket_.write to use sendto:
>
> int cc =3D socket_.sendto((char*)buf_, total_len, 0,
>
>                         socket_.remote_addr(), socket_.remote_port());
>
> =20
>
> That is my take on it.
>
> Regards,
> DZ
>
> =20
>
> =20
>
> *From:*Vangelis Anifantis [mailto:vangelis@netmode.ntua.gr]
> *Sent:* Saturday, December 20, 2014 1:15 PM
> *To:* Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT];
> dtn-users@irtf.org
> *Subject:* Re: [dtn-users] DTN2 custody signal handling
>
> =20
>
> Hello David,
>
> Thanks again for your response.
> The problem with the custody timer not being rescheduled happens with
> the UDPconvergenceLayer. To reproduce the problem with the custody
> timer rescheduling, consider a trivial scenario:
> Let assume two dtn nodes (node A and node B) communicating using udp
> convergence layer and via a static routing. By using "link dump" I
> observe the corresponding link, e.g., my_link  ONDEMAND udp
> state=3DAVAILABLE. Now,  shut down the dtnd in node B and then send a
> bundle with custody transfer enabled from node A to node B. I observe
> that the custody_timer is started. When it fires, node A attempts to
> retransmit the bundle and now i have a debug message
> [1419099989.900814 CustodyTimer 0xb4416a60 info]
> CustodyTimer::timeout    =20
> [1419099989.940186 UDPConvergenceLayer::Sender 0xb4404e24 error]
> send_bundle: error sending bundle (wrote -1/110): Connection refused=20
> Then, the bundle remains in the "custody_bundles" list and it is added
> to the list "my_link:queue". Now on, it would be never been
> retransmitted again. Start the dtnd daemon at node B. The bundle
> remains as custodian in node A, but it would not be rescheduled for
> retransmission.
>
> Sorry, I have not checked if i hit the special case that you mentioned
> in the previous mail. I will check it out and i ll come back soon.
>
> p.s. By using the TCP convergence layer, the problem does not exist.
>
> Regards,
> Vangelis
>
> On 12/15/2014 4:50 PM, Zoller, David A. (MSFC-EO50)[HOSC SERVICES
> CONTRACT] wrote:
>
>     Hello Vangelis,
>
>     Thanks for digging into and figuring out how the custody timer
>     specs and route specs interrelate. It looks like it would be
>     useful to be able to override custody spec params on the =93route
>     add=94 command and possibly to implement a =93route reconfigure=94
>     command to change them on the fly.
>
>     =20
>
>     A custody timer is started for the bundle as part of the
>     BundleDaemon=92s processing of the BundleTransmitted event which th=
e
>     convergence layer issues. When a custody_timeout fires, the bundle
>     should be re-routed and transmitted resulting in another
>     BundleTransmitted event being issued resulting in starting a new
>     custody timer. If there is not an open connection when the
>     custody_timeout fires, then the bundle should either be queued as
>     deferred on a known link(s) or there may not be a link to add it
>     to at the time. If the known link eventually establishes its
>     connection then the bundle should be transmitted which starts the
>     next custody timer. If a new link is established then all pending
>     bundles are checked to see if they can be routed through the new
>     connection which when transmitted would start a new custody timer.
>
>     =20
>
>     Basically, the custody timer is only started after it is known
>     that the bundle has been transmitted. There is a special case in
>     the comments in BundleDaemon::handle_bundle_transmitted() if
>     configured to wait for reliable transmission that could result in
>     returning without starting a new custody timer which should issue
>     a warning =93XXX/demmer fixme transmitted special case=94.
>
>     =20
>
>     Could you be hitting the special case?
>
>     Or, can you provide more detail on the custody timer not being
>     rescheduled scenario including which convergence layer? =20
>
>     Regards,
>
>     DZ
>
>     =20
>
>     =20
>
>     *From:*Vangelis Anifantis [mailto:vangelis@netmode.ntua.gr]
>     *Sent:* Sunday, December 14, 2014 4:26 AM
>     *To:* Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT];
>     dtn-users@irtf.org <mailto:dtn-users@irtf.org>
>     *Subject:* Re: [dtn-users] DTN2 custody signal handling
>
>     =20
>
>     Just for the records, I have finally found out what was going on
>     regarding the param command.
>
>     For my testing scenarios I used a static routing scheme by which
>     each bundle was forwarded to a predetermined link. To create
>     disruptions, I used to shut down the dtnd daemon of the remote dtn
>     node. In this case, each generated bundle was directly forwarded
>     to the predetermined link (as specified in the route entry by the
>     initial configuration file), where the custody timers (i.e., min,
>     lifetime_pct, max) had values equal to the ones at the time of the
>     specific route entry creation/definition (for my case, the route
>     entry was static and created by the initial dtn.conf, namely,
>     before any param command reconfiguration). Thus, I always noticed
>     the default custody timer values ([custody min 1800 pct 25 max 0]).=

>
>     In case that I change the custody timer values (using param), and
>     then I re-create the route entry, e.g.,
>     route del dtn://node20.dtn/*
>     route add dtn://node20.dtn/* link_0
>     any new custodian bundle will be bound with the new custody timer
>     values (as set using the param command).
>
>     Besides, I have also noticed that a custody timer is not
>     rescheduled. Specifically, if the custody_timeout fires and the
>     bundle is not successfully delivered to the next custodian node,
>     the custody_timeout is not rescheduled so as to try a new
>     retransmission of the bundle in the future (does this make sense?).=

>
>     Regards,
>     Vangelis Anifantis
>
>
>     On 12/13/2014 2:02 AM, Vangelis Anifantis wrote:
>
>         Hello David,
>
>         Thanks for your response. It actually helps a lot, since it
>         answers my question regarding the custody signal handling from
>         the administrative element.
>
>         However, on the subject of the Custody Timer, I still have
>         problems on setting the custody timer default values using the
>         param command (e.g., param set custody_timer_max 1000). It
>         seems that I cannot manually override the default values by
>         using the command "param" (it has been validated by the debug
>         logs, the forwarding log of each bundle, as well as in
>         practice by measuring the retransmission delay).
>
>         Following your suggestion/implementation, I have changed the
>         timeout calculation in the CustodyTimer.cc so as to cover my
>         own needs and it works fine, but it would be convenient for me
>         to be able to change on-the-fly the min/max values via the
>         param command. May i miss any configuration setup (or external
>         package) that prevent my dtn installation (i have not used any
>         special customization) from this kind of functionality?
>
>         I would appreciate any help.
>
>         Regards,
>         Vangelis Anifantis
>
>
>         On 10/22/2014 12:04 AM, Zoller, David A. (MSFC-EO50)[HOSC
>         SERVICES CONTRACT] wrote:
>
>             Hi Vangelis,
>
>             Since the bundles are displaying as (NOT PENDING) the custo=
dy signal was actually processed by the administrative element (AdminRegi=
stration.cc).=20
>
>             The initial bundles remain in the all_bundles list because =
the Custody Timer still has a reference to the bundle - when the timer ex=
pires the bundle will be deleted. The Custody Signal remains in the all_b=
undles and pending list because AdminRegistration does not update the fwd=
log to indicate that the bundle was delivered.
>
>             =20
>
>             I have not noticed a functional issue after changing the cu=
stody timer default values using the param command but may not have paid =
close enough attention. It could just be a logging issue but I can't say =
for sure.=20
>
>             =20
>
>             While on the subject of the Custody Timer, I will say that =
I do not like the implementation which sets the timeout to the min plus t=
he percentage and then overrides that with the max if appropriate. We cha=
nged ours so that it starts with the percentage and then overrides with t=
he min and max if needed.
>
>             =20
>
>             Hope this helps a bit,
>
>             DZ
>
>             =20
>
>             -----Original Message-----
>
>             From: dtn-users [mailto:dtn-users-bounces@irtf.org] On Beha=
lf Of Vangelis Anifantis
>
>             Sent: Friday, October 17, 2014 9:16 AM
>
>             To: dtn-users@irtf.org <mailto:dtn-users@irtf.org>
>
>             Subject: [dtn-users] DTN2 custody signal handling
>
>             =20
>
>             hello,
>
>             =20
>
>             I have been recently playing around with DTN2 (dtn2.9.0 ver=
sion) reference implementation to better understand the custody transfer =
capability (e.g., sending a bundle via dtnsend with activated the option =
-c).
>
>             =20
>
>             What i am seeing is that, as expected, each dtn node in the=
 communication chain accepts the custody request, becomes the custodian a=
nd sends back a custody signal administrative record to indicate "custody=
_succeeded set to 1" (with indications regarding custody timer parameters=
 as configured in the current custodian). However, I observe that the cus=
tody signal is not handled (neither received) by the administrative eleme=
nt, thus, remaining on the "all_bundles list" and "pending list"; and con=
sequently, the bundle protocol agent does not follow the custody transfer=
 success procedure by deleting the initial bundle (i.e., there is still a=
 reference on the "all_bundles list"=20
>
>             regarding the initial bundle with indication (NOT PENDING))=
=2E Do i miss any configuration setup regarding the administrative elemen=
t which is deemed necessary?
>
>             =20
>
>             Furthermore, even though I have set manually (custody_timer=
_min, custody_timer_lifetime_pct,  custody_timer_max) at all dtn nodes to=
 differ from the default values, the forwarding log of the initial genera=
ted bundle keeps displaying the default values, e.g., e.g.,
>
>               forwarding log:
>
>                      TRANSMITTED -> link_name [dtn:none] FORWARD at 141=
2929830.51299 [custody min 1800 pct 25 max 0] Why is this happening?
>
>             =20
>
>             Thanks in advance for any help.
>
>             =20
>
>             Regards,
>
>             Vangelis Anifantis
>
>             =20
>
>             _______________________________________________
>
>             dtn-users mailing list
>
>             dtn-users@irtf.org <mailto:dtn-users@irtf.org>
>
>             https://www.irtf.org/mailman/listinfo/dtn-users
>
>             =20
>
>         --=20
>
>         OpenPGP public key ID:=20
>
>         pub  4096R/A97BA940 <https://pgp.mit.edu/pks/lookup?op=3Dget&se=
arch=3D0xDFB631A0A97BA940> 2014-11-15 Evangelos Anifantis <vangelis@netmo=
de.ntua.gr> <https://pgp.mit.edu/pks/lookup?op=3Dvindex&fingerprint=3Don&=
search=3D0xDFB631A0A97BA940>
>
>            Fingerprint=3D9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B =
A940=20
>
>          =20
>
>          =20
>
>
>
>
>     =20
>
> =20
>


--------------000807030001010603050905
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Thanks a lot David for your time on addressing all my inquiries.<br>
    <br>
    Merry Christmas and a Happy New Year,<br>
    --Vangelis<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 12/26/2014 6:07 PM, Zoller, David A.
      (MSFC-EO50)[HOSC SERVICES CONTRACT] wrote:<br>
    </div>
    <blockquote
cite="mid:94CFB3711B4CAE4DBFC5BEB3374BF0C61730AC@NDMSMBX404.ndc.nasa.gov"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="Microsoft Word 14 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	color:black;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:Consolas;
	color:black;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-priority:99;
	mso-style-link:"Balloon Text";
	font-family:"Tahoma","sans-serif";
	color:black;}
span.EmailStyle21
	{mso-style-type:personal;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
span.EmailStyle22
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:1406608026;
	mso-list-type:hybrid;
	mso-list-template-ids:1603853590 640076030 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-start-at:0;
	mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
@list l0:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hi
            Vangelis,<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Good
            catch! No need to check for the special case because you are
            not hitting it. I experimented with the UDP CL and
            reproduced the issue just as you outlined. After the
            connection refused error is generated, the state of the Link
            remains “OPEN” so there is no attempt to ever re-establish
            the connection. After bringing up node B again, if you send
            a new bundle then that bundle will be sent but the original
            one remains queued at the Link level instead of being sent.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">I
            think that to continue cleanly along the lines of the
            current implementation would require at a minimum issuing an
            event to close the contact when an error is detected on the
            socket write.  However, after reading through the latest
            specification for the UDP CL (RFC 7122), I do not see any
            reason to use a connected UDP socket and my opinion is that
            the UDP CL should be changed to use an unconnected socket
            and it should always transmit bundles as they are queued. It
            is fairly easy to change to using an unconnected socket:<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">In
            UDPConvergenceLayer::Sender::init()<o:p></o:p></span></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span
              style="mso-list:Ignore">·<span style="font:7.0pt
                &quot;Times New Roman&quot;">        
              </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Insert
            these lines right after the line
          </span><span style="font-size:10.0pt;font-family:&quot;Courier
            New&quot;;color:#1F497D">socket_.set_logfd(false)</span><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">:<o:p></o:p></span></p>
        <p class="MsoListParagraph" style="margin-left:1.0in"><span
            style="font-size:10.0pt;font-family:&quot;Courier
            New&quot;;color:#1F497D">socket_.init_socket();<o:p></o:p></span></p>
        <p class="MsoListParagraph" style="margin-left:1.0in"><span
            style="font-size:10.0pt;font-family:&quot;Courier
            New&quot;;color:#1F497D">socket_.set_remote_addr(addr);<o:p></o:p></span></p>
        <p class="MsoListParagraph" style="margin-left:1.0in"><span
            style="font-size:10.0pt;font-family:&quot;Courier
            New&quot;;color:#1F497D">socket_.set_remote_port(port);<o:p></o:p></span></p>
        <p class="MsoListParagraph" style="margin-left:1.0in"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span
              style="mso-list:Ignore">·<span style="font:7.0pt
                &quot;Times New Roman&quot;">        
              </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Comment
            out or delete the socket_.connect() code block.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">In
            UDPConvergenceLayer::Sender::send_bundle()<o:p></o:p></span></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span
              style="mso-list:Ignore">·<span style="font:7.0pt
                &quot;Times New Roman&quot;">        
              </span></span></span><!--[endif]--><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Change
            the socket_.write to use sendto:<o:p></o:p></span></p>
        <p class="MsoListParagraph" style="text-indent:.5in"><span
            style="font-size:10.0pt;font-family:&quot;Courier
            New&quot;;color:#1F497D">int cc =
            socket_.sendto((char*)buf_, total_len, 0,
            <o:p></o:p></span></p>
        <p class="MsoListParagraph" style="text-indent:.5in"><span
            style="font-size:10.0pt;font-family:&quot;Courier
            New&quot;;color:#1F497D">                        socket_.remote_addr(),
            socket_.remote_port());<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">That
            is my take on it.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Regards,<br>
            DZ<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p> </o:p></span></p>
        <div>
          <div style="border:none;border-top:solid #B5C4DF
            1.0pt;padding:3.0pt 0in 0in 0in">
            <p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">From:</span></b><span
style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">
                Vangelis Anifantis [<a class="moz-txt-link-freetext" href="mailto:vangelis@netmode.ntua.gr">mailto:vangelis@netmode.ntua.gr</a>]
                <br>
                <b>Sent:</b> Saturday, December 20, 2014 1:15 PM<br>
                <b>To:</b> Zoller, David A. (MSFC-EO50)[HOSC SERVICES
                CONTRACT]; <a class="moz-txt-link-abbreviated" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><br>
                <b>Subject:</b> Re: [dtn-users] DTN2 custody signal
                handling<o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal" style="margin-bottom:12.0pt">Hello David,<br>
          <br>
          Thanks again for your response. <br>
          The problem with the custody timer not being rescheduled
          happens with the UDPconvergenceLayer. To reproduce the problem
          with the custody timer rescheduling, consider a trivial
          scenario:<br>
          Let assume two dtn nodes (node A and node B) communicating
          using udp convergence layer and via a static routing. By using
          "link dump" I observe the corresponding link, e.g., my_link 
          ONDEMAND udp state=AVAILABLE. Now,  shut down the dtnd in node
          B and then send a bundle with custody transfer enabled from
          node A to node B. I observe that the custody_timer is started.
          When it fires, node A attempts to retransmit the bundle and
          now i have a debug message
          <br>
          [1419099989.900814 CustodyTimer 0xb4416a60 info]
          CustodyTimer::timeout      <br>
          [1419099989.940186 UDPConvergenceLayer::Sender 0xb4404e24
          error] send_bundle: error sending bundle (wrote -1/110):
          Connection refused 
          <br>
          Then, the bundle remains in the "custody_bundles" list and it
          is added to the list "my_link:queue". Now on, it would be
          never been retransmitted again. Start the dtnd daemon at node
          B. The bundle remains as custodian in node A, but it would not
          be rescheduled for retransmission.<br>
          <br>
          Sorry, I have not checked if i hit the special case that you
          mentioned in the previous mail. I will check it out and i ll
          come back soon.<br>
          <br>
          p.s. By using the TCP convergence layer, the problem does not
          exist.<br>
          <br>
          Regards,<br>
          Vangelis<o:p></o:p></p>
        <div>
          <p class="MsoNormal">On 12/15/2014 4:50 PM, Zoller, David A.
            (MSFC-EO50)[HOSC SERVICES CONTRACT] wrote:<o:p></o:p></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Hello
              Vangelis,</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Thanks
              for digging into and figuring out how the custody timer
              specs and route specs interrelate. It looks like it would
              be useful to be able to override custody spec params on
              the “route add” command and possibly to implement a “route
              reconfigure” command to change them on the fly.</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">A
              custody timer is started for the bundle as part of the
              BundleDaemon’s processing of the BundleTransmitted event
              which the convergence layer issues. When a custody_timeout
              fires, the bundle should be re-routed and transmitted
              resulting in another BundleTransmitted event being issued
              resulting in starting a new custody timer. If there is not
              an open connection when the custody_timeout fires, then
              the bundle should either be queued as deferred on a known
              link(s) or there may not be a link to add it to at the
              time. If the known link eventually establishes its
              connection then the bundle should be transmitted which
              starts the next custody timer. If a new link is
              established then all pending bundles are checked to see if
              they can be routed through the new connection which when
              transmitted would start a new custody timer.</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Basically,
              the custody timer is only started after it is known that
              the bundle has been transmitted. There is a special case
              in the comments in
              BundleDaemon::handle_bundle_transmitted() if configured to
              wait for reliable transmission that could result in
              returning without starting a new custody timer which
              should issue a warning “XXX/demmer fixme transmitted
              special case”.
            </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Could
              you be hitting the special case?</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Or,
              can you provide more detail on the custody timer not being
              rescheduled scenario including which convergence layer?  </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Regards,</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">DZ</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"> </span><o:p></o:p></p>
          <div>
            <div style="border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0in 0in 0in">
              <p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">From:</span></b><span
style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">
                  Vangelis Anifantis [<a moz-do-not-send="true"
                    href="mailto:vangelis@netmode.ntua.gr">mailto:vangelis@netmode.ntua.gr</a>]
                  <br>
                  <b>Sent:</b> Sunday, December 14, 2014 4:26 AM<br>
                  <b>To:</b> Zoller, David A. (MSFC-EO50)[HOSC SERVICES
                  CONTRACT]; <a moz-do-not-send="true"
                    href="mailto:dtn-users@irtf.org">
                    dtn-users@irtf.org</a><br>
                  <b>Subject:</b> Re: [dtn-users] DTN2 custody signal
                  handling</span><o:p></o:p></p>
            </div>
          </div>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal" style="margin-bottom:12.0pt">Just for the
            records, I have finally found out what was going on
            regarding the param command.
            <br>
            <br>
            For my testing scenarios I used a static routing scheme by
            which each bundle was forwarded to a predetermined link. To
            create disruptions, I used to shut down the dtnd daemon of
            the remote dtn node. In this case, each generated bundle was
            directly forwarded to the predetermined link (as specified
            in the route entry by the initial configuration file), where
            the custody timers (i.e., min, lifetime_pct, max) had values
            equal to the ones at the time of the specific route entry
            creation/definition (for my case, the route entry was static
            and created by the initial dtn.conf, namely, before any
            param command reconfiguration). Thus, I always noticed the
            default custody timer values ([custody min 1800 pct 25 max
            0]).<br>
            <br>
            In case that I change the custody timer values (using
            param), and then I re-create the route entry, e.g.,<br>
            route del dtn://node20.dtn/* <br>
            route add dtn://node20.dtn/* link_0<br>
            any new custodian bundle will be bound with the new custody
            timer values (as set using the param command).<br>
            <br>
            Besides, I have also noticed that a custody timer is not
            rescheduled. Specifically, if the custody_timeout fires and
            the bundle is not successfully delivered to the next
            custodian node, the custody_timeout is not rescheduled so as
            to try a new retransmission of the bundle in the future
            (does this make sense?).<br>
            <br>
            Regards,<br>
            Vangelis Anifantis<br>
            <br>
            <br>
            <o:p></o:p></p>
          <div>
            <p class="MsoNormal">On 12/13/2014 2:02 AM, Vangelis
              Anifantis wrote:<o:p></o:p></p>
          </div>
          <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
            <p class="MsoNormal" style="margin-bottom:12.0pt">Hello
              David,<br>
              <br>
              Thanks for your response. It actually helps a lot, since
              it answers my question regarding the custody signal
              handling from the administrative element.<br>
              <br>
              However, on the subject of the Custody Timer, I still have
              problems on setting the custody timer default values using
              the param command (e.g., param set custody_timer_max
              1000). It seems that I cannot manually override the
              default values by using the command "param" (it has been
              validated by the debug logs, the forwarding log of each
              bundle, as well as in practice by measuring the
              retransmission delay).
              <br>
              <br>
              Following your suggestion/implementation, I have changed
              the timeout calculation in the CustodyTimer.cc so as to
              cover my own needs and it works fine, but it would be
              convenient for me to be able to change on-the-fly the
              min/max values via the param command. May i miss any
              configuration setup (or external package) that prevent my
              dtn installation (i have not used any special
              customization) from this kind of functionality?<br>
              <br>
              I would appreciate any help.<br>
              <br>
              Regards,<br>
              Vangelis Anifantis<br>
              <br>
              <br>
              <o:p></o:p></p>
            <div>
              <p class="MsoNormal">On 10/22/2014 12:04 AM, Zoller, David
                A. (MSFC-EO50)[HOSC SERVICES CONTRACT] wrote:<o:p></o:p></p>
            </div>
            <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
              <pre>Hi Vangelis,<o:p></o:p></pre>
              <pre>Since the bundles are displaying as (NOT PENDING) the custody signal was actually processed by the administrative element (AdminRegistration.cc). <o:p></o:p></pre>
              <pre>The initial bundles remain in the all_bundles list because the Custody Timer still has a reference to the bundle - when the timer expires the bundle will be deleted. The Custody Signal remains in the all_bundles and pending list because AdminRegistration does not update the fwdlog to indicate that the bundle was delivered.<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>I have not noticed a functional issue after changing the custody timer default values using the param command but may not have paid close enough attention. It could just be a logging issue but I can't say for sure. <o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>While on the subject of the Custody Timer, I will say that I do not like the implementation which sets the timeout to the min plus the percentage and then overrides that with the max if appropriate. We changed ours so that it starts with the percentage and then overrides with the min and max if needed.<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>Hope this helps a bit,<o:p></o:p></pre>
              <pre>DZ<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>-----Original Message-----<o:p></o:p></pre>
              <pre>From: dtn-users [<a moz-do-not-send="true" href="mailto:dtn-users-bounces@irtf.org">mailto:dtn-users-bounces@irtf.org</a>] On Behalf Of Vangelis Anifantis<o:p></o:p></pre>
              <pre>Sent: Friday, October 17, 2014 9:16 AM<o:p></o:p></pre>
              <pre>To: <a moz-do-not-send="true" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><o:p></o:p></pre>
              <pre>Subject: [dtn-users] DTN2 custody signal handling<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>hello,<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>I have been recently playing around with DTN2 (dtn2.9.0 version) reference implementation to better understand the custody transfer capability (e.g., sending a bundle via dtnsend with activated the option -c).<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>What i am seeing is that, as expected, each dtn node in the communication chain accepts the custody request, becomes the custodian and sends back a custody signal administrative record to indicate "custody_succeeded set to 1" (with indications regarding custody timer parameters as configured in the current custodian). However, I observe that the custody signal is not handled (neither received) by the administrative element, thus, remaining on the "all_bundles list" and "pending list"; and consequently, the bundle protocol agent does not follow the custody transfer success procedure by deleting the initial bundle (i.e., there is still a reference on the "all_bundles list" <o:p></o:p></pre>
              <pre>regarding the initial bundle with indication (NOT PENDING)). Do i miss any configuration setup regarding the administrative element which is deemed necessary?<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>Furthermore, even though I have set manually (custody_timer_min, custody_timer_lifetime_pct,  custody_timer_max) at all dtn nodes to differ from the default values, the forwarding log of the initial generated bundle keeps displaying the default values, e.g., e.g.,<o:p></o:p></pre>
              <pre>  forwarding log:<o:p></o:p></pre>
              <pre>         TRANSMITTED -&gt; link_name [dtn:none] FORWARD at 1412929830.51299 [custody min 1800 pct 25 max 0] Why is this happening?<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>Thanks in advance for any help.<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>Regards,<o:p></o:p></pre>
              <pre>Vangelis Anifantis<o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
              <pre>_______________________________________________<o:p></o:p></pre>
              <pre>dtn-users mailing list<o:p></o:p></pre>
              <pre><a moz-do-not-send="true" href="mailto:dtn-users@irtf.org">dtn-users@irtf.org</a><o:p></o:p></pre>
              <pre><a moz-do-not-send="true" href="https://www.irtf.org/mailman/listinfo/dtn-users">https://www.irtf.org/mailman/listinfo/dtn-users</a><o:p></o:p></pre>
              <pre> <o:p></o:p></pre>
            </blockquote>
            <div>
              <p class="MsoNormal">-- <o:p></o:p></p>
              <pre><span style="color:gray">OpenPGP public key ID: </span><o:p></o:p></pre>
              <pre><span style="color:gray">pub  4096R/<a moz-do-not-send="true" href="https://pgp.mit.edu/pks/lookup?op=get&amp;search=0xDFB631A0A97BA940">A97BA940</a> 2014-11-15 <a moz-do-not-send="true" href="https://pgp.mit.edu/pks/lookup?op=vindex&amp;fingerprint=on&amp;search=0xDFB631A0A97BA940">Evangelos Anifantis &lt;vangelis@netmode.ntua.gr&gt;</a></span><o:p></o:p></pre>
              <pre><span style="color:gray">   Fingerprint=9759 E043 8873 9FD3 D095  C717 DFB6 31A0 A97B A940 </span><o:p></o:p></pre>
              <pre><span style="color:gray">  </span><o:p></o:p></pre>
              <pre>  <o:p></o:p></pre>
              <p class="MsoNormal"><br>
                <br>
                <br>
                <o:p></o:p></p>
            </div>
          </blockquote>
          <p class="MsoNormal"> <o:p></o:p></p>
        </blockquote>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------000807030001010603050905--

