在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
数据包的问题,以便我可以根据需要转发它们。
谢谢。
答案 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