martes, 31 de marzo de 2020

Deshabilitar TOE (TCP-IP Offload Engine). Por qué se debe deshabilitar

Primero, una breve intro sobre qué es TCP Chimmney Offload, mas conocido como TOE.
Mas o menos a comienzos de siglo, con la aparicion de Windows Server 2003 y el comienzo del uso de las redes Gigabit Ethernet, se desarrolló una tecnología que permitía desplazar carga del trabajo de la CPU en relación a la transferencia de datos, a las tarjetas de red. Se pensó especialmente para la sobrecarga de datos asociada a los protocolos iSCSI y NFS.


Hay que tener en cuenta que TOE es realmente un procesador de la tarjeta de red, mientras que TCP Chimney Offload es un protocolo de Microsoft que se aplica al sistema operativo para el funcionamiento de TOE. Dicho de otro modo, TOE consta de dos partes: una física en la tarjeta, que se controla desde la pestaña de propiedades avanzadas de la tarjeta de red, y otra parte que se controla desde el sistema operativo.

Para explicar de forma simple cómo funciona TOE: normalmente, la descarga TCP consiste en un envio de paquetes monolíticos, mientras que Chimnney Oflload permite una descarga parcial de los paquetes. Cuando funciona, la ventaja es que reduce el tráfico de red, mejorando las comunicaciones.

Lamentablemente, no todas las tarjetas de red gestionan correctamente esta opción de proceso de los paquetes, haciendo que, en vez de mejorar el trafico de red, se pierdan paquetes, o lleguen mal. Son especialmente famosas por estos errores las tarjetas de la marca Broadcom. Y esta es la razón por la que es mejor deshabilitar esta opción, especialmente hoy día.

Vamos con el proceso para deshabilitar esta opción, que como comentaba,consta de 2 partes.

Parte 1. Deshabilitar la opcion TCP Chimney Offload en el sistema operativo.

  1. Abre una ventana de comandos
  2. escribe: netsh int tcp set global chimney=disabled

Si quisieras ver el estado en el que se encuentra esta opción, solo debes poner netsh int tcp show global

Con el comando netstat -t verás que la ultima columna de información que te facilita es el "offload state" o bien "estado de descarga".

Parte 2. Deshabilitar TCP Offload en la tarjeta de red.

Vamos hasta las propiedades del adaptador, y damos en "cambiar las opciones del adaptador", o bien "configurar", según la versión del sistema.


Una vez pulsamos, nos vamos a la pestaña de "opciones avanzadas"


Aquí son varias opciones las que debemos cambiar. En la imagen superior se ve IPv4 Checksum Offload, pero hay que cambiar las siguientes:

  • IPv4 Checksum Offload
  • Large Receive Offload
  • Large Send Offload
  • TCP Checksum Offload
  • Receve Side Scaling
Sobra decir que hay que cambiarlas a "disabled"

Una vez cambiadas, damos ok a todo, y con esto, hemos terminado.