1、网络虚拟化概述:传统网络痛点、Overlay网络概念、隧道技术简介(GRE/VXLAN/Geneve)
1.1 传统网络的「硬伤」——我踩过的那些坑
聊网络虚拟化之前,咱们先看看传统网络到底哪里「疼」。
我记得刚入行那会儿,在一家数据中心做运维。有一次业务部门要扩容,需要把几十台虚拟机迁移到另一组物理机上。听起来简单对吧?但问题来了——新物理机和旧物理机不在同一个二层网络里。这意味着什么?IP地址得改,网关得调,业务还得中断。
传统网络的核心痛点,说白了就三个:
- 物理边界僵化:VLAN最多4096个,大型云平台根本不够用。而且VLAN依赖物理交换机配置,改一次拓扑就得找网络组审批,流程走三天。
- 多租户隔离困难:每个租户想要独立的广播域、独立的IP地址空间。传统网络里,你只能靠VLAN硬切,但VLAN数量有限,而且广播风暴会互相影响。
- 虚拟机迁移受限:迁移必须保持IP不变、MAC不变。这就要求源和目标必须在同一个二层域内。但二层域越大,广播域越大,网络性能越差。我见过一个客户,为了迁几台VM,硬是把二层网络拉到了跨机房——结果广播风暴把整个网络打瘫了。
核心矛盾:物理网络是「硬」的,而业务需求是「软」的。传统网络无法灵活适应虚拟化环境下的动态变化。
3.2 Overlay网络——给物理网络「套个壳」
那怎么办?业界想了个办法:Overlay网络。
你想想看,物理网络的问题在于它太「实在」了——每台交换机、每个端口都是固定的。那如果我们不直接依赖物理网络,而是在它之上再构建一层虚拟网络呢?
Overlay网络的核心思想就是:把物理网络当成「传输管道」,在它上面用软件定义的方式构建逻辑网络。物理网络只负责转发数据包,而逻辑网络负责定义租户、隔离、策略。
我习惯用一个比喻来解释:物理网络就像高速公路,Overlay网络就像在高速公路上跑的「虚拟货车」。货车里装的是什么?是租户的业务流量。高速公路不关心货车里装了什么,它只负责把货车从A运到B。
Overlay网络有几个关键好处:
- 解耦:虚拟网络和物理网络完全解耦。物理网络升级、拓扑变化,不影响虚拟网络。
- 灵活:一个Overlay网络可以跨越多个物理子网、甚至跨数据中心。
- 多租户:每个租户可以有独立的虚拟网络,IP地址可以重叠,互不干扰。
我的经验:在实际项目中,Overlay网络最大的价值是「快速交付」。以前给一个新租户开通网络,需要配VLAN、改ACL、调路由,至少半天。用了Overlay之后,点几下鼠标,几分钟搞定。
3.3 隧道技术——Overlay的「运输工具」
Overlay网络怎么实现?靠的是隧道技术。
隧道技术,说白了就是把一个数据包「装进」另一个数据包里。原始数据包(比如VM发出的以太网帧)被封装成一个新数据包的负载,然后通过物理网络传输。到达目的地后,再解封装还原出原始数据包。
目前主流的隧道技术有三种:GRE、VXLAN、Geneve。我一个个说。
3.3.1 GRE——老牌隧道,简单粗暴
GRE(Generic Routing Encapsulation)是最早的隧道协议之一。它很简单:把原始数据包直接封装在IP包中,中间加一个GRE头部。
GRE的优点:
- 简单,几乎所有的网络设备都支持
- 可以封装多种协议(IPv4、IPv6、以太网等)
GRE的缺点:
- 没有加密,数据是明文传输的
- 没有多租户标识,无法区分不同租户的流量
- 头部开销较大(4字节头部 + 可选字段)
避坑指南:我曾经在一个项目中用GRE做跨数据中心互联,结果发现GRE隧道不支持多路径负载均衡。因为GRE包的源目IP是固定的,物理网络无法做ECMP。后来我们改用了VXLAN才解决。
3.3.2 VXLAN——数据中心的主流选择
VXLAN(Virtual Extensible LAN)是目前数据中心里最常用的Overlay隧道技术。它解决了GRE的两个核心问题:
- 24位VNI:支持1600万个虚拟网络,彻底解决了VLAN数量限制
- MAC-in-UDP封装:利用UDP的源端口做哈希,实现多路径负载均衡
VXLAN的封装格式:
+-------------------+-------------------+-------------------+-------------------+
| 外层MAC头部 | 外层IP头部 | UDP头部 | VXLAN头部 |
| (14字节) | (20字节) | (8字节) | (8字节) |
+-------------------+-------------------+-------------------+-------------------+
| 内部MAC头部 | 内部IP头部 | 负载数据 | FCS |
| (14字节) | (20字节) | | (4字节) |
+-------------------+-------------------+-------------------+-------------------+
VXLAN头部中的VNI(VXLAN Network Identifier)就是用来区分不同租户的。每个租户一个VNI,互不干扰。
关键点:VXLAN依赖UDP封装,所以物理网络需要支持UDP的ECMP(等价多路径)。如果物理交换机不支持,VXLAN的性能会大打折扣。
3.3.3 Geneve——新一代的「瑞士军刀」
Geneve(Generic Network Virtualization Encapsulation)是较新的隧道协议,由IETF标准化。它吸收了GRE和VXLAN的优点,同时增加了灵活性。
Geneve的核心特点:
- 可变长度头部:不像VXLAN固定8字节,Geneve头部可以携带TLV(类型-长度-值)选项,支持扩展功能
- 24位VNI:同样支持1600万个虚拟网络
- UDP封装:支持多路径负载均衡
Geneve的封装格式:
+-------------------+-------------------+-------------------+-------------------+
| 外层MAC头部 | 外层IP头部 | UDP头部 | Geneve头部 |
| (14字节) | (20字节) | (8字节) | (可变长度) |
+-------------------+-------------------+-------------------+-------------------+
| 内部数据包 | FCS |
| | (4字节) |
+-------------------+-------------------+-------------------+-------------------+
Geneve的灵活性体现在哪里?举个例子:如果你想在隧道中携带一些元数据(比如安全标签、QoS标记),VXLAN做不到,但Geneve可以通过TLV选项轻松实现。
我的建议:如果你在构建新的Overlay网络,优先考虑Geneve。虽然目前VXLAN更普及,但Geneve的扩展性更好。Open vSwitch从2.5版本开始就支持Geneve了,我最近几个项目都在用。
3.4 三种隧道技术对比
| 特性 | GRE | VXLAN | Geneve |
|---|---|---|---|
| 封装方式 | IP协议47 | UDP 4789 | UDP 6081 |
| VNI位数 | 无(依赖其他机制) | 24位 | 24位 |
| 最大虚拟网络数 | 无限制(但无隔离标识) | 约1600万 | 约1600万 |
| 多路径支持 | 差(依赖IP哈希) | 好(UDP源端口哈希) | 好(UDP源端口哈希) |
| 扩展性 | 差(固定头部) | 一般(固定8字节头部) | 好(可变头部+TLV) |
| 标准化 | RFC 2784 | RFC 7348 | RFC 8926 |
| Open vSwitch支持 | 支持 | 支持 | 支持(2.5+) |
3.5 小结
嗯,这一章的内容差不多了。总结一下:
- 传统网络的痛点在于僵化、隔离困难、迁移受限
- Overlay网络通过在物理网络之上构建虚拟网络来解决这些问题
- 隧道技术是Overlay网络的实现基础,GRE、VXLAN、Geneve是三种主流方案
- 我个人推荐新项目优先考虑Geneve,它的灵活性和扩展性最好
下一章,我会带大家动手配置Open vSwitch的GRE隧道。到时候咱们用实际命令说话,看看隧道到底是怎么建立起来的。