Publicado el 19 febrero, 2009 por Alfon Ocurre, en ocasiones, que cuando analizamos los paquetes capturados en una sesión Wireshark / Tshark, nos encontramos una serie de errores que por su número y/o descripción parece que tenemos un problema grave en un host o en la red.
Vamos a estudiar porqué ocurre esto, si es tan grave como parece y como solucionarlo.
Una vez detectado el Error vamos a analizar unos de los paquetes con TCP Bad Checksum:
Tenemos una pista. Wireshark interpereta que puede tratarse de TCP
checksum offload. ¿ Pero que es esto exactamente ?. TCP Checksum offload. En la gran mayoría de implementaciones de la pila de protocolos el checksum de los segmentos TCP o datagramas UDP salientes no los realiza la CPU. Esta funciónestá encomendada a la tarjeta de red. Esto es así para reducir la carga de la CPU y que de esta forma aumente el rendimiento de host. Pero hay un problema y es que Wireshark no puede comprobar el checksum de los paquetes salientes. Literalmente no le da tiempo a comprobar este valor. Cuando se coloca el valor del campo el paquete correspondiente ya no se encuentra, así que devuelve un error por incorrecto. Como solucionarlo. Existen dos métodos. Uno es desactivar esta función de la tarjeta de red, pero provocará un rendimiento bajo. El segundo método y el más correcto es configurar wireshark para que no compruebe este campo. Esto lo haremos de la siguiente forma: Edit > Preferences > Desplegamos la lista de protocolos y elegimos TCP:
En las tarjetas de red y en el caso de las Broadcom NetXtrem Ggigabit el
parámetro “Checksum Offload” (Descarga de suma de comprobación) se desactiva en las propiedades avanzadas de la NIC o tarjeta de red. Entre los prosible valores de la propiedad Checksum Offload de la Tarjeta tenemos: Rx TCP/IP Checksum (Suma de comprobación de TCP/IP Rx): activa la recepción de la descarga de suma de comprobación de TCP, IP y UDP Tx TCP/IP Checksum (Suma de comprobación de TCP/IP Tx): (valor predeterminado) activa la transmisión de la descarga de suma de comprobación de TCP, IP y UDP Tx/Rx TCP/IP Checksum (Suma de comprobación de TCP/IP Tx/Rx): activa la transmisión y recepción de la descarga de suma de comprobación de TCP, IP y UDP None (ninguno) – desactiva la descarga de la suma de comprobación y es la que elegiremos. Aunque, como ya he comentado más arriba, no es la mejor opción por la disminución de rendimiento.