OpenStack Networking允许您创建和管理其他OpenStack服务可以使用的网络对象,例如网络,子网和端口。插件可以实现以适应不同的网络设备和软件,为OpenStack架构和部署提供灵活性。
网络服务(代号为neutron)提供了一个API,允许您在云中定义网络连接和寻址。网络服务使运营商能够利用不同的网络技术为云网络供电。网络服务还提供了一个API来配置和管理各种网络服务,从L3转发和NAT到负载平衡,外围防火墙和虚拟专用网络。
它包括以下组件:
API服务器
OpenStack Networking API包括对第2层网络和IP地址管理(IPAM)的支持,以及用于第3层路由器构造的扩展,实现在第2层网络和到外部网络的网关之间的路由。 OpenStack网络包括越来越多的插件,使得能够与各种商业和开源网络技术(包括路由器,交换机,虚拟交换机和软件定义网络(SDN)控制器)实现互操作性。
OpenStack Networking插件和代理
插入和拔出端口,创建网络或子网,并提供IP地址。所选择的插件和代理因特定云中使用的供应商和技术而异。重要的是,一次只能使用一个插件。
消息队列
在代理之间接受和路由RPC请求以完成API操作。消息队列用于在每个虚拟机管理程序上运行的neutron服务器和neutron代理之间的RPC的ML2插件中,在用于Open vSwitch和Linux桥的ML2机制驱动程序中。
要配置丰富的网络拓扑,您可以创建和配置网络和子网,并指示其他OpenStack服务(如Compute)将虚拟设备连接到这些网络上的端口。 OpenStack Compute是OpenStack Networking的一个着名消费者,为其实例提供连接。 特别是,OpenStack网络支持每个项目有多个专用网络,并允许项目选择自己的IP寻址方案,即使这些IP地址与其他项目使用的IP地址重叠。 有两种类型的网络,项目和提供商网络。 作为网络创建过程的一部分,可以在项目之间共享任何这些类型的网络。
提供商网络向实例提供第2层连接,并为DHCP和元数据服务提供可选支持。 这些网络连接或映射到数据中心中的现有第2层网络,通常使用VLAN(802.1q)标记来识别和分离它们。
提供商网络通常以灵活性为代价提供简单性,性能和可靠性。 默认情况下,只有管理员可以创建或更新提供商网络,因为它们需要配置物理网络基础设施。可以使用policy.json的以下参数更改允许创建或更新提供商网络的用户:
create_network:provider:physical_network
update_network:provider:physical_network
此外,提供商网络仅处理实例的第2层连接,因此缺乏对诸如路由器和浮动IP地址等功能的支持。
在许多情况下,已经熟悉依靠物理网络基础设施实现第二层,第三层或其他服务的虚拟网络架构的运营商可以无缝部署OpenStack网络服务。特别地,提供商网络吸引希望从计算网络服务(nova-network)迁移到OpenStack网络服务的运营商。随着时间的推移,运营商可以在这个最小的架构上构建更多的云网络功能。
一般来说,处理第三层操作的OpenStack Networking软件组件最能影响性能和可靠性。为了提高性能和可靠性,提供商网络将第3层操作移动到物理网络基础架构。
在一个特定的用例中,OpenStack部署驻留在具有传统虚拟化和使用相当大的物理网络基础设施的裸机主机的混合环境中。在OpenStack部署中运行的应用程序可能需要直接第2层访问(通常使用VLAN)到部署外部的应用程序。
路由提供商网络向实例提供第3层连接。 这些网络映射到数据中心中的现有三层网络。 更具体地,网络映射到多个第2层段,每个段基本上是提供商网络。 每个都有连接到它的路由器网关,在它们之间和外部路由流量。 网络服务不提供路由。
路由提供商网络提供大规模的性能,难以通过普通提供商网络以牺牲保证的第二层连接为代价。
自助服务网络主要使一般(非特权)项目能够管理网络,而不涉及管理员。这些网络是完全虚拟的,并且需要虚拟路由器来与提供商和外部网络(例如因特网)进行交互。自助服务网络通常还向实例提供DHCP和元数据服务。
在大多数情况下,自助服务网络使用覆盖协议,例如VXLAN或GRE,因为它们可以支持比使用VLAN标记(802.1q)的第2层分段多得多的网络。此外,VLAN通常需要物理网络基础设施的附加配置。
IPv4自助服务网络通常使用专用IP地址范围(RFC1918),并通过源NAT在虚拟路由器上与提供商网络交互。浮动IP地址允许通过虚拟路由器上的目标NAT从提供商网络访问实例。 IPv6自助服务网络始终使用公有IP地址范围,并通过具有静态路由的虚拟路由器与提供商网络进行交互。
网络服务使用通常位于至少一个网络节点的3层代理来实现路由器。与将实例连接到第2层的物理网络基础设施的提供商网络相反,自助服务网络必须遍历第3层代理。因此,第3层代理或网络节点的过度订阅或故障可能影响大量的自助服务网络和使用它们的实例。考虑实现一个或多个高可用性功能,以增加自助服务网络的冗余和性能。
用户为项目内的连接创建项目网络。默认情况下,它们是完全隔离的,不与其他项目共享。 OpenStack Networking支持以下类型的网络隔离和覆盖技术。
所有实例驻留在同一网络上,也可以与主机共享。 不会发生VLAN标记或其他网络隔离。
网络允许用户使用对应于物理网络中存在的VLAN的VLAN ID(802.1Q标记)创建多个提供商或项目网络。 这允许实例在整个环境中彼此通信。 它们还可以与位于同一第2层VLAN上的专用服务器,防火墙,负载平衡器和其他网络基础设施进行通信。
VXLAN和GRE是封装协议,创建覆盖网络以激活和控制计算实例之间的通信。 需要网络路由器以允许流量流出GRE或VXLAN项目网络之外。 还需要路由器将直接连接的项目网络与外部网络(包括Internet)连接。 路由器提供使用浮动IP地址直接从外部网络连接实例的能力。
一个IP地址块和相关的配置状态。 这也称为由网络服务为项目和提供商网络提供的本地IPAM(IP地址管理)。 子网用于在网络上创建新端口时分配IP地址。
最终用户通常可以创建具有任何有效IP地址的子网,而没有其他限制。 但是,在某些情况下,管理员或项目预先定义一个地址池是很好的,从中可以使用自动分配创建子网。
使用子网池通过要求每个子网都在定义的池内,限制可以使用的地址。 它还防止来自同一池的两个子网的地址重用或重叠。
端口是用于将诸如虚拟服务器的NIC的单个设备附接到虚拟网络的连接点。 该端口还描述了相关的网络配置,例如要在该端口上使用的MAC和IP地址。
路由器在自助服务和提供商网络之间或属于项目的自助服务网络之间提供虚拟三层服务,如路由和NAT。 网络服务使用第3层代理通过命名空间管理路由器。
安全组为控制入口(入站到实例)和出口(出站到实例)的端口级网络流量的虚拟防火墙规则提供一个容器。 安全组使用默认拒绝策略,并仅包含允许特定流量的规则。 每个端口可以以加法方式引用一个或多个安全组。 防火墙驱动程序将安全组规则转换为基础包过滤技术的配置,如iptables。
每个项目包含一个默认安全组,允许所有出口流量并拒绝所有入口流量。 您可以更改默认安全组中的规则。 如果启动实例时未指定安全组,则默认安全组将自动应用于该实例。 类似地,如果创建端口而未指定安全组,则默认安全组将自动应用于该安全组。
安全组规则是有状态的。因此,允许安全外壳的入口TCP端口22自动创建允许返回出口流量和涉及那些TCP连接的ICMP错误消息的规则。
默认情况下,所有安全组都包含一系列执行以下操作的基本(完整性)和反欺骗规则:
- 只有在使用端口的源MAC和IP地址,源MAC和IP组合处于允许地址对,或有效MAC地址(端口或允许地址对)和关联的EUI64链路-本地IPv6地址才允许出口流量。
- 允许出口DHCP发现和请求使用实例的端口的源MAC地址和未指定的IPv4地址(0.0.0.0)的消息。
- 允许入口DHCP以及来自子网中DHCP服务器的DHCPv6响应,以便实例可以获取IP地址。
- 拒绝出口DHCP和DHCPv6响应,以防止实例充当DHCP(v6)服务器。
- 允许入口/出口ICMPv6 MLD,邻居请求和邻居发现消息,从而实例可以发现邻居和加入多播组。
- 拒绝出口ICMPv6路由器通告,以防止实例充当IPv6路由器,并为其他实例转发IPv6流量。
- 允许出口ICMPv6 MLD报告(v1和v2)和使用特定实例的源MAC地址和未指定的IPv6地址(:)的邻居请求消息。重复地址检测(DAD)依赖于这些消息。
- 允许从实例的端口的MAC地址和实例的端口上允许的地址对中的任何其他MAC地址的出站非IP流量。
虽然非IP流量,安全组不隐式允许所有ARP流量。单独的ARP过滤规则阻止实例使用ARP拦截另一个实例的流量。您不能禁用或删除这些规则。
您可以通过将端口属性port_security_enabled设置为False来禁用安全组,包括基本和反欺骗规则。
OpenStack网络服务是可扩展的。 扩展有两个目的:它们允许在API中引入新功能,而不需要更改版本,并允许引入供应商特定的利基功能。 应用程序可以通过在/ extensions URI上执行GET以编程方式列出可用的扩展。 请注意,这是一个版本化请求; 也就是说,在一个API版本中可用的扩展在另一个中可能不可用。
可选的DHCP服务管理提供商和自助服务网络上的实例的IP地址。 Networking服务使用管理qdhcp命名空间和dnsmasq服务的代理来实现DHCP服务。
可选的元数据服务为实例提供API,以获取元数据,如SSH密钥。
提供API,管理数据库等
管理代理
提供与实例的第2/3层连接
处理物理 - 虚拟网络转换
处理元数据等
Linux Bridge
OVS
L3
DHCP
Metadata
虚拟专用网络即服务(VPNaaS)是一种介绍VPN功能集的Neutron扩展。
负载平衡器即服务(LBaaS)API提供和配置负载平衡器。
防火墙即服务(FWaaS)API是一个实验性API,可以让早期采用者和供应商测试他们的网络实施。