Pregunta

Cuando usas pcap_open_live Para oler desde una interfaz, he visto muchos ejemplos usando varios números como SNAPLEN valor, que van desde BUFSIZ (<stdio.h>) a "números mágicos".

¿No tendría más sentido establecer como Snaplen the MTU de la interfaz de la que estamos capturando? De esta manera, podríamos ajustar más paquetes a la vez en PCAP Buffer. ¿Es seguro asumir que la MRU es igual a la MTU?

De lo contrario, ¿existe una forma no exótica de establecer el valor de Snaplen?

Gracias

¿Fue útil?

Solución

La MTU es la más grande carga útil tamaño que se puede entregar a la capa de enlace; No incluye ningún encabezado de capa de enlace, por lo que, por ejemplo, en Ethernet sería 1500, no 1514 o 1518, y no sería lo suficientemente grande como para capturar un paquete de Ethernet de tamaño completo.

Además, no incluye ningún encabezado de metadatos, como el encabezado Radiotap para información de radio 802.11.

Y si el adaptador está haciendo cualquier forma de fragmentación/segmentación/descarga de reensamblaje, los paquetes entregados al adaptador o recibido del adaptador aún no ser fragmentados o segmentados, o podrían haberse vuelto a montar, y, como tal, podría ser posible mucho más grande que el MTU.

En cuanto a ajustar más paquetes en el búfer PCAP, eso solo se aplica a los mecanismos de captura TPACKET_V1 y TPACKET_V2 de memoria en Linux, que tienen ranuras de paquetes de tamaño fijo; Otros mecanismos de captura no reservan una ranura de tamaño máximo para cada paquete, por lo que una longitud de instantánea más corta no importará. Para TPACKET_V1 y TPACKET_V2, una longitud de instantánea más pequeña podría marcar la diferencia, aunque, al menos para Ethernet, los intentos de LibPCAP 1.2.1, lo mejor que puede, elegir un tamaño de ranura búfer apropiado para Ethernet. (TPACKET_V3 no parece tener las ranuras por paquete de tamaño fijo, en cuyo caso no tendría este problema, pero solo apareció en núcleos lanzados oficialmente, y aún no existe soporte para él en libpcap).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top