第32周:隧道协议深入
目标:理解 VXLAN、GENEVE、GRE 等隧道协议的工作原理,能够在多主机环境中配置跨主机二层网络。
1. 隧道协议概览
1.1 为什么需要隧道?
1 | 云网络问题: |
1.2 主要隧道协议对比
1 | ┌────────┬──────────┬──────────┬──────────┬─────────────┐ |
2. VXLAN 详解
2.1 VXLAN 原理
1 | VXLAN(Virtual Extensible LAN)= L2 over L3 over UDP |
2.2 VXLAN 报文格式
1 | ┌─────────────────────────────────────────────────────────┐ |
2.3 VTEP 工作流程
1 | 封装(Ingress VTEP): |
2.4 VXLAN 控制平面
1 | VXLAN 控制平面学习方式: |
3. 配置 VXLAN 隧道
3.1 主机环境
1 | 实验环境: |
3.2 Host A 配置
1 |
|
3.3 Host B 配置
1 |
|
3.4 测试
1 | # 在 Host A 的 c1 中 ping Host B 的 c2 |
6.5 动态 VTEP(未知目的)
1 | # 启用学习模式(默认) |
6.6 使用 EVPN BGP 学习
1 | # 安装 FRR |
4. Geneve 详解
4.1 Geneve vs VXLAN
1 | Geneve(Generic Network Virtualization Encapsulation)= 灵活的元数据扩展 |
4.2 Geneve TLV
1 | TLV(Type-Length-Value): |
4.3 Geneve 配置
1 | # 创建 Geneve |
5. GRE 协议
5.1 GRE 格式
1 | GRE(Generic Routing Encapsulation)= 简单 IP 隧道 |
5.2 GRE 配置
1 | # 创建 GRE 隧道 |
5.3 GRE vs VXLAN vs Geneve
| 特性 | GRE | VXLAN | Geneve |
|---|---|---|---|
| 默认端口 | 协议 47 | 4789 | 6081 |
| VNI 隔离 | 无 | 24 bit | 24 bit |
| 元数据 | 无 | 极少 | TLV |
| 硬件卸载 | 一般 | 好 | 良好 |
| Cloud 使用 | 少 | 多 | 多(Cilium) |
6. NVGRE
1 | NVGRE(Network Virtualization using GRE): |
7. 隧道与 MTU
7.1 MTU 规划
1 | 包大小计算: |
7.2 配置巨型帧
1 | # 物理网卡(两端都要配置) |
8. 抓包分析 VXLAN
8.1 Wireshark 解码
1 | # 抓 VXLAN |
8.2 观察转发过程
1 | # 1. 查看 fdb(forwarding database) |
8.3 常见问题排查
1 | # === VXLAN 不通 === |
9. 实践:完整跨主机 VXLAN 实验
1 |
|
10. 主流开源实现
1 | VXLAN 实现: |
- 本文作者: CoderSong
- 本文链接: https://jack-song-gif.github.io/2026/06/04/第32周:隧道协议深入/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!