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