SLIDE 1 DTN7
An Open-Source Disruption-tolerant Networking Implementation of Bundle Protocol 7 Alvar Penning, Lars Baumg¨ artner, Jonas H¨
Artur Sterz, Mira Mezini, Bernd Freisleben AdHoc-Now 2019
SLIDE 2
Delay / Disruption-tolerant Networking (DTN)
◮ Situations without a reliable uplink
◮ Environmental monitoring in remote areas ◮ Destroyed telecommunication infrastructure ◮ Internet access is blocked
1
SLIDE 3
Delay / Disruption-tolerant Networking (DTN)
◮ Situations without a reliable uplink
◮ Environmental monitoring in remote areas ◮ Destroyed telecommunication infrastructure ◮ Internet access is blocked
1
SLIDE 4
Delay / Disruption-tolerant Networking (DTN)
◮ Situations without a reliable uplink
◮ Environmental monitoring in remote areas ◮ Destroyed telecommunication infrastructure ◮ Internet access is blocked
◮ In DTN, data is transmitted in a store-carry-forward fashion
◮ Hop-by-hop transport ◮ Opportunistic or scheduled contacts to neighbors ◮ Allows large time window between two transmissions
1
SLIDE 5
Delay / Disruption-tolerant Networking (DTN)
◮ Situations without a reliable uplink
◮ Environmental monitoring in remote areas ◮ Destroyed telecommunication infrastructure ◮ Internet access is blocked
◮ In DTN, data is transmitted in a store-carry-forward fashion
◮ Hop-by-hop transport ◮ Opportunistic or scheduled contacts to neighbors ◮ Allows large time window between two transmissions
1
SLIDE 6
DTN7
This brings us to DTN7. . . ◮ Free and open-source DTN software ◮ Written in the Go programming language ◮ Modularized design, easy to extend ◮ Implementation of the recently released Bundle Protocol (BP)
2
SLIDE 7
Bundle Protocol Version 7 (BP)
◮ Describes both a DTN architecture and protocol ◮ Still in development, but nearly finished ◮ Latest draft (version 14) was released on 04.08.2019 ◮ Aims to obsolete Bundle Protocol Version 6, RFC 5050
3
SLIDE 8 Nodes and Endpoints
◮ Nodes are identified by an Endpoint ID (URI), e.g., dtn:node ◮ A node might be addressed by multiple Endpoint IDs ◮ An Endpoint ID might represent multiple nodes
dtn:s1 dtn:s3 dtn:s2 dtn:b1 dtn:b3 dtn:b2 Data Sinks / Servers Data Sources / Sensor Node dtn:sink/lux Payload Dst Src 27°C dtn:s3 dtn:b1/temp Payload Dst Src 3782 lx dtn:sink/lux dtn:b2/lux
4
SLIDE 9
Bundles and Blocks
◮ BP packets are called Bundles ◮ A Bundle is a sequence of Blocks ◮ Binary represented in CBOR, RFC 7049
Bundle Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Payload Block Type Code: 1 Number: 1 Control Flags: None CRC Type: None Data: 0E C6 Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Payload Block Type Code: 1 Number: 1 Control Flags: None CRC Type: None Data: 0E C6
Canonical Blocks
5
SLIDE 10
Bundles and Blocks
◮ BP packets are called Bundles ◮ A Bundle is a sequence of Blocks ◮ Binary represented in CBOR, RFC 7049
Bundle Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Payload Block Type Code: 1 Number: 1 Control Flags: None CRC Type: None Data: 0E C6 Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Payload Block Type Code: 1 Number: 1 Control Flags: None CRC Type: None Data: 0E C6
Canonical Blocks
5
SLIDE 11
Bundles and Blocks
◮ BP packets are called Bundles ◮ A Bundle is a sequence of Blocks ◮ Binary represented in CBOR, RFC 7049
Bundle Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Payload Block Type Code: 1 Number: 1 Control Flags: None CRC Type: None Data: 0E C6 Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Payload Block Type Code: 1 Number: 1 Control Flags: None CRC Type: None Data: 0E C6
Canonical Blocks
5
SLIDE 12
Bundles and Blocks
◮ BP packets are called Bundles ◮ A Bundle is a sequence of Blocks ◮ Binary represented in CBOR, RFC 7049
Bundle Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Primary Block Version: 7 Control Flags: Status requested for reception CRC Type: CRC32 Destination EID: dtn:sink/lux Source node EID: dtn:b2/lux Report-to EID: dtn:b2/lux Creation Timestamp: (0, 23) Lifetime: 3600000 CRC Value: 67 75 6D 6F Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Payload Block Type Code: 1 Number: 1 Control Flags: None CRC Type: None Data: 0E C6 Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Hop Count Block Type Code: 9 Number: 2 Control Flags: None CRC Type: None Data: (64, 42) Payload Block Type Code: 1 Number: 1 Control Flags: None CRC Type: None Data: 0E C6
Canonical Blocks
5
SLIDE 13
Bundle Exchange
◮ Convergence Layer
◮ Transport technology for Bundles between nodes ◮ Implemented: MTCP, TCP ◮ Possible: Bluetooth, LoRa, Email, QR code, Pigeon, . . .
◮ Routing
◮ Selection of neighbors for Bundle delivery ◮ Implemented: DTLSR, Spray and Wait, Epidemic Routing
6
SLIDE 14
Other DTN7 Components
◮ Store for Bundles that are waiting for delivery ◮ RESTful API to dispatch and fetch Bundles ◮ Peer Discovery to detect nearby nodes
7
SLIDE 15
DTN7 Programs
◮ dtnd: DTN daemon ◮ dtncat: command line tool
# Sending a Bundle $ dtncat send http :// localhost :8080/ dtn:sink/lux <<< "3782lx" # Retrieving a received Bundle $ dtncat fetch http :// localhost :8080/
8
SLIDE 16
DTN7 Architecture
Routing dtnd Discovery Store CLA Application Agent dtncat send fetch incoming new new nodes in / out discover (UDP) dtnd transmit (MTCP) (REST) Node … dtnmail dtnsense Node
9
SLIDE 17
Evaluation
◮ Up to 64 nodes emulated in the Common Open Research Emulator (CORE) ◮ Nodes are connected pairwise in a chain topology ◮ Simulated IEEE 802.11g network, 54 MBit/s
10
SLIDE 18
CORE
11
SLIDE 19
Evaluation
◮ Payload Size
◮ 64 KiB: compressed image ◮ 1 MiB: small image / short audio recording ◮ 5 MiB: smartphone image / audio recording ◮ 25 MiB: longer audio recording / short video ◮ 50 MiB: HD video ◮ 100 MiB: 4K smartphone video
12
SLIDE 20
Evaluation
◮ Payload Size
◮ 64 KiB: compressed image ◮ 1 MiB: small image / short audio recording ◮ 5 MiB: smartphone image / audio recording ◮ 25 MiB: longer audio recording / short video ◮ 50 MiB: HD video ◮ 100 MiB: 4K smartphone video
◮ DTN Software
◮ DTN7 ◮ Forban ◮ IBR-DTN ◮ Serval
12
SLIDE 21
Transmission Time: Two Nodes
DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval 0.0 0.1 1.0 10.0 Transmission Time (s) 64 KiB 1 MiB 5 MiB 25 MiB 50 MiB 100 MiB
13
SLIDE 22
Transmission Time: 64 Nodes
DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval DTN7 Forban IBR-DTN Serval 1 10 100 1000 Transmission Time (s) 64 KiB 1 MiB 5 MiB 25 MiB 50 MiB 100 MiB
14
SLIDE 23 CPU and Network Usage: 32 Nodes, 25 MiB
25 50 75 100 125 150 175 200 20 40 60 80 100 Mbit/s
DTN7
25 50 75 100 125 150 175 200
Forban
25 50 75 100 125 150 175 200 Time (s) 20 40 60 80 100 Mbit/s
IBR-DTN
25 50 75 100 125 150 175 200 Time (s)
Serval
25 50 75 100 125 150 175 200 %CPU 25 50 75 100 125 150 175 200 %CPU
15
SLIDE 24
DTN7
An Open-Source Disruption-tolerant Networking Implementation of Bundle Protocol 7
https://dtn7.github.io/