美文网首页
Neutron L3 service

Neutron L3 service

作者: robot_test_boy | 来源:发表于2020-10-01 21:50 被阅读0次

在Neutron中,L3 Service是个非常关键的服务,其主要提供虚拟机不同L2子网之间的L3路由,以及虚拟机与外网之间的SNAT和基于Floating IP的DNAT功能,如果OpenStack网络中未部署L3服务,则用户只能部署基于Provider的网络,而无法实现真正的云计算Self-Service网络。L3 Service主要由L3  Service插件及其API和对应的L3 Agent组成,其中L3 Service插件和API由Neutron-Service服务来运行,通常部署在控制节点上,而L3 Agent可以部署在控制节点上,也可以部署在网络节点上,但是从OpenStack的Juno版本开始L3 Agent才可以部署在计算节点上以实现分布式虚拟路由(Distributed Vritual Router, DVR)功能。或者说,在Juno版本发行之前,OpenStack中的Neutron网络功能服务除了Neutron-Server和L2 agent外,均集中部署在独立的网络节点上。

在实际工作中,Neutron以RESTful的形式提供了两种类型的API服务,即Core API和Extension API。通过Neutron的Core API,管理员可以创建网络、子网和端口等核心网络要素。通过Extension API,管理员可以创建虚拟Router、LoadBalance、VPN和Firewall等高级的网络功能。与Neutron的Core API和Extension API对应的是Core Plugins和Service Plugins, Neutron Server中的API Server在接收到请求后,会调用相应的Plugins来响应用户发起的网络资源请求。Core Plugins主要用于定义二层网络的网络类型以及网络接口驱动等底层核心功能。Service Plugins主要用于定义L3 Router等三层以上的网络高级功能。通常情况下,租户可以通过L3 Plugin提供的API创建虚拟Router和Floating IP,并通过Nova的API将Floating IP绑定到实例上,从而实现租户内网与外网的通信。租户网络对外网访问通过L3 Router的SNAT功能实现,而外网对租户网络的访问通过L3 Router的DNAT功能实现。除了NAT功能,L3 Router还实现了租户不同子网间的路由功能。

租户不同的子网SubnetA和SubnetB通过L3 Router实现L2通信,就是东西向通信;

租户网络上的虚拟机通过L3 Router的SNAT和DNAT功能实现与外网的互访,就是南北向通信。

L3 Router包含的功能有如以下几项:

❑租户不同子网通信路由。

❑端口Mapping与IP伪装,即SNAT。

❑提供Floating IP以实现外网对虚拟机的直接访问,即DNAT。

❑内部定义的静态路由。

Neutron中L3 Service功能的实现过程如下:

1)插件加载。位于控制节点的Neutron-Server在启动时加载L3 Service插件,L3 Service插件主要负责响应和处理用户对三层网络服务的REST请求,并将请求以RPC cast形式通过消息队列传递给网络节点上的L3 Agent进行最终处理。

2)L3 Agent注册。L3 Agent通常运行在网络节点上,L3 Agent服务启动后,通过消息队列将自身注册到位于控制节点上的L3  Service Plugin中,以作为Router Scheduler对象供L3 Plugin调用。L3 Agent实现由Neutron API请求的虚拟路由功能。

3)虚拟路由管理。网络节点上的L3 Agent根据控制节点L3 Service Plugin传递的配置参数进行本地(网络节点)虚拟路由的管理。

4)路由功能实现。Neutron L3 Agent使用Linux Namespace和iptables规则实现虚拟路由功能。

5)路由隔离。Namespace提供了隔离的网络栈(Network Stack)空间,每个网络栈命名空间中都有属于自己的Routing tables和iptables规则,由于网络栈命名空间彼此隔离,IP地址可以在命名空间限制范围内重复使用。

6)路由创建。L3 Agent在网络节点上为租户网络中的每一个虚拟路由创建一个命名空间,之后在命名空间中创建相应的虚拟路由端口。

7)添加租户子网接口。当用户将租户子网接入虚拟路由时,对应命名空间中虚拟路由接口被标记到集成网桥上(通常以br-int表示 ),标记ID为租户网络的Segmentation ID。

8)设置外网网关。命名空间中的虚拟路由包含一个外网(通常以br-ex表示)的网关接口。

9)路由功能实现。L3 Router将iptables规则应用到命名空间虚拟路由网关接口上以实现DNAT(Floating IP)和SNAT功能。

在小规模的OpenStack集群中,计算节点数目较小的情况下,上述L3 Agent集中的网络部署形式对集群性能的影响可能不是很明显,但是随着集群规模的扩大,计算节点数目变得越来越多,计算节点上的虚拟机之间的通信也变得越来越频繁,此时的网络负载便会出现质的提升,因此网络瓶颈将会十分突出。

在L3 Agent集中部署到网络节点的情况下,单一的网络节点很可能因为过大的网络负载而出现各种性能问题。为了解决这一问题,从Juno版本开始,社区引入了分布式虚拟路由DVR(Distributed Vritual Router)功能。DVR的主旨思想就是将L3 Agent的功能由网络节点分布到计算节点,从而让计算节点分流单一网络节点上的网络负载。

笔记整理来自山金孝的《OpenStack高可用集群(上册):原理与架构》9.2.3章节,如有侵权请通知删除

相关文章

网友评论

      本文标题:Neutron L3 service

      本文链接:https://www.haomeiwen.com/subject/swxuuktx.html