不少网友问我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