
Я реализую простое приложение сокета на python и мне нужно, чтобы оно получало пакеты UDP с включенным GRO. Я проверил, что запущена только служба Python и что GRO включен через
eththool -k eth0 | egrep 'generic'
Показывает, что включены как GSO, так и GRO.
Кроме того, я использую scapy для отправки UDP-пакетов, подобных нижеприведенному. Они намеренно не имеют полезной нагрузки.
send(IP(dst="123.456.789.123")/UDP(dport=5000),count=10)
Вот что я написал на Python на данный момент
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)
Итак, это выводит полезную нагрузку пакета каждый раз, когда он отправляется (просто для целей мониторинга). Это работает и путем проверки портов с помощью
netstat -tulpen
Показывает, что порт работает, открыт для UDP.
Теперь я хотел бы принудительно включить GRO на этом порту, как это сделать? Есть ли какая-то поддержка, чтобы сделать что-то подобное?
Я использую Linux Ubuntu с ядром версии 5.0.