A Quality of Experience and Smart Queue Management system for ISPs. Leverage CAKE to improve network responsiveness, enforce bandwidth plans, and reduce bufferbloat.
Go to file
2020-10-02 18:08:29 -06:00
docs Add files via upload 2020-10-02 11:07:05 -06:00
LibreQoS.py Add files via upload 2020-10-02 18:00:37 -06:00
LICENSE Initial commit 2020-10-02 09:18:14 -06:00
README.md Update README.md 2020-10-02 18:08:29 -06:00
UCRM_Integration.py Add files via upload 2020-10-02 18:02:56 -06:00

LibreQoS

A tool to traffic shape hundreds of clients and reduce bufferbloat using fq_codel. This is alpha software, please do not deploy in production.

Lab Requirements

  • Edge and Core routers with MTU 1500 on links between them
  • OSPF primary link (low cost) through the server running LibreQoS
  • OSPF backup link recommended Diagram

Server Requirements

  • VM or physical server
  • One management network interface
  • Two dedicated network interface cards, preferably SFP+ capable
  • Python 3
  • Recent Linux kernel
  • recent tc-fq_codel provided by package iproute2

Server Spec Recommendations

  • For up to 1Gbps
    • 4+ CPU cores
    • 6GB RAM
    • 32GB Disk Space
    • Passmark score of 13,000 or more (AMD Ryzen 5 2600 or better)
  • For up to 2Gbps
    • 6+ CPU cores
    • 8GB RAM
    • 32GB Disk Space
    • Passmark score of 17,000 or more (AMD Ryzen 5 3600 or better)
  • For up to 5Gbps
    • 8+ CPU cores
    • 16GB RAM
    • 32GB Disk Space
    • Passmark score of 23,000 or more (AMD Ryzen 7 3800X or better)
  • For up to 10Gbps
    • 16+ CPU cores
    • 32GB RAM
    • 32GB Disk Space
    • Passmark score of 38,000 or more (AMD Ryzen 9 3950X or better)

https://www.cpubenchmark.net/high_end_cpus.html

Features

  • HTB + fq_codel
  • Experimental support for CAKE (Common Applications Kept Enhanced)
  • TC filters divided into groups with hashing filters to significantly increase efficiency and minimize RAM usage

How to use

  • Add linux interface bridge br0 to the two dedicated interfaces
    • For example on Ubuntu Server 20.04 which uses NetPlan, you would add the following to the .yaml file in /etc/netplan/
bridges:
    br0:
      interfaces:
           - eth4
           - eth5
  • Modify setting parameters in LibreQoS.py to suit your environment
  • Run:
sudo python3 ./LibreQoS.py

Integration

  • Experimental UCRM integration added
    • Assumes you have a custom field on UCRM for customer CPE IPv4 address

Special Thanks

Thank you to the hundreds of contributors to the cake and fq_codel projects. Thank you to Phil Sutter, Bert Hubert, Gregory Maxwell, Remco van Mook, Martijn van Oosterhout, Paul B Schroeder, and Jasper Spaans for contributing to the guides and documentation listed below.

References

License

Copyright (C) 2020 Robert Chacón

LibreQoS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

LibreQoS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with LibreQoS. If not, see http://www.gnu.org/licenses/.