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隧道。到时候咱们用实际命令说话,看看隧道到底是怎么建立起来的。