Neutron 是 OpenStack 九大核心服务里公认最难的一个——但拆开看它的地基就是四个 Linux 网络虚拟化技术网桥、VLAN 与 VXLAN、iptables、网络命名空间主体只有「概念 架构 流量」三件事。这篇讲清楚物理网络为什么不够用、Neutron 的三层架构怎么分工、一个数据包从虚拟机发出去要穿过哪些设备建网络、连路由的实操见第 2 篇。一、先分清物理网络 vs 虚拟网络物理服务器虚拟化以后一台机器里住着一堆虚拟机网络这件事也跟着被「虚拟」了一份物理世界虚拟世界说明Switch 物理交换机vSwitch 虚拟交换机物理交换机有 cisco、华为等品牌虚拟交换机有 linuxbridge、OVS、OVN 等软件NIC 网卡vNIC 虚拟网卡虚拟机的「网卡」接在 vSwitch 的端口上Neutron 最核心的工作就是对二层物理网络的抽象与管理各个 vNIC 连接在 vSwitch 的端口上vSwitch 再通过物理服务器的物理网卡访问外部物理网络。理解了这条链后面所有概念都是在这条链上加功能。二、Linux 网络虚拟化四大件Neutron 自己不发明网络技术它把 Linux 系统上现成的网络虚拟化技术组织起来用。四大件分三类2.1 网卡虚拟化TAP / TUN / VETH-PAIR设备层级特点TAP二层模拟一个二层网络设备可以接收和发送以太网帧TUN三层模拟一个三层网络设备只操作IP 包VETH-PAIR成对一端发出的网包会被另一端接收像一根「虚拟网线」三句话理解TAP/TUN 在主机内虚拟了一套网络接口和物理接口没区别——可以配 IP、可以路由流量只是流量只在主机内流通TUN 只操作三层的 IP 包TAP 操作二层的以太网帧——记住「TAP 二层、TUN 三层」VETH-PAIR 成对出现、一端进一端出专门用来连接不同的虚拟网络组件——连 Linux Bridge、连 OVS、连容器OpenStack Neutron 就是用它构建复杂网络拓扑的。2.2 交换机虚拟化Linux Bridge 与 Open vSwitchLinux Bridge工作于二层的网络设备功能类似物理交换机。Bridge 可以绑定 Linux 上的其他网络设备eth0、tap0、tap1……把它们虚拟化成自己的端口——相当于往物理交换机上插网线收到数据包后交给 br0br0 根据MAC 地址与端口的映射关系转发工作在二层所以绑上去的从设备不需要再设 IP只需给 br0 设 IP——即使 eth0 原本有自己的 IP绑进 bridge 后也会失效只有目的地址为 br0 IP 的包才会被 Linux 接收管理命令brctlbrctl addbr BRIDGE建桥、brctl addif BRIDGE DEVICE加接口。Open vSwitchOVS产品级的虚拟交换机。Linux Bridge 适合小规模、主机内部通信OVS 适合大规模、多主机间通信华为 FusionCompute 的 DVS 就基于 OVS为什么有了 Linux Bridge 还要 OVS因为 OVS 让云环境的虚拟网络管理、状态和流量监控更容易可以像配置物理交换机一样把 VM 分到不同 VLAN、给端口配 QoS还支持 NetFlow、sFlow 等标准管理接口OVS 在各种虚拟化平台上实现了分布式虚拟交换机——一台物理服务器上的 vSwitch 可以透明地与另一台上的 vSwitch 连在一起管理命令ovs-vsctladd-br建桥、add-port加端口、show查看配置、dump-flows查流表。2.3 网络隔离Network NamespaceNetwork Namespace网络命名空间是 Linux 的网络隔离机制每个 namespace 有自己独立的网卡、路由表。它在 Neutron 里的重要性Neutron 的 router 就是用 network namespace 实现的。由此产生一个经典结论——不同 network 的 subnet CIDR 可以重叠而不冲突因为不同 router 的路由表是独立的详见第四节的 subnet 部分。三、Neutron 是什么定位与功能3.1 为什么需要 Neutron传统网络管理靠管理员手工配置维护硬件设备而云环境特别是多租户场景里用户随时可能创建、修改、删除网络连通性和隔离没法靠手工保证。「软件定义网络SDN」的灵活性和自动化优势使它成为云时代网络管理的主流。Neutron 的设计目标是实现「网络即服务Networking as a ServiceNaaS」设计上遵循基于 SDN 实现网络虚拟化的原则实现上充分利用 Linux 系统的各种网络技术。3.2 四大功能功能说明二层交换 Switching实例通过虚拟交换机接入虚拟二层网络支持 Linux Bridge 和 OVS可创建 VLAN 网络和基于隧道的 Overlay 网络VxLAN、GRE三层路由 Routing虚拟路由器router实现跨网段通信通过 IP forwarding、iptables 实现路由和 NAT负载均衡 LBaaSGrizzly 版本首次引入 Load-Balancing-as-a-Service把负载分发到多个实例不同实现以 Plugin 形式集成目前默认是 HAProxy防火墙 Firewalling两条路线安全组Security Group用 iptables 限制进出实例的包FWaaS限制进出虚拟路由器的包注意防火墙两条线的区别安全组管「实例的口」FWaaS 管「路由器的口」——都是 iptables 实现管的对象不同。四、核心概念Network / Subnet / Port / Router / 两种 IP4.1 Network隔离的二层广播域Network 是一个隔离的二层广播域支持五种类型类型特点记忆点local与其他网络和节点隔离同节点同网络才能通单机测试用flat无 VLAN tagging可跨节点不打标签VLAN802.1q tagging二层广播域可跨节点应用最广泛VxLAN隧道 overlay 网络用 VNIsegmentation ID区分二层包封装成UDP传输克服 VLAN 与物理网络设施的限制GRE与 VxLAN 类似的 overlay用IP封装不是 UDP和 VxLAN 成对记三条补充规则不同 network 之间在二层上是隔离的——比如 VLAN 网络会给 network A、B 分不同的 VLAN IDA 的广播包不会跑到 B但借助路由器不同 network 在三层上可以通信Network 必须属于某个 Project租户Project 与 Network 是1 对多实现选择上Linux Bridge 只支持 VxLAN不支持 GREOVS 两者都支持。4.2 SubnetIP 地址段Subnet 是 IPv4 或 IPv6 地址段实例的 IP 从 subnet 中分配每个 subnet 要定义地址范围和掩码。Network 与 Subnet 是1 对多一个 subnet 只属于一个 network一个 network 可以有多个 subnet不同 IP 段但CIDR 不能重叠。同一 network 内10.10.1.0/24 和 10.10.1.0/24 两个 subnet——无效CIDR 重叠不同 network 间两个 network 各自一个 10.10.1.0/24——有效。CIDR 重叠为什么不会冲突因为Neutron 的 router 用 network namespace 实现每个 router 有自己独立的路由表两个 subnet 走同一个 router只有指定的一个可被路由走不同 router各自都能路由。4.3 Port虚拟交换机上的端口Port 可以看做虚拟交换机上的一个端口上面定义了MAC 地址和 IP 地址。实例的虚拟网卡 VIFVirtual Interface绑定到 port 时port 把 MAC 和 IP 分配给 VIF。Subnet 与 Port 是1 对多一个 port 必须属于某个 subnet一个 subnet 可以有多个 port。4.4 资源概念链背下来Project 1:m Network 1:m Subnet 1:m Port 1:1 VIF (m:1 Instance)4.5 Fixed IP 与 Floating IPFixed IPFloating IP来源从所属 subnet 分配从外部网络External分配用途实例间内部通信外部访问实例变化创建即固定动态绑定/解绑映射到 Fixed IP4.6 安全组Security Group通过 iptables 限制进出实例的网络包default 安全组的默认行为允许所有出口流量入口只放「来自内部」的流量——外部默认进不来这就是实验里要自建安全组放行 ICMP/TCP 的原因实操篇展开。4.7 Provider 网络与 Self-service 网络Provider Network提供商网络由管理员创建、映射到数据中心现有物理网络的网络虚拟机直接「骑」在真实网络上Self-service Network自助网络租户自己创建的虚拟网络对外通信要经过虚拟路由器 外部网络做 SNAT/浮动 IP。五、Neutron 架构一个请求怎么变成真实网络与 OpenStack 其他服务一样Neutron 采用分布式架构由多个组件共同对外提供网络服务组件职责Neutron Server对外提供 OpenStack 网络 API接收请求并调用 Plugin 处理Plugin处理 Server 发来的请求维护 OpenStack 逻辑网络状态并调用 Agent 处理请求分Core Plugin核心二层/三层实现和Service Plugin路由器、防火墙、LBaaS 等扩展服务Agent处理 Plugin 的请求负责在 network provider 上真正实现各种网络功能Network Provider提供网络服务的虚拟或物理网络设备Linux Bridge、OVS 或支持 Neutron 的物理交换机QueueServer、Plugin、Agent 之间通过消息队列通信和调用Database存放网络状态信息Network、Subnet、Port、Router 等记住处理链路API → Server → Plugin →消息队列→ Agent → Provider——「API 管接单Plugin 管调度Agent 管干活」。六、典型场景流量到底怎么走理论部分的落脚点是会分析流量走向。两个最典型的场景组合Linux Bridge Flat/VLAN 网络实例 vNIC → TAP 设备 → Linux Bridge → 物理网卡。Flat 网络不打标签直接出物理网络VLAN 网络在桥上打 802.1q 标签后出去。Open vSwitch VXLAN 网络实例 vNIC → VETH/Br-int → OVS 打 VNI 封装成 UDP → 物理网络 → 对端 OVS 解封装。跨节点的「同网段」其实是隧道在三层网络上又拉出来的一层二层。南北向与东西向南北向流量实例与外部网络之间的流量。用 Fixed IP 时出去走 SNAT外部进来访问要用 Floating IPDNAT 映射东西向流量实例之间的流量。同一个网络里直接二层交换可达不同网络要经 router 三层路由。一句话总结二层看交换机同网三层看路由器跨网进出看 NAT南北隔离看安全组门口。七、命令速查理论篇涉及的基础命令命令关键选项/参数说明brctl addbr BRIDGE—创建 Linux Bridge需 bridge-utilsbrctl addif BRIDGE DEVICE—把设备如 eth0、tap0加入桥ovs-vsctl add-br BRIDGE—创建 OVS 网桥ovs-vsctl add-port BRIDGE PORT—往 OVS 网桥加端口ovs-vsctl show—查看 OVS 配置全貌ovs-vsctl dump-flows BRIDGE—查看流表转发规则ip netns相关—查看/操作 network namespacerouter 的实现载体 建网络、子网、路由器、浮动 IP、安全组的实操命令与界面步骤见第 2 篇《Neutron 网络管理实操》架构与九大服务总览见《OpenStack 装了却说不清它是什么》7.8 节。附关键英文全称缩写全称含义NaaSNetworking as a Service网络即服务Neutron 的设计目标SDNSoftware-Defined Networking软件定义网络NICNetwork Interface Card网卡vNIC / VIFVirtual NIC / Virtual Interface虚拟网卡 / 虚拟网络接口OVSOpen vSwitch开源虚拟交换机VNIVXLAN Network IdentifierVxLAN 的分段 IDLBaaSLoad-Balancing as a Service负载均衡服务默认 HAProxyFWaaSFirewall as a Service防火墙服务管路由器区别于安全组SNAT / DNATSource / Destination NAT源地址转换出去/ 目的地址转换浮动 IP 进来 参考资料官方文档Neutron 官方文档网络服务总览、安装与配置https://docs.openstack.org/neutron/latest/OpenStack Networking Guide基础网络、overlay 协议、网络命名空间、NAT、OVN 驱动https://docs.openstack.org/neutron/latest/admin/
企业数字化 ERP 产品动态
相关推荐
Swift 对象存储建环实验 + Ceilometer 计量:两个收尾服务 Swift 的对象存储前面只讲过概念(三兄弟、三大关键技术),这篇补上真正的重头——建环实验:给 Swift 加盘、建 Ring、验证多副本到底落在哪块盘上,删盘时又怎么安全下线。Ceilometer 则从数据采集链路讲到计量数据怎么变… · 2026/11/5 1:57:41
OpenStack 编排管理:Heat 把一台虚拟机写进模板里 OpenStack 编排管理:Heat 把一台虚拟机写进模板里 Heat 是 OpenStack 里的模板服务:把虚拟机、网络、卷这些资源写成一份声明式模板,一次描述、反复发放,改一行参数就能重发一整套环境。这篇从组件分工讲到模板的四个必写段落&… · 2026/11/5 1:57:41
OpenStack 网络管理(实操):建网络、连路由、浮动 IP 与安全组 网络管理的实操可以一次走完:先用 Dashboard 把「建网络 → 验证隔离 → 连路由 → 上外网 → 绑浮动 IP → 配安全组」走通,再用 CLI 把同一套流程复现一遍,最后看 OVN 下的现象与经典 Linux Bridge 有什么不同。每一步都给出验证方法——建… · 2026/11/5 1:57:41
可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取 简介:面向开发者与Web学习者的10分钟临时邮箱源码包,围绕短时有效邮箱地址的生成、收信与到期失效流程,适合用于注册验证、下载试用等不愿暴露真实邮箱的场景,也可作为PHP邮件系统与Web服务设计的实践项目。压缩包共492个文件&… · 2026/11/5 2:41:02
DataGrip连接达梦数据库的完整配置指南 1. 项目概述最近在帮客户做数据迁移时遇到了一个典型场景:需要连接达梦数据库(DM)进行数据操作,但发现DataGrip这款主流数据库IDE并没有预置DM的驱动配置。这其实是个挺常见的痛点——很多国产数据库或小众数据库在主流工具中缺乏原生支持。经过一番摸索… · 2026/11/5 2:41:02
Proxmox VE 7 apt-get update 100错误排查 很多人在 Proxmox VE 7 上装完系统、打开网页面板、新建第一台虚拟机,回头在 shell 里敲一句apt-get update,结果被一屏红色输出糊了一脸,最后一行写着E: Some index files failed to download...或者干脆只留一句apt-get update failed: exi… · 2026/11/5 2:41:02
DataGrip连接达梦数据库(DM8)实战指南 1. 项目概述作为一名长期与数据库打交道的开发者,我深知连接非主流数据库时的痛苦。达梦数据库(DM)作为国产数据库的代表之一,在企业级应用中越来越常见,但很多开发者第一次连接时总会遇到各种问题。本文将基于DataGrip这款强大的数据库管理工… · 2026/11/5 2:41:02
MySQL 5.7安装与配置全指南:从入门到生产环境部署 1. MySQL 5.7安装前的认知准备MySQL作为全球最流行的开源关系型数据库,5.7版本因其稳定性与性能平衡成为众多企业的首选。这个版本首次引入了原生JSON支持、多源复制等企业级功能,同时优化了InnoDB存储引擎的性能。在开始安装前,需要明确几个… · 2026/11/5 2:41:02
Blender渲染参数与出图流程:引擎、采样、光程、降噪与提速 1. 先把“渲染”这件事拆成三层来看很多人第一次点开 Blender 的渲染面板,会被密密麻麻的折叠菜单劝退,其实真正影响一张简单静物图成色的,就那么十来个参数。渲染在 Blender 里不是“一个按钮”,而是三层不同性质的东西叠在一起&… · 2026/11/5 2:40:02
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38