Releases: LibreQoE/LibreQoS
v1.5-rc-3
LibreQoS 1.5-RC3
We're excited to share LibreQoS 1.5-RC3. This build focuses on smoother circuit changes, richer SQM control, better observability, and a pile of stability fixes to keep nodes happy in the field.
Since winning "Product of the Year" at Wispapalooza, we've had quite the influx of users - so we've been busy tracking down corner cases and issues people run into. We've also been hard at work making Insight even better - we're especially excited by the new AI-powered support ticket helper system (which will get even better next week!).
The next RC will feature a greatly improved LibreQoS API (integrated into Insight), and some more UI improvements.
- Bakery v3 and circuit changes
- New binpacking and sorting reduce reload churn and avoid unnecessary HTB tree changes.
- Dynamic circuit updates keep IP mappings around, so reloads are lighter and faster.
- Transactional speed changes (temporary circuit → swap → cleanup) keep shaping active and minimize packet loss during edits.
- Hierarchical binpacking bugs fixed; flat-network edge cases handled; planner fairness scoring refined and exposed in the affinity view.
- Guardrails: 0 Mbps entries now fall back to defaults; ignore obviously defaulted circuits; sentinel 1000 weight override is handled explicitly.
- SQM and queueing
ShapedDevices.csvcan set SQM per direction (cake/fq_codel/none) and defaults remain unchanged when you omit it.- Optional config bumps very fast circuits to fq_codel automatically; SQM mode
noneis available when you truly want it off. - Fq_codel statistics are now tracked and displayed in the web UI; the node manager editor can override the SQM column directly.
- UI and observability
- Top Uploaders view highlights heavy senders.
- CPU affinity viewer shows how workloads pin across cores.
- Live sankey now renders two layers for clearer traffic flow.
- Urgent issues channel surfaces emergency alerts from external systems on the node manager display.
- UI tabs refresh, shaped devices editor now saves correctly, and websocket connections verify http/https prefixes to avoid silent failures.
- Login editor keeps existing passwords when the field is left blank; default config keeps
always_overwrite_network_jsontrue for predictable reloads.
- Performance and reliability
- Faster IPv4 handling and no double flow lookups on ICMP/UDP traffic.
- Heimdall memory leak fixed; 2-way flow submission no longer grows without bound.
- HTB bakery order tightened; control-channel timeouts and device-weight calls relaxed to cope with slower nodes; flat-network binpacking and hierarchy issues corrected.
- Build and tooling hardening: Ubuntu 25.10 Clang build fix, mold linker removed due to instability, build scripts tolerate missing services, and MQ setup ordering corrected.
- Integrations, tests, and docs
- UISP integration retains raw JSON for easier troubleshooting.
- Expanded integration tests cover generated PNs, IP mapping, speed overrides, and cake RTT overrides to prevent regressions.
- Quickstarts, configuration, troubleshooting, and design docs refreshed; copyright year now updates automatically.
Many thanks to NLNet for funding the transactional circuits system.
v1.5-rc-2
LibreQoS v1.5-RC-2
Update From Prior Version: https://libreqos.readthedocs.io/en/latest/docs/v2.0/update.html
Installation Guide For New Installs: https://libreqos.readthedocs.io/en/latest/
Top Features
- Insight now support some Live view features, specifically on its dashboard and subscriber pages
- Libby AI Assistant Tool Added
- API added
- Netzur Integration Added
- Setup tool translated to Spanish
- Speed Gauge Redesign for Circuit Page
- Added Clear Unknown IPs button
- Implement
promote_to_rootfor the UISP integration (#789) - Add Multiple Topology Strategies for Splynx Integration (#786)
Other changes
- (#794) Added IP-aware search
- (#761) Splynx prepareTree() now uses cached lookups and O(n) algorithms so large ISPs no longer hit timeouts.
- (#768) Updated the dashboard banner messaging to reflect the current Insight guidance.
- (#770) Imposed a hard cap on the legacy LTS1 queue to prevent runaway growth while it’s being phased out.
- (#771) Binpacking now derives weights from Insight telemetry instead of the legacy LTS1 feed, improving scheduler accuracy.
- (#773,#774,#777) Reworked the Splynx integration—rolled back the first attempt, then shipped a stabilized pass with smarter parent selection, circuit aggregation, and multi-IP support.
- (#775,#784) Adjusted UISP IP ingestion: initial ipAddressList support was removed in favor of cleaner device/interface sources to avoid duplicate assignments.
- (#778) Refreshed Quickstart and update docs to point at the latest 1.5 RC Debian package.
- (#779) Preserved legitimate UISP subnet CIDRs instead of collapsing them to /32 hosts, fixing subnet shaping.
- (#781) Added optional PTP link “squashing” so pure point-to-point site chains can collapse to direct edges via simple config toggles.
- (#783) Fixed the Tree Nodes at Capacity widget links so they open tree.html instead of a 404.
- (#808) Unified the Splynx pipeline so dynamic-IP subscribers populate ShapedDevices.csv across every strategy with better logging and parent assignment.
- (#809) Added a Spanish translation of the lqos_setup README.
- (#820) Deduplicated UISP shaped device output across strategies to stop double-writing CSV entries while keeping deterministic ordering.
- (#822) Bundled the lqos_api binary into the package, added a systemd service template, and queued chatbot control traffic until the API connection is permitted.
- (#823) Tidied core services—clippy-driven refactors, parking_lot locks, safer error handling, and lqos_setup now backs up any existing /etc/lqos.conf before overwrite.
- (#824) Introduced Libby, the LibreQoS AI assistant, wiring the Insight chatbot into the UI with refreshed templates and live data channels.
- (#825) Purged outdated legacy documentation and old v1.3 artifacts to streamline the docs tree.
- (#826) Retired the support tool now that Insight supersedes long-term stats, and cleaned its help page.
- (#783) Fix Links For Tree Nodes At Capacity Widget
- (#782) Fix StormGuard startup issues and WebUI blocking
v1.5-rc-1
v1.5-beta-10
LibreQoS V1.5-BETA-10
v1.5-beta-10
What's Changed
- FIXES #635 by @thebracket in #636
- Update LibreQoS.py by @rchac in #641
- Correctly handle HTB minimums by @rchac in #643
- Remove TCP overhead from LibreQoS.py by @rchac in #647
- Set bandwidth minimums to 1M for CRM/NMS integrations by @rchac in #640
- Insightful UI #648
- Update to Rust 2024 Edition by @thebracket in #649
- Improvements to login form and search by @thebracket in #650
- Fix: explicitly don't try to check remote stats permission if "gather… by @thebracket in #652
- Make Linux Bridge the default for new installations by @rchac in #654
v1.5-beta-8
LibreQoS V1.5-BETA-8
Download: https://libreqos.io/download
v1.5-beta-8
- UISP Integration fixes
- Fixed Python dependency issue for Ubuntu Server 24.04
v1.5-beta-7
- Splynx Integration Overhaul
- Topology mapping
- Splynx Hardware (Monitoring) is now used to allow for network topology mapping.
- Matching
- Clients with an access_device associated in Splynx will have the corresponding Network Site/Device for access_device set as its Parent Node
- Clients without an access_device associated in Splynx have rate limits and IPs defined, but will have no Parent Node defined
- Display % of services matched
- Topology mapping
- Fixed build_rust and build_dpkg handling of binaries
- Improved default dashboard arrangement
- Fixed Python requirements bugs in Ubuntu Server 24.04
- UISP Integration: Fixed Python requirement bug which had broken integration in Ubuntu Server 24.04
- UISP Integration: Fix MikroTik IPv6 Matching
- Air-gapped management
- Shaper Tree View includes an "up one level" link
v1.5-beta-6
- Add various template files to .deb that were missing
- Fixed version_string issue affecting v1.5-beta-5
- Fixed comments in default ShapedDevices.csv when using .deb
- Fix permissions for /opt/libreqos when using .deb
v1.5-beta-5
- Increased System limits
- Fixed ABI segfault on some Linux systems - reduced ABI footprint by 5x
- Reduced tc batch update size by eliminating comments
- Tuned graph performance further
- Fixed support for fq_codel and other sqms
v1.5-beta-7
LibreQoS V1.5-BETA-7
Download: https://libreqos.io/download
v1.5-beta-7
- Splynx Integration Overhaul
- Topology mapping
- Splynx Hardware (Monitoring) is now used to allow for network topology mapping.
- Matching
- Clients with an access_device associated in Splynx will have the corresponding Network Site/Device for access_device set as its Parent Node
- Clients without an access_device associated in Splynx have rate limits and IPs defined, but will have no Parent Node defined
- Display % of services matched
- Topology mapping
- Fixed build_rust and build_dpkg handling of binaries
- Improved default dashboard arrangement
- Fixed Python requirements bugs in Ubuntu Server 24.04
- UISP Integration: Fixed Python requirement bug which had broken integration in Ubuntu Server 24.04
- UISP Integration: Fix MikroTik IPv6 Matching
- Air-gapped management
- Shaper Tree View includes an "up one level" link
v1.5-beta-6
- Add various template files to .deb that were missing
- Fixed version_string issue affecting v1.5-beta-5
- Fixed comments in default ShapedDevices.csv when using .deb
- Fix permissions for /opt/libreqos when using .deb
v1.5-beta-5
- Increased System limits
- Fixed ABI segfault on some Linux systems - reduced ABI footprint by 5x
- Reduced tc batch update size by eliminating comments
- Tuned graph performance further
- Fixed support for fq_codel and other sqms
Download: https://libreqos.io/download
v1.5-beta-5
LibreQoS V1.5-BETA-5
Download: https://libreqos.io/download
1.5-BETA-5 Changes
Increased System limits
Fixed ABI segfault on some Linux systems - reduced ABI footprint by 5x
Reduced tc batch update size by eliminating comments
Tuned graph performance further
Fixed support for fq_codel and other sqms
Download: https://libreqos.io/download
v1.5-beta-4
LibreQoS V1.5-BETA-4
Download: https://libreqos.io/download
1.5-BETA-4 Changes
- MASSIVE reduction in memory usage, and no more explosive RAM growth over time.
- Significant reduction in CPU usage for the UI and analysis threads.
- Documentation improvements.
- Netflow:
- Timestamps were invalid, causing UISP to reject the input.
- Move to a lock-free collection system, eliminating delays and lowering CPU usage.
- Fixed automatic provisioning of Long-Term Stats subscribers.
- User Interface:
- “Top X” tables in the UI are now buffered for smoother output.
- Improvements to graph consistency in UI.
- Network panel on customers now buffers and fades entries out, so it’s possible to read rather than continually jumping.
- TCP Retransmits are now displayed as a percentage of TCP packets, giving a much better relative scale of where issues are occurring.
- Up/Down is now labeled on packet counts.
- Improved output scaling on numbers trims “.0”
- IPv6 prefix detection is much better and won’t cause UI errors.
- Configuration editor now handles floats vs ints correctly.
- Fixed a login error if no authentication cookie is set.
- Improved Sankey redaction.
- Fixed an occasional error that would make the “sponsor us” toast appear incorrectly.
- Sankey coloration fixes.
- Geo.bin file now won’t self-update very often (it tracks ASN data), and only if it has changed on the server-side.
- LTS2: If you’re invited to help us test it, we’re starting early alpha testing. This version includes the client to make that possible. LTS1 will continue to function/gather data.
Download: https://libreqos.io/download
v1.5-beta-3
LibreQoS V1.5-BETA-3
Download: https://libreqos.io/#download
Changelog Since 1.5-beta-2
- Fix “unknown” flags in the UI.
- Fix “download/download” on the tree.
- Fix “break system packages” flag on Debian installer, removing the “Python requirements.txt not installed” problems on older versions of Ubuntu.
- Fix a typo that prevent Spylnx integrations from working automatically in the scheduler.
- The title of your shaper node appears properly in your browser title bar now.
- The webserver no longer freezes.
- “Generated Site” no longer fills up the Sankeys.
- The main tree Sankey uses a ring buffer to smooth rendering (this is coming to other elements in the next beta).
- Nicer Sankey ribbon colors, especially in dark mode.
- Improved margins around several graphs to make the axis labels visible.
- The tick thread is now very careful to never overrun its desired time period; time-based spikes on usage (which spread to Long-Term Stats) are a thing of the past.
- You can add
disable_webserver = falseto your/etc/lqos.confif you don’t want to have a web GUI at all. - Filtered out “one way” flows from the ASN explorer (these are usually bot scans, and will be tracked separately in the next beta).
- Internal code:
- Fix MANY warnings.
- MANY diagnostic messages moved to “debug” level so they aren’t visible by default.
- Transition from “log” to “tracing” for log handling. Improves performance, and is the new de-facto standard in Rust.
- Reduced dependency on DashMap.
- Replace channels with Crossbeam for greater performance and improved efficiency.
- All threads are now named, you can watch them individually in htop!
- Updated several dependency versions.
- Memory usage:
- eBPF now has periodic garbage collection checks, expiring ancient history from the hosts list.
- Configuration management is now much more memory-efficient.
- Queue structure is stored more efficiently.
- Shaped devices is stored more efficiently.
- Switch to the
mimallocallocator for reduced total memory usage. - Flow tracking is significantly more efficient.
- All channels are now bounded.
- The webserver is now contained to a single thread.
- Network.json handling is significantly more efficient.
- MANY hot-loop allocations have been moved out of the hot loop and into a pre-made buffer.
- Reduced size of preallocated buffers; it can grow if needed.
Download: https://libreqos.io/#download
Changelog Since 1.5-beta-1
New User Interface (UI2)
- UI2 is a complete overhaul of the LibreQoS Web UI - featuring a customizable dasboard with widgets displaying various network performance metric including TCP RTT and TCP Retransmits.
- Quick LibreQoS v1.5-BETA-2 deep dive with Herbert Wolverson
Changelog Since 1.4
LibreQoS v1.5 Features Overview:
- 30%+ Performance Improvement. Large improvements in code efficiency. LibreQoS can now push 70 Gbit/s on a $1500 AMD Ryzen 9 7950X box with a Mellanox MCX516A card.
- Intelligent Binpacking. Dynamically redistribute load (based on long-term statistics) to get the most out of all of your CPU cores.
- Flow-Based Analysis. Flows are tracked individually, for TCP retransmits, round-trip time, and performance. Completed flows can be analyzed by ASN, geolocated, or exported via Netflow.
- Unified Configuration System and GUI. No more separate
ispConfig.pyandlqos.conffiles - all configuration is managed in one place. The web user interface now lets you manage the whole configuration, including devices and network lists. - Support for Newer Linux Enhancements. LibreQoS can take advantage of eBPF improvements in the 6.x kernel tree to further improve your performance - but remains compatible with later 5.x kernels.
- Improved CLI tools.
lqtop, a new support tool and more.
Unified Configuration System
- Replace
ispConfig.pywith a singular/etc/lqos.conf - Automatically migrate previous configuration
- In-memory cache system (load the config once and share it, detect changes)
- Shared configuration between Python and Rust
Dynamic Binpacking
- It was a common problem for the CPU-queue assignment (in tree mode) to allocate too many resources
to a single CPU. - Each circuit is assigned a "weight". If you have Long-Term Stats, then the weight is calculated based on
past usage AND assigned speed plan. Without LTS, it's just assigned speed plan. - The total weight - at this time of day - is then calculated for each top-level entry.
- A "binpacking" algorithm then attempts to equalize load between CPUs.
- Significant performance improvement on many networks.
Per-Flow Tracking System
- "Flows" are detected as TCP connections, UDP connections that reuse a source/destination and ICMP between a source/destination.
- Rather than just track per-host statistics, statistics are attached to a flow.
- Flows maintain a rate estimation at all times, in-kernel.
- Flows calculate Round-Trip Time (RTT) continuously.
- Flows spot timestamp duplications indicating TCP Retry (or duplicate).
- Much of the kernel code moved from the TC part of eBPF to the XDP part, giving a modest speed-up and improvement in
overall throughput.
Per-Flow Userland/Kernel Kernel-Userland System
- Rather than reporting RTT via a giant data structure, individual reports are fed to the kernel through a userspace callback
system. - Flows "closing" (clean closure) results in a kernel-userspace notify.
- Flows also expire on a periodic tick if no data has arrived in a given time period.
- This decreased kernel side overhead significantly (eBPF kernel to userspace is non-blocking send).
- This increased userspace CPU usage very slightly, but removed the processing overhead from the packet-flow execution path.
Per-Flow Reporting System
- RTT is compiled per-flow into a ringbuffer. Results from very-low (mostly idle) flows are ignored. RTT is calculated from a median of the last
hundred reports. Significant accuracy improvement. - Per-flow TCP retries are recorded.
- When flows "close", they are submitted for additional analysis.
- Simple protocol naming system maps ethertype/port to known protocols.
Export Flow Data in netflow version 5 and 9 (IPFIX)
Closed Flow Reporting System
- Created "geo.bin", a compiled list of by-ASN and by IP geolocations.
lqosdwill download a refreshedgeo.binperiodically.- Closed flows are mapped to an ASN, giving per-ASN performance reports.
- Closed flows are mapped to a geolocation, giving geographic performance reports.
- Closed flows are mapped to ethertype and protocol.
- User interface expanded in
lqos_node_managerto display all of this.
Preflight checks for lqosd
- Prior to startup, common configuration and hardware support issues are checked.
- Single-queue NICs now get a proper error message.
- If the user tries to run both a Linux bridge and an XDP bridge on the same interface pair,
the XDP bridge is disabled and a warning emitted.
XDP "Hot Cache"
- Much CPU time was spent running a longest-prefix match check on every ISP-facing IP address.
- Added a least-recently-used cache that matches IP adddresses to circuits with a much less
expensive fast lookup. - Added a "negative cache" entry to speed up "this IP still isn't mapped"
- Added cache invalidation code to handle the IP mappings changing
- This resulted in a 20-30% CPU usage reduction under heavy load.
Config UI
lqos_node_manageris now aware of the entire configuration system.- All configuration items may be edited.
ShapedDevices.csvcan be edited from the web UI.network.jsoncan be edited from the web UI.- Heavy validation, ensuring that devices have matching network.json entries, IPs aren't duplicated, etc.
LQTop
- New
lqtopCLI tool with much prettier text UI and support for flows.
UISP Integration 2
- An all-new, massively faster UISP Integration system.
- Includes much better network map traversal.
Support Tools
- CLI tool for running a "sanity check" on common issues.
- Gather configuration into a bundle for sending.
- View the bundle.
- Submit the bundle to LibreQoS for analysis.
- A web UI (
lqos_node_manager) version of the same thing, using shared code.
Misc
- Improvements and fixes to all integrations, especially Spylnx.
- Update back-end code to latest versions.
v1.5-beta-2
LibreQoS V1.5-BETA-2
Download: https://libreqos.io/#download
Changelog Since 1.5-beta-1
New User Interface (UI2)
- UI2 is a complete overhaul of the LibreQoS Web UI - featuring a customizable dasboard with widgets displaying various network performance metric including TCP RTT and TCP Retransmits.
- Quick LibreQoS v1.5-BETA-2 deep dive with Herbert Wolverson
Changelog Since 1.4
LibreQoS v1.5 Features Overview:
- 30%+ Performance Improvement. Large improvements in code efficiency. LibreQoS can now push 70 Gbit/s on a $1500 AMD Ryzen 9 7950X box with a Mellanox MCX516A card.
- Intelligent Binpacking. Dynamically redistribute load (based on long-term statistics) to get the most out of all of your CPU cores.
- Flow-Based Analysis. Flows are tracked individually, for TCP retransmits, round-trip time, and performance. Completed flows can be analyzed by ASN, geolocated, or exported via Netflow.
- Unified Configuration System and GUI. No more separate
ispConfig.pyandlqos.conffiles - all configuration is managed in one place. The web user interface now lets you manage the whole configuration, including devices and network lists. - Support for Newer Linux Enhancements. LibreQoS can take advantage of eBPF improvements in the 6.x kernel tree to further improve your performance - but remains compatible with later 5.x kernels.
- Improved CLI tools.
lqtop, a new support tool and more.
Unified Configuration System
- Replace
ispConfig.pywith a singular/etc/lqos.conf - Automatically migrate previous configuration
- In-memory cache system (load the config once and share it, detect changes)
- Shared configuration between Python and Rust
Dynamic Binpacking
- It was a common problem for the CPU-queue assignment (in tree mode) to allocate too many resources
to a single CPU. - Each circuit is assigned a "weight". If you have Long-Term Stats, then the weight is calculated based on
past usage AND assigned speed plan. Without LTS, it's just assigned speed plan. - The total weight - at this time of day - is then calculated for each top-level entry.
- A "binpacking" algorithm then attempts to equalize load between CPUs.
- Significant performance improvement on many networks.
Per-Flow Tracking System
- "Flows" are detected as TCP connections, UDP connections that reuse a source/destination and ICMP between a source/destination.
- Rather than just track per-host statistics, statistics are attached to a flow.
- Flows maintain a rate estimation at all times, in-kernel.
- Flows calculate Round-Trip Time (RTT) continuously.
- Flows spot timestamp duplications indicating TCP Retry (or duplicate).
- Much of the kernel code moved from the TC part of eBPF to the XDP part, giving a modest speed-up and improvement in
overall throughput.
Per-Flow Userland/Kernel Kernel-Userland System
- Rather than reporting RTT via a giant data structure, individual reports are fed to the kernel through a userspace callback
system. - Flows "closing" (clean closure) results in a kernel-userspace notify.
- Flows also expire on a periodic tick if no data has arrived in a given time period.
- This decreased kernel side overhead significantly (eBPF kernel to userspace is non-blocking send).
- This increased userspace CPU usage very slightly, but removed the processing overhead from the packet-flow execution path.
Per-Flow Reporting System
- RTT is compiled per-flow into a ringbuffer. Results from very-low (mostly idle) flows are ignored. RTT is calculated from a median of the last
hundred reports. Significant accuracy improvement. - Per-flow TCP retries are recorded.
- When flows "close", they are submitted for additional analysis.
- Simple protocol naming system maps ethertype/port to known protocols.
Export Flow Data in netflow version 5 and 9 (IPFIX)
Closed Flow Reporting System
- Created "geo.bin", a compiled list of by-ASN and by IP geolocations.
lqosdwill download a refreshedgeo.binperiodically.- Closed flows are mapped to an ASN, giving per-ASN performance reports.
- Closed flows are mapped to a geolocation, giving geographic performance reports.
- Closed flows are mapped to ethertype and protocol.
- User interface expanded in
lqos_node_managerto display all of this.
Preflight checks for lqosd
- Prior to startup, common configuration and hardware support issues are checked.
- Single-queue NICs now get a proper error message.
- If the user tries to run both a Linux bridge and an XDP bridge on the same interface pair,
the XDP bridge is disabled and a warning emitted.
XDP "Hot Cache"
- Much CPU time was spent running a longest-prefix match check on every ISP-facing IP address.
- Added a least-recently-used cache that matches IP adddresses to circuits with a much less
expensive fast lookup. - Added a "negative cache" entry to speed up "this IP still isn't mapped"
- Added cache invalidation code to handle the IP mappings changing
- This resulted in a 20-30% CPU usage reduction under heavy load.
Config UI
lqos_node_manageris now aware of the entire configuration system.- All configuration items may be edited.
ShapedDevices.csvcan be edited from the web UI.network.jsoncan be edited from the web UI.- Heavy validation, ensuring that devices have matching network.json entries, IPs aren't duplicated, etc.
LQTop
- New
lqtopCLI tool with much prettier text UI and support for flows.
UISP Integration 2
- An all-new, massively faster UISP Integration system.
- Includes much better network map traversal.
Support Tools
- CLI tool for running a "sanity check" on common issues.
- Gather configuration into a bundle for sending.
- View the bundle.
- Submit the bundle to LibreQoS for analysis.
- A web UI (
lqos_node_manager) version of the same thing, using shared code.
Misc
- Improvements and fixes to all integrations, especially Spylnx.
- Update back-end code to latest versions.