[Solar-general] consulta técnica sobre ancho de banda

sinestado sinestado en gmail.com
Vie Sep 27 14:59:33 CEST 2013


El 27/09/13 00:40, Marcos G. escribió:
> hola
>
> preocupado x el hecho de q usando fibertel, cuando subo un archivo x ftp me usa todo el ancho de 
> banda de subida y luego cualquier aplicación tarda siglos en descargar cualquier cosa (mails, 
> webs, lo que sea), busqué algo para limitar el ancho de banda de x app
>
>
> encontré trickled y funcionó perfectamente, la conexión anda liberada ahora......
>
> pero, lo q quería consultarles es: ¿xq sucedía lo q sucedía? xq el subir un archivo ocupando todo 
> el ancho de banda hace q las descargas se tornen lentísimas?
>

Puedo apurar una hipótesis:

Partamos de la premisa de que la conexión de internet es asimétrica, en
mi caso que tengo Fibertel 3M son 3Mbs de bajada (con picos de de hasta
1min de 7Mbs) y 1Mbs de subida

Supongamos también que el destino de nuestra subida tiene cantidad
suficiente de ancho de banda como para absorber completamente nuestra
subida.

Ahora en ese contexto intentamos bajar algo de otro destino, usando TCP.

Por cada cierta cantidad de paquetes recibidos nosotros debemos
devolverle al destino los ACK respondiendo por la recepción correcta. La
cantidad de paquetes que recibimos antes necesitar responder es variable
y se llama "ventana TCP". Esta ventana empieza siendo grande, pero a
medida que no se reciban paquetes ACK acordes a lo enviado se va
reduciendo.

Si nuestra subida esta saturada, en el momento de responder con los ACK
podríamos tener demoras en la cola de salida que el destinatario
interpretaría como perdidas, con lo cual intentaría reenviar los
paquetes pedidos y reduciría su ventana. En este caso el tiempo entre
ACK se debería reducir con lo cual, al estar ocupada la salida, genera
un efecto avalancha que disminuye en poquísimo tiempo todas las ventanas
TCP de los destinos.

Para resolver esto se pueden hacer dos cosas:

1) reducir el ancho de banda de subida
2) dar prioridad de salida a los paquetes ACK

Ambos casos se pueden manejar, en Linux, con IPTABLES y TC





Más información sobre la lista de distribución Solar-general