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

339 lines
19 KiB
HTML

<!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>Splynx 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">Splynx Integration</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/docs/v2.0/integrations-splynx.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="splynx-integration">
<h1>Splynx Integration<a class="headerlink" href="#splynx-integration" title="Permalink to this heading"></a></h1>
<blockquote>
<div><p><strong>⚠️ Breaking Change Notice</strong>: Prior to v1.5-RC-2, the default Splynx strategy was <code class="docutils literal notranslate"><span class="pre">full</span></code>. Starting with v1.5-RC-2, the default strategy is <code class="docutils literal notranslate"><span class="pre">ap_only</span></code> for improved CPU performance. If you require the previous behavior, explicitly set <code class="docutils literal notranslate"><span class="pre">strategy</span> <span class="pre">=</span> <span class="pre">&quot;full&quot;</span></code> in your Splynx configuration section.</p>
</div></blockquote>
<p>First, set the relevant parameters for Splynx (splynx_api_key, splynx_api_secret, etc.) 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 Splynx 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, no hierarchy</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>Single layer: AP → Clients</p></td>
<td><p>Low</p></td>
<td><p><strong>Default</strong>. Best balance of performance and structure</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>Two layers: Site → AP → Clients</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>Complete topology mapping</p></td>
<td><p>Highest</p></td>
<td><p>Full network hierarchy representation</p></td>
</tr>
</tbody>
</table>
<p>Configure the strategy in <code class="docutils literal notranslate"><span class="pre">/etc/lqos.conf</span></code> under the <code class="docutils literal notranslate"><span class="pre">[splynx_integration]</span></code> section:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[splynx_integration]</span>
<span class="c1"># ... other splynx settings ...</span>
<span class="na">strategy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;ap_only&quot;</span>
</pre></div>
</div>
<p><strong>Performance Considerations:</strong></p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">flat</span></code> and <code class="docutils literal notranslate"><span class="pre">ap_only</span></code> strategies significantly reduce CPU load by limiting network depth</p></li>
<li><p>Choose <code class="docutils literal notranslate"><span class="pre">ap_only</span></code> for most deployments unless you need site-level traffic aggregation</p></li>
<li><p>Only use <code class="docutils literal notranslate"><span class="pre">full</span></code> if you require complete network topology representation and have adequate CPU resources</p></li>
</ul>
</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, you may encounter CPU performance bottlenecks where all traffic flows through a single root site, limiting throughput to what one CPU core can handle.</p>
<p>The <strong>promote_to_root</strong> feature solves this by promoting specific sites to root-level nodes, distributing traffic shaping across multiple CPU cores.</p>
<p><strong>Configuration:</strong></p>
<ol class="arabic simple">
<li><p>Navigate to Integration → Common in the WebUI</p></li>
<li><p>In the “Promote to Root Nodes” field, enter one site name per line:</p></li>
</ol>
<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><strong>Benefits:</strong></p>
<ul class="simple">
<li><p>Eliminates single-CPU bottleneck for networks with remote sites</p></li>
<li><p>Distributes traffic shaping across multiple CPU cores</p></li>
<li><p>Improves overall network performance for large topologies</p></li>
<li><p>Works with both Splynx and UISP integrations</p></li>
</ul>
<p><strong>When to Use:</strong></p>
<ul class="simple">
<li><p>Networks with multiple high-capacity remote sites</p></li>
<li><p>When using <code class="docutils literal notranslate"><span class="pre">full</span></code> topology strategy and experiencing CPU limitations</p></li>
<li><p>Large networks where root site traffic exceeds single-core capacity</p></li>
</ul>
</section>
<section id="splynx-api-access">
<h2>Splynx API Access<a class="headerlink" href="#splynx-api-access" title="Permalink to this heading"></a></h2>
<p>The Splynx Integration uses Basic authentication. For using this type of authentication, please make sure you enable <a class="reference external" href="https://splynx.docs.apiary.io/#introduction/authentication">Unsecure access</a> in your Splynx API key settings. Also the Splynx API key should be granted access to the necessary permissions.</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Category</p></th>
<th class="head"><p>Name</p></th>
<th class="head"><p>Permission</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>Tariff Plans</p></td>
<td><p>Internet</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>FUP</p></td>
<td><p>Compiler</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>FUP</p></td>
<td><p>Policies</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>FUP</p></td>
<td><p>Capped Data</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>FUP</p></td>
<td><p>CAP Tariff</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>FUP</p></td>
<td><p>FUP Limits</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>Customers</p></td>
<td><p>Customer</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>Customers</p></td>
<td><p>Customers Online</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>Customers</p></td>
<td><p>Customer Internet services</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>Networking</p></td>
<td><p>Routers</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>Networking</p></td>
<td><p>Router contention</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>Networking</p></td>
<td><p>MikroTik</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>Networking</p></td>
<td><p>Monitoring</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>Networking</p></td>
<td><p>Network Sites</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>Networking</p></td>
<td><p>IPv4 Networks</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>Networking</p></td>
<td><p>IPv4 Networks IP</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>Networking</p></td>
<td><p>CPE</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>Networking</p></td>
<td><p>CPE AP</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>Networking</p></td>
<td><p>IPv6 Networks</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-odd"><td><p>Networking</p></td>
<td><p>IPv6 Networks IP (Addresses)</p></td>
<td><p>View</p></td>
</tr>
<tr class="row-even"><td><p>Administration</p></td>
<td><p>Locations</p></td>
<td><p>View</p></td>
</tr>
</tbody>
</table>
<p>To test the Splynx Integration, use</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>python3<span class="w"> </span>integrationSplynx.py
</pre></div>
</div>
<p>On the first successful run, it will create a ShapedDevices.csv file and network.json.
ShapedDevices.csv will be overwritten every time the Splynx 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 integrationSplynx.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_splynx</span> <span class="pre">=</span> <span class="pre">true</span></code> under the <code class="docutils literal notranslate"><span class="pre">[splynx_integration]</span></code> section 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="splynx-overrides">
<h2>Splynx Overrides<a class="headerlink" href="#splynx-overrides" title="Permalink to this heading"></a></h2>
<p>You can also modify the the file <code class="docutils literal notranslate"><span class="pre">integrationSplynxBandwidths.csv</span></code> to override the default bandwidths for each Node (Site, AP).</p>
<p>A template is available in the <code class="docutils literal notranslate"><span class="pre">/opt/libreqos/src</span></code> folder. To utilize the template, copy the file <code class="docutils literal notranslate"><span class="pre">integrationSplynxBandwidths.template.csv</span></code> (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">integrationSplynxBandwidths</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">integrationSplynxBandwidths</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>
<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>