QoS: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
(Založena nová stránka s textem „Místo shromaždující poznatky o řízení provozu na APčkách v HKFree === Hotové scripty === ==== Řešení od PaTaNa (používané v Dobrušce) ==…“)
 
(WMM a 802.1Q na MK)
 
(Nejsou zobrazeny 4 mezilehlé verze od jednoho dalšího uživatele.)
Řádek 1: Řádek 1:
 
Místo shromaždující poznatky o řízení provozu na APčkách v HKFree
 
Místo shromaždující poznatky o řízení provozu na APčkách v HKFree
  
=== Hotové scripty ===
+
<br />
  
==== Řešení od PaTaNa (používané v Dobrušce) ====
+
=== Prioritizace paketu a DSCP na Mikrotiku ===
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 <code>wiki</code>, třeba se zde objeví ještě pár připomínek či nápadů pro vylepšení.
+
Základní nastavení QoS pro televize pro Alcomy na Mikrotikách:
  
* Otestováno (v provozu) na jádře: <code>4.9.0-8-amd64</code> distribuce <code>debian-based</code>.
+
====== IP rozsahy televizních služeb ======
* Využívané prostředky: <code>iproute2</code>, <code>ipset</code> (doplněk, potřeba doinstalovat <code>apt install ipset</code>)
+
nejprve je potřeba si vydefinovat televizní služby
* Stručný popis fungování:
+
/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
  
* <code>tar</code> obsahuje dva soubory: <code>qos/traffic-shaping</code> (soubor bash scriptů pro definovanou správu QoS) a <code>qos/ipset_list</code> (základní "balík" ip address pro filtraci provozu specializováno na IPTV, možno doplňovat/editovat)
+
====== Značkování paketů pomocí DSCP a následně dle 802.1Q ======
* spuštění: <code>qos/traffic-shaping start</code> vytvoří QoS definovaný defaultně pro Dobrušku (300Mbps <code>download</code>, 300 Mbps <code>upload</code>, 40Mbps <code>vyhrazený traffic pro IPTV</code>), možno změnit individuálně při definování proměnných před spouštěcím scriptem (příklad):
+
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<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>
 +
[[Soubor:802.1Q vs DSCP.png|žádné|náhled]]
 +
/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.
 +
[[Soubor:Alcoma QoS.png|žádné|náhled]]
 +
 
 +
 
 +
<u>Toto nastavení je vhodné udělat na routeru, který je před postiženou oblastí.</u> Tzn. nikoliv na routeru pro svou oblast, ale na tom předcházejícím. Aby už spoj do oblasti pracoval s pr<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>ioritou.
 +
 
 +
====== 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 r<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>ad<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>iovém čase odeslat dříve. viz povídání <nowiki>https://wiki.mikrotik.com/wiki/Manual:WMM</nowiki>
 +
 
 +
Zapne se jednoduše:
 +
 
 +
<code>/interface wireless set [find default-name=wlan1] wmm-support=enabled</code>
 +
 
 +
WMM pracuje s dříve označenou priorit<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>ou v rámci postrouting pravidla "DSCP to WMM priority".
 +
 
 +
<u>Pro účely WMM lze pravidla z <code>/ip firewall mangle</code> apl</u><span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span><u>ikovat i na koncovém routeru.</u>
 +
 
 +
====== Výkonové potřeby ======
 +
Pravidla si na RB3011 sežerou při toku cca 250Mbps cca 35<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>% výkonu. Něco to je,<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span> ale není třeba se toho bát.
 +
 
 +
====== Záv<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>ěr<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span> ======
 +
Slovem na závěr, pravidla mangle b<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>y byla vhodná dělat už na IGW, hodnoty DSCP i priorita paketu přežije při routování. Tyto prav<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>idla, dá se říct, děláme za poskytovatele služby. SledovaniTV si pakety označuje,<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span> zajišťuje si tak le<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>pší podporu při zapnutých QoS funkcích. O2TV nebo Skylink na to kašlou a spoléhají na to, že sítě poskytovatelů jso<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>u dostatečně propustné. Dalo by se říci, že poskytovaná služba ze strany O2TV ne<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>bo Skylink není dost <span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>kvalitní a zabezpečena a nechceme-li, aby nám členové nadávali na nefun<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>gující internet a síť jen proto, že jim padá a seká se televize, tak je to jediná šance, jak s<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>i pomoct. (edited)
 +
<br />
 +
 
 +
===Řešení od PaTaNa (používané v Dobrušce)===
 +
<todo - doplnit samotný script>
 +
 
 +
Př<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>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 pokus<span data-stringify-type="paragraph-break" class="c-mrkdwn__br"></span>it 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 <code>wiki</code>, 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: <code>4.9.0-8-amd64</code> distribuce <code>debian-based</code>.
 +
*Využívané prostředky: <code>iproute2</code>, <code>ipset</code> (doplněk, potřeba doinstalovat <code>apt install ipset</code>)
 +
*Stručný popis fungování:
 +
 
 +
*<code>tar</code> obsahuje dva soubory: <code>qos/traffic-shaping</code> (soubor bash scriptů pro definovanou správu QoS) a <code>qos/ipset_list</code> (základní "balík" ip address pro filtraci provozu specializováno na IPTV, možno doplňovat/editovat)
 +
*spuštění: <code>qos/traffic-shaping start</code> vytvoří QoS definovaný defaultně pro Dobrušku (300Mbps <code>download</code>, 300 Mbps <code>upload</code>, 40Mbps <code>vyhrazený traffic pro IPTV</code>), 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:
 
  1/1 GBps connection 110 Mbps IPTV:
 
  DOWNLINK_RATE=1000 UPLINK_RATE=1000 IPTV_RATE=110 /root/qos/traffic-shaping start
 
  DOWNLINK_RATE=1000 UPLINK_RATE=1000 IPTV_RATE=110 /root/qos/traffic-shaping start
  
* pro shapping jako <code>classful qdisc</code> zvoleno <code>HTB</code> s využitím <code>SFQ</code> algoritmu na ''listech'' (prostudujte na Google ) - defaultní <code>SFQ_PERTURB=10</code>, možno znovu změnit přidáním <code>SFQ_PERTURB=xx</code> před spouštěcím skriptem
+
*pro shapping jako <code>classful qdisc</code> zvoleno <code>HTB</code> s využitím <code>SFQ</code> algoritmu na ''listech'' (prostudujte na Google ) - defaultní <code>SFQ_PERTURB=10</code>, možno znovu změnit přidáním <code>SFQ_PERTURB=xx</code> před spouštěcím skriptem
* skript umožňuje následující akce: <code><start|stop|restart|status|save-list> [--verbose|-v]</code>
+
*skript umožňuje následující akce: <code><start|stop|restart|status|save-list> [--verbose|-v]</code>
* definovaná struktura <code>qdisc</code> pro '''upload''' (dev: <code>eth0</code>) v defaultu:
+
*definovaná struktura <code>qdisc</code> pro '''upload''' (dev: <code>eth0</code>) v defaultu:
  
 
       root 1: (HTB)
 
       root 1: (HTB)
Řádek 26: Řádek 81:
 
           10: SFQ (perturb 10)
 
           10: SFQ (perturb 10)
  
* definovaná struktura <code>qdisc</code> pro '''download''' (dev: <code>ifb-eth0</code>) v defaultu:
+
*definovaná struktura <code>qdisc</code> pro '''download''' (dev: <code>ifb-eth0</code>) v defaultu:
* <code>ifb</code> je virtualizované rozhraní, na které je zrcadlen provoz z defaultního <code>eth</code> a následně filtrováno pro shaping
+
*<code>ifb</code> je virtualizované rozhraní, na které je zrcadlen provoz z defaultního <code>eth</code> a následně filtrováno pro shaping
  
 
       root 1: (HTB)
 
       root 1: (HTB)
Řádek 49: Řádek 104:
 
   1111: SFQ      1112: SFQ    1121: SFQ      1122: SFQ
 
   1111: SFQ      1112: SFQ    1121: SFQ      1122: SFQ
 
  (perturb 10)  (perturb 10)  (perturb 10)  (perturb 10)
 
  (perturb 10)  (perturb 10)  (perturb 10)  (perturb 10)
 +
<br />
 +
====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 ===
+
====Zdroje====
 
Stránka zabývající-se problémem "bufferbloat" a QoS frontami: https://www.bufferbloat.net/projects/codel/wiki/Cake/
 
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

Aktuální verze z 12. 12. 2021, 13:23

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