睿诚科技协会

OpenStack网络模式有哪些?各自如何选?

OpenStack 的网络功能主要由 Neutron 项目提供,Neutron 的核心理念是“网络即服务”(Network as a Service),它允许管理员和用户定义复杂的网络拓扑,而不仅仅是简单的桥接。

OpenStack网络模式有哪些?各自如何选?-图1
(图片来源网络,侵删)

下面我们将从核心概念、常见网络模型和高级特性三个方面来阐述。


核心概念

在深入具体模式之前,必须先了解 Neutron 的几个核心组件,它们是构建所有网络模式的基础。

  1. Plugin (插件): Neutron 的核心是插件架构,Plugin 负责实现具体的网络后端技术,

    • OVS (Open vSwitch): 最常用、功能最强大的软件交换机插件。
    • Linux Bridge: 另一个流行的软件交换机插件。
    • ML2 (Modular Layer 2): 这是目前的主流框架,它允许同时使用多种二层技术(如 VLAN, VXLAN, GRE 等),并通过一个核心插件(如 OVS)来驱动,ML2 是现代 OpenStack 环境的标准。
  2. Agent (代理): Agent 是运行在计算节点和网络节点上的进程,负责执行 Plugin 下发的具体网络任务。

    OpenStack网络模式有哪些?各自如何选?-图2
    (图片来源网络,侵删)
    • L2 Agent: 如 openvswitchlinuxbridge agent,负责创建虚拟交换机、处理 VLAN 标签、处理端口等二层任务。
    • L3 Agent: 运行在网络节点上,负责实现虚拟路由器的功能,如 NAT 和路由。
    • DHCP Agent: 运行在网络节点上,为虚拟机提供 DHCP 服务。
    • Metadata Agent: 运行在网络节点上,允许虚拟机通过特殊的元数据地址获取实例信息(如用户数据、密钥对等)。
  3. Network (网络): 一个隔离的二层广播域,类似于传统网络中的 VLAN。

  4. Subnet (子网): 一个 IP 地址块,定义了网络中的 IP 地址范围、网关、DNS 等信息。

  5. Port (端口): 虚拟机网卡、路由器接口等都抽象为 Port,每个 Port 都有一个 MAC 地址和一个 IP 地址。

  6. Router (路由器): 连接不同网络的设备,可以实现三层路由和 NAT。

  7. Security Group (安全组): 实现实例级别的防火墙功能,控制进出端口的流量,默认是“允许所有”的策略。


常见网络模型/部署模式

根据需求和规模,OpenStack 有几种典型的网络部署模型,最核心的区别在于虚拟机如何访问外部网络(浮动 IP)以及网络节点的角色

Provider Networks (供应商网络 / Flat 网络)

这是最简单、最直接的模式。

  • 工作原理:
    • Neutron 直接使用底层的物理网络(比如物理交换机上已经划分好的 VLAN)。
    • 创建的 Neutron Network 直接映射到一个物理网络接口(如 br-ex)。
    • 虚拟机的流量直接通过物理交换机路由到外部网络。
  • 特点:
    • 优点: 配置简单,性能高,因为流量几乎不经过虚拟化处理。
    • 缺点: 不灵活,无法实现多租户网络隔离,所有租户的实例都处于同一个物理网络中。
    • 适用场景: 小型测试环境、或者对网络隔离要求不高的简单私有云。
  • NAT: 通常不使用 Neutron 的 L3 Agent 和 Floating IP,实例直接使用物理网络的 IP 地址。

Self-Service Networks (自服务网络 / 私有网络)

这是最常用、功能最强大的模式,也是 OpenStack 云的核心价值所在,它允许租户创建自己完全隔离的私有网络。

在这种模式下,通常会结合使用 VLANOverlay (如 VXLAN) 技术来实现多租户网络隔离。

  • 工作原理:
    1. 创建私有网络: 租户创建一个或多个隔离的 Neutron Network(通过 VLAN 或 VXLAN 实现)。
    2. 连接实例: 实例连接到这个私有网络,获得私有 IP 地址。
    3. 创建路由器: 租户创建一个 Neutron Router,将其私有网络接口连接到一个外部网络(通常是 Provider Network)。
    4. 获取浮动 IP: 租户为 Router 的外部接口申请一个浮动 IP(来自外部网络的 IP 地址池)。
    5. 访问外部网络: 实例通过 Router 的 SNAT (源地址转换) 访问外部网络,所有出站流量的源 IP 都会被替换成浮动 IP。
    6. 外部访问实例: 当外部流量发往浮动 IP 时,Router 会通过 DNAT (目标地址转换) 将流量转发到目标实例的私有 IP。
  • 特点:
    • 优点: 完全的网络隔离,多租户支持,灵活的 IP 地址管理,是构建公有云和私有云的标准。
    • 缺点: 配置相对复杂,因为涉及多个组件(Router, Agent, NAT 等),性能有一定损耗。
    • 适用场景: 几乎所有生产环境,特别是需要多租户隔离的场景。

根据网络节点的部署方式,Self-Service Networks 又可以细分为两种经典架构:

a. Legacy Networking (传统网络)

这是 Neutron 早期广泛使用的架构,网络节点承担了所有关键的网络功能。

  • 网络节点角色:
    • L3 Agent: 负责路由和 NAT。
    • DHCP Agent: 负责提供 DHCP 服务。
    • L2 Agent: 负责处理 VLAN 标签。
  • 流量路径:
    • 东西向流量 (East-West): 实例之间的通信通常只发生在计算节点之间,通过 L2 Agent 处理。
    • 南北向流量 (North-South): 实例访问外部网络的流量必须经过网络节点,数据包从计算节点 -> 网络节点(进行 SNAT/DNAT)-> 外部网络。
  • 缺点: 网络节点成为单点故障性能瓶颈,所有南北向流量都汇集于此。

b. DVR (Distributed Virtual Router) 分布式虚拟路由器

为了解决传统网络架构中网络节点的瓶颈问题,Neutron 引入了 DVR。

  • 工作原理:
    • L3 Agent 的功能被分发到每个计算节点上。
    • 每个计算节点上都有一个虚拟路由器实例,处理本地上出站流量的 SNAT
    • DNAT 流量仍然需要集中处理,但只发生在第一次进入网络节点时,之后会通过隧道直接分发到目标计算节点。
  • 特点:
    • 优点:
      • 消除单点故障: 没有中心化的路由瓶颈。
      • 提升性能: 大部分南北向流量(尤其是出站)不再经过网络节点,直接从计算节点发出,大大降低了网络节点的负载和延迟。
      • 可扩展性更好: 随着计算节点增加,路由处理能力也随之线性增长。
    • 缺点: 配置更复杂,需要确保所有计算节点都启用了 DVR 功能。
    • 适用场景: 所有推荐的生产环境,特别是对网络性能和可用性要求高的场景。

高级网络特性

除了上述基本模型,Neutron 还提供了一些高级网络功能:

  1. LBaaS (Load-Balancer as a Service): 提供负载均衡服务,可以将流量分发到多个后端实例,实现高可用和扩展性。
  2. FWaaS (Firewall as a Service): 提供网络级别的防火墙,可以设置防火墙策略来保护整个子网或路由器。
  3. VPNaaS (VPN as a Service): 提供站点到站点(Site-to-Site)或远程访问(Remote Access)的 VPN 功能,用于安全地连接 OpenStack 云和外部网络。
  4. SR-IOV (Single Root I/O Virtualization): 一种硬件辅助的虚拟化技术,它允许虚拟机直接通过物理网卡的硬件功能进行网络通信,绕过软件交换机,从而获得接近物理网络的性能,适用于对网络延迟和吞吐量要求极高的场景(如 HPC、金融交易)。

总结与选择建议

网络模式 核心特点 适用场景 推荐度
Provider Networks 简单直接,性能高,无隔离 小型测试、无隔离需求的环境 ⭐⭐
Self-Service (Legacy) 多租户隔离,功能全,但网络节点是瓶颈 早期生产环境,或 DVR 无法使用的场景 ⭐⭐⭐
Self-Service (DVR) 多租户隔离,高性能,高可用,无单点故障 所有现代生产环境的首选 ⭐⭐⭐⭐⭐
SR-IOV 接近物理网络的性能,硬件辅助 HPC、高性能数据库、低延迟交易等特殊场景 ⭐⭐⭐⭐ (在特定场景下)

如何选择?

  • 如果你只是想快速搭建一个 OpenStack 环境,测试一下基本功能:从 Provider Networks 开始,最简单。
  • 如果你要构建一个正式的生产环境,需要支持多租户必须选择 Self-Service Networks
  • 在选择 Self-Service Networks 时强烈推荐使用 DVR 架构,它能为你带来更好的性能、可用性和可扩展性。
  • 如果你的应用对网络性能有极致要求:考虑在特定实例上启用 SR-IOV,但这通常会增加硬件成本和配置复杂性。
分享:
扫描分享到社交APP
上一篇
下一篇