Protokół zarządzania siecią SNMP Simple Network Management Protocol 3. (RFC 3411-3418). Starsze Wersje: SNMP 1, SNMP 2 SNMP jest protokołem wykorzystywanym do zarządzania różnymi elementami sieci (np. hostami, ruterami, mostami, koncentratorami). W SNMP 1 i 2: Oprogramowanie sieciowe, obsługujące komunikaty zarządzania elementami sieci nazywa się agentem. Zarządzanie siecią realizowane jest przy pomocy sieciowej stacji zarządzającej (zarządca, komputer z zainstalowanym odpowiednim oprogramowaniem). Agenci i systemy zarządzające należą do tzw. communities. Tylko członkowie jednej community mogą się ze sobą komunikować. W SNMP 3 dodano elementy bezpieczeństwa (poufność, integralność i autentykację), zmieniono też terminologię (fragment z RFC 3411): An SNMP management system contains: - several (potentially many) nodes, each with an SNMP entity containing command responder and notification originator applications, which have access to management instrumentation (traditionally called agents); - at least one SNMP entity containing command generator and/or notification receiver applications (traditionally called a manager) and, - a management protocol, used to convey management information between the SNMP entities. Komunikacja może odbywać się w obu kierunkach. Zarządca może odpytywać agentów o pewne wartości związane z działaniem sieci, np. ile wygenerowano komunikatów określonego typu, ile przesłano pakietów IP itp.. Może również żądać zmiany pewnych wartości (np. wartość początkowa TTL). Wartości, o których mowa to wartości pewnych zmiennych określonych w bazie danych o nazwie MIB (Management Information Base). Agent może przekazywać informacje o pewnych ważnych zdarzeniach, jakie zaszły (np. jeden z interfejsów przestał działać). SNMP wykorzystuje protokół UDP i porty 161 (element sieciowy z agentem SNMP) oraz 162 (zarządca).
Podstawowym sposobem działania programów zarządzających jest odczytywanie i zapisywanie wartości zmiennych z bazy danych MIB. MIB określa, jakie zmienne powinny być przechowywane w elementach sieciowych. Typy i struktury zmiennych określane są przez SMI (Structure of Management Information). Wybrane typy zmiennych (SMI) INTEGER OCTET STRING DisplayString OBJECT IDENTIFIER NULL (używany w zapytaniach) IpAddress PhysAddress Counter (licznik nieujemny 4 bajtowy z zawijaniem ) Gauge (tak jak Counter, ale bez zawijania, po osiągnięciu maks. wartość się nie zmienia) TimeTicks SEQUENCE (podobny do struktury w C) wektor SEQUENCE OF tablica (jednowymiarowa jeśli typ elementów jest prosty, wielowymiarowa jeśli typ jest SEQUENCE) Przykłady zmiennych: Nazwa Kategoria Znaczenie sysuptime system Czas od uruchomienia systemu ifnumber interfaces liczba interfejsów sieciowych ipdefaultttl ip standardowy TTL ipinreceives ip liczba otrzymanych datagramów ipoutnoroutes ip liczba błędów trasowania iproutingtable ip tablica rutowania tcpinsegs tcp liczba otrzymanych segmentów TCP udpindatagrams udp liczba otrzymanych datagramów UDP udpoutdatagrams udp liczba wysłanych datagramów UDP udpnoports udp liczba otrzymanych datagramów UDP, dla których nie było aplikacji odbierającej udpinerrors udp liczba datagramów UDP, które nie mogą być dostarczone z inncyh powodów, niż podany powyżej (np. błąd sumy kontrolnej) Zmienne mogą być typu prostego lub tablicowego. Ponadto niektóre zmienne są tylko do odczytu, inne można zmieniać. W grupie udp zmienna udptable jest typu tablicowego i zawiera następujące zmienne udplocaladdress udp lokalny adres IP nasłuchującego, (0.0.0.0) oznacza nasłuchiwanie na dowolnym porcie udplocalport udp Lokalny numer portu
Przestrzeń nazw MIB Przestrzeń globalna zarządzana przez ISO i ITU, zapewnia globalną unikatowość. Zarządzanie pewnymi fragmentami przestrzeni nazw jest delegowana do różnych firm i organizacji (np. Microsoft). Organizacja hierarchiczna: Root itu(0) iso(1) iso+itu(2) org(3) dod(6) directory(1) internet(1) experimental(3) mgmt(2) private(4) Mib(1) enterprise(1) system(1) interfaces(2) ip(4) icmp(5) Tcp(6) udp(7) 311 (Microsoft) Nazwa każdej zmiennej rozpoczyna się od identyfikatora obiektu, np.: iso.org.dod.internet.mgmt.mib.ip równoważny identyfikator liczbowy to: 1.3.6.1.2.1.4 Dla zmiennej ipinreceives: iso.org.dod.internet.mgmt.mib.ip.ipinreceives równoważny identyfikator liczbowy: 1.3.6.1.2.1.4.3 W komunikatach SNMP nazwa każdej zmiennej zakończona jest sufiksem. Dla zmiennych prostych (nie strukturalnych) sufiksem jest 0. Dla tablic sufiks może składać się z pewnych elementów pól przechowywanych w tablicach, np. może to być numer IP ( doklejony do identyfikatora). Przykład dla zmiennej prostej: udpindatagrams: iso.org.dod.internet.mgmt.mib.udp.udpindatagrams.0 lub 1.3.6.1.2.7.1.0 Przykład dla tablicy udptable: udplocaladdress udplocalport 0.0.0.0 67 0.0.0.0 161 0.0.0.0 520 System odbiera datagramy na każdym interfejsie na portach 67 (BOOTP), 161 (SNMP) i 520 (RIP). Wiersz Identyfikacja Skrócona nazwa Wartość
1 1.3.6.1.2.7.5.1.1.0.0.0.0.67 udplocaladdress.0.0.0.0.67 0.0.0.0 1.3.6.1.2.7.5.1.2.0.0.0.0.67 udplocalport.0.0.0.0.67 67 2 1.3.6.1.2.7.5.1.1.0.0.0.0.161 udplocaladdress.0.0.0.0.161 0.0.0.0 1.3.6.1.2.7.5.1.2.0.0.0.0.161 udplocalport.0.0.0.0.161 161 3 1.3.6.1.2.7.5.1.1.0.0.0.0.520 udplocaladdress.0.0.0.0.520 0.0.0.0 1.3.6.1.2.7.5.1.2.0.0.0.0.520 udplocalport.0.0.0.0.520 520 Dostęp do elementów tablicy następuje w porządku leksykograficznym identyfikacji (kolumnowo- wierszowy). MIB różne grupy system - zawiera identyfikację systemu if - opis interfejsów (kart sieciowych), różne informacje o ramkach wysłanych i odebranych, wartość MTU at - informacje o translacji adresów ip - różne informacje z warstwy sieci, np. o datagramach, o tablicy rutowania (tablica iproutetable) icmp - informacje o komunikatach ICMP tcp - informacje o segmentach TCP, stanach połączeń, liczbach przejść między stanami, portach i numerach ip dla połączeń TCP Komunikaty SNMP SNMP 1 definiuje następujące komunikaty wymieniane między zarządzającym a agentem: get- request pobierz wartość zmiennych (zmiennej). get- next- request pobierz wartość następnej zmiennej (ułatwia przeglądanie tablic). set- request ustaw wartość zmiennej (zmiennych). get- response odpowiedź wysyłana od agenta do stacji zarządzającej. trap zawiadom stację zarządzającą o określonym zdarzeniu. get- bulk- request (SNMP2) pobierz większą porcję danych. inform- request (SNMP2) prześlij informacje z jednej stacji zarządzającej do drugiej. Większość komunikatów SNMP składa się z pól: wersja, community (można na to patrzeć jak na hasło), typ PDU (typ komunikatu), id zapytania (pozwala identyfikować odpowiedzi), status błędu (jaki błąd wystąpił), indeks błędu (której zmiennej błąd dotyczy) nazwa, wartość [,...]. Inaczej wygląda komunikat typu trap (pułapka). Pułapki są wysyłane na port UDP 162 na komputerze zarządzającym. Jedna z pułapek jest typu Enterpise specific określana przez firmę- producenta. Komunikat trap posiada następujące pola: Typ komunikatu (pułapka), enterprise, agent addr, typ pułapki, specyficzny kod, time- stamp, nazwa, wartość, [,...].
Format komunikatów SNMP Komunikaty SNMP nie używają stałych pól określonej długości. Stosują specjalny język zapisu ASN.1. W zapisie tym są stosowane kody słów kluczowych. Wartości zapisywane są w tzw. formacie BER. Szczegóły dotyczące ASN.1 i BER nie są potrzebne aby rozumieć i używać SNMP. RMON remote monitoring Wersja Cisco protokołu do zarządzania siecią.