在不支持 DPDK 的情况下在专用模式下为 NetScaler BLX 配置 nsdrvd 驱动程序

NetScaler BLX 绕过了 Linux 内核的网络堆栈,但是在 Linux 内核内存和用户空间内存之间传输数据包会产生开销。这种开销会影响数据包处理的整体性能。

我们建议使用兼容 DPDK 的 NIC 来提高数据包处理性能。有关 BLX 支持的 DPDK 兼容 NIC 的列表,请参阅 Linux 主机的硬件要求

如果您没有兼容 DPDK 的 NIC,则可以在不支持 DPDK 的情况下使用 nsdrvd 驱动程序来提高数据包处理的性能。

nsdrvd 驱动程序拥有与 Linux 内核进行数据包接收和传输的所有交互。它还将流量分配给 PE。您可以使用 blx.conf 文件中的 nsdrvd 参数配置 nsdrvd 驱动程序。下表说明了 nsdrvd 参数的可能值。

可能的价值 说明
nsdrvd: 1 为每个专用端口创建一个驱动程序进程。Rx 和 Tx 按顺序出现。
nsdrvd: 2 为每个专用端口创建一个 Rx 进程和一个 Tx 线程。
nsdrvd: 3 为每个专用端口创建一个 Rx 进程和 2 个 Tx 线程。

要使用 nsdrvd 驱动程序,根据以下计算,Linux 主机必须至少有 n 个内核。

n >= WP + (INT*P) + 1

其中:

  • WP - BLX 的工作进程(数据包引擎)的数量。blx.conf 文件中的 worker-processes 参数指定 BLX 的数据包引擎的数量。
  • INT - BLX 专用 Linux 主机 NIC 端口的数量。blx.conf 文件中的 interface 参数指定了专用于 BLX 的 Linux 主机 NIC 端口。
  • P - BLX 的 nsdrvd 驱动程序进程数。blx.conf 文件中的 nsdrvd 参数指定 nsdrvd 驱动程序进程的数量。

示例:采用以下配置的 BLX 必须至少有 10 个内核:

  • WP = 3 个数据包引擎
  • INT = 2 个专用接口
  • P = 3 个 nsdrvd 进程

n = WP + (INT*P) + 1 = (3+2*3+1) = 10

必备条件

启用 nsdrvd 驱动程序

必须使用 Linux 主机 CLI 来启用 nsdrvd 驱动程序。

  1. 通过运行以下命令打开 blx.conf 文件:

    注意:

    您可以使用任何文本编辑器来编辑 blx.conf 文件。

    nano /etc/blx/blx.conf
    <!--NeedCopy-->
    
  2. 取消注释 nsdrvd 参数并将值设置为 1、2 或 3。

    blx-system-config
    {
            ...
            nsdrvd: <number of process>
            ...
    }
    <!--NeedCopy-->
    
  3. 保存 blx.conf 文件。
  4. 重启 BLX。

    systemctl restart blx
    <!--NeedCopy-->
    

BLX 重新启动后,在 BLX 上启用 nsdrvd 驱动程序。

禁用 nsdrvd 驱动程序

必须使用 Linux 主机 CLI 来禁用 nsdrvd 驱动程序。

  1. 要禁用 nsdrvd 驱动程序,请注释 blx.conf 文件中的 nsdrvd参数。

    blx-system-config
    {
            ...
            # nsdrvd: 2
            ...
    }
    <!--NeedCopy-->
    
  2. 重启 BLX。

    systemctl restart blx
    <!--NeedCopy-->
    

BLX 重新启动后,nsdrvd 驱动程序在 BLX 上被禁用。

在不支持 DPDK 的情况下在专用模式下为 NetScaler BLX 配置 nsdrvd 驱动程序