-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease-notes.txt
2436 lines (1813 loc) · 107 KB
/
release-notes.txt
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
= Release Notes for ION 4.1.1 =
November 19, 2021
%%%%%%%%%%%
= 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 4.1.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
Beginning with the ION 4.1.1 release, we will no longer be distributing
two separate .tar.gz files (one that builds with BP version 6 by default and
one that builds with BP version 7 by default). Instead, we will distribute a
single ION .tar.gz file that builds with BP version 7 by default. If you wish
to use ION with BP version 6, you can use use the --enable-bpv6 configure
option. If you are building ION from source on Windows for BP version 6, you
will need to run the command "make bpv6".
After ION version 4, all BP version 6 related changes will be bug fixes
unless explicitly identified as otherwise.
Branches included in this release:
misc-4.1.1-fixes
* Improve the killm script
* Update pilot delay and add rate control for bpdriver
* Change SourceCustodyRequired to NoCustodyRequested for AMS
* Add a version of the req-003-multicast test for BP version 7
* Fix a bug in librams.c that caused AMS petition assert/cancel
flip-flop
* Various updates for Makefiles (autoconf and manual)
apl-4.1.1-security-patches
* Added BPSec Python test suite
* Added accomodation of NULL terminator in security policy parameters
* Added checks for NULL pointer references when a BCB targets an
extension block
* Added TEST_POINT macros to BIB and BCB code to log test events
last-pre-git-tweaks
* Add a warning about potential forwarding loops
* Fix a typo in biberc documentation
autoconf-updates-MacOS_M1-WSL
* Fix line ending encoding error in install_macos_sysctl.sh script
* Add support for building ION on MacOS using the new M1 processor
* At this time, ION works correctly on the M! processor with MacOS
version 11.6 (Big Sur) but does not run properly on version
12.0.1 (Monterey)
* Add support to configure ION to build on WSL2 but not WSL1
* ION has also now been tested on RedHat Linux
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 4.1.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
ION 4.1.0 is the first release in which the BPv7 implementation is
conformant to the BPv7 protocol specification that will shortly be
published by IETF as a standards-track RFC.
The accompanying BPsec implementation is similarly conformant to
the BPSec specification that will also soon be a standard-track RFC.
NOTE, though, that the TCP convergence-layer protocol implementation
in ION 4.1.0 still conforms to the original TCPCL specification (RFC
7242), NOT to the upcoming TCPCL standards-track RFC; that upgrade
will be supported in a future release.
Another key change in this release is that Aggregate Custody Signaling
is no longer enabled by default. (Due to some new features in ACS
configuration, when ACS is enabled the bpv6 bpclock daemon will no
longer run successfully unless the ACS database is initialized.
Since not all ION bpv6 users currently initialize ACS in node startup,
disabling ACS by default seems to be the best way forward.) If you
DO want ACS for your bpv6 environment, include the "enable-acs" switch
when you generate the Makefile, e.g.:
./configure --enable-acs
Additionally, three new features are included in ION version 4.1.0
(along with various bug fixes).
First, an option is provided that will enable ION to run at much higher
speeds over those portions of a bundle's end-to-end path that are
supported by TCP/IP at the convergence layer. To enable this option,
include the "--enable-high-speed" switch when generating the bpv7 Makefile.
Also, it is now possible for ION's LTP implementation to utilize multiple
different underlying link service protocols on input as well as on
output. The latter have always been configured by means of the "LSO
command" associated with the "span" for LTP segment transmission to a
remote LTP engine. The former may now be configured by means of "LSI
commands" associated with multiple LTP segment reception "seats" at
the local LTP engine. See the ltprc(5) man page for more information.
Finally, a mechanism has been introduced that will automatically
synchronize a contact plan among all nodes that are cited in the
contacts listed in that contact plan. This synchronization requires
that the nodes be configured for bundle multicast; it is controlled
by means of the new "!" command as processed by ionadmin. See the
cpsync test case (in ion-open-source/tests) for an example.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 4.0.2 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
The main driver for this release is integration of the security policy
procedures, which ensure that Bundle Protocol Security mechanisms are
enacted appropriately for each bundle. A detailed description of these
procedures and the modifications to ION that they entailed is provided
in a supplementary file of Release Notes.
Additional features of the 4.0.2 release:
- A plug-in module for Contact Graph Routing, developed by the University
of Bologna, can now optionally be used instead of the original CGR
implementation in ION. Unibo-CGR includes options for some addi-
tional features that can improve performance and guard against
routing loops.
- Several errors in CRC computation, discovered during testing at the
European Space Agency, have been corrected.
- Several problems in the implementation of Bundle-in-Bundle Encapsulation,
discovered during Keith Scott's testing for DevKit upgrades, have
been addressed. Prviously there was no way to configure ION for
BIBE transmission to a topologically adjacent node, but a
mechanism built on routing overrides has fixed that; see the
biberc(5) man page for details. NOTE: in BPv7, custody transfer
is a feature of BIBE rather than BP, so it needs to be configured
in BIBE configuration. You can still request custody transfer for
an individual bundle when you call bp_send but when you do that,
IF ANY NODE ON THE END-TO-END PATH TO THE DESTINATION IS NOT
CONFIGURED FOR BIBE FORWARDING THEN THE BUNDLE WILL BE DISCARDED
AS UNFORWARDABLE. BE CAREFUL.
- A shortcut option for resuming the operation of a node that has been
"stopped" (all daemon tasks ave been terminated) but not destroyed
(node state has been preserved) has been added: just pass command
file name "!" to each of the core administration utilities (ionadmin,
ltpadmin, bpadmin, cfdpadmin).
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 4.0.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
Branches:
cgr-multicast (bpv7 only)
Bundle multicast is made simpler and more resilient: multicast bundle
propagation is driven by routes computed by the contact graph routing
system, so no infratructural spanning tree is needed. The imcadmin
utility is deprecated.
trustedCollective
The prototype Delay-Tolerant Key Administration system in "contrib"
has been refactored into (a) a general-purpose "trusted collective"
mechanism ("tc") that relies on the new bundle multicast mechanism
and (b) an initial application of that mechanism, the delay-tolerant
key administration system. Both are now in the main line of supported
ION code, no longer in "contrib".
bpsec-completion
The BPsec implementation in ION (bpv7 only) has been reorganized and
has been upgraded to support features that were not fully supported
in ION 4.0.0: target multiplicity, interim security sources, and block
canonicalization. Block Integrity Blocks may now target primary and
extension blocks as well as the payload block. No support yet for
Block Confidentiality Blocks that target extension blocks.
ION 4 NM Release Notes:
NM Manager has been updated with expanded support for the latest AMP
MySQL Database Schema. Note that functionality may not be complete for
all data types in this release.
Configure the build with "--with-mysql" to enable. Requires the MySQL C
Client API <= 8.0.0 or any version of MariaDB (default for most Linux
distributions when installing “mysql” via your package manager).
To automatically connect to the database on startup, specify connection
information at the command line. Ie:
nm_mgr ipn:1.3 --sql-user amp --sql-pass amp --sql-db amp_core --sql-host db
Run “nm_mgr” without arguments for full usage information.
The MySQL schema can be found under nm/contrib/amp-sql. See the included
README file for details.
The CAMP tool has been updated, including added support for generating MySQL
definition files. The generated SQL files are included in the packaged
amp-sql schema.
NEW: The “amp.me” tool has been added to nm/contrib/ampme. This is an
experimental tool providing both command line and browser based interfaces
to interact with the database, and to provide transcoding of AMP messages
between CBOR, URI, and other reference views. See the included README file
for details.
Other changes:
- A new MULTISEND option has been added for underlying UDP transmission in
LTP, thanks to Eric Yeh and others at Boeing. The new UDP option
uses sendmmsg to enable transmission of a large number of small LTP
segments (minimizing the effect of IP fragmentation) in a single
system call (minimizing system call overhead).
- A new TRACKRFXEVENTS compile-time switch enables user-written code to
monitor system events processed by the rfxclock daemon.
- Reconnection and shutdown processing has been somewhat stabilized in the
TCPCL convergence-layer implementation and in UDP transmission under
LTP, BSSP, and BP.
- The Deployment Guide and Design Guide have been updated.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 4.0.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
The focus of ION version 4.0.0 was implementation of the new version of Bundle
Protocol - BPv7 - that is currently being standardized within the IETF DTN
Working Group.
Branches:
ion-4.0.0
* BPv7 (Bundle Protocol version 7) was implemented.
* BPSEC replaced SBSP for BPv7.
* An enhanced BIBE implementation replaced Aggregate Custody Signaling
(ACS) for BPv7.
* All of this new code is in a new "bpv7" subdirectory of the
ion-open-source root directory.
* NOTE that the original bpv6 implementation is still included in ION
and is still supported. But it has been moved to a new "bpv6"
subdirectory of the ion-open-source root directory.
fix-unibo-contrib - Updates were made to ECLSAv4 and the dtnsuite
(dtnbox, dtnfog, dtnperf, dtnproxy).
cfdpv1-updates - CFDP was revised based on the CFDPV1 pink sheets including a
fix for CRC computation.
bp-configure-switch - Updates were made to the autoconf system to enable
configuration of ION with bpv6 or bpv7. It is important to note that to
minimize application program changes, bpv6 and bpv7 builds use the same
library and utility program names. As a side effect, to ensure you are
running the expected code, make sure you remove any old libraries and
executable programs before rebuilding with a different bp version so bpv7
utilities do not pull in bpv6 libraries or vice versa. Also, the testing
architecture has been enhanced to allow tests to be distinguished as bpv6
or bpv7 only.
ION 4 NM Release Notes:
NM has been upgraded to support the latest revision of the AMP specification.
Prior releases were based on AMPv6. This version has been updated to
support AMPv8.
These updates change the format of the CBOR-encoded messages and, as such,
break backwards compatibility when enabled. The updated specification
optimizes the size of the CBOR encodings by eliminating selected CBOR
container delimiters when not required for processing by NM through the
newly introduced concept of 'OCTETS'.
An OCTETS sequence is functionally equivalent to a CBOR indefinite-length array
for which the header and size bytes are omitted from the encoded CBOR
data. The NM application explicitly instructs the QCBOR encoder as to the
start and end of an octets sequence. This enables the entirety of the
OCTETS sequence to be counted as a single element in any encapsulating
CBOR array and for error detection (ie: of unmatched array opens & closes)
to proceed as normal.
Two new (experimental) UI features have been added to aide automation. The
'Automator UI mode' provides a simple shell-style interface to the Manager
optimized for scripted usage. The second is a preliminary REST API. This
API is subject change in future releases.
Command line options have been added to nm_mgr for configuration of expanded
file logging capabilities. See the man page for details.
This release includes also includes several bug fixes, updates to the CAMP tool
for generating ADM source files, and the inclusion of Doxygen
documentation. See nm/docs/doxygen/README.md for instructions on
generating Doxygen output.
NOTE for Solaris users: This version of network management is NOT fully
functioning on Solaris at this time. There is a segmentation fault that we
have not yet fully diagnosed.
Other ways that bpv7 differs from bpv6:
- CBOR encoding replaced the SDNV encoding scheme.
- qos was renamed to bpq to avoid build problems resulting from existing
qos implementations.
Other changes:
- A new test for prioritized transmission including priority override has been
added.
- A new BIBE custody transfer test for BPv7 has been added.
- llcv was updated to help stabilize TCP reconnection.
- bpversion, a utility that prints the version of BP ION was compiled with,
has been added.
- The Windows(mingw) build was updated to use local/ locations rather than opt/.
- The Deployment Guide was updated with additional information about
multi-node operations and configuring for bundle-in-bundle encapsulation.
- Deterministic data loss capability was added to owltsim.
- cgrfetch was repaired.
- Assorted bugs were fixed.
- SourceForge Bug #133: documentation of the standard build process was added
to ION.pdf
- SourceForge Feature Request #54: the ion-open-source folder has been renamed
ion-open-source-VERSION for the official release tarball.
- SourceForge Feature Request #72: bpchat was enabled for Windows builds and
man pages were added for bpstats2 and bpchat.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.7.0 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
For ION 3.7.0 we focused mainly on upgrading the routing and forwarding
modules. We made significant progress, but the final step will be to
enable forwarding - both unicast and multicast - across multiple "regions"
of a potentially very large network; we're not there yet. The groundwork
has been laid, though, and inter-regional routing should be supported by
sometime next summer. Meanwhile, here's what is in the 3.7.0 release:
- Management functions for declaring "region" membership and managing
"passageways" between regions have been implemented.
- Discovered contacts are now logged, to serve as the basis for computing
predicted contacts.
- A new protocol (implemented using BP administrative messages) has been
developed for exchanging logs of discovered contacts, to improve
all nodes' understanding of unplanned contact patterns.
- Opportunistic CGR has been augmented with contact prediction based on
logs of discovered contacts, and an overhead-limiting mechanism
inspired by Spray and Wait routing has been added.
- Network management has been overhauled. In particular, QCBOR has
replaced TinyCBOR as the mechanism for CBOR encoding and decoding
of network management messages.
- Updated implementations of DTNperf and the Erasure Coding link service
adapter, from University of Bologna, have been added.
- Individual threads can now be named, for easier management in embedded
deployments. NOTE: this feature won't be available for the uClibc
platform in 3.7.0, as the version of uClibc we're working with
does not include an implementation of pthread_setname_np.
- CFDP has been updated to conform to the latest CFDP Red Book.
- ionxnowner, a utility that identifies the owner of the current SDR
transaction, has been added.
- SDNV encoding has been optimized, thanks to Cheol Koo of KARI.
- A bug in handling the "verbose" flag in owltsim has been fixed, courtesy of
Pete Gonzalez, Johnson Space Center.
- Errors in the accumulation of reception statistics have been corrected.
- CGR has been updated to conform to the new CCSDS Schedule-Aware Bundle
Routing specification, including anticipatory fragmentation.
- LTP has been simplified for higher performance. "Screening" control
has been reinstated, reception rate control has been removed,
tracking of closed export sessions has been made optional.
- SourceForge Bugs #69 and #138: the UDP rate control algorithms in udpclo
and udplso have been made more stable and more accurate, and rate
control limits are now automatically obtained from the contact plan.
- SourceForge Bug #134: the time values that ION operates on are now
explicitly recognized as being "ctime" values (Unix epoch time)
rather than UTC time values. Conversion from ION time values to
UTC is still supported by O/S services, e.g., gmtime.
- SourceForge Bug #135: to prevent circular references at build time,
the administrative functions for managing BP and LTP security rules
have been relocated from ionsecadmin to new bpsecadmin and ltpsecadmin
utilities. This enables validation of ciphersuite specifications
when SBSP rules are added.
- SourceForge Bug #144: a fix has been made to prevent ipnfw from crashing
when CGR attempts to compute a new route through a contact just as the
contact is ending.
- SourceForge Feature Request #53: network administrator can now specify
a routing override that supersedes the routes computed by CGR.
- SourceForge Feature Request #61: network administrator can now specify
a bundle priority that overrides the priority declared by the
application that sourced the bundle.
- SourceForge Feature Request #74: all remaining reliance on BP libraries
has been removed from CFDP (except bputa).
One more note: support for explicitly detaching an Outduct from the Egress
Plan to which it is currently attached has been added. Unfortunately,
this feature requires that each Outduct be attached only to a single
Egress Plan. That has been the intent of the architecture all along,
but making it explicit has uncovered a problem in the regression tests
for Aggregate Custody Signaling: those tests rely on the use of a single
Outduct for transmission to two different nodes. Consequently those
tests now fail and will continue to fail until they are rewritten.
ACS itself is unaffected by the new feature, and when we temporarily
disable that restriction on Outduct attachment the ACS regression
tests all pass. ACS still works just as well as ever.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.6.2 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
The most significant change in ION 3.6.2 is the addition of a fully built
out implementation of network management based on the Asynchronous Management
Protocol specification. Other changes:
- SourceForge Bug #96: Defined a threshold bundle size above which the payload
to be encrypted will be copied to a temporary file but below which it
will be copied to a temporary SDR heap object.
- SourceForge Bug #100: This bug could not be recreated as originally reported
in 2016 so the ticket has been closed.
- SourceForge Bug #111: Fixed CGR route computation as described in the
CCSDS Schedule-Aware Bundle Routing White Book.
- SourceForge Bug #112: Uncommented acsadmin makefile commands for Windows and
added a couple of include directories so that acsadmin now builds.
- SourceForge Bug #118: Fixed deterministic crash in cgrfetch.
- SourceForge Bug #120: Fixed unrecoverable SDR error when attempting to
transfer a directory using cfdp.
- SourceForge Bug #121: Revised the heap size in the configuration for the
bench-ltp demo to prevent the test from crashing.
- SourceForge Bug #122: Ensured that the ionunlock man page is installed.
- SourceForge Bug #123: Removed obsolete tutorial, replacing it with link
to new online tutorial website.
- SourceForge Bug #124: ION Design and Deployment guides updated.
- SourceForge Bug #125: Fixed bpadmin "stop outduct" segmentation fault.
- SourceForge Bug #127: Fixed sdrwatch lockup when using the "-z" option,
clarified the sdrwatch command-line control parameters.
- SourceForge Bug #128: Added a call to watchSocket to TCPCL and STCP
to try to control an issue with TCPCL failing to disconnect a TCP
connection after a neighboring node is reset.
- SourceForge Bug #130: This bug was an issue with how to install libexpat1-dev
on Centos 7 and was not related to the ION source code.
- SourceForge Bug #131: Ensured that the bpclm man page is installed.
- SourceForge Bug #132: Fixed bug in bpadmin "i endpoint" command syntax.
- SourceForge Bug #133: Build system documentation updated in the ION Design
Guide.
- SourceForge Bug #136: Fixed bugs in the Android development kit.
- SourceForge Bug #139: Fixed compile error using memcpy in
dgr/test/file2udp.c.
- SourceForge Bug #140: Changed overdue time to the end of the current contact.
- SourceForge Bug #141: Fixed ipnd crash on Mac OSX versions 10.12 and 12.13.
- SourceForge Feature Request #67: Added the ability to monitor the LTP
segment retransmission rate.
- SourceForge Feature Request #72: The following programs cannot be built on
Windows using the MinGW/MSYS environment:
- amshello - uses fork(), which doesn't exist for mingw
- bpstats2 - uses SIGUSR1 which doesn't exist for mingw
- bpchat - builds but test does not pass - not building
- bpcp - relies on waitpid, kill, WIFEXITED, and WEXITSTATUS
- bpcpd - daemon for bpcp so doesn't make sense to build if bpcp doesn't
- owlttb - needs SIGPIPE which Windows does not support
- dccplsi - excluded on platforms other than Linux in config.h
- dccplso - excluded on platforms other than Linux in config.h
- dccpcli - relies on dccplsi and dccplso which cannot be built
- dccpclo - relies on dccplsi and dccplso which cannot be built
* Also note that man pages are still needed for bpstats2 and bpchat.
- SourceForge Feature Request #73: The following programs are now being built
on Windows:
- beacon
- node
- cgrfetch
- ionexit
- ionunlock
Added enforcement of security policy on bundle reception.
Improved UDP transmission rate control in udplso.
Fixed a bug in LTP: segment buffer size was not being expanded to accommodate
changes in max segment size.
Fixed bug in the auto-restarting of LTP after a recoverable system crash.
Reinstated control over LTP screening, for research purposes.
Cleaned up wild-card removal of contacts and ranges in ionadmin.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.6.1 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
ION version 3.6.1 includes the following changes:
- A new Android development kit for ION-based applications is now available.
It's large, so it's provided in a separate file.
- A new installer for the Windows port of ION is also now available, likewise
in a separate file.
- A "deadly embrace" in tcpcli was causing nodes to lock up during heavy
continuous bidirectional file transfer. That is now fixed.
- The erasure-coded link service adapter from University of Bologna has been
updated, now including proactive fragmentation for improved performance.
- The "bpsec" bundle security system has been renamed "sbsp" (Streamlined
Bundle Security Protocol) to align with specifications that are being
standardized by the Consultative Committee for Space Data Systems (CCSDS).
- Asynchronous Message Service and Bundle Streaming Service have been added to
the RTEMs port.
- Contact Graph Routing in the Bundle Protocol has been updated to align with
the new Schedule-Aware Bundle Routing (SABR) specification that is being
standardized by CCSDS.
- The delay-tolerant key administration system in the "contrib" directory has
been updated with a model for optimizing the configuration of an aggregate
key authority, plus scripts for testing various key authority
configurations.
- The ION Design Guide has finally been updated.
- Loopback transmission has been restored to the TCPCL convergence-layer
adapter.
No changes to operational interfaces or APIs this time.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 3.6.0b=
%%%%%%%%%%%%%%%%%%%%%%%%%%
Version 3.6.0b is an interim release aimed at improving the ability of ION to
tolerate continuous heavy relay traffic at the DTN gateway for the
International Space Station. The changes made to accomplish this are mostly
invisible, but they include the deployment of a new "ltpdeliv" daemon (for
data acquisition rate control) and resolution of a particularly subtle race
condition.
In addition, this version includes the following upgrades:
- 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.
- The ION implementation of Asynchronous Management Protocol has been
upgraded in many ways, including optional support for data storage
in MySQL.
- 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.
--- A note on Windows operating environments ---
Building ION on Windows requires at a minimum the MinGW-w64
[http://mingw-w64.org/] compiler package, and most likely a utilities
package to provide a shell. For this release, testing was done with the
following configurations:
- 32-bit Windows ION is built with i686-4.9.3-release-posix-dwarf-rt_v4-rev1.7z
- 64-bit Windows ION is built with x86_64-7.1.0-release-win32-seh-rt_v5-rev1.7z
Both system variants use the MinGW-MSYS utiltites bundle MSYS-20111123.
During testing of 3.6.0b the current set of instructions for installation
and operation of ION on Windows was found to be partially outdated and in
need of revision. In particular, running the built-in validation tests
requires additional setup steps beyond the basic ION deployment. Revised
documentation will be provided in release 3.6.1.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= 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 #107: Updated to a new convergence layer management system.
(See ION interface changes in version 3.6.0 note below for more
information).
- SourceForge Bug #110: Fix flow control to reserve ZCO before allocating SDR
heapspace.
- SourceForge Bug #112: Added include directories needed to successfully build
acsadmin on Windows.
- 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.
- SourceForge Feature Request #58: LTP performance enhancements.
- SourceForge Feature Request #59: Added ECLSA an implementation of erasure
coding under LTP.
- SourceForge Feature Request #60: Enabled custodial retransmission when using
the UDP convergence-layer adapter by adding an optional retransmission
timeout interval (RTT) that defaults to 0.
- SourceForge Feature Request #63: Added an option to allow automatic discard
of status messages for a CFDP transfer in a recipient does not want to
process them.
- Added a new system to disable tests that you do not want to run when using
the runtests script.
--- ION interface changes in version 3.6.0 ---
In ION version 3.6.0 we introduce a new degree of indirection between routing
(next-hop bundle-layer endpoint selection) and forwarding (next-hop
convergence-layer endpoint selection). This new capability, named "convergence
layer management" (CLM), provides a number of important benefits.
Unfortunately, in order to realize those benefits we had to revise some ION
interfaces more drastically than we usually do in moving to a new version.
Please be aware of the following significant changes as you adjust your test
and deployment environments to utilize ION 3.6.0.
-- API changes
None of the "public" application programming interfaces in ION are affected
by the introduction of CLM, but the Bundle Protocol private internal API has
changed in some significant ways; these changes particularly affect the
implementation of convergence-layer adapters. Most important of these is a
change to the function prototype for bpDequeue; see the comments in the bpP.h
header file.
-- Behavioral changes
BP flow control is now exerted at node granularity, in a new daemon process
named "bpclm", rather than at outduct granularity. One effect of this change
is that the data rates declared in the contact plan now are enforced for all
convergence-layer protocols, not just LTP. Another is that the plan for
bundle egress to a given neighboring node may now comprise multiple
convergence-layer outducts, not just one; the ipnadmin and dtn2admin utilities
don't support this option, but new commands implemented in the bpadmin utility
do.
-- Configuration changes
Several changes in ION 3.6.0 may affect your configuration files.
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.
The operation of the dtn2admin utility has been expanded, conceptually
enabling the declaration of egress plans for sets of nodes whose EIDs conform
to any wild-carded EID string regardless of URL scheme, without any sensitivity
to trailing "/" characters or "demux" strings. Enabling this expansion,
though, it is now necessary to include scheme name and ":" (in addition to
the scheme-specific part of the EID) when declaring, editing, or deleting a
plan.
Finally, the TCP convergence-layer protocol implementation has been
significantly revised: it now enables bundle to be transmitted to a
neighboring node over a TCP connection that was established by that node,
i.e., not declared a priori in local outduct commands. That is, it is
no longer necessary to declare outducts for all neighboring nodes to which
you want to be able to send bundles by tcpcl. However, these revisions
are fairly complex and were time-consuming to debug; tcpcl loopback
introduces a whole additional layer of complexity, particularly in fault
handling, so at least for now tcpcl loopback is not supported in ION 3.6.0.
Everything one might want to demonstrate or test using tcpcl loopback can be
more cleanly and convincingly accomplished using two nodes exercising tcpcl
on the same machine, so we don't see removal of this limitation as urgent.
- 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 #94: Warnings printed at compile time on 64-bit Windows
were fixed.
- 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.
- SourceForge Feature Request #48: Improved the portability of Alarms and
enabled them to be used in flight code as they no longer spawn new threads
but instead are implemented as events in the RFX timeline that are clocked
out by rfxclock at 1-second granularity.
- The BP security and Asynchronous Management Protocol (bpsec) replaced the
previous BP security mechanism bsp.
- Added opportunistic contact graph routing (ocgr) based on predicted contacts.
This system is still experimental but is ready for others to experiment
with.
- Fixes for bugs in AMS uncovered in IPAS demonstration environment development.
- Added tcpcl-ack-resilience-test.
- Fixed issue-265-bpdriver-ttl-option test by adding support for BSD netcat.
- 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 #34: ION now supports proactive bundle
bundle fragmentation in LTPCLO.
- 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.
- Fixed several miscellaneous bugs with IP Neighbor Discovery.
- 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.
Public API changes:
- bp.h: the new function bp_memo is added. It was previously exposed only
in the BP private API.
- zco.h: the new functions zco_revise, zco_create_obj_ref, and
zco_destroy_obj_ref are added.
Operational interface changes:
- cfdpadmin (cfdprc):
- Added support for explicitly adding remote entities and
specifying their UT-layer endpoints.
- 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 #37: The ION tutorial has been updated.
- 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: