Thanks to IPN-ISOC Board Member Keith Scott of Mitre Corp. for providing the contents for this post!

Thanks to MITRE’s Technology Transfer Office, the latest version of the DTN Development Kit is now hosted on a MITRE server and available for download:

http://www2.mitre.org/public/ DTN_Dev_Kit/DTNDevKit_2.0_ ion3.5.0.iso

The Development Kit ISO is an Ubuntu VM with ION 3.5.0, the Common Open Research Emulator (CORE), and some utilities to help users get started with DTN, and ION in particular. CORE is a virtualization environment that allows for easily running multiple ION nodes and controlling the connectivity and communication parameters (latency, packet loss rate, etc.) among them. Sample scenarios are included that emulate constantly-connected nodes (for easy testing), a data mule scenario, a Mars scenario, and an Earth-observing satellite scenario. In the sample scenarios, connectivity is controlled by an emulated wireless link and a simple mobility script. ION contact plans are synchronized to the mobility script to allow testing of scheduled connectivity. [NB: this process is not perfect, the contact plans may end up misaligned by a few seconds, so contacts that last several 10s of seconds are recommended. Also, many of the scenarios rely on IP routing to reach even next-hop neighbors (e.g. if a next-hop neighbor has multiple interfaces) – it may be necessary to wait 30s or so at the beginning of a scenario for OSPF to converge before BP can take over and function.]

To run any of the scenarios, boot the virtual machine and log in as user: core password: cvm and start the core-daemon with ‘core-daemon &’, then start the core-gui with ‘core-gui &’. From there you can use the file menu to navigate to the DTN Dev Kit Scenarios under ~/.core/configs and launch one. There’s documentation in the NSA_DTN_CORE_Scenarios folder in the user’s home directory.

Screenshots of the scenarios:

A simple scenario with a satellite that moves in and out of range.

A Mars scenario with 3 ground stations, a rover, and an orbiter.

An Earth-observing satellite scenario with multiple ground stations:

Network Management

A new and relatively untested feature: the DevKit now incorporates an Elasticsearch / Logstash / Kibana (ELK) stack and simple scripts to exercise ION network management. The network management script DOES require that you (one time) follow the instructions below Everything below will be done automatically in future versions of the Dev Kit, but for now:

[Ensure you have your http_proxy and https_proxy environment variables set]

Run: sudo -E apt-get install python-pexpect

From within the DevKit VM, start Firefox and go to localhost://5601 to get the Kibana interface. Select the ‘Settings’ tab in the top ribbon. If ‘bpnm’ show up under the ‘Index Patterns’ on the left side, select it and click the red trash can to delete it.

From the ~/NASA_DTN_CORE_Scenarios/ CORE_configs/3GS/MO/link/ NMConsole directory, run the following to set up the datatypes in the Elasticsearch database. This needs to be run from a terminal on the DevKit VM itself (NOT one of the emulated machines inside CORE that are running ION).

Run: sudo ./def.sh

Again click on the Kibana page with the ‘Settings’ tab, so that it says “Configure an Index Pattern” and in the bar where you can type, type ‘bpnm’ (no quotes). This should enable the ‘time-field name’ selection, where you want ‘receive_timestamp’.

NOTE: yes, there’s a ‘SendTimestamp’ that you might think would be better, but I think SOMEBODY (probably me) in the chain doesn’t handle daylight savings time right – send timestamps come out an hour in the future, so until that gets sorted out, let’s stick with receive timestamps.

Network management is only enabled in the 3GS scenario. In the 3GS scenario, double-click on the ‘MO’ node (ION node 5 in the lower left) and cd into the NMConsole directory of the node. The nm_reqfull.py script will pull basic network management information from a node and insert it into an elasticsearch database (do ‘nm_reqfull.py –h’ for usage, but ‘nm_reqfull.py –m ipn:5.6 –a ipn:2.5’ will pull information from node 2). You can then get at the data from Kibana by going to the ‘Discover’ tab and selecting ‘bpnm’ from the list of index patterns (dark grey bar upper left)

Future enhancements will include scripts that will plot e.g. the number of bundles resident at a node over time, etc.