由于历史原因,在OvS源代码目录树的不同区域,不同的单词用于本质上相同的概念。以下是一个一致性,按源树的覆盖区域范围进行索引:
架构
- 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 (就是一个简单的流表)
dpif 在 ovs 架构中的应用
dpif-net 内核态和用户态的两种实现
ovs 的移植策略只有两种,但只能选择其中一种:
- ofproto provider
- dpif provider
这两种只能选择一种去利用硬件 TCAM 支持 而且,只有 dpif provider 可以利用 ovs 内置实现的多种特性。
硬件 TCAM 支持
TCAM(Ternary Content Addressable Memory,三值内容可寻址存储器)是一种特殊类型的存储器,主要用于网络设备(如路由器和交换机)中,以加速搜索和数据包处理的性能。
硬件 TCAM 支持的意义:
-
快速查找:
- TCAM 可以在单个时钟周期内同时比较多个输入,支持快速查找和匹配。相比于传统的 RAM 或 DRAM,TCAM 更适合用于需要高速查找的应用场景。
-
三种匹配模式:
- TCAM 支持三值逻辑,即每个存储单元可以存储 0、1 或者“任意值”的状态(通常称为“X”)。这使得 TCAM 可以灵活地进行灵活匹配,比如在网络安全和策略匹配中,可以方便地表示例如“IP地址范围”、“子网”等复杂条件。
-
硬件加速应用:
- 硬件 TCAM 被广泛用于实现高性能的网络功能,如:
- 路由表查找:快速进行 IP 地址查找和路由选择。
- 访问控制列表(ACL):实现高效的安全策略匹配。
- 深度包检测:例如在防火墙、入侵检测/防御系统中,快速识别恶意流量。
- 硬件 TCAM 被广泛用于实现高性能的网络功能,如:
-
节省CPU资源:
- 由于 TCAM 可以在硬件层面并行处理多个匹配请求,减少了对 CPU 进行复杂查找和匹配操作的需要,从而可以更高效地利用 CPU 资源,提升整体性能。
-
规模扩展:
- TCAM 可以很容易地扩展成多个硬件模块,以支持更大的查找表,满足越来越复杂的网络需求。
总结
硬件 TCAM 支持对于需要高速数据处理和复杂匹配能力的网络设备至关重要。它能够提高查找效率、支持复杂匹配模式并节约 CPU 资源,因此在现代网络基础设施中扮演了重要角色。