前面已经创建了两个 OVS local network,今天详细分析它们之间的连通性。

launch 新的 instance “cirros-vm3”,网络选择 second_local_net

cirros-vm3 分配到的 IP 为 172.16.1.102

cirros-vm3 被 schedule 到控制节点,其虚拟网卡也连接到 br-int。

当前的控制节点上的网络结构如下:

下面我们讨论一个有趣的问题:cirros-vm3 能否 Ping 到 cirros-vm1 呢?

根据我们在 linux bridge 中学到的知识,既然 cirros-vm3 和 cirros-vm1 都连接到同一个网桥 br-int,那么它们之间应该是可以 Ping 通的。 但另一方面,根据 Neutron 的设计,不同 local 网络之间是无法通信的。那么事实到底是如何呢?

实验证明 cirros-vm3 无法 Ping 到 cirros-vm1。 下面我们需要解释同一个网桥上的 port 为什么不能通信。

让我们重新审视一下 br-int 上各个 port 的配置。

这次我们注意到,虚拟网卡和 DHCP 对应的 port 都有一个特殊的 tag 属性。 first_local_net 相关 port 其 tag 为 1; second_local_net 相关 port 其 tag 为 2。

玄机就在这里了: Open vSwitch 的每个网桥都可以看作一个真正的交换机,可以支持 VLAN,这里的 tag 就是 VLAN ID。

br-int 中标记 tag 1 的 port 和 标记 tag 2 的 port 分别属于不同的 VLAN,它们之间是隔离的。

需要特别说明的是: Open vSwitch 中的 tag 是内部 VLAN,用于隔离网桥中的 port,与物理网络中的 VLAN 没有关系。

我们将 tag 信息添加到网络结构图中,如下所示:



到这里,OVS local network 的内容已经讨论完了,下节开始学习 flat network。