在 Mininet 中识别来自 wget 的 ACK 数据包



在mininet中,我能够在服务器h1和主机之间建立TCP连接,h4在我的自定义POX控制器c0如下所示:

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数据包。我在转发或创建路径方面没有问题,但我确实在发送数据包之前捕获或提取Ack数据包h4以便我可以根据需要转发它们。

谢谢。

如果你有一个 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 维基中所述的 tcp 属性

TCP(tcp)属性:... FIN (布尔值) - 当 FIN 标志设置为 true 时为 true ACK (布尔值) - 当 ACK 标志设置时为真......

为了获取这些属性,我们使用 find 方法将数据包的 tcp 部分分配给变量,然后我们使用点 (.) ex

.
variable.attribute
tcp_found.ACK

最新更新