主题
路线图
全部六个部分、19 个实验已经完成。每章的命令都在真实环境里跑过,每个实验都有 verify.sh 自动核对。
第 0 部分 · 起步
理解 OVS 是什么、由哪几个进程组成,并把实验环境搭起来。
- 本教程怎么用
- 为什么需要虚拟交换机 —— 和 Linux bridge 逐项对比,说清 OVS 多出来的是什么
- OVS 的三个进程 —— ovsdb-server / ovs-vswitchd / 内核 datapath,以及一个包的完整旅程
- 搭建实验环境 —— netlab + containerlab + 容器化的 OVS
第 1 部分 · 基础
把交换机的基本功搞扎实,并第一次看见慢路径和快路径。
| 章节 | 实验目录 | 核心内容 |
|---|---|---|
| 实验 1:第一个网桥 | 01-first-bridge | add-br / add-port、MAC 学习、两套端口编号、慢路径实证 |
| 实验 2:OVSDB 数据模型 | 02-ovsdb-model | 四张表的引用链、get/find/external_ids、什么会持久化 |
| 实验 3:端口类型 | 03-port-types | 普通 / internal / patch,patch 为什么不是 Linux 设备 |
| 实验 4:慢路径与快路径 | 04-slow-fast-path | upcall 全链路、megaflow 掩码、亲手制造缓存膨胀 |
第 2 部分 · OpenFlow
从"配置交换机"转向"给交换机编程"。这是 OVS 和传统网桥的分水岭。
| 章节 | 实验目录 | 核心内容 |
|---|---|---|
| 实验 5:流表模型 | 05-openflow | 匹配字段、优先级、动作、超时、cookie |
| 实验 6:用流表替掉 NORMAL | 05-openflow | 手写二层转发,理解 NORMAL 到底做了什么 |
| 实验 7:多级流表 | 06-pipeline | goto_table 与 resubmit 的语义差异 |
| 实验 8:ofproto/trace 精讲 | 06-pipeline | 排错最重要的一个命令 |
第 3 部分 · 二层进阶
| 章节 | 实验目录 | 核心内容 |
|---|---|---|
| 实验 9:VLAN | 07-vlan | access / trunk、按 VLAN 分域的 MAC 表、隔离的实现方式 |
| 实验 10:用流表手写 VLAN | 09-vlan-flows | push_vlan / pop_vlan,标签的一生 |
| 实验 11:链路聚合 | 08-bond | bond 模式对比、LACP、断链切换实测 |
| 实验 12:端口镜像与流量采样 | 10-mirror | Mirror / sFlow / NetFlow,@ 符号的用法 |
第 4 部分 · Overlay 网络
| 章节 | 实验目录 | 核心内容 |
|---|---|---|
| 实验 13:隧道原理 | 11-vxlan | 封装格式、四种隧道类型对比、MTU 陷阱 |
| 实验 14:打通 VXLAN | 11-vxlan | 抓包看两层结构、封装是一个 datapath 动作 |
| 实验 15:多租户隔离 | 12-multitenant | 一租户一 VNI,以及生产级的 key=flow 方案 |
第 5 部分 · 高级特性
| 章节 | 实验目录 | 核心内容 |
|---|---|---|
| 实验 16:连接跟踪 | 13-conntrack | ct_state、commit 的意义、recirculation |
| 实验 17:QoS 与限速 | 14-qos | policing vs shaping 的实测差异 |
| 实验 18:外部控制器 | 15-controller | OpenFlow 连接、fail_mode 的两种行为 |
| 实验 19:用户态 datapath | 16-userspace-dp | netdev 模式、四级缓存、DPDK 入门 |
| OVN 是什么 | —— | 把前面所有零件组装成完整系统 |