Red Samba demasiado lenta en Mac OS X

¿Estás experimentando transferencias muy lentas por red Samba desde tu Mac?. A mí me ha ocurrido tratando de copiar archivos desde mi servidor con Ubuntu Server a mi Mac Mini con Snow Leopard.

Algunos se refieren a él como un bug existente en la implementación TCP de Mac OS X por su base BSD, bug que hace tiempo fue corregido en distribuciones como NetBSD.

El problema se debe al uso del llamado Algoritmo de Nagle, que retrasa el envío de paquetes pequeños introduciendo tiempos de espera de hasta 500ms. Esto es posible porque TCP no impone cuándo deben enviarse los paquetes por la red, ni cuándo deben entregarse a la capa superior los paquetes recibidos. De esta manera, al esperar a acumular datos para el envío, se ahorra ancho de banda. El problema es que esta medida introduce muchísimo retardo en determinadas circunstancias, especialmente en entornos LAN, ya que está más enfocado a redes WAN donde el retardo intrínseco es alto.

Pero vamos al turrón. Para comprobar si nuestro problema se basa al retardo que introduce el Algoritmo de Nagle, lo mejor que podemos hacer es cambiar la configuración desde la consola de nuestro Mac de esta manera:

$ sudo sysctl -w net.inet.tcp.delayed_ack=0

A continuación podremos hacer una prueba de red para ver si el rendimiento mejora. En mi caso, a la hora de recibir archivos por Samba, he pasado de unos tristes 100KB/s a unos más que generosos 11MB/s.

Si queremos hacer el cambio permanente deberemos editar el archivo /etc/sysctl.conf (que por defecto no existe) y añadir al final la línea net.inet.tcp.delayed_ack=0