前几篇文章,讲述了如何用Open vSwitch配置vlan,那么更进一步,如何手动给ovs配置vlan trunk呢?方法其实很简单。
首先什么事vlan trunk呢? VLAN的中继端口叫做trunk。trunk技术用在交换机之间互连,使不同VLAN通过共享链路与其它交换机中的相同VLAN通信。交换机之间互连的端口就称为trunk端口。
简单说vlan trunk就是承载了多个vlan信息的端口。
给出场景,ovs和kvm已经都配好了,无vlan的信息。
首先找出要配vlan的port,ifconfig看一下,这里kvm对应的interface是vnet0
ovs-vsctl list interface vnet0
定义trunks
ovs-vsctl set port vnet0 trunks=20,30,40
查看:
ovs-vsctl list port vnet0
如果这个端口既能收到带vlan tag的流量,又能收到不带vlan tag的流量(native VLAN),需要这么设置:
ovs-vsctl set port vnet0 vlan_mode=native-untagged
看起来很麻烦吧,还是直接用libvirt来简单:
定义一个网络文件,一个ovsbr0的网桥,连接4个vlan portgroup,使用ovsvswitch做底层:
# cat ovs-net.xml
<network>
<name>ovs-network</name>
<forward mode='bridge'/>
<bridge name='ovsbr0'/>
<virtualport type='openvswitch'/>
<portgroup name='vlan-01' default='yes'>
</portgroup>
<portgroup name='vlan-02'>
<vlan>
<tag id='2'/>
</vlan>
</portgroup>
<portgroup name='vlan-03'>
<vlan>
<tag id='3'/>
</vlan>
</portgroup>
<portgroup name='vlan-all'>
<vlan trunk='yes'>
<tag id='2'/>
<tag id='3'/>
</vlan>
</portgroup>
</network>
启动,会自动生成ovs的配置:
virsh net-define ovs-net.xml
virsh net-start ovs-network
最后在kvm定义网络后,启动即可:
<interface type='network'>
<mac address='11:22:33:44:55:66'/>
<source network='ovs-network' portgroup='vlan-02'/>
</interface>