ovs 关键术语和架构

113 阅读3分钟

由于历史原因,在OvS源代码目录树的不同区域,不同的单词用于本质上相同的概念。以下是一个一致性,按源树的覆盖区域范围进行索引:

image.png

架构

image.png

  • ovs-vswitchd: ovs 用户态程序,代码在 vswitchd/, 它通过 IPC 通道从 ovsdb 服务器程序读取所需的 ovs 配置,并将此配置传递给 “ofproto” 库。它还将特定的状态和统计信息从 ofproto 传递回数据库。
  • ofproto: ovs 库,在 ofproto/ 目录下,基于此才能实现 openflow 交换机。它通过网络与 OpenFlow 控制器对话,也能通过 “ofproto provider” 和其他交换机硬件或软件沟通
  • netdev: ovs 库,在 lib/netdev.c 目录下,它抽象化了与网络设备的交互, 比如,以太网接口。netdev库是“netdev provider”代码上的一个薄层.

其他组件在一个端口期间可能需要注意。您几乎肯定必须实现一个“netdev provider”。根据您正在做的端口类型和所需的性能,您可能还必须实现一个“ofproto provider”或一个称为 “dpif” 提供程序的更低级别的组件。

什么是 datapath (就是一个简单的流表)

image.png

dpif 在 ovs 架构中的应用

image.png

image.png

dpif-net 内核态和用户态的两种实现

image.png

ovs 的移植策略只有两种,但只能选择其中一种:

  • ofproto provider
  • dpif provider

这两种只能选择一种去利用硬件 TCAM 支持 而且,只有 dpif provider 可以利用 ovs 内置实现的多种特性。

硬件 TCAM 支持

TCAM(Ternary Content Addressable Memory,三值内容可寻址存储器)是一种特殊类型的存储器,主要用于网络设备(如路由器和交换机)中,以加速搜索和数据包处理的性能。

硬件 TCAM 支持的意义:

  1. 快速查找

    • TCAM 可以在单个时钟周期内同时比较多个输入,支持快速查找和匹配。相比于传统的 RAM 或 DRAM,TCAM 更适合用于需要高速查找的应用场景。
  2. 三种匹配模式

    • TCAM 支持三值逻辑,即每个存储单元可以存储 0、1 或者“任意值”的状态(通常称为“X”)。这使得 TCAM 可以灵活地进行灵活匹配,比如在网络安全和策略匹配中,可以方便地表示例如“IP地址范围”、“子网”等复杂条件。
  3. 硬件加速应用

    • 硬件 TCAM 被广泛用于实现高性能的网络功能,如:
      • 路由表查找:快速进行 IP 地址查找和路由选择。
      • 访问控制列表(ACL):实现高效的安全策略匹配。
      • 深度包检测:例如在防火墙、入侵检测/防御系统中,快速识别恶意流量。
  4. 节省CPU资源

    • 由于 TCAM 可以在硬件层面并行处理多个匹配请求,减少了对 CPU 进行复杂查找和匹配操作的需要,从而可以更高效地利用 CPU 资源,提升整体性能。
  5. 规模扩展

    • TCAM 可以很容易地扩展成多个硬件模块,以支持更大的查找表,满足越来越复杂的网络需求。

总结

硬件 TCAM 支持对于需要高速数据处理和复杂匹配能力的网络设备至关重要。它能够提高查找效率、支持复杂匹配模式并节约 CPU 资源,因此在现代网络基础设施中扮演了重要角色。