玩转Openvwitch第五站:Port和VLAN

Port在数据库中的结构如下:

16175c57cbfaf30ad37a7b9850634e3d.png

一般来说一个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

5934127e080ec74ed3564f2ad87dd1d3.png

创建拓扑结构

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

b31f086d8bba85db4bebe2c021388fdf.png

从192.168.100.102来ping 192.168.100.103,应该first_if和second_if能够收到包

first_if收到包了,从first_br出来的包头是没有VLAN ID的

a74ad67ba648c0c6a121a7cfc61e9f84.png

second_if也收到包了,由于second_br是trunk port,因而出来的包头是有VLAN ID的,103

f299fb5a6fa141139aebc7584b022ca5.png

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

4c346f544d2bd27c2ea36105c90ae4bc.png

third_if也能收到包,而且包头里面是VLAN ID =101

821fb20f84391ffb925dd542cf786b69.png

从192.168.100.101来ping 192.168.100.104, 则second_if和third_if可以收到包

first_if收不到包

second_br能够收到包,而且包头里面是VLAN ID = 102

993a7057b9fc163270e9ad44e55b931a.png

third_if也能收到包,而且包头里面是VLAN ID =102

e11fa3dfd66fdc6f6480c733db4587a0.png

清理环境

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部