QoS
Místo shromaždující poznatky o řízení provozu na APčkách v HKFree
Obsah
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
/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.
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>
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
distribucedebian-based
. - Využívané prostředky:
iproute2
,ipset
(doplněk, potřeba doinstalovatapt install ipset
) - Stručný popis fungování:
tar
obsahuje dva soubory:qos/traffic-shaping
(soubor bash scriptů pro definovanou správu QoS) aqos/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 (300Mbpsdownload
, 300 Mbpsupload
, 40Mbpsvyhrazený 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
zvolenoHTB
s využitímSFQ
algoritmu na listech (prostudujte na Google ) - defaultníSFQ_PERTURB=10
, možno znovu změnit přidánímSFQ_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íhoeth
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