繁体   English   中英

如何通过Python代码定期在mininet中记录所有流表条目?

[英]How to log all flow table entries periodically in mininet by Python code?

据我了解, dpctl dump-flows命令仅有助于查看流表的当前状态。 流表经常被刷新。 我想记录流表条目。

我需要查看哪个类来记录流表? 我在 Virtual Box 中安装的 Ubuntu 上使用 POX 控制器和 mininet。

将 s2 视为交换机,您可以使用此记录流表(-O OpenFlow13 是可选的):

sh ovs-ofctl dump-flows s2 -O OpenFlow13 > exampleLog.txt

如果您在 s2 中有规则,结果将是:

mininet@mininet-vm:~/mininet$ cat exampleLog.txt
OFPST_FLOW reply (OF1.3) (xid=0x2):
 cookie=0x170000000000000, duration=9.458s, table=0, n_packets=6, n_bytes=588, priority=10,ip,in_port=1,nw_src=10.0.0.1,nw_dst=10.0.0.6 actions=output:4
 cookie=0x170000001000000, duration=8.556s, table=0, n_packets=5, n_bytes=490, priority=10,ip,in_port=4,nw_src=10.0.0.6,nw_dst=10.0.0.1 actions=output:1
 cookie=0x0, duration=42.627s, table=0, n_packets=20, n_bytes=1368, priority=0 actions=CONTROLLER:65535

要记录被刷新的流,您可以使用可用的OFPFF_SEND_FLOW_REM字段,该字段可以在设置流操作时由控制器设置。 根据 openflow 规范:

当流条目被控制器或流到期机制移除时,交换机必须检查流条目的OFPFF_SEND_FLOW_REM标志。 如果设置了此标志,则交换机必须向控制器发送流删除消息。 每个流删除消息都包含流表项的完整描述、删除原因(过期或删除)、删除时的流表项持续时间以及删除时的流统计信息。

我不确定 POX 中的确切实现,但是当与ovs-ofctl dump-flows结合使用时,这可能是一个很好的方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM