So verschicken Sie Pakete, die größer als 1500 bytes pcap_sendpacket?
Tatsächlich, ich habe zwei Fragen.
Ich fange gefilterten Netzwerkverkehr durch libpcap auf Debian. Dann muss ich replay dieser Verkehr auf Win2k3 server. Manchmal habe ich das capture-Pakete, TCP-und UDP, viel größer als 1500 bytes (MTU-Standardgröße für Ethernet). E. g., 2000+ bytes. Ich habe keine besonderen änderungen an der MTU-Größe auf Linux. Also Frage #1:
Was ist der Grund für diese Pakete viel größer als die Standard-MTU? Jumbo-frames? Dieser Wikipedia-Artikel besagt, dass "Netzwerk-interface-Karten fähig, jumbo-frames erfordern die explizite Konfiguration, um die Verwendung von jumbo-frames", aber ich bin mir nicht bewusst über derartige Konfiguration. Auch ifconfig
zeigt mir "MTU:1500". Kann es sein, die irgendwie im Zusammenhang mit "interrupt-combining-Technik" (oder "interrupt-coalescing" wie in dieser Artikel)? Kann ich das unterdrücken solcher Pakete?
Dann Frage #2:
Wie kann ich das senden solcher Pakete durch pcap_sendpacket
auf Windows? Ich erhalte die Fehlermeldung "Fehler send: PacketSendPacket fehlgeschlagen" nur für Pakete, die größer als 1500 bytes. Scheint, ich kann nicht die Verwendung von jumbo-frames, da ich das senden der Daten an direkt angeschlossene custom "net tap", wie Sie pci-Karte und ich bin mir nicht sicher, ich kann konfigurieren Sie Ihre Netzwerkkarte. Was sonst? Sollte ich das fragment diese Pakete laut Protokoll Regeln?
EDIT:
Überprüft Fragmentierung von NIC wie Guy Harris vorgeschlagen:
~# 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
Das gleiche für eth1
und br0
- Netzwerk-Brücke zwischen eth0
und eth1
ich bin zu schnüffeln.
Und ich bekomme noch immer große UDP-Pakete.
- pcap ist wahrscheinlich kleben fragmentierten Datagramme wieder zusammen in einem Stück von der Draht-Pakete für Sie. Überprüfen Sie, wenn Sie können, bitten Sie ihn, Ihnen, ethernet-frames und nicht-transport-Pakete.
- Ich bin empfangen von ethernet-frames
Du musst angemeldet sein, um einen Kommentar abzugeben.
¿Sie sind mit dem wireshark zu erfassen?
Es ist wichtig, weil standardmäßig wireshark wieder zusammensetzen fragmentierter ip-Datagramme (und speichert Sie in einer pcap-Datei als zusammengesetzt MTU-higger einzelne Pakete ohne Fragmentierung).
Deaktivieren:
Bearbeiten->Einstellungen->Protokolle->ipV4-> und deaktivieren Sie die Option "Zusammenbau fragmentierten IPv4-Datagramme".
pcap_sendpacket
. Sollte ich ändern, Sie durch die Entfernung dieser trailer?Ihr Netzwerk-adapter ist wohl dabei der TCP-Segmentierung/öffnung-Verschiebung und IP-Fragmentierung/Reassemblierung-Verschiebung, also:
also, was libpcap zu sehen ist, sind nicht Ethernet-Pakete und sind nicht beschränkt auf die Ethernet-frame-Größe.
(I. e., Nikolai Fetissov war wohl richtig; was Sie erhalten, könnte Aussehen Ethernet-frames, aber das ist, weil die Netzwerkadapter und Treiber machen die so Aussehen. Sie sind in der Tat, nicht Ethernet-frames übertragen oder empfangen von Ethernet.)
Können Sie nur unterdrücken Sie durch ausschalten jeglicher form der Segmentierung/öffnung/Fragmentierung/Reassemblierung getan, auf Ihr Netzwerk-adapter mit der
ethtool
Befehl; schalten Sie Optionen wie TCP Segementation Offload, UDP Fragmentation Offload, Allgemeinen Segmentierungs-Offload-Unterstützung, Large Receive Offload und Generic Receive Offload.Sobald Sie deaktiviert haben solche Optionen, sollten Sie nicht mehr große Pakete, und so sollten Sie in der Lage sein, zu wiederholen, Sie mit kein problem. Es ist keine einfache Weise wiedergeben, die wieder zusammengesetzt werden/un-fragmentiert oder segmentiert Pakete, die Sie aufgenommen haben, so weit - Sie würde haben, um eigenen code schreiben, um fragment davon, und es gibt keine Garantie, Sie würden re-fragmentiert/re, die wiederum in der gleichen Weise, dass Sie wurden ursprünglich fragmentiert/segmentiert, die auf den Draht.