1. OVS 前世今生:从虚拟化到 SDN 的演进

聊 OVS 之前,我想先问大家一个问题:为什么我们需要一个专门为虚拟化环境设计的交换机?

这个问题,我十年前刚接触云计算时也问过自己。那时候数据中心里跑的还是物理服务器,交换机是思科、华为的天下。但虚拟化一普及,情况全变了——一台物理机里跑几十台虚拟机,它们之间要通信,总不能每台 VM 都拉根网线到物理交换机吧?

嗯,这就是 OVS 诞生的根本原因。

1.1 从虚拟化到 SDN 的演进

我们先捋一下时间线。

虚拟化早期(2005-2010):那时候 VMware 是老大,KVM 刚起步。虚拟机之间的流量怎么处理?最简单的方式就是通过宿主机内核做桥接。Linux Bridge 就是干这个的——它把物理网卡和虚拟网卡桥接在一起,让 VM 能跟外界通信。

但问题来了:Linux Bridge 太简单了。它就是个二层转发工具,不支持隧道封装(VXLAN、GRE),不支持 OpenFlow,更别提 SDN 了。你想想看,那时候云计算厂商要搞多租户隔离,只能靠 VLAN,但 VLAN 只有 4096 个,根本不够用。

SDN 兴起(2010-2015):OpenFlow 协议的出现,让网络控制面和数据面分离了。控制面集中到控制器上,数据面只负责转发。这个理念一出来,大家发现——Linux Bridge 完全跟不上节奏。它不支持流表,不支持协议扩展,说白了就是个「死脑筋」的交换机。

这时候,OVS 出现了。

核心观点:OVS 不是 Linux Bridge 的替代品,而是为 SDN 和虚拟化网络量身打造的新物种。它生来就带着 OpenFlow 的基因,支持 VXLAN、GRE、Geneve 等隧道技术,还能跟 OpenStack、Kubernetes 无缝集成。

1.2 OVS 的诞生背景与定位

OVS 是 2009 年由 Nicira Networks(后来被 VMware 收购)开源的。我记得当时有个同事跟我说:「这玩意儿能火,因为它解决了虚拟化网络最头疼的问题——多租户隔离和流量可视化。」

OVS 的定位很明确:

  • 面向虚拟化环境:运行在宿主机上,管理 VM 之间的流量
  • 支持 SDN 架构:通过 OpenFlow 协议与控制器通信
  • 高性能转发:支持内核态和用户态两种数据路径
  • 丰富的隧道协议:VXLAN、GRE、STT、Geneve 等

说白了,OVS 就是虚拟化网络里的「瑞士军刀」。它既能当普通的二层交换机用,也能做分布式路由器,还能实现 ACL、QoS、流量镜像这些高级功能。

个人经验:我在做 OpenStack 网络方案时,遇到过租户网络隔离的问题。用 VLAN 只能支持 4096 个网络,但 OVS + VXLAN 可以支持 1600 万个。这个差距,你想想看有多大。

1.3 OVS 与 Linux Bridge 的对比

很多新手会问:「既然 Linux 内核已经有 Bridge 了,为什么还要用 OVS?」

这个问题,我建议从以下几个维度来看:

对比维度 Linux Bridge Open vSwitch
功能定位 简单的二层桥接 可编程的虚拟交换机
协议支持 仅支持 VLAN VXLAN、GRE、Geneve、STT 等
控制面 内核自带,不可编程 支持 OpenFlow、OVSDB
流表 支持多级流表、匹配+动作
性能 内核态,延迟低 内核态+用户态,DPDK 加速
可观测性 基本没有 sFlow、NetFlow、IPFIX、SPAN
多租户 仅 VLAN VXLAN/Geneve 大规模隔离
云平台集成 需手动配置 OpenStack、Kubernetes 原生支持

看到这个表格,你应该明白了:Linux Bridge 适合简单的场景,比如家庭实验室、小型虚拟化环境。但一旦涉及到多租户、SDN、自动化编排,OVS 就是唯一的选择。

避坑指南:我曾经在一个项目中,为了省事直接用 Linux Bridge 搭建了 50 台 VM 的网络。结果后期要加 VXLAN 隧道,发现 Linux Bridge 根本不支持,只能全部迁移到 OVS。那次迁移折腾了整整两天,教训深刻啊。

1.4 我的选择建议

如果你问我什么时候用 Linux Bridge,什么时候用 OVS,我的建议是这样的:

  • 用 Linux Bridge:单机环境、VM 数量少于 10 台、不需要隧道、不需要 SDN 控制
  • 用 OVS:多租户环境、需要 VXLAN/GRE 隧道、对接 OpenStack/K8s、需要流量监控

说白了,OVS 是为「云」而生的。如果你在做云计算、容器网络、SDN 相关的工作,OVS 是你绕不开的技术栈。

嗯,这一章我们就聊到这里。下一章我会深入 OVS 的系统架构,带你看看它的核心组件是怎么协同工作的。