2

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

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

4

2 回答 2

3

将 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
于 2018-05-07T08:18:44.203 回答
0

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

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

我不确定 POX 中的确切实现,但这结合起来ovs-ofctl dump-flows可能是一个好方法

于 2018-05-04T18:07:49.507 回答