Jak tworzyć statystyki interfejsów sieciowych?

Prawie każde bardziej zaawansowane urządzenie sieciowe posiada zaimplementowany protokół SNMP. Wykorzystanie tego mechanizmu pozwala na kreślenie dowolnych statystyk zmieniających się parametrów sieciowych.

SNMP (Simple Network Management Protocol) jest protokołem warstwy aplikacji, który służy do wymiany informacji zarządzających pomiędzy urządzeniami sieciowymi. Najmniej bezpieczna, ale najpowszechniej wykorzystywana jest pierwsza wersja SNMP. Zarządzana sieć SNMP składa się z trzech komponentów: urządzenia zarządzanego, agenta oraz systemu zarządzającego. Urządzenia zarządzane mogą być routerami, przełącznikami, drukarkami, itp. Agent wbudowany w urządzenie posiada lokalną bazę informacji o nazwie MIB (Management Information Base). Urządzenia zarządzane są wyposażone w moduł oprogramowania agenta. Agent jest odpowiedzialny za realizację dostępu do lokalnej bazy obiektów MIB, które reprezentują zasoby i aktywność w danym węźle. Agent sterowany przez zarządcę pozwala na odczyt i zapis wartości bazy MIB.

Przykładowym obiektem, który może zostać odczytany jest mechanizm zliczający ilość pakietów wysłanych i otrzymywanych przez interfejs w danym węźle. Zarządca może śledzić taką wartość, monitorując obciążenie łącza w danym punkcie sieci. Jak przebiega taki proces?

Platforma zarządzania sieciowego wysyła zapytanie do agenta, następnie agent zwraca odpowiedź. Zapytanie i odpowiedź odnosi się do zmiennych dostępnych w oprogramowaniu agenta. Oprogramowanie zarządzające (lub narządzie z linii komend) odnajduje zmienną w bazach MIB, używając identyfikatora obiektu. Aby utrzymać porządek oraz uprościć zadania agenta, identyfikatory obiektu (Object ID - OID) są zorganizowane hierarchicznie. Odczyt danych jest możliwy po uwierzytelnieniu łańcuchem społeczności (community). Istnieją dwa rodzaje społeczności: read-only oraz read-write. Wiele urządzeń używa społeczności "public" jako domyślnego ustawienia read-only oraz społeczności "private" jako domyślnego łańcucha read-write.

Do sprawdzenia zasady działania SNMP wykorzystamy system Linux z zainstalowanym oprogramowaniem snmp. W przypadku dystrybucji Debian, instalujemy niezbędne oprogramowanie przez wykonanie polecenia: apt-get install snmp. Aby sprawdzić jakie interfejsy są dostępne w danym urządzeniu, wystarczy wykonać polecenie:

router:~# snmpwalk -v 1 -c public 192.168.0.1

SNMPv2-MIB::sysDescr.0 = STRING: router

SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.14988.1

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (188587800) 21 days, 19:51:18.00

SNMPv2-MIB::sysContact.0 = STRING: TEST

SNMPv2-MIB::sysName.0 = STRING: TEST

SNMPv2-MIB::sysLocation.0 = STRING: TEST

SNMPv2-MIB::sysServices.0 = INTEGER: 78

IF-MIB::ifNumber.0 = INTEGER: 2

IF-MIB::ifIndex.6 = INTEGER: 6

IF-MIB::ifIndex.7 = INTEGER: 7

IF-MIB::ifDescr.6 = STRING: ether1

IF-MIB::ifDescr.7 = STRING: ether2

Opcja "-v 1" określa pierwszą wersję protokołu, opcja "-c public" definiuje nazwę społeczności (community), następnie podajemy adres IP sprawdzanego urządzenia. W wyniku wykonania polecenia otrzymamy m.in. listę dostępnych interfejsów (ether1, ether2). Programy pobierające dane, a następnie tworzące wykresy interesuje jeszcze jeden parametr, określany licznikami. W przypadku kreślenia statystyk interfejsu, wykorzystywane są dane przekazywane przez liczniki ifInOctets oraz ifOutOctets:

router:~# snmpwalk -v 1 -c public 192.168.0.1 | grep ifInOctets

IF-MIB::ifInOctets.6 = Counter32: 4229788677

IF-MIB::ifInOctets.7 = Counter32: 2775206305

router:~# snmpwalk -v 1 -c public 192.168.0.1 | grep ifOutOctets

IF-MIB::ifOutOctets.6 = Counter32: 1197908057

IF-MIB::ifOutOctets.7 = Counter32: 2564855731

Do zbierania danych przez SNMP, a następnie ich kreślenia istnieją gotowe mechanizmy i aplikacje. Powszechnie wykorzystywanym oprogramowaniem jest MRTG oraz RRDTool. Konfiguracja MRTG nie jest skomplikowana, dodatkowo istnieją skrypty automatyzujące ten proces. Konfiguracja RRDTool wymaga nieco więcej zaangażowania, ale przeważnie narzędzie to jest wykorzystywane jako element samodzielnie tworzonych oraz ogólnie dostępnych systemów zarządzania. Przykładem jest aplikacja Cacti (cacti.net).

Również pod postacią niezależnej aplikacji dla systemu Windows, istnieje spora grupa programów realizujących podobne zadania. Przykładem darmowego narzędzia jest Interface Traffic Indicator. To proste narzędzie monitoruje ruch interfejsów w czasie rzeczywistym dla dowolnego urządzenia zarządzanego przez SNMP. Musimy jedynie zdefiniować adres IP urządzenia, nazwę społeczności i numer interfejsu. Przez wciśnięcie przycisku "First Contact" podłączamy się do urządzenia i odczytujemy nazwy dostępnych interfejsów. Określamy także częstotliwość zbierania danych. Możemy kreślić ruch wchodzący/wychodzący oraz utylizację interfejsu. To bardzo pożyteczne narzędzie, gdy potrzebujemy zbadać chwilowo zachodzące zmiany.

Kamil Folga