先說下我這架構就是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了
下面官方的圖非常好: