Jednoduchý manažérsky protokol siete

Jednoduchý manažérsky protokol siete alebo jednoduchý protokol manažérstva siete (angl. Simple Network Management Protocol), skr. SNMP, je protokol umožňujúci monitorovanie a správu zariadení v IP sieti. Primárne bol navrhnutý pre účely správy siete a týkal sa základných sieťových prvkov, napr. smerovačov čomu zodpovedala štandardná MIB báza. Protokol sa však nakoniec uplatnil aj pri správe a monitorovaní ďalších zariadení pripojených v sieti, napríklad sieťových tlačiarní, serverov či koncových užívateľských staníc

Architektúra 
Architektúra SNMP rozoznáva prinajmenšom 2 komponenty:

 Spravovaný objekt (SNMP agent, napr. na prepínači)
 Spravovacia stanica (napr. SNMP platforma)

Môže obsahovať subagentov (slave).

SNMP protokol definuje operácie nad MIB bázou (Management Information Base). MIB de facto popisuje možné OID (Object identifier) - objekty s ktorými je možné pracovať, ich typ (Integer, Octet String, atď) a možný prístup k nim (read-only, read-write, write-only). Štandardná MIB báza už definuje mnoho premenných (OID, napr. informáciu o agentovi, správu/monitorovanie sieťových rozhraní, smerovacie tabuľky a i.). Výrobcovia zariadení pokrývajú spravidla len časť štandardnej MIB (slušný SNMP agent podporuje aspoň oblasť System Information). MIB je však navrhnutá tak, aby sa dala rozširovať vo vymedzenej privátnej oblasti vlastnou MIB výrobcu ().

SNMP agent spravidla používa UDP port 161 (a posiela SNMP trapy na UDP port 162). SNMP protokol používa ako prezentačnú vrstvu ASN.1.

SNMP datagram 
SNMP datagram sa skladá z hlavičky ktorá obsahuje verziu SNMP protokolu, identifikačné číslo datagramu (pre priradenie odpovede), informáciu o chybe (nastavenú v SNMP Response datagrame), autentifikačnú informáciu a typ PDU (SNMP Get Request, SNMP Get Response a pod). PDU (Protocol Data Unit) obsahuje zoznam OID ktoré identifikujú čítané alebo nastavované premenné a tiež ich hodnoty (v prípade SNMP Get datagramov prázdnu hodnotu - ASN NULL).

Operácie nad MIB bázou 

 GET REQUEST: Číta informáciu z jednej alebo viacerých premenných definovaných OID
 GETNEXT REQUEST: Číta informáciu z jednej alebo viacerých premenných nasledujúcich po zadaných OID (vhodné napr. pri čítaní tabuliek)
 GET BULK: Číta informáciu z celého podstromu (od SNMPv2)
 GET RESPONSE: Odpoveď od agenta
 SET: Nastavenie jednej alebo viacerých premenných s daným OID
 TRAP: Spontánna správa od SNMP agenta (napr. správa o reštarte)
 INFORM: Ako SNMP Trap, ale potvrdzovaný (od SNMPv2)

Verzie SNMP protokolu

SNMPv1 
Prvá verzia SNMP protokolu bola definovaná v roku 1988 (RFC 106, RFC 1066 a RFC 1067). Autentifikácia klienta (spravovaného) bola riešená pomocou tzv. „community string“, ktorý bol prenášaný ako čistý reťazec. Najmä preto sa protokol ďalej vyvíjal.

SNMPv2 
Verzia 2 SNMP protokolu sa snažila odstrániť nedostatky SNMPv1. Vzniklo mnoho jej odnoží ktoré riešili bezpečnosť a rozšírenia protokolu. Nakoniec sa stala prakticky štandardom SNMP v2c, ktorá zaviedla nové PDU typy (INFORM, GET BULK), nové typy premených (64-bitové hodnoty/počítadlá), ale autentifikácia ostala na úrovni SNMPv1. Štandardná MIB bola podstatne rozšírená.

SNMPv3 
Internet Engineering Task Force (IETF) ustanovuje od roku 2004 verziu SNMPv3 ako je definovaná RFC 3411 až RFC 3418 (STD0062). IETF označuje skoršie verzie ako neplatné a zastarané. Verzia SNMPv3 tak konečne štandardizovala nové autentifikačné mechanizmy.

Príklad 
Nasleduje výstup programu snmpwalk (snmpwalk je utilita v balíku Net-SNMP) pri zobrazení MIB časti SystemInformation (všeobecné informácie o zariadení a uptime).

snmpwalk -c public punch system
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-IO3-M), Version 12.2(15)T5, RELEASE SOFTWARE (fc1)
TAC Support: http://www.cisco.com/tac
Copyright (c) 1986-2003 by cisco Systems, Inc.
Compiled Thu 12-Jun-03 15:49 by eaarm
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.187
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (835747999) 96 days, 17:31:19.99
SNMPv2-MIB::sysContact.0 = STRING: wikiuser
SNMPv2-MIB::sysName.0 = STRING: punch
SNMPv2-MIB::sysLocation.0 = STRING: test
SNMPv2-MIB::sysServices.0 = INTEGER: 78
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00

Referencie

Externé odkazy 
 Úvod do SNMP
 SimpleWeb
 http://www.henrys.de/daniel/download/SNMP.HTM 
 SNMP FAQ part 1
 SNMP FAQ part 2
 Implementácie:
 Net-SNMP: Open source SNMP implementation
 Netsnmpj: Open source SNMP for Java
 OpenSNMP: multi-threaded SNMPv3 engine
 Cisco:
 Configuring SNMP Support
 Cisco SNMP command reference
 Cisco IOS MIB Tools

Internetové protokoly