据我了解,dpctl dump-flows
命令只能帮助查看当前的流表状态。流表经常被刷新。我想记录流表条目。
我需要查看哪个类来记录流表?我在安装在Virtual Box中的Ubuntu上使用POX控制器和mininet。
答案 0 :(得分:2)
将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
答案 1 :(得分:0)
要记录刷新的流,您可以使用OFPFF_SEND_FLOW_REM
字段,可以在设置流程操作时由控制器设置。根据openflow-specification:
当通过控制器或流程到期机制删除流条目时,交换机必须检查流条目的OFPFF_SEND_FLOW_REM
旗。如果设置了此标志,则交换机必须向控制器发送流删除消息。每个流已删除消息包含流条目的完整描述,删除(到期或删除)的原因,删除时的流条目持续时间以及删除时的流统计信息。
我不确定POX中的确切实现,但这与ovs-ofctl dump-flows
结合使用可能是一个很好的方法