Protokol SNMP Simple Network Management Protocol Problém správy a řízení sítí Monitoring provozu v určitých uzlech sítě – ukládání do databáze - agent Sběr dat od agentů – manager Vzdálené řízení – reset , reboot, nastavení proměnných (např. IP TTL) NMS – Network Management Station Princip klient (manager) – server (agent) SNMP je systémová služba, transport UDP, well-known porty 161 a 162
Protokol SNMP Simple Network Management Protocol
MIB - Management Information Base Hierarchická organizace dat Každý objekt má přidělen jméno (alfanumerický řetězec) a numerický identifikátor Typy objektů Skalární objekt - definuje jednoduchou instanci objektu Tabulární objekt – definuje násobné instance objektu Jednoznačné určení objektů Jmenné – zřetězení jmen objektů na cestě od kořene Číselné – zřetězení identifikátorů na cestě od kořene Ve zprávách protokolu se používá číselná reprezentace určení objektů
root Internetová SMI Struktura MIB ccitt (0) iso (1) iso-ccitt (2) org (3) dod (6) internet (1) Internetová SMI directory (1) mgmt (2) experimental (3) private (4) security (5) snmpV2 (6) mib - 2 (1) udp (7) system (1) interfaces (2) at (3) ip (4) icmp (5) tcp (6) …(128) Struktura MIB
Struktura MIB MIB (Management Information Base) – objektově orientovaná databáze dat Objekty se sdružují do skupin – tříd Třídy jsou definovány atributy objektů, které jsou ve třídě sdruženy (atribut je určen typem a hodnotou). Hodnotu získává nebo ji lze na řízeném objektu nastavit chováním – odezvy na operace prováděné na řízeném objektu hlášením – agent sděluje managerovi události odehrávající se na řízeném objektu výčet operací – operace, které je možné s objekty třídy (nebo jejich atributy) provádět
iso.org.dod.internet.mgmt.mib-2.udp.udpInDatagrams Struktura MIB Za správu MIB je zodpovědný agent (SNMP server), manager (SNMP klient) může požadovat nebo nastavovat hodnoty SNMP server (agent) udržuje databázi MIB, na vyžádání SNMP klienta (managera) odešle hodnoty objektů nebo je nastaví na vyžadovanou hodnotu (pokud zápis povolen) Řízené objekty jsou jednoznačně identifikovány Jménem objektu iso.org.dod.internet.mgmt.mib-2.udp.udpInDatagrams Identifikátorem objektu 1.3.6.1.2.1.7.1
Skupiny objektu mib-2(1) (1)system informace o systému (2)interface informace o všech síťových rozhraní systému (3)at informace o fyzických a IP adresách síťových rozhraní systému (4)ip informace o provozu v IP vrstvě (5)icmp informace o ICMP zprávách (6)tcp informace o TCP spojeních (7)udp informace o UDP přenosech (8)egp informace o externím směrování ………………………………………………………………………………… (11)snmp informace o zprávách SNMP protokolu ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ (14)ospf informace o zprávách OSPF protokolu
Skupina udp (pod skupinou mib) Struktura MIB Příklad: Skupina udp (pod skupinou mib) udp (7) udpInDatagrams(1) udpOutDatagrams(4) udpInErrors(3) udpTable(5) udpNoPorts(2) udpEntry(1) udpLocalAddress(1) udpLocalPort(2)
Skupina udp: Skalární objekty Jméno Datový typ R/W Popis udpInDatagrams čítač - Počet UDP datagramů doručených do uživatelských procesů udpNoPorts Počet UDP datagramů, pro které neexistoval proces na cílovém portu udpInErrors Počet UDP nedoručených (chybových) datagramů udpOutDatagrams Počet UDP datagramů vyslaných
Tabulární objekt UDP tabulka (pro „naslouchající“ proces) Jméno Datový typ R/W Popis udpLocalAddress IP adresa - Lokální IP adresa pro proces udpLocalPort [0…..65535] Číslo portu pro proces Aplikační vrstva udpInDatagrams(1) Transportní vrstva udpNoPorts(2) udpOutDatagrams(4) udpInErrors(3) IP vrstva
Skupina IP Jméno Datový typ R/W Popis ipForwarding(1) [1/2] - Systém forwarduje ano/ne ipDefaultTTL(2) INTEGER ano TTL pro IP datagramy ipInReceives(3) čítač Počet přijatých IP datagramů ipInHdrErrors(4) Počet datagramů –chyba v záhlaví ipInAddrErrors(5) Počet datagramů –chyba v cílové adrese ipForwDatagrams(6) Počet forwardovaných datagramů ipInUnknownProtos(7) Počet dat. – chyba v poli PROTOCOLS ipInDiscards(8) ……… Počet diskartovaných dat. – nedostatek místa v bufferu
Datová reprezentace v SNMP SMI (Structure of Management Information) definuje prostřednictvím ASN.1 (Abstract Syntax Notation) pravidla pro popis spravovaných objektů ASN.1 je standard pro popis zprávy (tj. datové jednotky aplikace) – odpovídá prezentační vrstvě OSI Syntaxe abstraktní – obecná struktura dat Datový typ – pojmenovaná sada hodnot Kódování a kódovací pravidla (BER – Basic Encoding Rules, PER – Packet Encoding Rules nebo DER – Distinguished Encoding Rules) – odpovídá relační vrstvě OSI Přenosová syntaxe (bitový „proud“ při přenosu mezi příslušnými entitami – např. ASCII, EBCDIC)
Použití abstraktní a přenosové syntaxe uživatel uživatel Mapování do uživatelské prezentace Abstraktní syntaxe ASN.1 MIB Aplikační komponenta Aplikační komponenta MIB Kódovací pravidla BER Lokální mapování Transportní syntaxe ASCII Transportní komponenta Transportní komponenta
Programová podpora ASN.1 ASN.1 není programovací jazyk – pokrývá pouze strukturální aspekty informace – nemá žádné operátory pro výpočty nebo manipulaci s daty Programová podpora ASN.1 Většina OS má nástroje k podpoře ASN.1 ASN.1 podporují programovací jazyky jako: JAVA, C, C++ atd. Standardizace ASN.1 v r. 1984 – CCITT (nyní ITU-T) – X.690 v r. 1985 – ISO – dva dokumenty Abstract Syntax ASN.1 Encoding Rules BER současnost – ASN.1 Consortium – nová edice ASN.1:2002
ASN.1 ASN.1 se používá k definicím datových struktur Definice datové struktury – pojmenovaný modul Obecný formát pojmenovaného modulu: <jméno_modulu>DEFINITIONS::= BEGIN definice modulu výběr instance popis elementů ………… END
ASN.1 Datové typy ASN.1 (abstraktní) Jednoduché (INTEGER, BOOLEAN, BIT STRING…..) Strukturované (SEQUENCE, SEQUENCE OF) Označené (TAG) - odvozené od jiných typů – tag zahrnuje třídu a datový typ. 4 třídy: univerzální, aplikačně závislé, kontextové, privátní Jiné CHOICE - výběr mezi typy ANY – předem neurčený
ASN.1 Všechny typy kromě CHOICE a ANY mají přiděleny tagy – malá celá čísla (tabulka) Znakové řetězce (NumericString, PrintableString…..) Objektové typy (OBJECT IDENTIFIER) – významný pro SNMP ……..
Datové typy v SMI SNMP INTEGER celé číslo NULL indikuje, že příslušná proměnná nemá žádnou hodnotu OCTET STRING řetězec bytů s hodnotou 0-255 OBJECT INDENTIFIER identifikátor objektu, př. 1.3.6.1.2.1 SEQUENCE sekvence položek SEQUENCE OF dvourozměrné pole proměnných – tabulka DisplayString řetězec znaků NVT ASCII IpADDRESS IP adresa PhysAddress HW adresa TimeTicks čítač času ve stovkách sekund Counter číslo 0-(232 –1), pak 0… Gauge číslo 0-(232 –1), pak zůstává
Příklad definic typů
Příklad definic subtypů
Příklad definice typu OBJECT IDENTIFIER
Definice proměnných skupiny ip ve formálním jazyku ASN Definice proměnných skupiny ip ve formálním jazyku ASN.1 (Abstract Syntax Notation) -- the IP group ipForwarding OBJECT-TYPE SYNTAX INTEGER { gateway(1), -- entity forwards datagrams host(2) -- entity does NOT forward datagrams } ACCESS read-only STATUS mandatory ::= { ip 1 } ipDefaultTTL OBJECT-TYPE SYNTAX INTEGER ACCESS read-write ::= { ip 2 } ipInReceives OBJECT-TYPE SYNTAX Counter ::= { ip 3 } ipInHdrErrors OBJECT-TYPE ::= { ip 4 }
ipInAddrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only ipInAddrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 5 } ipForwDatagrams OBJECT-TYPE ::= { ip 6 } ipInUnknownProtos OBJECT-TYPE ::= { ip 7 } ipInDiscards OBJECT-TYPE ::= { ip 8 }
Obecný kódovací formát pro ASN.1 - BER Pole identifikace – typ, subtyp, třída Pole délky Pole obsahu
SNMP paket
Protokol SNMP Verze protokolu SNMPv3 – ochrana dat šifrovacím algoritmem (DES) Nekompatibilita verze 1 a verze 2 se řeší proxy agentem („dvojjazyčným“) Formát zprávy SNMPv1 a SNMPv2 Verze Jméno komunity PDU záhlaví
Protokol SNMP SNMPv1 SNMPv2 Záhlaví SNMP zprávy: Číslo verze Jméno „komunity“ – autentizační identifikátor skupiny agentů Zprávy PDU SNMPv1 Get Response Trap GetNext Set SNMPv2 Get GetBulk Set Inform GetNext Response Trap
Klient – server v protokolu SNMP (1) manager agent Get-request UDP/161 Get-response Getnext-request UDP/161 Getnext-response Set-request UDP/161 Set-response GetBulk-request UDP/161 GetBulk-response
Klient – server v protokolu SNMP (2) manager agent Trap UDP/162 manager Inform-request UDP/162 Inform-request UDP/162
SNMPv1 PDU (1) Zprávy Get, GetNext, Set Typ PDU Typ PDU: 0 Get-request 2 Get-response 1 GetNext-request 3 Set-request Request ID – spojení požadavku s odpovědí Error status – indikace jednoho z definovaných chybových stavů Error index - spojení chybového stavu s určitým objektem Objekt, hodnota – spojení objektu s určitou hodnotou (kromě Get-request a GetNext-request) Error index Request ID Error status Typ PDU Objekt 1 Hodnota 1 Objekt 2 Hodnota 2 Objekt x Hodnota x
SNMPv1 PDU (2) Trap – iniciuje agent v důsledku výjimečné události na řízeném zařízení (připojení do sítě, reboot, připojení dalšího síťového rozhraní ….) Enterprise – identifikuje typ zařízení, které generuje trap Agent address – adresa zařízení, které generuje trap Generic trap type/specific trap code – indikuje typ a kód trap Time stamp – časová známka Objekt, hodnota – spojení objektu s určitou hodnotou Typ 4 Enterprise Agent address Generic trap type Specific trap code Time stamp Objekt 1 Hodnota 1 Objekt x Hodnota x
Zprávy Get, GetNext, Set, Trap, Inform SNMPv2 PDU (1) Zprávy Get, GetNext, Set, Trap, Inform Typ PDU: 0 Get-request 3 Set-request 1 GetNext-request 4 Trap 2 Get-response 5 Inform Request ID – spojení požadavku s odpovědí Error status – indikace jednoho z definovaných chybových stavů Error index - spojení chybového stavu s určitým objektem Objekt, hodnota – spojení objektu s určitou hodnotou (kromě Get-request a GetNext-request) Typ PDU Objekt 1 Hodnota 1 Error index Request ID Error status Objekt 2 Hodnota 2 Objekt x Hodnota x
SNMPv2 PDU (2) GetBulk – request požadavek na zaslání objemného seznamu „bindings“ (setříděných podle identifikátoru objektu – tzv. „lexicografic ordering“) Non repeaters – počet proměnných v seznamu Objekt-Hodnota, pro které se očekává v odpovědi pouze jedna hodnota (skalární objekty) Max repetitions – určuje maximální počet hodnot pro každou proměnnou (mimo skalární objekty). Typ PDU Objekt 1 Hodnota 1 Max repetitions Request ID Non repeaters Objekt 2 Hodnota 2 Objekt x Hodnota x
Příklad obsahu pole Objekt-Hodnota („binding) „binding“ (vazba) Objekt Hodnota Objekt Hodnota 12854 čítač datagramů UDP - in 1.3.6.1.2.1.7.1 Identifikátor objektu iso.org.dod.internet.mgmt.mib-2.udp.udpInDatagrams
SNMP Ukázka SW pro management sítě – implementace SNMP http://npmv7.solarwinds.net/NetPerfMon/View.asp?NetObject=