QoS

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání

Místo shromaždující poznatky o řízení provozu na APčkách v HKFree

Další informace zde na Wiki

Starší stránka z roku 2006 zabývající se QoS na linuxu - QoS - linux

Historický shaper používaný pro SVM - Shaper pro SVM

Hotové scripty

Řešení od PaTaNa (používané v Dobrušce)

<todo - doplnit samotný script>

Při řešení problematiky s občasným vytížením linky od stahovačů a s tím nefunkční IPTV jsem se rozhodl ke kroku pokusit se mírně shapovat u hraničního dobrušského routeru spolu s prioritizací provozu. Script i s popisem nabízím "široké veřejnosti". Víc hlav, víc ví a hlavně, než to začnu bezhlavě cpát na wiki, třeba se zde objeví ještě pár připomínek či nápadů pro vylepšení.

  • Otestováno (v provozu) na jádře: 4.9.0-8-amd64 distribuce debian-based.
  • Využívané prostředky: iproute2, ipset (doplněk, potřeba doinstalovat apt install ipset)
  • Stručný popis fungování:
  • tar obsahuje dva soubory: qos/traffic-shaping (soubor bash scriptů pro definovanou správu QoS) a qos/ipset_list (základní "balík" ip address pro filtraci provozu specializováno na IPTV, možno doplňovat/editovat)
  • spuštění: qos/traffic-shaping start vytvoří QoS definovaný defaultně pro Dobrušku (300Mbps download, 300 Mbps upload, 40Mbps vyhrazený traffic pro IPTV), možno změnit individuálně při definování proměnných před spouštěcím scriptem (příklad):
1/1 GBps connection 110 Mbps IPTV:
DOWNLINK_RATE=1000 UPLINK_RATE=1000 IPTV_RATE=110 /root/qos/traffic-shaping start
  • pro shapping jako classful qdisc zvoleno HTB s využitím SFQ algoritmu na listech (prostudujte na Google ) - defaultní SFQ_PERTURB=10, možno znovu změnit přidáním SFQ_PERTURB=xx před spouštěcím skriptem
  • skript umožňuje následující akce: <start|stop|restart|status|save-list> [--verbose|-v]
  • definovaná struktura qdisc pro upload (dev: eth0) v defaultu:
     root 1: (HTB)
          |
         1:1 (HTB) rate:300mbit ceil:300mbit
          |  
         10: SFQ (perturb 10)
  • definovaná struktura qdisc pro download (dev: ifb-eth0) v defaultu:
  • ifb je virtualizované rozhraní, na které je zrcadlen provoz z defaultního eth a následně filtrováno pro shaping
     root 1: (HTB)
           |
          1:1 (HTB) rate:300mbit ceil:300mbit
       /                                      \
1:11 (HTB) rate:295mbit ceil:300mbit prio:2    1:12 (HTB) rate:5mbit ceil:300mbit prio:1
                    |                                               |
                 /     \                                       12: SFQ (perturb 10)
                /       \
               /         \
    1:111 (HTB) "TV"      1:112 (HTB) "others"
rate:40mbit ceil:55mbit  rate:260mbit ceil:300mbit
         prio:1                   prio:2
            |                        |
         /     \                  /     \
        /       \                /       \
1:1111 (HTB)  1:1112 (HTB)  1:1121 (HTB)  1:1122 (HTB)
SledovaniTV       O2TV       HTTP down     other down
     |              |            |              |
 1111: SFQ      1112: SFQ    1121: SFQ      1122: SFQ
(perturb 10)  (perturb 10)  (perturb 10)  (perturb 10)

Zdroje

Stránka zabývající-se problémem "bufferbloat" a QoS frontami: https://www.bufferbloat.net/projects/codel/wiki/Cake/

Automatizace pro "tc", bohužel nepodporuje všechny queues - https://github.com/hkbakke/tc-gen