网络服务

在设计您的 OpenStack 网络基础设施的初始架构阶段,确保有适当的专业知识来协助设计物理网络基础设施,以识别适当的安全控制和审计机制非常重要。

OpenStack 网络增加了一层虚拟化网络服务,使租户能够构建自己的虚拟网络。目前,这些虚拟化服务不如其传统的网络对应服务成熟。在采用它们之前,请考虑这些虚拟化服务的当前状态,因为它决定了您可能需要在虚拟化和传统网络边界处实施的控制措施。

使用 VLAN 和隧道进行 L2 隔离

OpenStack 网络可以为每个租户/网络组合采用两种不同的流量隔离机制:VLAN(IEEE 802.1Q 标记)或使用 GRE 封装的 L2 隧道。您的 OpenStack 部署的范围和规模决定了您应该使用哪种方法进行流量隔离。

VLAN

VLAN 实现为在特定物理网络上的数据包,包含带有特定 VLAN ID (VID) 字段值的 IEEE 802.1Q 标头。共享相同物理网络的 VLAN 网络在 L2 层彼此隔离,甚至可以具有重叠的 IP 地址空间。支持 VLAN 网络的每个不同的物理网络都被视为一个单独的 VLAN trunk,具有不同的 VID 值空间。有效的 VID 值为 1 到 4094。

VLAN 配置的复杂性取决于您的 OpenStack 设计需求。为了允许 OpenStack 网络有效地使用 VLAN,您必须分配一个 VLAN 范围(每个租户一个),并将每个计算节点物理交换机端口转换为 VLAN trunk 端口。

注意

如果您希望您的网络支持超过 4094 个租户,VLAN 可能不是正确的选择,因为需要进行多次“hack”才能将 VLAN 标签扩展到超过 4094 个租户。

L2 隧道

网络隧道为每个租户/网络组合封装一个唯一的“tunnel-id”,用于标识属于该组合的网络流量。租户的 L2 网络连接独立于物理位置或底层网络设计。通过将流量封装在 IP 数据包中,该流量可以跨越 L3 边界,从而无需预配置 VLAN 和 VLAN trunking。隧道为网络数据流量增加了一层混淆,从监控角度减少了对单个租户流量的可见性。

OpenStack 网络当前支持 GRE 和 VXLAN 封装。

提供 L2 隔离的技术选择取决于您部署中将创建的租户网络的范围和大小。如果您的环境 VLAN ID 可用性有限或将拥有大量的 L2 网络,我们建议您使用隧道。

网络服务

租户网络隔离的选择会影响为租户服务实施网络安全和控制边界的方式。以下其他网络服务可用或正在开发中,以增强 OpenStack 网络架构的安全态势。

访问控制列表

OpenStack Compute 在部署了遗留 nova-network 服务时,可以直接支持租户网络流量访问控制,或者可以将访问控制委派给 OpenStack 网络服务。

请注意,遗留 nova-network 安全组应用于实例上的所有虚拟接口端口,使用 iptables。

安全组允许管理员和租户指定允许通过虚拟接口端口的流量类型和方向(入站/出站)。安全组规则是状态化的 L2-L4 流量过滤器。

在使用网络服务时,我们建议您在此服务中启用安全组,并在计算服务中禁用它。

L3 路由和 NAT

OpenStack 网络路由器可以连接多个 L2 网络,还可以提供一个网关,将一个或多个私有 L2 网络连接到共享的外部网络,例如用于访问 Internet 的公共网络。

L3 路由器在连接到外部网络的网关端口上提供基本的网络地址转换 (NAT) 功能。此路由器默认对所有流量进行 SNAT(静态 NAT),并支持浮动 IP,这会在外部网络上的公共 IP 和路由器附加的其他子网上的私有 IP 之间创建静态一对一映射。

我们建议利用每个租户的 L3 路由和浮动 IP,以实现租户 VM 的更精细的连接。

服务质量 (QoS)

默认情况下,服务质量 (QoS) 策略和规则由云管理员管理,这导致租户无法创建特定的 QoS 规则,或将特定的端口附加到策略。在某些用例中,例如某些电信应用程序,管理员可能会信任租户,因此允许他们创建自己的策略并将其附加到端口。可以通过修改 policy.json 文件和 特定文档来实现。扩展将在发布时提供。

Networking 服务 (neutron) 在 Liberty 及更高版本中支持带宽限制 QoS 规则。此 QoS 规则名为 QosBandwidthLimitRule,它接受两个以千比特每秒为单位的非负整数

  • max-kbps:带宽

  • max-burst-kbps:突发缓冲区

QoSBandwidthLimitRule 已在 neutron Open vSwitch、Linux bridge 和单根输入/输出虚拟化 (SR-IOV) 驱动程序中实现。

在 Newton 中,添加了 QoS 规则 QosDscpMarkingRule。此规则标记 IPv4 (RFC 2474) 上类型服务标头中的区分服务代码点 (DSCP) 值和 IPv6 上的流量类标头,所有离开虚拟机的流量,规则应用于该流量。这是一个 6 位标头,具有 21 个有效值,表示当数据包在网络中遇到拥塞时,其丢弃优先级。它也可以被防火墙用来匹配有效或无效的流量与其访问控制列表。

端口镜像服务涉及将进入或离开一个端口的数据包副本发送到另一个端口,该端口通常与被镜像数据包的原始目的地不同。作为一项服务的 Tap (TaaS) 是 OpenStack 网络服务 (neutron) 的扩展。它为租户虚拟网络提供远程端口镜像功能。此服务主要设计用于帮助租户(或云管理员)调试复杂的虚拟网络并深入了解其 VM,通过监控与其相关的网络流量。TaaS 尊重租户边界,其镜像会话能够在多个计算和网络节点之间扩展。它作为可以用于为各种网络分析和安全应用程序提供数据的基本基础设施组件。

负载均衡

OpenStack 网络中的另一个功能是负载均衡即服务 (LBaaS)。LBaaS 参考实现基于 HA-Proxy。OpenStack 网络中存在第三方插件正在开发中,以提供虚拟接口端口的广泛 L4-L7 功能。

防火墙

FW-as-a-Service (FWaaS) 被认为是 OpenStack 网络 Kilo 版本的实验性功能。FWaaS 解决了管理和利用典型防火墙产品提供的丰富的安全功能的需求,这些功能通常比当前安全组提供的功能更全面。Freescale 和 Intel 开发了 OpenStack 网络中的第三方插件,作为 Kilo 版本中的此组件的扩展。有关 FWaaS 管理的更多详细信息,请参阅 OpenStack 管理员指南中的防火墙即服务 (FWaaS) 概述

在设计 OpenStack 网络基础设施时,了解可用网络服务的当前功能和限制非常重要。了解您的虚拟和物理网络的边界将有助于在您的环境中添加所需的安全控制。

网络服务扩展

开源社区或与 OpenStack 网络合作的 SDN 公司提供的已知插件列表可在 OpenStack neutron 插件和驱动程序 wiki 页面上找到。

网络服务限制

OpenStack 网络具有以下已知限制

重叠的 IP 地址

如果运行 neutron-l3-agent 或 neutron-dhcp-agent 的节点使用重叠的 IP 地址,则这些节点必须使用 Linux 网络命名空间。默认情况下,DHCP 和 L3 代理使用 Linux 网络命名空间并在各自的命名空间中运行。但是,如果主机不支持多个命名空间,则 DHCP 和 L3 代理应在单独的主机上运行。这是因为 L3 代理和 DHCP 代理创建的 IP 地址之间没有隔离。

如果不存在网络命名空间支持,L3 代理的另一个限制是仅支持单个逻辑路由器。

多主机 DHCP 代理

OpenStack 网络支持具有负载均衡的多个 L3 和 DHCP 代理。但是,不支持虚拟机的紧密耦合位置。换句话说,默认的虚拟机调度器在创建虚拟机时不会考虑代理的位置。

L3 代理不支持 IPv6

neutron-l3-agent,由许多插件用于实现 L3 转发,仅支持 IPv4 转发。