Rozdeleni downstremu do 2 ifacu pomoci ALTQ
Dan Lukes
dan at obluda.cz
Sun Dec 4 01:33:46 CET 2005
Honza napsal/wrote, On 12/03/05 16:34:
> je router, 3 interfacy, na jednom je net, na druhym lan a na tretim wlan, ale net odebiraji lide z lan i z wlan.
> Potrebuji, aby celou download kapacitu si mohli navzajem "pujcovat" -
> jediny reseni, ktery me zatim napadlo je, ze pro lan bude 1Mb a pro wlan
> taky (mam 2Mb downstream z inetu). Ale pokud na jedny siti nikdo nic
> nebude delat, zbytecne to tem na ty druhy pojede jenom polovicni
> rychlosti. Lze toto nejak vyresit?
Nebude vadit, ze to nebudu resit pomoci ALTQ ?
Na tohle staci*) stare dobre IPFW se svymi pipe a queue:
--------------
Queues are used for implementing weighted fair queuing, and cannot used
without a pipe. All queues connected to a pipe share the bandwidth of
that pipe in a certain configurable proportion
--------------
Jinymi slovy -
ipfw pipe 1 config bw 2048kbit/s
ipfw queue 5 config pipe 1 weight 50
ipfw queue 6 config pipe 1 weight 50
Vytvori dve fronty k jedne pipe, pricemz odbavovani z obou probiha
"jedna k jedne" - pokud jsou data v obou a plnou rychlosti z kterekoliv
z nich, pokud je nektera z nich prazdna.
A nyni uz jen klasifikovat data do front:
ipfw add queue 5 ip from any to any out recv $EXTIF xmit $INT1IF
ipfw add queue 6 ip from any to any out recv $EXTIF xmit $INT2IF
Jednoduche a snadno pochopitelne, ne ?
Ma to jediny hacek -
----------
*) - nefunguje to a, bohuzel, principielne ani nemuze.
----------
Vy se totiz muzete zabyvat jen temi pakety, ktere uz linkou k vam
prisly. Nemuzete odmitnout pruchod linkou jednomu paketu a tak uvolnit
pruchod paketu jinemu. Jedine co muzete je zahazovat pakety, ktere mely
to stesti, ze se jim pretizenou linkou podarilo projit (a tim snizovat
jeji uz tak spatnou efektivitu).
Linkou vam muze prijit nejvyse 2Mbps - vic ne. A prave tolik jich
projde obema frontami jelikoz nakonfigurovana kapacita PIPE je prave
takova. Pokud linkou budou prichazet pakety v pomeru 1:2 bude proste
jedna fronta nedostatecne naplnena - a dojde presne k tomu, co jste si
pral- druha vyuzije volne kapacity. Celkove projde tech 2Mbps - presne
tolik, kolik prislo. Zadny paket se nezahodi.
Pokud by vas treba napadlo, ze tedy hodnotu pipe nastavite treba na 90%
kapacity - aby se obcas neco zahodilo a tak mohl zabrat flow-control
mechanismus, ktery v sobe ma TCP, tak to je dobry napad, ale i to ma
svuj hacek. Nejenze tak prijdete trvale o desetinu kapacity - ale hlavne
- i v pripade, ze by to zafungovalo, zafunguje to predevsim na to TCP.
Nejruznejsi P2P systemy pouzivajici UDP vam budou linku libovolne
zacpavat dal a to podle pravidla - cim agresivnejsi system, tim vic si
urve. Ostrouhaji tedy zejmena ti ohleduplni.
A to je principialni problem, ktery se bude tykat kazde "jednostranne"
metody (tedy metody, kde neexistuje spoluprace tohoto konce linky s
protejsim koncem, ktery do ni data cpe). ALTQ nemuze byt lepsi.
Jo, pokud chcete spravedlive rozdelovat kapacitu linky pro ODCHOZI
provoz, tak to je jina, to bude fungovat tak, jak jsem popsal shora jen
je treba prohodit "xmit" a "recv" v pravidlech.
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