概述和体系结构

NetScaler BLX 设备是 Citrix ADC 的软件外形规格。它旨在在商用现成服务器(COTS)上的裸机Linux上本地运行。

下面是使用 BLX 设备的好处:

  • 云就绪。BLX 为云端运行提供零日支持。

    BLX 设备不需要任何身份验证即可在云端运行,因为它们作为软件应用程序在云端配置的 Linux 虚拟机上运行。

  • 易于管理。作为 Linux 操作系统的一部分提供的标准工具可用于轻松监视和管理 BLX 设备。BLX 设备可以轻松地接入现有的调配设置。

  • 无缝的第三方工具集成。Linux 环境支持的开源工具(例如监视、调试和记录)可以与 BLX 设备无缝集成。无需为每个集成开发单独的插件。

  • 其他应用程序的共存。由于 BLX 设备作为软件应用程序运行,因此其他 Linux 应用程序也可以在同一主机上运行。

  • DPDK 支持。BLX 设备支持 Data Plane Development Kit (DPDK) 集成以提高性能。BLX 设备使用 DPDK 开源库来提高性能,并克服数据包处理中的 Linux 内核瓶颈。

常规体系结构

BLX 设备是 Citrix ADC 的软件外形规格,其功能与传统 Citrix ADC 设备相同。BLX 设备在 Linux 系统中作为用户空间应用程序运行。BLX 设备使用 Linux 驱动程序处理数据包的 Rx/Tx 并管理 NIC 端口。在 BLX 启动阶段创建的虚拟接口 blx0blx1 用于内核与 BLX 设备之间的通信。

体系结构 BLX

网络模式

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

  • 共享模式
  • 专用模式

共享模式

配置为在共享模式下运行的 BLX 设备与其他 Linux 应用程序共享 Linux 主机 NIC 端口。

共享模式 BLX

共享模式下的 BLX 设备会自动分配网络地址 192.0.0.1/24。

共享模式下的 BLX 设备使用一个用于管理和数据流量的单一 IP 地址运行。所有 Citrix ADC 拥有的 IP 地址(例如 NSIP、SNIP 和 VIP)都具有相同的 IP 地址 192.0.0.1,但端口号不同。换句话说,这个单一 IP 地址 (192.0.0.1) 使用不同的端口号来充当 NSIP、SNIP 和 VIP。

由于 Linux NIC 端口在 BLX 设备和其他 Linux 应用程序之间共享,因此会在 BLX 设备的内核中添加一个 IP NAT 表。Linux 主机使用此 IP NAT 表来识别在属于 BLX 设备的 Linux NIC 端口上收到的数据包。

然后,Linux 主机通过将收到的数据包的目标 IP 地址转换为 BLX 设备的 IP 地址 (192.0.0.1) 来执行 NAT。BLX 设备通过 blx0blx1 虚拟接口 (veth) 接收数据包。

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

专用模式

在专用模式下配置的 BLX 设备具有专用 Linux 主机 NIC 端口,它不与其他 Linux 应用程序共享这些端口。

主机上的其他 Linux 应用程序看不到专用于 BLX 设备的 Linux NIC 端口。

专用模式 BLX

处于专用模式的 BLX 设备上的 IP 寻址方案与传统 Citrix ADC 设备上的 IP 寻址方案类似。在专用模式下的 BLX 设备上,ADC 拥有的 IP 地址(例如 NSIP、SNIP 和 VIP)可以有不同的 IP 地址。

与共享模式不同,在专用模式下,BLX 设备不需要 NAT 操作。BLX 设备通过配置的专用 Linux NIC 端口直接接收/响应来自/传出外部网络设备的数据包。

处于专用模式的 BLX 设备仍使用 blx0blx1 虚拟接口 (veths) 向 Linux 内核发送 SYSLOG 和其他管理相关信息。

支持 Data Plane Development Kit (DPDK) 的 BLX 设备

BLX 设备使用传统的 Linux 驱动程序对数据包进行接收/传输,并管理 NIC 端口。使用 Linux 驱动程序在用户空间的 Linux 内核和 BLX 设备之间传输的数据包会产生一些开销。这些开销会影响 BLX 设备的性能。

BLX 设备具有完整的 TCP/IP 堆栈来处理任何数据包。如果 BLX 设备能够快速地从底层 Linux NIC 端口接收数据包,则网络性能会得到改善。

Data Plane Development Kit (DPDK) 可用于克服这一瓶颈。DPDK 是一组用于提高网络性能的开源 Linux 库和网络接口控制器。有关 DPDK 的更多信息,请访问 DPDK 官方网站 https://www.dpdk.org/

DPDK BLX

DPDK 有助于绕过内核,直接将数据包传送到用户空间应用程序以进行进一步处理。DPDK 与 Linux UIO 模块相结合,可帮助 BLX 设备在不涉及 Linux 内核数据包处理开销的情况下从/向 Linux NIC 端口接收/传输数据包。分配内存后,DPDK 将管理自己的缓冲区以实现更好的性能。

支持 DPDK 的 BLX 设备只能在专用网络模式下运行。

概述和体系结构