08. [20p] HTB - u32 hashing tables

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).