Neutron架构分析

时间:2024-04-04 15:58:55
Neutron是Openstack的核心组件,其官网对其给出的定位是:NaaS(网络即服务)。
NaaS有两层含义:
1 对外接口:Neutron为Network、Subnet、Port、Router等网络资源建立了逻辑模型,并提供了这些模型的RESTful API、CLI(命令行)、GUI(图形化用户接口)。
2 内部实现:利用Linux原生的以及其他厂商(或者开源)的虚拟网络功能,再加入一些硬件网络功能,构建出真正的网络。
Neutron对外提供CLI及GUI接口,其用户主要是“人”;对外提供的RESTful API,其用户主要是Openstack之内的其他组件(如Nova等)以及Openstack之外的其他系统(如MANO等)。
Neutron管理的网元,主要以“软”网元为主(也称虚拟网络功能)。这些“软”网元,有三种来源:
1 Linux原生的网络功能,比如Linux Router、Linux Bridge等。
2 开源的网络功能,比如OVS等;
3 厂商提供的闭源产品。
Neutron在有些情况下也会涉及一些“硬网元”。
Neutron的抽象架构,如下图:
Neutron架构分析
Neutron接到Restful API请求后,交由模块WSGI Application进行初步处理,然后这个模块通过Python API调用Neutron的Plugin模块。Plugin模块做了相应处理后,通过RPC调用Neutron的Agent模块,Agent再通过某种协议(比如CLI)对VNF(虚拟网络功能)进行配置。
上图中,WSGI Application及Plugin两个模块属于同一进程,Agent属于另外一个进程。承载RPC通信的是AMQP Server。另外,还有一个数据库没有画出。综上所述,Neutron的进程视图如下:
Neutron架构分析
WSGI Application、Plugin都属于上图的neutron-server。对数据库的选择,Neutron选的是MySQL。对AMQP Server而言,Neutron有三种选择:RabbitMQ、Qpid、ZMQ。上图是以RabbitMQ为例。Neutron针对不同的虚拟网络功能有不同的Agent来进行管理,图中的neutron-dhcp-agent、neutron-l3-agent、neutron-openswitch-agent,分别代表不同类型的Agent进程。
从部署的角度来说,Neutron分为三种节点:控制节点、网络节点和计算节点。上述的这些进程,部署在不同的节点上,如下图所示。
Neutron架构分析
在控制节点上,部署了进程neutron-server、DB Server(MySQL)和AMQP Server(RabbitMQ)。如果不考虑DVR,计算节点只有qbr、br-int、br-ethx、br-tun等bridge,所以计算节点上也只部署neutron-openswitch-agent、neutron-linuxbridge-agent等agent进程。网络节点除了br-int、br-ethx、br-tun等Bridge以为,还有DHCP、Router等虚拟网络功能,所以它还会部署neutron-dhcp-agent、neutron-l3-agent等进程。
1 节点是个逻辑概念,这些节点可以位于同一主机上,也可分属于不同的主机。
2 每个节点都需要部署相应的Agent进程。
Neutron的平台和框架主要包括以下几部分:
Web框架(WSGI)、DB Server(MySQL)、消息总线(AMQP/RPC)、公共库(Oslo)。