OpenStack Neutron网络概念

发表于
更新于
5 2.7~3.5 分钟 1227

OpenStack Neutron网络概念

一、网络模型

1、Provider Network(提供商网络)🌐

  • 定义: 直接映射到物理网络的虚拟网络,由管理员创建
  • 隔离方式: Flat(无标签)/ VLAN(802.1Q标签)
  • 特点: 依赖物理网络基础设施提供L3路由,无需虚拟路由器
  • 性能: 高,无封装开销,实例直接可达
  • 适用场景: 简单部署,物理网络直连,企业迁移环境

2、Self-Service Network(自助服务网络)🏗️

  • 定义: 完全虚拟化的Overlay网络,非特权用户可自行创建
  • 隔离方式: VXLAN(默认)/ GRE / GENEVE隧道封装
  • 特点: 多租户隔离,需虚拟路由器连接外部网络
  • NAT机制: SNAT(出站) + Floating IP / DNAT(入站)
  • 扩展性: VXLAN支持1600万+网络段,远超VLAN的4096限制

3、路由器(Router)🔀

  • 实现: 基于Linux网络命名空间(Network Namespace)的虚拟L3设备
  • 管理: 由 L3 Agent(neutron-l3-agent)在网络节点上运行
  • 功能:
    • 路由Self-Service网络间的流量
    • 连接Self-Service网络与外部/Provider网络
    • 执行SNAT和DNAT转换
  • 高可用: 支持DVR(分布式虚拟路由)和L3 HA(VRRP主备)

4、安全组(Security Group)🛡️

  • 定义: 实例端口级别的有状态虚拟防火墙
  • 默认策略: 入站皆拒,出站皆允
  • 实现: 基于iptables规则(或OVS流规则)在计算节点执行
  • 特性:
    • 支持协议/端口/IP/安全组级别规则
    • 自动添加反欺骗规则(防MAC/IP伪造/Rogue DHCP)
    • 每个项目有默认安全组,未指定则自动应用

二、ML2(Modular Layer 2)核心插件架构

架构概览

ML2 是 Neutron 的控制面核心,将网络类型实现机制彻底解耦:

ML2 Plugin
├── Type Manager(类型管理)
│   ├── Flat / Local / VLAN
│   └── VXLAN / GRE / GENEVE
└── Mechanism Manager(机制管理)
    ├── 基于代理: Linux Bridge / Open vSwitch / L2POP
    └── 基于控制器: OpenDaylight / OVN / VMware NSX

类型驱动(Type Driver)

类型 说明 隔离范围
Flat 无标签网络 无隔离
Local 仅单节点 单宿主机
VLAN 802.1Q标签 4096个
VXLAN 24位VNI隧道 1600万+
GRE IP-over-IP隧道 无限制
GENEVE 灵活可扩展封装 无限制

机制驱动(Mechanism Driver)

  • Linux Bridge: 基于内核原生桥接,简单稳定
  • Open vSwitch: 基于OpenFlow流规则,功能丰富
  • L2 Population: 优化广播流量,提升VXLAN/GRE性能
  • SDN控制器: OVN / OpenDaylight / NSX 等集中控制方案

工作流程

用户 API 请求
    ↓
Neutron Server → ML2 Plugin
    ├── Type Driver 校验 + 存储数据库
    └── Mechanism Driver RPC 通知各节点 Agent
        ├── L2 Agent(虚拟交换机配置)
        ├── L3 Agent(路由/NAT)
        ├── DHCP Agent(dnsmasq分配IP)
        └── Metadata Agent(元数据代理)

三、Linux Bridge 代理

数据流向

VM
  ↓
Tap 接口(tapXXX)           ← 虚拟机虚拟网卡
  ↓
Linux 网桥(brqXXXX)        ← 充当二层交换机
  ↓
VLAN 接口(ethX.Y)或 VXLAN 接口(vxlan-Z)  ← 网络隔离/隧道
  ↓
物理网卡(ethX)

支持范围

  • ✅ Local / Flat / VLAN / VXLAN
  • ❌ GRE

特点

  • 架构直观,基于内核原生桥接,适合学习理解
  • 技术成熟稳定,性能高效
  • 不依赖额外用户态进程,资源占用低

四、Open vSwitch(OVS)代理

数据流向

VM
  ↓
Tap 接口(tapXXX)           ← 虚拟网卡
  ↓
qbr(Linux网桥)              ← 安全组iptables过滤
  ↓
veth对(qvbXXX ↔ qvoXXX)    ← 连接Linux网桥与OVS
  ↓
br-int(集成网桥)            ← 核心虚拟交换机
  ↓
br-ethX(物理连接网桥)       ← Flat/VLAN网络
  或 br-tun(隧道网桥)       ← VXLAN/GRE/GENEVE网络
  ↓
物理网卡(ethX)

核心机制

  • 所有虚拟机连接至同一 br-int 集成网桥
  • 通过 OpenFlow 流规则 进行VLAN转换和隧道封装
  • 无需VLAN子接口,流规则可动态下发

支持范围

  • ✅ Local / Flat / VLAN / VXLAN / GRE / GENEVE(全支持)

五、Linux Bridge vs OVS 对比

特性 Linux Bridge Open vSwitch
架构复杂度 简单 复杂
网络类型支持 Local/Flat/VLAN/VXLAN 全部支持
GRE/GENEVE
流规则控制 不支持 OpenFlow
SDN集成 困难 容易
安全组实现 iptables iptables / OVS原生流表
业界采用率 较低 主流

六、Neutron SDN 思想解析

Neutron 的 SDN 思想核心:控制面与数据面分离

传统网络 vs Neutron SDN 映射

传统网络 Neutron 实现
物理交换机/路由器 OVS / Linux Bridge 虚拟交换机
物理网线 Tap / VETH / PATCH 端口
VLAN子接口 OVS 流规则 / VXLAN 隧道
物理防火墙 安全组(iptables / OVS流表)
路由表 L3 Agent 网络命名空间
DHCP服务器 DHCP Agent(dnsmasq)

关键技术注解

  • 网络命名空间 💡: Linux内核特性,隔离网络栈(接口、路由表、iptables),Neutron用它实现路由器隔离
  • VXLAN隧道 💡: MAC-in-UDP封装,将二层帧通过三层网络传输,解决VLAN数量限制和跨物理机通信问题
  • OpenFlow流表 💡: OVS的核心,定义数据包匹配规则和动作(转发/丢弃/修改),实现可编程网络
  • RPC消息队列 💡: Neutron Server与各Agent间的通信纽带,Agent通过监听队列获取配置指令

0
上一篇 OpenStack Swift 对象存储服务概念
下一篇 OpenStack架构详解:四大节点分工与多节点协同