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 的控制面核心,将网络类型与实现机制彻底解耦:
1 2 3 4 5 6 7
| 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 等集中控制方案
工作流程
1 2 3 4 5 6 7 8 9
| 用户 API 请求 ↓ Neutron Server → ML2 Plugin ├── Type Driver 校验 + 存储数据库 └── Mechanism Driver RPC 通知各节点 Agent ├── L2 Agent(虚拟交换机配置) ├── L3 Agent(路由/NAT) ├── DHCP Agent(dnsmasq分配IP) └── Metadata Agent(元数据代理)
|
三、Linux Bridge 代理
数据流向
1 2 3 4 5 6 7 8 9
| VM ↓ Tap 接口(tapXXX) ← 虚拟机虚拟网卡 ↓ Linux 网桥(brqXXXX) ← 充当二层交换机 ↓ VLAN 接口(ethX.Y)或 VXLAN 接口(vxlan-Z) ← 网络隔离/隧道 ↓ 物理网卡(ethX)
|
支持范围
- ✅ Local / Flat / VLAN / VXLAN
- ❌ GRE
特点
- 架构直观,基于内核原生桥接,适合学习理解
- 技术成熟稳定,性能高效
- 不依赖额外用户态进程,资源占用低
四、Open vSwitch(OVS)代理
数据流向
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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通过监听队列获取配置指令