> Anyway, iptables nu foloseste hash? Nu am avut curiozitatea sa caut sa > vad. Cu toate ca nu prea vad... cum ar face. > Nu prea are cum pentru ca in netfilter sunt lanturi de conditii. Trebuie sa le parcurga pe toate pana ajunge la o regula ce opreste parcurgerea (ACCEPT DROP,....) In cel mai bun caz ar fi bine sa iti subinparti regulile in subclase si sa faci optimizare a parcurgerii regulilor. Ca simplu exemplu daca ai o clasa /24 de ip-uri in retea si pui regulile de accept sau drop intr-un singur lant de 254 de conditii numarul mediu de verificari pentru fiecare frame (pana se atinge o regula de iesire) este de 127. Daca in schimb faci 16 chainuri cu cate 16 ip-uri (subclasele /28) si ai un lant principal cu apeluri spre sublanturi, ceva de genul:
$ipt -A lant -s 192.168.0.0/28 -j subclasa1 $ipt -A lant -s 192.168.0.16/28 -j subclasa2 .... si subclasele: $ipt -A subclasa1 -s 192.168.0.1 -j ACCEPT $ipt -A subclasa1 -s 192.168.0.2 -j ACCEPT ..... samd pentru subclasa 2,...,16 numarul mediu de atingeri a regulilor scade de la 127 la 16. dar oricum nu iti vor trece toate pechetele prin lanturile lungi pentru ca teoretic in FORWARD ai pe la inceput o regula cu --state ESTABLISHED -j ACCEPT, si de aici majoritatea pachetelor nu iti mai parcurg celelalte lanturi. in plus se mai poate face un artificiu de calcul prin studierea traficului. daca urmaresti un timp ce se vehiculeaza prin retea, poti sa muti regulile cu hit-rateul mai mare mai in fata. hashul se poate aplica in principiu daca vrei sa cauti ceva intr-o lista. netfilterul nu e asa de mult o problema de cautare, cat e de interpretare. daca stai sa te gandesti e la fel cu cacheul L1 din microprocesoare. in microprocesoare exista ceva algoritmi de predictie a ce instructiuni se vor executa (pentru a fi aduse din RAM in cache). dar sunt destul de slabuti si nu bat decat pana la distanta de un/doua JMP conditionat. in final, sunt multe teoriile de cautare cu hashuri,... dar sunt mai greu de pus in practica pentru un netfilter la modul general. un sysadmin care STIE insa sa faca un firewall bine te poate scuti de multe probleme Cristi _______________________________________________ RLUG mailing list [email protected] http://lists.lug.ro/mailman/listinfo/rlug
