IONIMPLEMENTATION
OF THEDTN PROTOCOL
Exercise: Add a Node to an Existing Scenario
1©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
Agenda
• Add a new node to the Exercise2A_constant configuration• Add Node3 that communicates with Node2 via a TCP Convergence Layer
2
ION NASA ION Class CORE Scenarios:https://nasaioncourse.s3.amazonaws.com/NASA_ION_Course_v2.tgz
©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
To Add A Node…
• Copy the Exercise2A_constant directory to Exercise1Bcp –ar Exercise2A_constant Exercise1B
• cd into Exercise1B_constant• Change the name of the .imn file to Exercise1B.imn
cd Exercise1Bmv Exercise2A_constant.imn Exercise1B
• Copy an existing node directory (e.g. n2) to a new node (e.g. n3)cp –r n2 n3
• Edit the file n3/link/nodeParams.sh• Change the IPN_NODE_NUMBER to 3• This is used by the CORE setup script, not directly part of ION configuration
3©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
Create a New Node
• In the CORE gui, make n3 by right‐clicking on n2, copying it, and then using the menu bar to paste the new node onto the canvas
• Note: Magic. The startup scripts that automatically start ION are part of the node configuration.
• If you simply make a new node by clicking the router icon and placing a new node on the canvas, you’ll also need to:
• Connect that node to the wireless network (right‐click on the node and connect it to wlan5)
• Either:• Install the node startup script functions• Set up the node by hand after the emulation starts
4©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
Copy n1’s Config Files
• In the host Exercise1B/config directory:cp n1.ionconfig n3.ionconfigcp n1.ionrc n3.ionrccp n1.bprc n3.bprccp n1.ipnrc n3.ipnrc(you can skip the .ltprc file)
5©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
Edit the Config Files
• Edit the config files for n1 and n2 so that n2 is a neighbor of n3 and n3 appears in the (global) contact plan
• Add a TCP CLA from n2 to n3 and vice/versa• Add a TCP protocol line on n2• Add a TCP induct on n2• Add a TCP outduct from n2 to n3
• Modify the new n3 config files to add the TCP CL to n2• Change n3’s induct and outduct types (and the syntax) to tcpcls
6©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
n3.ionrc
Old (copied from n1.ionrc) Change to
1 1 1 3
7©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
n3.bprc
Old (copied from n1.ionrc) Change to / Add
a endpoint ipn:1.x a endpoint ipn:3.x
a protocol tcp 1400 100 1000000
Comment out ltp induct and ltp outduct a induct tcp 0.0.0.0:4556 tcpcli
a outduct tcp 10.0.1.2:4556 tcpclo (or instead of tcpclo we could just use ‘’)
8©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
n3.ipnrc
Old (copied from n1.ionrc) Change to
a plan 2 ltp/2 a plan 2 tcp/10.0.1.2:4556
9©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
n2.ipnrc
Old Add
a plan 3 tcp/10.0.1.3:4556
10©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
n2.ipnrc
Old Add
a plan 3 tcp/10.0.1.3:4556
11©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
n2.bprc
Old Add
a protocol tcp 1400 100 1000000
a induct tcp 0.0.0.0:4556 tcpcli
a outduct tcp 10.0.1.3:4556 tcpclo (or ‘’)
12©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
contacts.ionrc
Old Add
a range +0 +1000 2 3 1a range +0 +1000 3 2 1a contact +0 +1000 2 3 1000000a contact +0 +1000 3 2 1000000
Note: do NOT screw up and make this “3 3”:• Node 2 will be able to send to node 3 but node 3 won’t be
able to get to node 2• It’ll take you a long time to figure out where the error is
13©2020 The MITRE Corporation. All rights reserved. Approved for public
release. Distribution unlimited 19‐03234‐4.
CORE Scenario Directory Structure and Scripts
14©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
Notes on What’s CORE and what’s ION
• There’s a lot of infrastructure in the DTN DevKit that manages ‘automatically’ starting ION on the various nodes
• As you may have noticed from my difficulties starting everything up by hand…
15©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.
NAS
A_ION_C
ourse
Common
nodeSetup.sh
generalSetup.sh
Scenario (e.g. Exercise2B)
Scenario.imn
common Link
CORE_IONConfig.sh
generalParams.sh
nodeSetup.shgeneralSetup.sh
Config
nx.ionrc nx.bprc
nx.ltprc nx.ipnrc
contacts.ionrc
n1, n2, … link
nodeParams.sh
nodeSpecificSetup.sh
generalSetup.sh
16©2020 The MITRE Corporation. All rights reserved. Approved for public release. Distribution unlimited 19‐03234‐4.