Skip to content

RNS 1.5.1

Latest

Choose a tag to compare

@markqvist markqvist released this 28 Aug 14:09

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 BackboneInterface backend
  • 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 Profiler primitive, by K8
  • Added the @RNS.Profiler.profile decorator, 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 Resource transfers failing when initialized from stream-based data sources that fell outside MAX_EFFICIENT_SIZE
  • Fixed an invalid prefix stripping bug in the rngit page server (.something files not viewable)
  • Fixed RSSI/SNR reporting regression
  • Fixed keepalive handling on non-epoll backends
  • Fixed a bug in rngit page navigation content initialization order
  • Fixed the rngit page node not being able to serve in-tree downloads for large files
  • Fixed rnstatus blocked IP listing including IPs that were actually not yet blocked
  • Fixed rnstatus traffic 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