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 (http://www.iana.org/assignments/enterprise-numbers).

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'''<br />
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)<br />
TAC Support: http://www.cisco.com/tac<br />
Copyright (c) 1986-2003 by cisco Systems, Inc.<br />
Compiled Thu 12-Jun-03 15:49 by eaarm<br />
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.187<br />
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (835747999) 96 days, 17:31:19.99<br />
SNMPv2-MIB::sysContact.0 = STRING: wikiuser<br />
SNMPv2-MIB::sysName.0 = STRING: punch<br />
SNMPv2-MIB::sysLocation.0 = STRING: test<br />
SNMPv2-MIB::sysServices.0 = INTEGER: 78<br />
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00<br />
`

## 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

Kategória:Internetové protokoly