在 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

A​​CK 标志是 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