OVS Vlan Tag

2022-01-13  本文已影响0人  苏苏林

传统的交换机设备都是支持VLAN隔离的,OpenvSwitch作为一个主流的虚拟交换机,自然也是支持VLAN相关的实现的。OVS交换机内部也可以通过VLAN ID来隔离交换机的各个端口。

如果一个OVS交换机的端口设置了tag标签(该端口处于access模式),数据包从该端口进入到交换机内部时,该数据包就会被打上对应的tag,于是该数据包也就只能从设置了相同tag的端口发出,而在出交换机的时候,数据包上的tag会被删除。这样就实现了交换机内部的一个隔离。

但是流表就像三体中的归零者一样,可以打破物理定律,在不修改报文信息的情况下,实现在任意vlan之间转发报文。
做个测试:

[root@localhost ~]# ovs-vsctl show
84b2b2a2-c947-409b-aef4-20ca802a2238
    Bridge br0
        Port veth21
            Interface veth21
        Port br0
            Interface br0
                type: internal
        Port veth11
            tag: 2
            Interface veth11
        Port veth31
            tag: 3
            Interface veth31

veth11 和 veth31属于打了不同的vlan tag,使用“NORMAL”action时,网络时隔离的。
配置如下流表,未修改vlan头,也是能通的。

[root@localhost ~]# ovs-ofctl dump-flows br0
cookie=0x0, duration=23.064s, table=0, n_packets=7, n_bytes=574, priority=90,in_port=veth31 actions=output:veth11
cookie=0x0, duration=15.975s, table=0, n_packets=7, n_bytes=574, priority=90,in_port=veth11 actions=output:veth31

配置如下流表,strip掉vlan头也是ok的。

[root@localhost ~]# ovs-ofctl dump-flows br0
 cookie=0x0, duration=29.602s, table=0, n_packets=7, n_bytes=574, priority=90,in_port=veth31 actions=strip_vlan,output:veth11
 cookie=0x0, duration=12.287s, table=0, n_packets=7, n_bytes=574, priority=90,in_port=veth11 actions=output:veth31
上一篇下一篇

猜你喜欢

热点阅读