4.2 KiB
Operating Modes and Source of Truth
Page Purpose
Use this page to decide where permanent shaping changes should live before you go to production.
Need definitions for terms on this page? See the Glossary.
For the full file/ownership/runtime diagram, see Topology Data Flow. For static virtualization and queue-visibility behavior, see Advanced Configuration Reference.
flowchart TD
A[Choose Where Changes Live] --> B{Using built-in CRM/NMS integration?}
B -->|Yes| C[Built-in Integrations Mode]
B -->|No| D{Generating files from your own scripts/systems?}
D -->|Yes| E[Custom Source of Truth Mode]
D -->|No| F[Manual Files Mode]
C --> G[Integration sync keeps shaping data current]
E --> H[Your scripts refresh the shaping files]
F --> I[You maintain the files directly]
LibreQoS supports three common operating modes.
Built-in Integrations (Recommended for Most Operators)
In this mode, your CRM/NMS is where permanent subscriber and topology changes belong, and LibreQoS keeps itself in sync from that system.
Key behavior:
- Integration sync refreshes the topology and shaping data LibreQoS uses.
- Built-in integrations do not use
network.jsonas their normal working file. - Direct file edits may be overwritten on the next scheduler refresh.
flatmode intentionally simplifies the tree when you want lower overhead.- Built-in integrations can keep a fuller logical topology for Topology Manager while publishing a separate queue-visible runtime tree for
network.effective.json,shaping_inputs.json,tree.html, and HTB. - Large integration roots and aggregation-only sites can be auto-virtualized automatically, so the queue-visible tree does not waste HTB depth or impose artificial aggregate bottlenecks while the nodes still remain visible for monitoring.
Custom Source of Truth
In this mode, your own scripts or systems generate network.json and ShapedDevices.csv.
Key behavior:
- Your external workflow is where permanent changes belong.
- WebUI edits are fine for quick operational changes.
- Keep your long-term changes in your own scripts or automation.
- Use
topology.compile_mode = "full"when theParent Nodevalues inShapedDevices.csvshould shape under the named hierarchy innetwork.json. - Use
flatonly when generated CPU bucket queues such asGenerated_PN_1are the intended queue layout.
Manual Files Mode
In this mode, you maintain network.json and ShapedDevices.csv yourself.
Key behavior:
- Best fit for small networks, short pilots, or temporary workarounds.
- WebUI helps you validate what LibreQoS is using.
- Manual discipline matters because there is no upstream system keeping those files in sync for you.
- Use
topology.compile_mode = "full"when top-level or AP/Site parent shaping should follownetwork.json. - If
shaping_inputs.jsonshowsresolution_source: "flat_bucket", LibreQoS is in flat mode and circuits will show generated parent queues instead of the names fromnetwork.json.
Mode Declaration Checklist (Before Go-Live)
- Pick one primary place for permanent shaping changes.
- Confirm which system writes production shaping data.
- Confirm scheduler refresh behavior and overwrite cadence.
- Document your hotfix workflow (WebUI, external editor, or both).
- Do not maintain competing edits in multiple systems for the same objects.
Topology and Mode Expectations
- Single-interface (on-a-stick) and VLAN-heavy designs are valid, but require explicit queue/interface planning and careful validation after changes.
- Integration mode is best when you want CRM/NMS-driven topology and subscriber lifecycle data to control shaping.
- If you need topology behavior that your integration cannot represent, use custom source of truth mode and keep the responsibility clear.
See:
If you are running built-in integrations, continue to CRM/NMS Integrations.