EN 
06.10.2024 Hanuš WELCOME IN MY WORLD

This website is originally written in the Czech language. Only part of the content is machine (AI) translated into English. The translation may not be exact and may contain errors.

Tento článek si můžete zobrazit v originální české verzi. You can view this article in the original Czech version.
SNMP - Simple Network Management Protocol

SNMP - Simple Network Management Protocol

| Petr Bouška - Samuraj |
Almost everyone has heard about SNMP, how convenient and simple it is and how good it is to use it for network monitoring. But not everyone knows what it is and how it works. When I looked around the Internet, I could not find any article that explains what it is in a concise and clear way. That's why I tried to do it myself.
displayed: 111 013x (110 987 CZ, 26 EN) | Comments [38]

SNMP is a simple, widely used, and useful standardized protocol that serves to obtain or set values on a specific device. An analogy is, for example, WMI from Microsoft. A wide range of devices support SNMP, such as active network elements, computer sensors, printers, access points, or personal computers and servers can acquire it through software and drivers. We can obtain values at regular intervals and then simply store them in a database along with the time and subsequently plot them on a graph. We can thus clearly display, for instance, CPU utilization, temperature progression, or data flow on a switch port.

How SNMP works

The SNMP protocol requires two parties for communication. One entity is the manager and the other is the agent. SNMP operates in two modes of activity:

  • The manager sends queries to the agent and receives responses. Thus, multiple managers can obtain values and can ask at any time.
  • The agent sends notifications (traps) to the manager's address. In certain defined situations (exceeding some value or even at regular intervals), the agent sends values to one manager.

The SNMP protocol now exists in three versions. SNMPv1 and SNMPv2c use a community string for authentication, essentially a text password. In SNMPv3, it's possible to use authentication via username and password and encryption.

SNMP uses the UDP protocol for communication, making it very fast, but the sent information (packet) may be lost (not delivered). Since version 2, delivery confirmation has been implemented, so loss should not occur. By default, port 161 (SNMP) is used on the agent side (for queries) and port 162 (SNMPTRAP) on the server side (for traps). The client sending the query chooses a dynamic port from which it sends the query to port 161. The agent responds from port 161 to the client's dynamic port. In practice, a different dynamic port is used for each query.

SNMP packet

Query and response

version community string PDU type request ID error status error ID OID value

Example

1 public GET (0) 8 no error (0) 0 1.3.6.1.4.1.311.1.1.3.1.1.1 NULL

For traps

version community PDU type enterprise agent IP gen trap spec trap time object 1 value 1 ...

Community string is the password for SNMPv1 and SNMPv2c, PDU type is the type of SNMP query.

SNMP queries

The classic communication, where I send a query for one value and then receive a response, proceeds as follows:

  • a query is sent – the type is set to GET, the OID for the queried value is entered, the value itself is set to NULL
  • a response is returned – the type is set to RESPONSE (2), the OID to the queried value, and the value is filled in

Other possible query types are SNMP GET (0) – returns one value, GET-NEXT (1) - returns the next value (takes the next OID after the given one). From version 2, GET-BULK, which returns multiple values at once (for example, for all switch ports). With SNMP, we can not only read values but also write them, for which the SET type is used. Traps have a slightly different packet format, with TRAP as the type. There are also special types NOTIFICATION, INFORM, and REPORT.

MIB database – Management Information Base

Each value in SNMP is uniquely identified by a numeric identifier OID - Object Identifier. The OID is formed by a sequence of numbers separated by dots; this value is created by taking the OID of the parent element and appending a dot and the current number. This entire tree structure is stored in the MIB database. Additionally, the MIB database contains names and descriptions of individual values (OIDs). The MIB database can be supplemented with additional values using a part of the structure stored in a MIB file.

An example of an OID could be the value 1.3.6.1.2.1.2.2.1.6.1, which corresponds to the text version from the MIB database iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifPhysAddress.

For actual work with SNMP, we don't need the MIB database; only the OID figures in the SNMP packet, but if we don't know the correct OID, the database can help us find it.

Pohled na MIB databázi

Software for SNMP

MIB Browser is a very good and useful program for browsing the MIB database with the ability to add MIB files and query devices. Another useful program is Paessler SNMP Tester, which doesn't contain a MIB database but has several additional functions. It can perform queries in SNMPv1, SNMPv2c, and SNMPv3 and also has a useful SNMP WALK function for listing all OIDs of a given device.

Author:

Related articles:

SNMP

Simple Network Management Protocol (SNMP) is very useful for managing a computer network.

If you want write something about this article use comments.

Comments
  1. [1] Tulinko

    Je to pecka článek o SNMP!!;-)Dost mi pomohl!!:-)

    Tuesday, 06.02.2007 08:16 | answer
  2. [2] Samuraj

    respond to [1]Tulinko: Děkuji, takovýhle komentář vždy potěší :-). Samotnému mě dalo práci pořádně pochopit, jak SNMP funguje a přitom je to tak jednoduché ;-).

    Tuesday, 06.02.2007 10:42 | answer
  3. [3] Tulinko

    My musíme mít totiž o tom takou jako by seminární práci!!A každý si musel vybrat jeden z protokolů, tak jsem si vybral SNMP!!:-) a mám to už hotové, tak teď jen čekám na vyhodnocení!!:-)tak děkuji za dobré zpracování na této stránce!!;-)

    Thursday, 08.02.2007 11:03 | answer
  4. [4] Jech flash-dc.net

    Článek mi také pomohl .. díky .. a přídám si tě mezi RSS :).

    Tuesday, 13.03.2007 23:14 | answer
  5. [5] Tomick

    Moc pekně popsané, konečně jsem to pochopil :) Dík

    Saturday, 02.06.2007 15:52 | answer
  6. [6] Čochtan

    Výborný článek. Díky moc.

    Thursday, 31.01.2008 22:20 | answer
  7. [7] Frantisek Urbanek

    Zajimalo by mne, zda a jak se daji resit kolize v MIB databazich, pokud nejaky vyrobce zarizeni ma stejne cislo OID jako jiny. Musim pak nejak resit od jakeho agenta mam tuto zpravu? Diky.

    Tuesday, 28.10.2008 15:01 | answer
  8. [8] Samuraj

    respond to [7]Frantisek Urbanek: Kolize by nastávat neměli a já se s žádnými nesetkal. Ale i kdyby se objevili, tak to není žádný problém. MIB databáze slouží spíše pro referenci a pro formát návratových (a hlavně výčtových) hodnot. Pokud posílám na nějaké zařízení dotaz s nějakým OID, tak prostě dostanu odpověď a je mi jedno, že jiné zařízení má pod tímto OID jiné hodnoty.

    Wednesday, 29.10.2008 16:48 | answer
  9. [9] Frantisek Urbanek

    Diky za odpoved. Myslel jsem to (ciste teoreticky) tak, ze pokud mam nejake zarizeni, kde treba monitoruju zatizeni CPU pomoci OID 1.2.3.4.5 a nekdo mi to zarizeni vymeni a tam bude pro 1.2.3.4.5 treba pocet odeslanych paketu, tak se nebudu stacit divit ;-)

    Friday, 31.10.2008 10:34 | answer
  10. [10] cowee

    Díky moc, radim se k tem, co o SNMP vedeli kulovy a diky tobe tomu tak jiz neni ;-)

    Tuesday, 04.11.2008 13:41 | answer
  11. [11] Chulda

    respond to [9]Frantisek Urbanek: Kazdy vyrobce ma vlastni OID, takze ke kolizim by nemelo dojit. A ani neni moc duvod, proc pouzivat cizi MIBku jinym zpusobem. U beznych zarizeni jsem se s tim jeste nesetkal.

    Tuesday, 11.11.2008 15:02 | answer
  12. [12] Filip Merhaut

    Výborný článek :-)

    Wednesday, 26.11.2008 12:26 | answer
  13. [13] noe

    Diky za supr clanek! :-)

    pekny obrazek paketu je na : http://www.rane.com/note161.html

    Sunday, 30.11.2008 13:42 | answer
  14. [14] Samuraj

    respond to [13]noe: Pěkný popis.

    Já nejradši pro rozebrání paketu používám Wireshark, kterým si zachytím komunikaci a pak si můžu paket pěkně prohlédnout na skutečných datech.

    Sunday, 30.11.2008 14:07 | answer
  15. [15] David

    Ahoj, super clanek. Ja bych potřeboval v Linuxech na jednom PC mít nainstalovaného managera a na druhém PC agenta a monitorovat z PC s agentem třeba teplotu procesoru a ten by mi to posílal na PC kde je nainstalovaný manager. Musím něco v agentovy nastavovat aby mi tyto informace posílal po síti nebo se nastavuje v managerovy ip adresa dotazovaného PC a OID. A ještě bych poprosil o informaci jestli agent i manager jsou součástí jednoho balíčku(a musim pak akorát neják speifikovat ktreý PC je manager) nebo se instalují každý jednotlivě(popřípadě jestli by jste mi napsal název demona, který pracuje jako agent a demona , ktery pracuje jako manager pro linux)? Díky moc za odpověď

    Sunday, 30.11.2008 19:44 | answer
  16. [16] Samuraj

    respond to [15]David: Na začátek. Nepracuji s Linuxem, takže mohu poradit pouze jak to chodí pod Windows (ale obecně to bude podobné). To, čeho chcete dosáhnout, je možné, ale ...

    Ve Windows (stanice/server) je pro zprovoznění SNMP agenta potřeba doinstalovat komponenty. Jsou to dvě služby (daemon) SNMP Service a SNMP Trap Service. SNMP Service nakonfigurujeme (nastavíme autentizaci a které části SNMP povolíme). Podle typu stanice/server a služeb se automaticky zprovozní určité MIB (skupiny běžných OID), na které pak počítač odpovídá nebo může odesílat trapy (to jsem nikdy nezkoušel). Podrobnosti se dají nalézt u MS (nebo stačí vyzkoušet, některá běžná OID).

    Složitější je druhá strana, tedy SNMP správce. Asi ani nemůže existovat nějaká univerzální služba, protože existuje ohromné množství variant, co a jak chceme dělat. Pro testování načítání hodnot můžeme použít MIB Browser nebo NetSNMP. Pro pouhé ukládání nebo zobrazování hodnoty na webové stránce můžeme použít jednoduchý skript nebo malý prográmek v PHP. Ale pro serióznější práci potřebujeme nějaký monitorovací nástroj, který pak zobrazuje i grafy nebo reaguje na načtené hodnoty. Příkladem takových programů je Cacti, Nagios, HP SIM a další. Při konfiguraci ve správci je třeba znát IP agenta, OID, autentizační údaje.

    Monday, 01.12.2008 09:53 | answer
  17. [17] GrayLite

    Přesně popis jak má bejt....stručnej a výstižnej! Díky moc za tenhle článek :-)

    Thursday, 19.02.2009 18:11 | answer
  18. [18] Lazna

    Prave jsem na jednu Win masinu nainstaloval balik net-snmp a pokousim se vycitat vytizeni procesoru. Jsem ale uplne zmatenej z MIB a OIDs.

    Pochopil jsem z toho, ze net-snmp pouziva jakysi UCDavis podstrom a napriklad vytizeni procesoru by melo byt na vetvi ".1.3.6.1.6.3.16.1.5.2.1.6.6.95.110.111.110.101.95.1.2" ale to mi vraci v MibBrowseru stale cislo 1 a v snmpget.exe jakousi chybu

    c:>snmpget -v2c -c public 10.0.1.9 .1.3.6.1.6.3.16.1.5.2.1.6.6.95.110.111.110.101.95.1.2

    Unlinked OID in HOST-RESOURCES-MIB: host ::= { mib-2 25 }

    Undefined identifier: mib-2 near line 9 of C:/usr/share/snmp/mibs/hostmib.mib

    SNMP-VIEW-BASED-ACM-MIB::vacmViewTreeFamilyStatus."_none_".1.2 = INTEGER: active(1)

    Jak se da zjistit, ktere OID vydava hodnotu vyuziti procesoru? Surfoval jsem po strankach MS, ale neco mi rika, ze net-snmp implementace si bude brat od systemu data a muze je cpat do sveho stromu, ktery se muze od toho MS stromu lisit. Na Wiki projektu net-snmp jsem tez zadny se znam OIDs pro Windows port nenasel...

    Mozna by to jeste chtelo clanecek na tema MIBs a OIDs..

    L:

    Monday, 23.02.2009 17:06 | answer
  19. [19] Samuraj

    respond to [18]Lazna: NetSNMP jsem vždy používal pouze jako klienta a ne jako server. Na stránkách jsem našel, že tam nějaký daemon je, ale nevím jaké informace dokáže ze systému získat. Standardně se ale používá SNMP služba od MS, které je přímo ve Windows.

    MIB databáze = OID strom, jeho základní struktura je dána standardizační organizací, takže se "nemůže" lišit. Nejpoužívanější podstrom je .1.3.6.1 (iso.org.dod.internet). Pod ním se nachází určité společné podstromy, které mají pomoci získávat stejné hodnoty z různých systémů stejnou cestou. Další podstromy jsou přiděleny přímo jednotlivým výrobcům, které používají pro své proprietární účely.

    Najít OID pro určitou hodnotu není jednoduché. Obecně nám k tomu MIB soubory výrobce nebo přímo MIB databáze, v které se ale nedá zrovna jednoduše hledat. Takže většinou je lepší hledat na netu, ale ani to není jednoduché.

    Zatížení procesoru z Windows (MS služba) by mělo být na OID .1.3.6.1.2.1.25.3.3.1.2 (host device processorLoad). MIB je třeba www.oidview.com/mibs/0/HOST-RESOURCES-MIB.html. Myslím, že jsem kdysi četl, že Windows to za určitých podmínek nezobrazují správně.

    Monday, 23.02.2009 18:21 | answer
  20. [20] david

    Super článek, díy moc. Avšak mám dotaz, potřeboval bych monitoring celé sítě, resp. aby šlo vidět nejlépe v grafech jaká stanice vysílala, přjímala, kolik přenesla a v jaký čas a pokud možno kam. Neznáte někdo něco takového?

    Sunday, 19.07.2009 22:00 | answer
  21. [21] Samuraj

    respond to [20]david: Nejlépe by to asi splňovala technologie NetFlow (i když záleží na detailech, do kterých chcete jít). O NetFlow snad taky něco napíšu nebo stačí kouknout na webu.

    Monday, 20.07.2009 08:17 | answer
  22. [22] david

    Ahá děkuju za odpověď, teď jen zjistit, žda-li cisco ASA 5505 nebo 5510 tuto technollogii podporuje, věřím že ano

    Monday, 20.07.2009 18:57 | answer
  23. [23] Samuraj

    respond to [22]david: NetFlow se používá hlavně na routerech. Takže spíš bych to hledal na centrálním prvku, kterým routujete VLANy.

    Tuesday, 21.07.2009 08:07 | answer
  24. [24] david

    VLANy routujeme právě přes ASU 5505. Zkusím se podívat zda-li podporuje netflow. Děkuji

    Thursday, 23.07.2009 08:09 | answer
  25. [25] david

    Musím říci, že se trafic značně snížil tím, že jsem zrušil telnet a nyní mi chodí třeba i 500 reportů denně o snažení připojení k portu 23. Přece jen telnet je slaběji zabezpečen než SSH.

    Thursday, 23.07.2009 08:13 | answer
  26. [26] za

    na monitoring site neni potreba netflow, staci kupr ASUS 500gp router v nema nahrany DD-WRT firmware a aplikace wallwatcher (z asus-u se posila kompletni log prenosu skrze nej - rozumej ne obsah ale pouze kdo s kym na jakem portu ;) a loguje se to do databaze :) cisco je trosku jinde s cenou ;)

    Saturday, 09.01.2010 10:06 | answer
  27. [27] Josef Semrad

    Moc děkuji za detailní vysvětlení SNMP komunikaci. Moc děkuji za pomoc a poporu.

    Thursday, 21.07.2011 10:07 | answer
  28. [28] Daxxim

    respond to [20]david: zkuste Zenoss

    Sunday, 18.12.2011 18:09 | answer
  29. [29] Voda

    Pěkný článek, jen jsem se tu nedozvěděl, jaký je rozdíl mezi objektem OID a instancí OID. Náš vyučující na sítě to chce v testu vědět, ale nikde jsem o tom nic nenašel. Mě jako programátorovi připadá objekt a instance úplně stejné...

    Wednesday, 08.02.2012 13:24 | answer
  30. [30] Michal

    Chvály bylo dost, ale i tak se k ní musím přidat. Pěkně a jednoduše napsáno. Málo kde se najde něco napsané jak pro blbce, aby to pochopil každý.

    Ale trochu kritiky - míchají se tu pojmy: Agent, Klient, správce, server. Trochu jsem se v tom ztrácel a hledal jsem co jsou sysnonyma.

    Monday, 14.01.2013 19:06 | answer
  31. [31] Samuraj

    respond to [30]Michal: Díky :-).

    SNMP využívá klasický princip klient-server. Na klientovi běží agent a na serveru manager. Trochu matoucí může být, že tradičně zjišťujeme informace ze serverů, ale z pohledu SNMP o nich mluvíme jako o klientech.

    Tuesday, 15.01.2013 15:34 | answer
  32. [32] Dinamit

    Perfektní článek. V několika řádcích řečeno vše :o) Hodně mi pomohl. Díky

    Friday, 08.02.2013 11:08 | answer
  33. [33] Michal Mada

    DAkujem za mnohe clanky, snazim sa vyucovat siete na jednej strednej skole a niektore veci mi dost pomohli

    Saturday, 08.02.2014 16:19 | answer
  34. [34] PO

    Chtěl bych se zeptat, jaký se dá použít software na sbírání SNMP od UPS ? Potřeboval bych monitorovat baterii, teplotu, popřípadě ještě nějaké další informace přes s´tový kabel.Všechny UPS jsou připojené na síti. Ať už placený či ne. Děkuji za případné info

    Wednesday, 26.02.2014 11:49 | answer
  35. [35] Petr

    Orespond to [34]PO: : Na Linuxu doporučuji Network UPS Tools (NUTS) - upsstats.

    Tuesday, 11.03.2014 13:19 | answer
  36. [36] Jaroslav Crha

    Dobrý den,

    mám dotaz, mám nainstalovaný ovladač tiskárny Xerox, který přes protokol SNMP posílá na tiskárnu get-request 1.3.6.1.2.1.25.3.2.1.5.1 a tím neustále probouzí ventilátor na CPU v tiskárně. Když vypnu správu tisku tak přestane toto posílat, tiskárna nehučí, ale já nemohu tisknout. Po opětovném zapnutím, začne opět tiskárnu každou minutu pingovat jestli tam je. Mám Win7. Lze nějakým způsobem zasáhnout a snížit alespoň počet dotazů na minimum? Kde a jak to nastavím? Peerblock mi SNMP protokol nezablokuje, nevíte třeba jakým programem tuto síťovou komunikaci zablokovat? Windows firewall i SNMP protokol jsem vypnul, ale pakety z meho počítače chodí dál.

    mail na mě je jaroslav.crha(zavináč)post.cz

    Thursday, 16.01.2020 17:50 | answer
  37. [37] Ruda

    respond to [34]PO: Zabbix

    Tuesday, 20.07.2021 14:36 | answer
  38. [38] Ruda

    Ahoj, odkazy na MIB jsou detus. Nebo chtějí podporu, MIB jsou až 10 let staré. Nemáte někdo aktuální zdroje?

    Tuesday, 20.07.2021 14:57 | answer
Add comment

Insert tag: strong em link

Insert Smiley: :-) ;-) :-( :-O

Help:
  • maximum length of comment is 2000 characters
  • HTML tags are not allowed (they will be removed), you can use only the special tags listed above the input field
  • new line (ENTER) ends paragraph and start new one
  • when you respond to a comment, put the original comment number in squar brackets at the beginning of the paragraph (line)