在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