不少網友問我openstack虛擬機之間通信是怎麼走的下面我大體介紹下虛擬機和虛擬機之間是如何通信的首先虛擬機和虛擬機通信分爲兩種html
1相同組租戶的的虛擬機位於不一樣宿主機之間的通信node
2相同組租戶的的虛擬機位於同一個宿主機之間的通信linux
下面咱們來簡單的介紹下第一種是怎麼通信的
安全
咱們先看圖只看vlan network就好當vm1向vm2發送packet時首先會通過qbr橋這個橋有兩個端口分別是tap和qvb。這個橋是利用linux的iptable防火牆作策略作一些安全規則。假設這個規則放行流量經過會到下一個br-int的橋app
br-int這個橋收到包後會把把轉發到br-vlan這個橋。br-vlan這個橋會爲數據包打上真實的tag會把包發到另一個計算節點的對應的br-vlan的橋。此時會把包發到br-vlan這個橋上ide
一樣的在node2上也有一個qbr的橋掌管着流量的進與出。若是此時爲allow則數據包就被送到了vm2上。ui
其實當咱們的openstack平臺部署完成時br-vlan和br-int已經建立出來了下面看幾個配置文件this
In the openvswitch_agent.ini file, configure the Open vSwitch agent:spa
[ovs]local_ip = TUNNEL_INTERFACE_IP_ADDRESSbridge_mappings = ,external:br-ex
In the openvswitch_agent.ini file, configure the Open vSwitch agent:orm
[ovs]local_ip = TUNNEL_INTERFACE_IP_ADDRESSbridge_mappings = vlan:br-vlan
固然咱們的iptables規則也能在配置文件中看到
[securitygroup]firewall_driver = iptables_hybrid
上面這一項是配置規則的一個選項。
2、instance snat 通信
一、虛擬機默認有一個net0網卡,在使用brctl show 時,能夠看到 qbr上擁有虛擬機的的tap設備,而且能夠看到 qvb設備,qvb設備和qvo是一對patch,流量到了br-int橋上,用過br-int 打標籤去標籤,經過br-int 和br-ex的一對path 把流量送到br-tenant橋上,br-tenant 把流量 送到本身的物理網卡 interface2(租戶網),這個物理接口對應的交換機接口是 truck,truck會放行流量經過,此時會送到controller節點(由於網關在router上,router在控制節點)。一樣的控制節點也有物理接口(租戶網),租戶網 一樣有patch,到到br-int 從而到達br-ex