-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathrelease-notes.txt
2918 lines (2192 loc) · 127 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.3s =
November 27, 2024
%%%%%%%%%%%
= 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.3s =
%%%%%%%%%%%%%%%%%%%%%%%%%%%
Beginning with the ION 4.1.3s release, ION will include support for compilation
with Mbed TLS cryptographic library. ION version 4.1.3s includes support for Mbed TLS version 2.28.
To enable use of Mbed TLS cryptogrpahic library in ION, you must have already built the Mbed TLS
version 2.28.x shared libraries with #define MBEDTLS_NIST_KW_C enabled (see mbedtls/include/mbedtls/config.h).
Make sure the Mbed TLS assets are installed in /usr/local/include/ and
/usr/local/lib with correct permissions, or you can define alternate
locations by running:
./configure --enable-crypto-mbedtls MBED_LIB_PATH=/path/to/libraries MBED_INC_PATH=/path/to/includes
To build Mbed TLS:
1. Download the Mbed-TLS 2.28.2 source code.
2. Open mbedtls-2.28.x/include/mbedtls/config.h and uncomment the line
that has #define MBEDTLS_NIST_KW_C commented out by default.
3. Run the following commands:
Linux and MacOS)
make SHARED=1
sudo make install
Windows 7)
make CC="gcc -std=c99" WINDOWS_BUILD=1 SHARED=1
make CC="gcc -std=c99" WINDOWS_BUILD=1 install
* NOTE: this should install things in /msys/local which is okay
To compile ION with MBEDTLS_SUITES configure with:
./configure --enable-crypto-mbedtls
To enable BPSec logging (recommended for verification of BPSec functionality and required by BPSec regression tests)
use the following configuration flag:
--enable-bpsec-debugging
The following code changes have been made to support this option:
* Added ici/MBEDTLS_SUITES folder.
* Updated configure.ac and Makefile.am to allow for linking against
MBEDTLS libraries.
ION 4.1.3s provides a 'enable_manual_build.sh' script that switches ION from autoconf build system (the default)
to the manual developmental build system based consisting of a Makefile at the root of ION source tree and a set of Makefiles
under the directories of individual components of ION. See the online documentation for more details.
Branches included in this release:
update-4.1.3s-ion-documentation
* Update ION documentation files.
update-4.1.3s-bpcounter-delivery-release
* Updates the bpcounter.c program so it releases the pilot bundle.
update-4.1.3s-dtnnone-vulnerability
* Addresses a vulnerability that freezes ION if a bundle with
null-endpoint were injected into ION node.
update-4.1.3s-imc-pnb-extblock-crash
* Fixes a vulnerability when a pnb extension block contains invalid eid
(or say imc scheme for a node that does not recognize it) causing a crash
of the bundle acquisition process.
update-4.1.4-test-suite
* General improvements to the test scripts.
update-4.1.3s-cgrfetch
* Fixes a segfault at the end of cgrfetch call.
update-4.1.3s_libmetadata_libsecypt
* Includes branch update-4.1.3s_bpsec_updates and also update-4.1.3s_secfix_testfix
feature-msys2-update
* Adds autoconf build process for Windows 10 using msys2 and mingw64.
* This update is experimental and has not been tested against MBEDTLS_SUITES
(just NULL crypto suites).
update-4.1.3s-bpcp-and-test
* Support for how ion-core builds bpcp.
* Creates tests that can imported into ion-core for LTP and STCP
convergence layers.
4.1.3s_makefile_correction
* Remove incorrect inclusions of libsecrypt and libmetadata from libbp.
update-4.1.4-extension-block-crc16
* Turn on CRC16 for all blocks.
bpsec-fixes-5-27-2024
* APL fix for a specific case where BPSec may allow a bundle to fail BIB/BCB
but still be accepted.
* Allow relay nodes not to have a policy.
bpsec-fix-1-June-2024
* Fix accounting issue with ZCO when using BIBE with BPSec.
update-4.1.4-ionstart-upgrade
* Update start script to support syntax that allows multiple ionrc files
to be specified.
update-4.1.4-bssrecv
* Updates to bssrecv program and documentation.
integration-4.1.3s-util-signals-fix
* Added signal handler for SIGINT to properly shut down child processes.
* Added signal handler for SIGTERM for graceful termination of the process.
integration-4.1.3s-smart-file-update
* Updated smart file transfer utilities with file size reporting and improved
message logging.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 4.1.3 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
Branches included in this release:
update-4.1.3-ams
* Add AMS demo (benchtest).
* Update AMS programmer's guide (v3.0).
* Fix amshello demonstration program (resolves multi-thread errors).
update-4.1.3-ams-test-fix
* Update AMS regression tests (ams-sana and issue-319-parseSocketSpec).
* Fix pointer arithmetic error on big-endian OS.
update-4.1.3-android
* ION 361 port for Android 64bit snapdragon 855 HDK.
update-4.1.3-bench-ltp-fix
* Update bench test for faster machines like Mac M1.
update-4.1.3-bss
* Update man pages for bss applications.
* Fix bssOpen, bssClose, bssStop, bssExit, bsscounter, and bssdriver.
* Fix memory leak due to premature ionDetach.
* Fix bpcounter handling of late pilot bundle.
update-4.1.3-bug-report-url
* Replace old SourceForge email with GitHub URL for issue reporting in manpages.
update-4.1.3-commandline-history
* Update admin programs to have commandline history option.
* Configure with --enable-commandline-history when building ION.
update-4.1.3-contrib-kari-ion-config
* KARI-provided ION configs used for testing ION with non-ION DTN implementations.
update-4.1.3-demo-tests
* Fix eval conditions in demo tests.
update-4.1.3-dispatchBundle
* Fix loopback problem with imc and CRC parsing for multiple bundle ZCO.
update-4.1.3-enhance-wchar
* Add bp level information such as node number, and service number to enhanced
watch character.
* Convert watch character from char to string.
* Configure with --enable-ewchar when building ION.
update-4.1.3-extension-zco-bpdequeue
* Fix bpsec extension block ZCO accounting.
update-4.1.3-gcc12fix
* Fix errors from gcc12.
update-4.1.3-ionrestart
* Updated ionrestart program to prevent restart loop.
update-4.1.3-key-value
* Prevent unique key value from turning negative.
update-4.1.3-killm
* Updates to killm script to work correctly (and nearly the same) on all
supported non-windows platforms (and fixing solaris)
update-4.1.3-ltp-udplso
* Import fix for udplso hanging at shutdown from IONe.
update-4.1.3-malformed_eid_fix
* Fix copies eid string to correct critical malformed EID error.
update-4.1.3-misc
* Remove ION_OPEN_SOURCE conditions in start and stop scripts.
* Add and update various man pages.
* Update LTP config tools and documentation.
update-4.1.3-named_posix_semaphores
* Added a test for the semaphore subsystem called sm_subsystem that performs
a stress test on whatever low-level OS semaphore system was configured to
look for problems that have occurred in previous versions
* Added a new platform-dependent semaphore system based on Posix Named
Semaphores. The old default was to use the AT&T System V Release 4 (SVR4)
semaphores that are supported on just about ANY OS platform. Those
semaphores predate modern multi-core architectures and multi-thread
instructions and rely instead on system calls for all operations, which
makes them extremely slow. Posix Named Semaphores will use modern CPU
multi-core instructions when available on most platforms so that most
signal() and lock() semaphore operations can be performed in user-space
in the current process/thread. Our tests show decrease in signal()/lock()
times from 50% to 3300% depending on the platform. The end effect is
that, when using small bundle sizes (less than 1000 bytes), network data
throughput using LTP (as one example, but applies to all convergence
layers) increases at least 11% (Solaris Intel VM) and as much as 350%
(Ubuntu Intel VM) with no other changes. Improvement varies greatly
between different CPUs and systems, but was always faster than the old
system.
* When built on Linux / Solaris / MacOS, the ION build system will default
to using the new Posix Named Semaphores.
To use the old SVR4 semaphores instead, configure using
./configure --enable-force-svr4-semaphores
* When built on all other platforms, the ION build system will default to
using the previous semaphore subsystem default (SVR4 for most systems)
You can try to force the new semaphores instead by configuring with
./configure --enable-force-posix-named-semaphores
Note that we haven't tested the new semaphores on any systems other than
the ones for which the build system recommends their use.
* The quickest way to see if the new semaphores are being used is to run
the sm_subsystem test, which will identify the semaphore system when it
starts. It will also tell how many Posix Named Semaphores are configured
into the system. The output will also tell you how many lock()/signal()
operations per second it can run if you want to do your own comparisons.
* Like the SVR4 semaphores, the new Posix Named Semaphores require an
internal data structure which occupies a small amount of memory per
configured semaphore and per process. The current default build system
creates 2048 semaphores. That's more than a single production
instance of ION is likely to need by a factor of 10 (likely). A modern
multiprocessor OS would consider that extra memory negligible, but on a
constrained platform, that setting should be tuned more carefully to save
memory. The system keeps track of the maximum number of Posix Named
Semaphores ever used, but there is currently no interface to provide that
number (see routine _semPrintTable() ).
* Like the SVR4 semaphores, the new Posix Named Semaphores are global to
ALL running instances of ION on the local computer, so the max number
configured must support all local ION instances
update-4.1.3-platform-c
* Fixed isprintf() parsing bug.
update-4.1.3-psm
* Fixed problems with psm and sptrace.
update-4.1.3-runtests_scripts
* Enhancements to runtests script to quiet unnecessary output and add
progress files.
* Now also creates a file called "progress" (also with a date as file name
suffix for archiving results) that lists the test date, testing host,
testing kernel, and the results of each test without all the noisy
output. This makes it easier to check on the status of a
long-running test session that has many individual tests.
* Setting environment variable as in:
export RUNTESTS_OUTPUTDIR="/tmp"
will save the detailed output from EACH test in its own file of the form
/tmp/results.bping (using the directory in the envariable)
INSTEAD of on the screen to make it easier to find the output from a
failed test in the middle of a long run.
update-4.1.3-sdrxn
* Disable reversibility if there is no transaction modification.
* Add bpcrash to developmental Makefile.
update-4.1.3-smart-file-transfer
* Add new file transfer utilities: sendfile and recvfile with cryptographic and
metadata-based features, including file naming (with optional sequencing or
overwrite), time-to-delivery tracking, auxiliary command strings, and HMA
key-based AEAD encryption and decryption. By default, these utilities use
bpsendfile and bprecvfile commands but also provide additional parameters for
security keys (enabling encryption and decryption) and the auxiliary command
strings.
* Included Library Objects:
libmetadata and libsecrypt (an interface to MBEDTLS 2.28.x).
update-4.1.3-srr-flags
* Fixes for status report request flag parsing from bundle processing flag.
Fix for both transmit and receive side.
update-4.1.3-testset
* General updates to regression tests to improve reliability.
update-4.1.3_clang_compiler_updates
* Eliminate warnings and errors from newer versions of the Clang compiler.
update-bping-multiple-instances
* Updated bpv7 bping to correctly check for its PID in the response bundles and
ignore bundles with no pid present or a mismatched PID.
Feature-4.1.3-bpsendtest-bprecvtest
* Added two new utilities for testing connectivity and throughput between
nodes - bpsendtest and bprecvtest. They act similarly to bpsendfile and
bprecvfile, but differ in the following ways:
- bprecvtest:
* Discards all incoming data, just tracking the quantity of data received.
- bpsendtest:
* Ingests the file to memory once and allows sending the generated bundle
repeatedly without needing to reopen the file.
* Accepts a -nofile option, allowing one to specify the length of a bundle
to send in bytes; random data of that length will be generated and sent.
* These act as an improvement to the testing suite available as bpdriver/bpcounter
have performance issues with generating small bundles rapidly enough to saturate
higher bandwidth links due to generating new data for each bundle.
* They also improve upon using bpsendfile/bprecvfile as they allow for sending the
same data multiple times without needing to rerun the sending utility or reopen
the file, and do not run into storage or memory bottlenecks on the receiving
side as the received data is not being saved (this also results in easier
cleanup than when using bpsendfile/bprecvfile in a similar manner).
Feature-4.1.3-bptrace_update
* Updated bpv7 bptrace utility to (optionally) display received reports to the
terminal in a rudimentary way.
- Prior argument format is still supported, should be fully back-compatible with
old testing scripts which may have used bptrace.
- bptrace will output to the log file as before when using this legacy format,
when the reportEid is on a different node from the sender, or the reportEid
is an admin endpoint.
- Added bptrace_terminal_test (bpv7 only), which tests bptrace for compatibility
with the legacy argument format, with output to the terminal, and with log
file output when using new argument format with an admin endpoint for the
report endpoint.
feature-4.1.3-dtka-mbedtls
* Updates crypto library from PolarSSL to mbedtls. Makefile needs to be updated
include -lmbedtls -lmbedcrypto when -DCRYPTO_SOFTWARE_INSTALLED is set.
* Updates tests to handle issues with multicast.
feature-ionlauncher
* Add ionlauncher utility to simplify configuring and starting an ION node.
debug-4.1.3-bpsec-etc
* Bug fixes for bpsec subsystem (resolves all known critical issues).
1010-pingpong-ct-robustness-jun2024
* Adds robustness against timing changes, low poll rates and more iterations.
bibe-updates
* Makes the bcla structure (managed by bibeadmin) more powerful, such that you now
use it to configure all of the “bp_send” parameters for the encapsulating
bundles (BPDUs). For example, it now enables you to request bundle status
reports pertaining to the encapsulating bundles.
* Simplifies the configuration elements that cause source bundles to be
encapsulated. No need for class-of-service overrides: when you assert the
routing override that causes the bundles to be forwarded to the BIBE peer node,
you just note in that override the BIBE outduct that you want used for
transmission to that node.
integration-4.1.3-quiet-posix-semaphores
* Fixes for posix named semaphore logging to remove the amount of redundant
status information going into the ION log.
integration-4.1.3-update-bpv6-bssp-test
* Fixes the bssp and bssp-planrule tests failure.
python-test-fixes
* Bug fixes for bpsec Python test suite.
* Add configure option that changes logging level so that bpsec Python tests will
execute properly. Configure with --enable-bpsec-debugging when building ION.
Bugfix-4.1.3-ams-local-host-lookup
* Changed getAddressOfHost() to use 127.0.0.1 as the default when looking up your
own hostname fails.
* Changed 10 instances where the functionality provided by getAddressOfHost() was
re-implemented to correctly call the subroutine instead.
BugFix-4.1.3-ltp_init_config
* Removed ignored second argument to ltpadmin initialize command from configs.
bugfix-4.1.3-ltpheapmax
* Enables runtime changes to LTP heapmax.
bugfix-4.1.3-reversibilitychecks
* Address failure of reversibility checks 1 and 2 on Ubuntu. Includes some tweaks
to ionrestart and a major reorganizing of the steps in both reversibility
check 1, and 2 to clarify the configuration and the actions in each test.
Bugfix-4.1.3-sdr-transaction
* Fixes modified flag bug for nested transaction.
Bugfix-4.1.3-tests-shebang-fix
* Fix multiple tests where shebang (#!/bin/bash) is not the script's first entry.
bugfix-integration-4.1.3-status-assertion-encoding
* Added cbor_encode_boolean, cbor_decode_boolean functions to the cbor files.
* Updated serializeStatusRpt, parseStatusRpt functions to correctly utilize
these boolean constants.
%%%%%%%%%%%%%%%%%%%%%%%%%%
= NOTES ON RELEASE 4.1.2 =
%%%%%%%%%%%%%%%%%%%%%%%%%%
Branches included in this release:
118-provide-initial-rfc9172-rfc9173-support
* added support for BPSec (RFC 9172) and default security contexts (RFC 9173)
125-update-ion-4-1-1-amp-implementation-with-current-enhancements-and-bugfixes
* added network management updates
apl-4.1.2-updates
* The implementation of BPSec in ION Open Source (IOS) 4.1.2 is not
feature-complete and is considered to be a “beta” version of BPSec.
This early release of the code allows users to begin to integrate BPSec into
their projects, as core functionality is implemented, as well as encourages
early testing and feedback for the major BPSec release in IOS 4.2.
A feature-complete implementation of BPSec (RFC 9172) will be provided in the
ION Open Source 4.2 release. Additional information is provided in the file:
IOS_4.1.2_BPSEC_Release_Notes.pdf
Bugfix-4.1.2-nm_manager-database-connection-issue
* added fixed nm/contrib/amp-sql-1.0.1.tar.gz
bugfix-4.1.2-tcpbso
* fixed tcpbso parsing of 0.0.0.0
* added tcpbso connection memo
bugfix-4.1.2-bssp-max-block
* fixed max-block transaction crash
bugfix-4.1.2-crc-parsing
* fixed issue with parsing CBOR encoded CRCs
bugfix-4.1.2-ltp
* updated default maxber for ltp
* fixed ionwm memory leak
* added status message for CLOSED_EXPORTS_ENABLED
bugfix-4.1.2-custodyRefusedCountBytes
* fix for Source Forge bug report #162
bugfix-4.1.2-cp-duplicate-reddata
* fixed CP handling with duplicate data
* fixed out-of-order red part reception
dso-bprecvfile-integration-4.1.2
* new bprecvfile2 application that adds filename and pipe capabilities
Makefile-cleanup-integration-4.1.2
* added remove for .so files for developmental Makefiles
* added uninstall target for developmental Makefiles
update-4.1.2-bssp-wchar
* updated bssp watch characters
update-4.1.2-shared-mem
* fix various shared memory issues with detaching from and resetting the
ION database
update-4.1.2-tcpcl-tests
* fix various issues in TCP related tests
update-4.1.2-makefile
* updated developmental Makefiles to accept commandline flags
update-4.1.2-psmwatch
* resolved assertion failures issued during psmwatch
* fixed inconsistent alteration of the map -> status value
update-4.1.2-developmental-makefiles
* updated fedora developmental Makefiles to build a single libbp to match
what the autoconf system does. This allows for "mixed-mode" builds on
generic Linux platforms where ION is originally built using autoconf and
then individual modules are rebuilt using the developmental Makefiles.
update-ams-documentation-4.1.2
* fixed errors in AMS documentation
upgrade-4.1.2-ams-sana-numbers
* lowered the AMS cell census period from 90 seconds to 9 seconds
* replaced hard coded cell census values with appropriate preprocessor
directives
* increased the maximum allowed AMS Continuum number from 20 to 32767
Added new TCPCL_LOW_CYCLE macro and configure option (--enable-tcpcl-low-cycle)
* This option reduces the TCP connection timeout from several minutes down to
a few seconds and lowers the frequency of repeated connection attempts with
TCPCL peer nodes that are not responding to handshaking messages.
This is an experimental feature only available on Ubuntu as of ION 4.1.2.
To verify the SHA256 hash provided with the release, please
contact Jay Gao at [email protected]
If you have any issues, please submit a SourceForge ticket here:
https://sourceforge.net/p/ion-dtn/bugs/new/
%%%%%%%%%%%%%%%%%%%%%%%%%%
= 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 accommodation 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 additional
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. Previously 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 infrastructural 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.