总体架构

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

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

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

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

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

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

BLX 架构

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

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

注意:

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

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