So. Pro 21st, 2024

Quality of Service

QoS je celková výkonnost sítě, zejména přesně ta výkonnost, která je viditelná uživateli na síti.
RouterOS implementuje několik QoS metod jako například traffic speed limiting (shaping) či traffic prioritisation atd..

Speed limiting

přímá kontrola nad vstupním provozem (inbound traffic) nelze zajistit, ale je možné zajišťovat omezování rychlosti prostřednictvím zahazování příchozích packetů.
TCP se přizpůsobí efektivní rychlosti spojení (effective connection speed).

Simple Queue u klienta

jednoduchá fronta, která může být použita k limitování rychlosti přenosu dat (data rate) následujícími způsoby:

  • Klientovu rychlost stahování (download speed)
  • Klientovu rychlost natahování dat směrem do sítě (upload speed)
  • Klientovu celkovou rychlost toku dat (download + upload)

Na simple Queue se dostaneme kliknutím na položku Queues v levém menu, nové pravidlo k limitaci přidáme pomocí tlačítka +:

cl9_queue

Do name můžeme vyplnit cokoliv, co nám pomůže idenfitikovat tuto frontu, Target už zadáváme konkrétní IP adresu, nebo dokonce celou síť, kterou chceme omezit. do MAX limit již zadávám 1Mbps pro Upload a Pro Download pro ukázku pouhých 768kbps. Potom na cílovém počítači zkuste něco stáhnout odněkud z webového serveru, odkud víte, že jste měli větší stahovací rychlosti, než udávané.

Torch

nástroj k monitorování provozu v reálném čase. Dostaneme se k němu buď skrze Queues/poklikáním na konkrétní vytvořený záznam a kliknutím na tlačítko Torch. Nebo skrze Tools/Torch:

cl9_torch

Torch funguje jednoduše. Do políčka Src. Address zadáme adresu ip adresy, jejíž spojení chceme sledovat v mém případě jsem tam zadal ip adresu počítače, se kterým tento mikrotik ovládám (mám k dispozici pravý mikrotik z předchozích modulů, který je připojen do internetu). Ve vysouvacím menu interface jsem si vybral interface, do kterého je zastrčený kabel, vedoucí z téhož počítače a pak stačí kliknout na tlačítko start a už vidíte co z této zdrojové adresy teče a co případně teče do ní.

 

 Simple Queue směrem k serveru

Představte si, že nechcete omezovat jednotlivé klienty, ale zkrátka dáte limitovat třeba celou síť k serveru. Třeba IT oddělení nebude mít limity žádné, zato účetní zaškrtíte třeba jen na 5Mbitech při přístupu na konkrétní IP adresu serveru. Jak to tedy udělat?

Představme si, že máme v internetu někde dál od WAN rozhraní našeho routeru třeba diskové pole s IP 192.168.123.165 a klientům ze sítě 192.168.20.0/24 chceme snížit rychlost Uploadu na 512kbps a rychlost Downloadu 768kbps. Zde je ukázka:
cl9_queue_serverV Targetu může být i IP 0.0.0.0/0 (to znamená, všichni klienti) přístupující na adresu Dst (destination – cílového serveru) s IP 192.168.123.165.

Throttle connection

Zjistěte si pingem IP adresu serveru www.mikrotik.com. (v době psaní tohoto článku to byla adresa 159.148.147.196). Můžete si dát stáhnout MTCNA outline a pokud jste ve windows, tak můžete vyzkoušet pomocí CTRL + SHIFT + ESC proklikat se ke grafu vytížení sítě a ověřit si tak, že simple queue skutečně funguje a taky jak funguje omezování spojení v praxi:

cl9_omezeni_spojeni_na_server_mikrotik

Guaranteed Bandwidth

se používá k ujištění, že klient opravdu dostane minimální garantovanou rychlost, pod kterou mu rychlost připojení nespadne. Zbývající provoz bude rozdělen mezi klienty na bázi „kdo dřív příjde, ten dřív mele“. (fronta, FIFO = first in first out). Kromě packetového FIFA můžeme vybrat i bajtové FIFO.
Kontroluje se parametrem s názvem Limit-at.

cl9_limitat

Dostanem se tam přes Queues/Simple Queue/edit (ěx kliknutím na konkrétní vytvořenou frontu (queue)/záložka advanced.

Typický příklad Guaranteed Bandwidthu jsou 3 klienti na síti, celkový bandwidth 10Mbitů. 3 klienti mají garantovaný bandwidth 3 mbity a zbývající trafik se rozdělí mezi klienty.

SFQ – Stochastic Fair Queuing

dělá to, že každý packet pouští stejnou chvíli na router. Všechny služby tedy dostanou stejnou šanci procpat svůj packet.

cl9_sfq

Stochastic fair dělá to, že si časy propouštění packetů rozdělí po 100 milisekundách. A když klient A stahuje nějaký .iso soubor a někdo jiný chce jít na web, tak to 100 milisekund propouští packety pro .iso soubor a 100milisekund to propouští packety pro web. Zde už ukázka sfq aplikovaného pro wifi hot-spot. Typ fronty sfq, procpe to najednou 1514 bajtů, každých ve screenshotu se uvádí 5 s, tedy 5 sekund. (pokud se pletu, opravte mě v diskusi).

Burst

Používá se k povolení větších přenosových rychlostí na krátkou časovou dobu. Typický příklad – stahujete 5 megový PDF dokument, nebo 3 megovou .mp3 audio nahrávku. Používá se to zejména pro HTTP trafic (webový provoz). Díky tomu nabíhají webové stránky rychleji. Je zde však i přesto uplatněna politika Max Limit, který jsme si nastavovali v Simple Queue u klienta.
Ukázka burstu:

cl9_burst

  • Burst limit – max upload/download přenosová rychlost (data rate), které může být dosaženo během burst (dávkovacího) režimu.
  • Burst time – čas (v sekundách), po dobu kterého je počítána průměrná přenosová rychlost (data rate). Pozor! Nejedná se o dobu dávky (burst) jako takové!
  • Burst Threshold – Pokud průměrná rychlost přenosu data (data rate)překročí, nebo klesne pod určitou prahovou hodnotu (threshold), tak je burst (dávka) aktivována či deaktivována.

Per Connection Queuing (dále jen PCQ)

Typ fronty pro optimalizaci velkých QoS nasazení limitováním „sub-streamů“ (datových „pod-proudů“ <- to zní fakt česky strašně, proto to nepřekládám). Umožňuje nám to tedy nahradit více front (queues) jednou jedinou.
K tomu může být použito hned několik klasifikátorů:

  • source/destination IP address (zdrojová/cílová IP adresa)
  • source/destination port (zdrojový/cílový port)

Další pojmy v Per Connection Queuing:

  • Rate – maximální dostupná datová propustnost každého sub-streamu
  • Limit – velikost fronty jednoho sub-streamu (v KiB)
  • Total Limit – maximální velikost dat ve frontě ve všech sub-streamech (KiB)

K PCQ se dostaneme skrze Queues/záložka Queue Types / klikneme na ikonku s modrým + a vyplníme údaje jako na obrázku.

cl9_pcq1

 

Přejděme na záložku Interface Queues/ a pro místní LAN rozhraní (LAN interface) na ether2, ve kterém máte buď připojený druhý router, nebo Vaše klienty vnitřní sítě, a Queue type vyberte ten, který jsme si vytvořili – tedy klient-download. Potom klikněte na Váš WAN interface 2x a tomu zase nastavte klient-upload v Queue type kolonce. A dejte u obou OK.

cl9_klient_up_down

Odteď všichni klienti připojení do lan rozhraní budou mít limitován jak Upload tak Download na rychlost 1Mbitu za vteřinu.

Ověříme přes Torch.

 

 

 

Avatar

By mirra

Hardwaru a počítačům se věnuji již od roku 2003. Za tu dobu jsem poskládal stovky počítačů, opravil tisíce počítačů a vyřešil nespočetně problémů, vad a chyb, se kterými se setkávali uživatelé. Od roku 2005 se zabývám servery, zejména těmi herními, v roce 2007 jsem se začal věnovat Valve Source SDK level designu, který šel od roku 2009 k ledu kvůli studiu Informatiky na univerzitě. Podílel jsem se chvíli i na provozu síťové laboratoře MENDELU, dnes spravuji v jedné osobě cca 100 serverů/diskových polí na univerzitě, řeším IT v malých a středních firmách tak, aby firmy ušetřily nemalé částky při zlepšení kvality a soustředím se na snižování nákladů na IT od licencí až po hardware, software, provádím konsolidace a audity platnosti licencí, které firmám šetří rovněž nemalé peníze. Z velkých firem jsem měl příležitost s dalšími kolegy řešit správu 8000 serverů po celé západní Evropě s vysokou mírou automatizace a poznávání nejrůznějších evropských pracovních mentalit. Dále jsem řešil hybridní cloud ve velké firmě, orientované na trhy střední a východní Evropy. Posledních několik let se věnuji Devops pro velké zákazníky v Azure cloudu, spravuji kubernetes (AKS), Gitlab.

13 thoughts on “Základy Mikrotiku #9 Module 7: QoS, Speed Limiting, Simple Queue, Torch, Guaranteed Bandwitdth, Burst, Per Connection Queuing, PCQ”
  1. Super návody pro laiky jako jsem já, díky moc.
    Měl bych doplňující dotaz, pokud bych potřeboval maximálně posílit rychlost (především odezvu) pro konkrétní online hru (Word of Tanks) a znám IP servrů na kterých běží, je nějak možné dát maximální prioritu nějaké vnější IP adrese, nebo to lze udělat nějak jinak? například vysokou prioritou pro konkrétní aplikaci?
    Chtěl bych na to použít RB941-2nD-TC

    1. Zdravím Michale,

      je mi ctí, že návody, které v minulosti defakto sloužily mě proto, abych se lépe připravil na certifikaci MTCNA, pomáhají i stovkám dalších lidí, od laiků, až po kolegy, připravující se na stejnou certifikaci.
      V podstatě by to mělo jít. Pokud to nepůjde přímo tady v limitování trafiku dát do nějaké podmínky, tak by se to hodilo jako pravidlo ve firewallu.
      Ve firewalllu by to bylo jako IP vzdáleného World of Tanks serveru, na který se budou hráči v síti připojovat. (doporučím posunout to pravidlo někam nahoru hned pod related/established (k otestování to doporučím hodit klidně úplně jako první pravidlo ze všech, ať je fakt jistota, že se to tzv. matchne/shodne). V tu chvíli se packety při průchodem firewallu matchnou s tímto pravidlem a bude pro ně upřednostněna aplikace na konkrétní IP.

      Jiná možnost je to stejné co jsem popsal, ale s konkrétním vzdáleným portem, kterou používá ta hra. Ale pozor na jednu věc.
      Když já se připojuju na vzdálený server (vysvětlím teď s webem, ať se to lépe chápe), tak použiju třeba seznam.cz (standardně port nezadávám, je to např. port 80). Vzdálený port je port 80. Lokální port mi to rezervuje např. port 51348 (vždy nějaký náhodný). Proto si doporučuju pohlídat, aby se to matchnulo se vzdáleným portem a pak to upřednostnilo veškerou komunikaci s tím portem související (related/established).

      Trošku jsem googlil a čísla portů World of Tanks jsou zde:
      http://forum.worldoftanks.com/index.php?/topic/60404-wot-port-for-qos/
      a taky zde:
      http://forum.worldoftanks.eu/index.php?/topic/186654-ports-used-by-world-of-tanks/

      Je to trošililinku alchymie, ale když se to podaří, určitě to doporučím někde zveřejnit jako pomoc dalším uživatelům. Výsledek bude jistě stát za to, protože v té síti potom budou moci klidně uživatelé stahovat, ale WoTka se rychlostní omezení týkat nebudou.

      Snad jsem alespoň trošku pomohl, kdyby cokoliv, pokusil bych se to objasnit v další odpovědi, kdyby něco nebylo jasné.

      EDIT: tak se omlouvám za mystifikaci, návod je přesně takový, jak tu uvedl David viz. http://www.mirra.8u.cz/?p=1567#comment-66
      Jak budu mít čas, tak se k tomu dostanu a udělám přesně na tohle návod, protože tohle se lidem může hodit, ať už v domácnostech, kdy někdo chce pařit a někdo stahovat, tak v menších i středních firmách, kde je potřeba upřednostňovat v zájmu QoS nějaký konkrétní trafik.

      1. Ahoj Miro,
        je to už pár let staré, ale právě řeším to stejné. Jakmile na 1 PC spustím stahování přes torrent (asi 4500packet rate) přestane se spravedlivě rozdělovat rychlost a ten jeden uživatel sebere téměř celou šířku pásma.
        Jak toto na Mikrotiku řešit?
        Díky
        Vítek

        1. Ahoj Víťo, tak to vypadá, že bych měl napsat extra článek, který se věnuje jen frontám potom, co si to sám po tak dlouhé době zase sám vyzkouším a nascreenshotuju. Zkusím si limitovat provoz na konkrétním portu a pak ukážu návod, jak si to nastavit.

  2. Dík moc,
    koupím mikrotika a budu laborovat.
    Až budu v koncích, tak si dovolím se ještě zeptat.

  3. Zdravím,
    Míro! Mystifikuješ :-). Úvaha je špatná. V této kapitole máš popsaný jen traffic shaping (ořezávání provozu). FW filter rules nic neupřednostní v provozu. Potřeba je QoS. Ve stručnosti: v mangle musíš označit conns a packets –> třeba games_conn a pak z games_conns pakety –> games_pkt – podle dst. IP, nebo protoklu TCP/UDP a dst. portu, popřípadě kombinaci. Pak vytvoříš další značku pro zbylý traffic others_conn a stejně i others_pkt. Pak si nastavíš queue a řekneš, že pakety s markem „games_pkt“ v průchodu fw nejvyšší prioritu – 1 a „others_pkt“ tu nejnižší – 8. Žádná alchymie. Jinak letem světem návodka pro začátečníky fajn, chystal jsem se na to taky. Tak už nemusím :-))).

    1. Ahoj Davide,

      aha, tak máš pravdu, fakt jsem mystifikoval, za což dlužím všem omluvu. Je to přesně jak píšeš.

      Zkusím si to takhle nastavit (jak bude čas) a pak to nascreenshotuju a udělám z toho návůdek pro ostatní.

      Ještě jednou díky jak za rychlý popis, tak za opravu jako takovou.

      1. Zdar,
        těším se na ty screenshoty.
        jinak z Mikrotika jsem nadšený, taková levná hračka pro velké kluky. Oproti varování na netu, že to není pro laiky, lze velmi snadno nastavit vše co zvládnou jiné běžné routery. V quick set je přednastavených 5 nejběžnějších režimů a nevím čím to, ale s mikrotikem a přednastaveným režimem home AP se mi podstatně spravil ping i bez QoS, šlo to z 80 pod 50. Od QoS si slibuji další zlepšení, s tím, že bude hlavně stabilní, bez ohledu na to kolik dalších zařízení bude na YouTube a podobně.

  4. super,
    před týdnem sem koupil mikrotik a základní nastavení byla v pohodě. Pak jsem chtěl některé věci vyšperkovat (priority, zakázat některé adresy a další pravidla) a zjistil , že nevím jak na to. Na webu sem našel návody většinou už moc odborné – nic pro mne.
    ale tady je konečně něco, co mi pomohlo pochopit některé z funkcí.
    Míro, díky moc a klidně můžeš ještě něco připsat.
    Radek

    1. Ahoj Radku,

      je mi ctí, že jsem ti mohl pomoci skrze svoje články. Ty články jsem paradoxně psal hlavně kvůli sobě, abych se tenkrát připravil na MTCNA certifikaci a z té mikrotikácké wikiny mi to taky nepřipadalo dvakrát srozumitelné. Tak jsem se rozhodl, že na to napíšu takovéto tutorialy a sám z nich čerpám dodnes. A když se to někomu taky hodí a pomůže mu to, tak jsem za to jedině rád. 😉

  5. Dobrý den,
    můžete mi prosím poradit. Ve firewall pravidlech mám jako výchozí politiku na inputu, outputu i forwardu drop. Co pak potřebuji povolit, tak povolím. Jde mi o dst-nat, kde např. povolím přístup z venku přes port xxx1 na lokální port xxx2. Vše funguje, ale na jednom mikrotiku musím povolit i forward portu xxx2 na lokální IP a druhém mukrotiku stačí pouze dst-nat a forward už povolovat nemusím.
    Moc děkuji

    1. Dobrý den,

      no, vysvětlím jako modelovou situaci.
      Pokud mám třeba port 80 veřejnou ip 150.150.150.150 a chci to ve vnitřní síti na dst-nat třeba port 8080 s ip 192.168.1.2 a ta ip adresa 192.168.1.2 je taky router, který forwarduje něco dál, tak musíte i na tom druhém routeru dát pravidlo, že cokoliv přijde na port 8080 na ip 192.168.1.2 portforwardit na určitý port 8080 ve vnitřní síti, která může být vymyslím si 192.168.123.123. Tak potom bych i na ten druhý dal forwarding a dst-nat, abych si fakt pohlídal, že to na tu konkrétní IP adresu přistane, jak potřebuji. Pokud se sám náhodou mýlím, určitě se rád nechám někým vyvést z omylu, řešení, které však popisuji, musí fungovat.

  6. Zdravím,

    chtěl bych se zeptat zda by se dalo v MK přepínat mezi dvěmi Queue po nějakém čase. Potřebuji docílit toho, aby mi Queue1 běžela třeba 10s a potom aby mi najela Queue2 a taky pak běžela nějakou dobu, no a nakonec bych to potřeboval celé zacyklit aby se to přepínalo furt automaticky. Také mě napadlo, že by se to dalo udělat tím, že by se to automaticky zaplo a vyplo: Queue1 on/Queue2 off po dobu 10s a pak by se to přehodilo na Queue1 off/Queue2 on no a zase to nějak zacyklit.

    Dekuji moc za nápady, pokoušel jsem se to nějak spáchat, ale nepovedlo se mi to.

    Děkuji za pomoc

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *