Neutron是OpenStack云计算平台的核心网络服务组件,负责提供和管理云环境中的网络连接、IP地址分配、路由、防火墙等网络功能,实现了对虚拟网络资源的抽象、隔离和自动化管理 。
Neutron的核心作用在于将复杂的物理网络基础设施抽象为软件定义的、可按需创建和配置的逻辑网络资源,从而支撑OpenStack云平台中虚拟机(实例)之间的互联以及与外部网络的通信 。其核心功能可以概括为以下几点:
| 功能类别 | 具体功能 | 说明 |
|---|---|---|
| 网络虚拟化 | 创建虚拟网络(Network) | 提供二层网络隔离,支持VLAN、VXLAN、GRE等多种隧道技术 。 |
| 划分子网(Subnet) | 为虚拟网络分配IP地址段(CIDR),并管理其DHCP、DNS等属性 。 | |
| 创建端口(Port) | 作为虚拟网卡,连接虚拟机实例或网络设备(如路由器)到虚拟网络 。 | |
| 网络服务 | 路由(Routing) | 通过虚拟路由器(Router)实现不同子网之间的三层转发,以及连接内部网络与外部网络(如公网)。 |
| DHCP服务 | 为连接到子网的虚拟机自动分配IP地址、网关和DNS信息 。 | |
| 安全组(Security Group)与防火墙(FWaaS) | 提供基于端口(实例级别)或基于路由器(网络边界)的流量过滤规则,实现网络安全策略 。 | |
| 负载均衡(LBaaS) | 提供虚拟负载均衡器服务,将流量分发到后端多个实例上。 | |
| 高级网络 | VPN即服务(VPNaaS) | 提供站点到站点或远程访问的VPN连接。 |
| 服务质量(QoS) | 对网络带宽、延迟、丢包率等指标进行策略控制。 |
Neutron采用分布式、插件化的架构,主要分为控制节点(运行neutron-server)和网络节点/计算节点(运行各类Agent)。其核心组件协同工作流程如下:
- Neutron Server:作为API网关和大脑,接收用户通过Dashboard或CLI发送的REST API请求(如创建网络),进行身份验证和基础验证后,将请求分发给配置的插件(Plugin)进行处理 。
- Plugin 与 Driver:插件是Neutron架构的核心。通用的ML2(Modular Layer 2)插件通过类型驱动(Type Driver)管理不同的网络类型(如VLAN、VXLAN),通过机制驱动(Mechanism Driver)对接不同的底层虚拟交换技术(如Linux Bridge、Open vSwitch)。这种设计实现了网络后端技术的解耦与可扩展。
- Agent:代理是运行在各个物理节点上的守护进程,负责执行具体的网络配置任务。它们通过消息队列(如RabbitMQ)接收来自Plugin的RPC调用指令 。主要代理包括:
- L2 Agent(如
openvswitch-agent或linuxbridge-agent):在计算节点上,负责创建虚拟交换机端口、设置VLAN标签或建立隧道,将虚拟机的虚拟网卡(tap设备)连接到正确的虚拟网络 。 - L3 Agent:通常运行在独立的网络节点上,负责创建和管理虚拟路由器(通过Linux Network Namespace实现),处理子网间的路由和外部网络的SNAT/DNAT转换 。
- DHCP Agent:负责为每个需要DHCP服务的子网创建一个独立的DHCP服务器(运行在独立的Network Namespace中,使用dnsmasq软件),为虚拟机自动分配IP地址 。
- Metadata Agent:为虚拟机提供访问实例元数据的代理服务。
- L2 Agent(如
以一个典型的创建VXLAN网络并启动虚拟机的流程为例,可以清晰地展示各组件如何协作 :
- 用户通过API请求创建一个VXLAN类型的网络
net01和一个子网subnet01。 neutron-server接收到请求,ML2插件通过类型驱动记录网络类型为VXLAN,并通过配置的OVS机制驱动,将创建网络的信息通过RPC消息发送到消息队列。- 所有运行了
openvswitch-agent的计算节点和网络节点都会从消息队列收到该消息。 - 各节点的
openvswitch-agent在本地OVS网桥(如br-int)上创建对应的逻辑端口,并配置VXLAN隧道端点。 - 当用户创建一个虚拟机并指定其连接到
net01时,Nova会调用Neutron API为该虚拟机分配一个端口。 - Neutron的ML2插件和OVS机制驱动再次通过RPC通知计算节点上的
openvswitch-agent。 - 该代理在OVS网桥上创建tap设备(虚拟网卡),并将其与虚拟机绑定,同时设置正确的VXLAN网络标识,最终完成虚拟机接入虚拟网络。
Neutron的设计特点在于其高度的插件化和松耦合,使得用户可以根据实际的基础设施和需求,灵活选择网络类型和底层实现技术,而无需修改上层应用逻辑 。同时,通过将控制平面(neutron-server + Plugin)与数据平面(各类Agent)分离,并利用消息队列进行通信,实现了系统的可扩展性和可靠性 。
参考来源
- OpenStack核心组件-neutron
- openstack——Neutron基本架构详解
- 云计算Openstack Neutron
- Neutron dhcp实现
- OpenStack Neutron 架构详解
- Openstack-----Neutron组件解析

1263

被折叠的 条评论
为什么被折叠?



