www.SAMURAJ-cz.com 

15.12.2017 Radana a Radan Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Cisco QoS 3 - omezování rychlosti - Policing, Shaping

Neděle, 01.02.2009 12:20 | Samuraj - Petr Bouška |
V minulém díle jsme řešili rozřazení provozu do tříd. Zároveň jsme si popsali Modular QoS CLI, které slouží ke konfiguraci většiny QoS vlastností na Cisco IOSu. Stručně byly zmíněny i příkazy pro vlastnosti, které se budou řešit v tomto článku. Jedná se o správu šířky pásma - Traffic Rate Management, tedy nastavení maximální rychlosti, kterou může určitý provoz (například uživatel) spotřebovat. Využijeme k tomu metodu policingu (rate limiting) a shapingu.

Traffic Rate Management - Policing and Shaping

Obě metody, policing a shaping, dělají to samé, ale jiným způsobem. Jejich účel je omezit šířku pásma pro určitý provoz, tedy nastavit maximální datový tok, který provoz nemůže překročit. Nijak ale negarantují minimální pásmo pro provoz.

  • Class-Based Policing - provoz omezuje tak, že pakety, které by překročili pásmo, zahodí, případně je může přeznačkovat. Můžeme omezovat pásmo na vstupu nebo výstupu z interfacu.
  • Class-Based Shaping - oproti policingu, shaping primárně nezahazuje pakety, ale zařazuje je do fronty, vychází se z toho, že tok je nárazový, takže shaping jej rozloží do delšího času. Může tvarovat provoz na výstupu z interfacu.

Pozn.: Jak bylo řečeno dříve, popisuji novější metody Class-Based. Dříve se používala metoda Committed Access Rate (CAR) pro policing, kde se konfiguroval přímo port. A Generic Traffic Shaping (GTS) pro shaping.

Stručně jsou výsledky obou metod zobrazeny na následujících grafech. Na prvním grafu je normální datový tok a červená linka zobrazuje maximální pásmo, na které chceme provoz omezit. Policing ořeže špičky, které překračují omezení. Kdežto shaping lépe využije dostupné pásmo jeho rozložením v čase.

Běžný provoz
Aplikace QoS policingu na provoz Aplikace QoS shapingu na provoz

Class-Based Policing

Používá se algoritmus zvaný Token Bucket (kbelík kupónů). Algoritmus říká to, že za daný čas mohu přenést pouze daný objem bytů.

Pozn.: U starších switchů se používal algoritmus Leaky Bucket (děravý kbelík).

Token Bucket algoritmus

Algoritmus Token Bucket se popisuje pomocí následujícího přirovnání. Máme kbelík (bucket), do kterého se přidávají kupóny (tokens) zadanou rychlostí (burst rate nebo average traffic rate nebo CIR). Kbelík má určitou velikost (burst size Bc), když je plný, tak se přicházející kupóny zahazují. Když přijde paket, tak se odeberou kupóny z kbelíku (1 kupón pro 1 byte paketu) a provede se conform-action (většinou se odešlou data). Pokud v kbelíku není dostatek kupónů, tak se na paket aplikuje exceed-action (většinou zahození).

Z popisu plyne, že tento algoritmus umožní přenést shluky dat o maximální velikosti Bc, ale záleží na předchozí komunikaci. Stejně tak je ovlivněna následující komunikace na průměrnou rychlost CIR. Jinak řečeno, můžeme přenášet data průměrnou rychlostí CIR a nárazově přenést Bc bytů navíc. Následující obrázek shématicky zobrazuje funkci algoritmu.

Schéma Token Bucket algoritmu

Token Bucket algoritmus se používá ve dvou verzích:

  • single token bucket - popsaný výše, má jednu hranici a dvě akce
  • dual token bucket - přidává druhou hranici (vyšší) a novou akci violate-action (při překročení nové hranice). Používá se to k tomu, že můžeme určitý provoz odesílat, při větší zátěži ještě provoz odeslat, ale se sníženou prioritou a další provoz zahodit.

Dual Token Bucket algoritmus

Dual Token Bucket algoritmus jsem viděl na Ciscu popisovaný dvěma způsoby. Základem vždy je, že máme dva kbelíky a pokud při příchodu paketu není dostatek kupónů v prvním, tak se podíváme do druhého. Pokud je v druhém kbelíku dostatek kupónů, tak se kupóny odeberou a provede se exceed-action. Pokud nejsou kupóny ani zde, tak se provede violate-action.

Rozdíl je v tom, jak se přidávají kupóny do druhého kbelíku. První možnost je, když je první kbelík plný a má se přidat kupón, tak se nezahodí, ale přidá (přepadne) do druhého kbelíku. Při druhé možnosti se kupóny přidávají i do druhého kbelíku zadanou rychlostí (excess burst rate). Tehdy se při konfiguraci nastavuje CIR (Commited Access Rate) a PIR (Peak Access Rate). Tuto metodu jsem viděl označenou také jako Two Rate Policing.

Pozn.: V různé dokumentaci se různě označuje rychlost, kterou se přidávají kupóny do kbelíku. Někde se uvádí average-rate někde CIR. V jednom dokumentu, kde byli na jednom místě pospány všechny tři (výše zmíněné) varianty, se termín CIR používal až u té poslední.

U policeru můžeme nastavovat akce

  • conform action - vyvolá se pro pakety, které spadají do průměrné rychlosti (CIR) a normální velikosti shluku (Bc)
  • exceed action - vyvolá se pro pakety, které spadají do průměrné rychlosti a nadměrné velikost shluku (Bc + Be) nebo do nadměrné rychlosti (PIR) a nadměrné velikosti shluku
  • violate action - pakety, které překročí nadměrnou rychlost/velikost shluku

Akce můžeme nastavit na

Pozn.: zde jsou uvedeny pouze hlavní možnosti, existují i další.

  • transmit - normálně forwardujeme paket, standardně se nastavuje pro conform action
  • drop - zahození paketu, který překračuje naše pásmo, standardně pro violate nebo exceed action
  • set-dscp-transmit - přeznačkujeme DSCP a odešleme, většinou nastavíme nižší prioritu

Hodnoty, které se objevují u Token Bucket algoritmu

  • CIR - Committed Information Rate - průměrná přenosová rychlost [bps]
  • Bc - Committed Burst Size - počet bytů, o které je možno jednorázově překročit průměrnou přenosovou rychlost [B] (velikost kbelíku)
  • PIR - Peak Information Rate - špičková přenosová rychlost [bps]
  • Be - Excess Burst Size - velikost druhého kbelíku [B]
  • Tc - Time Interval - časový interval [s]
  • maximální rychlost datového toku = CIR + Bc/Tc

Policing na switchi

U switchů můžeme pro fyzické porty vytvářet dva typy policerů:

  • Individual (individuální) - QoS aplikuje omezení šířky pásma v policeru samostatně pro každou třídu, konfigurujeme samostatně v každé třídě policy-mapy
  • Aggregate (agregované) - omezení šířky pásma se aplikuje kumulativně na všechny odpovídající datové toky, vytvoříme agregovaný policer a ten aplikujeme uvnitř několika policy-map

Class-Based Shaping

Shaping využívá pro měření také algoritmus Token Bucket (jiní výrobci používají obdobný algoritmus Leaky Bucket). Ale k němu se přidává využití fronty (Class Based Weighted Fair Queuing - CBWFQ). Funguje to tak, že do fronty se zařazují příchozí pakety. Ty se z této fronty odebírají, pokud jsou k dispozici kupóny v kbelíku. Pokud kupóny nejsou, tak se neděje nic a pakety čekají ve frontě. Samozřejmě fronta má nějakou maximální velikost, takže při jejím zaplnění se pakety začnou zahazovat.

Shaping máme ve dvou metodách buď average nebo peak. Pro average je rychlost přenosu rovna CIR a krátkodobě se může zvýšit o přenos Bc dat. U peak metody se může zvýšit o Bc+Be.

Konfigurace v Cisco IOSu

Class-Based Policing

Tak jak existuje celá řada algoritmů nebo jejich modifikací, tak se značně liší tvar příkazu pro konfiguraci policingu. Důležité je porozumět principu Token Bucket algoritmu, pak již není problém policing nakonfigurovat. Nějaký základní příklad je níže.

ROUTER(config)#policy-map test-policy
ROUTER(config-pmap)#class test-class  
SWITCH(config-pmap-c)#police rate-bps burst-byte [exceed-action {drop | policed-dscp-transmit}] 
ROUTER(config-pmap-c)#police bps [burst-normal][burst-max] conform-action action exceed-action action [violate-action action] 

Vyzkoušel jsem konfiguraci na třech různých Cisco zařízeních a následně uvádím příklady možností konfigurace, které tyto zařízení nabízí.

Pozn.: Řada parametrů bývá nepovinných. Jako hlavní jsou většinou průměrná rychlost (CIR) a velikost kbelíku (burst size).

Catalyst 3750

Na switchi je třeba QoS nejprve zapnout.

SWITCH(config)#mls qos 

Na nižší řadě switchů se nachází pouze Single Token Bucket algoritmus.

SWITCH(config-pmap-c)#police 128k 8000 exceed-action drop // 128k = bps (average-rate), 8000 = normal-burst [B] 

Switche podporují (na rozdíl od routerů) využití aggregate policeru.

SWITCH(config)#mls qos aggregate-policer test-policer 1000000 16000 exceed-action drop 
SWITCH(config-pmap-c)#police aggregate test-policer // nastavení aggregate policeru do class mapy uvnitř policy mapy

Catalyst 6509

Modulární switch řady 6500 již obsahuje Dual Token Bucket algoritmus (který může fungovat i jako Single Token Bucket).

SWITCH(config-pmap-c)#police cir 256000 bc 8000 pir 8000 be 8000 conform-action transmit exceed-action set-dscp-transmit af11 violate-action drop  

Router 871

I ten nejmenší router, jako je 871, má celou řadu možností zápisu konfigurace. Tímto způsobem můžeme nakonfigurovat všechny varianty Token Bucket algoritmu.

ROUTER(config-pmap-c)#police 16000 8000 be 4000 conform-action transmit exceed-action set-dscp-transmit af11 violate-action drop 
ROUTER(config-pmap-c)#police cir 256000 bc 8000 pir 8000 be 8000 conform-action transmit exceed-action set-dscp-transmit af11 violate-action drop 
ROUTER(config-pmap-c)#police rate 8000 bps burst 2000 bytes peak-rate 2000 bps peak-burst 2000 bytes conform-action transmit exceed-action set-dscp-transmit af11 violate-action drop

Class-Based Shaping

Konfigurace shapingu je výrazně jednodušší a na různých zařízeních stejná. Můžeme se pokusit shaping ladit zadáním více parametrů (Bc a Be), ale není to doporučeno a tyto hodnoty se nastaví na optimální dle Cisca.

Řada switchů vůbec nemá možnost shapingu (jako Catalyst 3750), vyšší řady a routery mají konfiguraci shodnou. Zadávaná hodnota je v obou případech bit-rate, tedy CIR.

SWITCH(config-pmap-c)#shape average 16000 
ROUTER(config-pmap-c)#shape peak 16000 
zobrazeno: 23249krát | Komentáře [2]

Autor:

Související články:

Cisco IOS

Velký seriál o operačním systému aktivních prvků firmy Cisco.

QoS - Quality of Service

Tato série článků se věnuje obsáhlé problematice zajištění kvality při přenosu dat, tedy Quality of Service. Vše je řešeno s přihlédnutí k aktuálním trendům používaným na Cisco aktivních prvcích, spolu s příklady konfigurace.

Pokud se Vám článek líbil, tak mne potěšíte, když uložíte odkaz na některý server:

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže. Pokud chcete poradit s nějakým problémem či diskutovat na nějaké téma, tak použijte fórum.

Komentáře

  1. [1] morgun

    Sem by sa mi hodil malinky obrazok, kde su naznacene jednotlive rychlost (CIR, Bc, Be...). Mozno iba stlpec kde je ukazane, toto je average rychlost (2Mb/s) kratkodobo sa moze prekrocit o... Trochu sa v tom totiz stracam ;-)

    Neděle, 29.03.2009 21:31 | odpovědět
  2. [2] Samuraj

    odpověď na [1]morgun: Doporučuju se podívat 6. díl seriálu, kde se tomu věnuji prakticky (a je tam i tabulka). Musím říct, že praktický výsledek úplně neodpovídá tomu, co jsem čekal po teoretickém principu. Jinak chápu, že je to docela matoucí (jak zmiňuji i v článku) používá se několik metod a různá terminologie.

    Pondělí, 30.03.2009 10:38 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O


Ochrana proti SPAMu, zdejte následující čtyři znaky image code

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách