openstack网络架构
Neutron中的基本网络元素
Neutron使用所有网络管理员熟悉的元素来构建虚拟网络,包括网络,子网,端口,路由器,负载均衡器等。使用2.0版本核心Neutron API,用户可以构建一个由以下实体组成的网络:
网络:网络(Network)是一个隔离的2层广播域。 通常保留给创建它们的租户,如果相应地配置网络可以在租户之间共享。 网络是Neutron API的核心实体。 子网和端口必须始终与网络相关联。
子网:子网(subnet)是IPv4或IPv6地址块,可以将IP地址分配给虚拟机实例。 每个子网必须具有CIDR并且必须与网络相关联。 多个子网可以与单个网络相关联,并且可以是不连续的。 子网设置DHCP分配范围后可以限制提供给虚拟机的IP地址。
端口:Neutron中的端口(port)表示逻辑虚拟交换机上的虚拟交换机端口。 虚拟机接口映射到Neutron端口,并且端口定义要分配给插入其中的接口MAC地址和IP地址。 Neutron端口定义存储在Neutron数据库中,然后由相应的插件代理使用,以构建和连接虚拟交换基础设备。
管理员和用户可以通过创建和配置网络、子网来配置网络拓扑,然后指示Nova等服务将虚拟设备连接到这些网络上的端口。 用户可以创建多个网络,子网和端口,但限于由云管理员设置的每个租户配额定义的阈值。
插件扩展功能
Neutron引入了对扩展网络功能和Neutron API实现的第三方插件和驱动程序的支持。 可以创建使用各种基于软件和基于硬件的技术来实现由运营商和用户构建的网络的插件和驱动程序。
Neutron架构中有两种主要的插件类型:
•核心插件
•服务插件
核心插件实现核心Neutron API,并负责将网络,端口和子网所描述的逻辑网络适配成可由主机上运行的L2代理和IP地址管理系统实现的东西。服务插件提供额外的网络服务,如路由,负载均衡,防火墙等。
每种plugin代表了一种网络虚拟化的实现技术。不同的实现技术所提供的对外管理接口各不相同,plugin用来实现neutron rest api和相应实现接口之间的适配。
ML2(Modular Layer 2 plugin)
Ml2插件是一种允许OpenStack网络同时地利用多种二层网络技术的框架。目前与openswitch、linux bridge、hyperv L2 agent协同工作。ml2框架对简化新增L2网络技术的做了很好支持,比起以往新增加的核心插件,ML2框架需要更少的初期以及后期维护工作。
ML2驱动包括类型驱动和机制驱动,分别实现了网络类型和网络机制的可扩展性。
1)类型驱动(TypeDriver):
类型驱动可以管理多种网络类型,目前支持local, flat, vlan, gre, vxlan等。
2)机制驱动(MechanismDriver):
ML2机制驱动程序负责获取由类型驱动程序建立的信息, 机制驱动处理由类型驱动建立的信息(例如网络、子网、端口的创建、更新、删除操作),并且确保能够用于指定的网络机制,并确保其正确实现。 多个机制驱动可以被配置为同时操作(如有些节点可以使用openvswitch,有些则使用cisco Nexus 1000V等),并且可以使用三种类型的模型来描述:
• Agent-based:这包括LinuxBridge,Open vSwitch和其他
• Controller-based:这包括OpenDaylight,VMWare NSX和其他
• Top-of-Rack:这包括Cisco Nexus,Arista,Mellanox和其他
LinuxBridge和Open vSwitch ML2机制驱动程序用在托管实例和网络服务的节点内配置各自的交换技术。 LinuxBridge驱动程序支持local,flat,vlan和vxlan网络类型,而Open vSwitch驱动程序支持所有这些以及gre网络类型。
L2驱动器通过设置网络结构来限制广播流量的量。传统的交换行为如单播,多播和广播业务会被洪泛到所有交换机端口,直到学习到了地址。这种行为可能对网络结构产生负面影响,特别是随着云中的主机数量的增加。Neutron可以在所有主机上预填充转发数据库,以避免昂贵的学习操作。当使用ARP代理时,Neutron以类似的方式预填充所有主机上的ARP表,以避免ARP流量通过网络广播。
Neutron架构图
1、Neutron Server
对外提供 OpenStack 网络 API,接收请求,并调用 Plugin 处理请求。
2、Plugin
处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络状态, 并调用 Agent 处理请求。
3、Agent
处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。
4、Network provider
提供网络服务的虚拟或物理网络设备,例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron 的物理交换机。
5、Queue
Neutron Server,Plugin 和 Agent 之间通过 Messaging Queue 通信和调用。
6、Database
存放 OpenStack 的网络状态信息,包括 Network, Subnet, Port, Router 等。
参考资料
1、Learning OpenStack Networking (Neutron) Second Edition James Denton
2、https://mp.weixin.qq.com/s/IDjOy7TTQbaj-TJ4u0ixXA CloudMan公众号推送文章