我正在用 Python 实现一个简单的套接字应用程序,我需要它在启用 GRO 的情况下接收 UDP 数据包。我已检查只有 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,我该怎么做?有支持执行此类操作吗?
我正在运行内核版本为 5.0 的 Linux Ubuntu