Errores en la interfaz de red (dropped rx packets)
Si el comando ifconfig muestra perdida de paquetes entrantes (dropped rx packets) en la interfaz de red y al colocar un sniffer el numero de paquetes perdidos se mantiene inmutable, las causas pueden ser las siguientes.
RX packets:23749 errors:0 dropped:8540 overruns:0 frame:0
Causas (Kernel >= 2.6.37): http://www.novell.com/support/kb/doc.php?id=7007165
- Softnet backlog lleno (/proc/net/softnet_stat).
- VLAN tags erroneas.
- Recepción de paquetes con protocolo desconocido.
- Recepción de paquetes IPv6 cuando la intefaz no está configurada para ello.
Si por el contrario se siguen perdiendo paquetes estando tcpdump o cualquier otro sniffer en funcionamiento, debemos buscar el origen del problema. En la gran mayoría de casos vale con ampliar el buffer de la interfaz de red utilizada.
Listando los parametros de eth0.
ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 256 RX Mini: 0 RX Jumbo: 0 TX: 256
La primera sección “máximos preestablecidos” muestra los valores máximos que se podrían establecer para todos los parámetros disponibles. La segunda sección muestra el valor de cada parámetro actualmente.
Aumentar el ring buffer para RX.
ethtool -G eth0 rx 1020
Si queremos que ese cambio se realice siempre después de arrancar el sistema, podemos definir el comando en el fichero /etc/rc.local.
Filtros útiles para tcpdump / wireshark
tcp.analysis.retransmission tcp.analysis.ack_lost_segment tcp.analysis.lost_segment tcp.analysis.out_of_order tcp.segment.error