Open vSwitch笔记20250526

一、概述

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 的内核数据转发模块,处理高速报文转发,匹配流表后执行相应动作。

🔁 组件间通信关系

  1. ovs-vswitchd ⇆ ovsdb-server

    • 协议:OVSDB 管理协议(6632/TCP)

    • 用于读取或更新交换机配置,比如添加桥、接口、端口、设置 VLAN、QoS 等。

  2. ovs-vswitchd ⇆ OVS Kernel Module

    • 协议:Netlink(绿色箭头)

    • 用于下发、同步流表,和从内核模块获取流统计等信息。

  3. 控制器(Control Cluster)⇆ ovs-vswitchd

    • 协议:OpenFlow(6633/TCP)

    • 控制器可以是 ODL、ONOS、Ryu、Faucet 等,向 OVS 下发流表规则、策略。

  4. 控制器 ⇆ ovsdb-server

    • 协议:OVSDB 管理协议(6632/TCP)

    • 控制器可直接管理 OVS 数据库配置(如动态添加桥、端口等),用于 overlay 网络等高级场景。

📌 图中术语补充说明

项目 说明
Off-box 控制器在 OVS 所在机器外部(常见于 SDN 架构)
User space 用户空间程序,例如 ovs-vswitchd, ovsdb-server
Kernel space 内核态模块,负责高速转发(OVS 的 datapath)

💡 总结一句话

OVS 的控制面(ovs-vswitchd + ovsdb-server)运行在用户态,数据面(kernel module)运行在内核态,控制器可通过 OpenFlow 和 OVSDB 协议进行远程管理和控制。

二、CONFIGURATION DATABASE 

2.1 ovsdb-server

ovsdb-server

  • Database that holds switch-level configuration
    • Bridge, interface, tunnel definitions
    • OVSDB and OpenFlow controller addresses
  • Configuration is stored on disk and survives a reboot
  • Custom database with nice properties:
    • Value constraints
    • Weak references
    • Garbage collection
  • Log-based (fantastic for debugging!)
  • Speaks OVSDB protocol to manager and ovs-vswitchd
  • The OVSDB protocol is in the process of becoming an Informational RFC 

这段话是对 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-intbr-ex 都是写入到这个数据库中的。

3、数据持久化

“Configuration is stored on disk and survives a reboot”

  • OVSDB 的配置数据是持久化保存在磁盘上的

  • 即使主机重启,重启 ovsdb-serverovs-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


“Open_vSwitch” is the root table and there is always only a single row. The tables here are the ones most commonly used; a full entity relationship diagram is available in the ovs-vswitchd.conf.db man page. 
 

这段话讲的是 OVS 的配置数据库(即 ov

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值