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


Prioritizace paketu a DSCP na Mikrotiku

Základní nastavení QoS pro televize pro Alcomy na Mikrotikách:

IP rozsahy televizních služeb

nejprve je potřeba si vydefinovat televizní služby

/ip firewall address-list
add address=83.208.217.0/24 list=O2TV
add address=10.107.252.17 list=sledovaniTV
add address=89.248.240.17 list=sledovaniTV
add address=188.246.116.0/22 list=sledovaniTV
add address=212.67.66.0/24 list=T-mobileTV
add address=185.41.48.0/22 list=SkylinkTV
add address=62.24.71.74 list=KukiTV
add address=83.240.98.66 list=KukiTV
add address=83.240.98.90 list=KukiTV
Značkování paketů pomocí DSCP a následně dle 802.1Q

Následně se dle těchto IP adres označkují DSCP značkou pakety těch služeb, které z výroby neznačkují (sledovaniTV značkuje). Poslední pravidlo nastaví dle 802.1Q prioritu paketu dle DSCP značky a to dle horních 3 bitů (protože priorita je 0-7 a DSCP je 0-63), viz tabulka

802.1Q vs DSCP.png
/ip firewall mangle
add action=change-dscp chain=prerouting comment="SkylinkTV DSCP32" new-dscp=\
    32 passthrough=no src-address-list=SkylinkTV
add action=change-dscp chain=prerouting comment="O2TV DSCP32" new-dscp=32 \
    passthrough=no src-address-list=O2TV
atd ... pro další služby
add action=set-priority chain=postrouting comment="DSCP to WMM priority" \
    new-priority=from-dscp-high-3-bits passthrough=yes
QoS na Alcomách

Nakonec se zapne na Alcomě QoS podpora, ta má přednastaveno, jak má ty fronty řadit, viz obrázek. Alcoma pak začne posílat televizní pakety s prioritou.

Alcoma QoS.png


Toto nastavení je vhodné udělat na routeru, který je před postiženou oblastí. Tzn. nikoliv na routeru pro svou oblast, ale na tom předcházejícím. Aby už spoj do oblasti pracoval s prioritou.

WMM podpora na MK

Nakonec je vhodné zapnout na sektorech a klientech podporu WMM. To je funkce, která zase podle priority paketu zkusí daný paket v radiovém čase odeslat dříve. viz povídání https://wiki.mikrotik.com/wiki/Manual:WMM

Zapne se jednoduše:

/interface wireless set [find default-name=wlan1] wmm-support=enabled

WMM pracuje s dříve označenou prioritou v rámci postrouting pravidla "DSCP to WMM priority".

Pro účely WMM lze pravidla z /ip firewall mangle aplikovat i na koncovém routeru.

Výkonové potřeby

Pravidla si na RB3011 sežerou při toku cca 250Mbps cca 35% výkonu. Něco to je, ale není třeba se toho bát.

Závěr

Slovem na závěr, pravidla mangle by byla vhodná dělat už na IGW, hodnoty DSCP i priorita paketu přežije při routování. Tyto pravidla, dá se říct, děláme za poskytovatele služby. SledovaniTV si pakety označuje, zajišťuje si tak lepší podporu při zapnutých QoS funkcích. O2TV nebo Skylink na to kašlou a spoléhají na to, že sítě poskytovatelů jsou dostatečně propustné. Dalo by se říci, že poskytovaná služba ze strany O2TV nebo Skylink není dost kvalitní a zabezpečena a nechceme-li, aby nám členové nadávali na nefungující internet a síť jen proto, že jim padá a seká se televize, tak je to jediná šance, jak si pomoct. (edited)

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

<todo - doplnit samotný script>

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)


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

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