一、概述
1.1 Why Open vSwitch(1)
| Why Open vSwitch... Open vSwitch's forwarding path (the in-kernel datapath) is designed to be amenable to "offloading" packet processing to hardware chipsets, whether housed in a classic hardware switch chassis or in an end-host NIC. This allows for the Open vSwitch control path to be able to both control a pure software implementation or a hardware switch. |
1. Forwarding path is in-kernel datapath
"Open vSwitch's forwarding path (the in-kernel datapath)..."
OVS 的数据包转发路径是在 Linux 内核模块中实现的,性能高、延迟低。
这部分处理数据包的核心逻辑,比如流表匹配、封装/解封装、转发等。
2. Amenable to offloading
"...is designed to be amenable to offloading packet processing to hardware chipsets..."
设计目标之一是便于“卸载”数据包处理到硬件上。
所谓“offloading”,即把数据包的匹配与转发操作,从 CPU/内核转交给:
硬件交换芯片(ASIC)
智能网卡(SmartNIC、DPDK NIC)
可编程网卡(如 NVIDIA BlueField, Intel IPU)
这种架构可以大幅提升性能、降低延迟,尤其适合数据中心场景。
3. Works in hardware switches or SmartNICs
"...whether housed in a classic hardware switch chassis or in an end-host NIC."
这种“卸载”不仅适用于传统的硬件交换机(如 Broadcom 芯片),
也可以应用于 宿主机中的智能网卡(NIC)。
简而言之,OVS 支持软硬协同:
软件层灵活控制(OpenFlow、OVN、VXLAN、QoS…)
数据包处理可以由硬件接管(如 flow table 下沉到芯片),(注:这个flow table实际可以理解为硬件转发表项,不是用户态的openflow table,而是下发到内核的转发表了。)
4. Control path stays the same
"This allows for the Open vSwitch control path to be able to both control a pure software implementation or a hardware switch."
无论是 软件版 OVS(纯用户态 + 内核态)还是 硬件交换机(比如用 ASIC 实现转发),
它们都可以被同一套 OVS 控制逻辑所控制(即“控制路径”一致):
统一的 API(OVSDB / OpenFlow / OVN)
统一的配置工具(如
ovs-vsctl,ovs-ofctl)✅ 总结一句话:
Open vSwitch 的架构实现了“控制逻辑统一 + 数据面可卸载”的设计目标,既适用于软件定义网络,也适用于硬件加速环境。
🧩 延伸理解:软件 + 硬件协同的 OVS 应用场景
场景 控制路径(控制层) 转发路径(数据面) 普通虚拟交换机(如 OpenStack) ovs-vswitchd + ovsdb-server 内核模块 datapath(system) 高性能 DP/DPDK 场景 同上 用户态 netdev + DPDK SmartNIC 加速(如 Mellanox) 同上 NIC 上的 ASIC/Switch 芯片 白盒交换机(如 OCP 硬件) 同上 Broadcom / Intel ASIC
1.2 Why Open vSwitch(2)
| ...Why Open vSwitch The advantage of hardware integration is not only performance within virtualized environments. If physical switches also expose the Open vSwitch control abstractions, both bare-metal and virtualized hosting environments can be managed using the same mechanism for automated network control. |
这段话讲的是 Open vSwitch 与硬件集成的优势 不只是提升性能,还有更大的架构价值,下面是逐句解读:
The advantage of hardware integration is not only performance within virtualized environments.
✅ 解释:
把 OVS 的数据面卸载到硬件(如 ASIC、SmartNIC)的一个直接好处是性能提升(比如更高的吞吐、更低延迟);
但这不是唯一的优势;
真正重要的是——控制的一致性与自动化能力。
If physical switches also expose the Open vSwitch control abstractions,
✅ 解释:
假如物理交换机(例如白盒交换机、可编程交换机)也支持 Open vSwitch 的控制接口(抽象),比如:
OVSDB 接口
OpenFlow 流表管理
OVN northbound/southbound API
就意味着你可以像操作一个软件交换机一样操作物理设备。
both bare-metal and virtualized hosting environments can be managed using the same mechanism for automated network control.
✅ 解释:
不管你的服务器是:
虚拟化环境(如 KVM + OpenStack)
物理裸金属环境(bare-metal,如 Kubernetes 节点、数据库主机等)
只要它们连接的网络设备都支持 OVS 控制抽象,那么就可以使用同一套网络控制系统(SDN 控制器、OVN、Ansible 等)进行自动化编排与管理。
🎯 总结一句话:
通过统一 OVS 控制接口,虚拟交换机与物理交换机都可以纳入同一套自动化网络控制系统,实现全栈网络统一管理。
🧩 举个例子
你用 OVN 做网络控制平面,结合 OVS:
在 OpenStack/KVM 上运行虚拟机,使用
br-int转发;在物理服务器上用裸金属运行 Pod;
在 ToR(Top of Rack)交换机使用支持 OVS/OVN 的白盒交换机(如基于 Broadcom 的设备);
你可以用 一套 OVN 控制器 对这些不同设备统一下发路由、ACL、隧道规则,无需写两套脚本。
示意图:
+--------------------+ | OVN / SDN | ← 控制路径(统一) +--------------------+ ↓ +------------+ ↓ +------------------+ | Virtual OVS| ← OVSDB → | Hardware Switch | | (br-int) | | (with OVS logic) | +------------+ +------------------+ | | 虚拟机流量 裸金属流量如果你所在的金融行业有裸金属服务器 + 私有云混合部署的场景,这种模式特别适合统一规划二层/三层网络、做多租户隔离、实施集中式防火墙策略等。
1.3 Main Components
| Main Components
|
这张图清晰地展示了 Open vSwitch(OVS)体系结构的主要组件及交互关系。以下是对图中各部分的详细解读:
✅ 图中主要组件说明
组件名称 作用与职责 ovsdb-server 提供数据库支持(OVSDB 协议),管理交换机配置,如端口、桥、接口、QoS 等,通常监听 6632/TCP。ovs-vswitchd OVS 数据面的控制守护进程,处理 OpenFlow 控制、策略执行、流表安装等,通常监听 6633/TCP。OVS Kernel Module OVS 的内核数据转发模块,处理高速报文转发,匹配流表后执行相应动作。 🔁 组件间通信关系
ovs-vswitchd ⇆ ovsdb-server
协议:OVSDB 管理协议(6632/TCP)
用于读取或更新交换机配置,比如添加桥、接口、端口、设置 VLAN、QoS 等。
ovs-vswitchd ⇆ OVS Kernel Module
协议:Netlink(绿色箭头)
用于下发、同步流表,和从内核模块获取流统计等信息。
控制器(Control Cluster)⇆ ovs-vswitchd
协议:OpenFlow(6633/TCP)
控制器可以是 ODL、ONOS、Ryu、Faucet 等,向 OVS 下发流表规则、策略。
控制器 ⇆ ovsdb-server
协议:OVSDB 管理协议(6632/TCP)
控制器可直接管理 OVS 数据库配置(如动态添加桥、端口等),用于 overlay 网络等高级场景。
📌 图中术语补充说明
项目 说明 Off-box 控制器在 OVS 所在机器外部(常见于 SDN 架构) User space 用户空间程序,例如 ovs-vswitchd,ovsdb-serverKernel space 内核态模块,负责高速转发(OVS 的 datapath) 💡 总结一句话
OVS 的控制面(ovs-vswitchd + ovsdb-server)运行在用户态,数据面(kernel module)运行在内核态,控制器可通过 OpenFlow 和 OVSDB 协议进行远程管理和控制。
二、CONFIGURATION DATABASE
2.1 ovsdb-server
| ovsdb-server
|
这段话是对
ovsdb-server的功能和架构特点的描述,我们逐点来解读它的含义:1、什么是
ovsdb-server?“Database that holds switch-level configuration”
ovsdb-server是 Open vSwitch 架构中的 配置数据库服务进程,它使用 OVSDB 协议与其他组件通信,用于存储和管理控制面配置数据。2、存储内容包括:
– Bridge, interface, tunnel definitions
– OVSDB and OpenFlow controller addresses即它存储了以下信息:
所有虚拟交换机(bridges)的定义;
各个 bridge 下面的接口(interfaces)、端口(ports)、隧道(如 VXLAN);
与 OpenFlow 控制器或 OVSDB 管理端的连接地址;
例如你通过
ovs-vsctl创建的br-int、br-ex都是写入到这个数据库中的。3、数据持久化
“Configuration is stored on disk and survives a reboot”
OVSDB 的配置数据是持久化保存在磁盘上的;
即使主机重启,重启
ovsdb-server和ovs-vswitchd后配置会自动恢复;默认存储路径如
/etc/openvswitch/conf.db。4、自定义数据库(非 SQLite/PostgreSQL)
“Custom database with nice properties:”
OVSDB 是 Open vSwitch 专门为网络配置设计的数据库格式,具备以下优点:
- Value constraints(值约束)
可以对字段定义类型、取值范围;
比如
ofport是整数,name是字符串。- Weak references(弱引用)
类似于外键,可以引用其他表中的对象,但允许目标不存在或延迟创建;
适合网络设备的“先定义接口,后定义 bridge”这种不确定顺序的场景。
- Garbage collection(垃圾回收)
如果一个对象没有被任何其他对象引用(如孤立的接口),数据库会自动清理它;
保持数据库结构整洁。
5、Log-based(日志式结构)
“Fantastic for debugging!”
OVSDB 是追加式存储结构,所有变更操作都会记录在日志中;
这便于回溯故障、调试配置问题,甚至可以用 replay 工具重现问题;
有专门的工具(如
ovsdb-tool) 可用于解析数据库。6、OVSDB 协议通信
“Speaks OVSDB protocol to manager and ovs-vswitchd”
ovsdb-server使用 OVSDB 协议(基于 JSON-RPC) 与:
ovs-vswitchd(用户空间交换机进程)通信,获取配置外部管理器(如 OVN、SDN 控制器)通信,接受配置指令
✅ 总结一句话:
ovsdb-server是 Open vSwitch 的核心配置数据库,专为网络设计,支持结构化约束、持久化存储、日志调试,并通过 OVSDB 协议与控制器或交换进程通信,是整个 SDN 控制面的“存储大脑”。🔧 常见命令回顾:
ovs-vsctl show # 从 ovsdb 读取整体配置
ovs-vsctl add-br br0 # 写入 ovsdb 中添加交换机
ovsdb-tool show-log conf.db # 查看数据库日志结构
ovsdb-client dump # 直接查询数据库内容(调试用)
2.2 Core Tables
| Core Tables
|
这段话讲的是 OVS 的配置数据库(即
ov




322

被折叠的 条评论
为什么被折叠?



