LibreQoS/_readthedocs/html/docs/ChangeNotes/v1.4.html
2023-05-19 14:17:54 -06:00

309 lines
19 KiB
HTML
Raw Permalink 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.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>LibreQoS v1.3.1 to v1.4 Change Summary &mdash; 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" />
<link rel="next" title="System Requirements" href="../SystemRequirements/Compute.html" />
<link rel="prev" title="Network Design Assumptions" href="../Quickstart/networkdesignassumptions.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="../Quickstart/networkdesignassumptions.html">Network Design Assumptions</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Change Notes:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">LibreQoS v1.3.1 to v1.4 Change Summary</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#some-statistics">Some Statistics</a></li>
<li class="toctree-l2"><a class="reference internal" href="#peak-performance-so-far">Peak Performance (So Far)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#new-architecture">New Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="#high-performance-bridge-bifrost">High Performance Bridge (Bifrost)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#packet-and-flow-analysis-heimdall">Packet and Flow Analysis (Heimdall)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#single-interface-mode">Single-interface Mode</a></li>
<li class="toctree-l2"><a class="reference internal" href="#graphs">Graphs</a></li>
<li class="toctree-l2"><a class="reference internal" href="#miscellaneous">Miscellaneous</a></li>
<li class="toctree-l2"><a class="reference internal" href="#better-distribution">Better Distribution</a></li>
<li class="toctree-l2"><a class="reference internal" href="#gallery">Gallery</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#node-manager-dashboard">Node Manager - Dashboard</a></li>
<li class="toctree-l3"><a class="reference internal" href="#node-manager-circuit-view">Node Manager - Circuit View</a></li>
<li class="toctree-l3"><a class="reference internal" href="#node-manager-flow-analysis">Node Manager - Flow Analysis</a></li>
<li class="toctree-l3"><a class="reference internal" href="#node-manager-packet-capture">Node Manager - Packet Capture</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Quickstart:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../SystemRequirements/Compute.html">System Requirements</a></li>
<li class="toctree-l1"><a class="reference internal" href="../SystemRequirements/Networking.html">Network Interface Requirements</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Quickstart/quickstart-prereq.html">Server Setup - Pre-requisites</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Quickstart/quickstart-libreqos-1.4.html">Install LibreQoS 1.4</a></li>
<li class="toctree-l1"><a class="reference internal" href="../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="../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="../TechnicalDocs/troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TechnicalDocs/integrations.html">Integrations</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TechnicalDocs/extras.html">Extras</a></li>
<li class="toctree-l1"><a class="reference internal" href="../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="../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">LibreQoS v1.3.1 to v1.4 Change Summary</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/docs/ChangeNotes/v1.4.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="libreqos-v1-3-1-to-v1-4-change-summary">
<h1>LibreQoS v1.3.1 to v1.4 Change Summary<a class="headerlink" href="#libreqos-v1-3-1-to-v1-4-change-summary" title="Permalink to this heading"></a></h1>
<p>Version 1.4 is a huge milestone. A whole new back-end, new GUI, 30%+ performance improvements, support for single-interface mode.</p>
<section id="some-statistics">
<h2>Some Statistics<a class="headerlink" href="#some-statistics" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p><strong>564</strong> Commits since 1.3.1</p></li>
<li><p><strong>28,399</strong> Lines of Code</p>
<ul>
<li><p><strong>10,142</strong> lines of Rust</p></li>
<li><p><strong>5,448</strong> lines of HTML &amp; JavaScript</p></li>
<li><p><strong>3,126</strong> lines of Python</p></li>
<li><p><strong>2,023</strong> lines of C</p></li>
</ul>
</li>
</ul>
</section>
<section id="peak-performance-so-far">
<h2>Peak Performance (So Far)<a class="headerlink" href="#peak-performance-so-far" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>Tested single-stream performance of just under 10 gbit/s on a 16-core Xeon Gold (single interface architecture, using 8 cores for each direction). The flow was shaped with Cake, and retained good (&lt;10 ms RTT latency) performance.</p></li>
<li><p>Tested 25 gbit/s total throughput on the same system. CPU was not saturated—we didnt have a bigger network to test!</p></li>
<li><p>Running live at ISPs with 11 gbit/s of real customer performance and plenty of room to grow.</p></li>
</ul>
</section>
<section id="new-architecture">
<h2>New Architecture<a class="headerlink" href="#new-architecture" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>Rust-based back-end provides:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">lqosd</span></code> - a daemon that manages:</p>
<ul>
<li><p>Loading/setup/unloading eBPF programs.</p></li>
<li><p>Gathers statistics directly from eBPF.</p></li>
<li><p>Provides a local “bus” for transporting data between components.</p></li>
<li><p>Sets “tunables”, replacing the need for a separate offloading service.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">lqtop</span></code> - a console-based utility for viewing current activity.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">lqos_node_manager</span></code> - a web-based GUI that:</p>
<ul>
<li><p>Monitors current activity.</p></li>
<li><p>Monitors system status.</p></li>
<li><p>Provides “best/worst” summaries of RTT.</p></li>
<li><p>Provides visibility into the working of queues.</p></li>
<li><p>Categorizes traffic to match your network hierarchy, letting you quickly find the bottlenecks.</p></li>
<li><p>Lets you browse and search your shaped devices.</p></li>
<li><p>Lists “unknown IP addresses” that are passing through the shaper but do not have a rule associated.</p></li>
<li><p>Allows you to view and edit the LibreQoS configuration.</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">lqos_python</span></code> - provides Python access to the bus system.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">lqos_setup</span></code> - builds enough configuration files to get you started.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">lqos_users</span></code> - authentication for the GUIs.</p></li>
</ul>
</li>
<li><p>High-performance Python script:</p>
<ul>
<li><p>Batches TC commands for fast execution.</p></li>
<li><p>Batches bus-transactions to associate IP subnets with users for fast execution.</p></li>
<li><p>Improved scheduler for InfluxDB graphing.</p></li>
</ul>
</li>
</ul>
</section>
<section id="high-performance-bridge-bifrost">
<h2>High Performance Bridge (Bifrost)<a class="headerlink" href="#high-performance-bridge-bifrost" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>Optionally replace the Linux bridge system with an XDP-based bridge accelerator.</p></li>
<li><p>Throughput is 30% higher in this mode.</p></li>
</ul>
</section>
<section id="packet-and-flow-analysis-heimdall">
<h2>Packet and Flow Analysis (Heimdall)<a class="headerlink" href="#packet-and-flow-analysis-heimdall" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>Viewing a circuit in the web UI displays a summary of IP traffic flows for that circuit.</p></li>
<li><p>A “capture” button will capture packet headers, and allow nanosecond-level analysis of traffic data.</p></li>
<li><p>You can download the packet captures in <code class="docutils literal notranslate"><span class="pre">libpcap</span></code> format, for analysis in Wireshark and similar tools.</p></li>
<li><p>Configure the capture delay in <code class="docutils literal notranslate"><span class="pre">/etc/lqos.conf</span></code></p></li>
</ul>
</section>
<section id="single-interface-mode">
<h2>Single-interface Mode<a class="headerlink" href="#single-interface-mode" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>Operate with a single network interface and VLANs for “in” and “out”.</p></li>
</ul>
</section>
<section id="graphs">
<h2>Graphs<a class="headerlink" href="#graphs" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p>Graph current throughput, shaped and unshaped.</p></li>
<li><p>Graph CPU and RAM performance.</p></li>
<li><p>Graph individual Cake shaper tins, backlog, delays.</p></li>
<li><p>TCP “round trip time” histogram showing overall network latency performance.</p></li>
<li><p>Per-network node traffic graph.</p></li>
<li><p>Per-network node RTT latency histogram, to let you zero-in on troublespots.</p></li>
</ul>
</section>
<section id="miscellaneous">
<h2>Miscellaneous<a class="headerlink" href="#miscellaneous" title="Permalink to this heading"></a></h2>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">build_rust.sh</span></code> builds the entire package from a Git update, with minimal (&lt;1 second) downtime.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">build_dpkg.sh</span></code> assembles the entire system into an Ubuntu/Debian <code class="docutils literal notranslate"><span class="pre">.deb</span></code> installer.</p></li>
<li><p>Sample <code class="docutils literal notranslate"><span class="pre">.service</span></code> files for <code class="docutils literal notranslate"><span class="pre">systemd</span></code> integration.</p></li>
<li><p>Real-time adjustment to tunables.</p></li>
<li><p>Redact text into Klingon to allow screenshots without sharing customer data.</p></li>
<li><p>Preliminary support for reading IP data inside MPLS packets, as long as they are ordered “VLAN-&gt;MPLS-&gt;VPLS” and not the other way around.</p></li>
<li><p>Automatically trim network trees that exceed 9 levels deep.</p></li>
<li><p>Very accurate timing functions for better statistics.</p></li>
<li><p>Greatly improved documentation.</p></li>
<li><p>Improved rejection of TCP round-trip-time outliers (from long-polled connections).</p></li>
<li><p>Improved Spylnx and UISP integrations.</p></li>
</ul>
</section>
<section id="better-distribution">
<h2>Better Distribution<a class="headerlink" href="#better-distribution" title="Permalink to this heading"></a></h2>
<blockquote>
<div><p>This is in alpha testing. It has worked on some test setups, but needs production testing.</p>
</div></blockquote>
<p>Installation via <code class="docutils literal notranslate"><span class="pre">apt-get</span></code> and LibreQoSs own repo. Add the <code class="docutils literal notranslate"><span class="pre">libreqos</span></code> repo, and you can use <code class="docutils literal notranslate"><span class="pre">apt-get</span></code> to install/update the traffic shaper. This doesnt get you the development toolchain.</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;deb http://stats.libreqos.io/ubuntu jammy main&quot;</span><span class="w"> </span>&gt;<span class="w"> </span>/etc/apt/sources.list.d/libreqos.list
wget<span class="w"> </span>-O<span class="w"> </span>-<span class="w"> </span>-q<span class="w"> </span>http://stats.libreqos.io/repo.asc<span class="w"> </span><span class="p">|</span><span class="w"> </span>apt-key<span class="w"> </span>add<span class="w"> </span>-
apt-get<span class="w"> </span>update
apt-get<span class="w"> </span>install<span class="w"> </span>libreqos
</pre></div>
</div>
<p>You will be asked some questions about your configuration, and the management daemon and webserver will automatically start. Go to <code class="docutils literal notranslate"><span class="pre">http://&lt;your_ip&gt;:9123/</span></code> to finish installation.</p>
</section>
<section id="gallery">
<h2>Gallery<a class="headerlink" href="#gallery" title="Permalink to this heading"></a></h2>
<section id="node-manager-dashboard">
<h3>Node Manager - Dashboard<a class="headerlink" href="#node-manager-dashboard" title="Permalink to this heading"></a></h3>
<p><img alt="image" src="https://user-images.githubusercontent.com/14896751/227727398-ff9e0321-cae3-4daf-a9f7-59fafaf30061.png" />
<em>The node manager displays current activity on your network</em></p>
</section>
<section id="node-manager-circuit-view">
<h3>Node Manager - Circuit View<a class="headerlink" href="#node-manager-circuit-view" title="Permalink to this heading"></a></h3>
<p><img alt="image" src="https://user-images.githubusercontent.com/14896751/227727646-c6eaaece-f2f0-4667-9b66-5cb08a7f4eb8.png" />
<em>Find out exactly whats going on inside each circuit, monitoring all of the queue stats - you can even view the details of each category tin</em></p>
</section>
<section id="node-manager-flow-analysis">
<h3>Node Manager - Flow Analysis<a class="headerlink" href="#node-manager-flow-analysis" title="Permalink to this heading"></a></h3>
<p><img alt="image" src="https://user-images.githubusercontent.com/14896751/227727691-e82bc021-4da4-436a-93af-0f7cd13824be.png" />
<em>Analyze whats going on for a specific client, viewing real-time traffic flow data. No need to run <code class="docutils literal notranslate"><span class="pre">torch</span></code> or equivalent on their router. Ideal for finding connectivity problems.</em></p>
</section>
<section id="node-manager-packet-capture">
<h3>Node Manager - Packet Capture<a class="headerlink" href="#node-manager-packet-capture" title="Permalink to this heading"></a></h3>
<p><img alt="image" src="https://user-images.githubusercontent.com/14896751/227727755-e8c9bce6-58b2-4c50-a466-2e68b29a4b18.png" />
<em>Capture traffic and analyze per-packet in an intuitive, zoomable traffic analysis system. You can view down to nanosecond granularity to find performance problems, and see whats really going on with your traffic. Click “Download PCAP Dump” to analyze the same data in Wireshark.</em></p>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../Quickstart/networkdesignassumptions.html" class="btn btn-neutral float-left" title="Network Design Assumptions" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../SystemRequirements/Compute.html" class="btn btn-neutral float-right" title="System Requirements" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; 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>