lukasz.bromirski.net

aviate, navigate, communicate

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.


udostępnij