-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thu, 4 Dec 2003, Cristian Sava wrote:
> Salutare la toata lumea ! Hi > Ideea este ca ce am creat eu in perl este greoi pentru ca nu > reconfigureaza numai setarile unui anumit client/clienti ci reporneste > setarile pentru toti clientii, si astfel la un nr. mare de clienti > dureaza prea mult repornirea la cele x minute. Programul este relativ > inteligent si cu multi parametri de configurare utili dar nu este > fezabil pentru mai mult de 100-200 clienti. Exista cel putin o solutie pt asta (daca problema principala din cate am inteles eu este ca in timpul cat dureaza reinitializarea garantarilor clientii raman fara garantari si ai un burst de trafic pt cei cu garantari mici si packet loss pt cei cu banda mare). Una din solutii (pur userland) este sa folosesti 2 tree-uri htb. Creezi un htb in root, apoi 2 clase, ambele poti sa le pui de capacitate maxima 100mbit, apoi asocieti un qdisc htb la fiecare din aceste clase si apoi iti construiesti tree-ul tau de clase care inainte il puneai pe root, acum il pui pe unul din aceste 2 qdisc-uri. Cand faci reinitializarea garantarilor, te apuci si construiesti tree-ul nou in qdisc-ul nefolosit curent si dupa ce termini faci switch de la un tree la celalalt modificand (cu tc filter change) filtrul de la baza care inainte trimintea spre celalalt tree. Da, am uitat sa zic , pe langa cele 2 tree-uri trebuie sa ai un filtru pus pe root care sa trimita catre unul din tree-uri, apoi celelalte filtre care fac clasificarea efectiva se pun asociate qdisc-ului respectiv. Un exemplu: /sbin/tc qdisc del dev eth0 root /sbin/tc qdisc add dev eth0 root handle a0: htb default 100 /sbin/tc class add dev eth0 parent a0: classid a0:a01 htb rate 100Mbit # clasa default aici teoretic nu ar trebui sa se clasifice nimic /sbin/tc class add dev eth0 parent a0:a01 classid a0:100 htb rate 16kbps /sbin/tc class add dev eth0 parent a0:a01 classid a0:a10 htb rate 100Mbit /sbin/tc class add dev eth0 parent a0:a01 classid a0:a20 htb rate 100Mbit # filtrul de baza, initial trimite catre primul tree si anume a0:a10 /sbin/tc filter add dev eth0 parent a0: pref 1000 protocol ip handle 800::900 u32 match ip dst 0/0 flowid a0:a10 Apoi pe fiecare din a0:a10 si a0:a20 pui cate un qdisc htb, pui clase acolo avand parent acel qdisc si filtre avand parent acel qdisc Sper ca te-ai prins :) BUGS: imediat dupa ce faci switch-ul cu tc change pe filtrul default de la un tree la celalalt vezi ca clientii vor prinde un mic burst deoarece statisticile de burst ale lor sunt in tree-ul vechi, in cel nou au 0 si deci prind putin viteza dar fata de problema ta dinainte asta e complet neglijabila atentie ca dupa ce faci tc change sa astepti niste secunde inainte sa stergi qdisc-ul de pe tree-ul vechi (asta daca il stergi) ca sa se "curete"" packetele din cozile din tree-ul vechi si nu sa le distrugi (ai avea packet loss altfel). PS: alta solutie ar fi kernel level - -- Mihai RUSU Email: [EMAIL PROTECTED] GPG : http://dizzy.roedu.net/dizzy-gpg.txt WWW: http://dizzy.roedu.net "Linux is obsolete" -- AST -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3 (GNU/Linux) iD8DBQE/zxFMPZzOzrZY/1QRAo7xAKCpRM9ICUomDAXUjaryPEaWKs6BuACg3AXm m7mtkQBrLyxKMOvairtdnXI= =xMPN -----END PGP SIGNATURE----- --- Detalii despre listele noastre de mail: http://www.lug.ro/
