在 Mininet 中识别来自 wget 的 ACK 数据包
Identify ACK packets from wget in Mininet
在 mininet 中,我能够在我的自定义 POX 控制器 c0
中的服务器 h1
和主机 h4
之间建立 TCP 连接,如下所示:
h1.cmd('python -m SimpleHTTPServer 80 &')
thread.start_new_thread(tcp_thread, h4)
def tcp_thread(src):
for i in range(10):
src.cmd('wget -O - 10.0.0.1')
time.sleep(5)
h4
从服务器请求 HTTP 页面,并保持正常根据 TCP 标准确认服务器。在这里,我希望能够强制 h4
使用它们之间的另一条路径发送 ACK
数据包。我在转发或创建路径方面没有问题,但我在如何在 h4
发送之前捕获或提取 Ack
数据包方面存在问题,因此我可以根据需要转发它们。
谢谢。
如果您有 PacketIn 函数,您可以添加一些代码行来捕获 ACK 标志
packet = event.parsed
tcp_found = packet.find('tcp')
if tcp_found:
if tcp_found.ACK:
print "ACK found"
# do your things
ACK 标志是 POX wiki 中所述的 tcp 属性
TCP (tcp) Attributes: ......
FIN (bool) - True when FIN flag set
ACK (bool) - True when ACK flag set ......
为了获得这些属性,我们使用 find 方法将数据包的 tcp 部分分配给一个变量,然后我们使用点 (.) ex.
访问这些属性
variable.attribute
tcp_found.ACK
在 mininet 中,我能够在我的自定义 POX 控制器 c0
中的服务器 h1
和主机 h4
之间建立 TCP 连接,如下所示:
h1.cmd('python -m SimpleHTTPServer 80 &')
thread.start_new_thread(tcp_thread, h4)
def tcp_thread(src):
for i in range(10):
src.cmd('wget -O - 10.0.0.1')
time.sleep(5)
h4
从服务器请求 HTTP 页面,并保持正常根据 TCP 标准确认服务器。在这里,我希望能够强制 h4
使用它们之间的另一条路径发送 ACK
数据包。我在转发或创建路径方面没有问题,但我在如何在 h4
发送之前捕获或提取 Ack
数据包方面存在问题,因此我可以根据需要转发它们。
谢谢。
如果您有 PacketIn 函数,您可以添加一些代码行来捕获 ACK 标志
packet = event.parsed
tcp_found = packet.find('tcp')
if tcp_found:
if tcp_found.ACK:
print "ACK found"
# do your things
ACK 标志是 POX wiki 中所述的 tcp 属性
TCP (tcp) Attributes: ...... FIN (bool) - True when FIN flag set ACK (bool) - True when ACK flag set ......
为了获得这些属性,我们使用 find 方法将数据包的 tcp 部分分配给一个变量,然后我们使用点 (.) ex.
访问这些属性variable.attribute
tcp_found.ACK