看看 OVS文档就知道了!OpenVSwitch 设计文档中有一节详细描述了这一点:
Open vSwitch 中的设计决策:
实施小节说:
Open vSwitch 将带内控制实现为“隐藏”流,即通过 OpenFlow 不可见的流,并且可以通过 OpenFlow 设置比通配流更高的优先级。这样做是为了使 OpenFlow 控制器无法干扰它们并可能中断与其交换机的连接。可以使用 ovs-appctl "bridge/dump-flows" 命令查看所有流,包括带内流。
(...)
以下规则(使用 OFPP_NORMAL 操作)在具有任何遥控器的任何网桥上设置:
(a) 从本地端口发送的 DHCP 请求。
(b) ARP 回复本地端口的 MAC 地址。
(c) 来自本地端口 MAC 地址的 ARP 请求。
带内还为远程 IP 的每个唯一下一跳 MAC 地址设置以下规则(“下一跳”是远程本身,如果它在本地子网上,或者是到达远程的网关) :
(d) ARP 回复下一跳的 MAC 地址。
(e) 来自下一跳 MAC 地址的 ARP 请求。
带内还为每个唯一的远程 IP 地址设置以下规则:
(f) 包含远程 IP 地址作为目标的 ARP 回复。
(g) 包含远程 IP 地址作为源的 ARP 请求。
带内还为每个唯一的远程(IP、端口)对设置以下规则:
(h) 到远程 IP 和端口的 TCP 流量。
(i) 来自远程 IP 和端口的 TCP 流量。
这些规则的目标是尽可能窄,以允许交换机加入网络并能够与远程通信。如前所述,这些规则的优先级高于控制器的规则,因此如果它们过于宽泛,可能会阻止控制器实施其策略。因此,带内主动监控流和数据包处理的某些方面,以便使规则更加精确。
带内控制监视器尝试将可能干扰其职责的流量添加到数据路径中。数据路径只允许精确匹配条目,因此带内控制能够非常精确地了解它所阻止的流。数据路径中未命中的流被发送到用户空间进行处理,因此防止这些流被缓存在“快速路径”中不会影响正确性。当前被阻止的唯一类型的流是阻止本地端口看到 DHCP 回复的流。例如,不允许将所有 DHCP 流量转发到控制器的规则,但转发到所有端口(包括本地端口)的规则会。
该文档还包含有关特殊情况和潜在问题的更多信息,但很长,因此我将在此处省略。