mirror of
https://github.com/LibreQoE/LibreQoS.git
synced 2024-11-25 01:30:17 -06:00
.. | ||
INTEGRATION_HOWTO.html | ||
README.html |
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>v1.3 (IPv4 + IPv6) — LibreQoE documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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">Readme:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../README.html">Sponsors</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../README.html#support-libreqos">Support LibreQoS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../README.html#documentation">Documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../README.html#matrix-chat">Matrix Chat</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../README.html#features">Features</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Read me first!</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../docs/Quickstart/networkdesignassumptions.html">Network Design Assumptions</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Change Notes:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../docs/ChangeNotes/v1.4.html">LibreQoS v1.3.1 to v1.4 Change Summary</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Quickstart:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../docs/SystemRequirements/Compute.html">System Requirements</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../docs/SystemRequirements/Networking.html">Network Interface Requirements</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../docs/Quickstart/quickstart-prereq.html">Server Setup - Pre-requisites</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../docs/Quickstart/quickstart-libreqos-1.4.html">Install LibreQoS 1.4</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../docs/Quickstart/share.html">Share your before and after</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Updates:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../docs/Updates/update.html">Updating 1.4 To Latest Version</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Technical Documentation:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../docs/TechnicalDocs/troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../docs/TechnicalDocs/integrations.html">Integrations</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../docs/TechnicalDocs/extras.html">Extras</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../docs/TechnicalDocs/performance-tuning.html">Performance Tuning</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Legacy:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../docs/Legacy/v1.3.1.html">LibreQoS v1.3.1</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">v1.3 (IPv4 + IPv6)</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/old/v1.3/README.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="v1-3-ipv4-ipv6">
<h1>v1.3 (IPv4 + IPv6)<a class="headerlink" href="#v1-3-ipv4-ipv6" title="Permalink to this heading"></a></h1>
<p><img alt="image" src="https://user-images.githubusercontent.com/22501920/202913336-256b591b-f372-44fe-995c-5e08ec08a925.png" /></p>
<section id="features">
<h2>Features<a class="headerlink" href="#features" title="Permalink to this heading"></a></h2>
<section id="fast-tcp-latency-tracking">
<h3>Fast TCP Latency Tracking<a class="headerlink" href="#fast-tcp-latency-tracking" title="Permalink to this heading"></a></h3>
<p><a class="reference external" href="https://github.com/thebracket/">@thebracket</a> has created <a class="reference external" href="https://github.com/thebracket/cpumap-pping">cpumap-pping</a> which merges the functionality of the <a class="reference external" href="https://github.com/xdp-project/xdp-cpumap-tc">xdp-cpumap-tc</a> and <a class="reference external" href="https://github.com/xdp-project/bpf-examples/tree/master/pping">ePPing</a> projects, while keeping CPU use within ~1% of xdp-cpumap-tc.</p>
</section>
<section id="integrations">
<h3>Integrations<a class="headerlink" href="#integrations" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Added Splynx integration</p></li>
<li><p>UISP integration overhaul by <a class="reference external" href="https://github.com/thebracket/">@thebracket</a></p></li>
<li><p><a class="reference external" href="https://github.com/interduo/LMSLibreQoS">LMS integation</a> for Polish ISPs by <a class="reference external" href="https://github.com/interduo">@interduo</a></p></li>
</ul>
</section>
<section id="partial-queue-reload">
<h3>Partial Queue Reload<a class="headerlink" href="#partial-queue-reload" title="Permalink to this heading"></a></h3>
<p>In v1.2 and prior, the the entire queue structure had to be reloaded to make any changes. This led to a few milliseconds of packet loss for some clients each time that reload happened. The scheduled.py was set to reload all queues each morning at 4AM to avoid any potential disruptions that could theoretically cause.</p>
<p>Starting with v1.3 - LibreQoS tracks the state of the queues, and can do incremental changes without a full reload of all queues. Every 30 minutes - scheduler.py runs the CRM import, and runs a partial reload affecting just the queues that have changed. It still runs a full reload at 4AM.</p>
</section>
<section id="v1-3-improvements-to-help-scale">
<h3>v1.3 Improvements to help scale<a class="headerlink" href="#v1-3-improvements-to-help-scale" title="Permalink to this heading"></a></h3>
<section id="htb-major-minor-handle">
<h4>HTB major:minor handle<a class="headerlink" href="#htb-major-minor-handle" title="Permalink to this heading"></a></h4>
<p>HTB uses a hex handle for classes. It is two 16-bit hex values joined by a colon - major:minor (<u16>:<u16>). In LibreQoS, each CPU core uses a different major handle.</p>
<p>In v1.2 and prior, the minor handle was unique across all CPUs, meaning only 30k subscribers could be added total.</p>
<p>Starting with LibreQoS v1.3 - minor handles are counted independently by CPU core. With this change, the maximum possible subscriber qdiscs/classes goes from a hard limit of 30k to instead be 30k x CPU core count. So for a higher end system with a 64 core processor such as the AMD EPYC™ 7713P, that would mean ~1.9 million possible subscriber classes. Of course CPU use will be the bottleneck well before class handles are in that scenario. But at least we have that arbitrary 30k limit out of the way.</p>
</section>
<section id="circuit-id-unique-identifier">
<h4>“Circuit ID” Unique Identifier<a class="headerlink" href="#circuit-id-unique-identifier" title="Permalink to this heading"></a></h4>
<p>In order to improve queue reload time in v1.3, it was necessary to use a unique identifier for each circuit. We went with Circuit ID. It can be a number or string, it just needs to be unique between circuits, and the same for multiple devices in the same circuit. This allows us to avoid costly lookups when sorting through the queue structure.</p>
<p>If you have your own script creating ShapedDevices.csv - you could use your CRM’s unique identifier for customer services / circuits to serve as this Circuit ID. The UISP and Splynx integrations already do this automatically.</p>
</section>
</section>
</section>
<section id="compatability-notes">
<h2>Compatability Notes<a class="headerlink" href="#compatability-notes" title="Permalink to this heading"></a></h2>
<p>The most major changes are the renaming of the fqorCake variable to “sqm”,
and the addition of the Circuit identifier field.</p>
<p>Also after upgrading to LibreQos v1.3, a reboot is required to clear out the
old ebpf code.</p>
</section>
</section>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>© Copyright 2023, LibreQoE.</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>