Deploy a NetScaler BLX appliance with DPDK support
NetScaler BLX appliances support Data Plane Development Kit (DPDK), which is a set of Linux libraries and network interface controllers for better network performance. A BLX appliance with DPDK support works only in dedicated network mode. Deploying a BLX appliance with DPDK support on a Linux host consists of the following steps:
- Download, install, and compile DPDK libraries on the Linux host
- Configure DPDK on the Linux host
- Configure the BLX appliance for DPDK support
- Setting the management IP address of the BLX appliance for the first time
- Starting the BLX appliance
Download, install, and compile DPDK libraries on the Linux host
DPDK libraries are hosted on the official DPDK website. Installation of the DPDK libraries on the Linux host consists of extracting the DPDK package, setting DPDK environment variables, and compiling the DPDK libraries.
To download the supported DPDK libraries on the Linux host:
-
Access the official DPDK Downloads page.
-
Download the following supported DPDK package version to the Linux host:
After downloading the DPDK libraries, extract the DPDK package on the Linux host, set the RTE_SDK DPDK environment variable, and then compile the DPDK libraries:
export RTE_SDK=<path to the extracted DPDK installation directory on the Linux host>
For more information on installing and compiling DPDK on a Linux device, see the official DPDK documentation at Official DPDK Documentation.
Configure DPDK on the Linux host
After installing DPDK libraries, you must configure DPDK on the Linux host. Configuring DPDK includes the following tasks:
- Insert the DPDK IGB UIO kernel module
- Bind Linux host NIC ports, to be used for the BLX appliance, to the DPDK IGB UIO module.
- Set up
hugepages
for DPDK
Use the DPDK setup script (dpdk-setup.sh), located in the DPDK usertools
subdirectory, to perform these tasks.
Note
The following DPDK related procedures are added for your convenience. For more information on configuring DPDK on a Linux system, see the official DPDK documentation at Official DPDK Documentation.
Insert the DPDK IGB UIO kernel module
To insert the DPDK IGB UIO kernel module:
-
Run the dpdk-setup.sh script:
bash $RTE_SDK/usertools/dpdk-setup.sh
-
Type option 17 in the user prompt and press enter.
. . [17] Insert IGB UIO module [18] Insert VFIO module [19] Insert KNI module [20] Setup hugepage mappings for non-NUMA systems [21] Setup hugepage mappings for NUMA systems [22] Display current Ethernet/Crypto device settings [23] Bind Ethernet/Crypto device to IGB UIO module [24] Bind Ethernet/Crypto device to VFIO module [25] Setup VFIO permissions . . ……………… [34] Exit Script Option: 17 <!--NeedCopy-->
Bind Linux host NIC ports to DPDK IGB UIO module
To bind Linux host NIC ports to DPDK IGB UIO module:
-
Run the dpdk-setup.sh script:
./$RTE_SDK/usertoos/dpdk-setup.sh
-
Type option 23 in the user prompt and press enter.
. . [17] Insert IGB UIO module [18] Insert VFIO module [19] Insert KNI module [20] Setup hugepage mappings for non-NUMA systems [21] Setup hugepage mappings for NUMA systems [22] Display current Ethernet/Crypto device settings [23] Bind Ethernet/Crypto device to IGB UIO module [24] Bind Ethernet/Crypto device to VFIO module [25] Setup VFIO permissions . . ……………… [34] Exit Script Option: 23 <!--NeedCopy-->
-
Type the PCI address of the Linux host port, which you want to bind to the DPDK IGB UIO kernel module, in the user prompt and press enter:
Network devices using DPDK-compatible driver ============================================ 0000:83:00.1 'I350 Gigabit Fiber Network Connection 1522' drv=igb_uio unused=igb Network devices using kernel driver =================================== 0000:01:00.0 'Ethernet Controller 10-Gigabit X540-AT2 1528' if=eno1 drv=ixgbe unused=igb_uio *Active* 0000:01:00.1 'Ethernet Controller 10-Gigabit X540-AT2 1528' if=eno2 drv=ixgbe unused=igb_uio 0000:83:00.0 'I350 Gigabit Fiber Network Connection 1522' if=enp131s0f0 drv=igb unused=igb_uio 0000:02:00.0 'Ethernet Controller XL710 for 40GbE QSFP+ 1584' drv=i40e unused=igb_uio. << add 0000:83:00.2 'I350 Gigabit Fiber Network Connection 1522' if=enp131s0f2 drv=igb unused=igb_uio 0000:83:00.3 'I350 Gigabit Fiber Network Connection 1522' if=enp131s0f3 drv=igb unused=igb_uio 0000:84:00.0 'I350 Gigabit Fiber Network Connection 1522' if=enp132s0f0 drv=igb unused=igb_uio 0000:84:00.1 'I350 Gigabit Fiber Network Connection 1522' if=enp132s0f1 drv=igb unused=igb_uio ……….. Mempool devices using kernel driver =================================== <none> Other Mempool devices ===================== <none> Enter PCI address of device to bind to IGB UIO driver: 0000:02:00.0 <!--NeedCopy-->
-
Repeat the above steps to bind another Linux host network port to the DPDK IGB UIO module.
Set up hugepages
for DPDK
To set up hugepages
for DPDK:
-
Run the dpdk-setup.sh script:
./$RTE_SDK/usertoos/dpdk-setup.sh
-
Type option 20 or 21, based on the Linux host memory architecture, in the user prompt and press enter.
. . [17] Insert IGB UIO module [18] Insert VFIO module [19] Insert KNI module [20] Setup hugepage mappings for non-NUMA systems. [21] Setup hugepage mappings for NUMA systems [22] Display current Ethernet/Crypto device settings [23] Bind Ethernet/Crypto device to IGB UIO module [24] Bind Ethernet/Crypto device to VFIO module [25] Setup VFIO permissions . . ……………… [34] Exit Script Option: 21 <!--NeedCopy-->
-
Type the number of
hugepages
, to be reserved for DPDK, in the user prompt and press enter:Removing currently reserved hugepages Unmounting /mnt/huge and removing directory Input the number of 2048kB hugepages Example: to have 128MB of hugepages available in a 2MB huge page system, enter '64' to reserve 64 * 2MB pages Number of pages: 1024 Reserving hugepages Creating /mnt/huge and mounting as hugetlbfs <!--NeedCopy-->
Configure the BLX appliance for DPDK support
To configure the BLX appliance for DPDK support, you must set the following parameter in the BLX configuration file (blx.conf).
- DPDK config. This parameter enables the BLX appliance to start in DPDK mode for better performance. Also, this parameter specifies the number of packet engines to be used by the BLX appliance with DPDK support. The default value is set to 8 (0xff). Maximum number of packet engines supported by BLX appliance with DPDK support is 28.
Note
After setting the
DPDK config
parameter and starting the BLX appliance, the DPDK bound Linux NIC ports are automatically added as part of the BLX appliance.
To configure the BLX appliance for DPDK support:
-
Open the BLX configuration file (blx.conf) present in the Linux host. The complete path of the BLX configuration file is:
/etc/blx/blx.conf
-
Uncomment the following line, containing the
dpdk-config
parameter, in the BLX configuration file (blx.conf) by removing the # (hash symbol) at the start of the line:# dpdk-config: -c 0xff
Sample config
In the following sample excerpt of a
blx.conf
file,dpdk-config
parameter setting is enabled.. . # dpdk EAL core mask parameter. Applicable only when blx-dpdk is installed. dpdk-config: -c 0xff . . <!--NeedCopy-->
Setting the management IP address of the BLX appliance for the first time
The management IP address of a BLX appliance is the IP address at which you access the appliance for management purposes. The management IP address of the BLX appliance is also called the Citrix ADC IP (NSIP) address.
A BLX appliance can have only one Citrix ADC IP (NSIP) address. Also, you must add a default route for the configured Citrix ADC IP subnet so that the Citrix ADC IP becomes reachable from other networks on the LAN.
For setting the management IP address of the BLX appliance for the first time, you must set the related parameters in the BLX configuration file (blx.conf).
To set the management IP address and the default route for the first time:
-
Open the BLX configuration file (blx.conf) present in the Linux host. The complete path of the BLX configuration file is:
/etc/blx/blx.conf
-
Uncomment the following parameter and set the management IP address:
# ipaddress:
-
Uncomment the following parameter and set the default route in the static route section:
# default
Sample config:
In the following sample excerpt of a blx.conf file
, management IP address and default route are set:
.
.
ipaddress: 203.0.113.10
.
.
default 203.0.113.1
.
.
<!--NeedCopy-->
Starting the BLX appliance with DPDK support
Start the BLX appliance by running the following command:
systemctl start blx
The BLX appliance is now in Up state.
Check the status of the BLX appliance again:
systemctl status blx
After successfully installing and starting a BLX appliance, you can configure the Citrix ADC features on the appliance by using one of the following methods:
- Citrix ADC CLI
- Citrix ADC GUI
- Citrix NITRO REST APIs
For more information on using these methods, see Configure a BLX appliance.
For more information on Citrix ADC features, see Citrix ADC Documentation.