<div dir="ltr">Hello to all,<div><br></div><div>Our very own Herbert just put together <b>progress report on LibreQoS v1.5</b> - join our chat to follow the development, discuss anything (W)ISP/latency/WiFi related, and even unrelated :-) <b><a href="https://chat.libreqos.io/join/fvu3cerayyaumo377xwvpev6/">https://chat.libreqos.io/join/fvu3cerayyaumo377xwvpev6/</a></b></div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><font color="#000000">It's been a while since I posted out in the open about what's going on behind-the-scenes with LibreQoS development. So here's a "State of 1.5" summary, as of a few minutes ago.<br></font><strong><font color="#000000">Unified Configuration<br></font></strong><font color="#000000">Instead of having configuration split between<span class="gmail-Apple-converted-space"> </span><code style="font-family:"Source Code Pro",monospace;font-size:0.825em;unicode-bidi:embed;direction:ltr;padding:1px 2px;border-radius:3px">/etc/lqos.conf</code><span class="gmail-Apple-converted-space"> </span>and<span class="gmail-Apple-converted-space"> </span><code style="font-family:"Source Code Pro",monospace;font-size:0.825em;unicode-bidi:embed;direction:ltr;padding:1px 2px;border-radius:3px">ispConfig.py</code>, we have all of the configuration in one place -<span class="gmail-Apple-converted-space"> </span><code style="font-family:"Source Code Pro",monospace;font-size:0.825em;unicode-bidi:embed;direction:ltr;padding:1px 2px;border-radius:3px">/etc/lqos.conf</code>. It makes support a lot easier to have a single place to send people, and there's a LOT more validation and sanity checking now.</font><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">New Configuration Format.<span class="gmail-Apple-converted-space"> </span><strong>DONE</strong></font></li></ul><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">Automatic conversion from 1.4 configuration, including migrations.<span class="gmail-Apple-converted-space"> </span><strong>DONE</strong></font></li></ul><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">Merged into the<span class="gmail-Apple-converted-space"> </span><code style="font-family:"Source Code Pro",monospace;font-size:0.825em;unicode-bidi:embed;direction:ltr;padding:1px 2px;border-radius:3px">develop</code><span class="gmail-Apple-converted-space"> </span>branch.<span class="gmail-Apple-converted-space"> </span><strong>DONE</strong></font></li></ul><strong><font color="#000000">Performance</font></strong><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">The old RTT system made up to 4 map lookups per packet (!). The new one makes do with 1 lookup, at the expense of only being accurate on the old system by +/- 5%. That's a huge reduction in per-packet workload, so I'm happy with it. Status:<span class="gmail-Apple-converted-space"> </span><em>Working on my machine, needs cleaning before push</em></font></li></ul><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">The new RTT system runs on the input side, so on NICs that do receive-side steering it is now spread between CPUs rather than single CPU.<span class="gmail-Apple-converted-space"> </span><em>Working on my machine</em></font></li></ul><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">Enabled eBPF SKB-Metadata and<span class="gmail-Apple-converted-space"> </span><code style="font-family:"Source Code Pro",monospace;font-size:0.825em;unicode-bidi:embed;direction:ltr;padding:1px 2px;border-radius:3px">bpf_xdp_adjust_meta</code><span class="gmail-Apple-converted-space"> </span>(which requires 5.5 kernel, but is actually supported by NICs around 5.18+). This allows the XDP side to store the TC and CPU map data in a blob of meta-data accompanying the packet data itself in kernel memory. If support for this is detected (not every NIC does it), it automaticaly passes the data between the XDP and TC flows - which allows to skip an entire LPM lookup on the TC side. I've wanted this for over a year.<span class="gmail-Apple-converted-space"> </span><em>Works on my machine, improves throughput by 0.5 gbps single stream on my really crappy testbed setup</em></font></li></ul><strong><font color="#000000">Bin-Packing<br></font></strong><font color="#000000">We're hoping to extend the bin-packing system to be both smarter and to include top-level trees (to avoid "oops, two important things are on one CPU" incidents).<br></font><font color="#000000"><em>Smart Weight Calculation</em>: partly done. We have a call that builds weights per-customer now. Weights are a combination of:</font><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">(if you have LTS) what did the customer do in this period, last week? This is<span class="gmail-Apple-converted-space"> </span><em>remarkably</em><span class="gmail-Apple-converted-space"> </span>predictable, people are really consistent on aggregate.</font></li></ul><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">What did the customer do in the last 5 minutes? (Doesn't require LTS, reasonably accurate)</font></li></ul><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">A fraction of their defined plan.</font></li></ul><font color="#000000">The actual binpacking part isn't done yet, but doesn't look excessively tough.<br></font><strong><font color="#000000">Per-Flow Analysis<br></font></strong><font color="#000000">We've had long-running task items to: track RTT per flow, balance the reported host RTT between flows, make it possible to exclude endpoints from reporting (e.g. a UISP server hosted somewhere else), and begin per-ASN and per-target analysis. We've also wanted to have flow information accessible, with a view to future enhancements - and allow a LOT more querying.</font><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">Track TCP flows in real-time. We count bytes/packets, estimate a rate per flow, track RTT in both directions. This is working super-nicely on my test system.</font></li></ul><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">Track UDP/ICMP in real-time. We're aggregating bytes/packets and estimating a rate per flow.</font></li></ul><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">Web UI - display RTTs. RTTs are now combined per-host with a much smarter algorithm that can optionally exclude data from a flow that is beneath (threshold bits per second). The actual threshold is still being figured out.</font></li></ul><ul style="padding:0px;margin:0px 0px 5px 20px;font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><li style="line-height:inherit"><font color="#000000">Web UI API - you can view the current state of all flows.</font></li></ul><font color="#000000">There's a lot more to do here, mostly the analytics and display side. But it is coming along hot and heavy, and looking pretty good.<br></font><strong><font color="#000000">Webserver Version<br></font></strong><font color="#000000">Rocket has been upgraded to the latest and greatest 1.5. A new UI is still coming; it may be a 1.6 item since the scope keeps looking bigger everytime it stares at me.</font></blockquote></div><div><br></div><div><p style="margin:3px 0px;color:rgba(255,255,255,0.75);font-family:"Source Sans 3 VF",sans-serif;font-size:14px"><span style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small">All the best,</span></p></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div><p class="MsoNormal" style="color:rgb(34,34,34)">Frank<u></u><u></u></p><p class="MsoNormal" style="color:rgb(34,34,34)"><u></u><u></u></p><p class="MsoNormal" style="color:rgb(34,34,34)">Frantisek (Frank) Borsik<u></u><u></u></p><p class="MsoNormal" style="color:rgb(34,34,34)"><u></u> <u></u></p><p class="MsoNormal" style="color:rgb(34,34,34)"><a href="https://www.linkedin.com/in/frantisekborsik" style="color:rgb(17,85,204)" target="_blank">https://www.linkedin.com/in/frantisekborsik</a><u></u><u></u></p><p class="MsoNormal" style="color:rgb(34,34,34)">Signal, Telegram, WhatsApp: +421919416714 <u></u><u></u></p><p class="MsoNormal" style="color:rgb(34,34,34)">iMessage, mobile: +420775230885<u></u><u></u></p><p class="MsoNormal" style="color:rgb(34,34,34)">Skype: casioa5302ca<u></u><u></u></p><p class="MsoNormal" style="color:rgb(34,34,34)"><a href="mailto:frantisek.borsik@gmail.com" style="color:rgb(17,85,204)" target="_blank">frantisek.borsik@gmail.com</a></p></div></div></div></div></div></div></div></div></div></div></div></div></div>