En fait, j'ai deux questions connexes.
Je capture le trafic réseau filtré par libpcap sur Debian. J'ai ensuite besoin de rejouer ce trafic sur un serveur Win2k3. Parfois, je capture des paquets, TCP et UDP, beaucoup plus grands que 1500 octets (taille MTU par défaut pour Ethernet). Par exemple, 2000+ octets. Je n'ai pas fait de changements spécifiques à la taille MTU sur ce Linux. Donc, question n°1 :
Quelle est la raison de ces paquets beaucoup plus grands que le MTU par défaut ? Cadres Jumbo ? Cet article de Wikipedia indique que "les cartes d'interface réseau capables de trames jumbo nécessitent une configuration explicite pour utiliser les trames jumbo", mais je ne suis pas au courant d'une telle configuration. Voir aussi ifconfig
m'indique "MTU:1500". Cela peut-il être lié d'une manière ou d'une autre à la technique de "combinaison d'interruptions" (ou "coalescence d'interruptions", comme dans la version anglaise) ? cet article ) ? Puis-je supprimer ces paquets ?
Alors, question n°2 :
Comment puis-je envoyer de tels paquets en pcap_sendpacket
sur Windows ? Je reçois le message d'erreur "send error : PacketSendPacket failed" uniquement pour les paquets de plus de 1500 octets. Il semble que je ne puisse pas utiliser de trames jumbo car j'envoie des données à un "net tap" personnalisé directement connecté comme une carte pci et je ne suis pas sûr de pouvoir configurer sa NIC. Quoi d'autre ? Devrais-je fragmenter ces paquets selon les règles du protocole ?
EDIT :
J'ai vérifié la fragmentation par la NIC comme Guy Harris l'a suggéré :
~# ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: off
udp-fragmentation-offload: off
generic-segmentation-offload: off
generic-receive-offload: off
large-receive-offload: off
ntuple-filters: off
receive-hashing: off
Il en va de même pour eth1
y br0
- pont de réseau entre eth0
y eth1
que je suis en train de renifler.
Et je reçois toujours de gros paquets UDP.