pravidla IPFW

Dan Lukes dan at obluda.cz
Wed Feb 7 11:23:47 CET 2007


Zbyněk Burget napsal/wrote, On 02/07/07 10:53:
> nekolikrat se mluvilo rulich serazenych do binarniho stromu - snizeni 
> poctu pravidel, ktere se museji prochazet.

	Nejdriv poznamku - takove "binarizovani" snizi pocet ruli, pokud byl 
pocet uz pomerne hodne vysoky. Pokud byl relativne maly, pak "overhead 
binarizovani" muze byt takovy, ze celkova uspora je zaporna.

	Navic, "dal nepremyslet" je v tomto pripade mozne jen tehdy, pokud 
pakety "ruznych kategorii" prichazeji vice-mene rovnomerne ve stejnem 
poctu - pokdu jsou pakety nejake kategorie vyznamne castejsi nez druhe, 
lze dale optimalizovat i tvar toho binarniho stromu a v pripade, ze jsou 
toky opravdu hodne nerovnomerne rozlozene mohou byt v konkretnich 
pripadech efektivnejsi jine zpusoby razeni pravidel nez binarni strom.

	U deseti pravidel binarizovanim asi nic neusetris ...

> Kdyby mel nekdo nejaky sikovny odkaz na to, jak takovy "binarnestromovy" 
> ipfw konfiguracni soubor vypada, byl bych mu hlubeco zauzlovan.

	To je prece proste - rekneme, ze mas sit o sestnacti pocitacich 
identifikovanych IP adresou a pro kazdeho chces zavest specificke pravidlo.

	Tupe to napises takhle:
ipfw add 40 ... from 10.10.10.0  to any ...
ipfw add 41 ... from 10.10.10.1  to any ...
ipfw add 42 ... from 10.10.10.2  to any ...
...
ipfw add 55 ... from 10.10.10.15 to any ...

	Kazdy paket pak prochazi vsech sestnact pravidel. A nebo to napises takhle:

# --- uroven 1
ipfw add 10 skipto 20 from 10.10.10.0/28  to any ...
ipfw add 11 skipto 21 from 10.10.10.8/28  to any ...
ipfw add 12 skipto 100 from any to any ...
# --- uroven 2
ipfw add 20 skipto 30 from 10.10.10.0/29  to any ...
ipfw add 20 skipto 31 from 10.10.10.4/29  to any ...
ipfw add 21 skipto 32 from 10.10.10.8/29  to any ...
ipfw add 21 skipto 33 from 10.10.10.12/29 to any ...
# --- uroven 3
ipfw add 30 skipto 40 from 10.10.10.0/30  to any ...
ipfw add 30 skipto 41 from 10.10.10.2/30  to any ...
ipfw add 31 skipto 42 from 10.10.10.4/30  to any ...
ipfw add 31 skipto 43 from 10.10.10.6/30  to any ...
ipfw add 32 skipto 44 from 10.10.10.8/30  to any ...
ipfw add 32 skipto 45 from 10.10.10.10/30 to any ...
ipfw add 33 skipto 46 from 10.10.10.12/30 to any ...
ipfw add 33 skipto 47 from 10.10.10.14/30 to any ...
# --- uroven 4 - finalni
ipfw add 40 <akce>     from 10.10.10.0 to any ...
ipfw add 40 skipto 100 from 10.10.10.0 to any ...
ipfw add 40 <akce>     from 10.10.10.1 to any ...
ipfw add 40 skipto 100 from 10.10.10.1 to any ...
ipfw add 40 <akce>     from 10.10.10.2 to any ...
ipfw add 40 skipto 100 from 10.10.10.2 to any ...
...
ipfw add 54 <akce>     from 10.10.10.14 to any ...
ipfw add 54 skipto 100 from 10.10.10.14 to any ...
ipfw add 55 <akce>     from 10.10.10.15 to any ...
ipfw add 55 skipto 100 from 10.10.10.15 to any ...
# ----
Konec, dalsi pravidla pokracuji pravidlem 100
# ----

	Kazdy paket tak prochazi 1-2 pravidly na kazde urovni (vyjma posledni, 
kde vzdy prochazi dve), tzn. celkem 5-8 pravidel, misto puvodnich sestnacti.

	Neni ale uplne jasne, jak dalece je snizeni poctu pravidel z sestnacti 
na 5-8 az takova uspora - nedival jsem se presne do implementace a tak 
je mozne, ze operace "skipto" je drazsi nez jine (musi se prohledat 
seznam pravidel a najit "to spravne") a z nasich 5-8 pravidel jsou vzdy 
ctyri prave "skipto". Pokud by toto pravidlo bylo drazsi, pak by se pro 
takot maly pocet puvodnich pravidel optimalizace jeste ve skutecnosti 
vyplatit nemusela.

	Rozeskakovat samozrejme lze i podle jinych kriterii nez jsou IP adresy 
a metoda neni ani zafixovana na to, ze strom je nutne binarni - i kdyz - 
tam, kde to jde, je to nejefektivnejsi mozne deleni.

						Dan


-- 
Dan Lukes                                   SISAL MFF UK
AKA: dan at obluda.cz, dan at freebsd.cz,dan at kolej.mff.cuni.cz





More information about the Users-l mailing list