IBR-DTN - A lightweight, modular and highly portable Bundle

IBR-DTN
A lightweight, modular and highly portable Bundle Protocol implementation
Sebastian Schildt, Johannes Morgenroth, Bastian Pöttner, Lars Wolf
WASA-NGI 2011
Introduction
Architecture and Usage
Outline
Introduction
Architecture and Usage
Evaluation
Conclusion
Sebastian Schildt | IBR-DTN | 2
Evaluation
Conclusion
Introduction
Architecture and Usage
Evaluation
Conclusion
DTN and Bundle Protocol
Delay- and Disruption tolerant networks are networks which do not
provide continuous end-to-end connectivity
Store-and-Forward principles are applied under these conditions
Bundle Protocol (RFC 5050 and friends) is a protocol specification
for realising DTN networks
It is implemented - among others - by DTN2, which acts as a reference
implementation for Bundle Protocol
Sebastian Schildt | IBR-DTN | 3
Introduction
Architecture and Usage
Evaluation
Conclusion
DTN Applications
DTN@IBR
Equipping trams with DTN
nodes
Cooperation with BBR
Verkehrstechnik
Update passenger information
displays
Other applications
Interplanetary Communication, Distributed Sensing, VANET’s and
providing connectivity to sparsely populated rural areas
Sebastian Schildt | IBR-DTN | 4
Introduction
Architecture and Usage
Evaluation
Conclusion
Lightweight and Portable
Targeted platforms
Embedded Linux plattforms (OpenWRT as main target)
(We are POSIX compliant, so porting to others OS’s should be
feasible)
Scalable to “Big Iron”, no compromises compared to DTN2
running on similar hardware
Not Targeted
No sensor nodes with 8 bit µCs
(Although we are doing some work for the convergence of BP based
DTNs with classical sensor node platforms)
Sebastian Schildt | IBR-DTN | 5
Introduction
Architecture and Usage
Evaluation
Conclusion
Supported Platforms
CPU Architectures
Software Stack
Hardware Platforms
x86
x86-64
Ubiquiti RouterStation Pro
uClibc
Memsic (CrossBow) iMote2
Linux 2.6
Linux 2.4
QNAP TS219-P NAS
Sebastian Schildt | IBR-DTN | 6
Buffalo TeraStation Pro NAS
Introduction
Architecture and Usage
Evaluation
Conclusion
Architecture Overview
!
$%
&!
#
!
"
!
!
$
Modular architecture
Written in C++
Sebastian Schildt | IBR-DTN | 7
#'
%$
Introduction
Architecture and Usage
Evaluation
Conclusion
Interacting with the DTN Daemon
C++ API
Link IBR-DTN C++ library to your program
Communicates with the DTN daemon using a TCP or Unix socket
Full flexibility, but can be complex
Commandline Tools
Diagnostics: dtnping, dtntracepath
Simple data transfer: dtnsend, dtnrecv
DTN enabled scripting: dtntrigger (“Poor man’s DTN API”)
Sebastian Schildt | IBR-DTN | 8
Introduction
Architecture and Usage
Evaluation
Conclusion
Storage Backends
Memory
Non persistent, RAM based
File
Persistent, file based
Bundles survive scheduled daemon restarts as well as power failures
SQLite
Stores more meta information for bundles
Useful for more complex routing modules
Sebastian Schildt | IBR-DTN | 9
Introduction
Architecture and Usage
Evaluation
Conclusion
Routing modules
Static
Routes and available neighbours are configured statically
Neighbor
Route packets to nodes seen by a Discovery Agent
When using IPND or DTN2 announcements, nodes within the same
subnet are reachable
Epidemic
Epidemic routing (a flooding scheme) implementation
Uses Bloom filters for summary vectors and is extended with purge
vectors
Sebastian Schildt | IBR-DTN | 10
Introduction
Architecture and Usage
Evaluation
Conclusion
API Send Performance
Send 100 bundles using dtnsend and store in respective storage
100
Time [s]
10
1
0.1
1
10
100
1000
10000
Bundle Payload Size [bytes]
IBR-DTN Disk
IBR-DTN Memory
∼ 265 MBit peak throughput
Sebastian Schildt | IBR-DTN | 11
100000
DTN2 Berk. DB
DTN2 Memory
1e+06
1e+07
Introduction
Architecture and Usage
Evaluation
Conclusion
API Receive Performance
Receive 100 bundles using dtnrecv from respective storage
1000
100
Time [s]
10
1
0.1
0.01
0.001
1
10
100
1000
10000
Bundle Payload Size [bytes]
IBR-DTN Disk
IBR-DTN Memory
∼ 250 MBit peak throughput
Sebastian Schildt | IBR-DTN | 12
100000
DTN2 Berk. DB
DTN2 Memory
1e+06
1e+07
Introduction
Architecture and Usage
Evaluation
Conclusion
Transfer Test
350
Throughput [MBit/s]
300
250
200
150
100
50
0
1
10
100
1000
10000
Bundle Payload Size [bytes]
IBR-DTN Disk
IBR-DTN Memory
DTN2 Berkeley DB
DTN2 Memory
10 runs of 1000 bundles for each size
∼ 310 MBit peak throughput
Sebastian Schildt | IBR-DTN | 13
100000
1e+06
Introduction
Architecture and Usage
Evaluation
Conclusion
Conclusions
IBR-DTN provides a full featured Bundle Protocol stack, which is
interoperable with DTN2
Specifically targeted for uClibc based embedded Linux platforms
but scalable to non-embedded environments
Comparable or better raw performance compared to DTN2
Modularized, lightweight C++ codebase
Available from our website to be used in your projects now!
Sebastian Schildt | IBR-DTN | 14
Thank you! Questions?
Sebastian Schildt
[email protected]
http://www.ibr.cs.tu-bs.de/projects/ibr-dtn/
New version 0.6 released yesterday evening!
Sebastian Schildt | IBR-DTN | 15
API send (store)
2500
350
MBit/s
2000
280
1500
210
1000
140
500
70
0
1
10
100
DTN2
1000
10000
100000
Bundle Payload Size [bytes]
IBR-DTN
Sebastian Schildt | IBR-DTN | 16
ION (T)
1e+06
0
1e+07
Bundle Throughput [MBit/s]
Bundle Throughput [Bundles/s]
Bundles/s
API receive (retrieve)
6000
900
MBit/s
5000
750
4000
600
3000
450
2000
300
1000
150
0
1
10
100
DTN2
1000
10000
100000
Bundle Payload Size [bytes]
IBR-DTN
Sebastian Schildt | IBR-DTN | 17
ION (T)
1e+06
0
1e+07
Bundle Throughput [MBit/s]
Bundle Throughput [Bundles/s]
Bundles/s
Throughput
300
Bundle Throughput [MBit/s]
250
200
150
100
50
0
1
10
100
DTN2
1000
10000
Bundle Payload Size [bytes]
IBR-DTN
Sebastian Schildt | IBR-DTN | 18
100000
ION (T)
1e+06
1e+07
Chunksize
450
400
350
Throughput [MBit/s]
300
250
200
150
100
50
0
1e+06
1e+07
1e+08
1e+09
Bundle Payload Size [bytes]
1024 Bytes
4096 Bytes (Default)
10240 Bytes
102400 Bytes
Sebastian Schildt | IBR-DTN | 19
1048576 Bytes
10485760 Bytes
4096 Bytes, NODELAY
Caching / Sync
250
Throughput [MBit/s]
200
150
100
50
0
1
10
100
1000
10000
Bundle Payload Size [bytes]
Default
Caches cleared
Sebastian Schildt | IBR-DTN | 20
100000
Caches cleared, Sync
1e+06
1e+07