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
© Copyright 2026 Paperzz