www.SAMURAJ-cz.com 

25.04.2024 Marek Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Cisco QoS 5 - QoS na switchi, MLS, SRR, Auto QoS

Sobota, 14.02.2009 14:55 | Samuraj - Petr Bouška |
Konfigurace, které byly popsány v předchozích dílech, byly primárně určeny pro routery, i když se dají (občas v nějaké omezenější formě) použít i na switchích. V tomto díle se budu věnovat speciálním příkazům a konfiguracím určeným pro switche. Z principu činnosti, kdy switch často připojuje koncové klienty, je na něm třeba řešit jiné operace než na routeru.

MultiLayer Switch QoS - MLS QoS

Na Cisco switchích se pro konfiguraci řady QoS funkcí využívají příkazy mls qos. Zkratka MLS je z označení MultiLayer Switch, což je switch, který mimo klasického switchování na 2. vrstvě OSI, nabízí nějaké další funkce na vyšších vrstvách OSI. Jedna z těchto rozšířených vlastností je podpora DiffServ QoS. Nutno podotknout, že některé z těchto konfiguračních vlastností obsahuje i Catalyst 2960, což je globálně L2 switch (na rozdíl od Catalyst 3750, který je L3).

Na switchi je QoS defaultně vypnutý a pokud chceme využít nějakou funkci, tak jej musíme nejprve zapnout.

SWITCH(config)#mls qos // globální zapnutí QoS pro switch
SWITCH#show mls qos    // ověří, že je QoS zapnutý

Důvěra QoS značkám

Switche tvoří přístupovou vrstvu, která se často nastavuje jako Trust Boundary. Proto se jedná o ideální místo, kde provádět klasifikaci a značkování. Případně můžeme na určitých portech důvěřovat zasílaným hodnotám.

Pozn.: Aby mohli pakety nést údaj CoS (Class of Service) v 2. vrstvě OSI, tak musí být port v módu 802.1q trunk.

Pokud důvěřujeme zařízení připojenému na portu (například Cisco IP telefonu), tak můžeme nastavit důvěru určité hodnotě, která je obsažena v rámci/paketu.

SWITCH(config-if)#mls qos trust dscp  
SWITCH(config-if)#mls qos trust cos 
SWITCH(config-if)#mls qos trust ip-precedence

Pokud je zapnuto CDP a na portu je Cisco IP telefon, tak můžeme nastavit, že zadané (některým z předchozích příkazů) hodnotě se důvěřuje, pouze pokud je připojené zařízení Cisco telefon.

SWITCH(config-if)#mls qos trust device cisco-phone 

Pokud nastavíme důvěru připojenému IP telefonu, tak se toto nastavení týká pouze paketů ve voice VLAN. Pokud je do telefonu připojeno PC, tak můžeme instruovat telefon, jak se chovat k těmto paketům. Doporučeno je přeznačkovat tento provoz na CoS 0.

SWITCH(config-if)#switchport priority extend cos 0   // nastavení CoS paketům z PC za telefonem
SWITCH(config-if)#switchport priority extend trust   // důvěra hodnotám z PC za telefonem

Kontrolu QoS konfigurace interfacu můžeme provést pomocí

SWITCH#show mls qos interface g1/0/2 

Nastavení CoS pro příchozí rámce

Pokud nastavíme důvěru CoS a přijde paket, který není tagovaný, tak se mu nastaví defaultní hodnota 0. Hodnota CoS je důležitá pro výběr výstupní fronty (použije se CoS-to-DSCP mapa). Tuto defaultní CoS hodnotu pro port můžeme změnit.

SWITCH(config-if)#mls qos cos 3 

Případně můžeme nastavit, aby se hodnota CoS u příchozích paketů přepisovala defaultní hodnotou. Následující příkaz využijeme dohromady s předchozím.

SWITCH(config-if)#mls qos cos override 

Mapovací tabulky

Když switche zpracovávají provoz a využívají QoS, tak pro všechny pakety používají interní DSCP hodnoty odpovídající prioritě provozu. Proto je třeba často převádět CoS hodnoty u příchozích paketů na DSCP a následně DSCP na CoS, které se používá pro výběr výstupní fronty. K tomuto účelu slouží mapovací tabulky, které existují s určitými defaultními hodnotami (uvedeno dále), ale můžeme je přenastavit.

Mapovacích tabulek máme více, i když nejpoužívanější jsou první dvě:

  • CoS-DSCP map - pro převod CoS na DSCP
  • DSCP-CoS map - pro převod DSCP na CoS
  • IP-Prec-DSCP map - pro převod IP Precedence na DSCP
  • DSCP-mutation - pokud spojujeme dvě domény, které používají jiné DSCP hodnoty, tak na hranici sítí použijeme tuto mapu k přepisu DSCP na naše hodnoty, výchozí je null, tzn. nemění hodnoty
  • Policed-DSCP - slouží k přepsaní DSCP na novou hodnotu v rámci policingu a markingu, výchozí je null, tzn. nemění hodnoty

Default CoS-DSCP map

CoS 0 1 2 3 4 5 6 7
DSCP 0 8 16 24 32 40 48 56

Default DSCP-CoS map

DSCP 0-7 8-15 16-23 24-31 32-39 40-47 48-55 56-63
CoS 0 1 2 3 4 5 6 7

Změnu defaultních hodnot mapovacích tabulek ukazují následující příklady. Pro tabulku CoS-to-DSCP zadáme 8 DSCP hodnot, které odpovídají CoS hodnotám 0 až 7.

SWITCH(config)#mls qos map cos-dscp 0 8 16 24 32 46 48 56  

Pro tabulku DSCP-to-CoS konfigurujeme jedním příkazem jednu CoS hodnotu. Můžeme zadat až 8 DSCP hodnot následovaných klíčovým slovem to a pak CoS hodnotou, která jim odpovídá. Pro definici celé tabulky musíme příkaz použít vícekrát.

SWITCH(config)#mls qos map dscp-cos 0 8 16 to 0  

Zobrazení aktuálních map provedeme následovně:

SWITCH#show mls qos maps cos-dscp 

Vstupní a výstupní fronty - Ingress and Egress Queues

WRR - Weighted Round Robin

U starších switchů (například Catalyst 3550) se používal plánovač front (Queue Scheduler) WRR - Weighted Round Robin. Funguje jednoduše, Round Robin znamená, že se z výstupních front (na C3550 jsou 4, jedna může být nastavena na prioritní, ta se pak nepoužije) odebírají pakety postupně z každé fronty (kruhově 1, 2, 3, 4, 1, 2, atd.). Tím, že přidáme váhu jednotlivým frontám, zajistíme, že se z každé fronty odebere proporcionálně určitý počet paketů každé kolo. Tedy, že některá fronta je odbavována rychleji. Tím můžeme dosáhnout rozdělení pásma na portu pro určité fronty. Zařazování dat do front můžeme řídit.

SRR - Shaped/Shared Round Robin

Na novějších switchích (jako Catalyst 3560, 3750, 2960) byla technologie změněna. Používá se nejen výstupní fronta, ale i vstupní fronta a WRR plánovač byl nahrazen SRR. Jelikož WRR není příliš "fér", tak SRR se to snaží napravit. Může pracovat ve dvou módech, buď Shared mode nebo Shaped mode. Jako zahazovací strategii podporuje pouze Weighted Tail Drop (WTD) se třemi prahovými hodnotami (první dvě můžeme měnit, třetí je pevně dána na 100%). Oproti Tail Drop, který prostě zahazuje příchozí pakety, když je plná fronty, tak WTD zahazuje určitý provoz (asociovaný k určitému prahu) dříve, než je fronta plná.

Následující obrázek (ze stránek Cisco.com) zobrazuje schematicky řešení front u Catalyst 3750, kde jsou 2 vstupní a 4 výstupní fronty.

Schéma front na interfacu - SRR

Shared mode

  • je vylepšenou obdobou WRR, jedno kolo rozděluje na minikola, kdy rozhoduje, zda odeslat jeden paket nebo ne (neodesílá větší množství paketů z jedné fronty najednou)
  • takže per-kolo se chová mnohem lépe, ale z dlouhého hlediska je výsledek stejný
  • můžeme říct, že tato metoda garantuje pásmo pro provoz (frontu), ale neomezuje ho, takže pokud je jinde volno, může využít celé pásmo

Shaped mode

  • tento mód je rozdílný, váha určuje maximální povolenou přenosovou rychlost
  • tato metoda garantuje a zároveň omezuje pásmo na danou hodnotu
  • váhy se zadávají pomocí absolutních hodnot, pásmo se z nich určí jako rychlost-interfacu/váha
  • tento mód se může aplikovat pouze na výstupní fronty

Konfigurace SRR

Nejprve potřebujeme rozdělit provoz do jednotlivých front, to provedeme buď podle CoS nebo DSCP. Mapujeme vždy učité CoS/DSCP hodnoty (najednou jich můžeme zadat max. 8) na určitou frontu a její práh (threshold). Switch 3750 má dvě vstupní fronty (1 a 2) a čtyři výstupní (1, 2, 3 a 4). Práh (threshold) souvisí s WTD zahazovacím algoritmem, k dispozici máme tři hodnoty (1, 2 a 3). Práh s id 3 má pevně nastavenu hodnotu 100%, tedy zahazuje, až když je fronta plná. Prahy 1 a 2 můžeme konfigurovat.

Pozn.: Cisco říká, že většina defaultních nastavení je vyhovující pro většinu aplikací, takže změny je třeba jen málokdy.

SWITCH(config)#mls qos srr-queue input cos-map queue 1 threshold 3 5    // CoS 5 půjde do vstupní fronty 1 s prahem 3 (100%) 
SWITCH(config)#mls qos srr-queue output cos-map queue 2 threshold 2 3 4 // CoS 3 a 4 půjdou do výstupní fronty 2 s prahem 2 
SWITCH(config)#mls qos srr-queue output dscp-map queue 1 threshold 3 40 41 42 43 44 45 46 47 // DSCP hodnoty 40 až 47 půjdou do fronty 1 s prahem 3 

Nastavení WTD prahových hodnot (práh id 1 a 2) pro určitou frontu provedeme následovně. Zadává se rozdílně pro vstupní a výstupní fronty. Pro výstupní fronty můžeme vytvořit dva sety (1 a 2) nastavení a ty pak přiřadíme na port.

SWITCH(config)#mls qos srr-queue input threshold 1 60 70            // vstupní fronta 1, práh 1 = 60%, práh 2 = 70% 
SWITCH(config)#mls qos queue-set output 2 threshold 2 60 80 100 200 // set 2, výstupní fronta 2, práh 1 = 60%, práh 2 = 80%, rezervováno 100% pro frontu, maximum 200% (kam může fronta narůst) 

Dále můžeme nastavit velikosti bufferu, která se přiřadí jednotlivým frontám (tedy velikost front).

SWITCH(config)#mls qos srr-queue input buffers 90 10          // fronta 1 = 90%, fronta 2 = 10%, toto je default
SWITCH(config)#mls qos queue-set output 1 buffers 25 25 25 25 // vytvoří set 1, kde všechny 4 fronty mají 25%, toto je default

Pro vstupní fronty se váha nastavuje globálně. Tím nastavujeme, jaké pásmo má která fronta.

SWITCH(config)#mls qos srr-queue input bandwidth 4 4 // fronta 1 =4/(4+4)=1/2 pásma, fronta 2 = 1/2, defaultní nastavení

Jednu vstupní frontu můžeme nastavit jako prioritní (expedited forwarding), ta je při zahlcení upřednostňována. Pokud chceme vypnout prioritní frontu, nastavíme váhu = 0 (defaultně je vstupní fronta 2 prioritní).

SWITCH(config)#mls qos srr-queue input priority-queue 1 bandwidth 10 // fronta 1 je prioritní a má vyhrazené pásmo 10% (maximum může být 40%) 

Pro výstupní fronty jsme vytvořili sety, které následně aplikujeme na port. Defaultně mají všechny porty set 1.

SWITCH(config-if)#queue-set 2 

Na jednotlivé porty můžeme nastavit Shaped nebo Shared mód a rozdělit pásmo pro jednotlivé výstupní fronty (nastavit jejich váhu).

SWITCH(config-if)#srr-queue bandwidth share 25 25 25 25 // shared mode, všechny fronty mají 25%, default
SWITCH(config-if)#srr-queue bandwidth shape 25 0 0 0    // shape mode, fronta 1 dostane 25% a ostatní fronty jsou v shared módu (zadaná 0), default 

Také jednu výstupní frontu na portu můžeme nastavit jako prioritní. Defaultně není žádná. Pokud použijeme prioritní frontu, tak se ignorují nastavení váhy (shared, shaped) pro frontu 1.

SWITCH(config-if)#priority-queue out // fronta 1 se stane prioritní

Pokud chceme omezit celkovou rychlost portu, tak můžeme použít jeden jednoduchý příkaz, který nastaví % rychlosti. Můžeme zadat 10 až 90%.

SWITCH(config-if)#srr-queue bandwidth limit 80 

Ještě uvádím pouze seznam souvisejících show příkazů.

SWITCH#show class-map test-class 
SWITCH#show mls qos 
SWITCH#show mls qos aggregate-policer test-policer 
SWITCH#show mls qos input-queue 
SWITCH#show mls qos interface 
SWITCH#show mls qos maps 
SWITCH#show mls qos queue-set 1 
SWITCH#show mls qos vlan 100 
SWITCH#show policy-map test-policy 

Auto-QoS

Defaultně je QoS na switchi vypnutý a pakety se zpracovávají pomocí BestEffort. Pokud QoS zapneme, tak se použijí určité přednastavené hodnoty, které jsou dostatečné pro běžný provoz (některé věci, ale musíme nastavit ručně). Funkce Auto-QoS slouží ke zjednodušení konfigurace. Auto-QoS si udělá představu o síťovém designu a jako výsledek nakonfiguruje kompletně QoS pro daný účel (změní defaultní hodnoty a nakonfiguruje vše potřebné, včetně zapnutí QoSu).

Auto-QoS je použitelný pro Cisco IP telefony, Cisco SoftPhone a uplink porty (trunky), kde důvěřuje předávaným hodnotám. Umožňuje detekovat přítomnost Cisco telefonu, nakonfiguruje klasifikaci a výstupní fronty.

Auto-QoS se konfiguruje na portech. Při prvním použití provede zapnutí QoSu, upraví Cos-DSCP mapu, namapuje určité CoS a DSCP hodnoty na vstupní a výstupní fronty, nakonfiguruje prahové hodnoty a velikost front, na portu vytvoří prioritní frontu, nastaví důvěru CoS a DSCP pro cisco-phone, případně vytvoří určité Policy mapy a Class mapy (mají v názvu slovo AutoQoS). Při dalším použití již konfiguruje pouze daný port.

Při použití Auto-QoS se zadá řada příkazů, jako bychom je zadali sami, pomocí CLI. Tím pádem může dojít k přepsání části naší konfigurace nebo některá naše konfigurace může způsobit problémy Auto-QoSu. Takže se doporučuje použít Auto-QoS dříve, než provedeme vlastní konfiguraci QoSu. Pokud zrušíme Auto-QoS na portu pomocí klíčového slova no, tak se odstraní související příkazy na portu (ne v globální konfiguraci).

Konfigurace je opravdu jednoduchá.

SWITCH(config-if)#auto qos voip cisco-phone     // Cisco IP telefon, potřebuje CDP 
SWITCH(config-if)#auto qos voip cisco-softphone // Cisco SW IP telefon 
SWITCH(config-if)#auto qos voip trust           // trunk port 
SWITCH(config-if)#no auto qos                   // zruší se konfigurace na portu 

Pro kontrolu nastavení můžeme použít.

SWITCH#show auto qos interface g1/0/1 
zobrazeno: 24514krát | Komentáře [6]

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 chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] morgun

    Zaujimalo by ma aky druh oznacenia v tomto ptikaze oznacuje cisco-phone

    SWITCH(config-if)#mls qos trus device cisco-phone

    je to hostname(asi nie), alebo nejakym prikazom oznaceny nazov zariadenia k mac adrese?

    A ci sa auto-qos pocas pouzivania meni, alebo berie statistiky len z prvotneho provozu.

    Ak sa dynamicky meni ako sa sprava k nami doplnenemu qos?

    Neděle, 29.03.2009 22:18 | odpovědět
  2. [2] Samuraj

    odpověď na [1]morgun: ? cisco-phone neoznačuje přímo jedno zařízení, je to něco jako makro a značí libovolný Cisco IP telefon (informace se zjistí přes CDP).

    Auto-qos se při používání se nemění. Po použití příkazu se spustí "makro", které vytvoří konfiguraci (napevno nastaví příkazy).

    Pondělí, 30.03.2009 10:44 | odpovědět
  3. [3] p2k

    Zrovna na 2950 bych potreboval obcas manualne omezit rychlost na urcitych portech, tak jednoduse jak na 2960, ale srr-queue bandwidth tam nejde a speed 10 neomezi dostatecne.

    Neděle, 19.04.2009 19:15 | odpovědět
  4. [4] Sas

    Omlouvám se za slovíčkaření, ale jsem mimo misku, když si myslím, že věta: "Aby mohli pakety nést údaj CoS (Class of Service) v 2. vrstvě OSI, tak musí být port v módu 802.1q trunk", by měla znít: "Aby mohli RÁMCE nést údaj CoS (Class of Service) v 2. vrstvě OSI, tak musí být port v módu 802.1q trunk"? ;-)

    Středa, 18.07.2012 15:24 | odpovědět
  5. [5] Samuraj

    odpověď na [4]Sas: Správně :-). Napsal jsem tu článek, že se často nesprávně zaměňuje termín paket a rámec a dopustil jsem se toho také.

    Středa, 18.07.2012 15:50 | odpovědět
  6. [6] Roman

    Dobrý den, prosím o radu jak nastavit na switchy qos pro IPTV ( multicast ) používáme tedy suwitche DCN a mypu ale ios je tam skoro schodny s ciscem.

    Nevim jak mam zaradit do skupiny multicas v urcitych vlanach a ostatni v jine vlane.

    treba na

    vlan 100 a 101 IPTV multicas

    vlan 200 data

    vlan 300 servis

    Děkuji moc za radu

    Čtvrtek, 27.12.2012 01:28 | odpovědět
Přidat komentář

Vložit tag: strong em link

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

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