TPS projekt QoS MIB na ISR routerech s Cisco IOS - možnosti čtení QoS konfigurace a aktuálních statistik Autoři: Filip Volný, vol0015 Jakub Drešl, dre0009
Úvod V tomto projektu jsme se s kolegou zabývali, jakými způsoby lze efektivně číst záznamy protokolu SNMP (Simple Network Management Protocol) obsažené v MIB (Management information base) databázi, která se nazývá QoS MIB (Quality of service). Tyto záznamy obsahují veškerou konfiguraci, která je na směrovačích nastavena, a také číselné hodnoty aktuálních statistik provozu. Při vypracování jsme postupovali podle následujících kroků: 1. Ověření, zda router podporuje QoS MIB databázi 2. Navržení topologie 3. Aktivace SNMP serveru na daném routeru 4. Aktivace QoS MIB databáze 5. Konfigurace určitého QoS nástroje 6. Generování provozu 7. Čtení statistik 8. Ověření správnosti přečtených statistik Při ověřování podpory QoS MIB na školních zařízeních jsme narazili na problém, jelikož školní routery neměly tuto databázi nainstalovanou. Hledali jsme tedy alternativní řešení. To jsme našli v použití softwaru od firmy Cisco GNS3. Do tohoto programu jsme použili Image pro routery serie c7200. Zároveň jsme používali VirtualBox, ve kterém jsme virtualizovali linuxový systém Xubuntu. Bod 1 a 2 se nám tak rozrostl navíc o propojení těchto dvou softwarů. Qos nástroj, který jsme vybrali pro náš projekt, se nazývá Traffic Shaping.
1. Teoretická oblast QoS Quality of service QoS lze definovat jako schopnost sítě poskytnout lepší nebo speciální službu množině uživatelů a aplikací na úkor jiných uživatelů a aplikací. Cílem QoS je vylepšit hodnoty přenosových parametrů (zpoždění, propustnost, ztrátovost paketů, atd.) určitého typu dat. Děje se tak ale na úkor hodnot přenosových parametrů jiného typu dat. Existuje velké množství nástrojů pro implementaci QoS metoda obsluhy paketových front, komprese, preventivní zahazování paketů, signalizace spojení, námi zvolené tvarování provozu (Traffic Shaping) atd. SNMP Simple Network Management Protocol Protokol SNMP je asynchronní, transakčně orientovaný protokol založený na modelu klient/server. Strana, která posílá požadavky a dotazy je klient, druhá strana, která odpovídá a počítá statistiky, je server. Pro přenos dat se používá protokol UDP, přičemž je definováno přesně místo, kam se mohou připojovat uživatelské aplikace jednotlivých firem, které spravuje organizace IANA (Internet Assigned Numbers Authority - doslova: Internetová autorita pro přidělování čísel). Třetí nedílnou součástí tohoto protokolu je MIB databáze. SNMP má dnes již 3 verze, ale my jsme použili verzi 2. Verze 3 poskytuje navíc i šifrování, což pro nás bylo zbytečné. MIB databáze Je to databáze, která dovoluje jednoznačně identifikovat informace využívané systémem správy. Aby mohl SNMP manager i agent tyto informace získat a předávat, tak je nutná znalost struktury MIB. Báze dat je objektově orientovaná. Data jsou uložena jako objekty a sdružují se do tříd. Jednotlivé objekty mají hodnoty. Každý řízený objekt v MIB obsahuje veškeré informace potřebné pro popis. Způsob pojmenování objektů je založen na jejich vztahu. Jeden objekt může obsahovat jiné objekty nebo jiné třídy. MIB je tedy tvořena jedním stromem. Každá část tohoto stromu je identifikovaná tzv. OID číslem (Object identifier). Traffic Shaping Je to QoS nástroj, který pakety pozdrží v čekací frontě, pokud hrozí překročení povolené rychlosti na určitém rozhraní. V praxi je fyzická přenosová rychlost rozhraní dána použitou přenosovou technologií. Pokud je potřeba z nějakého důvodu přenášet data nižší rychlostí, lze toho dosáhnout střídáním krátkých intervalů, kdy se pakety přenášejí fyzickou přenosovou rychlostí rozhraní, a intervalů, kdy se nic nepřenáší. Traffic shaping je výhodný, pokud jsou pakety přenášeny shlukovitě a požadavky na přenosovou rychlost tím kolísají. Definuje, kolik bytů dat lze v určitém krátkém časovém intervalu přenést, zbytek musí počkat na další interval. Obvykle se aplikuje na výstupním rozhraní směrovače.
2. Topologie Vzhledem k principu, jakým protokol SNMP funguje, nám stačila velmi jednoduchá topologie. Potřebovali jsme pouze 1 router, na kterém bude SNMP server a QoS MIB, a 2 klienty, mezi kterými bude probíhat komunikace. Obr. 1: Schéma zapojení s rozadresováním
3. Propojení GNS3 a VirtualBoxu Vzhledem k dlouhé době, kterou tyto virtualizační nástroje existují, jsou už optimalizované pro jednoduché propojení mezi sebou. Provádí se to pomocí objektu Cloud v GNS3, kde se nastaví síťový adaptér na položku VirutalBox (viz. obr. 2). Poté se ještě musí provést nastavení v samotném VirtualBoxu (viz. obr. 3). Obr. 2: Nastavení sítě v Cloudu v GNS3 Obr. 3: Nastavení sítě ve VirtualBoxu
4. Aktivace QoS MIB a konfigurace nástroje Traffic Shaping Jako první jsme provedli ověření přítomnost QoS MIB na našem virtuálním routeru příkazem: R2# show snmp mib Výpis musel obsahovat záznam cbqosmib, což se nám potvrdilo. Poté jsme mohli pejít ke konfiguraci. Konfiguraci uvádíme bez příkazů, pomocí kterých se nastavují IP adresy. Nejprve jsme museli aktivovat QoS MIB statistiky: R2(config)# snmp-server ifindex persist R2(config)# snmp mib persist cbqos Prvním krokem při implementaci nástroje traffic shaping je definice síťového provozu, kterého se rezervace přenosové rychlosti bude týkat. Vybrali jsme dscp hodnoty pro třídy hlasu, videa a default neboli data. R2(config)# access-list 101 permit ip 192.168.56.0 0.0.0.255 192.168.57.0 0.0.0.255 dscp 46 R2(config)# access-list 102 permit ip 192.168.56.0 0.0.0.255 192.168.57.0 0.0.0.255 dscp 34 R2(config)# access-list 103 permit ip 192.168.56.0 0.0.0.255 192.168.57.0 0.0.0.255 dscp 0 Poté jsme vytvořili jednotlivé třídy (class-mapy), kterým jsme přiřadili pravidla vytvořené v předchozím kroku. R2(config)# class-map VOICE R2(config-cmap)# match access-group 101 R2(config)# class-map VIDEO R2(config-cmap)# match access-group 102 R2(config)# class-map DATA R2(config-cmap)# match access-group 103 Nakonec je potřeba jednotlivým třídám říci, jak s definovaným provozem zacházet. R2(config)# policy-map PM R2(config-pmap)# class VOICE R2(config-pmap-c)# shape average 10000000 R2(config-pmap)# class VIDEO R2(config-pmap-c)# shape average 40000000 R2(config-pmap)# class DATA R2(config-pmap-c)# shape average 50000000 Posledním krokem je přiřazení těchto pravidel na správné rozhraní a směr. R2(config)# interface fastethernet 0/1 R2(config-if)# service-policy output PM
5. Generování provozu a vytváření dotazů Po implementaci jsme potřebovali generovat provoz, který by splňoval kritéria jednotlivých tříd. Mohli jsme použít nějaký SW nástroj (například iperf), ale vzhledem ke konfiguraci jsme mohli použít pouze příkaz ping doplněný o danou hodnotu DSCP. DSCP (Differentiated Services Code Point) je hodnota v záhlaví paketu, která označuje jeho prioritu, v našem případě příslušnost do určité třídy. Použité příkazy ping: ping Q 184 (dscp 46) = provoz pro třídu VOICE ping Q 136 (dscp 34) = provoz pro třídu VIDEO ping = provoz pro třídu DATA Následné čtení statistik probíhá pomocí dotazu příkazem snmpget nebo snmpwalk. Rozdíl mezi těmito příkazy je ten, že snmpget vrátí pouze 1 hodnotu, kdežto snmpwalk vrátí všechny hodnoty, které jsou v MIB stromu dále. Vzhledem k obsáhlosti této databáze jsme použili následující příkaz: snmpwalk 192.168.57.2 -v1 -c public 1.3.6.1.4.1.9.9.166 Číslo na konci příkazu je OID a jedná se o označení QoS MIB ve stromu databáze. Všechny další záznamy QoS mají tento číselný prefix. Udělali jsme několik screenshotů, kde jsou vybrané OID záznamy takové, abychom na nich ukázali strukturu QoS MIB a aby bylo názorně vidět, jak se zapisuje konfigurace routeru do těchto záznamů. 6. Čtení statistik Následující obrázky ukazují vybrané statistiky, které jsme nakonfigurovali. Obr. 4: OID pro Object index, config index a object type
Na obr. 4 jsme zvýraznili object index (131072, 131073, 131074) a config index, který je za rovnítkem. Tyto dva indexy jsou důležité pro identifikaci daného QoS nástroje. Každý QoS objekt je definován tzv. object indexem. Tato informace je unikátní pro každý interface a pro každou instanci tohoto objektu. Dále má každý QoS objekt svou konfigurační část označenou tzv. config indexem. Config index se nemění, i když je tento objekt přiřazen k několika interfacům nebo je použit pro více instancí objektu. Jak název vypovídá, označuje Object type typ objektu QoS. Může nabývat hodnoty 1 až 11. Těmto hodnotám odpovídají následující typy objektů: 1 policymap = souhrn class-map na interfacu 2 classmap = klasifikace provozu do tříd 3 matchstatement = podmínky pro klasifikaci 4 - queueing 5 - randomdetect 6 trafficshaping = typ QoS nástroje Jak je vidět z obrázku, tak QoS objekt s object indexem 131072 označuje Class mapu, 131073 označuje Match statement a 131074 námi vybraný QoS nástroj, traffic shaping. Na dalším obrázku (obr. 5) jsme zvýraznili názvy Policy mapy a Class map, které jsme vytvořili. Můžeme si zde všimnout, že Config index se nemění, přesně jak jsme definovali výše. Dále je zde zvýrazněn typ dodržování kritéria (ClassInfo Match all) a přiřazený access-list. Obr. 5: MIB záznamy pro názvy map a jejich přiřazených kritérií, která jsme nastavovali v konfiguraci
Na obrázku 6 lze vidět nastavení hodnot Traffic shapingu, které jsme nakonfigurovali. Obr. 6: MIB záznamy pro hodnoty nástroje Traffic Shaping Abychom ověřili a dokázali, že statistiky, které jsme schopni vyčíst pomocí SNMP protokolu, jsou aktuální a nezkreslené, provedli jsme porovnání s výpisem přímo na routeru (viz. obr 7 a 8). Tento výpis jsme vyvolali příkazem show class-map. Obr. 7: Porovnání několika záznamu z MIB databáze pro třídu VOICE a VIDEO s konfigurací na routeru
Obr. 8: Porovnání několika záznamu z MIB databáze pro defaultní třídu a třídu DATA s konfigurací na routeru Malá nesrovnalost v číslech u defaultní třídy je způsobena tím, že do této třídy se počítá veškerý provoz, který mezi prvky v topologii probíhá. Než jsme tedy udělali screenshot MIB databáze a vyvolali výpis na routru, uběhl nějaký čas a mezitím tak proběhla určitá komunikace. 7. Závěr SNMP (Simple Network Management Protocol) je součástí sady internetových protokolů pro správu sítě. Umožňuje sběr různorodých dat právě kvůli potřebám správy sítě, jakou jsou zatížení konkrétních prvků sítě, zatížení jejich konkrétních komponent jako například CPU, RAM apod. Se SNMP se dá dále pracovat různými způsoby, nejčastěji se posbíraná data nechají vypisovat do grafů pro rychlý přehled v reálném čase. Náš projekt se zaměřoval na QoS MIB, což je databáze pro správu, konkrétně pro QoS, což je kvalita služby. Tyto databáze obsahují souhrn výpisů všech možných nastavení CISCO routerů. Po uživateli je nutné znát konkrétní část stromu, kterou chce vypsat a ta je interpretována řadou čísel. Kvůli obsáhlosti těchto MIB existuje na webu CISCO speciální překladač, pomocí kterého jste schopní konkrétní prvek najít dle čísla, které ve stromu MIB databáze má. Našim úkolem tedy bylo nastudovat tuto hierarchii, pochopit ji a následně její konkrétní část zaobírající se QoS zúročit. Prvním důležitým milníkem při zpracovávání projektu bylo zjištění, že nám dostupné routery v učebně TPS tuto konkrétní MIB nemají. Až později jsme zjistili, že to je z toho důvodu, že routery obsahují neaktuální IOS.Rozhodli jsme se tedy pro stažení novější verzi IOS a využití virtualizačního software GNS3 a VirtualBox. Pomocí virtualbox jsme vytvořili pracovní stanici s Xubuntu, načež jsme v GNS vytvořili virtuální zapojení obsahující právě onu pracovní stanici v cloudu, virtuální PC a CISCO router, do kterého jsme nově staženou verzi IOS integrovali. Po dokončení nutného nastavení a adresace jsme se konečně mohli vrhnout na realizaci projektu, kdy prvním krokem bylo ověření, zda-li námi využitý IOS QoS databázi obsahuje.
Následně zbývalo vytvořit vhodné nastavení sítě, pro což jsme vybrali Traffic Shaping. Ten se využívá pro regulaci šířky přenosového pásma právě tak, aby odpovídala požadovanému profilu provozu dle námi zadané definice daného provozu. Díky tomu se hojně využívá jako součást řešení kvality služeb, kdy každé z kvalit služeb omezíme rychlost dle její potřeby pro správnou funkčnost. Po nastavení a odzkoušení realizovaného návrhu sítě nám nezbývalo nic jiného, než si vypsat daný podstrom MIB databáze a zkontrolovat vypsané hodnoty. A opravdu, ve výpisu jsme byli schopni vyčíst námi nakonfigurované hodnoty jako skupiny provozu, rychlosti jim přiřazené, konkrétní provoz bitů v daných skupinách apod. Jak jsme již psali výše, CISCO MIB je velice rozsáhlá a pokrývá všelijaká nastavení. Právě tato rozvětvenost je asi její největší slabinou, protože bez dostupného manuálu či CISCO překladače bude správce těžko hodnoty vypisovat. Naštěstí je CISCO překladač dostupný online pro kohokoliv. 8. Použité zdroje http://tools.cisco.com/support/snmp/do/browsemib.do?local=en&step=2&mibname=cisco- CLASS-BASED-QOS-MIB https://sys4.de/en/blog/2013/02/07/monitoring-qos-cisco-routers/ http://www.tek-tips.com/viewthread.cfm?qid=1431674 http://nil.uniza.sk/virtualization/virtualbox/connecting-gns3-virtualbox-host