1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146
|
= Release Notes for ION 3.2.1 =
July 2, 2014
%%%%%%%%%%%
= GENERAL =
%%%%%%%%%%%
The ION (interplanetary overlay network) software is a suite of communication
protocol implementations designed to support mission operation communications
across an end-to-end interplanetary network, which might include on-board
(flight) subnets, in-situ planetary or lunar networks, proximity links, deep
space links, and terrestrial internets. Included in the ION software
distribution are the following packages:
- ici (interplanetary communication infrastructure), a set of libraries
that provide flight-software-compatible support for functions on which
the other packages rely, such as dynamic memory management, non-volatile
storage management, and inter-task communication via shared memory.
The ici libraries are designed to make the porting of IPN software to
multiple operating systems - Linux, VxWorks, Solaris, etc. - as easy as
possible. Ici now includes zco (zero-copy object), a library that
minimizes the copying of application data as it is encapsulated in
multiple layers of protocol structure while traversing the protocol
stack.
- bp (bundle protocol), an implementation of the Delay-Tolerant
Networking (DTN) architecture's Bundle Protocol.
- ltp (licklider transmission protocol), a DTN convergence layer protocol
for reliable transmission over links characterized by long or highly
variable delay.
- dgr (datagram retransmission), an alternative implementation of ltp
that is designed for use over the Internet protocol stack. dgr
implements congestion control and is designed for relatively high
performance.
- bssp (bundle streaming service protocol), a DTN convergence layer protocol
for reliable transmission of streaming data.
- ams - an implementation of the CCSDS Asynchronous Message Service.
- cfdp - a class-1 (Unacknowledged) implementation of the CCSDS File
Delivery Protocol.
- bss - a Bundle Streaming Service (BSS) for disruption-tolerant reliable
data streaming. BSS supports real-time streaming applications by
passing the bundle payloads to the associated application for immediate
display of the most recent data while storing all bundle payloads
received into a database for user-directed playback.
- dtpc (delay-tolerant payload conditioning), an application framework
providing TCP-like support for end-to-end retransmission and data delivery
in transmission order without duplication or omission.
Features included:
- cgr - Contract graph routing: a method of dynamic routing designed for
space based applications of ION, but still usable for terrestrial
applications. It computes routes using scheduled communication and deals
with time-varying network topology.
- brs - Bundle relay service: provides interconnectivity between networks
that do not allow servers (those behind NAT for example). For more
information, check man brsscla and man brsccla.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= 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.
- Feature Request #16: In preparation for the deployment of delay-tolerant
security key administration (DTKA), ION now includes several new features
dealing with public/private key management in the ION security database.
DTKA itself has been prototyped but is still pending approval for open
source release.
- Feature Request #17: A significant overhaul of the Bundle Streaming Service
(BSS) has been implemented to resolve a fundamental incompatibility with
implementing BSS with multicast. The new BSS forwarding implementation
(BSSP) resides at the convergence layer directly under BP so BSS channel
acknowledgments can be disambiguated. Previously, the BSS forwarder
design relied on BP custody transfer to control BSS data forwarding over
reliable and unreliable channels, which was incompatible with multicast
because custody transfer can't distinguish among the multiple identical
copies of a bundle that are forwarded at a multicast branch point.
- 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 #24: Fixed an error in the implementation of previously-released bugfix
where source or destination CFDP entity IDs could become malformed when
their entityNbrLengths differ.
- 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.
- ION no longer requires libexpat by default in order to build.
Expat is still required in order to use XML configuration files for AMS.
To build against libexpat, use "./configure --with-expat".
%%%%%%%%%%%%%%%%%%%%%%%%%%
= 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.
- Feature Request #12: Added support for DTNperf.
DTNperf is a utility provided in ION's "contrib" directory that can be used
to invoke performance testing between BP nodes.
- 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.
- Bug #29: Errors in production of notices in LTP have been corrected.
- An option to limit the length of checkpoint and report serial numbers in LTP
has been added. The default limit is 2 bytes.
- Added generalized service data aggregation to LTP.
- Added controls to help understand and debug CGR routing decisions.
- The CGR routing engine can now dynamically log diagnostic trace messages
by enabling its "trace" flag.
- A new "cgrfetch" utility can used to invoke the creation of JSON
input files that describe the CGR routes that were considered.
These JSON input files can be used in conjunction with the CGR Viewer
web application to produced PDF files that provides illustrated graphs
for all considered routes.
See /contrib/cgr-viewer/Readme.md for more information.
- 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 #19: Lifetime expiration of fragmentary bundles could cause a crash.
- 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 #1: Implemented "payload classes" to enable more
sophisticated contact graph routing functionality.
Extended CGR to compute routes on a per-payload-class basis that respects
the maximum bundle size that can be sent along each route.
The current payload classes are as follows:
- Payloads up to 1024 bytes (1 KB)
- Payloads between 1024 bytes (1 KB) and 1048576 bytes (1 MB)
- Payloads between 1048576 bytes (1 MB) and 1073741824 bytes (1 GB)
- Payloads larger than 1073741824 bytes (1 GB)
- 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.
- Added uClibc support for ION.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.1.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Bug #9: Fixed several bugs in the TCP convergence layer.
- TCPCLO would not reconnect to its neighbor if the neighbor was unreachable
on startup.
Fixed by instituting a default keepalive (currently 15 seconds).
- Fixed a TCPCL interoperability bug when an external implementation uses
full-duplex TCP connections where the tcpclo would fail to receive bundles
from this implementation if the TCP connection had ever been previously
lost.
- Capped the maximum TCP reconnection timeout to 1 hour down from 24 hours.
- 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 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Began transitioning to the SourceForge issue tracker for code management.
SourceForge-originated issues are designated as "Bugs" or "Feature Requests".
- 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
- Feature Request #3: Added support for bundle multicast.
- Issue #195: Finished replacement of pthreads-based semaphore "unwedge"
function with simpler platform-specific equivalents, begun in ION 2.4.0.
- Issue #306: Implemented several improvements to congestion forecasting.
- Improved the accuracy of the forecast of maximum storage occupancy
by incorporating estimations based on the rate of data being
transmitted in and out of the internal data heaps.
- 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 #339: Fixed bug in aggregate custody signals implementation that
prevented successful completion of regression tests on some platforms.
- 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 #358: Fixed a bug in computing the CFDP inactivity deadline.
Updated the "cfdprc" man page to expose the parameters for configuring the
CFDP inactivity timeout interval.
- 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.
- Issue #356: Enhanced the bptrace application with file-sending capabilities.
- 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 #302: Implemented red-black trees as an alternative data structure to
linked lists for some performance-sensitive applications. Migrated the BP
timeline to use red-black trees.
- 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 #342: Changed several invocations of lyst_create() to
lyst_create_using(), to ensure that ION's private memory management is always
used.
- 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 #271: Various autotools changes to update how CFDP is built.
- 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 #323: Fixed bug in BP implementation where an integer overflow in the
congestion forecasting code would cause BP to refuse bundles from local user
applications on 32-bit machines with long, busy contacts.
- 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 #333: Fixed bug in CFDP implementation where originating transaction ID
messages were not wrapped as CFDP user messages as per the CFDP specification,
resulting in messages that contained the wrong type codes.
- 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.
- Status reporting support has been added to cfdptest.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= 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 #300: Fixed several bugs in ipnfw:
- lookupRule() function of libipnfw.c incorrectly used srcServiceNbr
instead of srcNodeNbr.
- Several IPN function calls in ipnadmin.c have been wrapped in
sdr_begin_xn/sdr_exit_xn blocks to protect against assertion failures.
- Before putting a bundle into the Limbo list, ipnfw now searches for
blocked outducts and discards the bundle if none are found.
- 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 #307: Fixed overflow bugs in the increaseScalar() and reduceScalar()
functions.
Added Scalar to SDNV conversion functions.
- Issue #313: Fixed issue with overlapping bundle source/destination memory
addresses that could cause bundle corruption on 64-bit systems.
- 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 #189/#250/#252: ION shutdown utility added.
- 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 #276: Loopback range can now be set to a non-zero value.
- Issue #279: Fixed issue where calling bpMemo twice created timeline events
that could not be removed.
- Issue #286: Fixed issue where erroneous input to several administrative
applications could cause them to crash.
- Issue #292: Fixed issue where pid-checking routines can give false-negatives
for vxworks processes.
- Issue #296: Corrected usage of internal _xxxConstants() functions to ensure
they are only used with invariant values.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= 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 #269: Clean up platform (portability) files, making it easier to add
new ports.
Removed support for some obsolete platforms (e.g., HP-UX).
- 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.
- ION now has native Windows support via MingW.
Support for Cygwin and Interix has been removed.
- Added support for inactivity timer in CFDP.
- Fixed race conditions in support for multithreaded AMS.
- Fixed memory leaks in AMS shutdown.
- 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.
- Added AMS Programmer's Guide to distribution.
- Various minor bug fixes.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.4.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- *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 #263: Fixed issue with pthread_t. pthread_t is now treated as an
opaque type for the purpose of improving code correctness and portability.
- 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 #277: Fixed 3-node-stcp-ltp configuration to remove an unintentional
connection between nodes 1 and 3.
- 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.
* Note: Due to an immature DCCP implementation in most native OS kernels at the
time of release, formal DCCP testing on 64-bit systems has yet to be
conducted. Currently an experimental kernel containing several DCCP
fixes must be built to achieve acceptable performance. These fixes are
expected to become standard in the native linux 3.1 kernel.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.4.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Issue 105: Add correlation blocks to the bundle protocol block extension
interface.
- Issue 106: Extract bundle block-related functionality into separate source .c
and .h files to allow for future modular development of block extensions.
- 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 195: sm_SemUnwedge() in platform_sm.c uses a pthread to ensure a
semaphore is not already taken. Some platforms do not include pthreads and
the function can be implemented using semaphore trywait semantics().
- Issue 233: Some additional LTP debugging hooks added.
- Issue 238: Fixed possible leak of custodianEid in sendCtSignal.
- Issue 247: Updating the syntax of ionsecadmin for flexibility and readability.
- Issue 248: Fixed a timeline ordering bug in LTP.
- 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 254: Fixed LTP report serial number bug.
- Issue 255: Fixed bug where pseudoshell can cause duplicate parent processes.
- Issue 256: Fixed uninitialized memory read in reverseEnqueue().
- Issue 258: ZCO referenced file progress.
- Issue 260: Teach memcheck about MTAKE/MRELEASE for improved testing using
valgrind.
- Various bugfixes and features for AMS package.
- Various bugfixes and features for CFDP package.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.3.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Modified administrative startup commands to block until startup is complete,
rather than return immediately even if the node hasn't been fully initialized.
- Fixed a bug which truncated dtn-scheme bundle source EIDs.
- Modified some tests (1000.loopback) to run compiled objects instead of shell
scripts. This eliminates the need for shell scripting and allows automated
tests to function on platforms without shell access.
- Combined similar test configurations to use the shared /configs directory.
This will provide a standard set of updated configurations.
- 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.
- Code scrub of DGR.
- Added bping, bpchat, and bpstats2 utilities.
- Custody transfer is now optional in both bptrace and bpsend.
- Added feature for "convergence-layer stewardship"; CL's can initiate
reforwarding of bundles on transmission failure without explicit
bundle-layer custodianship.
- Enhanced LTP's udplso with a transmission rate limiter.
- Added new AOS CLA for LTP.
- Bug fixes to: LTP, CGR, SDR mutex, bpcounter, ionscript, tcpcl, stcp,
PSM mutex, SDR, bpsink, and others.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.2.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Corrected bug in LTP's data acquisition into file-system storage. Didn't
handle data loss and retransmission properly.
- Fixed bugs in LTP session cancellation that caused slow storage leaks.
- Upgraded the LTP configuration spreadsheet and its documentation, to
provide better guidance when most data are sent from or acquired into
file system storage.
- Updated the Design and Operations Guide to document new features and
API changes.
- Various other bug fixes and tweaks.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.2.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Store bundles in ZCO.
- Added feature to store bundles directly to file-system memory, allowing
much larger bundles to be handled by the node.
- Added feature to allow all stdout output to be redirected to log files.
Feature is enabled by #defining FSWLOGGER.
- Code scrub BP, CFDP, ICI, LTP.
- Add support for asymmetric link-delay (range) in contacts.
- Add option to configure LTP spans for "purge" behavior on contact termination.
- Fixed handling of dtn:none eids.
- Optimize contact graph routing.
- Various bug fixes and tweaks.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.1.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Port to FreeBSD and RTEMS (via manual makefiles).
- Various fixes and tweaks.
- Added comprehensive automated testing suite.
- Fixed various compiler bugs
- Modified custodian EID generated from dtn://hostname to dtn://hostname.dtn
- 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 CFDP implementation.
- Bug fixes in LTP, BRS, and some BP applications.
- Tweaks related to running on VxWorks.
- Added assertions.
- Bug fixes in the TCP convergence layer, particularly in the interest of
interoperability with dtn2.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 2.0.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Based on JPL revision 255:6443ed8258e1
- Converted underlying version control system to Mercurial from Subversion.
- Add ionsecadmin for managing the security policy database.
- Added better support for cross-scheme routing.
- Add support for the previous-hop-node extension.
- Update route computation to current CBHE draft standard.
- Addresses memory leak problem identified by U. of Colorado in long-duration
tests.
- LTP heavily modified to become more flexible and powerful.
- dtnadmin and associated utilities renamed to dtn2admin.
- Configuration file syntax changes slightly in ionadmin, bpadmin, ipnadmin,
dtn2admin; heavily changes syntax of ltpadmin. Included ION-LTP-Configuration
document and spreadsheet to explain new syntax and calculate values.
- Bug fixes.
- Documentation updates.
- Various testing applications in earlier releases are split from the ion
release.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 1.1.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
- Based on JPL revision 226.
- 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.
- ION-specific tcp-based convergence layer is renamed stcp (stcpcli stcpclo)
and still functions as expected.
- Adds user-contributed applications bping bping bpmon bpalive.
- some LTP related bugs are not yet squashed.
- Updates to various user-contrib programs; added a bpmon_query program to work
with SNMP.
- 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.
- added the bplive program.
- Updated for sbp_api.h and abp_api.c
- brought over basic working draft-tcpcl standards-compliant code with help of
patch submitted by Andrew.Jenkins@colorado.edu
- manually applied patches from seb@highlab.com, adding sanity-checks and more
consistent comment-line detection to the admin programs
- 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.
- applied the patch from Andrew.Jenkins@colorado.edu about dtnfw's rule/plan but
- added new ION.pdf to the in-development release
- overhauled ionstart, ionscript, ionstart.awk to account for the dtnadmin need
for a node name as well as the bpadmin/dtnadmin/ipnadmin startup order bug
found by Andrew.Jenkins@colorado.edu
- Revise routing to match applicable backlog (based on bundle's priority; not
necessarily total backlog) against aggregate capacity when determining route
viability. (Per JIRA item DINET-107) Add implementation of extension block
for extended class of service, which includes an additional 256 "ordinal"
priority sub-levels within priority 2.
- Upgrade AMS implementation to Red Book 2.
- Add interface for inserting BP extensions.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 1.0_r203 =
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- Based on jpl r203.
- Adds LTP package.
- Supports contact graph routing.
- Compilation changed to autoconf and automake; compilation tested on:
Ubuntu 7.04, 7.10, 8.04, Gentoo, Fedora 3, Fedora 7, OSX 10.5, and Solaris 10.
- Killm updated to work on OSX 10.4, due to an ipcs incompatibility; also
updated to make sure all processes are killed.
- Removed multiple compiler warnings.
- Includes bundle relay programs brsscla and brsccla; brsscla acts as the
server, brsccla acts as the client.
- Zco package rolled into ici.
- Ionscript added for configuration file management; ionstart and ionstop
rewritten.
- Various bug fixes.
- 2008-11-11 Added the ION Design and Operation manual v1.6.
%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 0.3 =
%%%%%%%%%%%%%%%%%%%%%%%%
- Based on jpl r105.
- Simplified and cleaned up SDR implementation in the ici package.
- ion package and utilities renamed to "bp" for "bundle protocol."
- Restructured congestion control to be based on rate control.
- Implements BP version 6.
- Revised the zco package.
- Added capability for dynamic routing based on network topology that changes
with the passage of time.
- Fixed various bugs.
- All administrative and application errors are reported to ion.log
- Added ionstart and ionstop scripts.
%%%%%%%%%%%%%%%%%%%%%%%%
= 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.
- A variety of miscellaneous bugs have been fixed.
%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 0.1 =
%%%%%%%%%%%%%%%%%%%%%%%%
- Initial code released for review.
|