kwestia dokładnego nadzoru ruchu wymienianego pomiędzy systemami autonomicznymi w dobie peerowania się ze wszystkimi we wszystkich dostępnych IXach stała się kluczowa do możliwości utrzymania realnej przewidywalności prowadzonego biznesu, optymalizacji wykupionych usług oraz oczywiście - optymalnej inżynierii ruchu w sieci.
dosyć popularnym, otwartym oprogramowaniem do prostego zliczania i wizualizacji ruchu wymienianego z poszczególnymi ASami oraz obciążenia połączeń z rozbiciem na poszczególne ASy jest pakiet AS-Stats - bardzo prosty, wydajny i dający szybko wgląd w to co się dzieje na routerze. kluczowym elementem pakietu jest plik knownlinks
, który zawiera zestawienie identyfikatorów interfejsów - ponieważ próbki NetFlow eksportowane do kolektora zawierają tylko identyfikator. plik ten wygląda następująco:
# Router IP SNMP ifindex tag description color
192.168.0.1 1 ATMAN ATMAN 5EA631
192.168.0.1 2 CROWLEY Crowley FFFF00
192.168.0.1 3 TPSA TP E45605
indeks interfejsu do wpisania do tego pliku odczytuje się na eksportującym próbki NetFlow routerze poleceniem:
show snmp mib ifmib ifindex
wszystko jest dobrze, dopóki router nie musi zostać przeładowany - tak się na jednym poczciwym 3845 stało i wykresy zaczęły zastanawiać swoją nieprawdziwością :) okazało się oczywiście że problem był banalny - po restarcie interfejsy zostały ponumerowane od nowa i dwa z nich zamieniły się identyfikatorami. można temu zapobieć (i należy) wydając polecenie:
snmp-server ifindex persist
tak czy inaczej, próbując ustalić czemu ruch w statystykach wygląda dosyć nieprawdopodobnie wykorzystałem możliwości Cisco IOSa w zakresie dostępności z linii poleceń gotowych do analizy statystyk NetFlow - tzw. Flexible NetFlow. dotychczasowa konfiguracja NetFlow była globalna (z paroma różnymi wyjątkami), natomiast wraz w wprowadzeniem NetFlow w wersji 9 pojawiła się bardzo elastyczna modularność całej konfiguracji. nas interesowała statystyka zbiorcza ruchu per źródłowy AS na poszczególnych interfejsach, zdefiniowałem zatem rekord NetFlow:
flow record NF-DATA
match routing source as peer
match interface input
collect routing source as
collect counter bytes
collect counter packets
a następnie trzy osobne instancje realizujące monitoring - w rzeczywistej konfiguracji moga one dodatkowo zawierać swoją własną definicję celu eksportu próbek, tutaj nigdzie tego nie eksportuje, jedynie zliczam:
flow monitor FM-ATMAN
record NF-DATA
!
flow monitor FM-Crowley
record NF-DATA
!
flow monitor FM-TP
record NF-DATA
następnie tak przygotowaną definicję należy dokonfigurować do odpowiedniego interfejsu - każda zdefiniowana instancja monitora zbierać będzie zadane dane dla konkretnego ruchu wejściowego przez interfejs do konkretnego operatora:
interface GigabitEthernet 0/0.100
description Uplink-ATMAN
ip flow monitor FM-ATMAN input
ip flow ingress
!
interface GigabitEthernet 0/0.101
description Uplink-Crowley
ip flow monitor FM-Crowley input
ip flow ingress
!
interface GigabitEthernet 0/0.102
description Uplink-TP
ip flow monitor FM-TP input
ip flow ingress
w tym momencie pamięć podręczna każdego z monitorów powinna zacząć już zapełniać się zdefiniowanymi w rekordzie NF-DATA danymi. pamięć tą zestawiać można w najróżniejsze sposoby, wykonując sortowanie, zliczanie, agregację, czy nawet eksport do pliku CSV lub na dowolny zewnętrzny nośnik. nas interesowało jednak tylko zweryfikowanie, że na każdym z interfejsów dociera do nas ruch z konkretnych ASów.
c3845#show flow monitor FM-ATMAN cache aggregate routing source as counter bytes sort highest counter bytes
Processed 6 flows
Aggregated to 6 flows
Showing the top 6 flows
IP SRC AS BYTES flows
========= ========== ==========
24724 1669629642 1
2529 375072464 1
16265 172599860 1
8615 2173 1
2852 64 1
i istotnie - na łączu do ATMANa widać wyraźnie że najwięcej ruchu dociera z samego ASa 24724. z kolei na łączu z TP:
c3845#show flow monitor FM-TP cache aggregate routing source as counter bytes sort highest counter bytes
Processed 8 flows
Aggregated to 8 flows
Showing the top 8 flows
IP SRC AS BYTES flows
========= ========== ==========
5617 166892112 1
34805 1435138 1
41023 1613 1
48224 1400 1
39006 1063 1
283 437 1
20829 152 1
…też głównym dostawcą zawartości jest AS5617 - oczywiście nie zawsze tak musi być, ale może to posłużyć do szybkiej weryfikacji czy wykresy statystyk ruchowych nie pokazują nieprawdy. czy zdefiniowanie takich monitorów mocno obciąża procesor? dla ruchu zagregowanego ponad 300Mbit/s i platformy 3845 skok w obciążeniu wynosi 2-3%. przy dobrze dobranej platformie nie ma się zatem co przejmować.