Lihtne võrguhalduse protokoll

Lihtne võrguhalduse protokoll (inglise keeles Simple Network Management Protocol, lühend SNMP) on internetistandardi protokoll IP-võrkudes hallatavatelt seadmetelt andmete kogumiseks ja korraldamiseks ning nende andmete muutmist seadmete käitumise mõjutamiseks. Tüüpiliselt toetavad SNMP protokolli modemid, ruuterid, kommutaatorid, serverid, tööjaamad, printerid jt.
SNMP protokolli kasutatakse võrguhalduses laialdaselt võrgu seireks. SNMP avaldab hallatavate seadmete haldusinfo muutujatena, mis on organiseeritud halduse informatsiooni baasi (inglise keeles management information base, lühend MIB) ja kirjeldavad süsteemi olekut ja konfiguratsiooni. Neid muutujaid saavad haldavad rakendused kaugpäringuga küsida ja teatud juhul ka muutujate väärtusi muuta.
Protokollist on kolm olulist versiooni. SNMPv1 on algne versioon, uuemad versioonid SNMPv2c ja SNMPv3 on saanud täiendusi jõudluse, paindlikkuse ja turvalisuse osas.
SNMP on komponent internetiprotokollistiku rakenduskihis.

Protokolli detailid

SNMP opereerib Internetiprotokollistiku rakenduskihis. Kõik sõnumid transporditakse üle kasutajadatagrammi protokolli (UDP). SNMP agent kuulab UDP porti 161. Haldur võib päringuid saata kõigist saadavalolevatest lähteportidest, agent vastab samale pordile. Haldur võtab asünkroonseid teateid vastu pordi 162 kaudu. Kui SNMP protokolli kasutatakse koos transpordikihi turbeprotokolliga (TLS), võetakse päringuid vastu pordi 10161 kaudu ja teated saadetakse pordile 10162.
SNMPv1 spetsifitseeris viis põhilist protokolliandmeüksust (inglise keeles protocol data unit, lühend PDU), SNMPv2 lisas veel kaks – GetBulkRequesti  ja InformRequesti – ja SNMPv3 lisas andmeüksuse Report.
Järgnevalt on toodud kõik seitse SNMP protokolliandmeüksust:
GetRequest
Haldurilt agendile suunatud päring, millega küsitakse ühe või mitme muutuja väärtust. GetRequesti vastusena tagastatakse haldurile vastus Response hetke muutuja(te) väärtustega.
SetRequest
Haldurilt agendile suunatud päring, millega vahetatakse ühe või mitme muutuja väärtust hallatavas seadmes. SetRequesti puhul tagastatakse Response hetke (muudetud) muutuja(te) väärtustega.
GetNextRequest
Haldurilt agendile suunatud päring, millega küsitakse saadavalolevaid muutuja nimesid ja nende väärtuseid. GetNextRequesti vastusena tagastatakse Response halduse informatsiooni baasis leksikograafiliselt järgmise muutuja ja selle väärtusega.
GetBulkRequest
Optimeeritud versioon GetNextRequestist, millega küsitakse päringust mitu iteratsiooni. GetBulkRequesti puhul tagastatakse Response nende muutujate ja väärtuste komplektiga, mida päriti.
Response
Tagastab muutujad koos väärtustega vastusena halduri päringule. Oli SNMPv1 versioonis nimega GetResponse.
Trap
Asünkroonne teade agendilt haldurile, mis võimaldab agentidel haldurit olulistest sündmustest teavitada. Erineb eelnevatest selle poolest, et haldur ei küsi ilmutatult informatsiooni, vaid agent saadab selle ise haldurile.
InformRequest
Asünkroonne kviteeritud teade, kus erinevalt Trap-sõnumist on kättesaamise kinnitusega garanteeritud, et kaotsi läinud UDP paketid on tuvastatavad.

Turvalisus

Alles kolmas versioon lisas protokollile autentimise ja krüpteerimise, mistõttu võis SNMP päringuid lugeda turvaliseks üksnes sisevõrgus.
Suurim SNMP turvalisusega seotud infoturbeskandaal leidis aset aastal 2002, kui Oulu Ülikooli teadlaste ja üliõpilaste uurimistöö tulemusel osutusid hetkega haavatavaks enamik teadaolevaid SNMP implementatsioone.