Generarea de mână a filtrelor folosind hash tables
este anevoioasă și NU se recomandă. Vom folosi un program C, disponibil |aici.
Descărcați și compilați programul prefixtree
:
root@gateway:~# wget http://vcalinus.gemenii.ro/prefixtree.c root@gateway:~# make prefixtree cc prefixtree.c -o prefixtree root@gateway:~# ./prefixtree IPv4 u32 hash filter generator - (C) 2006 Calin Velea Syntax: prefixtree {prefix.in} {u32filters.out} {interface} {src/dst} [batch]
Vom scrie fișierul prefix.in
care trebuie să conțină pe câte o linie adresa IP pentru care vrem să ne genereze filtrele și classid
-ul asociat.
Modificați scriptul de la exercițiul 07. [10p] HTB - observarea consumului de resurse astfel încât să introducă perechea adresaIP classid
în fișierul prefix.in
în loc să adauge filtrul asociat. Adăugați și masca adresei IP (/32
).
Rulăm comanda prefixtree
pe fișierul generat:
root@gateway:~# ./prefixtree prefix.in filters.out eth0 dst lines parsed: 4066 total hashtables: 4
Observați conținutul fișierului filters.out
. Aplicăm filtrele generate:
root@gateway:~# chmod +x filters.out root@gateway:~# ./filters.out
Testați din nou folosind iperf
. Obervați faptul că stația gateway
, cea care face limitările, nu mai intră în load (thread-urile kernel ksoftirqd
au CPU usage foarte mic).