Por sugerencia de los ingenieros de Uniotel instale VirtualBox, un producto de virtualizacion de Sun, que me permite correr varias maquinas virtuales en un PC. Dentro de Virtual Box estoy corriendo Ubuntu Linux. La verdad es que funciona muy bien, pero lo que mas me impresiono fue tratar de bajar archivos. Un archivo que bajaba a 60 KBps en Firefox bajo Vista, baja a 160 KBps con wget dentro de Ubuntu que a su vez esta dentro de Vista.
O sea, Ubuntu dentro de una maquina virtual que esta dentro de Vista usa mejor el ancho de banda que el propio Vista. Cool.
Llegue a esto despues de que Vista me reiniciara la maquina sin mi permiso, arruinandome un download que ya llevaba como 4 horas. Ese es uno de los «features» que mas me enoja de Windows: dejo algo corriendo y viene, me pregunta si quiero reiniciar la maquina, no contesto en 5 minutos, y chau, jodete.
Proximo paso: OS X dentro de Vista. El lunes les cuento como me fue.


Hola,
Soy nuevo por aca, hace poquito que leo el blog y medio de atrevido me animo a postear este comentario.
La forma en general de obtener más velocidad es teniendo una ventaja frente a los otros que compiten por el ancho de banda cuando hay congestión. Una forma muy común es «segmented download» (que dudo que wget use). Básicamente se abren varias conexiones TCP y se bajan a la vez diferentes partes del archivo. Por que esto mejora? Por el «end of line blocking» por ejemplo, con una sola conexión un paquete perdido tranca todo lo que vino antes en la ventana hasta que se retransmita todo. Con varias conexiones esto tranca una sola de ellas. Otro motivo que ayuda con varias conexiones TCP es que la pérdida de un paquete por congestión hace que el algoritmo de control de congestión enlentezca la conexión afectada pero no las demás. Como dije CREO que wget no usa esto.
Se habla de «fairness» en las redes. Si todos se portaran bien, abriendo una sola conexión y utilizando el mismo algoritmo de control de congestión estas cosas no pasarían.
Pero pasan, y hay varios otros factores en la vuelta (a demás del segmented download) por ejemplo:
No todas las implementaciones de TCP usan «selective acks (SACK)», en windows se puede prender y apagar, no sé como viene por defecto
No todas las implementaciones reaccionan frente a la congestión de la misma manera. Yo ya había escuchado que Linux revienta a Windows en este escenario: abriendo cada uno una conexión TCP y ambas saturando la red el ancho de banda que Linux obtiene es mucho mejor que el de Windows. Pero no malinterpretemos, no quiere decir que Linux «sea mejor» en esto, símplemente el tema es que no compite con windows en una pelea justa 🙂
El resultado de estos TCP compitiendo es que la utilización general de la red es peor, pero «el más vivo» se lleva la mejor tajada. Existen aceleradores de TCP para Windows: sustituyendo la implementación que trae el SO por una bien salvaje se obtiene una gran ventaja (individual) y un buen daño a la comunidad en su conjunto. El ejemplo último y máximo de este egoísmo es el P2P, hay ISPs que discriminan este tráfico pero a algunos se les armó flor de lío legal.
Mi conclusión (bastante sesgada dado a mi línea de estudio debo admitirlo) es que TCP/IP apesta, aceptémoslo, tiene 30 años y hace mucho que se conocen cosas mejores. Lamentablemente el gran problema aca es: Como hacemos para cambiar algo prácticamente omnipresente, implementado en billones de dólares de hardware y software? Es como pretender que en todo el mundo se empiece a conducir por la izquierda. Ya se vio con IPv6 lo difícil que es.
En fin, esto fue parte aporte parte catarsis 🙂 Espero que el aporte sea la parte que domina el post.
Saludos y gracias por todo el contenido de gran nivel que se encuentra en este blog.
Damián Lezama
Hola Damian como estás?, Cómo va la empresa?
Hola,
La verdad es que por «Daniel» no ubico quien sos, esto de que los nombres no sean únicos… 🙂 La seguimos por mail si te parece, escribime a damian.lezama en gmail
Saludos,
Damián