Salut,
Cu cateva saptamani in urma, intrebam pe lista daca stie cineva un tool,
care sa stie mai multe nivele de imbrincare decat htb-tools si alte
facilitati. Neprimind un raspuns concret, m-am apucat sambata sa scriu
un tool care sa-mi indeplineasca cerintele.
Ce stie sa faca?
Fisierul/fisierele de configuratie sunt in format xml, cu DTD
validation. Suporta pana la 10240 clase per nivel imbrincare. Nr. de
nivele: 2^32 / 10240. Tot 10240 filtre per clasa. Din pacate, nu stie
hashes (e prea mult pentru 2 zile de munca continua). In schimb stie de
filtre u32 si filtre fw. Se poate opta pentru a configura ambele
interfete odata (chiar cu valori diferite, in acelasi fisier), sau
pentru o singura interfata pe fisier de configurare, precum multe
altele.
Un exemplu:
Fisierul de configurare test.xml:
moya:~/work/xml-HTB$ cat samples/test.xml
<?xml version="1.0"?>
<!--
This is a sample file for HTB
-->
<!DOCTYPE htb SYSTEM "../etc/c-xml-HTB.dtd">
<htb
if="eth0"
outif="eth1"
>
<class
name="main"
rate="512kbit"
ceil="1024kbit"
>
<class
name="400M"
rate="128kbit"
ceil="512kbit"
outrate="64kbit"
outceil="128kbit"
>
<leaf/>
<filter type="u32" dst="192.168.0.0/24"/>
<filter type="u32" src="10.1.1.1/32"/>
<filter type="fw" mark="0x02"/>
</class>
</class>
<default/>
</htb>
Se face validarea prin DTD, generand errors in cazul in care
utilizatorul a gresit sintaxe, nume de atribute, etc...
Rezultatul dupa rulare:
moya:~/work/xml-HTB$ ./test.sh
# HTB for interfaces
# in (OUR side): eth0, out (PROVIDER side): eth1
DEV="eth0"
OUTDEV="eth1"
# add class, name: main
$TC add dev $DEV parent 0x01:0000 classid 0x01:0x0001 htb rate 512kbit
ceil 1024kbit prio 1 quantum 1536
$TC add dev $OUTDEV parent 0x01:0000 classid 0x01:0x0001 htb rate
512kbit ceil 1024kbit prio 1 quantum 1536
# add class, name: 400M
$TC add dev $DEV parent 0x01:0001 classid 0x01:0x2801 htb rate 128kbit
ceil 512kbit prio 1 quantum 1536
$TC add dev $OUTDEV parent 0x01:0001 classid 0x01:0x2801 htb rate 64kbit
ceil 128kbit prio 1 quantum 1536
$TC qdisc add dev $DEV parent 0x01:0x2801 handle 0x2801:0x00 sfq perturb
5
$TC qdisc add dev $OUTDEV parent 0x01:0x2801 handle 0x2801:0x00 sfq
perturb 5
$TC filter add dev $DEV protocol ip parent 0x01:0x00 prio 1 u32 \
match ip dst 192.168.0.0/24 flowid 0x01:0x2801
$TC filter add dev $OUTDEV protocol ip parent 0x01:0x00 prio 1 u32 \
match ip src 192.168.0.0/24 flowid 0x01:0x2801
$TC filter add dev $DEV protocol ip parent 0x01:0x00 prio 1 u32 \
match ip src 10.1.1.1/32 flowid 0x01:0x2801
$TC filter add dev $OUTDEV protocol ip parent 0x01:0x00 prio 1 u32 \
match ip dst 10.1.1.1/32 flowid 0x01:0x2801
$TC filter add dev $DEV protocol ip parent 0x01:0x00 prio 1 fw \
handle 0x02 flowid 0x01:0xbffff238
# add default class
$TC class add dev $DEV parent 0x01:0x00 classid 0x01:0xffff htb rate
8kbit ceil 8kbit quantum 1536
$TC class add dev $OUTDEV parent 0x01:0x00 classid 0x01:0xffff htb rate
8kbit ceil 8kbit quantum 1536
Mai sunt ceva lipsuri in scriptul generat, dar la ora asta nu le mai
corectez, mai e si maine o zi.
As vrea sa stiu, pentru cine e interesat de el, daca aveti instalat
libxml1 (el e proiectat pe libxml2) pentru ca sunt membrii de structuri
care difera ca denumire (doar 1-2 membrii in 1-2 structuri), exista si
niste wrappers pentru ei in libxml2 si sa stiu daca folosesc cu
wrappers, sau ramane pentru libxml2+.
libxml1/libxml2 este o librarie de este folosita in GNOME si in KDE, dar
este standalone, nu depinde de GNOME si nici de KDE, in Slackware vine
by default, deci nu ar trebui sa existe probleme in sensul asta in alte
distributii.
Unde mi-ati recomanda sa upload proiectul? sourceforge.net, AFAIK, e
slow si aglomerat, exista vreo alternativa mai buna? Deocamdata e pe
CVS pe sistemul meu de la munca.
De asemenea, sub ce licenta, mi-ati recomanda, sa-l release?
Multumesc,
--
Claudiu Cismaru
---
Detalii despre listele noastre de mail: http://www.lug.ro/