在Mininet

时间:2016-05-19 20:06:45

标签: python mininet pox

在mininet中,我能够在我的自定义POX控制器h1中的服务器h4和主机c0之间建立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数据包。我在转发或创建路径方面没有问题,但我确实遇到了如何在Ack发送之前捕获或提取h4数据包的问题,​​以便我可以根据需要转发它们。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您有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)属性:......   FIN(bool) - 设置FIN标志时为True   ACK(bool) - 当ACK标志置位时为真......

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

访问属性。
variable.attribute
tcp_found.ACK