Funkcja samplingu umożliwia zbieranie informacji na temat losowej części ruchu, określonej jako 1 losowy pakiet z N, gdzie N jest konfigurowalnym parametrem. Jest to tak zwany Random Sampled NetFlow.
Dla przykładu, jeśli będziemy chcieli zebrać informację na temat 1 losowego pakietu ze 100, sampler może wybrać pakiety z numerami 5, 120, 199, 302, i tak dalej.
Na niektórych starszych platformach można spotkać się z Sampled NetFlow, gdzie sampler przy konfiguracji 1 na 100, wybierze pakiet o numerze 1, 101, 201, 301, i tak dalej. Nas to aktualnie nie dotyczy - na wykorzystywanych w przykładach platformach działa tylko Random Sampled NetFlow.
Takie podejście daje statystyczny pogląd na temat całościowego ruchu. Szczególnie dotyczy to sytuacji, gdzie mamy do czynienia z ruchem pojawiającym się w dość regularnym i ustalonym wzorcu. Samplowanie ruchu redukuje obciążenie routera oraz ilość eksportowanego przez niego ruchu (jak podaje producent, przy samplowaniu 1 na 100, możemy osiągnąć redukcję około 50% danych). Niemniej, należy pamiętać o tym, że tracimy część informacji.
Zainteresowanych zbieraniem danych o ruchu oraz jego analizą zachęcamy do zapoznania się z Cisco Stealthwatch.
R4(config)# flow-sampler-map SAMPLER-1-out-of-10-TNF
R4(config-sampler)# ?
Flow sampler configuration commands:
exit Exit from flow-sampler-map configuration mode
mode Mode of packet sampling for netflow processing
R4(config-sampler)# mode ?
random Random mode of sampling
R4(config-sampler)# mode random ?
one-out-of Select one packet out of
R4(config-sampler)# mode random one-out-of ?
<1-65535> number of sequential packets to select one packet from
R4(config-sampler)# mode random one-out-of 10
R4(config-sampler)# exit
R4(config)#
Maksymalnie możemy skonfigurować 8 samplerów. Przy próbie zdefiniowania 9 pojawi się błąd, który widać poniżej.
R4(config)# flow-sampler-map SAMPLER-1-out-of-10-TNF
R4(config-sampler)# mode random one-out-of 10
R4(config-sampler)# flow-sampler-map SAMPLER-1-out-of-20-TNF
R4(config-sampler)# mode random one-out-of 20
R4(config-sampler)# flow-sampler-map SAMPLER-1-out-of-30-TNF
R4(config-sampler)# mode random one-out-of 30
R4(config-sampler)# flow-sampler-map SAMPLER-1-out-of-40-TNF
R4(config-sampler)# mode random one-out-of 40
R4(config-sampler)# flow-sampler-map SAMPLER-1-out-of-50-TNF
R4(config-sampler)# mode random one-out-of 50
R4(config-sampler)# flow-sampler-map SAMPLER-1-out-of-60-TNF
R4(config-sampler)# mode random one-out-of 60
R4(config-sampler)# flow-sampler-map SAMPLER-1-out-of-70-TNF
R4(config-sampler)# mode random one-out-of 70
R4(config-sampler)# flow-sampler-map SAMPLER-1-out-of-80-TNF
R4(config-sampler)# mode random one-out-of 80
R4(config-sampler)# flow-sampler-map SAMPLER-1-out-of-90-TNF
R4(config-sampler)# mode random one-out-of 90
%Flow: Max number of samplers configured
%Flow: Error could not create sampler
R4(config-sampler)#
Jeden sampler może zostać przypisany do więcej niż jednego źródła informacji, którymi mogą być różne interfejsy, podinterfejsy i klasy ruchu (w środku class-map). Strumienie z tych wszystkich źródeł ruchu są ze sobą łączone przed trafieniem do samplera. Zatem wybór 1 losowego pakietu z N realizowany jest na całościowym ruchu, pochodzącym z wielu źródeł. Na razie skupimy się na wykorzystaniu samplera na interfejsach i podinterfejsach, gdzie sposób jego konfiguracji jest dokładnie taki sam.
Niemniej należy pamiętać, że uruchomienie samplera na interfejsie głównym nie spowoduje jego uruchomienia na podinterfejsach i tak samo w drugą stronę. Stąd, należy wejść do każdego wybranego interfejsu czy podinterfejsu i przypiąć sampler na interesującym nas kierunku zbierania informacji.
Warto zwrócić uwagę na ostrzeżenia przy próbie uruchomienia samplera, na interfejsie gdzie działa już zbieranie informacji o wszystkich przepływach. Sampler nie zostanie aktywowany i zbierane będą nadal informacje o wszystkich przepływach. Stąd, by sampler zaczął działać, należy wcześniej zanegować polecenia ip flow ingress i ip flow egress. Jeśli ponownie włączymy zbieranie wszystkich informacji, to sampler zostanie ponownie wyłączony. Zbieranie wszystkich informacji ma priorytet nad samplerem.
R4(config)# interface GigabitEthernet 0/0
R4(config-if)# flow-sampler SAMPLER-1-out-of-10-TNF
R4(config-if)#
*Aug 15 16:33:08.601 UTC: Warning: ingress netflow will override the sampler.
R4(config-if)# flow-sampler SAMPLER-1-out-of-10-TNF egress
R4(config-if)#
*Aug 15 16:33:12.561 UTC: Warning: egress netflow will override the sampler.
R4(config-if)# no ip flow ingress
R4(config-if)#
*Aug 15 16:33:20.309 UTC: Warning: ingress sampler re-enabled.
R4(config-if)# ip flow ingress
R4(config-if)#
181218: Sep 9 20:27:54.437 UTC: Warning: ingress netflow will override the sampler.
R4(config-if)# no ip flow ingress
R4(config-if)#
*Aug 15 16:33:20.309 UTC: Warning: ingress sampler re-enabled.
R4(config-if)# no ip flow egress
R4(config-if)#
*Aug 15 16:33:23.529 UTC: Warning: egress sampler re-enabled.
R4(config-if)# do show ip flow interface
GigabitEthernet0/0
flow-sampler SAMPLER-1-out-of-10-TNF
flow-sampler SAMPLER-1-out-of-10-TNF egress
R4(config-if)#
Przed weryfikacją, skonfigurujemy drugi sampler i przypniemy go na wejściu interfejsu Gi0/0 R4. Pozwoli nam to zaobserwować różne informacje na temat opcji samplera w eksportowanych szablonach opcji i danych opcji. Poniżej zostały też zaprezentowane wyniki poleceń, pokazujące konfigurację samplerów i ich przypisanie do interfejsów.
R4(config)# flow-sampler-map SAMPLER-1-out-of-100-TNF
R4(config-sampler)# mode random one-out-of 100
R4(config-sampler)# exit
R4(config)# interface GigabitEthernet 0/0
R4(config-if)# flow-sampler SAMPLER-1-out-of-100-TNF
R4(config-if)# end
R4# show flow-sampler
Sampler : SAMPLER-1-out-of-10-TNF, id : 1, packets matched : 461, mode : random sampling mode
sampling interval is : 10
Sampler : SAMPLER-1-out-of-100-TNF, id : 2, packets matched : 0, mode : random sampling mode
sampling interval is : 100
R4# show ip flow interface
GigabitEthernet0/0
flow-sampler SAMPLER-1-out-of-100-TNF
flow-sampler SAMPLER-1-out-of-10-TNF egress
GigabitEthernet0/2.56
ip flow ingress
ip flow egress
R4# show ip cache verbose flow
IP packet size distribution (8369 total packets):
1-32 64 96 128 160 192 224 256 288 320 352 384 416 448 480
.012 .597 .185 .167 .006 .001 .002 .000 .000 .002 .000 .001 .001 .001 .001
512 544 576 1024 1536 2048 2560 3072 3584 4096 4608
.001 .003 .002 .009 .000 .000 .000 .000 .000 .000 .000
IP Flow Switching Cache, 278544 bytes
9 active, 4087 inactive, 1642 added
38985 ager polls, 0 flow alloc failures
Active flows timeout in 30 minutes
Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 34056 bytes
9 active, 1015 inactive, 1578 added, 1578 added to flow
0 alloc failures, 0 force free
1 chunk, 2 chunks added
last clearing of statistics never
Protocol Total Flows Packets Bytes Packets Active(Sec) Idle(Sec)
-------- Flows /Sec /Flow /Pkt /Sec /Flow /Flow
TCP-BGP 206 0.0 1 56 0.0 3.3 15.5
TCP-other 523 0.1 7 65 0.8 9.9 15.4
UDP-NTP 143 0.0 1 74 0.0 0.1 15.6
UDP-other 63 0.0 9 88 0.1 34.1 15.4
ICMP 59 0.0 20 93 0.2 17.3 15.8
IGMP 34 0.0 1 39 0.0 0.0 15.5
GRE 72 0.0 2 53 0.0 3.1 15.5
IP-other 251 0.0 2 56 0.1 6.5 15.5
Total: 1351 0.2 5 70 1.5 8.1 15.5
SrcIf SrcIPaddress DstIf DstIPaddress Pr TOS Flgs Pkts
Port Msk AS Port Msk AS NextHop B/Pk Active
IPM: OPkts OBytes BGP: BGP NextHop
Gi0/2.56 172.16.46.6 Local 172.16.46.4 06 C0 18 2
391C /24 0 00B3 /0 0 0.0.0.0 49 6.2
BGP: 0.0.0.0
Gi0/2.56 172.16.6.1 Gi0/0 172.16.12.1 01 00 10 100
0000 /32 65006 0000 /24 0 10.246.34.3 100 0.2
BGP: 10.246.255.2
Gi0/2.56 172.16.6.1 Gi0/0* 172.16.12.1 01 00 10 10
0000 /0 0 0000 /0 0 0.0.0.0 100 0.2
BGP: 10.246.255.2
Sampler: 1 FFlags: 05
Pos:Lbl-Exp-S 1:16-0-1
Gi0/2.56 172.16.6.141 Gi0/0 10.246.255.1 06 60 18 2
83A2 /25 65006 07D0 /0 65007 10.246.34.3 46 0.0
BGP: 10.246.255.2
Gi0/2.56 172.16.56.6 Gi0/0 172.16.1.123 06 C0 18 2
0016 /24 65005 D50E /24 0 10.246.34.3 58 0.0
BGP: 10.246.255.2
Gi0/0 172.16.12.1 Gi0/2.56 172.16.6.1 01 00 10 2
0000 /24 0 0800 /32 65006 172.16.46.6 81 0.0
BGP: 172.16.46.6
Sampler: 2
Gi0/0 172.16.12.1 Gi0/2.56* 172.16.6.1 01 00 10 100
0000 /24 0 0800 /32 65006 172.16.46.6 100 0.2
BGP: 172.16.46.6
FFlags: 01
Gi0/0 172.16.1.123 Local 10.246.255.4 06 10 10 2
D4F6 /24 0 0016 /32 0 0.0.0.0 51 0.0
BGP: 0.0.0.0
Sampler: 2
Gi0/0 10.246.255.1 Gi0/2.56* 172.16.6.141 06 60 18 1
07D0 /0 65007 83A2 /25 65006 172.16.46.6 52 0.0
BGP: 172.16.46.6
FFlags: 01
R4#
Powyżej, kolorami zostały oznaczone rekordy powstałe na skutego wygenerowania 100 pakietów ICMP z adresu 172.16.12.1 do adresu 172.16.6.1. Na wejściu Gi0/0 R4, przez sampler o ID 2 zostały wyłapane 2 pakiety. Na wyjściu Gi0/0 R4, przez sampler o ID 1 zostało wyłapane 10 pakietów. Na podinterfejsie Gi0/2.56, gdzie zbierane są informacje z wszystkich pakietów, wyłapane zostało po 100 pakietów w obu kierunkach.
Na początku wspomnieliśmy o ograniczeniach w eksporcie informacji na temat wykorzystywanych samplerów w NetFlow v5. Poniżej można zobaczyć przykładowy pakiet, jaki zostanie wysłany do kolektora na skutek zebrania informacji przez sampler. Warto zwrócić uwagę na ostatnie pole rekordu o nazwie 'Padding', w którego ostatnich 3 bitach zawarte jest ID samplera. W naszym przypadku jest to 1.
Jeśli w NetFlow v9 chcemy eksportować informacje na temat wykorzystywanych samplerów, należy włączyć eksport szablonu opcji samplera. Opcja ta stanie się dostępna dopiero po zdefiniowaniu w systemie minimum jednego samplera. Zostało to zademonstrowane poniżej, gdzie widać dostępne opcje przed i po zdefiniowaniu samplera.
R4(config)# ip flow-export template options ?
export-stats Specify the template option export statistics
refresh-rate Specify the number of export packets before the options are resent
timeout-rate Specify the time before the options are resent
R4(config)# flow-sampler-map SAMPLER-1-out-of-10-TNF
R4(config-sampler)# mode random one-out-of 10
R4(config-sampler)# exit
R4(config)# ip flow-export template options ?
export-stats Specify the template option export statistics
refresh-rate Specify the number of export packets before the options are resent
sampler Specify the template option sampler
timeout-rate Specify the time before the options are resent
R4(config)# ip flow-export template options sampler
R4(config)#
Bez tej opcji, w każdym z rekordów zawarte będą tylko informacje o ID samplera, podobnie jak miało to miejsce w NetFlow v5. W NetFlow v9 zdefiniowane zostały do tego celu specjalne pola, która będzie można zaraz zobaczyć.
Poleceniami ip flow-export template options export-stats (informacje na temat wysłanej ilości pakietów i przepływów - Id = 259) i ip flow-export template options sampler (informacje na temat samplerów - Id = 258) zostały włączone dodatkowe szablony opcji. Przyjrzyjmy się nim niżej.
Poniżej widać wysyłane do kolektora informacje, na temat skonfigurowanych przez nas powyżej samplerów. Należy do nich ID, tryb pracy i częstotliwość samplowania.
Dane NetFlow v9 dla każdego z przepływów zawierają informacje na temat ID samplera i ID klasy. Do ID klasy wrócimy w kolejnym artykule. Pola te są dostępne w predefiniowanym w TNF szablonie bez względu na to, czy zdefiniowany został jakiś sampler (jeśli ruch nie podlegał samplowaniu, to znajdują się tam same zera).
Poprzez ID samplera, kolektor mam możliwość powiązania rekordu przepływu z konfiguracją samplera. Dzięki temu może statystycznie oszacować realną wielkość ruchu na interfejsie. Stąd przy konfiguracji samplingu, zaleca się wykorzystania NetFlow v9 do eksportu danych.
Zapraszamy do kontaktu drogą mailową This email address is being protected from spambots. You need JavaScript enabled to view it. lub telefonicznie +48 797 004 932.