Simple Network Management Protocol

Z Wikipédie

Balík internetových protokolov   uprav
Aplikačná vrstva HTTP, HTTPS, FTP, SSH, SMTP,
NNTP, IRC, SNMP, SIP, RTP, ...
Transportná vrstva TCP, UDP, SCTP, DCCP, ...
Sieťová vrstva IPv4, IPv6, ARP, ...
Linková vrstva Ethernet, Wi-Fi, Token ring, FDDI, ...
Fyzická vrstva RS-232, EIA-422, RS-449, EIA-485, ...

Simple Network Management Protocol alebo SNMP (doslovný preklad do slovenčiny: „jednoduchý protokol na správu siete“) je protokol umožňujúci monitorovanie a správu sieťových zariadení.

Obsah

[úprava] Architektúra

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

  • Spravovaný objekt (SNMP agent, napr. na smerovač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ť štandartnej 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 ([1]).

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.

[úprava] 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).

[úprava] 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)

[úprava] Verzie SNMP protokolu

[úprava] SNMPv1

Prvá verzia SNMP protokolu bola definovaná v roku 1988 ( RFC 1065 , 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.

[úprava] SNMPv2

Verzia 2 SNMP protokolu sa snažila odstrániť nedostatky SNMPv1. Vzniklo moho 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á.

[úprava] SNMPv3

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

[úprava] Príklad

Následuje 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

[úprava] Externé odkazy