Skip to content

Releases: LibreQoE/LibreQoS

v1.5-rc-3

23 Dec 15:27
6dc6c29

Choose a tag to compare

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.csv can 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 none is 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_json true 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

05 Oct 23:20
21e551a

Choose a tag to compare

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_root for 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

21 Aug 12:34
586c333

Choose a tag to compare

v1.5-beta-10

10 Mar 22:25

Choose a tag to compare

v1.5-beta-10 Pre-release
Pre-release

LibreQoS V1.5-BETA-10

Download here.

v1.5-beta-10

What's Changed

v1.5-beta-8

15 Jan 18:51
3f91572

Choose a tag to compare

v1.5-beta-8 Pre-release
Pre-release

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
  • 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

22 Dec 02:47
02eb5ed

Choose a tag to compare

v1.5-beta-7 Pre-release
Pre-release

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
  • 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

18 Dec 01:14
9a79bff

Choose a tag to compare

v1.5-beta-5 Pre-release
Pre-release

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

11 Dec 16:04

Choose a tag to compare

v1.5-beta-4 Pre-release
Pre-release

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

02 Nov 15:32
11c8a25

Choose a tag to compare

v1.5-beta-3 Pre-release
Pre-release

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 = false to your /etc/lqos.conf if 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 mimalloc allocator 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)

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.py and lqos.conf files - 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.py with 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.
  • lqosd will download a refreshed geo.bin periodically.
  • 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_manager to 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_manager is now aware of the entire configuration system.
  • All configuration items may be edited.
  • ShapedDevices.csv can be edited from the web UI.
  • network.json can be edited from the web UI.
  • Heavy validation, ensuring that devices have matching network.json entries, IPs aren't duplicated, etc.

LQTop

  • New lqtop CLI 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

01 Aug 17:12

Choose a tag to compare

v1.5-beta-2 Pre-release
Pre-release

LibreQoS V1.5-BETA-2

Download: https://libreqos.io/#download

Changelog Since 1.5-beta-1

New User Interface (UI2)

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.py and lqos.conf files - 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.py with 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.
  • lqosd will download a refreshed geo.bin periodically.
  • 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_manager to 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_manager is now aware of the entire configuration system.
  • All configuration items may be edited.
  • ShapedDevices.csv can be edited from the web UI.
  • network.json can be edited from the web UI.
  • Heavy validation, ensuring that devices have matching network.json entries, IPs aren't duplicated, etc.

LQTop

  • New lqtop CLI 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.