Menu

#2 DTN2.9 Aggregate Custody Signals & Performance Improvements

open
nobody
None
5
2014-08-25
2013-03-07
DZ
No

These two patches for oasys and DTN2.9 implement Aggregate Custody Signals, performance improvements and some bug fixes.

oasys-cumulative.patch

This OASYS patch is against changeset 2303 - "Add support for tcl 8.6"

Modified files:
* aclocal.m4 - rebuilt to include changes to oasys.ac
* aclocal/oasys.ac - improves functionality of the DTN2 "--with-oasys=<location>" configuration option s* non-standard oasys directory name can be used
* configure - rebuilt to include changes to oasys.ac
* debug/Log.cc - fixes uninitialized variable per valgrind
* oasys-config.h.in - removed PACKAGE_URL which is not used
* oasys-version.dat & .h - changed version to 1.6.0x to differentiate from the official 1.6.0
* test/Makefile - removed sqlite-db-test (which does not exist?)
* test/marshal-test.cc - the logpath method was changed to set_logpath
* test/serialize-test.cc - the logpath method was changed to set_logpath
* thread.Notifier.cc & .h - modified s* it does not abort if the pipe is full for 1 minute… it keeps track of how many pending notifications need to be sent as space becomes available
* thread/SpinLock.cc - bug fix in try_lock which is not currently used in DTN2
* thread/Timer.cc & .h -
....added a new TimerReaperThread which periodically removes canceled timers from the queue which otherwise persist until they expire.
....NOTE: This does not allow the timers to be safely re-used.
* util/Time.cc -
....ran in to same oddness reported by jward even with the fix s* had to slightly enhance the fix
....possibly a manifestation of a different bug that I introduced and fixed while modifying the DTN2 application??

dtn2-cumulative.patch

*** This DTN2 patch is against changeset 3564 - "autoconf update for tcl 8.6 support"

New files:
* aclocal/acs.ac - support for Aggregate Custody Signals (ACS) using configure option --with-acs
* aclocal/bdstats.ac - support for BundleDaemon Statistics using configure option --with-bdstats
* aclocal/bundleid64bit.ac - support for 64 Bundle ID using configure option --with-bid64bit
* aclocal/ecos.ac - partial support for Extended Class of Service Block using configure option --with-ecos
* servlib/bundling/AcsExpirationTimer.cc & .h - new timer that triggers sending an ACS when the configured delay expires
* servlib/bundling/AggregateCustodySignals.cc & .h - utility class to format and parse ACS bundles
* servlib/bundling/BundleDaemonACS.cc & .h - new BundleDaemon thread to process ACS related events
* servlib/bundling/BundleDaemonInput.cc & .h - new BundleDaemon thread to process bundle receipt related events
* servlib/bundling/BundleDaemonStorage.cc & .h - new BundleDaemon thread to process events that update the data stores
* servlib/bundling/BundleListBase.cc & .h - base class for all bundle list classes
* servlib/bundling/BundleListIntMap.cc & .h - new bundle list class that implements a map with an unsigned int (typically bundle ID) as the key
* servlib/bundling/BundleListStrMap.cc & .h - new bundle list class that implements a map with a string (typically GbofId) as the key
* servlib/bundling/BundleListStrMultMap.cc & .h - new bundle list class that implements a multimap with a string (typically GbofId) as the key
* servlib/bundling/CustodyTransferEnhancementBlock.cc & .h - new block type used by Aggregate Custody Signals
* servlib/bundling/ExtendedClassOfServiceBlockProcessor.cc & .h - partial implementation for the ECOS block type - need to aply the values to the Bundle and a priority queue to make use of them
* servlib/cmd/AcsCommand.cc & .h - new command to configure ACS and print statistics
* servlib/reg/AdminRegistrationIpn.cc & .h - new registration allows the DTN2 server to have an IPN EID as well as a DTN EID
* servlib/reg/RegistrationInitialLoadThread.cc & .h - new class to that offloads processing from the main BundleDaemon thread when a registration connects
* servlib/storage/PendingAcsStore.cc & .h - new data storage for pending Aggregate Custody Signals
* test/unit_tests/bundle-list-intmap-test.cc - unit test for the new bundle list type
* test/unit_tests/bundle-list-strmap-test.cc - unit test for the new bundle list type
* test/unit_tests/bundle-list-strmultmap-test.cc - unit test for the new bundle list type

Modified files:
* aclocal.m4
....adds support for options acs, bdstats, bid64bit, ecos
....adds support for non-standard oasys directory
* applib/APIServer.cc
....support for new GbofId object maintained in Bundle
....fixed memory leak in handle_recv
....print format macros for 32/64bit OS support
* applib/dtn_ipc.cc - interrupt tolerant read loops in dtnipc_recv
* apps/dtncat/dtncat.c - fixed use of uninitialized variable
* apps/dtncpd/dtncpd.c - fixed compiler warnings
* apps/dtnping/dtnreporter.c - print format macros for 32/64bit OS support
* apps/dtnpublish/dtnpublish.c - print format macros for 32/64bit OS support
* apps/dtnquery/dtnquery.c - print format macros for 32/64bit OS support
* apps/dtnrecv/dtnrecv.c - fixed compiler warnings
* apps/dtnrespond/dtnrespond.c - print format macros for 32/64bit OS support
* apps/dtnsend/dtnsend.c - print format macros for 32/64bit OS support
* apps/dtnsink/dtnsink.c - print format macros for 32/64bit OS support
* apps/dtnsource/dtnsource.cc - print format macros for 32/64bit OS support
* apps/dtntest/dtntest.cc - print format macros for 32/64bit OS support
* apps/dtntunnel/DTNTunnel.cc & .h -
....added "-b" and "-w" options to override the socket recv and send buffer sizes
....added "-m" and "-q" options to monitor throughput stats and a 10 char sequence counter at tail of payload
....print format macros for 32/64bit OS support
....added "-r" option to reorder UDP bundles like TCP does
* apps/dtntunnel/TCPTunnel.cc
....collaborated with Sergey Sireskin to properly propagate closed connections and fix memory leaks
* apps/dtntunnel/UDPTunnel.cc
....applied socket buffer size overrides and fixed memory leaks
....collaborating with Sergey Sireskin to implement bidirectional communication
* apps/Makefile - added librt (-lrt) for the dtntunnel to the LDFLAGS
* build-configure.sh - added definitions to include the STDC Format and Limit Macros to dtn-config.h
* configure - rebuilt with n* configuration options
* configure.ac - added new configuration options
* doc/manual/configuration.html - added new acs command for Aggregate Custody Signals
* doc/manual/index.html - added new acs command for Aggregate Custody Signals
* dtnconfig.h.in - rebuilt with new configuration options and STDC Format and Limit Macros definitions
* dtn-version.dat & .h - changed version to 2.9.0x to differentiate from the official 2.9.0
* servlib/bundling/AgeBlockProcessor.cc - print format macros for 32/64bit OS support
* servlib/bundling/BlockInfo.cc -
....added CUSTODY_TRANSFER_ENHANCEMENT_BLOCK types for Aggregate Custody Signals
....added EXTENDED_CLASS_OF_SERVICE_BLOCK type
....added recognition of UNKNOWN_BLOCK which requires 16 bits to serialize function
* servlib/bundling/BPQBlock.cc -
....print format macros for 32/64bit OS support
....fixed compiler warning for uninitialized variable
* servlib/bundling/BPQBLockProcessor.cc - print format macros for 32/64bit OS support
* servlib/bundling/BPQCache.cc - fixed print format compiler warnings
* servlib/bundling/Bundle.cc & .h -
....added support for Aggregate Custody Signals
....added support for new bundle list types
....incorporated a new GbofId object to improve performance with new bundle list types
....new variables and methods to optimize use of new BundleDaemonStorage
....added support for configurable Bundle ID size
* servlib/bundling/BundleActions.cc & .h - modified to use new BundleDaemonStorage
* servlib/bundling/BundleDaemon.cc & .h -
....added support for Aggregate Custody Signals
....cancel_custody_timers – releases the bundle reference s* the bundles can be deleted sooner
....added a BundleListStrMultMap with the GbofId string as key to find duplicates
....changed to use the oasys TimerThread and new aosys TimerReaperThread
....broke out input and storage functionality to separate threads
....added support for new RegistrationInitialLoadThread
....moved marking bundle as delivered to the processing of the BundleDelivered event for APIRegistrations
....added optional posted and processed event statistics output to log file
* servlib/bundling/BundleDetail.cc & .h - added support for configurable Bundle ID size
* servlib/bundling/BundleEvent.h -
....added Aggregate Custody Signals related events
....added support for the BundleDaemon being multithreaded
....added new storage events for the new BundleDaemonStorage
* servlib/bundling/BundleEventHandler.cc & h -
....added handling of new Aggregate Custody Signals events
....added handling of new storage events
* servlib/bundling/BundleInfoCache.cc & .h - changed to use new bundle GbofId object
* servlib/bundling/BundleList.cc -
....modified to support multiple bundle list types
....added maintaining the number of bundles in the list to speed up the size() method
....added support for Aggregate Custody Signals (find by custody ID)
....changed to use new bundle GbofId object
....added support for configurable Bundle ID size
* servlib/bundling/BundleMappings.cc & .h - modified to support multiple bundle list types
* servlib/bundling/BundlePayload.cc -
....payload files are now partitioned into subdirectories to speed up disk I/O
....removed sync_payload() from normal init() flow to speed up processing
* servlib/bundling/BundleProtocol.cc & .h -
....added support for Aggregate Custody Signals
....added support for Extended Class of Service
....get_admin_type() aborted if payload was less than 16 bytes
* servlib/bundling/CustodySignal.cc & .h -
....modified support of IPN scheme
....added Extended Class of Service block for compatibility with ION implementation
* servlib/bundling/CustodyTimer.cc - print format macros for 32/64bit OS support
* servlib/bundling/FragmentManager.cc - print format macros for 32/64bit OS support
* servlib/bundling/GbofId.cc & .h -
....maintains an internal string representation
....components are now accessible and modifiable
....print format macros for 32/64bit OS support
* servlib/bundling/MetadataBlockProcessor.cc - print format macros for 32/64bit OS support
* servlib/bundling/PayloadBlockProcessor.cc - fixed compiler warnings
* servlib/bundling/PreviousHopBlockProcessor.cc - fixed compiler warnings
* servlib/bundling/PrimaryBlockProcessor.cc & .h - modified support of IPN scheme
* servlib/bundling/S10Logger.cc - print format macros for 32/64bit OS support
* servlib/bundling/UnknownBlockProcessor.cc - fixed compiler warnings
* servlib/cmd/BundleCommand.cc -
....added support for new bundle list types
....print format macros for 32/64bit OS support
* servlib/cmd/LinkCommand.cc - fixed compiler warnings
* servlib/cmd/RouteCommand.cc - added new local_eid_ipn command used to take local custody of IPN destined bundles
* servlib/cmd/StorageCommand.cc -
....new interval command to define delay between database updates
....new db_log_auto_removal command to implement auto log removal of Berkeley DB transaction logs
....new stats command to print storage statistics
* servlib/contacts/ContactManager.cc -
....added support for new BundleDaemonStorage
....handle_link_unavailable now releases lock to avoid deadly embrace with TimerSystem processing LinkAvailabilityTimer
* servlib/contacts/Link.cc & .h - added support for new BundleDaemonStorage
* servlib/conv_layers/SeqpacketConvergenceLayer.cc - fixed compiler warnings
* servlib/conv_layers/StreamConvergenceLayer.cc - fixed compiler warnings
* servlib/DTNServer.cc - added support for Aggregate Custody Signals
* servlib/Makefile
....added new Aggregate Custody Signals related sources
....added new BundleDaemonInput and BundleDaemonStorage sources
....added new bundle list sources
....added new Extended Class of Service source
....added new AdminRegistrationIpn source
....added new RegistrationInitialLoadThread source
* servlib/naming/IPNScheme.cc & .h - combines features from implementations in both the main and apr-port branches and fixes a few bugs
* servlib/reg/AdminRegistration.cc -
....added support for Aggregate Custody Signals
....now marks bundles as delivered if processed successfully
* servlib/reg/APIRegistration.cc - added posting a BundleDelivered event if not connected and replay action is none due to moving marking bundle as delivered in the BundleDaemon
* servlib/reg/PingRegistration.cc - added marking bundle as delivered due to moving where the marking is done in the BundleDaemon
* servlib/reg/Registration.cc & .h -
....added support for new BundleDaemonStorage
....added support for new RegistrationInitialLoadThread
* servlib/RegistrationTable.cc & .h -
....added support for new BundleDaemonStorage
....added support for new RegistrationInitialLoadThread
* servlib/reg/TclRegistration.cc - print format macros for 32/64bit OS support
* servlib/routing/BundleRouter.cc & .h - added support for new BundleDaemonStorage
* servlib/routing/DTLSRRouter.cc - print format macros for 32/64bit OS support
* servlib/routing/RouteEntry.h - modified RoutePrioritySort s* result cannot change in the middle of a sort
* servlib/routing/TableBasedRouter.cc & .h -
....fwd_to_next_hop always puts bundles on the deferred list to maintain delivery order
....check_next_hop new breaks out of its loop after moving the Link's high queue limit number of bundles
....reroute_all_bundles n* longer keeps the pending_bundles_ list locked
....handle_link_created n* longer calls reroute_all_bundles twice
* servlib/security/KeyDB.cc - removed duplicate declaration of shutdown
* servlib/storage/BundleStore.cc & .h -
....added support for new BundleDaemonStorage
....added support for configurable Bundle ID size
....note - lock was needed prior to BundleDaemonStorage implementation and could probably be removed
* servlib/storage/GlobalStore.cc & .h -
....added support for Aggregate Custody Signals (custody ID)
....added support for configurable Bundle ID size
....added database update synchronization with BundleDaemonStorage thread
....moved database update to background thread to minimize impact to issuing bundle IDs
* sim/Node.h - added support for configurable Bundle ID size
* sim/SimLog.cc - print format macros for 32/64bit OS support
* sim/Simulator.cc - added support for new bundle list types
* test/Makefile - added unit tests for new bundle list types
* test/unit_tests/bundle-list-test.cc - modified for changes to the Bundle and BundleList classes
* test/unit_tests/endpoint-id-test.cc - added IPN scheme tests

Discussion

  • DZ

    DZ - 2013-03-07

    ACS & performance improvements

     
  • DZ

    DZ - 2013-04-08

    applies changesets 3565 to 3568

     
  • DZ

    DZ - 2013-04-08

    updates to compile external router with Xerces C

     

Log in to post a comment.