Pe data de Vin 14 Oct 2005 15:12, Alex 'CAVE' Cernat a scris:
> Salut
>
> Se da un router in care intra o banda de 1M (orice) si iese 'intern'
> pe mai multe interfete. Garantarea in prezent e cu HTB facut dupa
> ip-ul public (fiecare clasa de clienti are ip public separat, pentru
> simplitate). Binenteles ca avand mai multe interfete de iesire
> automat a trebuit folosit IMQ, iar garantarea mergea fara problema.
>
> Practic schema este cam asa:
> - root qdisk
>      - leaf1 (ip1)
>      - leaf2 (ip2) ... etc
> si apoi trimit pentru fiecare ip destinatie pachetul in leaf-ul
> asociat lui
>
> Intre timp s-a facut un upgrade la conexiune, cu 1M international si
> 2M total (metro+extern). Ma strofoc acum sa-mi dau seama cum draq pot
> sa modific garantarea astfel incat sa mearga asa cum doresc. Sarim
> peste marcare de pachete international si kestii legate de genul
> asta, ca nu e bai, dar ajung la partea de garantare, pe care as
> dori-o exact ca inainte, doar ca garantare pe international si
> garantare pe total (metro+extern). Garantarea pe extern clar ramane
> ca mai inainte, ca nu s-a schimbat nimic. Dar problema e ca metro nu
> e separat in nici un fel, ci ar fi total din care scad
> internationalul. M-am gandit sa fac separat pe metro si
> international, dar nu rezolv nimic, deoarece se pierde banda la
> garantari in felul asta, deci pica.

Nu sunt expert in HTB dar iti zic cum as face eu. Exemplul o sa til dau
cu sintaxa folosita in tctools (http://www.bvnet.ro/tctools/).

define client1 192.168.1.3;
define client2 192.168.1.4;
define client3 192.168.1.5;
dev imq0(htb, default 2){
 class tot(rate 2000kbit ceil 2000kbit){
  class international(rate 1000kbit ceil 1000kbit){
   class client1_i(rate 250kbit ceil 1000kbit){qdisc (pfifo,limit 50);}
   class client2_i(rate 250kbit ceil 1000kbit){qdisc (pfifo,limit 50);}
   class client3_i(rate 500kbit ceil 1000kbit){qdisc (pfifo,limit 50);}
   filter(protocol ip u32 match ip dst @client1 classid $client1_i);
   filter(protocol ip u32 match ip dst @client2 classid $client2_i);
   filter(protocol ip u32 match ip dst @client3 classid $client3_i);
  }
  class metropolitan(rate 1000kbit ceil 2000kbit){
   class client1_m(rate 250kbit ceil 2000kbit){qdisc (pfifo,limit 50);}
   class client2_m(rate 250kbit ceil 2000kbit){qdisc (pfifo,limit 50);}
   class client3_m(rate 500kbit ceil 2000kbit){qdisc (pfifo,limit 50);}
   filter(protocol ip u32 match ip dst @client1 classid $client1_m);
   filter(protocol ip u32 match ip dst @client2 classid $client2_m);
   filter(protocol ip u32 match ip dst @client3 classid $client3_m);
  }
 }
 //pacheltele metro pp. ca sunt marcate cu 5
 filter(protocol ip prio 1 handle 5 fw classid $metropolitan);
}

Este doar un exemplu de cum as face eu acum la prima vedere.

>
> Daca as fi avut o singura interfata 'interna' se putea face spre
> exemplu garantare de total pe imq si apoi inca una de international
> pe eth1, si scapam ieftin. Exista cumva vreo solutie prin care pot sa
> trec traficul prin mai mult de o interfata IMQ (desi ma cam indoiesc
> de lucru asta)?

Pai cine te opreste sa trimiti prin mai multe IMQ-uri cu iptables? Nu am 
incercat dar nici nu am citit pe undeva ca un pachet nu poate trece 
dacat printr-un IMQ.

>
> Am o vaga impresie ca e mult mai usor decat pare, insa stau si citesc
> documentatii dar nu-mi pica fisa. Si mai e si vineri.
>
> Mersi
>
> Alex
>

 -- 
Cu placere,
Octavian CHELU


_______________________________________________
RLUG mailing list
RLUG@lists.lug.ro
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui