-
Couldn't load subscription status.
- Fork 62
ChangeLog
- Fix user and file permissions in logrotate configuration file
- Solve possible ring lock in Prophet routing
- Add support for loading Bloom-filter structures of different sizes
-
Features & Fixes
- Detect potential duplicates during the bundle reception
- Trigger all routing modules to react to initial topology
- Time-sync only with the best available peer
- Synchronize time even if the timestamp is equal in seconds
- Automatically generate a local security key if it does not exists
- Add security key-exchange mechanism
- Add key-exchange controls to the NativeDaemon
- Add key-exchange controls to the management API
- Store meta-data of security keys
- Specify a trust-level for each key exchange protocol
- Update equal keys if the trust-level of the new key is higher
- Put public and private key into separate files
- Only enable KeyExchanger if security features are enabled
- Generate DH params for key-exchange only if enabled
- Increase seq.no. range of UDP datagram service to 0..15
- Add sign / encrypt capabilities to integrated applications
- Sign and encrypt echo replies if the request was signed / encrypted
- Sign status reports if the referenced bundles was signed
- Sign custody signals if the referenced bundles was signed
- Stream log via API (protocol management -> logstream)
- Verify PIBs of merged bundles
- Fix copy operator of SQLiteBundleSet
- Fix queue poll() function call in TCPConnection::Sender
- Store routing data of PRoPHET persistently if the storage path is set
- Add special treatment for binding a TCP convergence-layer to loopback
- Add low-energy mode which is controlled by the API
- Make TCP keep-alive time-out configurable
- Make beacon interval configurable
- Add option to enable externally managed connectivity state
- Fix processing of compression and encryption block
- Add basic filtering capabilities
- Set inital timeout for TCP-CL handshake
- Send notification to all neighbors if the PredictabilityMap of PRoPHET grows
-
Build process
- Automatically detect support for BSP and 6LowPAN
- Autoconf make-over
- Remove redundant linker options in Makefile.am
- Fix autoconf recipe for win32
- Fix TLS support checking
- Exclude security headers if BSP is not supported by ibrdtn library
- Disable TLS if ibrcommon does not supports SSL
- Add configure option to disable dependency on libwifip2p and vmime
- Introduce configure option to enable build of documentation explicitly
- Enable build of documentation for Debian packages
-
Packaging
- Create a spool directory with write permissions for 'dtnd' in debian install script
- Add process name checking to dtnd init script
- Load init script defaults before checking if the start-up is disabled
- Fix directory permissions during Debian installation
- Enable security settings by default
- Change permissions of bpsec and certs directory on start-up
- Fix munin bundle stats script
- Add configure option to disable dependency on libdaemon, libarchive, and openssl
- Use libarchive >= 3.0 instead of shell call of 'tar' for dtninbox / dtnoutbox
- Remove dependency on openssl
- Add template type to call of SDNV::random()
- Add SDNV::trim() method to limit the absolute sequence-number to 32-bit
- Fix: The local time is no longer modified if the clock rating is equal to 1.0
- Non-reference clocks are now independent of outer clock adjustments (e.g. by NTP)
- Add configure option to disable dependency on glib2
- size_t is used in the definition of PrimaryFlags to avoid signed values
- The absolute sequence-number is limited to 32-bit for compatibility reasons
- The initial absolute sequence number is set to a random value instead of zero
- Add gcov and debug option to configuration.ac files
- VerificationSkippedException is thrown if PIB verification can not be performed
- Skip PIB verification if the fragment range does not match the bundle
- Fix for a segfault in case the BLOB creation fails
- Add zlib flags and libs to fix unittests on recent ubuntu versions
- Fix for bundle expiration of references in MemoryBundleSet
- Add trust-levels and methods to store meta data to security key
- Add operator==() to compare SecurityKey objects based on the fingerprint
- Use take() and poll() methods of the queue instead of getnpop()
- Fix autoconf recipe for win32
- Fix copy operator of MemoryBundleSet
- Fix usage of MD5Stream to convert string-based EIDs to CBHE
- Fix compiler selection on some platforms
- Automatically detect support for the bundle security protocol
- Use MD5Stream class to convert application strings into numbers
- Use CLOCK_BOOTTIME instead of CLOCK_MONOTONIC for MonotonicClock
- Improved scope handling in vaddress objects
- Improved error checking on RWMutex locking
- Add gcov and debug option to configuration.ac files
- Add isValid() method to File class
- Allow removal of a stream from the Logger
- Fix absolute path of File if the path begins with a "."
- Add SHA256Stream
- Improved implementation of vaddress::isLocal()
- Fix build with libnl2 or netlink 3.2.21
- Usage of RWMutex / RWLock simplyfied
- Fix push() method of exclusive queue access
- Add comparison operator to refcnt_ptr and remove getPointer() methods
- Fix queue limitation handling when using exclusive locking
- Split getnpop() of the Queue class into take() and poll()
- Add hash stream for MD5
- Fix buffer size of HMacStream
- ibrcommon.h added to reflect the library features
- Load init script defaults before checking if the start-up is disabled
- Trigger all routing modules to react to initial topology
- Fix copy operator of SQLiteBundleSet
- Add early duplicate check
- Create a spool directory with write permissions for 'dtnd' in debian install script
- Make libarchive >= 3.0 mandatory to build dtninbox / dtnoutbox
- Add zlib flags and libs to fix unittests on recent ubuntu
- Fix expiring bundles references in MemoryBundleSet
- Fix copy operator of MemoryBundleSet
- Add unittest to detect copy issues of BundleSet
- Fix: absolute path of File if the path begins with a "."
- Fix: Workaround for missing support of AI_NUMERICSERV on win32
- Fix: vaddress::isLocal fails without DNS
- Fix: build with libnl2
- Fix: buffer size of HMacStream
- Improved netlink support for versions below 3.2
- Windows support with NTService (win32)
- Persistent bundle-set available with SQLite or disk storage
- Mail covergence-layer added (draft-gernert-dtnrg-mailcl-01) requires libvmime
- Set DevNull application to CBHE endpoint 1 instead of 0
- Use monotonic clock for time measurements
- Sliding window support for datagram convergence-layers
- NACK support to datagram convergence-layers
- Global discovery agent for all convergence-layers
- Add API command for add / del route
- Reverse Path Epidemic for Non-Singleton Bundles in Prophet Routing
- Storage performance tweaks
- Performance improvement for routing extensions
- Set prophet routing as standard protocol in ibrdtnd.conf
- Avoid reselecting bundles of aborted transfers due to deletion
- Allow static routes for direct delivery
- Limit discovery responses to one each second
- Do not forward bundles queued in a TCPConnection if the EID changes during the handshake
- Reject connections to peers with the same endpoint
- Do not join on loopback addresses with the IPND
- Fix compile issues with clang
- Fix Ack'set expiration in PRoPHET
- Fix expiration of static routes
- Fix processing of Prophet Acknowledgement Set
- Fix locking in DatagramConvergenceLayer
- Fix wrong storage size bug
- Fix decreasing delivery predictability values in PRoPHET Routing
- Fix segfault on shutdown while TCP-CL is connecting
- Add destination is group option to dtntracepath
- Windows support (win32)
- dtninbox: External dependency to utility 'tar' removed (libarchive)
- dtnoutbox: External dependency to utility 'tar' removed (libarchive)
- dtnoutbox: Read directly from FAT images using libtffs
- Help text make-over of all tools
- Windows support (win32)
- Persistent bundle-set support
- CBHE performance optimizations
- Automatic String to CBHE conversion for applications
- Bad clock removed in favor to clock rating
- Use monotonic clock for uptime
- Fix uniqueness of bundle fragments
- Add callback to StreamConnection for traffic stats
- Improved expiration checking
- Hashing of Bundle ID for BloomFilter changed (now faster)
- Timezone configuration option removed
- Set REPLICATE_IN_EVERY_FRAGMENT bit in every instance of TrackingBlock
- Fragment serialization restructured
- Fixed possible bundle loss when using reactive fragmentation
- Windows supported (win32)
- Performance tweaks
- Monotonic clock support
- Link monitoring without netlink (OSX and win32)
- Add support for libnl-2.0
- Add utility class for signal handling
- Add more thorough check for localhost addresses
- Fix "missing bytes" failure in appstreambuf
- Fix compile issues on OS X Maveriks
- Fix vsocket shutdown
- Fix handling of root file
- Security: Fix misbehavior while checking PIB
- Fix segfault in BundleList caused by bundles with an AgeBlock
- Security: Fix misbehavior while checking PIB
- Security: Fix wrong serialization of the correlator in MutualSerializer
- Fix timing issue in select method for vsockets
- Added support for libnl 3.2.21
- Fix processing of Prophet Acknowledgement Set
- Fix dead-lock in ConnectionManager
- Fix segfault in ConnectionManager
- Fix segfault when using extended scheduling
- Fix possible segfault when using DatagramConvergenceLayer
- Missing getDistinctDestinations() method in SchedulingBundleIndex implemented
- Improved behavior with bad clocks and time-synchronization
- Use current timestamp as base for expiretime if local clock is bad
- Consider a clock as bad if the rating is zero
- Fix testcases for bundle list and bundle set
- Implement reference-based comparators for Bundle, BundleID and MetaBundle
- Fix "missing bytes" failure in appstreambuf
- Fix throw() constrain of clientsocket methods
- Fix shutdown of vsocket via vsocket::interrupt()
- Fix presentation of vaddress via toString()
- Make command parameter of appstreambuf const
- dtnstream improved with flow control and priorities
- Use new socket abstraction layer of ibrcommon 0.10
- Added tracking path option (-p) to dtntracepath
- Added -s option to accept signed bundles only to dtntrigger
- Overall improved error handling and fixes
- Added daemon support to dtntunnel and show throughput on console
- Asynchronous purging of bundles
- Use new socket abstraction layer of ibrcommon 0.10
- New generic datagram convergence layer with flow-control and error correction
- Implemented IEEE 802.15.4 ConvergenceLayer to work with INGA
- Improved CBHE/IPN scheme support
- Full IPv6 support
- Change default IPND discovery address to 224.0.0.1/ff02::1
- Allow multiple multicast addresses for discovery in the configuration
- Improved flow control for transmissions
- Improved time synchronization (DT-NTP)
- Internet-awareness for static routes and links
- Refactoring of the EventSwitch
- Behavior fixes and improvements for PRoPHET Routing
- Pro-active fragmentation support added
- Support for extended scheduling added (SchedulingBlock)
- Notify status reports and custody signals in the API
- Statistic Logger replaced by API management calls
- Added support for P2P connections via libwifip2p
- Better integration support via NativeDaemon class
- Allow more block payload encodings in the API (raw/base64)
- Added new routing option "none" to disable direct delivery
- Add "limit_foreign_blocksize" option to default configuration
- Allow "signed bundles only" as security constrain
- Build support for Android NDK
- Overall improved error handling and performance
- Reset sequence numbers on each timestamp incrementation
- Use new socket abstraction layer of ibrcommon 0.10
- New serializer method to check predicted bundle lengths
- New BundleSet class for organizing sets of bundles
- Redesign of class "Bundle" with iterators to access blocks
- Administrative Records are no longer parsed automatically
- New TrackingBlock for path tracking of a bundle
- Merging of bundle fragments fixed
- New SchedulingBlock for extended priorities added
- Improved stability of the bundle serializer / deserializer
- Add statistic interfaces to StreamConnection / StreamBuffer
- Build support for Android NDK
- Overall improved error handling and fixes
- Adaptations for recent compilers
- Full IPv6 support
- Restructured socket / address abstraction layer
- Improved IEEE 802.15.4 support
- Improved Netlink support
- Better OSX support
- Build support for Android NDK
- Improved logging performance
- Added TAG support to the logger
- Overall improved error handling and fixes
- dtnping: New options and stability improved
- dtntrigger: Group support
- dtntracepath: use random source endpoint and output refactored
-
PRoPHET Routing
-
Bittorrent DHT used for EID Lookup through the internet
-
Support for re-active and pro-active fragmentation
-
Extended plaintext API
-
New generic routing messages for all routing modules
-
Add priorities for discovered neighbor entries
-
SQLite Bundle Storage refactored
-
Upgrade mechanism and version control for sqlite database
-
Datagram Convergence Layer for generic communication with datagrams
-
New configuration options:
- Limit lifetime and pre-dated timestamps
- Fragmentation support
- Deprecated methods of ibrcommon::BLOB::Reference removed.
- Add start/stop flags to StreamBlock.
- Fragmentation support
- Base64 decoding / encoding refactored
- Added lowpanstream
- Fix for reference pointer assignment operator
- Extended recvfrom of udpsocket for ipv6
- Replaced SimpleTimer with Timer
- netlink 3.0 / 3.2 support
- RW locking features added
-
Common fixes
- Connection down deletes all static routes
- Reconnect mechnism tries to connect each second
- Some shutdown issues
- Extension block discard issue
- Wrong CBHE parsing
-
Bundle Security Protocol
- Serialization fixed
- PCB: Store the integrity check value in the right TLV
- Handle the salt as binary not as string
-
Connection up now triggers all routing modules to look for bundles to transfer
-
Disable autoconnect feature if not specified
-
CBHE and group support for internal apps
-
Configurable parallel event processing Set the "-t" parameter on daemon startup to enable this feature.
-
Extended API
- Plain text API for clients
- Some management routines
- Event / Log dumping
- Add and remove IP addresses dynamically via API for non-netlink systems
-
File Convergence Layer added. Use the USB Key as intermittent node!
-
New LoWPAN CL architecture - Multiple connections, larger bundles and discovery
-
C++ API: Added method to get the timestamp of a bundle
-
New features
- MacOS X support
- Group support for dtnsend, dtnrecv and dtnstream
- Support for the Scope Control Hop Limit Block added http://tools.ietf.org/html/draft-fall-dtnrg-schl-00 (uses extension block id 199 since id 9 is already reserved by BSP)
- TLS extension for TCP convergence layer by Stephen Röttger
- New config option: "net_autoconnect" to keep up / reconnect to available TCP connections
-
Improvements
- New dtnstream options "-w" wait for the bundle with the seq. no. zero. By default, the stream starts with the first received bundle.
- New API framework (supports Groups)
- SQLiteStorage provides own BLOBs and uses hard-links to copy bundle payload
- Renamed CONN_ZIGBEE to CONN_LOWPAN
- Improved neighbor database
- New API framework
-
Fixes
- Fix for dtnping with bundle sizes < 4
- SQLiteStorage expiration fix
- Now IPND binds on any interface instead on the broadcast/multicast address
- Retransmission Module: Exponential back-off fix
- Now a transfer is aborted if the node is gone
- Fix: fd leak on connection termination
-
New features
- Experimental support for compressed bundle payload
- Bundle-in-Bundle support based on http://tools.ietf.org/html/draft-irtf-dtnrg-bundle-encapsulation-06
- Added AgeBlock support to the SQLiteBundleStorage
- HTTPConvergenceLayer by Robert Heitz
- Define a logfile in the configuration with "logfile"
- Define a username with "user"
- Define user id and group id with "uid" and "gid"
-
Improvements
- Neighbor handling reworked
- Improved connection termination for API and TCP-CL for more stability
- Added getMicroseconds() and getNanoseconds() to TimeMeasurement class.
- Modified precision of the AgeBlock to microseconds as proposed in the draft
- Changed method of AgeBlock from addAge() to addSeconds()
-
Fixes
- Epidemic routing combined with sqlite leads to 100% cpu usage
- Bundles are not retransmitted after a failed connection
- Failed TCPCL connections stay unconnected forever
- Logging to files
- sometimes dtnsend do not return
- Fix for threading in ibrcommon (Thanks to Ke Meng)
- use libdaemon to daemonize on debian
- new tool: dtnstream... stream data across a DTN!
- handle interface up/down or address change by dynamic bind on addresses
- Fix: requeue bundles in transit
-
Major changes:
- Bundle Security Protocol
- IPv6 support
- Use regular expressions for static routes
- New routing messages for epidemic routing (not compatible with older versions)
-
Minor changes:
- libnl is no longer mandatory
- SQLite bundle storage will accept custody for bundles
- Deliver bundles according to their priority
- Static routing can be used with any other routing scheme
- Some uClibc related fixes
- Better handling of the same convergence layer on multiple interfaces
- DTN2 compatibility fix for discovery
- Bind on any interface is possible now
- AgeBlock support and bundle age tracking (similar to draft-irtf-dtnrg-bundle-age-block-01, but with seconds instead of microseconds as implemented by Calvin Ardi)
- Bugfix for spontaneous broken filedescriptors
- Use Netlink Library for interface to address resolving (libnl is required now)
- Epidemic routing improved
- Friendly error messages in tools
- Improved dtnping with reply and timeout checking
- TCP convergence layer reconnect after a connection failure
- Help output for daemon added
- TCP tuning options added (segment size & nodelay)
- Improved API and TCPCL connections
- API support unix domain sockets
- Added flooding as routing option
- Purge vector exchange added to epidemic routing
- DNS resolving for names of static tcp connections
- IPv6 support for outgoing TCP connections
- Fixed deletion of non-existing file in the storage caused a crash
- Improved flow control and error correction in epidemic routing
- Discovery timeout is configurable now (discovery_timeout)
- Fixes for compiling with older/more strict compilers
- Added IEEE 802.15.4 LoWPAN support in ibrcommon (by Stefan Schmidt)
- Added IEEE 802.15.4 LoWPAN convergence layer (by Stefan Schmidt)
- Fixed bug: not sending discovery, when the local clock is before the year 2000
- Bugfix: Reading block type fails with some values
- Autoconf build configuration improved
- OpenSSL library is now optional (use --with-openssl to enable it)
- SQLiteBundleStorage added (experimental, use --with-sqlite to enable it)
In this release the whole code has been rewritten. The previous release package has been splitted into four single packages. Two of them are libraries providing common features (ibrcommon) and specialised classes for building and working with DTNs (ibrdtn). The package ibrdtnd contains the DTN daemon and some standard applications are contained in tools.
Minor GCC 4.4 patch and missing LICENSE file added.
This is a bugfix release. The used protocol version is still 0x06 as the DTN2 reference implementation version 2.6.
This is the first public release of the IBR-DTN implementation. It's still a experimental version and probably full of bugs.
The used protocol version is 0x06 as the DTN2 reference implementation version 2.6.