
Estoy usando Ubuntu 14.04 a través de Virtual Box en un host de Windows 7. La NIC es un adaptador de USB a Ethernet.
Elman
para tcpdumpindica qué puede causar "paquetes descartados por el kernel", pero no indica qué causa "paquetes descartados por la interfaz".
¿Alguien puede aclarar por qué la interfaz puede estar descartando paquetes? ¿O cómo puedo averiguar el motivo por el que se descartan los paquetes?
Respuesta1
Como señaló, no hay nada en la documentación sobre el contador de "paquetes descartados por la interfaz". Así que necesitamos investigar un poco el código fuente.
Desde elcódigo fuente de tcpdump, el contador de caídas de la interfaz se extrae de stats.ps_ifdrop
:
if (stats.ps_ifdrop != 0) {
if (!verbose)
fputs(", ", stderr);
else
putc('\n', stderr);
(void)fprintf(stderr, "%u packet%s dropped by interface\n",
stats.ps_ifdrop, PLURAL_SUFFIX(stats.ps_ifdrop));
ps_ifdrop
number of packets dropped by the network interface or its driver.
Y desde elcódigo fuente libpcap:
* "ps_ifdrop" is supported. It will return the number
* of drops the interface reports in /proc/net/dev,
* if that is available.
Entonces elEl contador de "paquetes descartados por la interfaz" de tcpdump corresponde a los paquetes registrados como descartados /proc/net/dev
durante la tcpdump
captura..
/proc/dev/net
Se explica el significado de los campos.aquí
Para comprender mejor las caídas, comenzaría mirando las siguientes estadísticas:
ethtool -S <interface>
grep '' /sys/class/net/<interface>/statistics/*
Respuesta2
En general, esto se debe a que la computadora está demasiado ocupada para manejar el paquete entrante y la interfaz no tiene lugar para colocarlo. Es posible que el controlador no haya proporcionado buffers a la interfaz, que la interrupción esté bloqueada durante demasiado tiempo, problemas graves de falta de recursos como ese.
Esto ya no sucede mucho, ya que la implementación del sistema operativo y el rendimiento del hardware han mejorado, pero era un problema real en los primeros días, cuando (por ejemplo) una unidad de disco podía acaparar el bus de memoria o el sistema operativo tenía que proporcionarle a la interfaz un buffer como parte del servicio de la interrupción de recepción (diseño de hardware deficiente).