常规体系结构

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

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

BLX 的网络模式定义了 Linux 主机的 NIC 端口是否与该主机上运行的其他 Linux 应用程序共享。您可以将 BLX 配置为在以下网络模式之一下运行:

  • 专用模式 - Linux 主机的 NIC 端口专用 BLX,不与其他 Linux 应用程序共享。
  • 共享模式 - Linux 主机的 NIC 端口与其他 Linux 应用程序共享。

NetScaler 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 内核内存和用户空间内存之间传输数据包仍然存在开销。这种开销会影响数据包处理的整体性能。我们建议使用与 Data Plane Development Kit (DPDK) 兼容的 NIC 来提高数据包处理性能。有关 BLX 支持的 DPDK 兼容 NIC 的列表,请参阅 Linux 主机的硬件要求

体系结构 BLX

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

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

注意:

如果满足以下条件之一,BLX 可能会在不支持 DPDK 的情况下以专用模式启动。

  • BLX 不支持兼容 DPDK 的专用 NIC 端口。
  • DPDK 不支持专用 NIC 端口。

共享模式下的 NetScaler BLX

在共享模式下,Linux 主机的 NIC 端口与其他 Linux 应用程序共享,以接收和传输数据包。BLX 自动分配的 IP 地址为 192.0.0.1/24。此 IP 地址用于管理和数据流量。所有 NetScaler 拥有的 IP 地址(例如 NSIP、SNIP 和 VIP 地址)都具有相同的 192.0.0.1 的 IP 地址,但端口号不同。换句话说,这个单一 IP 地址 (192.0.0.1) 使用不同的端口号来充当 NSIP、SNIP 和 VIP。

体系结构 BLX

由于主机 Linux NIC 端口在 BLX 和其他 Linux 应用程序之间共享,因此会向 NAT 添加一个 IP 表规则。此 IP 表规则用于将主机上接收到的流量转发到 BLX 进行进一步处理。

Linux 主机将收到的数据包的目标 IP 地址转换为 BLX 的 IP 地址 (192.0.0.1)。BLX 通过 blx0blx1 虚拟接口接收数据包。

BLX 处理接收到的数据包,并通过 blx1blx0 虚拟接口将它们发送到 Linux 内核。Linux 主机使用 BLX IP NAT 表对这些数据包执行 NAT,然后通过 Linux NIC 端口将它们发送到目的地。

注意:

我们不建议在共享模式下为生产设置配置 BLX。

常规体系结构