一、OVS与Patch Port概述

1.1 什么是Open vSwitch

Open vSwitch,简称OVS,是一个开源的虚拟交换机。说白了,它就是把物理交换机的功能搬到了软件里。你可以在Linux服务器上跑起来,然后像管理一台真正的交换机一样去配置它。

我个人习惯把OVS比作「网络界的瑞士军刀」。为什么这么说?因为它能干的事太多了:VLAN隔离、流量监控、QoS限速、OpenFlow流表转发……几乎你能想到的二三层网络功能,它都支持。

我记得刚接触OVS那会儿,还在用2.3版本。现在都到2.17了,功能越来越丰富。但核心思想没变——用软件定义网络,让虚拟机的网络连接变得灵活可控。

OVS有几个关键组件:

  • ovs-vswitchd:核心守护进程,负责流表匹配和转发
  • ovsdb-server:配置数据库服务,存储所有配置信息
  • ovs-vsctl:命令行工具,用来操作OVS配置
  • ovs-ofctl:管理OpenFlow流表的工具

这些组件各司其职,配合起来就能构建出复杂的虚拟网络拓扑。

1.2 Patch Port的定义与作用

Patch Port,中文叫「补丁端口」或「配对端口」。它是什么?你可以把它想象成一根虚拟网线,专门用来连接两个OVS网桥。

为什么要用Patch Port?因为OVS网桥之间默认是隔离的。两个网桥就像两个独立的交换机,互相看不见对方。但有时候,我们需要让流量从一个网桥穿到另一个网桥去。这时候,Patch Port就派上用场了。

Patch Port的工作原理很简单:

  • 它总是成对出现,一个叫peer,另一个也叫peer
  • 一个端口在网桥A上,另一个在网桥B上
  • 数据从A的Patch Port进去,直接从B的对应Patch Port出来
  • 整个过程在内核层面完成,效率极高

核心要点:Patch Port本质上是一个虚拟的直连链路。它不处理任何协议,不修改任何报文,纯粹就是「透传」。你往这头扔一个包,那头就原封不动地收到。

我曾经在项目中遇到过一个问题:两个网桥之间用VLAN Access Port连接,结果性能上不去。后来换成Patch Port,吞吐量直接翻倍。嗯,这就是内核态和用户态转发的差距。

1.3 为什么需要跨网桥互联

你可能会问:「一个网桥不够用吗?为什么要搞跨网桥互联?」

这个问题问得好。在实际生产环境中,一个网桥往往不够用。原因有几个:

  1. 隔离需求:不同业务需要不同的网络策略。比如管理网络和业务网络,安全级别不一样,放在同一个网桥里容易出问题。
  2. 性能考虑:一个网桥处理所有流量,CPU压力太大。拆成多个网桥,每个负责一部分,压力分散了,性能反而更好。
  3. 架构清晰:把物理网络、虚拟网络、存储网络分开管理,出了问题好排查。我见过不少公司,一个网桥里塞了几百个端口,查个问题跟大海捞针似的。
  4. 扩展性:业务增长时,加网桥比改现有网桥要安全得多。你想想看,动一个正在跑业务的网桥,风险有多大?

我的建议:刚开始做虚拟化网络时,别贪多。先规划好网桥的职责边界,再动手。我曾经因为图省事,把所有虚拟机都塞到一个网桥里,结果出故障时排查了整整两天。从那以后,我再也不敢偷懒了。

跨网桥互联的技术不止Patch Port一种。还有VLAN Trunk、VXLAN隧道、甚至直接用Linux Bridge桥接。但Patch Port是最轻量、最高效的方式。它不需要封装解封装,不需要查路由表,就是纯粹的「内核级直连」。

来看一个简单的场景:

# 创建两个网桥
ovs-vsctl add-br br-mgmt
ovs-vsctl add-br br-data

# 创建Patch Port对
ovs-vsctl add-port br-mgmt patch-mgmt -- set interface patch-mgmt type=patch options:peer=patch-data
ovs-vsctl add-port br-data patch-data -- set interface patch-data type=patch options:peer=patch-mgmt

# 验证连接
ovs-vsctl show

这段代码创建了两个网桥,然后用Patch Port把它们连起来。br-mgmt上的patch-mgmt端口,peer指向br-data上的patch-data端口。反过来也一样。这样,两个网桥就打通了。

注意:Patch Port的peer配置必须成对出现,而且名字要对应好。如果配错了,端口状态会显示down。我曾经手滑把peer名字写反了,查了半天才发现是拼写错误。嗯,这种低级错误,犯过一次就不会再犯了。

总结一下这一节的内容:

概念 说明
Open vSwitch 开源虚拟交换机,支持OpenFlow、VLAN、QoS等
Patch Port 成对出现的虚拟端口,用于连接两个OVS网桥
跨网桥互联 解决多网桥场景下的流量互通问题

下一节,我们会深入Patch Port的配置细节,看看怎么在实际项目中用好它。你准备好了吗?