SNMP
Simple Network Management Protocol (SNMP) je součástí sady internetových protokolů. Standardně využívá port 161. Slouží potřebám správy sítí. Umožňuje průběžný sběr nejrůznějších dat pro potřeby správy sítě, a jejich následné vyhodnocování. Na tomto protokolu je dnes založena většina prostředků a nástrojů pro správu sítě.
Protokol SNMP se vyvíjel postupně ve třech verzích: první verze (SNMPv1) zajišťuje základní funkcionalitu SNMP, druhá (SNMPv2) obsahuje navíc autentizaci a třetí (SNMPv3) šifrování (zabezpečení). Nejvíce zařízení podporuje druhou verzi.
Protokol SNMP rozlišuje mezi stranou monitorovanou (hlídaný systém) a monitorovací (sběrna dat). Tyto strany mohou běžet buď odděleně na různých fyzických strojích, nebo v rámci jednoho stroje. Na monitorované straně je spuštěn agent a na straně monitorovací manager. Na straně monitorované jsou operativně shromažďovány informace o stavu systému (zařízení). Manager vznáší požadavky agentovi, zpravidla na zaslání požadovaných informací (zpráv). Agent zajišťuje realizaci reakcí na požadavky managera. Získaný obsah zpráv se na straně monitorovací může dále různým způsobem zpracovávat (tabulky, grafy, …). Komunikace mezi agentem a managerem se označuje jako SNMP operace.
Na straně monitorované může existovat možnost takové konfigurace, kdy agent zašle managerovi informace (SNMP MESSAGE) automaticky bez jeho požadavku. K tomu dojde zpravidla potom, kdy byla splněna předem definovaná podmínka (výpadek, kolize, dosažení hraniční hodnoty, …), agent nečeká na odpověď. Takové konfiguraci agenta se říká SNMP TRAP (tzv. past na události).
SNMP je typicky využíváno na jednom či více správcovských počítačích (manažeři), které mají za úkol sledovat nebo řídit skupinu počítačů či jiných zařízení v síti. Na straně sledovaných zařízení je spuštěn agent, který následně poskytuje pomocí SNMP informace manažerovi.
Spravovaná data agentů jsou evidována jako proměnné. Protokol umožňuje jejich aktivní správu, kdy lze vzdáleně modifikovat tyto proměnné a změnit tak konfiguraci. Proměnné přístupné přes SNMP jsou uspořádány hierarchicky. Tato hierarchie a další metadata (jako například typ a popis proměnné), jsou popsány pomocí MIBs (Management Information Bases).
Síť řízená pomocí SNMP se skládá ze tří hlavních částí:
Spravované zařízení
Agent – software, který běží na spravovaných zařízeních
NMS (Network management station) – software, který běží na správcovských počítačích
Spravované zařízení je síťový uzel, který podporuje SNMP rozhraní a umožňuje jednosměrný (pouze čtení) nebo obousměrný (čtení i zápis) přístup k informacím, které jsou vyměňovány s NMS. Zařízení jsou také často pojmenována jako síťový prvek a můžeme mezi ně zařadit například routery, switche, VOIP telefony, IP kamery nebo tiskárny.
Agent je softwarový modul pro správu sítě, který je umístěn na spravovaném zařízení. Zajišťuje reakce na požadavky správcovského počítače nebo odesílá SNMP Trapy.
Správcovský počítač (NMS) spravuje aplikace, které monitorují a kontrolují spravovaná zařízení. NMS zajišťuje většinu paměti a zdrojů pro správu sítě. V případě potřeby může existovat i více NMS v jedné spravované síti.
SNMP sám o sobě nedefinuje, které informace (proměnné) by měl systém používat. Je tedy vhodné využití rozšíření, které umožňuje jejich nadefinování. MIB popisuje strukturu spravovaných dat, kdy se využívá hierarchický jmenný prostor obsahující identifikátory objektů (OID). Každý z těchto identifikátorů označuje proměnnou, která lze číst nebo nastavit přes SNMP. MIB využívá notaci definovanou pomocí SMIv2 (RFC 2578), což je podmnožina ASN 1.
SNMP pracuje v aplikační vrstvě Internet Protocol Suite (7. vrstva OSI modelu). V případě nezabezpečeného SNMP agent přijímá požadavky na UDP portu 161. Správce (manažer) vysílá požadavky k agentovi z jakéhokoliv dostupného portu. Odpověď agenta bude odeslána zpět do zdrojového portu správce. Správce přijímá asynchronní oznámení (Trapy) od agenta na portu 162. Agent může generovat oznámení z jakéhokoliv dostupného portu. Při použití zabezpečení (SNMPv3) agent přijímá požadavky na portu 10161. Správce přijímá asynchronní oznámení (Trapy) od agenta na portu 10162.
SNMPv1 definuje pět datových jednotek (PDU): GetRequest, SetRequest, GetNextRequest, Response a Trap. Další dvě jednotky GetBulkRequest a InformRequest byly přidány v SNMPv2 a ve verzi SNMPv3 byl přidán PDU Report.
Všechny SNMP PDU jsou konstruovány následujícím způsobem.
IP header | UDP header | version | community | PDU-type | request-id | error-status | error-index | variable bindings |
Požadavek od manažera k agentovi pro načtení proměnné nebo seznamu proměnných. Požadované proměnné jsou specifikovány ve vazbách (hodnoty nejsou používány). Vrácena je odpověď s aktuálními hodnotami.
Požadavek od manažera k agentovi na změnu hodnoty proměnné nebo pro změnu více hodnot v seznamu proměnných. Vazby proměnných jsou uvedeny v těle požadavku. Změny jsou provedeny jako atomické operace agenta. Je vrácena odpověď s novými hodnotami proměnných.
Požadavek od manažera k agentovi pro zjištění dostupných proměnných a jejich hodnot. Vrací odpověď s hodnotou proměnné lexikograficky navazující na předchozí proměnnou v MIB. Celá MIB tabulka může být přečtena iterativní aplikací pomocí GetNextRequest od OID na pozici 0. Řádky tabulky lze číst zadáním OID sloupců ve vazbách proměnných na základě vytvořené žádosti.
Optimalizovaná verze GetNextRequest. Požadavek od manažera k agentovi pro více iterací GetNextRequest. Vrací odpověď s více vazbami proměnných. PDU specifikuje velikost a opakování pole sloužícího k ovládání chování odezvy. GetBulkRequest byl představen v SNMPv2.
Vrací vazby proměnných a potvrzení od agenta manažerovi, jako odpověď na příkazy GetRequest, SetRequest, GetNextRequest, GetBulkRequest a InformRequest. Zasílání zpráv o chybách je poskytováno pomocí polí error-status a error-index.
Asynchronní oznámení od agenta manažerovi. SNMP umožňuje agentovi oznámit významné události prostřednictvím nevyžádané SNMP zprávy. Obsahuje aktuální hodnotu sysUpTime, OID identifikaci typu problému a nepovinné vazby proměnných. Formát zprávy byl změněn v SNMPv2 a PDU byl přejmenován SNMPv2-Trap.