Files
LibreQoS/_build/html/docs/v2.0/integrations-uisp.html
T
2026-02-25 19:40:43 -07:00

376 lines
27 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>UISP Integration &mdash; LibreQoE documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css" />
<script src="../../_static/jquery.js"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../index.html" class="icon icon-home">
LibreQoE
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Getting Started</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart (Start Here)</a></li>
<li class="toctree-l1"><a class="reference internal" href="design.html">Deployment Scenarios</a></li>
<li class="toctree-l1"><a class="reference internal" href="requirements.html">System Requirements</a></li>
<li class="toctree-l1"><a class="reference internal" href="prereq.html">Prerequisites</a></li>
<li class="toctree-l1"><a class="reference internal" href="ubuntu-server.html">Install Ubuntu Server</a></li>
<li class="toctree-l1"><a class="reference internal" href="bridge.html">Configure Shaping Bridge</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Managing LibreQoS (v1.5 to v2.0):</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configure LibreQoS</a></li>
<li class="toctree-l1"><a class="reference internal" href="operating-modes.html">Operating Modes and Source of Truth</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration-advanced.html">Advanced Configuration Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="integrations.html">CRM/NMS Integrations</a></li>
<li class="toctree-l1"><a class="reference internal" href="components.html">LibreQoS Software Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="node-manager-ui.html">LibreQoS WebUI (Node Manager)</a></li>
<li class="toctree-l1"><a class="reference internal" href="scale-topology.html">Scale Planning and Topology Design</a></li>
<li class="toctree-l1"><a class="reference internal" href="stormguard.html">StormGuard</a></li>
<li class="toctree-l1"><a class="reference internal" href="high-availability.html">High Availability and Failure Domains</a></li>
<li class="toctree-l1"><a class="reference internal" href="update.html">Upgrading</a></li>
<li class="toctree-l1"><a class="reference internal" href="troubleshooting.html">Troubleshooting</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Insight</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="insight.html">LibreQoS Insight (Insight)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api.html">LibreQoS Node API</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Misc:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="cake.html">CAKE</a></li>
<li class="toctree-l1"><a class="reference internal" href="performance-tuning.html">Performance Tuning</a></li>
<li class="toctree-l1"><a class="reference internal" href="extras.html">Extras</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">LibreQoE</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">UISP Integration</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/docs/v2.0/integrations-uisp.md.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="uisp-integration">
<h1>UISP Integration<a class="headerlink" href="#uisp-integration" title="Permalink to this heading"></a></h1>
<p>First, set the relevant parameters for UISP in <code class="docutils literal notranslate"><span class="pre">/etc/lqos.conf</span></code>.</p>
<section id="topology-strategies">
<h2>Topology Strategies<a class="headerlink" href="#topology-strategies" title="Permalink to this heading"></a></h2>
<p>LibreQoS supports multiple topology strategies for UISP integration to balance CPU performance with network hierarchy needs:</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Strategy</p></th>
<th class="head"><p>Description</p></th>
<th class="head"><p>CPU Impact</p></th>
<th class="head"><p>Use Case</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">flat</span></code></p></td>
<td><p>Only shapes subscribers by service plan speed</p></td>
<td><p>Lowest</p></td>
<td><p>Maximum performance, simple subscriber-only shaping</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">ap_only</span></code></p></td>
<td><p>Shapes by service plan and Access Point</p></td>
<td><p>Low</p></td>
<td><p>Good balance of performance and AP-level control</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">ap_site</span></code></p></td>
<td><p>Shapes by service plan, Access Point, and Site</p></td>
<td><p>Medium</p></td>
<td><p>Site-level aggregation with moderate complexity</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">full</span></code></p></td>
<td><p>Shapes entire network including backhauls, Sites, APs, and clients</p></td>
<td><p>Highest</p></td>
<td><p><strong>Recommended for most deployments</strong>. Complete network hierarchy with backhaul awareness</p></td>
</tr>
</tbody>
</table>
<p><strong>Choosing the Right Strategy:</strong></p>
<ul class="simple">
<li><p>Use <code class="docutils literal notranslate"><span class="pre">full</span></code> for most deployments to get complete network topology awareness including backhaul links</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">ap_site</span></code> if you need site-level control but don’t need backhaul shaping</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">ap_only</span></code> for better performance when site aggregation isn’t needed</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">flat</span></code> only when maximum performance is critical and you don’t need any hierarchy</p></li>
</ul>
<p><strong>Performance Note:</strong> When using <code class="docutils literal notranslate"><span class="pre">full</span></code> strategy with large networks, consider using <code class="docutils literal notranslate"><span class="pre">promote_to_root</span></code> to distribute CPU load across multiple cores.</p>
</section>
<section id="promote-to-root-nodes-performance-optimization">
<h2>Promote to Root Nodes (Performance Optimization)<a class="headerlink" href="#promote-to-root-nodes-performance-optimization" title="Permalink to this heading"></a></h2>
<p>When using <code class="docutils literal notranslate"><span class="pre">full</span></code> topology strategy, traffic can bottleneck on a single root node/CPU core.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">promote_to_root</span></code> feature can reduce this by promoting selected sites to root-level nodes so load is distributed.</p>
<p>Configuration:</p>
<ol class="arabic simple">
<li><p>Navigate to <code class="docutils literal notranslate"><span class="pre">Configuration</span> <span class="pre">-&gt;</span> <span class="pre">Integrations</span></code> in WebUI.</p></li>
<li><p>In <code class="docutils literal notranslate"><span class="pre">Promote</span> <span class="pre">to</span> <span class="pre">Root</span> <span class="pre">Nodes</span></code>, enter one site per line.</p></li>
</ol>
<p>Example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Remote_Site_Alpha</span>
<span class="n">Remote_Site_Beta</span>
<span class="n">Datacenter_West</span>
</pre></div>
</div>
<p>When to use:</p>
<ul class="simple">
<li><p>Multi-site networks with high-capacity remote sites.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">full</span></code> strategy deployments showing single-core saturation.</p></li>
</ul>
</section>
<section id="suspension-handling-strategies">
<h2>Suspension Handling Strategies<a class="headerlink" href="#suspension-handling-strategies" title="Permalink to this heading"></a></h2>
<p>Configure how LibreQoS handles suspended customer accounts:</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Strategy</p></th>
<th class="head"><p>Description</p></th>
<th class="head"><p>Use Case</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">none</span></code></p></td>
<td><p>Do not handle suspensions</p></td>
<td><p>When suspension handling is managed elsewhere</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">ignore</span></code></p></td>
<td><p>Do not add suspended customers to network map</p></td>
<td><p>Reduces queue count and improves performance for networks with many suspended accounts</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">slow</span></code></p></td>
<td><p>Limit suspended customers to 0.1 Mbps</p></td>
<td><p>Maintains minimal connectivity for suspended accounts (e.g., payment portals)</p></td>
</tr>
</tbody>
</table>
<p><strong>Choosing a Suspension Strategy:</strong></p>
<ul class="simple">
<li><p>Use <code class="docutils literal notranslate"><span class="pre">none</span></code> if your edge router or another system handles suspensions</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">ignore</span></code> to reduce system load by not creating queues for suspended customers</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">slow</span></code> to maintain minimal connectivity (useful for payment portals or service messages)</p></li>
</ul>
</section>
<section id="burst">
<h2>Burst<a class="headerlink" href="#burst" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>In UISP, Download Speed and Upload Speed are configured in Mbps (for example, 100 Mbps).</p></li>
<li><p>In UISP, Download Burst and Upload Burst are configured in kilobytes per second (kB/s).</p></li>
<li><p>Conversion and shaping:</p>
<ul>
<li><p>burst_mbps = kB/s × 8 / 1000</p></li>
<li><p>Download Min = Download Speed (Mbps) × commit_bandwidth_multiplier</p></li>
<li><p>Download Max = (Download Speed (Mbps) + burst_mbps) × bandwidth_overhead_factor</p></li>
<li><p>Upload Min/Max are computed the same way from Upload Speed (Mbps) and Upload Burst (kB/s)</p></li>
</ul>
</li>
<li><p>Example:</p>
<ul>
<li><p>UISP values: Download Speed = 100 Mbps, Download Burst = 12,500 kB/s</p></li>
<li><p>Burst adds 12,500 × 8 / 1000 = 100 Mbps</p></li>
<li><p>Download Min = 100 × commit_bandwidth_multiplier</p></li>
<li><p>Download Max = (100 + 100) × bandwidth_overhead_factor</p></li>
</ul>
</li>
<li><p>Quick reference (burst kB/s → added Mbps):</p>
<ul>
<li><p>6,250 kB/s → +50 Mbps</p></li>
<li><p>12,500 kB/s → +100 Mbps</p></li>
<li><p>25,000 kB/s → +200 Mbps</p></li>
</ul>
</li>
<li><p>Notes:</p>
<ul>
<li><p>Leave burst empty/null in UISP to disable burst.</p></li>
<li><p>If suspended_strategy is set to slow, both Min and Max are set to 0.1 Mbps.</p></li>
</ul>
</li>
</ul>
</section>
<section id="configuration-example">
<h2>Configuration Example<a class="headerlink" href="#configuration-example" title="Permalink to this heading"></a></h2>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[uisp_integration]</span>
<span class="c1"># Core Settings</span>
<span class="na">enable_uisp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">true</span>
<span class="na">token</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;your-api-token-here&quot;</span>
<span class="na">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;https://uisp.your_domain.com&quot;</span>
<span class="na">site</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;Root_Site_Name&quot;</span><span class="w"> </span><span class="c1"># Root site for topology perspective</span>
<span class="c1"># Topology Strategy (see table above)</span>
<span class="na">strategy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;full&quot;</span><span class="w"> </span><span class="c1"># Recommended for most deployments</span>
<span class="c1"># Suspension Handling (see table above)</span>
<span class="na">suspended_strategy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;none&quot;</span>
<span class="c1"># Capacity Adjustments</span>
<span class="c1"># UISP&#39;s reported AP capacities can be optimistic</span>
<span class="na">airmax_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.65</span><span class="w"> </span><span class="c1"># Use 65% of reported AirMax capacity</span>
<span class="na">ltu_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.95</span><span class="w"> </span><span class="c1"># Use 95% of reported LTU capacity</span>
<span class="c1"># Site Management</span>
<span class="na">exclude_sites</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">[]</span><span class="w"> </span><span class="c1"># Sites to exclude, e.g., [&quot;Test_Site&quot;, &quot;Lab_Site&quot;]</span>
<span class="na">use_ptmp_as_parent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">true</span><span class="w"> </span><span class="c1"># For sites branched off PtMP Access Points</span>
<span class="c1"># Bandwidth Adjustments</span>
<span class="na">bandwidth_overhead_factor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">1.15</span><span class="w"> </span><span class="c1"># Give customers 15% above plan speed</span>
<span class="na">commit_bandwidth_multiplier</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0.98</span><span class="w"> </span><span class="c1"># Set minimum to 98% of maximum (CIR)</span>
<span class="c1"># Advanced Options</span>
<span class="na">ipv6_with_mikrotik</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">false</span><span class="w"> </span><span class="c1"># Enable if using DHCPv6 with MikroTik</span>
<span class="na">always_overwrite_network_json</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">false</span><span class="w"> </span><span class="c1"># Set true to rebuild topology each run</span>
<span class="na">exception_cpes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">[]</span><span class="w"> </span><span class="c1"># CPE exceptions in [&quot;cpe:parent&quot;] format</span>
<span class="na">squash_sites</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">[]</span><span class="w"> </span><span class="c1"># Optional: sites to squash</span>
<span class="na">enable_squashing</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">false</span><span class="w"> </span><span class="c1"># Optional: enable AP/single-entry squashing logic</span>
<span class="na">do_not_squash_sites</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">[]</span><span class="w"> </span><span class="c1"># Optional: never squash these sites</span>
<span class="na">ignore_calculated_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">false</span><span class="w"> </span><span class="c1"># Optional: keep configured capacities even if calculated differs</span>
<span class="na">insecure_ssl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">false</span><span class="w"> </span><span class="c1"># Optional: ignore UISP TLS certificate validation</span>
</pre></div>
</div>
</section>
<section id="uisp-advanced-operational-options">
<h2>UISP Advanced/Operational Options<a class="headerlink" href="#uisp-advanced-operational-options" title="Permalink to this heading"></a></h2>
<p>The following UISP options are available in current builds and WebUI (Node Manager) config editors:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">exclude_sites</span></code>: list of site names to exclude from import.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">exception_cpes</span></code>: list of <code class="docutils literal notranslate"><span class="pre">cpe:parent</span></code> overrides for ambiguous parent assignment.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">squash_sites</span></code>: optional list of sites to squash in full strategy workflows.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">enable_squashing</span></code>: enables additional squashing behavior where supported.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">do_not_squash_sites</span></code>: explicit exclusions from squashing.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">use_ptmp_as_parent</span></code>: prefer PtMP AP as parent for relevant topology paths.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ignore_calculated_capacity</span></code>: prefer configured capacities instead of integration-calculated values.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">insecure_ssl</span></code>: disables TLS certificate verification for UISP API calls.</p></li>
</ul>
<p>Recommended use:</p>
<ol class="arabic simple">
<li><p>Keep <code class="docutils literal notranslate"><span class="pre">insecure_ssl</span> <span class="pre">=</span> <span class="pre">false</span></code> unless you have a known internal PKI/self-signed requirement.</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">exclude_sites</span></code> and <code class="docutils literal notranslate"><span class="pre">do_not_squash_sites</span></code> first for safer topology changes.</p></li>
<li><p>Apply <code class="docutils literal notranslate"><span class="pre">squash_sites</span></code>/<code class="docutils literal notranslate"><span class="pre">enable_squashing</span></code> incrementally and validate queue placement after each change.</p></li>
</ol>
<p>To test the UISP Integration, use</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>/opt/libreqos/src
sudo<span class="w"> </span>/opt/libreqos/src/bin/uisp_integration
</pre></div>
</div>
<p>On the first successful run, it will create a network.json and ShapedDevices.csv file.
If a network.json file exists, it will not be overwritten, unless you set <code class="docutils literal notranslate"><span class="pre">always_overwrite_network_json</span> <span class="pre">=</span> <span class="pre">true</span></code>.</p>
<p>ShapedDevices.csv will be overwritten every time the UISP integration is run.</p>
<p>To ensure the network.json is always overwritten with the newest version pulled in by the integration, please edit <code class="docutils literal notranslate"><span class="pre">/etc/lqos.conf</span></code> with the command <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">nano</span> <span class="pre">/etc/lqos.conf</span></code>.
Edit the file to set the value of <code class="docutils literal notranslate"><span class="pre">always_overwrite_network_json</span></code> to <code class="docutils literal notranslate"><span class="pre">true</span></code>.
Then, run <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">systemctl</span> <span class="pre">restart</span> <span class="pre">lqosd</span></code>.</p>
<p>You have the option to run integrationUISP.py automatically on boot and every X minutes (set by the parameter <code class="docutils literal notranslate"><span class="pre">queue_refresh_interval_mins</span></code>), which is highly recommended. This can be enabled by setting <code class="docutils literal notranslate"><span class="pre">enable_uisp</span> <span class="pre">=</span> <span class="pre">true</span></code> in <code class="docutils literal notranslate"><span class="pre">/etc/lqos.conf</span></code>. Once set, run <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">systemctl</span> <span class="pre">restart</span> <span class="pre">lqos_scheduler</span></code>.</p>
</section>
<section id="uisp-overrides">
<h2>UISP Overrides<a class="headerlink" href="#uisp-overrides" title="Permalink to this heading"></a></h2>
<p>You can also modify the the following files to more accurately reflect your network:</p>
<ul class="simple">
<li><p>integrationUISPbandwidths.csv</p></li>
<li><p>integrationUISProutes.csv</p></li>
</ul>
<p>Each of the files above have templates available in the <code class="docutils literal notranslate"><span class="pre">/opt/libreqos/src</span></code> folder. If you don’t find them there, you can navigate <a class="reference external" href="https://github.com/LibreQoE/LibreQoS/tree/develop/src">here</a>. To utilize the template, copy the file (removing the <code class="docutils literal notranslate"><span class="pre">.template</span></code> part of the filename) and set the appropriate information inside each file.
For example, if you want to change the set bandwidth for a site, you would do:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">cp</span> <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">libreqos</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">integrationUISPbandwidths</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">csv</span> <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">libreqos</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">integrationUISPbandwidths</span><span class="o">.</span><span class="n">csv</span>
</pre></div>
</div>
<p>And edit the CSV using LibreOffice or your preferred CSV editor.</p>
<section id="uisp-route-overrides">
<h3>UISP Route Overrides<a class="headerlink" href="#uisp-route-overrides" title="Permalink to this heading"></a></h3>
<p>The default cost between nodes is typically 10. The integration creates a dot graph file <code class="docutils literal notranslate"><span class="pre">/opt/libreqos/src/graph.dot</span></code> which can be rendered using <a class="reference external" href="https://dreampuf.github.io/GraphvizOnline/">Graphviz</a>. This renders a map with the associated costs of all links.</p>
<p><img alt="image" src="https://github.com/user-attachments/assets/4edba4b5-c377-4659-8798-dfc40d50c859" /></p>
<p>Say you have Site 1, Site 2, and Site 3.
A backup path exists between Site 1 and Site 3, but is not the preferred path.
Your preference is Site 1 &gt; Site 2 &gt; Site 3, but the integration by default connects Site 1 &gt; Site 3 directly.</p>
<p>To fix this, add a cost above the default for the path between Site 1 and Site 3.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Site</span> <span class="mi">1</span><span class="p">,</span> <span class="n">Site</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">100</span>
<span class="n">Site</span> <span class="mi">3</span><span class="p">,</span> <span class="n">Site</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">100</span>
</pre></div>
</div>
<p>With this, data will flow Site 1 &gt; Site 2 &gt; Site 3.</p>
<p>To make the change, perform a reload of the integration with <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">systemctl</span> <span class="pre">restart</span> <span class="pre">lqos_scheduler</span></code>.</p>
</section>
</section>
<section id="related-pages">
<h2>Related Pages<a class="headerlink" href="#related-pages" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p><a class="reference internal" href="integrations.html"><span class="std std-doc">CRM/NMS Integrations</span></a></p></li>
<li><p><a class="reference internal" href="operating-modes.html"><span class="std std-doc">Operating Modes and Source of Truth</span></a></p></li>
<li><p><a class="reference internal" href="troubleshooting.html"><span class="std std-doc">Troubleshooting</span></a></p></li>
</ul>
</section>
</section>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2026, LibreQoE, LLC.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>