LibreQoS/README.md

110 lines
6.4 KiB
Markdown
Raw Normal View History

2022-11-20 10:28:39 -06:00
<a href="https://libreqos.io/"><img alt="LibreQoS" src="https://user-images.githubusercontent.com/22501920/202913614-4ff2e506-e645-4a94-9918-d512905ab290.png"></a>
2022-09-04 15:35:38 -05:00
LibreQoS is a Quality of Experience (QoE) Smart Queue Management (SQM) system designed for Internet Service Providers to optimize the flow of their network traffic and thus reduce bufferbloat, keep the network responsive, and improve the end-user experience.
2022-09-11 14:30:40 -05:00
2022-10-21 08:40:25 -05:00
Servers running LibreQoS can shape traffic for many thousands of customers.
2022-09-11 14:30:40 -05:00
2022-11-17 16:09:16 -06:00
Learn more at [LibreQoS.io](https://libreqos.io/)!
2022-09-07 12:18:52 -05:00
2023-02-04 16:37:18 -06:00
## Sponsors
Special thanks to Equinix for providing server resources to support the development of LibreQoS.
2023-02-04 20:45:41 -06:00
Learn more about [Equinix Metal here](https://deploy.equinix.com/metal/).
2023-02-04 16:37:18 -06:00
2022-12-11 11:58:07 -06:00
## Support LibreQoS
2023-02-28 10:06:02 -06:00
Please support the continued development of LibreQoS by sponsoring us via [GitHub Sponsors](https://github.com/sponsors/LibreQoE) or [Patreon](https://patreon.com/libreqos).
2022-12-11 11:58:07 -06:00
2023-02-28 10:53:52 -06:00
## Matrix Chat
Our Matrix chat channel is available at [https://matrix.to/#/#libreqos:matrix.org](https://matrix.to/#/#libreqos:matrix.org).
2023-03-08 16:34:31 -06:00
<img alt="LibreQoS" src="https://user-images.githubusercontent.com/22501920/223866474-603e1112-e2e6-4c67-93e4-44c17b1b7c43.png"></a>
2023-02-04 19:16:36 -06:00
2022-09-13 10:16:37 -05:00
## Features
2022-11-17 16:09:16 -06:00
### Flexible Hierarchical Shaping / Back-Haul Congestion Mitigation
2022-12-07 12:01:41 -06:00
<img src="https://raw.githubusercontent.com/LibreQoE/LibreQoS/main/docs/nestedHTB2.png" width="350"></img>
2022-09-12 23:40:39 -05:00
2022-11-20 10:28:39 -06:00
Starting in version v1.1+, operators can map their network hierarchy in LibreQoS. This enables both simple network hierarchies (Site>AP>Client) as well as much more complex ones (Site>Site>Micro-PoP>AP>Site>AP>Client). This can be used to ensure that a given sites peak bandwidth will not exceed the capacity of its back-haul links (back-haul congestion control). Operators can support more users on the same network equipment with LibreQoS than with competing QoE solutions which only shape by AP and Client.
2022-09-12 23:40:39 -05:00
### CAKE
2023-02-04 20:45:41 -06:00
CAKE is the product of nearly a decade of development efforts to improve on fq\_codel. With the diffserv\_4 parameter enabled CAKE groups traffic in to Bulk, Best Effort, Video, and Voice. This means that without having to fine-tune traffic priorities as you would with DPI products CAKE automatically ensures your clients OS update downloads will not disrupt their zoom calls. It allows for multiple video conferences to operate on the same connection which might otherwise “fight” for upload bandwidth causing call disruptions. With work-from-home, remote learning, and tele-medicine becoming increasingly common minimizing video call disruptions can save jobs, keep students engaged, and help ensure equitable access to medical care.
2022-09-12 23:40:39 -05:00
### XDP
2022-11-20 10:28:39 -06:00
Fast, multi-CPU queueing leveraging xdp-cpumap-tc and cpumap-pping. Currently tested in the real world past 11 Gbps (so far) with just 30% CPU use on a 16 core Intel Xeon Gold 6254. It's likely capable of 30Gbps or more.
2022-09-12 23:40:39 -05:00
### Graphing
2023-02-04 19:16:36 -06:00
You can graph bandwidth and TCP RTT by client and node (Site, AP, etc), using InfluxDB.
2022-09-12 12:34:17 -05:00
2022-10-19 21:31:57 -05:00
### CRM Integrations
* UISP
* Splynx
2022-10-19 21:31:57 -05:00
2023-03-21 09:21:44 -05:00
## Server Recommendations
It is most cost-effective to buy a used server with specifications matching your unique requirements, as laid out in the System Requirements section below.
For those who do not have the time to do that, here is a server config for up to 20 Gbps throughput:
* 20 Gbps | [Dell R450 Config](https://www.dell.com/en-us/shop/servers-storage-and-networking/poweredge-r450-rack-server/spd/poweredge-r450/pe_r450_15127_vi_vp?configurationid=63956ce8-1714-47c0-89ec-c6729c1ca867)
2023-03-21 10:54:01 -05:00
The [AsRock 1U4LW-B6502L2T](https://www.thinkmate.com/system/asrock-1u4lw-b6502l2t/635744) can be a great lower-cost option as well.
2022-09-07 12:18:52 -05:00
## System Requirements
2022-11-17 16:11:41 -06:00
### VM or physical server
* For VMs, NIC passthrough is required for optimal throughput and latency (XDP vs generic XDP). Using Virtio / bridging is much slower than NIC passthrough. Virtio / bridging should not be used for large amounts of traffic.
2022-10-21 08:35:27 -05:00
### CPU
2022-10-21 07:59:50 -05:00
* 2 or more CPU cores
* A CPU with solid [single-thread performance](https://www.cpubenchmark.net/singleThread.html#server-thread) within your budget. Queuing is very CPU-intensive, and requires high single-thread performance.
2022-10-21 08:35:27 -05:00
Single-thread CPU performance will determine the max throughput of a single HTB (cpu core), and in turn, what max speed plan you can offer customers.
| Customer Max Plan | Passmark Single-Thread |
| --------------------| ------------------------ |
2023-01-17 20:54:50 -06:00
| 100 Mbps | 1000 |
| 250 Mbps | 1500 |
| 500 Mbps | 2000 |
| 1 Gbps | 2500 |
| 2 Gbps | 3000 |
Below is a table of approximate aggregate throughput capacity, assuming a a CPU with a [single thread](https://www.cpubenchmark.net/singleThread.html#server-thread) performance of 2700 or greater:
| Aggregate Throughput | CPU Cores |
| ------------------------| ------------- |
| 500 Mbps | 2 |
| 1 Gbps | 4 |
| 5 Gbps | 6 |
| 10 Gbps | 8 |
| 20 Gbps | 16 |
| 50 Gbps* | 32 |
2022-10-22 17:49:12 -05:00
(* Estimated)
2022-10-21 08:35:27 -05:00
2023-01-17 20:55:11 -06:00
So for example, an ISP delivering 1Gbps service plans with 10Gbps aggregate throughput would choose a CPU with a 2500+ single-thread score and 8 cores, such as the Intel Xeon E-2388G @ 3.20GHz.
2022-10-21 08:35:27 -05:00
### Memory
2023-02-04 20:45:41 -06:00
* Minimum RAM = 2 + (0.002 x Subscriber Count) GB
2022-10-21 08:35:27 -05:00
* Recommended RAM:
| Subscribers | RAM |
| ------------- | ------------- |
| 100 | 4 GB |
| 1,000 | 8 GB |
| 5,000 | 16 GB |
2023-02-04 20:45:41 -06:00
| 10,000* | 18 GB |
| 50,000* | 24 GB |
2022-10-22 17:49:12 -05:00
(* Estimated)
2022-10-21 08:35:27 -05:00
### Network Interface Requirements
2022-10-21 08:36:32 -05:00
* One management network interface completely separate from the traffic shaping interfaces. Usually this would be the Ethernet interface built in to the motherboard.
2022-10-21 08:35:27 -05:00
* Dedicated Network Interface Card for Shaping Interfaces
* NIC must have 2 or more interfaces for traffic shaping.
* NIC must have multiple TX/RX transmit queues. [Here's how to check from the command line](https://serverfault.com/questions/772380/how-to-tell-if-nic-has-multiqueue-enabled).
2022-09-09 21:02:01 -05:00
* Known supported cards:
2022-10-19 21:31:57 -05:00
* [NVIDIA Mellanox MCX512A-ACAT](https://www.fs.com/products/119649.html)
* NVIDIA Mellanox MCX416A-CCAT
2022-09-09 21:02:01 -05:00
* [Intel X710](https://www.fs.com/products/75600.html)
* Intel X520
2022-09-10 19:37:08 -05:00
2023-03-10 09:19:50 -06:00
## Get Started
- [v1.4](https://github.com/LibreQoE/LibreQoS/wiki/v1.4)