先说下我这架构就是2个节点控制节点+计算节点,网络这采用ovs方法没有路由,就是二层打通并且可以多vlan。
网络架构图:
eth0网卡走trunk,走多vlan。从dashboard上创建不同的vlan网络,创建vm即可跑通。
先看一下ovs-vsctl show
红色框就是ovs打的tag标,奇怪的问题就在这里为什么跟上面的vlan号(3100,3200,3300)对应不上,实际上这个网络是通的并且每个vm确实在正确的vlan中。
有ovs+kvm的使用经验的人肯定很奇怪ovs tag确实不对但网络怎么就好使了呢?这是因为flow表中的规则完成了vlan的转换映射
先查看一下port的序号
[root@compute ~]# ovs-ofctl show br-int
序号1对应int-br-ex,流表中规则会以这个为准,然后看看流标规则
[root@compute ~]# ovs-ofctl dump-flows br-int
先看一条
cookie=0xb13977f0a22c9abd, duration=62346.434s, table=0, n_packets=55, n_bytes=3634, idle_age=1078, priority=3,in_port=1,dl_vlan=3100 actions=mod_vlan_vid:2,NORMAL
dl_vlan:原始vlan号
actions=mod_vlan_vid(转换vlan号):
这个规则就是说把原始vlan3300 转成成vlan2。vlan2就是前面看到的ovs自己生成的vlan号。问题还没有完,转成vlan2 还不行,必须转成vlan3100才可以正常通讯。
openstack这里默认会创建2个桥br-int和 br-ex,br-ex就是出口的桥
[root@compute ~]# ovs-ofctl show br-ex
[root@compute ~]# ovs-ofctl dump-flows br-ex
这个就是将原始vlan2 转成vlan3100出去。这样就OK了
下面官方的图非常好: