以下内容已屏蔽图片优化访问速度 |
---|
Port在数据库中的结构如下: [IMG] 一般来说一个Port就是一个Interface,当然也有一个Port对应多个Interface的情况,成为Bond Port的一个重要的方面就是VLAN Configuration,有两种模式: trunk port 这个port不配置tag,配置trunks 如果trunks为空,则所有的VLAN都trunk,也就意味着对于所有的VLAN的包,本身带什么VLAN ID,就是携带者什么VLAN ID,如果没有设置VLAN,就属于VLAN 0,全部允许通过。 如果trunks不为空,则仅仅带着这些VLAN ID的包通过。 access port 这个port配置tag,从这个port进来的包会被打上这个tag 如果从其他的trunk port中进来的本身就带有VLAN ID的包,如果VLAN ID等于tag,则会从这个port发出 从其他的access port上来的包,如果tag相同,也会被forward到这个port 从access port发出的包不带VLAN ID 如果一个本身带VLAN ID的包到达access port,即便VLAN ID等于tag,也会被抛弃。 我们做一个实验来测试Port的VLAN [IMG] 创建拓扑结构 ovs-vsctl add-port ubuntu_br first_br ovs-vsctl add-port ubuntu_br second_br ovs-vsctl add-port ubuntu_br third_br ovs-vsctl set Port vnet0 tag=101 ovs-vsctl set Port vnet1 tag=102 ovs-vsctl set Port vnet2 tag=103 ovs-vsctl set Port first_br tag=103 ovs-vsctl clear Port second_br tag ovs-vsctl set Port third_br trunks=101,102 需要监听ARP,所以禁止MAC地址学习 ovs-vsctl set bridge ubuntu_br flood-vlans=101,102,103 [IMG] 从192.168.100.102来ping 192.168.100.103,应该first_if和second_if能够收到包 first_if收到包了,从first_br出来的包头是没有VLAN ID的 [IMG] second_if也收到包了,由于second_br是trunk port,因而出来的包头是有VLAN ID的,103 [IMG] third_if收不到包 从192.168.100.100在ping 192.168.100.105, 则second_if和third_if可以收到包(当然ping不通,因为third_if不属于某个VLAN) first_if收不到包 second_if能够收到包,而且包头里面是VLAN ID = 101 [IMG] third_if也能收到包,而且包头里面是VLAN ID =101 [IMG] 从192.168.100.101来ping 192.168.100.104, 则second_if和third_if可以收到包 first_if收不到包 second_br能够收到包,而且包头里面是VLAN ID = 102 [IMG] third_if也能收到包,而且包头里面是VLAN ID =102 [IMG] 清理环境 ovs-vsctl clear Bridge ubuntu_br flood_vlans ovs-vsctl list Port ovs-vsctl clear Port vnet1 tag ovs-vsctl clear Port vnet0 tag ovs-vsctl clear Port first_br tag ovs-vsctl clear Port third_br trunks |