2

我已经在 Ubuntu 14.04 下安装了 Mininet 和 openvswitch。尝试使用 dpctl 发出 vSwitch 数据路径命令(到 Vswitch)。在 bash 提示符下发出 dpctl 命令时,返回始终是“找不到命令”。使用 sudo 甚至在 openvswitch 目录中也是如此。是什么阻止了这个命令被找到?似乎它是 openvswitch 发行版的一部分。还运行 NOX 控制器,仅供参考。谢谢!

4

4 回答 4

2

我认为您正在寻找的命令是ovs-dpctl. 它是openvswitch-switch 包装的一部分

于 2015-03-01T22:10:40.347 回答
2

Mininet演练使用旧的dpctl命令(来自原始参考 OpenFlow 实现)来显示来自 xterm 内的流。最近,使用 Open vSwitch 工具ovs-ofctl变得更加容易。例如从交换机 xterm 显示安装在交换机中的流,使用:source

ovs-ofctl 转储流 tcp:127.0.0.1:6634

于 2016-02-02T15:48:40.203 回答
1

不同之处在于:

ovs-dpctl - 管理 Open vSwitch 数据路径 ovs-ofctl - 管理 OpenFlow 交换机

我认为您可以使用其中任何一个,但用法有点不同,据我所知,这两个实现了相同的目标:

ovs-dpctl 转储流或 ovs-ofctl 转储流 tcp:127.0.0.1:6634

命令输出截图

于 2016-07-07T04:32:08.077 回答
0

ovs-ofctl 和 ovs-dpctl 完全是两个不同的目的。ovs-ofctl 始终代表 openflow 流。因此,您可以看到所有不同表的所有不同流程。无论控制器添加什么,它都将始终是相同的流程。但是 dpctl 显示了 ovs 数据路径流,也就是兆流。Ovs 有一个 Megaflows 的概念,它是多个管道流的组合。例如,如果您有 3 个 openflows 流程,例如:

表=0,IP,动作=dec_ttl,goto_table:1

表=1,IP,nw_src=10.0.0.0/8,动作=goto_table:2

表=2,输入端口=1,动作=输出:2

如果一个数据包命中所有 3 个流,那么您可能会看到一个 megaflow 结合了该数据包的数据路径中的所有 3 个开放流规则。如果您使用 dpctl,您可能会看到与此类似的流程:

表=0,in_port=1,ip,nw_src=10.0.0.1,动作=dec_ttl,输出:2

请记住,OVS 以这样一种方式生成兆流,即单一类型的数据包永远不会在数据路径上命中 2 个不同的兆流。而ovs中的megaflow机制是为了提高ovs中包处理的性能。

如果您想了解有关 ovs 架构的更多信息,请参阅以下论文: http ://openvswitch.org/support/papers/nsdi2015.pdf

于 2017-09-16T08:04:39.760 回答