Subject: [dtn-users] dtnping performance issues

From: Razvan BEURAN <[email-masked]>
Date: Mon, 16 Jan 2012 10:06:09 +0900 (JST)

Dear all,

I have started using DTN2 several months ago, and it has generally been a 
positive experience. However, some of the experiments I did produced some 
unexpected results in terms of performance, and I became even more puzzled 
after doing similar experiments with another DTN implementation most of 
you may already know, IBR-DTN.

Since it would be too lengthy to dicuss all the problems I had, I shall 
focus here on a single and very simple issue, the RTT shown by dtnping 
when run between two PCs:

* DTN2 dtnping (temporary storage in file,
   persistent storage in BerkleyDB):			90 ms
* DTN2 dtnping (temporary storage in file,
   persistent storage in memory): 			41 ms
* IBR-DTN dtnping (temporary storage in file,
   persistent storage in file):                          4.2 ms
* IBR-DTN dtnping (temporary storage in file,
   persistent storage in memory): 			3.6 ms
* IBR-DTN dtnping (temporary storage in memory,
   persistent storage in memory):			2.9 ms

FYI, the PCs are relatively old but fast enough (Dual-core Pentium 4, 3.2 
GHz, 4GB RAM) and are connected via a switch. The standard ping command 
shows an RTT of about 1 ms between these 2 PCs.

The results for DTN2 get even worse when using a large number of nodes (10 
and 26), but since these large-experiment conditions are difficult to 
reproduce I will skip this issue for the time being.

Given the above, I have two (sets of) questions:

1) Are the DTN2 dtnping results I obtained normal? Can anyone provide
    results from a similar experiment for comparison purposes. Has anyone
    done similar experiments with IBR-DTN? Are there any suggestions for
    improving performance of DTN2?

2) Has anyone done DTN2 experiments with a large number of nodes? By large
    I mean at least more than 10, but preferably more than 25. My
    preliminary results with dtnping show quite a poor performance of DTN2
    compared with IBR-DTN in large settings, and I can provide more details
    about this if requested.

Best wishes,
Razvan

---

From: "Ivancic, William D. (GRC-RHN0)" <[email-masked]>
Date: Tue, 17 Jan 2012 08:13:34 -0600

Just for clarification, I assume you are using TCP convergence layer and all systems have continuous connectivity?  Is that correct?

I don't know if either of these will matter, but for clarification:

Are you using any routing protocol or static routes?

Are you using DNS lookups?

- Will

On Jan 15, 2012, at 8:06 PM, Razvan BEURAN wrote:

Dear all,

Best wishes,
Razvan
_______________________________________________
dtn-users mailing list
[email-masked]<mailto:[email-masked]>
https://www.irtf.org/mailman/listinfo/dtn-users

---

From: John Zinky <[email-masked]>
Date: Tue, 17 Jan 2012 09:29:33 -0500

Razan,
It might be helpful to post the DTN 2.8 config files for both BPAs.
That would answer all the config questions.
(You might have to strip off the comments).

thanks
zinky

On Jan 15, 2012, at 8:06 PM, Razvan BEURAN wrote:

> 
> Dear all,
> 
> I have started using DTN2 several months ago, and it has generally been a positive experience. However, some of the experiments I did produced some unexpected results in terms of performance, and I became even more puzzled after doing similar experiments with another DTN implementation most of you may already know, IBR-DTN.
> 
> Since it would be too lengthy to dicuss all the problems I had, I shall focus here on a single and very simple issue, the RTT shown by dtnping when run between two PCs:
> 
> FYI, the PCs are relatively old but fast enough (Dual-core Pentium 4, 3.2 GHz, 4GB RAM) and are connected via a switch. The standard ping command shows an RTT of about 1 ms between these 2 PCs.
> 
> The results for DTN2 get even worse when using a large number of nodes (10 and 26), but since these large-experiment conditions are difficult to reproduce I will skip this issue for the time being.
> 
> [email-masked]

---

From: Razvan BEURAN <[email-masked]>
Date: Mon, 23 Jan 2012 08:52:24 +0900 (JST)

Dear all,

Sorry for my late reply, but I was away from office for a while.

In order to reduce speculations, I made an even simpler experiment that 
anyone should be able to reproduce. Thus, I used the default configuration 
file in the DTN2 distribution, and I did dtnping to localhost. Since the 
configuration file is the default one, I believe it is not necessary to 
include it.

Here are the results I obtained for the latest DTN2 releases:

1) For dtn-2.8

> ./dtnping localhost
source_eid [dtn://hpc1.starbed.net.dtn/ping.8026]
dtn_register succeeded, regid 10
PING [dtn://hpc1.starbed.net.dtn/ping] (expiration 30)...
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=0, time=191 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=1, time=168 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=2, time=168 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=3, time=201 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=4, time=191 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=5, time=176 ms

2) For dtn-2.7

> ./dtnping localhost
source_eid [dtn://hpc1.starbed.net.dtn/ping.7986]
dtn_register succeeded, regid 10
PING [dtn://hpc1.starbed.net.dtn/ping] (expiration 30)...
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=0, time=33 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=1, time=35 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=2, time=35 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=3, time=36 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=4, time=35 ms
20 bytes from [dtn://hpc1.starbed.net.dtn/ping]: 'dtnping!' seqno=5, time=35 ms

3) For comparison here are the ordinary ping results:
> ping localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.033 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.027 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.027 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.027 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.027 ms

My results show a 6x increase in delay for dtn-2.8 compared to dtn-2.7, 
and about 1000x increase in delay for dtn-2.7 compared to ordinary ping.
These huge differences are very puzzling, and I would appreciate if 
someone could confirm whether the results I obtained are reproducible or 
not.

If the results are reproducible, I believe this performance issue should 
be addressed somehow, otherwise large experiments cannot be performed. If 
the results are not reproducible, then it would be nice to be able to find 
the cause. By the way, I used for this experiments a high performance PC 
(Intel i7-2600 CPU @ 3.40GHz) and the OS was Scientific Linux 6.0 (a 
variant of RedHat Enterprise Linux 6.0).

Best wishes,
Razvan