玩转Openvwitch第五站:Port和VLAN

以下内容已屏蔽图片优化访问速度
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
从万达广场的就业奇迹,看中国实体经济的价值与意义 亏本、倒闭、残局:谁在“杀死”互联网家装 李想创业20年总结:从普通人到顶尖领袖,差了5个认知楼层 那些在喜茶排队的人,生活是如何一步步被毁掉的? MySQL每秒57万的写入,带你飞~
好看吗?
总执行时间0.07400727272033691,文章查询时间0.04760909080505371,分类查询时间0.009906768798828125,其他脚本0.00026226043701171875,模板渲染0.01622915267944336