In realtà, ho due domande correlate.Come inviare pacchetti superiori a 1500 byte da pcap_sendpacket?
Sto catturando il traffico di rete filtrato per libpcap su Debian. Quindi ho bisogno di riprodurre questo traffico sul server Win2k3. A volte acquisisco pacchetti, sia TCP che UDP, molto più grandi di 1500 byte (dimensione MTU predefinita per Ethernet). Ad esempio, 2000+ byte. Non ho fatto modifiche specifiche alle dimensioni della MTU su quel Linux. Quindi domanda n. 1:
Qual è la ragione per questi pacchetti molto più grandi rispetto al valore predefinito MTU?Jumbo frames? Questo articolo di Wikipedia afferma che "le schede di interfaccia di rete capaci di jumbo frame richiedono una configurazione esplicita per utilizzare jumbo frame", ma non sono a conoscenza di tale configurazione. Anche ifconfig
mi mostra "MTU: 1500". Può essere in qualche modo collegato con la tecnica di "interrupt-combining" (o "interrupt coalescing" come in this article)? Posso sopprimere questi pacchetti?
Poi, domanda # 2:
Come posso inviare tali pacchetti da pcap_sendpacket
su Windows? Viene visualizzato il messaggio di errore "Errore di invio: PacketSendPacket non riuscito" solo per pacchetti di dimensioni superiori a 1500 byte. Sembra che non sia possibile utilizzare jumbo frame perché sto inviando dati alla "scheda di rete" personalizzata direttamente connessa come la scheda pci e non sono sicuro di poter configurare la scheda NIC. Cos'altro? Devo frammentare questi pacchetti in base alle regole del protocollo?
EDIT:
frammentazione Controllato da NIC come Guy Harris suggerito:
~# 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
Lo stesso per eth1
e br0
- bridge di rete tra eth0
e eth1
che sto annusando.
E continuo a ricevere pacchetti UDP di grandi dimensioni.
pcap sta probabilmente incollando i datagrammi frammentati di nuovo insieme in un blocco dai pacchetti di fili per voi. Controlla se puoi chiederti di darti dei frame ethernet e non di trasportare i pacchetti. –
@NikolaiNFetissov: Sto ricevendo telegrammi Ethernet –