This release focuses on dataplane control, memory bounding and transport throughput, with adaptive ingress and egress control for interfaces, a new (and very efficient) zero-copy coalescing transmit buffer, an optimized HDLC deframer, and a range of other improvements to the inbound packet processing paths. It also introduces support for live profiling, and various new diagnostics output in rnstatus, along with a number of bug fixes and general improvements.
Changes
- Added adaptive dataplane egress control
- Added adaptive dataplane ingress control
- Added zero-copy coalescing transmit buffers to interfaces using the
BackboneInterfacebackend - Added early protocol violation checks for invalid frames
- Added transport implementation name and version to discovery information requirements
- Added full live profiling to the built-in
Profilerprimitive, by K8 - Added the
@RNS.Profiler.profiledecorator, by K8 - Added support for indefinitely running, reentrant profilers with bounded capture, by K8
- Added live profiling results output to
rnstatus, by K8 - Added PPS statistics to
rnstatus - Added interface MTU display to
rnstatus - Added interface TX drop statistics to
rnstatus - Added interface TX buffer size output to
rnstatus - Added throughput benchmarker to the test suite
- Added support for natively compiled module builds, and the ability to load compiled modules when available
- Added module compilation status reporting from in-wheel build information
- Added parity tests for HDLC, IFAC and HKDF against the legacy implementations
- Added shared medium hints to interfaces
- Improved memory and CPU consumption under high traffic loads
- Improved traffic class handling
- Optimized HKDF to ~5.7x performance, if this worries you, good; then see the full parity and standard vector test suite and read the code
- Optimized inbound and outbound IFAC handling to ~90x performance on large frames
- Optimized inbound packet processing by reducing lock acquisitions and path table contention
- Optimized lookups for pending and active links using hash maps for lookup operations
- Optimized announce validation by caching signature validation results, significantly lowering announce storm CPU load
- Optimized the HDLC deframer
- Reduced redundant packet hashing in inbound processing
- Tuned default inbound queue lengths and announce queuing
- Tuned automatic interface MTU configuration
- Fixed
Resourcetransfers failing when initialized from stream-based data sources that fell outsideMAX_EFFICIENT_SIZE - Fixed an invalid prefix stripping bug in the
rngitpage server (.somethingfiles not viewable) - Fixed RSSI/SNR reporting regression
- Fixed keepalive handling on non-epoll backends
- Fixed a bug in
rngitpage navigation content initialization order - Fixed the
rngitpage node not being able to serve in-tree downloads for large files - Fixed
rnstatusblocked IP listing including IPs that were actually not yet blocked - Fixed
rnstatustraffic totals counting the local shared instance inter-app transit in totals - Fixed various minor bugs in
rnsh,rnir, identity handling - Fixed a latent bug in the AES module, where an exception would not resolve it's exception description correctly, and instead raise another exception.
- Removed dead Python 2 code from
umsgpack