首页 > 代码库 > Neutron使用openvswitch网络通信的基本原理

Neutron使用openvswitch网络通信的基本原理

声明:

本博客欢迎转载,但请保留原作者信息!

作者:闵宏亮

团队:华为杭州OpenStack团队


Openstack在创建虚拟机进行网络配置的时候大致分为两个步骤:

1、Nova-compute通过调度在主机侧创建虚拟机,并且创建好linux bridge,是否创建linux网桥取决于是否把安全组的功能打开,创建好bridgeveth类型的点对点端口,连接bridge设备和br-int网桥。

2、Neutron-ovs-agent周期任务扫描到网桥上的端口发送rpc请求到neutron-server侧,获取端口的详细信息,进行网络配置,当然,不同类型的网络会进行不同的处理,OVS当前支持,vlanvxlanflatgre类型的网络。

 

再来仔细看一下具体虚拟机的通信是怎样实现的:

也分为两种情况来看:

1、同板虚拟机

参考下图:


在报文入口方向打上vlan,在br-int网桥上进行二层的隔离,对neutron-ovs-agent来说,这个是一个内部vlan,因此,很显然,对于这个主机使用的network来说,在主机侧neutron-ovs-agent都会维护一个内部vlan,并且是一一对应的,用于不同network的虚拟机在板上的互相隔离,由于板内虚拟机通信不经过物理网口,因此,也不会受到网口带宽和物理交换机性能的影响。

 

2、跨板虚拟机:



这里以vlan类型网络举例,networksegment_id100,即vlan100,虚拟机出来的报文在进入br-int网桥上被打上内部的vlan,举例来说打上vlan 3,下行的流量在经过对应的网络平面后,vlan会进行对应的修改,通过ovsflow tablevlan修改成真实的vlan100;上行流量在br-int网桥上通过flow tablevlan 100修改成内部的vlan 3flat网络原理类似,下行流量会在br-eth通过flow table strip_vlan送出网口,vxlan类型的网络稍有不同,不过原理也是类似。


Neutron使用openvswitch网络通信的基本原理