前几篇文章,讲述了如何用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>  
comments powered by Disqus