README
README
README
1 =
%%%%%%%%%%%
= GENERAL =
%%%%%%%%%%%
Features included:
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.6.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.6.0b=
%%%%%%%%%%%%%%%%%%%%%%%%%%
- A new "ionunlock" utility has been added, for unfreezing an ION node that
has gotten locked up due to some thread having been destroyed while
still the owner of the ION system mutex.
- In the "contrib" directory, the build for DTKA has been modified to fit into
the ION 3.6 environment.
- Also in the "contrib" directory, dtnperf has been tweaked to build properly
in the ION 3.6 environment and ECLSA has been updated in a number of ways.
- Most regression test failures for ION running in recent versions of Mac
OS X have been addressed. ION now once again runs in this environment,
though there still may be a few rough edges.
- The build and test environment for Windows has been greatly improved.
Version 3.6.1 will focus on some more visible enhancements to ION but will
of course retain all of these upgrades as well.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.6.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- SourceForge Bug #103: Made pthread_t variable access abstract for POSIX task
signal management.
- SourceForge Bug #104: Fixed segmentation fault in the ipnd neighbor discovery
task that caused a crash when a beaconing node that it has been listening
to abruptly terminates.
- SourceForge Bug #106: Fix a bug using lseek on Windows machines when trying
to transfer large files (over 2GB in size).
- SourceForge Bug #110: Fix flow control to reserve ZCO before allocating SDR
heapspace.
- SourceForge Bug #115: Fix a bug in bpadmin that caused a segmentation fault
and subsequent lock up if "s outduct" was entered without any parameters.
- SourceForge Feature Request #56: Added a TTL option to bpsendfile so the user
can specify a TTL longer than 300 seconds if needed.
- Added a new system to disable tests that you do not want to run when using
the runtests script.
-- API changes
-- Behavioral changes
-- Configuration changes
There are no longer any "promiscuous" outducts. The "*" command-line argument
to udpclo is no longer valid: you need a separate udpclo task, allocated to an
explicit socket expression (<ip_address> [:<port_number>]), for each neighbor
to which you will transmit bundle by UDP. This change affects "outduct"
commands passed to bpadmin and also "plan" commands passed to ipnadmin and
dtn2admin. There is a similar impact on the DGR convergence-layer adapter:
the dgrcla daemon no longer exists, having been replaced by dgrcli and dgrclo
daemons; see the man pages for these new daemon programs.
There are no longer any "plan rules" that override default egress plan
directives. User-written outduct selection functions may be inserted at
compile time to achieve the objectives of plan rules (and much more), but
at this time no such functions are delivered with ION 3.6.0.
- NOTE for MacOS X users: At this time, ION 3.6.0 will NOT run on any recent
version of MacOS. Our tests on MacOS 10.11 show failures in the semaphore
locking system that we have not yet fully diagnosed. No work-around is
available.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.5.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- SourceForge Bug #98: Fixed bug in the dtn2 directive lookup function
that ignored egress plans and rules citing CL protocols of classes that
don't match the protocol class indicated by the bundle's required quality
of service for plans that cite the "forwarding" directive.
- Added tcpcl-ack-resilience-test.
- NOTE for MacOS X users: At this time, ON 3.5.0 will NOT run on any recent
version of MacOS. Our tests on MacOS 10.11 show failures in the semaphore
locking system that we have not yet fully diagnosed. No work-around is
available.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.4.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- SourceForge Bug #60: The ION killm script no longer fails to clean up shared
memory allocations from the current user when their username is longer
than 10 characters.
- SourceForge Bug #89: The ION TCPCL has been updated to implement bundle
acknowledgments, which are listed as an optional feature in the TCPCL
specification (RFC 7242).
Bundle acknowledgments can help improve reliability of TCPCL transmissions
by alleviating issues that can occur during a window after a disconnection
but before a timeout.
During this time the CLO may finish its send() call without error and
trigger BP to delete the bundle before the timeout fires and it is
discovered the transmission did not succeed and can no longer be
retransmitted.
- SourceForge Bug #91: The ION autoconf configuration has been streamlined by
merging the libipnfw and libdtn2fw libraries directly into libbp.
This should improve portability and alleviate any build issues that some
users reported having in ION v3.4.0.
- SourceForge Feature Request #50: ION now supports an abstract "bulk" storage
type for zero-copy objects.
This allows FPGAs to receive inbound data into bulk storage and invoke
ION data acquisition logic that will encapsulate the bulk storage objects
in ZCOs for LTP and BP processing.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.4.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- SourceForge Bug #61: Fixed bug in using FreeBSD semaphores that could cause
unexpected behavior and lockoups under FreeBSD.
- SourceForge Bug #74: Fixed bug where semaphore IDs were only properly
reclaimed on certain RTEMS operating systems (VxWorks, POSIX).
This could cause ION to exhaust the pool of semaphore IDs and create
outduct lockups. ION now properly reuses obsolete semaphore IDs under
Windows and SVRr4.
- SourceForge Bug #79: Fixed bug where removing and re-adding an outduct could
cause a bundle transmission failure.
- SourceForge Bug #81: Fixed bug where ION child processes could become
zombie processes.
The sm_TaskSpawn() function in ION now properly forces child processes to
be re-parented by the "init" process which periodically reaps the
zombie processes.
- SourceForge Bug #83: Fixed bug where ION would presume bi-directional BAB were
enabled when BAB was only specified as unidirectional in a configuration.
This would cause the non-BAB bundles to be declared inauthentic despite no
BAB rule being specified in that direction.
- SourceForge Bug #84: Fixed bug where continuously sending BCB-enabled bundles
could cause erroneous generation of truncated bundles in the source node.
This was due to the Linux file system was having trouble keeping up with
the rate of temporary file creation when BCB's ARC4 ciphersuite used a
temporary file for ciphertext.
ION now does the crypto in place, overwriting the contents of the
payload ZCO.
- SourceForge Bug #85: Fixed bug where the number of rules that were entered
into ionsecrc would not match the number of messages when cleared in
ionsecadmin.
- SourceForge Bug #86: Fixed bug that caused LTP block reassembly to be very
CPU-intensive when the block was transmitted in small segments.
This could cause delays in processing the block that would incur the
expiration of the senders ack timer and ultimately result in session
cancellation.
ION now receives the block directly into the correct location in a
temporary acquisition file and wraps the delivery ZCO around that file.
- SourceForge Bug #87: Fixed bug where BSSP block acknowledgments were sent via
TCP rather than UDP, which could result in the volume of TCP BSSP
acknowledgment traffic becoming so heavy that the sending BSSP UDP
congestion loss would increase to the point of degrading visual quality.
- SourceForge Bug #88: Fixed a bug where the CFDP UTO ZCO request could become
interrupted by moving the "attendant" structure into the BP volatile
database to keep it stable.
- SourceForge Feature Request #29: The ION testing subsystem has been updated
to begin tests immediately after subsystem initialization. Previously ION
used hard timeouts to wait for subsystem initialization which could be
overly-aggressive timings on slower systems or overly-conservative on fast
systems.
- SourceForge Feature Request #33: The ION CGR implementation now supports
probabilistic contacts. These are opportunistic contacts with
probabilities less than 1.0.
ION now accepts contacts with probabilities less than 1.0 and will forward
multiple copies of a bundle through different discovered contacts until
the bundle's computed net delivery probability exceeds a hard-coded
threshold value.
- SourceForge Feature Request #35: ION now properly blocks and unblocks non-LTP
links in a contact plan.
Previously, ION only explicitly blocked and unblocked links operating LTP.
- SourceForge Feature Request #37: The ION CFDP implementation has been updated
per new CCSDS CFDP specification revisions.
CFDP now uses a managed configuration parameter obtained via a Management
Information Base (MIB) as its checksum type.
Previously, this value was hard coded into the EOF PDU layout.
- ION now only attempts to rebuild the ION.pdf design document if all required
tools are detected.
- New and updated tools are now available in the ION contrib subdirectory:
- Updates have been applied to DTNPerf, and tool for testing DTN
performance testing.
- Added BPTAP, a tool that enables BP to act like Ethernet underlying IP.
- Added Delay Tolerant Key Administration (DTKA), a tool enabling
trustworthy delay-tolerant distribution of public keys.
NOTE: DTKA is not built by default.
See /contrib/dtka/README.txt for special instructions on building
the DTKA tool.
- ipnadmin (ipnrc):
- "groups" have been renamed "exits" to avoid a terminology clash
with multicast "groups". However, the older "group" terminology
is still accepted by ipnadmin for backward compatibility.
BUILD NOTE:
Substantial changes have been made in this version as to how ION is built. As
a result, some platforms (particularly older Linux platforms) may encounter
linker warnings when building ION 3.4.0. These issues will be resolved in the
next release, but in the meantime an alternate Makefile has been provided that
may resolve this issue on affected platforms. If you encounter any linker
warnings, try the following procedure to build from this alternate Makefile:
1.) cd <top of ION directory>
2.) cp Makefile.am.alt Makefile.am
3.) autoreconf -fi (requires libtool and autoconf to be installed)
4.) ./configure
5.) make
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.3.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- SourceForge Bug #73: Fixed two bugs introduced by the dynamic generation of
LTP reports. See the SourceForge Bug #47 entry and the ltprc(5) man
page for details on dynamic LTP report generation.
1.) The computation of the segment loss rate (errors per segment) was
incorrect and now uses the following corrected formula:
2.) The retransmission limit on the number of times any single report or
checkpoint may be retransmitted is now computed dynamically as a
function of segment loss rate rather than a static number.
- SourceForge Bug #74: Obsolete IPCs are now properly reclaimed when running
under Windows and SVr4.
- ION now tracks the release of semaphores in winion's array of IPC handles
as well as the semaphore tables themselves.
- Previously, the release of obsolete semaphores was not tracked by the winion
daemon, which could be easily saturated given low semaphore limits and
recently-expanded semaphore usage in ION (CGR, ionStartAttendant).
- SourceForge Feature Request #40: The bping ION application has been ported to
Windows. A dtnperf port for Windows is slated for a later release.
- SourceForge Feature Request #42: ION now resolves host names when socket
connections are made rather than resolving them all on ION startup.
- Fixed a memory leak in CFDP that could occur when TargetFFS is defined.
- Delay Tolerant Payload Conditioning (DTPC) has been updated for conformance
the specification.
- The CGR algorithm has been updated to omit downstream contacts that end
before initial contact on route.
- ION no longer requires pdfjam to build man pages into the ION documentation.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.3.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- SourceForge Bug #54: Fixed bug that could cause multithreaded applications
under VxWorks to refuse bundles with the error message:
"Can't receive: not owner of endpoint."
For this purpose, a thread that will only send (never receive) bundles
can use a BpSAP created by calling bp_open_source rather than bp_open;
in this circumstance, sending and receiving threads may use different
bpSAPs tagged with the same endpoint ID.
- SourceForge Bug #65: Removed duct-level support for LTP "green" transmission.
"Green" transmission is now selected on a bundle-by-bundle basis via the
bundle's extended class of service options.
- SourceForge Bug #67: Updated the Previous Hop Node extension block (PHN)
implementation to be compliant with the specification in RFC 6259.
The sending node's EID is now represented by two distinct NULL-terminated
strings (Scheme Name and SSP) rather than one NULL-terminated EID.
- SourceForge Bug #68: Fixed bug where the sockets of links utilizing STCP
could prematurely close if the other side did not respond for several
hours. ION now respects the EHOSTUNREACH errno value and periodically
attempts to reconnect rather than closes the socket.
- SourceForge Bug #70: Fixed bug with ION's uClibC macros that caused ION
compilation to fail in environments that use uClibC.
- SourceForge Feature Request #29: Optimizations have been applied to the ION
test suite to reduce the amount of time needed to initialize each test.
- SourceForge Feature Request #31: ION's public API is now more "const-correct"
which enables better interopability with C++ interfaces.
Because buffer space for "zero-copy objects" in ION has been split into
separate pools for inbound and outbound data, the ionrc command for
managing "occupancy" has been split into two commands, "inbound"
and "outbound". See the ionrc(5) man page for details.
Migrating ION from standard Bundle Security Protocol to the new Streamlined
Bundle Security Protocol has entailed changing some of the ionsecrc
commands: "bsppibrule" is replaced by "bspbibrule", and "bsppcbrule"
is replaced by "bspbcbrule". See the ionsecrc(5) man page for details.
Again because of the splitting of ZCO buffer space into two pools, many
of the zco library function prototypes have been changed: in most
cases, an additional ZcoAcct parameter (ZcoInbound or ZcoOutbound)
has been added. Also:
NOTE: The changes made to address SourceForge Bug #54 (described above)
have the potential to BREAK APPLICATIONS!
If you need to receive bundles as well as send them, then the BpSAP
handle that you pass to bp_receive() must be a different handle that
is obtained by calling bp_open() in the usual way.
**Operational changes**
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.2.2 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- SourceForge Bug #49: ION now sends a "Depleted Storage" custody refusal
signal back to the current custodian when an ION node lacks sufficient
ZCO space to contain a bundle.
- SourceForge Bug #50: ION now behaves more consistently across platforms
when ionadmin is unable to open its designated configuration file.
- The ionadmin application now considers being unable to open its
configuration file to be a serious error and will stop the ION
initialization routines at this point. This gives clearer and more
immediate feedback to the user that an error was encountered that they
must resolve to resume normal ION operation.
- Previously, ionadmin would load a default configuration if it was unable
to open its configuration file EXCEPT under vxWorks 6.3 PowerPC where
ionadmin would cease with a "can't open SDR config file" message.
- SourceForge Bug #51: The "ionconfig" man page has been updated.
Some examples of entries that were obsolete are as follows:
- The pathName parameter should not be encased in quotes. Previously, the
example showed a pathName that was encased in quotes.
- The default config flag is 13, which corresponds to
SDR_IN_DRAM | SDR_REVERSIBLE | SDR_BOUNDED
Previously, the documentation gave an incorrect default config flag of 1.
- The default wmKey is 65281. Previously, this was reported to be 65537.
- SourceForge Bug #52: The "bping" application has been updated for better
compatibility under VxWorks. This was made possible by adding an option
to run bping as a lightweight task with positional runtime arguments.
- SourceForge Bug #56: ION now builds properly under OSX 10.9.5.
- SourceForge Bug #57: ION now has PARTIAL support for FreeBSD.
- ION now builds properly under FreeBSD 10.
- IMPORTANT NOTE: Several key ION applications have not yet been updated
to run properly in a FreeBSD environment. These
applications will be updated in a later ION release.
These updates may also become available in the short
term in the form of an official ION patch.
- SourceForge Bug #59: Fixed bug in the "dtpcadmin" application where it failed
to accept a valid parameter of zero in the "maxRtx", "aggrSizeLimit", and
"aggrTimeLimit" fields.
- SourceForge Feature Request #18: The "cgrfetch" application now has an option
to list all valid outducts. This should simplify usage by making it
easier to identify an outduct to run the application against.
- SourceForge Feature Request #20: ION has been updated to better support the
CFS environment. CFS can now leverage many standalone ION executables via
an alternative API where the application's "main()" is replaced with a
callable function.
- SourceForge Feature Request #21: ION now allows users to adjust the maximum
block size that LTP will receive directly into the SDR heap rather than a
temporary file. This allows users to ensure that a bundle's receive-
generate-forward chain can be handled entirely in memory. This often
improves efficiency by alleviating the need to write to a disk medium.
- SourceForge Feature Request #22: ION now has an option to support handling
database reversibility mechanisms in memory rather than files.
- SourceForge Feature Request #26: The CFDP implementation has been updated to
conform to the proposed CFDP V1 specification. Further updates will be
required when the specification revisions are completed and approved by
CCSDS.
- SourceForge Feature Request #27: ION now provides support for the DTN
Metadata Extension Block as specified in RFC 6258.
- SourceForge Feature Request #29: The ION test suite has been revamped to
dynamically detect when ION applications are initialized rather than wait
preset amounts of time for them to initialize. This provides faster
execution of the test suite when applications initialize faster than these
preset times and more reliable execution of the test suite when
applications initialize slower than the preset times.
- Several compilation issues with the "icinm.h" header file implementation have
been resolved.
- ION's collection of man pages was previously included in "ION.pdf" but is now
available as a separate document, "ION-manpages.pdf".
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.2.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Feature Request #8: Improvements have been made in how ION infers the node
number of the sending node.
ION now implements the Previous Hop Insertion Block (here called
Previous Hop Node, phn) extension block, which contains the identifying
singleton endpoint of the sending node. Previously, ION utilized
mechanisms for inferring the node number from convergence-layer EIDs,
which could generate false information, especially when multiple nodes
were resident on the same machine.
- Feature Request #14: The stream of "watch" characters that ION generates when
significant bundle events occur can now be redirected in a manner
similar to the way log messages may be redirected.
- Feature Request #15: Per specification, ION's LTP implementation now supports
LTP Authentication as described in RFC 5327.
- Bug #21: The interface for the internal smlist "deletion" callback has been
modified to be more consistent with the interfaces for the "lyst" and
"sdrlist" modules. The API now accepts the address of the element to
delete rather than its content.
- Bug #30: Applied various updates to LTP notices to be more compliant with the
RFC 5326 specification.
- LtpExportSessionStart notice is now delivered properly.
- Reception claims in on-the-wire segments now have offsets that are
relative to the report segment lower bound rather than relative to the
start of the block.
- Bug #33: LTP Green segment traffic is no longer terminated prematurely when a
partly-red partly-green block is sent.
- As a Receiver:
Previously, closure of an import session (on reception of report-ACK)
could incorrectly suppress the processing of subsequently received
Green segments for the same session.
- As a Sender:
Previously, processing of an "all-received" Report segment could
incorrectly closes the export session, which should not occur until
the EOB has also been sent.
- Bug #34: The Service Data Aggregation (SDA) in LTP has been updated to be
compliant with the latest specifications. The SDA now properly passes
the client ID to the client data unit length determination callback.
- Bug #36: Fixed specific compilation problems with dtnperf under the
Scientific Linux 5.5 (gcc 4.1.2) operating system.
- Bug #39: Per specification, ION's LTP implementation now rejects LTP
segments that do not contain the proper version number identifier (0b0000).
Previously, ION would process segments regardless of version number.
- Bug #40: Per specification, ION's LTP implementation now rejects LTP blocks
with a session number of 0, as the specifications requires session numbers
chosen by LTP senders to be in the range [1, 2^32-1].
Previously, ION would process such blocks with a cancel segment code 3.
- Bug #41: Added checks in the AMS TCP connection pool implementation to help
detect and guard against data corruption.
- Bug #42: Improvements have been made to the rate control implementation of BP
to better handle cases where the available residual capacity on the
channel to a neighboring node is overstated.
- Bug #43: Per specification, ION's LTP implementation now marks bundles as
"malformed" when there are gaps in the sequence of green data segments.
Previously, ION inserted fill data to saturate the gaps, which could
result in the delivery of a damaged bundle.
- Bug #44: Various man pages have been updated to be more compliant with the
man page specification.
- Bug #45: Added/updated man pages for various parts of the AMS subsystem.
- Bug #46: Fixed bug in ionscript where a bss/ipn mutual exclusion error was
presented when creating a monolithic configuration file and not specifying
existing bss and ipn configuration files as input.
Ionscript now properly outputs a monolithic configuration file that
contains neither a BSS nor an IPN subsection.
- Bug #48: Fixed a contact graph routing bug when recomputing routes wherein
ION could exclude the potentially-optimal route from consideration if it
is the initial contact on any remaining route.
Due to the recent inclusion of CGR Payload Classes, it is no longer
correct to exclude such routes from consideration.
- Patch #5: The Delay Tolerant Network Management Protocol (DTNMP) reference
implementation has been updated to the version that was used for testing
and demonstration earlier in the year.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.2.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue #364: Added support for Delay Tolerant Payload Conditioning (DTPC).
- DTPC adds (optional) end-to-end functionality similar to terrestrial
transport-layer protocols on top of the Bundle Protocol.
- DTPC offers the following additional enhancements:
- Application data record aggregation into large ADUs.
This reduces the BP overhead by preventing the proliferation of large
numbers of small bundles.
- Elision of redundant application data records.
This optimizes the utilization of low-capacity communication links.
- Feature Request #5: Several bugfixes and performance enhancements have been
applied to the DCCP convergence layer.
- Proper handling for the SIGPIPE signal.
- Usage of keepalives (rather than terminating idle connections) and
improved retry capability with an exponential backoff.
- CCID and Transmission Queue Length are now configurable within ION.
- Support added for the 0.0.0.0 (any) IP address.
- Various other refinements to standardize the DCCP CL with the other
ION convergence layers.
- Feature Request #9: Added support for the DTN Network Monitoring reference
implementation (DTNMP). DTNMP is an API added to ION that is used to produce
and monitor BP, LTP, and ICI instrumentation data.
- Feature Request #11: ION now provides the TTL of each received bundle in order
to accomodate a CCSDS Blue Book service requirement.
- Bug #22: Improved support for the Extended Class Of Service block (ECOS).
ION now uses the "best effort" / "streaming" flag in ECOS to decide between
UDP and TCP transmission.
- Bug #24: Fixed a bug in CFDP where the destination entity ID could become
malformed when the length of the compressed destination entity ID was smaller
than the length of the compressed source entity ID.
- Bug #25: Updated ION to be conformant with several new build warnings
introduced in GCC 4.8.
- Bug #26: Increased the default stack size for the tcpcli and tcpclo processes
to prevent crashes under RTEMS and VxWorks.
- Bug #27: Fixed a memory leak that could arise when sending anonymous bundles
(bundles with a source EID of "dtn:none") while BSP was enabled.
- Bug #28: Fixed bug where reforwarded bundles were sometimes not being
properly purged from the forwarding queue.
- Bug #29: Fixed bug where the ltp_get_notice() operation could return a bad
value in its "data" value if the operation was interrupted.
ltp_get_notice() now properly sets the "data" to zero if interrupted.
- An option to limit the length of checkpoint and report serial numbers in LTP
has been added. The default limit is 2 bytes.
- Added man pages for the Asynchronous Message Service (AMS) subsystem.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.1.3 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Feature Request #6: LTP screening is now disabled (rather than enabled)
by default. This should eliminate one often mystifying source of apparent
connectivity loss.
- Bug #23: Updated build configuration to fix build problems due to problems
linking various pthread libraries when using bleeding-edge automake tools.
- Bug #20: Child process of fork() was unable to write to log file if
exec() failed.
- Bug #18: A cosmetic fix -- an informative log message has been added to
explain an alarming message issued by the ACS system.
- Bug #17: Various "admin" utility program function were broken when the
new restart capability was added.
- Bug #16: Errors in the generation of LTP checkpoint serial numbers have
been fixed. In particular, no more duplicate checkpoint serial numbers.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.1.2 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Bug #13: Migrated admission control facilities into the ZCO subsystem so that
they can be used outside of the BP subsystem.
- Bug #14: Fixed bug where CFDP headers could be stripped by the ZCO subsystem.
- Bug #15: Fixed various bugs that could affect ION's stability.
- Fixed possible deadlock if the bpcp/bpcpd were terminated via a signal
while in the middle of an SDR transaction.
- Fixed bug in the outducts of several convergence layers and forwarder
daemons that could cause them to not shut down properly due to an
unintended interaction between the erasure of a taskVar semaphore with
their internal looping constructs.
- Feature Request #4: Updated SDNV decoder and corresponding APIs to support
up to 64-bit SDNV's on 32-bit systems, allowing for a wider space of possible
IPN values.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.1.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Bug #11: Fixed bug with transaction reversibility enabled where unpredictable
behavior could occur when a transaction reversal was forced and the state of
the SDR and working memory were out of sync.
ION now reinitializes working memory from the SDR to ensure data consistency.
- Bug #12: Fixed a bug in the red-black tree data structure used in LTP by which
sm_rbt_destroy() didn't release the tree's mutex to the OS which could
ultimately lead to consumption of all semaphores on the system and crash the
node.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.1.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Bug #1: Fixed bug where the contact graph routing engine would prefer a
multi-hop route to the source over the "no-hop" loopback connection.
- Bug #2: Fixed bug in contact graph routing engine where erroneous routes
could be selected if route caching was enabled and any "downstream" contact on
a route had an end time earlier than the end time of the first contact on the
route.
- Bug #3: Updated code and configurations to always use the dotted-string
representation of the sender's IP address rather than hostname. This was done
to mitigate problems that can arise due to aliasing and multihoming.
- Bug #7: Fixed bug where ionadmin would duplicate all currently-added contacts
and ranges that were added in the ION configuration files before starting
ION with the 's' command.
- Bug #8: Fixed bug where bundles that expired while in the limbo queue were not
properly deallocated.
- Bug #10: Updated the ionstart/ionscript/killm scripts with support for the
following ION administrative modules:
- Bundle streaming service (BSS)
- Interplanetary multicast (IMC)
- Aggregate custody signals (ACS)
- Feature Request #2: Added support for bundle age extension blocks to help
accomodate platforms that may not be able to provide a stable clock.
For more information on the bundle age extension, refer to internet draft
draft-irtf-dtnrg-bundle-age-block-01
- ION now raises an alarm if expected peak volume of data is larger than
ION's allocated file storage size.
- Added new utility called "ionwarn" that is used for computing congestion
forecast at an ION node based on contact plan.
- Issue #311: Added a Bundle Streaming Service (BSS) regression test that
does not require the use of "xterm".
- Issue #349: Optimized the LTP engine to achieve faster data rates by by
substituting red-black trees and hash tables for linked lists where
appropriate.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.0.2 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue #280: Fixed a deadlock scenario when using "ionstart" to start two nodes
nodes in parallel.
- Issue #349: Applied some optimizations to the LTP engine to help it operate
at data rates that can exceed 80Mbps.
- Issue #357: Fixed compilation issues that prevented ION from building properly
on some kfreebsd systems.
- Issue #360: Updated the MinGW port of ION to supply definitions for various
required macros that are no longer supplied by newer versions of MinGW.
- Issue #361: Fixed compilation issues that prevented ION from building properly
on some debian-unstable systems.
- Issue #362: Fixed a bug where transplantation of man pages into ION.pdf could
fail if an obsolete version of man was used, causing compilation to fail. ION
now detects if the required "-l" option for man is supported, and does not
attempt to transplant the man pages if the option is not found.
- Issue #363: Fixed several memory leaks where SDR heap space was allocated but
not freed.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.0.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- *Issue #347: Included a test exercizing the fix for the TCPCL reconnection
bug that was made available in ion-open-source v3.0.0.
- Issue #348: Refreshed the MinGW and RTEMS ports of ION to build properly.
- Issue #352: BPCP, an rcp-like remote copy utility that transfers files via
CFDP, is a new utility now included with ION. It is built and installed by
default and has an interface similar to rcp, with support for local to
remote, remote to local, and remote to remote transfers in recursive and
non-recursive modes.
- Issue #353: Scrubbed various test configurations in the test suite that
produced superfluous messages regarding the bundle security database not
being initialized properly.
- Issue #354: Slightly changed the behavior of "make retest", a directive that
reruns tests that failed on the previous test run.
Previously "make retest" would re-run the entire test suite if issued
immediately following a completely sucessful test run.
"make retest" now returns SUCCESS immediately if issued following a
completely successful test run, a behavior more amenable to automated
testing.
- Issue #355: Updated the ION build process to be compatible with the latest
versions of autotools, particularly automake v1.12.
- ION has now been ported to the "bionic" libc implementation, the first
step toward porting ION to the Android operating system.
- Starting from this release the ION manual "ION.pdf" will be distributed with
an appendix containing up-to-date man pages for all ION applications.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.0.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue #242: Removed unnecessary recursion from the CGR implementation to help
protect against overflows from incorrect configurations.
- Issue #262: ION is now wired with a rudimentary instrumentation framework for
insight into run-time status, including bundle processing statistics and node
state metrics. This is in preparation for standardized network management.
- Issue #304: Optimized CGR route computation by developing a new algorithm that
employs Dijkstra's Algorithm.
- Issue #308: Several updates to ION's Payload Integrity Blocks (PIB) and
Payload Confidentiality Blocks (PCB):
- Bundle Security Protocol (BSP) utilities now support PIB and PCB.
- PIB and PCB extension block code has been added.
- Roughly 40 new test cases for PIB, PCB, and BAB combinations have been
introduced.
- Issue #311: Bundle Streaming Service (BSS) support has been added to ION.
BSS passes "real-time" bundle payloads to an application callback while also
storing the bundle payloads to a database for user-directed playback.
- Issue #314: Standardized spelling of the word "semaphore" throughout the ION
codebase.
- Issue #322: Improved reliability for custodial retransmissions when the next
custodian is a neighbor by making the following tweaks in libbpP.c:
- Changed the bpDequeue "stewardship accepted" flag to a custodial timeout
interval value (in seconds) that is computed by the CL output daemon,
based on CL-specific knowledge, in the event that the CL protocol is not
reliable and therefore can't accept stewardship of the bundle.
- Added the same custodial timeout interval value to bpHandleXmitSuccess, to
trigger reforwarding of the bundle even when stewardship has been taken
and CL transmission has been nominally successful and reliable, in the
event that the CL transmission ultimately (unexpectedly) does not succeed.
- Issue #325: Fixed a bug that could cause ION to crash when sending bundles for
which the destination endpoint is not a singleton.
- Issue #329: ION now supports sending (rather than just receiving) fragmented
bundles. (NOTE: this entailed several changes to the ZCO API.)
- Issue #339: Aggregate Custody Signals (ACS) have been added to ION.
- ACS is a technology that combines information from various separate
custody signals into a single bundle, which has the potential to save
"ack channel" bandwidth.
- For more information on ACS, see the following document:
<http://bioserve.colorado.edu/bp-acs/draft-kuzminsky-aggregate-custody-
signals-02.txt>
- Issue #343: Fixed bugs in LTP that could cause crashes at high data loss rates
- Fixed mechanisms for preventing resurrection of closed Import sessions.
- Fixed issue where the same report number could become assigned to two
different reports, resulting in link service daemons crashing.
- Issue #344: Added a "-t <ttl>" command line parameter to set the time-to-live
for bundles sent from the bpsource application. Previously bundles were
hard-coded with lifetimes of 300 seconds, which is now the default if the TTL
is not explicitly specified.
- Issue #345: The ION Deployment Guide is now bundled with ION. It provides
FAQ-style documentation for helping new users familiarize themselves with ION.
- Issue #347: Fixed bug in re-establishing connectivity via TCPCL when a node
shuts down and then restarts.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.5.3 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue #288: Fixed bug in CFDP implementation where performing a proxy "puts"
operation without supplying a flow label would trigger an assertion failure.
- Issue #290: Fixed bug in CFDP implementation where an internal SDR list was
improperly referenced.
- Issue #316: Fixed several unresolved symbolic links in the "limbo" subsection
of the test suite.
- Issue #318: Fixed bug in CFDP implementation where an assertion was triggered
when a remote directory listing was performed for a directory that did not
exist.
- Issue #328: Fixed bug in CFDP implementation where internal calculations for
its CFDP Directory Listing Response user messages were one character shorter
than they should be.
- Issue #330: Fixed bug in CFDP implementation where cfdpclock would remove
unsent FDUs that did not contain any actual file data.
- Issue #331: Fixed bug in CFDP implementation where user messages were not
restricted to a maximum of 255 characters in length, as per the CFDP
specification.
- Issue #334: Fixed bug in CFDP implementation where the cfdp_put() and
cfdp_get() operations returned "0" as transactionId rather than the actual
CFDP transaction number.
- Issue #338: Modified test suite to use relative times instead of absolute
times wherever possible. This fixes several tests with configurations that
became obsolete after the start of 2012 and ensures better resilience of the
test suite to any kind of absolute time boundaries.
- Issue #340: Several minor updates have been applied to the DCCP implementation
to detect and build DCCP for linux kernels that meet or exceed version 3.2.0,
which puts several key DCCP fixes into the kernel baseline.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.5.2 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue #297: The ION design guide "ION.pdf" now dynamically incorporates the
ION manpages.
This feature requires ghostscript, psutils, groff, and groff-base.
If not all are present, ION will build but ION.pdf will not have the latest
manpages appended.
ION.pdf is built automatically via the "make" command.
To explicitly build the ION design guide document, use the following command:
make ION.pdf
- Issue #298+: Fixed build incompatibility between gcc v4.6.1 and later with
valgrind v3.6.1 and earlier. If needed to compile with Valgrind support,
ION will add -Wno-unused-but-set-variable to AM_CFLAGS.
Valgrind inclusion can also be explicitly controlled via the following flags:
./configure --enable-valgrind: Build with Valgrind support
./configure --disable-valgrind: Build without Valgrind support
- Issue #299: ION now prints a warning when given any BAB rule that is not for a
wild-carded EID signifying "all endpoints at the indicated node".
- Issue #301: Fixed issue where Ctl+C no longer terminated the bpsink and
bprecvfile utilities.
- Issue #303: Fixed issue where new all-green transmission sessions could be
inhibited by the LTP limit on the total number of export sessions.
Since LTP green is unreliable, LTP green sessions don't need to occupy
resources at the sender for retransmissions, so the sessions need not be
restricted.
- Issue #319: Fixed issue with AMS where the parseSocketSpec() function could
return INADDR_ANY, which isn't an acceptable IP address within AMS.
Now possible to enable AMS debug output via the following configure flag:
./configure --enable-ams-debug: Build with AMS debugging output
- Issue #324: Fixed issue where LTP could accumulate block acquisision files
after the block acquisition had already been completed. This was generally
due to unnecessary retransmitted segments that arrived late. Since the
blocks had already been delivered, the ensuing files were never destroyed.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.5.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue #185: ION now supports binding to INADDR_ANY in UDP/TCP ports and link
service adapters.
- Issue #298: Code scrub to remove unused variable warnings that prevent
compilation of ION under the default settings of gcc 4.6.1.
- Issue #310: Fixed broken Windows support. Fixed several minor issues.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.5.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue #196: The congestion checking subroutines have been implemented more
efficiently.
- Issue #265: The "bpdriver" application now allows users to set the TTL value
dynamically via a the "t<ttl>" command line parameter.
- Issue #279: Fixed issue where calling bpMemo twice created timeline events
that could not be removed.
- Issue #292: Fixed issue where pid-checking routines can give false-negatives
for vxworks processes.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.4.2 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue #264: Removed checks for maximum block size in LTP, simplifying LTP
configuration and fixing a bug.
Related to the fix for issue #293, upgrading the LTP configuration worksheet.
- Issue #270: Fixed issue in cfdptest that prevented the "Custody Requested"
switch from being set.
- Issue #275: ION now has support for code coverage analysis via lcov/gcov.
To enable this feature, use "./configure --with-gcov".
Building with code coverage support enables the following new directives:
make cov: creates a "coverage" subfolder from the top of the ION
directory where HTML coverage results are stored
make cov clean: removes the trace files and the "coverage" subdirectory
- Issue #281: Fixed issue that terminated bputa when it was directed
to write to a file without sufficient write permissions.
- Issue #282: Fixed issue where LTP segments received outside of a contact
were mishandled.
- Issue #283: Fixed issue where the CFDP FDU didn't load the database before
using it, resulting in erroneous data being fed into the CFDP event queue.
- Issue #284: Fixed issue where CFDP mishandled extent merges, resulting
in checksum failures.
- Issue #285: Fixed issue in cfdpadmin where malformed commands could cause the
application to crash.
- Issue #287: Fixed issue that prevented the reporting of user messages and
filestore responses in cfdptest.
- Issue #293: Fixed issue in the ION LTP Worksheet where the spreadsheet
doesn't account for a small aggregation size limit when calculating
export blocks
- Issue #295: ION's internal contact graph routing routines have been
parameterized to enable better support for deployment-specific variations
of the algorithm.
- Added ability to update AMS modules' management information bases while the
modules are running, by using the new amsmib utility. Modified amsstop to
use a similar mechanism.
- *Issue #240: Added DCCP link service adapters to ION for the purpose of
providing congestion control without reliability guarantees, which is
beneficial for LTP deployments over IP networks, particularly when traversing
the Internet. The sender program is called "dccplso" and the receiver program
is called "dccplsi".
- *Issue #241: Added DCCP convergence layer for BP. The sender program is called
"dccpclo" and the receiver program is called "dccpcli".
- Issue #245: Added support for using the character "*" as a wildcard to remove
multiple contacts and ranges at once.
- Issue #257: Fixed issue where bundles would remain in the limbo queue after
an outduct was blocked rather than be reforwarded.
- Issue #273: Added a ".hgignore" file that can be populated with regular
expressions of files to suppress when the "hg status" command is run.
- Issue #278: Updated various test configuration files to have more recent
contact times.
- Tests have been scrubbed to adopt the new security syntax enhancements
introduced in Issue #247.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.4.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue 105: Add correlation blocks to the bundle protocol block extension
interface.
- Issue 161: Corrected some redundant and/or circular library linking when
using autotools.
- Issue 176: Upgrade ltp-cla to better conform to current ltpcla draft in the
DTNRG. Particularly the new "green" service handling.
- Issue 247: Updating the syntax of ionsecadmin for flexibility and readability.
- Issue 249: Added support to ION's LTP for section 6.21 of RFC 5326, the LTP
specification. Specifically detecting "red" and "green" segments that
overlap: an error-state.
- Issue 253: Fixed a tcpcl bug: When connection is lost to a node, a keepalive
needs to be at the end of the backoff period. TCPCL waits backoff period +
keepalive period to send the keepalive.
- Issue 255: Fixed bug where pseudoshell can cause duplicate parent processes.
- Issue 260: Teach memcheck about MTAKE/MRELEASE for improved testing using
valgrind.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.3.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Test suite has been modified to support multiple test sets. Creating a
text file in the tests directory containing a list of tests is all that
is needed to create a test set.
Examples: make test-all ; make test-branch ; make test-<anything>
- Added "limbo" queue to support suspension and resumption. This allows the
node to handle unexpected convergence layer failure as opposed to scheduled
or static contact termination.
- Bug fixes to: LTP, CGR, SDR mutex, bpcounter, ionscript, tcpcl, stcp,
PSM mutex, SDR, bpsink, and others.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.2.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Fixed bugs in LTP session cancellation that caused slow storage leaks.
- Updated the Design and Operations Guide to document new features and
API changes.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.2.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Add option to configure LTP spans for "purge" behavior on contact termination.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.1.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Modified the loopback and ion-dtn2 configuration files for the new command
syntax.
- Added BSP implementation using "stub" versions of hmac and sha1 for public
release.
- Added assertions.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.0.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Bug fixes.
- Documentation updates.
- Various testing applications in earlier releases are split from the ion
release.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 1.1.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Experimental new tcp convergence layer compatible with the standard defined
by draft-irtf-dtnrg-tcp-clayer-02. This convergence layer is titled tcp,
with other programs tcpcli tcpclo, and is suitable for connectivity with the
DTN2 reference implementation. Currently only unidirectional, unacknowledged
communication is supported. Some bugs still present.
- Revise LTP to use randomly selected session numbers rather than recycling
small session numbers - prevent data loss and corruption due to application of
late-arriving segments to sessions that are re-using the session numbers of
earlier sessions.
- Add fixes to eliminate compiler warnings, per Ohio U. Remove all ppc-vxworks
makefile directories, replacing them with arch-vxworks5 directories because
the VxWorks build varies with VxWorks version number and not with the hardware
platform that you build for. Add "expat", which is needed by AMS and is not
provided with VxWorks. Fix segfault bug in dtnfw reported by U. of Colorado.
Fix bug in support for trackingElts list.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 1.0_r203 =
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- Includes bundle relay programs brsscla and brsccla; brsscla acts as the
server, brsccla acts as the client.
%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 0.3 =
%%%%%%%%%%%%%%%%%%%%%%%%
- Implements BP version 6.
- Added capability for dynamic routing based on network topology that changes
with the passage of time.
%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 0.2 =
%%%%%%%%%%%%%%%%%%%%%%%%
- The ion package, which implements the DTN Bundle Protocol (BP), has been
upgraded to conform to BP version 5, submitted to IETF in December 2006.
The changes are almost exclusively internal to the software and protocol:
the format of bundles exchanged through the delay-tolerant network is altered,
but the API for ION is mostly unchanged. Note that this release of ION is
not interoperable with implementations of BP version 4.
- The Remote AMS functionality of AMS has been upgraded to conform to the
specification most recently posted to the public documents list of the CCSDS
CWE site for AMS. The API for AMS is unchanged.
%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 0.1 =
%%%%%%%%%%%%%%%%%%%%%%%%