Subject: [dtn-users] ION-DTN interoperability issue

From: Somreeta Pramanik <[email-masked]>
Date: Mon, 29 Sep 2014 12:11:40 +0530 (IST)

Dear all,

I am trying with ION-DTN interoperability (DTN daemon is running in one machine and ION is in another one), the message communication from DTN node to ION node is working but the reverse i.e.; message communication from ION node to DTN is not working. Here is the output I am getting and the details of dtn.conf and ion-host.rc. 

When I am running dtn 
somreeta@somreeta:~/test-bed/dtn-2.9.0$ sudo daemon/dtnd -c /home/somreeta/dtn/dtn.conf --init-db 
[sudo] password for somreeta: 
[1411747392.946016 /dtnd notice] random seed is 946013 
[1411747392.946071 /dtnd notice] DTN daemon starting up... (pid 2901) 
[1411747392.950714 /dtnd notice] initializing persistent data store 
[1411747392.982307 /dtnd error] Initializing datastore which already exists. 

somreeta@somreeta:~/test-bed/dtn-2.9.0$ sudo daemon/dtnd -c /home/somreeta/dtn/dtn.conf 
[1411747396.944362 /dtnd notice] random seed is 944360 
[1411747396.944403 /dtnd notice] DTN daemon starting up... (pid 2904) 
[1411747396.961645 /S10 notice] Lines marked "S10" are log lines added to make parsing 
[1411747396.961679 /S10 notice] the logs easier after extended tests. These were added for 
[1411747396.961695 /S10 notice] the summer 2010 N4C summer trial and are mainly new lines 
[1411747396.961709 /S10 notice] that allow tracing bundles across multiple hops. 
[1411747396.961724 /S10 notice] To extract these do the following... 
[1411747396.961738 /S10 notice] grep "S10 info" <dtnd-log-files> | grep -v grep | awk '{print $4,$5}' | sort -n 
[1411747396.962772 /dtn/bundle/daemon notice] loading bundles from data store 

somreeta dtn% 

somreeta dtn% [1411747528.640888 /dtn/bundle/protocol error] error parsing previous hop eid 'dtn://somreetadtn.dtn 
[1411747528.640911 /dtn/bundle/protocol error] consume: protocol error handling block 0x5 
[1411747528.640922 /dtn/cl/tcp/conn/0x7f7268000940 error] protocol error parsing bundle data segment 

The configuration for ION is as follows 
## begin ionadmin 
# Initialization command 
1 1 "" 

# Start ION 
s 

# Add contacts (1-2 connected for 1 hr, 100 kbps) 
a contact +1 +3600 1 1 100000 
a contact +1 +3600 1 2 100000 
a contact +1 +3600 2 1 100000 
a contact +1 +3600 2 2 100000 
# Assign ranges (for the next hour, 1 second or less OWLT) 
a range +1 +3600 1 1 1 
a range +1 +3600 1 2 1 
a range +1 +3600 2 2 1 

# Assign production/consumption rates (dummy) 
m production 100000 
m consumption 100000 
## end ionadmin 

## begin bpadmin 
1 

# Add scheme (DTN w/EIDs) 
a scheme dtn 'dtn2fw' 'dtn2adminep' 
# the scheme will use the "gethostname" command and 
# automatically create the custodian eid dtn://<hostname>.dtn 
# NOTE: in this situation, the host was named host1. your 
# configuration will be different. 

# Alert ION which endpoints are on this host 
a endpoint dtn://somreetadtn.dtn/sink q 
#a endpoint dtn://ION2.dtn/ping q 
# add the tcp convergence layer and outducts 
# note that your IPs will be different 
a protocol tcp 1400 100 
a induct tcp 10.1.1.2:4555 tcpcli 
#loopback outduct 
a outduct tcp 10.1.1.2:4555 tcpclo 
# outduct to dtn2 node 
a outduct tcp 10.1.1.4:4557 tcpclo 
s 
# start daemons 
## end bpadmin 

## begin ipnadmin 
# this may not be necessary 
a plan 1 tcp/ 10.1.1.2:4555 
a plan 2 tcp/ 10.1.1.4:4557 
## end ipnadmin 

## begin dtn2admin 
# note that the "dtn:" is omitted from the routing plans. 
a plan //somreeta.dtn x tcp/ 10.1.1.4:4557 
#a plan //ION2.dtn x tcp/ 10.1.1.2:4555 

# plans support an * character as a wildcard. 
# a default route would look like this 
# a plan //* f dtn://dtn2box.dtn 
# this will use dtn2box.dtn as the "next hop" 
## end dtn2admin 

The configuration for DTN is as follows 

## 
# dtn.conf 
# 
# Default configuration file for Internet-connected DTN nodes. The 
# daemon uses a tcl interpreter to parse this file, thus any standard 
# tcl commands are valid, and all settings are get/set using a single 
# 'set' functions as: <module> set <var> <val?> 
# 

log /dtnd info "dtnd parsing configuration..." 

######################################## 
# 
# Daemon Console Configuration 
# 
######################################## 

# 
# console set stdio [ true | false ] 
# 
# If set to false, disable the interactive console on stdin/stdout. 
# The default is set to true (unless the dtnd process is run as a 
# daemon). 
# 
# console set stdio false 

# 
# console set addr <port> 
# console set port <port> 
# 
# Settings for the socket based console protocol. 
# (this interprets user commands) 
# 
console set addr 127.0.0.1 
console set port 5050 

# 
# console set prompt <prompt> 
# 
# Set the prompt string. Helps if running multiple dtnd's 
# 
set shorthostname [lindex [split [info hostname] .] 0] 
console set prompt "$shorthostname dtn% " 

######################################## 
# 
# Storage Configuration 
# 
######################################## 

# 
# storage set type [ berkeleydb | external | memorydb ] 
# 
# Set the storage system to be used 
# 
storage set type berkeleydb 

# the following are for use with external data stores 
# 
# The server port to connect to (on localhost) 
# Note that 62345 has no special significance -- chosen randomly 
storage set server_port 62345 

# The external data store schema location, which can be 
# found in dtn2/oasys/storage/DS.xsd. 
storage set schema /etc/DS.xsd 

# 
# Do a runtime check for the standard locations for the persistent 
# storage directory 
# 
set dbdir "/home/somreeta/dtn" 
foreach dir {/var/dtn /var/tmp/dtn} { 
if {[file isdirectory $dir]} { 
set dbdir $dir 
break 
} 
} 

if {$dbdir == ""} { 
puts stderr "Must create /var/dtn or /var/tmp/dtn storage directory" 
exit 1 
} 

# 
# storage set payloaddir <dir> 
# 
# Set the directory to be used for bundle payload files 
# 
storage set payloaddir $dbdir/bundles 

# 
# storage set dbname <db> 
# 
# Set the database name (appended with .db as the filename in berkeley 
# db, used as-is for SQL variants 
# 
storage set dbname DTN 

# 
# storage set dbdir <dir> 
# 
# 
# When using berkeley db, set the directory to be used for the 
# database files and the name of the files and error log. 
# 
storage set dbdir $dbdir/db 

######################################## 
# 
# Routing configuration 
# 
######################################## 

# 
# Set the algorithm used for dtn routing. 
# 
# route set type [static | flood | neighborhood | linkstate | external] 
# 
route set type static 

# 
# route local_eid <eid> 
# 
# Set the local administrative id of this node. The default just uses 
# the internet hostname plus the appended string ".dtn" to make it 
# clear that the hostname isn't really used for DNS lookups. 
# 
route local_eid "dtn://somreeta.dtn" 

# 
# External router specific options 
# 
# route set server_port 8001 
# route set hello_interval 30 
# route set schema "/etc/router.xsd" 

######################################## 
# 
# TCP convergence layer configuration 
# 
######################################## 

# 
# interface add [name] [CL] 
# 
# Add an input interface to listen on addr:port for incoming bundles 
# from other tcp / udp convergence layers 
# 
# For IP-based interfaces, interfaces listen on INADDR_ANY port 4556 
# by default. These can be overridden by using the local_addr and/or 
# local_port arguments. 
interface add tcp0 tcp local_port=4557 
#interface add udp0 udp 

# 
# link add <name> <nexthop> <type> <clayer> <args...> 
# 
# Add a link to a peer node. 
# 
# For IP-based links (tcp or udp), the nexthop should contain a DNS 
# hostname or IP address, followed optionally by a : and a port. If 
# the port is not specified, the default of 4556 is used. 
# 
# e.g. link add link1 dtn.dtnrg.org ONDEMAND tcp 
link add link_tcp37 10.1.1.2:4555 ALWAYSON tcp 

# 
# route add <dest> <link|peer> 
# 
# Add a route to the given bundle endpoint id pattern <dest> using the 
# specified link name or peer endpoint. 
# 
# e.g. route add dtn://host.domain/* tcp0 
route add dtn://somreetadtn.dtn/* link_tcp37 
######################################## 
# 
# Service discovery 
# 
######################################## 

# 
# discovery add <name> <af> <opts...> 
# discovery announce <cl_name> <discovery_name> <cl_type> <opts...> 
# 
# Add a local neighborhood discovery module 
# 
# e.g. discovery add discovery_bonjour bonjour 

######################################## 
# 
# Parameter Tuning 
# 
######################################## 

# 
# Set the size threshold for the daemon so any bundles smaller than this 
# size maintain a shadow copy in memory to minimize disk accesses. 
# 
# param set payload_mem_threshold 16384 

# 
# Test option to keep all bundle files in the filesystem, even after the 
# bundle is no longer present at the daemon. 
# 
# param set payload_test_no_remove true 

# 
# Set the size for which the tcp convergence layer sends partial reception 
# acknowledgements. Used with reactive fragmentation 
# 
# param set tcpcl_partial_ack_len 4096 

# 
# Set if bundles are automatically deleted after transmission 
# 
# param set early_deletion true 

# (others exist but are not fully represented here) 

######################################## 
# 
# Extension Block Configuration 
# 
######################################## 

# 
# Attach an Age Extension Block to outgoing bundles 
# 
# block set age_outbound_enabled false 

# 
# Process the Age Extension Block on incoming bundles 
# 
# block set age_inbound_processing true 

# 
# Zero out the Creation Timestamp Time on bundles 
# 
# block set age_zero_creation_ts_time false 

######################################## 
# 
# BPQ caching control 
# 
######################################## 

# 
# Turn on caching of passing bundles with BPQ blocks 
# 
# bpq enable 
# 

log /dtnd info "dtnd configuration parsing complete" 

## emacs settings to use tcl-mode by default 
## Local Variables: *** 
## mode:tcl *** 
## End: *** 

Pls help so that I can make communication from ION to DTN machine. 

Thanks and Regards, Somreeta Pramanik

MS Scholar 
IIT Kharagpur

---

From: "Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <[email-masked]>
Date: Tue, 30 Sep 2014 16:57:08 +0000

Hello Somreeta,

The ION node is including a Previous Hop Insertion Block (RFC-6259  - Block type 0x05) which the DTN2 node is having a problem parsing.

The EID looks acceptable to me (dtn://somreetadtn.dtn). You might try turning on debug level logging to see if it provides more info. You may find a problem down in the oasys::URI parsing methods.

Good luck,

DZ

-----Original Message-----
From: dtn-users [mailto:[email-masked]] On Behalf Of Somreeta Pramanik
Sent: Monday, September 29, 2014 1:42 AM
To: .
Subject: [dtn-users] ION-DTN interoperability issue

Dear all,

When I am running dtn

somreeta@somreeta:~/test-bed/dtn-2.9.0$<mailto:somreeta@somreeta:~/test-bed/dtn-2.9.0$> sudo daemon/dtnd -c /home/somreeta/dtn/dtn.conf --init-db [sudo] password for somreeta:

somreeta@somreeta:~/test-bed/dtn-2.9.0$<mailto:somreeta@somreeta:~/test-bed/dtn-2.9.0$> sudo daemon/dtnd -c /home/somreeta/dtn/dtn.conf

somreeta dtn%

The configuration for ION is as follows ## begin ionadmin # Initialization command

1 1 ""

# Start ION

s

# Add contacts (1-2 connected for 1 hr, 100 kbps) a contact +1 +3600 1 1 100000 a contact +1 +3600 1 2 100000 a contact +1 +3600 2 1 100000 a contact +1 +3600 2 2 100000 # Assign ranges (for the next hour, 1 second or less OWLT) a range +1 +3600 1 1 1 a range +1 +3600 1 2 1 a range +1 +3600 2 2 1

# Assign production/consumption rates (dummy) m production 100000 m consumption 100000 ## end ionadmin

## begin bpadmin

1

# the scheme will use the "gethostname" command and # automatically create the custodian eid dtn://<hostname>.dtn # NOTE: in this situation, the host was named host1. your # configuration will be different.

# Alert ION which endpoints are on this host a endpoint dtn://somreetadtn.dtn/sink q #a endpoint dtn://ION2.dtn/ping q # add the tcp convergence layer and outducts # note that your IPs will be different a protocol tcp 1400 100 a induct tcp 10.1.1.2:4555 tcpcli #loopback outduct a outduct tcp 10.1.1.2:4555 tcpclo # outduct to dtn2 node a outduct tcp 10.1.1.4:4557 tcpclo s # start daemons ## end bpadmin

## begin ipnadmin

## end ipnadmin

## begin dtn2admin

a plan //somreeta.dtn x tcp/ 10.1.1.4:4557 #a plan //ION2.dtn x tcp/ 10.1.1.2:4555

## end dtn2admin

##

# dtn.conf

#

# Default configuration file for Internet-connected DTN nodes. The # daemon uses a tcl interpreter to parse this file, thus any standard # tcl commands are valid, and all settings are get/set using a single # 'set' functions as: <module> set <var> <val?> #

#

#

#

#

# The default is set to true (unless the dtnd process is run as a # daemon).

#

#

#

#

console set port 5050

#

#

# Set the prompt string. Helps if running multiple dtnd's # set shorthostname [lindex [split [info hostname] .] 0] console set prompt "$shorthostname dtn% "

#

# Storage Configuration

#

#

# storage set type [ berkeleydb | external | memorydb ] # # Set the storage system to be used # storage set type berkeleydb

# the following are for use with external data stores # # The server port to connect to (on localhost) # Note that 62345 has no special significance -- chosen randomly storage set server_port 62345

# The external data store schema location, which can be # found in dtn2/oasys/storage/DS.xsd.

#

# storage directory

#

set dbdir $dir

break

}

}

if {$dbdir == ""} {

exit 1

}

#

#

#

#

#

#

storage set dbname DTN

#

#

#

#

#

# Routing configuration

#

#

#

#

route set type static

#

# route local_eid <eid>

#

#

#

#

#

#

#

#

#

# local_port arguments.

#interface add udp0 udp

#

#

#

#

#

#

#

#

# Service discovery

#

#

#

#

#

# Parameter Tuning

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

# BPQ caching control

#

#

#

# bpq enable

#

## Local Variables: ***

## mode:tcl ***

## End: ***

MS Scholar

IIT Kharagpur

_______________________________________________

dtn-users mailing list

[email-masked]<mailto:[email-masked]>

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