
Ich implementiere eine einfache Socket-Anwendung in Python und brauche sie, um UDP-Pakete mit aktiviertem GRO zu empfangen. Ich habe überprüft, dass nur der Python-Dienst ausgeführt wird und dass GRO aktiviert ist über
eththool -k eth0 | egrep 'generic'
Es zeigt, dass sowohl GSO als auch GRO aktiviert sind.
Zusätzlich verwende ich scapy, um UDP-Pakete zu senden, die dem untenstehenden ähneln. Sie haben absichtlich keine Nutzlast.
send(IP(dst="123.456.789.123")/UDP(dport=5000),count=10)
Dies ist, was ich bisher in Python geschrieben habe
import socket, select
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 0)
s.bind(('123.456.789.123',5000))
while True:
result = select.select([s],[],[])
output = result[0][0].recv(512)
print (output)
Dies druckt also die Nutzlast des Pakets jedes Mal aus, wenn ein Paket gesendet wird (nur zu Überwachungszwecken). Es funktioniert und durch die Überprüfung der Ports mit
netstat -tulpen
Es zeigt, dass der Port läuft und für UDP geöffnet ist.
Jetzt möchte ich GRO auf diesem Port zwangsweise aktivieren. Wie mache ich das? Gibt es dafür Unterstützung?
Ich verwende Linux Ubuntu mit Kernelversion 5.0