总体架构

NetScaler BLX 是 NetScaler 的一种软件形态,提供与其他形态相同的功能。它作为用户空间应用程序在 Linux 主机上运行。

BLX 使用 Linux 驱动程序进行数据包的接收/发送以及管理 NIC 端口。在启动阶段创建的虚拟以太网 (veths) 接口 blx0blx1 用于 Linux 主机和 BLX 之间的通信。例如,BLX 使用 veths 将日志信息发送到 Linux 主机上的 syslog 守护程序。

在 BLX 中,/etc/blx/blx.conf(BLX 的启动配置文件)文件中指定的 Linux 主机的 NIC 端口专用于 BLX。这些 NIC 端口不与主机上运行的其他应用程序共享。只有 BLX 可以看到这些专用 NIC 端口。

IP 寻址方案与传统 NetScaler 类似。BLX 可以为 NetScaler IP (NSIP)、虚拟服务器 IP (VIP) 和子网 IP (SNIP) 配置不同的 IP 地址。

BLX 从外部网络接收数据包,处理接收到的数据包,并通过配置的专用 Linux NIC 端口直接响应。它具有一个功能完备的 TCP/IP 堆栈来处理数据包,绕过了 Linux 内核的 TCP/IP 堆栈。BLX 直接与 Linux 内核驱动程序交互,从 NIC 端口获取原始数据包。

尽管 BLX 绕过了 Linux 内核的网络堆栈,但在 Linux 内核内存和用户空间内存之间传输数据包仍然存在开销。此开销会影响数据包处理的整体性能。我们建议使用数据平面开发套件 (DPDK) 兼容的 NIC,以实现高数据包处理性能。有关 BLX 支持的 DPDK 兼容 NIC 列表,请参阅Linux 主机的硬件要求

BLX 架构

DPDK 是一组开源 Linux 库和网络接口控制器,用于提高网络性能。有关 DPDK 的更多信息,请访问 DPDK 官方网站:https://www.dpdk.org/

DPDK 有助于绕过内核内存,并将数据包直接传递到用户空间内存进行处理。DPDK 与 Linux UIO 模块结合使用,使 BLX 能够接收和传输数据包,而无需涉及 Linux 内核将数据包从内核内存复制到用户空间内存的开销。分配内存后,DPDK 会管理其缓冲区以实现更好的性能。

注意:

如果满足以下任一条件,BLX 可能会在没有 DPDK 支持的情况下启动。

  • BLX 不支持专用 DPDK 兼容 NIC 端口。
  • DPDK 不支持专用 NIC 端口。
总体架构