Open vSwitch 使用不同种类的流来实现不同的目的:
OpenFlow 流是最重要的一种流。 OpenFlow 控制器使用这些流来定义交换机的策略。 OpenFlow 流支持通配符、优先级和多个表。
当使用带内控制时,Open vSwitch 会设置一些“隐藏”流,其优先级高于控制器或用户可以配置的,但通过 OpenFlow 不可见。 (有关隐藏流的更多信息,请参阅常见问题解答的“控制器”部分。)
Open vSwitch 软件交换机实现在内部使用第二种流。这些流,称为“数据路径”或“内核”流,不支持优先级,仅包含一个表,这使得它们适合缓存。 (与 OpenFlow 流一样,数据路径流确实支持通配符,在 Open vSwitch 1.11 及更高版本中。)OpenFlow 流和数据路径流也支持不同的操作和不同的端口号。
数据路径流是一个实施细节,在 Open vSwitch 的未来版本中可能会发生变化。即使使用当前版本的 Open vSwitch,硬件交换机实现也不一定使用这种架构。
用户和控制器仅直接控制 OpenFlow 流表。 Open vSwitch 本身管理数据路径流表,因此用户通常不应该关心它。
Open vSwitch 有两种流(见上),因此它具有用于转储每种流的不同目的的命令:
ovs-ofctl 转储流
转储 OpenFlow 流,不包括隐藏流。这是最常用的流转储形式。 (与其他命令不同,这应该适用于任何 OpenFlow 交换机,而不仅仅是 Open vSwitch。)
ovs-appctl 桥接/转储流
转储 OpenFlow 流,包括隐藏流。这有时对排除带内控制的可疑问题很有用。
ovs-dpctl dump-flows [dp] 转储基于 Linux 内核的数据路径的数据路径流表条目。在 Open vSwitch 1.10 及更高版本中,ovs-vswitchd 将多个交换机合并到单个数据路径中,因此它将显示所有基于内核的交换机上的所有流。此命令有时可用于调试。
ovs-appctl dpif/转储流
,Open vSwitch 1.10 中的新增功能,仅转储指定网桥的数据路径流,而不管类型如何。