Ich habe ein Problem mit tcp_fin() Funktion. Es sollte eingehende TCP-Segmente mit FIN-Flag verarbeiten, aber wenn ich tracepoint oder nur printk
am Anfang dieser Funktion hinzufüge, wird dieser Tracepoint-Handler nie (oder keine Nachrichten von printk) aufrufen.Schließen von TCP-Socket und tcp_fin() in Linux-Kernel/
Meine Aktionen:
- Tracepoint oder
printk
-tcp_fin()
- Build-& Boot neuen Kernel
Run etwas wie folgt hinzufügen:
#!/bin/bash nflows=50 on_int() { echo "$nflows skeeped" exit 0 } trap 'on_int' INT while [ $nflows -ne 0 ] do iperf -n 5M -c X.X.X.X nflows=$(($nflows - 1)) echo "======================" echo $nflows echo "======================" done
Und als Ergebnis Ich möchte ld, um Anrufe von tcp_fin()
zu beobachten, aber nichts passiert.
Sind Sie sicher, dass die Verbindungen ordnungsgemäß eingerichtet und abgebaut sind (d. H. Sie sind nicht mit RST beendet oder sogar nie richtig eingerichtet) – nos
@nos Ja, es ist ordnungsgemäß eingerichtet und sollte nicht zurückgesetzt werden. Iperf sollte die Verbindung am Ende schließen, also werden wir 50 FIN-markierte Segmente haben, aber keine solche Spur beobachtet. –
Ich würde das aber mit wireshark verifizieren. Außerdem, welche Protokollstufe hat Ihr printk verwendet - nur für den Fall, dass Ihr syslog keine Protokolle dieses Levels anzeigt. – nos