Ztratovitost linky a softwareove reseni

Vasek Stodulka xvasek na gmail.com
Středa Červenec 13 11:52:04 CEST 2005


On Tue, 12 Jul 2005 14:09:02 GMT, Vaclav Stepan <w na linux.fjfi.cvut.cz> wrote:

>  Uvaha byla --- linkou tece 700 kBps, packet loss se mirne snizi s tokem,
>  takze stahnu tok na polovinu. Kdyz nahodim shaper, tak TCP spojeni
>  zabrzdi, a stane se tak proto, ze se nejdriv naplni buffery a pak se
>  pakety zacnou zahazovat. Takze tady to v podstate explicitne je zamerem
>  spravce.

	Tak to skutecne driv fungovalo, nez se TCP stack zacal programovat
podle RFC 2001 (leden 1997, http://ftp.fi.muni.cz/pub/rfc/rfc2001.txt),
ktere prinasi a prezentuje algoritmy "slow start" a "congestion avoidance".
Drive si koncove strany mezi sebou dohodly nejakou rychlost spojeni a
nebraly v potaz to, ze by mezi nimi mohla byt tenka linka. Pak routery
ridily rychlost skutecne tim, ze packety, ktere nedokazaly zpracovat,
jednoduse zahodily. Takovym chovanim samozrejme dochazi ke spouste
retransmisi (cimz se znovu zahlcuje sit) a navic to cele degraduje maximalni
propustnost, kdyz si musim o spoustu packetu rikat znovu po timeoutu.

	Myslenky RFC 2001 jsou (mozna az vulgarne zjednoduseno) asi takove:
Rychlost jako takova je rizena jednoduchym pricipem, a to poctem ramcu,
ktere muze vysilajici vyslat do site bez toho, aby dostal ACK - pocet techto
ramcu se nazyva velikost congestion window. Principialne je potreba, aby
pocet odeslanych ramcu korespondoval s poctem prijatych ACK - nemuzu
odesilat 20 ramcu za sekundu, kdyz vim, ze mi nechodi vice nez 10 ACK za
sekundu. Tento pomer se teda snazim balancovat a rychlost efektivne ridim
poctem odeslanych ramcu a prijatych ACK, nikoli poctem zahozenych ramcu
a retransmisi.

	Ve specialnich (a opravdu ojedinelych) pripadech se pouziva RED
(Random Early Drop), ktere zase zjednodusene funguje tak, ze nahodne
zahazuju packety s pravdepodobnosti podle toho, jak moc se mi datovy
prutok blizi maximalni povolene hranici - takze i takto se rychlost da
ridit, ale v praxi se to moc nepouziva.

>  Cekal bych ale, ze k temuz dojde i pri v podstate normalnich situacich,
>  kdy se kapacita linky skokove zmeni --- zmena routovaci trasy (prechod
>  na zalozni linku, data z vice linek po jedne etc.), kratkodobe ruseni
>  provozem na blizkem kanalu, etc..

	Ano, v takovych pripadech se packety skutecne zahodi a je veci TCP
(nebo dalsich protokolu), aby se v tom udelal poradek a provedly se
potrebne retransmise.

-- 
Vašek Stodůlka
tel.: +420 608 200 860


Další informace o konferenci Linux