很多网友问我openstack虚拟机之间通讯是怎么走的下面我大致介绍下虚拟机和虚拟机之间是如何通讯的首先虚拟机和虚拟机通讯分为两种
1相同组租户的的虚拟机位于不同宿主机之间的通讯
2相同组租户的的虚拟机位于同一个宿主机之间的通讯
下面我们来简单的介绍下第一种是怎么通讯的
我们先看图只看vlan network就好当vm1向vm2发送packet时首先会经过qbr桥这个桥有两个端口分别是tap和qvb。这个桥是利用linux的iptable防火墙做策略做一些安全规则。假设这个规则放行流量通过会到下一个br-int的桥
br-int这个桥收到包后会把把转发到br-vlan这个桥。br-vlan这个桥会为数据包打上真实的tag会把包发到另外一个计算节点的对应的br-vlan的桥。此时会把包发到br-vlan这个桥上
同样的在node2上也有一个qbr的桥掌管着流量的进与出。如果此时为allow则数据包就被送到了vm2上。
其实当我们的openstack平台部署完成时br-vlan和br-int已经创建出来了下面看几个配置文件
Network node
In the openvswitch_agent.ini file, configure the Open vSwitch agent:
[ovs]local_ip = TUNNEL_INTERFACE_IP_ADDRESSbridge_mappings = ,external:br-ex
Compute nodes
In the openvswitch_agent.ini file, configure the Open vSwitch agent:
[ovs]local_ip = TUNNEL_INTERFACE_IP_ADDRESSbridge_mappings = vlan:br-vlan
当然我们的iptables规则也能在配置文件中看到
[securitygroup]firewall_driver = iptables_hybrid
上面这一项是配置规则的一个选项。
二、instance snat 通讯
1、虚拟机默认有一个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