ip sla i shell scripting

miałem wczoraj problem - na szybko potrzebowałem wygenerować minimum paręnaście pakietów na sekundę pomiędzy dwoma urządzeniami (konkretnie - przełącznikiem 3550 i 4900M), a oba stały sobie daleko od różnych przyjaznych serwerów z hpingiem, pingiem z opcją milisekundowego zalewania ruchem, etc. zadanie nie było banalne, bo ten ruch miał trwać parę godzin, więc ping z linii poleceń nie jest szczególnie przydatny.

rozwiązanie było w miarę oczywiste - ip sla.

ponieważ to 4900M miał być testowany, na 3550 wygenerowałem dwa VRFy:

ip vrf TEST100
 rd 100:100

ip vrf TEST200
 rd 200:200

następnie na interfejsach Fa0/17 i Fa0/18 przełącznika 3550 dodałem interfejsy IP i routing w VRFach:

interface fa0/17
 no switchport
 ip vrf forwarding TEST100
 ip address 10.10.100.254 255.255.255.0

interface fa0/18
 no switchport
 ip vrf forwarding TEST200
 ip address 10.10.200.254 255.255.255.0

! teraz routing domyślny per VRF - po drugiej stronie są IP 4900M

ip route vrf TEST100 0.0.0.0 0.0.0.0 10.10.100.1
ip route vrf TEST200 0.0.0.0 0.0.0.0 10.10.200.1

po stronie 4900M należało wykonać podstawową konfigurację routingu - bo tutaj żadne VRFy nie są potrzebne:

interface Gi2/1
 no switchport
 ip address 10.10.100.1 255.255.255.0

interface Gi2/2
 no switchport
 ip address 10.10.200.1 255.255.255.0

ip routing

i w zasadzie to tyle jeśli chodzi o 'lab' - pozostało wygenerować próbki ip sla. niestety, minimalna częstotliwość wysyłania próbek na 3550 to skromna 1 sekunda, zatem trzeba było ich wygenerować 'trochę'. na szybko przyszedł mi do głowy tylko pomysł ze zrobieniem tego z automatu:

#!/usr/local/bin/bash

echo > ipsla_vrf.txt

for (( x=100; x<=199; x++ ))
do
 echo "ip sla $x" >> ipsla_vrf.txt
 echo " icmp-echo 10.10.200.254 source-ip 10.10.100.254" >> ipsla_vrf.txt
 echo " request-data-size 1400" >> ipsla_vrf.txt
 echo " timeout 15" >> ipsla_vrf.txt
 echo " vrf TEST100" >> ipsla_vrf.txt
 echo " frequency 1" >> ipsla_vrf.txt
 echo "ip sla schedule $x life forever start-time now" >> ipsla_vrf.txt
 echo " " >> ipsla_vrf.txt
done

for (( x=200; x<=299; x++ ))
do
 echo "ip sla $x" >> ipsla_vrf.txt
 echo " icmp-echo 10.10.100.254 source-ip 10.10.200.254" >> ipsla_vrf.txt
 echo " request-data-size 1400" >> ipsla_vrf.txt
 echo " timeout 15" >> ipsla_vrf.txt
 echo " vrf TEST200" >> ipsla_vrf.txt
 echo " frequency 1" >> ipsla_vrf.txt
 echo "ip sla schedule $x life forever start-time now" >> ipsla_vrf.txt
 echo " " >> ipsla_vrf.txt
done

ten skrypt generuje do pliku ipsla_vrf.txt gotowe polecenia, które następnie wrzucić można z terminala do 3550 - przy obciążeniu 30% CPU dla tych 200 próbek, daje to już 'jakiś' ruch. oczywiście ani 3550 nie jest specjalnie atrakcyjny jako generator próbek IP SLA (słaby procesor), ani sam 'test' nie był szczególnie wymagający, ale trochę więcej niż 1 pakiet na sekundę udało się uzyskać :)

jakieś inne pomysły? czekam na komentarze.

Łukasz Bromirski

Read more posts by this author.

Warszawa, Polska http://lukasz.bromirski.net