在此页面上
软件接收端扩展
概述
现代 NIC 支持多个接收和传输描述符队列(多队列)。在接收时,NIC 可以将不同的数据包发送到不同的队列,以便在 CPU 之间分配处理。NIC 通过对每个数据包应用过滤器来分发数据包,该过滤器将其分配给少量逻辑流之一。每个流的数据包被引导到单独的接收队列,而该队列又可由单独的 CPU 处理。此机制通常称为接收端缩放 (RSS)。RSS 技术的目标是均匀地提高性能。当延迟是一个问题时,或者每当接收中断处理形成瓶颈时,都会启用 RSS。在 CPU 之间分散负载可减少队列长度。对于低延迟网络,最佳设置是分配与系统中 CPU 数量(或 NIC 最大值,如果较低)一样多的队列。最有效的高速率配置可能是接收队列数量最少的配置,其中没有接收队列由于 CPU 饱和而溢出。可以通过接收端缩放提高桥接吞吐量。
根据流线程关联体系结构,每个流线程 (FLT) 从 NIC 的专用接收队列中轮询数据包,并处理数据包,直到运行完成。因此,流线程绑定到 NIC 接收 (RX) 和传输 (TX) 队列进行数据包处理,以避免任何分歧。因此,网卡的 RX 和 TX 队列数量必须与 vSRX 虚拟防火墙数据平面 CPU 数量相同,才能支持多核 vSRX 虚拟防火墙风格。软件 RSS (SWRSS) 通过跨各种 FLT 线程实施基于软件的数据包喷射,消除了运行 vSRX 虚拟防火墙多核风格的 NIC 硬件队列的这种限制。
软件 RSS 将单个流的处理卸载到多个内核之一,因此从 NIC 获取数据包的流线程可以处理更多数据包。与 RSS 类似,使用 SWRSS 时网络吞吐量的提升与 CPU 使用率呈线性相关。
在 SWRSS 中,每个网卡端口初始化的硬件 RX/TX 队列数量与 I/O 线程数相等或更少。I/O 线程数是根据 vSRX 虚拟防火墙中所有网卡接口中所有网卡接口中数据路径 CPU 和最小网卡队列数确定的。例如,如果 I/O 线程计算为 4,则每个 NIC 端口的硬件队列数可以小于或等于 4 个队列。
如果在支持的 vSRX 虚拟防火墙实例中,网卡没有足够数量的队列作为 FLT 线程,则会通过流数据路径启用软件 RSS (SWRSS)。SWRSS实现了从网卡接收队列获取报文后,跨FLT进行数据包分发的软件模型。通过消除网卡硬件队列限制,SWRSS 通过支持各种 vSRX 虚拟防火墙实例类型来帮助扩展 vCPU。
在 I/O 操作期间,从 NIC 端口的接收队列中获取数据包并执行数据包分类。然后将数据包分发到 FLT 线程虚拟队列。这些虚拟队列通过 DPDK 环形队列实现。在传输路径中,SWRSS 从 FLT 线程的虚拟传输队列中获取数据包,并将这些数据包推送到网卡传输队列进行传输。
SWRSS I/O 线程数是根据 vSRX 虚拟防火墙实例中的 CPU 总数和网卡队列数来选择的。不支持将 HWRSS 和 SWRSS 混合操作模式。
了解软件接收端缩放配置
本主题提供有关软件接收端扩展 (SWRSS) 类型及其配置的详细信息。
SWRSS支持两种操作模式,并根据所需的数据路径CPU数量启用。这些模式是共享 IO 模式和专用 IO 模式。这些模式根据所需的数据路径 CPU 数量启用。vSRX 虚拟防火墙和 vSRX3.0 仅支持专用 I/O 模式。
在专用 I/O 模式下,流进程为 I/O 操作创建专用 I/O 线程。根据 vSRX 虚拟防火墙所需的 I/O 线程数,I/O 线程与专用网卡端口相关联。然后以轮询方法将接收和发送队列的NIC端口绑定到每个I/O线程,以实现均匀分布并避免I/O线程锁定。每个专用 I/O 线程以突发模式从 NIC 接收队列中提取数据包并分发到 FLT 线程,反之亦然,用于数据包传输的 TX 路径。
SWRSS 根据 vCPU 的数量启用。如果在具有不同 vCPU 的 vSRX 虚拟防火墙中,网卡作为流线程 (FLT) 的队列数量不足,则流进程将启用软件 RSS (SWRSS)。
在以下场景中未启用 SWRSS:
当 NIC 具有足够数量的硬件 RX 或 TX 队列以供所需的 PFE 数据路径 CPU 使用时。
当 vSRX 虚拟防火墙(基于 vCPU 数量)和网卡产生的 FLT CPU 数量少于在最近的硬件 RSS (HWRSS) 模式下获得的 FLT CPU 数量时。在这种情况下,vSRX 虚拟防火墙将启用 HWRSS 模式,这会产生比 SWRSS 模式更多的 FLT CPU,从而提供更好的数据包处理吞吐量。
对于具有某些类型的网卡的 vSRX 虚拟防火墙,如果不建议使用 SWRSS,因为该网卡支持的网卡队列数量少于运行专用 IO 线程所需的网卡数量。在这种情况下,SWRSS 处于启用状态,但额外的 CPU 会连接到 FLT CPU,直到 I/O CPU 被完全利用。
如果未启用 SWRSS,请使用命令启用 set security forwarding-options receive-side-scaling software-rss mode enable
SWRSS。运行此命令时,无论网卡 RSS 或 vCPU 数量如何,都将强制启用 SWRSS。如果不使用 CLI 启用 SWRSS,则会自动根据 FLT:IO ( 4:1) 的默认比率来决定是否启用 SWRSS。
要配置所需的 IO 线程数,请使用 set security forwarding-options receive-side-scaling software-rss io-thread-number <1-8>
命令。要查看分配给 IO 流线程的实际 vCPU 数,请使用 show security forwarding-options resource-manager
命令。
您可以根据 IO 线程和工作线程的架构和概念来决定自动或强制启用 SWRSS。启用 SWRSS 会影响性能,因此建议仅在需要时更改 IO 线程数,直到达到性能影响瓶颈点。