如果我们用直接定义Open-vlan的方法不能正确启动kvm,如下图的配置:

<interface type='network'>  
  <mac address='11:22:33:44:55:66'/>
  <source network='ovs-network' portgroup='vlan-02'/>
</interface>  

这种情况有可能发生在libvirt与ovs的兼容性问题上。

那么就得使用另外一种方式了,ovs的Fake Bridge,最早的文章说过,做Docker平台的时候,容器连接到linux系统的br0网桥,然后br0网桥再连接到ovs的网桥ovsbr0,这么串联起来用。ovs的Fake Bridge也是这么个意思,在ovs的网桥ovsbr0上面再串一个带vlan信息的Fake Bridge。

用法:

ovs-vsctl add-br <fake bridge> <parent bridge> <VLAN>  

举例:

ovs-vsctl add-br vlan100 ovsbr0 100  

我们定义kvm的网络的时候就变成连接到这个虚假的vlan100网桥上了:

<interface type='bridge'>  
  <mac address='11:22:33:aa:bb:cc'/>
  <source bridge='vlan100'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>  

查看一下:

# ovs-vsctl show
Bridge "ovsbr0"  
    Port "bond0"
        Interface "eth0"
        Interface "eth1"
    Port "ovsbr0"
        Interface "ovsbr0"
            type: internal
    Port "vnet0"
        tag: 100
        Interface "vnet0"
    Port "vlan100"
        tag: 100
        Interface "vlan100"
            type: internal

以下两条命令也比较有用: 1、查出网桥的vlan,如果是真网桥,会返回0,如果是fake Bridge,会返回vlan的id

ovs-vsctl br-to-vlan ovsbr0  
0  
ovs-vsctl br-to-vlan vlan100  
100  

2、查找网桥的上级

ovs-vsctl br-to-parent vlan100  
ovsbr0  
comments powered by Disqus