Class-Based Weighted Fair Queuing (CBWFQ) aneb CBWTF
Weighted Fair Queuing (WFQ) bolo impelementové pre linky s malou rýchlosťou (ako napr sériové) aby zabezpečilo spravodlivé rozdeľovanie, pre každý druh trafficu. Pre túto potrebu, WFQ klasifikuje traffic do rôznych flowov na základe pridružených Layer 3 a Layer 4 informácií (IP addresses, TCP ports, atď). Aby toto fungovalo, nie je potrebné definovať access-list. S WFQ, low bandwidth traffic má efektívnu prioritu nad high bandwidth traffic. High bandwidth traffic zdieľa prenosové médium proporcionálne podľa pridelených váh.
WFQ má nasledujúce limitácie:
- Ak sa traffic flow značne zvýši, WFQ to nemôže upraviť, lebo nieje škálovateľné.
- WFQ sa nedá uplatniť na high speed rozhraniach, ako ATM.
Nový druh, Class-Based Weighted Fair Queuing (CBWFQ) bolo vyvinuté, aby odstránilo limitácie WFQ. Narozdiel od WFQ, CBWFQ umožňuje definovať triedy trafficu. Po definovaní tried, možu byť aplikované parametre. Tieto parametre zahrňujú bandwith a queue-limit.
Pri používaní CBWFQ, váha špecifikovaná pre treidu, sa stáva váhou pre každý packet, ktorý spĺňa kritéria treidy. Táto váha je odvodená od bandwidthu, priradenému triede. WFQ sa potom uplatní na tieto triedy, namiesto toho aby bol uplatnený na samotné flowy. Triedy môžu obsahovať viacero flowov.
CBWFQ má tri základné časti. Prvou časťou je definovanie flowov pre špecifické vzory trafficu (class-map príkaz). Existuje mnoho rôznych spôsobov ako určiť takéto flowy. Druhou časťou je rozhodnutie ako zaobchádzať s každým flowom (policy-map príkaz). Zvyčajne sa pri každom flowe nastavujú minimálne a/alebo maximálne požiadavky na bandwith. Poslednou časťou je priradenie tejto metódy na interface (service-policy príkaz).
CBWFQ sa taktiž dá použiť aj na Frame Relay DLCI. Nasledujúce tri časti popisujú každý komponent v poradí.
The following three sections describe each of these components in turn. The actual configuration and verification commands are then described.
The class-map Command
Prvou konfiguračnou časťou CBWFQ je definovanie individuálnych flowov tečúcich cez "queuing system". Class-map príkaz, ktorý sa používa na vytvorenie týchto flowov, vyberá pre CBWFQ špecifický traffic. Je možné mať viacero class-map príkazov a každý môže mať až 64 zodpovedajúcich podmienok.
Príklad vytvorenia class-map
Router(config)#class-map match-all bcran-class
Uvedený class-map príkaz definuje pomenovaný class (s menom bcran-class), ktorý sa využíva na výber trafficu. Pri definovaní class-map existujú dve možnosti. Uvedený príklad používa možnosť match-all. To znamená, že všetky príkazy zhody musia byť pravdivé pre túto triedu aby "uspela" => logický operátor AND. Alternatívnym príkazom je match-any. To znamená, že akýkoľvek z príkazov zhody spôsobí, že táto trieda "uspeje". => ogický operátor OR.
V rámci class mapu, match príkazy sa používajú na selectovanie packetov pre selekciu paketov pre danú triedu. Ďalší príklad ilistruj triedu s jedným match príkazom
Router(config)#class-map match-all bcran-class
Router(config-cmap)#match access-group 101
Všetky pakety, ktoré prejdú cez IP access list 101, sú zaradené do class mapu bcran-class. Pretože je použitý iba jeden match príkaz, nezáleží na tom, či je class map match-all, č match-any.
V ďalšom príklade iba pakety, ktoré prejdú cez oba IP access listy 101 and 102 budú zaradené do class mapu. Taktiež je rozhodujúce použitie príkazu match-any resp. match-all.
Router(config)#class-map match-all bcran-class
Router(config-cmap)#match access-group 101
Router(config-cmap)#match access-group 102
Match príkaz možno použiť na overovanie širokej škály rôznych kritérii. IP traffic v class-mapoch može byť overovaný pomocou access listov, taktiež podľa hodnoty IP precence, IP DSCP hodnoty, IP RTP portov, COS bitov,
QoS? čísel skupín, MPLS experimentálnych bitov a hodnôt protokolov.
The policy-map Command
Class map pozostáva z jedného alebo viacerých match príkazov na výber packetov pre danú triedu. Policy-map zhromažďuje jeden alebo viac class-mapov a definuje akcie, ktoré sú vykonané pre každý class-map. Takže pre správnu funkciu policy-map, class-map už musí existovať. Príklad ilustruje ako sa vytvára policy-map
Router(config)#policy-map bcran-policy
Router(config-pmap)#class bcran-class
Router(config-pmap-c)#bandwidth 48
Príklad najprv vytvára policy-map s menom bcran-policy. Potom mapuje class-map s menom bcran-class(vytvorená predtým) a všetky pakety, ktore sú oficiálne členom triedy bcran-class dostávajú minimálny bandwidth 48 kbps. Je treba si všimúť, že bandwidth neje vynucovaný, kým sa rozhranie nepreplní. Takže nezrobiť chybu akú som sprvoti robil ja a umiestniť policy-map na správne rozhranie.
V skutočnosti, class-map môže použiť viac bandwidthu (ak je voľný), ale ak rozhranie, na ktorom je táto policy aplikovaná, zaneprázdnené, tento konkrétny class-map dostane 48 kbps.
Ďalší príklad ilistruje vytvorenie policy-map s viacerými class-mapami.
Router(config)#policy-map bcran-policy
Router(config-pmap)#class bcran-class
Router(config-pmap-c)#bandwidth 48
Router(config-pmap)#class other-class
Router(config-pmap-c)#bandwidth 24
Router(config-pmap)#class class-default
Router(config-pmap-c)#fair-queue
Dva z class príkazov sa odkazujú na už definovanné class-mapy. Prvá trieda, bcran-class, dostane minimálne 48 kbps. Druhá trieda, other-class, dostane minimálne 24 kbps. Všetko ostatné, čo prechádza cez rozhranie, kde je táto policy aplikovaná používa WFQ. Funkciou class-default je odchytiť všetok traffic, ktorý nespĺňa podmienky špecifických class-mapov v rámci policy-map.
Horeuvedená kofigurácia alokuje špecifickú hodnotu bandwidthu pre každý class-map. Bandwidth môže byť tiež alokovaný ako precento celkového dostupného bandwidthu na rozhraní, alebo ako percento zostávajúceho bandwidthu, neobsadeného inými class-mapmi. Ďlašie konfiguračné možnosti zahŕňajú policing traffic na percento bandwidthu alebo na špecifickú hodnotu bandwidthu, shaping traffic (buffering), nastavenie rôznych markerov a úprava queue limitov, kvôli vyhnutiu sa tail dropom.
The service-policy Command
Teraz, keď už je vytvorená CBWFQ polilitka, musí sa aplikovať na rozhranie. Service-policy príkaz sa používa na namapovanie existujúceho policy-map na rozhranie. Je potrebné si všimúť, že CBWFQ policies možno aplikovať buď na vstupujúce, aelbo vystupujúce traffic flowy.
Nasledujúci príkaz ilustruje umiestnenie policy-map na rozhranie.
Router(config)#interface serial 0/0
Router(config-if)#service-policy output bcran-policy
Iba jedna policy-class sa môže aplikovať na rozhranie v jednom smere. Zvyčajne sa uplatňuje na východzí traffic, pretože oblasť nízkeho bandwidthu sa nachádza za rozhraním.
Príklad kompletnej konfigurácie CBWFQ
Overenie CBWFQ
Keď je CBWFQ nakonfigurované, jednotlivé časti môžu byť odkontrolované z príkazového riadku. Prvá vec, ktorá by m,ala byť odkontrolovaná je queueing policy rozhrania. CBWFQ je rozširenie k WFQ. Preto overenie qeue-ov je veľmi podobné ako pri WFQ. Nasleduje výpis rozhrania s nakonfigurovaným WFQ
Router# show queue serial 0/0
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: weighted fair
Output queue: 0/1000/64/0 (size/max total/threshold/drops)
Conversations 0/0/256 (active/max active/max total)
Reserved Conversations 0/0 (allocated/max allocated)
Available Bandwidth 1158 kilobits/sec
! Ďalej je výpis toho istého rozhrania s CBWFQ
Router# show queue serial 0/0
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: weighted fair
Output queue: 0/1000/64/0 (size/max total/threshold/drops)
Conversations 0/1/256 (active/max active/max total)
Reserved Conversations 2/2 (allocated/max allocated)
Available Bandwidth 1086 kilobits/sec
Na prvý pohľad sa môže zdať, že tieto dva sa zobrazujú identicky. Obe tvrdia, že rozhranie je konfigurované pre WFQ. No bližší pohľad ukazuje, že druhý výpis ma dva rezervované konverzácie. Tieto rezervácie reprezentujú dva class-mapy z policy-map, ktorý je aplikovaný na rozhraní. No tu neexistuje odkaz, ktorý konkrétny policy-map je aplikovaný na toto rozhranie. Preto sa musí zobraziť aktuálny policy-map, aby sme mohli vidieť aktuálne class-mapy.
Router# show policy-map
Policy Map bcran-policy
class other-class
Weighted Fair Queueing
Bandwidth 24 (kbps) Max Threshold 64 (packets)
Class bcran-class
Weighted Fair Queueing
Bandwidth 48 (kbps) Max Threshold 64 (packets)
Class class-default
Weighted Fair Queueing
Flow based Fair Queueing
Bandwidth 0 (kbps) Max Threshold 64 (packets)
V tomto príklade other-class alokuje 24 kbps paketom, bcran-class dáva paketom 48 kbps a class-default neslubuje ostávajúcim paketom žiaden bandwidth. O všetky ostatné pakety sa stará WFQ. Ale pakety, ktoré spĺňajú podmienky jednotlivých class-mapov, možno spoznať len kontrolou class-mapov.
Router# show class-map
Class Map match-any other-class (id 3)
Match access-group 103
Class Map match-any class-default (id 0)
Match any
Class Map match-any bcran-class (id 2)
Match access-group 101
Match access-group 102
class-mapa other-class ma jeden match príkaz a pozerá iba do ACL 103. bcran-class má dva match príkazy pre dva rôzne ACL-ka. ACL ka sú spojené logickým OR, kvôli match-any príkazu. class-default, prijíma všetko čo sa inde nezmestilo.
Router# show access-lists
Extended IP access list 101
permit tcp 172.16.1.0 0.0.0.255 192.168.1.0 0.0.0.255 eq telnet
Extended IP access list 102
permit ip 172.16.2.0 0.0.0.255 192.168.2.0 0.0.0.255 precedence critical
Extended IP access list 103
permit ip 172.16.3.0 0.0.0.255 192.168.3.0 0.0.0.255 precedence critical
Príkaz show access-lists zobrazí obsah všetkých access listov na danom routri.
Zoznam dostupnosti Per-VC CBWFQ na 7200, 3600, and 2600 routroch:
- 7200: Cisco IOS® versions 12.0(5)T, 12.0(5)XE, 12.1(1), 12.1(1)T, 12.1(1)E and later using a PA-A3.
- 7200 with NSE: Cisco IOS version 12.1(7)E and later.
- 7200 with NSE-1 Services Accelerator: Cisco IOS version 12.2(4)B1.
- 2600/3600 with NM-1A-T3/E3 modules support LLQ / CBWFQ on Cisco IOS version 12.1(5)T and later.
- 2600/3600 with DS3/E3 network modules: Cisco IOS version 12.1(2)T.
Poznámka : Cisco express forwarding (CEF) byť použité, pretože CBWFQ monitoruje iba CEF-switched pakety.
http://www.ciscopress.com/articles/article.asp?p=102233&seqNum=4&rl=1
Príklad kompletnej konfigurácie CBWFQ
! ACL 101 povoľuje telnet z 172.16.1.0/24 to 192.168.1.0/24
access-list 101 permit tcp 172.16.1.0 0.0.0.255 192.168.1.0 0.0.0.255 eq telnet
! ACL 102 povoľuje traffic s prioritou 5 z 172.16.2.0/24 to 192.168.2.0/24
access-list 102 permit ip 172.16.2.0 0.0.0.255 192.168.2.0 0.0.0.255 precedence critical
! ACL 103 povoľuje traffic s prioritou 5 z 172.16.3.0/24 to 192.168.3.0/24
access-list 103 permit ip 172.16.3.0 0.0.0.255 192.168.3.0 0.0.0.255 precedence critical
! class-map bcran-class1 zahŕňa všetko z ACL 101 alebo 102
class-map match-any bcran-class
match access-group 101
match access-group 102
! class-map bcran-class2 zahŕňa všetko z ACL 103
class-map match-any other-class
match access-group 103
! policy-map bcran-policy povoľuje class-mapu bcran-class 48Kbps,
! class-map other-class 24Kbps, a ostatný traffic je WFQ
policy-map bcran-policy
class bcran-class
bandwidth 48
class other-class
bandwidth 24
class class-default
fair-queue
! policy-map bcran-policy je aplikovaný na východzí traffic na serial 0/0
interface serial 0/0
service-policy output bcran-policy
--
MartinKusnirik - 16 Mar 2007