OpenStack Neutron网络概念
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