NSX-T 学习笔记:从 TEP 地址池理解 Overlay 数据流
文章目录9 节
在 NSX-T 的“配置 NSX → 准备主机”页面中,我遇到的第一个疑问是:已经选了 VDS 和 Overlay 传输区域,为什么还需要选择一个 IP 池?这些地址到底给谁用?
顺着这个问题继续问下去,又牵出了 TEP、VDS、N-VDS、上行链路和物理网卡。单独看每个名词似乎都能理解,放到一条数据路径中却很容易混淆。
这篇笔记保留这次学习的顺序:先弄清地址分配给谁,再看数据包如何封装,最后把虚拟交换机和物理网络接起来。文中的地址、VLAN 和网卡映射均为教学示例;本次讨论没有执行主机部署、抓包或连通性测试。不同 NSX 与 ESXi 版本的界面和支持范围,应以对应版本为准。
第一个问题:主机配置中的 IP 池给谁用?
在主机的 Overlay 配置中,这个 IP 池为 **TEP(Tunnel Endpoint,隧道端点)**分配地址。
TEP 是主机上的逻辑网络端点。跨主机传输 Overlay 流量时,发送端的 NSX 数据平面以本地 TEP 为隧道源端点进行封装,接收端则在目标 TEP 处解封装。
因此,把这里使用的池命名为 ESXi-TEP-Pool,比一个没有用途说明的名称更容易理解。NSX 界面仍将它称为“IP 池”,因为这是通用对象名称;被用于主机 Overlay 配置后,它承担的就是 TEP 地址池的作用。
它不用于给业务虚拟机分配地址,也不是 ESXi 管理地址池。如果 Edge 也需要承载 Overlay,它同样需要 TEP,但具体使用哪个池取决于 Edge 的配置,不能从主机页面的选择直接推断。
自动分配地址,不等于使用 DHCP
我最初用“类似 DHCP”来描述自己的想法:划定一段地址,让 NSX 自动选一个空闲地址使用,不想逐台手工填写。
这个理解对应的是“使用 IP 池”,并不需要独立的 DHCP 服务器。
| 配置方式 | 地址由谁分配 | 是否依赖 DHCP 协议 |
|---|---|---|
| 使用 IP 池 | NSX 从配置的范围中分配并管理占用 | 否 |
| 使用 DHCP | DHCP 服务器根据作用域和租约分配 | 是 |
例如,可以为 TEP 规划以下地址池:
子网:172.16.100.0/24
分配范围:172.16.100.100 ~ 172.16.100.150
网关:172.16.100.1(需要跨子网通信时使用)主机创建 TEP 时,NSX 从池中分配地址。地址池要按 TEP 数量预留容量,而不是按虚拟机数量计算。一台主机可能有一个或多个 TEP,具体取决于版本和上行链路、组队等配置;看到两条 uplink,不能直接断定它一定消耗两个 TEP 地址。
这段范围还需要避免与其他设备的静态地址或 DHCP 动态分配范围重叠。
为什么虚拟机已经有 IP,还需要 TEP IP?
Overlay 将虚拟网络建立在底层网络之上。业务虚拟机有自己的地址,但原始数据包仍需要通过真实的网卡和交换机,到达另一台主机。
假设两台虚拟机连接同一个 Overlay Segment,分别位于两台 ESXi 上:
| 对象 | ESXi-A | ESXi-B |
|---|---|---|
| 虚拟机 | VM-A | VM-B |
| 业务 IP | 192.168.10.11 | 192.168.10.12 |
| TEP IP | 172.16.100.101 | 172.16.100.102 |
VM-A 发给 VM-B 的原始业务包,源、目的 IP 为 192.168.10.11 → 192.168.10.12。跨主机传输时,NSX 使用 Geneve 封装,在原始报文外添加隧道信息:
外层 IP:172.16.100.101 → 172.16.100.102
┌────────────────────────────────────────────┐
│ 外层以太网、IP、UDP 和 Geneve 封装 │
│ Geneve VNI:标识所属的 Overlay 网络 │
│ │
│ 原始以太网帧 │
│ 内层 IP:192.168.10.11 → 192.168.10.12 │
│ 业务数据 │
└────────────────────────────────────────────┘可以把这个过程理解成给原来的信件再套一个运输信封。物理网络负责将外层信封送到目标 TEP,目标主机去掉封装,再将原始业务包交给 VM-B。
**内层业务 IP 保持不变。这是隧道封装,不是把业务 IP 转换成 TEP IP 的 NAT。**普通底层转发使用外层 MAC、VLAN、IP 等信息,不需要为每个 Overlay Segment 都建立对应的物理 VLAN。
把 TEP、VDS 和物理网卡放到同一条路径中
| 对象 | 所在位置 | 主要职责 |
|---|---|---|
| 虚拟机网卡 vNIC | 虚拟机侧 | 发送、接收业务数据;业务 IP 配置在虚拟机操作系统中 |
| Segment | NSX 定义的逻辑网络 | 提供逻辑二层网络,供虚拟机接入 |
| VDS 或 N-VDS | ESXi 上的主机交换机数据平面 | 连接虚拟端口与上行链路,完成主机侧转发 |
| TEP | 主机侧的逻辑隧道端点 | 为 Overlay 封装提供源、目的端点 |
| uplink | 虚拟交换机的逻辑上行出口 | 将流量关联到物理网卡 |
| vmnic | ESXi 识别的物理网卡端口 | 通过网线或光纤实际发送、接收报文 |
| 物理交换机与路由设备 | 服务器外部 | 承载底层网络转发 |
对前面的跨主机通信场景,可以按下面的顺序理解:
ESXi-A
VM-A 的 vNIC
↓
VDS/N-VDS 本地数据平面
├─ VM-A 接入 Overlay Segment
├─ NSX 确定远端目的位置
└─ 以 TEP-A 为源,封装发往 TEP-B 的 Geneve 报文
↓
uplink → 物理网卡 vmnic
↓
物理交换机/底层 IP 网络
↓
ESXi-B
物理网卡 vmnic → uplink
↓
VDS/N-VDS 本地数据平面
├─ 在 TEP-B 处解封装
└─ 交给对应的 Overlay Segment 和虚拟端口
↓
VM-B 的 vNIC图中把隧道处理列为一步,是为了说明处理过程。TEP 不是放在虚拟交换机后面的另一台设备,也不是独立物理网卡。TEP IP 属于逻辑 TEP 接口,不是直接配置在 vmnic 上。
一块物理网卡可能承载多个 VLAN 和多类流量;一个或多个 TEP 也可以服务于主机上的许多虚拟机,并不需要给每台虚拟机创建一个 TEP。
VDS 和 N-VDS 是替代关系,还是串联关系?
在这里讨论的主机交换机角色上,它们是不同实现,不能画成“VDS → N-VDS → 物理网卡”的固定串联路径。
**VDS(vSphere Distributed Switch,vSphere 分布式交换机)**由 vSphere 统一管理。在支持的 NSX 与 ESXi 版本组合中,NSX 可以使用 VDS 承载其网络功能。
**N-VDS(NSX Virtual Distributed Switch,NSX 虚拟分布式交换机)**由 NSX 管理,常见于较早的 ESXi NSX-T 部署。其他节点类型及具体版本中的支持情况需要分别判断。
本次主机配置页面的“类型”显示为 VDS,因此理解这套配置时,应沿着“NSX 使用 VDS”的路径理解,不需要额外增加一个 N-VDS。
还有一个容易误解的词是“分布式”。VDS 在多台主机之间统一管理交换配置,但每台 ESXi 都有自己的本地数据平面。虚拟机数据包不会先送到 vCenter,再由 vCenter 转发到另一台主机。
uplink 怎样接到真正的物理网卡?
主机准备页面中的上行链路映射,只展示了连接关系的一部分。例如:
NSX uplink-1 → VDS 上行链路 1
NSX uplink-2 → VDS 上行链路 2如果这台主机在 vSphere 中又将对应的 VDS 上行链路绑定到物理网卡,完整关系可能是:
NSX uplink-1 → VDS 上行链路 1 → vmnic2 → 物理交换机端口
NSX uplink-2 → VDS 上行链路 2 → vmnic3 → 物理交换机端口这是示例映射,不能从页面上的两条 uplink 名称直接推断实际绑定的是哪两块物理网卡。实际使用哪条链路、怎样分担流量以及发生故障后如何切换,还取决于上行链路配置文件中的组队策略等配置。
Overlay 传输区域与传输 VLAN 不是同一个概念
配置页面里,传输区域、上行链路配置文件和 IP 池经常挨在一起,但它们解决的问题不同。
| 配置项 | 解决的问题 |
|---|---|
| Overlay 传输区域 | 哪些传输节点具备承载该区域内 Overlay Segment 的条件 |
| 上行链路配置文件 | 上行链路如何使用,以及 TEP 流量采用什么传输 VLAN 等 |
| TEP IP 池 | 隧道端点从哪里获得 IP 地址 |
| 物理网络配置 | 这些地址之间能否真正传输封装报文 |
只加入 VLAN 传输区域,不会仅因此建立 Overlay TEP。要承载 Overlay,需要相应的 Overlay 传输区域和主机交换机、TEP 配置。
但 Overlay 的底层 TEP 网络本身仍然可以使用 VLAN。例如,用 VLAN 100 承载 TEP 流量,用 172.16.100.0/24 给 TEP 编址。这不等于把业务 Segment 改成 VLAN-backed Segment,也不等于必须为这个用途加入 VLAN 传输区域。
同一个主机交换机在受支持的配置中可以同时承载 Overlay 和 VLAN 网络。前者通过隧道跨主机传输,后者按 VLAN 网络方式转发。
配置 NSX 后,TEP 什么时候开始起作用?
可以把主机准备过程理解为三个环节:准备所需的 NSX 功能、应用主机交换机与上行配置,以及为 Overlay 创建并配置 TEP。实际组件安装或启用方式取决于版本。
当业务虚拟机接入对应的 Overlay Segment,并且需要跨主机通信时,才会走前面的隧道路径。仅仅完成 NSX 安装,不代表这台主机上的所有流量都会自动改走 TEP。
| 场景 | 典型转发路径 |
|---|---|
| 同一主机、同一 Segment 内的两台 VM | 在主机内部交换,通常不需要物理上联和跨主机隧道 |
| 不同主机、同一 Overlay Segment 内的两台 VM | 本端封装 → 底层网络 → 对端解封装 |
| 不同主机、同一 VLAN-backed Segment 内的两台 VM | 通过物理网络对应的 VLAN 转发,不使用 Overlay Geneve 隧道 |
这也解释了一个直观现象:同一台 ESXi、同一个 Segment 内的两台虚拟机,在通常的本地交换场景下,即使失去物理上联,也仍有可能互相通信。它们的数据包不需要离开主机。
地址分配成功,不代表隧道已经打通
NSX IP 池解决的是地址分配问题,不会自动替你完成物理交换机的 VLAN、路由或 MTU 配置。
要让需要通信的 TEP 真正可达,还需要对应的传输 VLAN 能通过物理端口,跨子网时有正确的路由,并保证完整路径的 MTU 能容纳封装后的报文。中间若有访问控制,也需要允许所需的隧道流量。
部署后可以依次核对主机准备状态、实际 TEP 地址、上行链路到物理网卡的映射,再验证 TEP 路径以及两台不同主机上的业务虚拟机通信。具体检查方式应匹配当前版本;这些是后续验证方向,不是本次已经取得的实测结果。
这次学习中最有用的变化,是不再把配置页面里的选项当成几个孤立名称。IP 池给 TEP 分配地址,TEP 参与隧道封装,VDS 或 N-VDS 承载主机侧转发,上行链路将流量交给物理网卡,底层网络再把封装后的包送到对端。沿着一个数据包往下看,各个配置项的位置就清楚了。