Protokol SNMP je asynchronní, transakčně orientovaný protokol založený na modelu klient/server. Strana, která posílá požadavky (snmp klient), může být např. jednoduchý snmp browser či složitý NMS (Network Management Systém), na straně zařízení je snmp agent (snmp server), který na požadavky odpovídá. Výjimku tvoří tzv. trapy, které agenti vysílají asynchronně při výskytu jednotlivých události (výpadek proudu, větráku, překročení mezních údajů, objevení nového zařízení). Samozřejmě je nutné předem definovat adresu, kam se informace posílá. 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).
Trochu z historie
Protokol SNMP začal vznikat v roce 1988 jako reakce na potřebu efektivní platformy pro správy počítačových sítí. V roce 1990 byl institucí IAB (Internet Acitivities Board) potvrzen jako standard sítě internet. První specifikace protokolu, RFC1157, vznikla v roce 1989 a stanovovala vlastnosti SNMP verze 1. Tato specifikace byla pro začátek ideální. Stanovovala jen příkazy get, get next, set a trap, ale využívala pouze ochranu heslem - community string. Toto byl pravděpodobně hlavní nedostatek, který přetrval ještě ve verzi 2, která dále definovala příkaz get bulk pro snazší získávání informací z tabulek (např. routing table atp.). O efektivitě tohoto příkazu by se však dalo diskutovat. Ochrana heslem je nedostatečná, protože heslo lze poměrně jednoduše zjistit analyzátorem paketů. Současná specifikace protokolu SNMPv 3 pochází z roku 1998, byla přijata teprve loni a umožňuje ochranu dat i pomocí DES algoritmu.
Podpora protokolu SNMP
Podpora protokolu SNMP je implementována do celé řady jazyků určených pro tvorbu dynamických stránek (např. PHP, ASP, Java, Perl, Python a další). Díky existujícím modulům je tak možné v relativně krátké době umožnit přes protokol SNMP přístup k datům, která poskytuje periferní zařízení systému, a to jak pro čtení, tak pro zápis.
Popis protokolu SNMP
Hlavní výhodou např. proti http protokolu je schopnost agenta vyslat asynchronně informaci o vzniklé události. V protokolu TCP/IP se využívá transportní služba bez spojení - protokol UDP. Pro komunikaci se využívá port 161, trap je odesílán na port 162.
SNMP ve verzích 1 a 2 používá následující příkazy:
- get-request -získání informace z MIB;
- get-next-request - umožňuje managerovi získat informace o objektech v MIB bez znalosti jejich přesných jmen, umožňuje postupné procházení celým hierarchickým stromem;
- set-request - změna hodnoty proměnné agenta;
- trap - jediný typ příkazu vysílaný bez předchozího vyžádání, agent jej zasílá managerovi jako reakci na specifikovanou událost, zpráva zůstává nepotvrzená, proto agent nemá jistotu, zda byla doručena;
- get-response - agent vykoná tuto operaci jako reakci na předchozí příkazy - je to vlastně odpověď agenta managerovi. Odpověď obsahuje i dotaz, protože protokol nezajišťuje souvislost mezi dotazem a odpovědí.
- get-bulk - operace, která je součástí SNMP v.2. Umožňuje vyžádat si k přečtení celou skupinu informací z MIB, čímž se mnohdy urychluje komunikace.
- inform - umožňuje komunikaci dvou managerů mezi sebou.
MIB databáze
MIB (Management Information Base) je 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ý agent by měl udržovat objekty standardní MIB (např. síťové adresy, typy rozhraní, čítače). Jsou definovány tři mechanismy pro přidání:
- přidání nových objektů prostřednictvím definice nové verze MIB-II;
- přidání nestandardních objektů přidáním experimentální větve;
- přidání vlastních objektů v rámci podstromu soukromé větve.
Do MIB byly zařazeny jen nejnutnější objekty. Předem byly vyloučeny objekty svým způsobem nadbytečné, např. ty, které mají konkrétní (např. aritmetické) vztahy s jinými objekty v MIB. Jednoduchost definice a omezená velikost báze umožňuje zaručit minimální dopad na činnost a složitost agentů. To se pak samozřejmě projeví v nárocích na zpracovatelský systém.
Dnes lze nalézt spoustu existujících a v praxi používaných systémů, které pracují 24 hodin denně, 7 dní v týdnu, 365 dnů v roce monitorují stav systémů a služeb v počítačové síti. V případě výpadku informují definovanými kanály (nejčastěji email, SMS, vizuální výstraha) příslušnou obsluhu, popř. spustí definovanou akci.
Díky podpoře SNMP není problém realizovat systém pro sběr informací z agentů, kteří SNMP podporují, a sestavit tak konkrétní aplikaci, která se bude chovat podle našich požadavků. Následně pak lze realizovat skutečně velmi jednoduše systém, který bude příslušná data zpřístupňovat na WWW stránkách. Navíc získáme možnost testování a monitorování řízeného systému třetí stranou.
Příklad - SNMP I/O Thermometer pro Charon I
Modul Charon je založen na architektuře x51, což představuje velmi levné řešení. Aplikace Thermometer podporuje snmp část MIB II (RFC 1213) a využívá snmp knihovnu, která může dynamicky obsluhovat několik uživatelských MIBů (limitováno pouze velikostí RAM).
Pro implementaci MIBu je k dispozici utilita CodeGen. která umožňuje nejen vygenerovat zdrojový kód v jazyce C, který je schopen ihned obsluhovat daný MIB (vrací 0, null), ale dokáže přegenerovat upravený MIB tak, že změny v hierarchii proběhnou plně automaticky, obsluha nových proměnných se přidá a nepoužité proměnné se uloží do souboru .unu (unused). Celý proces je řízen podle skriptovatelných šablon, takže je možné je snadno modifikovat pro jinou implementaci snmp agenta (vyzkoušeno pro Fusion, Euros, Web51). Současně je vytvářen kontrolní soubor, z kterého je zřejmé, jaké proměnné a jakého typu byly vygenerovány.
K dispozici jsou i další příklady pro "snmp krok za krokem - uživatelský MIB":
- 1x LED - jedna bitová proměnná, nejjednodušší MIB;
- tabulka 8 LED - ukázka indexování proměnné;
- I/O proměnná - 8bitová proměnná (implementována obsluha paralelního portu P1);
- ukázka použití předchozích dvou MIB tabulek, které jsme již napsali a nyní je pouze zaregistrujeme a použijeme např. již přeložené .obj moduly.
Pro obsluhu modulu Charon I, který komunikuje po SNMP, lze použít libovolného SNMP klienta (browser), protože MIB tabulka je přiložena k aplikaci. Pro začátečníky se SNMP je lépe použít nabízenou JAVA aplikaci „Thermometer“, “, která vše přehledně zobrazí s pomocí grafiky a zároveň v ní lze snadno a rychle modul nastavovat. K tomu, aby vůbec bylo možné aplikaci spustit, je nutné mít předem nainstalovaný buď JAVA SDK, nebo JRE, které však nejsou součástí Windows, ale lze si je stáhnout z Internetu http://java.sun.com/products/javawebstart/download-windows.html.
Po nainstalování podpory pro JAVA aplikace již na .JAR soubor na disku stačí kliknout a aplikace se spustí sama. Poslední verzi ovládající JAVA aplikace Thermometer si lze stáhnout z internetu na adrese http://www.dfsoft.cz/Charon/ , ze které lze rovněž aplikaci spouštět.
Pro ověření funkce nebo pro reálnou aplikaci lze též použít libovolného SNMP klienta. Po jeho nainstalování je třeba nahrát do příslušného adresáře ještě .mib soubor s MIB tabulkou k aplikaci v modulu Charon (lze získat na www.HWgroup.cz). ). K tomu, aby jej SNMP klient vzal k dispozici, je třeba nahranou tabulku přikompilovat k výběru používaných MIB. Po úspěšném přikompilování by měl SNMP klient zařízení Web51 rozpoznat a zobrazit strom s proměnnými, které obsahuje.
Základní pojmy kolem jazyka JAVA
JAVA ještě není běžně rozšířena, proto se pokusíme vysvětlit pár základních pojmů :
- .java - zdrojový kód v jazyce Java, jedná se o textový formát. Základním stavebním kamenem je třída (angl. class). Jeden soubor .java obsahuje obvykle jednu třídu, ale může jich obsahovat i několik.
- .class - Tzv. „byte code“ = univerzální spustitelný kód, který není závislý na platformě CPU. Vzniká přeložením původního textového zdrojového souboru .java. Každá třída má svůj .class soubor. Přeložením jednoho .java souboru může tedy vzniknout i více .class souborů.
- .jar - Několik souborů .class sloučených do jednoho souboru .jar = knihovna tříd. Formátem je to .zip archiv. Může obsahovat i jiné soubory (např. obrázky), může obsahovat i celou aplikaci. Naopak aplikace může být rozložena do několika .jar souborů. Nepotřebujete tolik otevřených souborů, případně komprimovat programy atd. Výhodou .jar je možnost opatřit jednotlivé třídy MD5 či SHA-1 digest, či .jar archiv podepsat PKI certifikátem.
- JAVA SDK (Software Development Kit) - Obsahuje překladač souborů .java na soubory .class a vše potřebné pro to, abyste mohli začít vyvíjet v JAVĚ aplikace. Pokud potřebujete hotové aplikace jen používat, nepřidělávejte si starosti s instalací kompletního balíku. Pro snazší práci s SDK doporučujeme JAVA IDE – např. Sun ONE.
- JRE – JAVA runtime enviroment - Základní prostředí, které umí zpracovávat JAVA kód. Potřebujete je k tomu, abyste mohli jakoukoliv JAVA aplikaci vůbec spustit. Poslední dobou firma SUN, která JAVU vymyslela, hodně propaguje tzv. Java Web Start 1.2. Jedná se o rozšiřující aplikaci, která umožňuje spouštět uživatelské aplikace přímo z internetu, případně je odtud nainstalovat na lokální disk. Je propracován systém automatické aktualizace pokud byl některý z komponentů aplikace změněn atd. Poslední dobou je standardně obsažena v základním JRE firmy Sun.
mrazek@ HW.cz
DOWNLOAD & Odkazy
- Charon I - SNMP I/O Thermometer - Kompletní popis aplikace
- HWgroup.cz - Server věnovaný průmyslovým ethernet aplikacím, dokumentace k finálním produktů a řešením
- Aplikace Thermometer - http://www.dfsoft.cz/Charon/
- Charon I&II Development Board – Schémata a popis rozšířeného vývojového kitu.
- Charon I – http://www.hwgroup.cz/products/charon1/
- Vše o SNMP - http://www.snmplink.org/
- SNMPc Network Manager - http://www.castlerock.com
- Jednoduchý freeware "prohlížeč" (lze vybrat proměnné, které se zobrazují ve sloupcích pro jednotlivá zařízení) - http://www.snmpview.de
- SNMP Client, který lze licencovat na 30denní trial verzi - http://www.mg-soft.com
- Server se zajímavými nápady kolem SNMP - http://www.pcmeasure.com
- CodeGen - Generátor kódu, parser a merger - program analyzuje MIB a generuje kostru kódu podle zadané šablony. Usnadňuje vytváření MIB - http://www.dfsoft.cz/products.htm