Install xNIC on Linux

Prev Next

WHAT TO EXPECT

The xNIC is a lightweight service that must be installed on every VM sending or receiving multicast traffic to and from a cloudSwXtch network. An xNIC should not be installed on a cloudSwXtch or cloudSwXtch Bridge VM.

In this article, users will learn how to install the xNIC software on Linux systems.

Installing xNIC for Linux 

BEFORE YOU START

Review xNIC System requirements

Network Acceleration

If using Azure and plan to use xNIC Type 3, the data-subnet NIC must have the "Network Acceleration" feature enabled.

Before installation

Verify network connectivity to the cloudSwXtch instance by "pinging" the switch.

ping <cloudSwXtch-instance-name or cloudSwXch-ctrl-IP>

If the ping fails to find the cloudSwXtch instance by name, try pinging the IP address of the cloudSwXtch instance. If the IP works, then use the IP address in place of the <switch-instance-name> in all further commands. This can happen if the DNS settings are not configured for the virtual network.

Review Firewall Exceptions

The installer script will automatically open ports 10800 and 9999.

To open up additional ports (RHEL-based distros) for producing/consuming multicast traffic, use the following command:

sudo firewall-cmd --add-port=<port>/udp --permanent
sudo systemctl restart firewalld

If the ping command still fails using the IP, the VM may not have a direct connection to the cloudSwXtch and can potentially fail trying to download the installation script. Check the firewall rules and the security groups on the cloud.

The installer will install all dependencies, to know the dependencies see How to determine xNIC dependencies.

Running the Install Script

To make installation easy, the xNIC is installed from the cloudSwXtch instance via a one-time set of shell commands. The xNIC is matched to the attached cloudSwXtch instance and should be reinstalled if the cloudSwXtch version changes.

To run the install:

Open a terminal on the VM you wish to install the xNIC software on and run the following commands, which will download the installation script and then execute it:

wget http://<cloudSwXtch-ctrl-ip>/swx/services/install/swx-xnic-install.sh;
chmod +x swx-xnic-install.sh;
./swx-xnic-install.sh

The installer script will install the xNIC as a service and a set of utility applications that can be used to verify the operation of your cloudSwXtch network.  Refer to Tools and Testing page for more details. 

A successful install for an xNIC Type 2 is shown below: 

Additional Arguments

There are additional arguments when installing the xNIC. 

Note that the ctrl and data interfaces are from the VM in which the xNIC is installed. These will be set automatically by the installer. There may be some instances where you will need to specify them. For example, if you have three network interfaces and you want to specify what you want to use for ctrl or data, you can manually select them using the -ctrl_interface <interface index> or -data_interface <interface index> arguments. Also, these arguments help in complex contexts where the agent is in a different vNet/VPC from the cloudSwXtch. 

A full list of arguments is detailed below:

$ ./swx-xnic-install.sh -h
2025-09-22 21:18:33.260 ========== swXtch.io xNIC Installer ==========
Usage: ./swx-xnic-install.sh [OPTIONS]
  -u                                      just uninstall swXtch.io xNic (default: no)
  -t <1|2|3>                              NIC type to install (default: 2 if supported by the OS, 1 otherwise)
                                          For type 3, the script must be executed as root.
  -c, --ctrl_interface <interface name>   manually select control interface
  -d, --data_interface <interface name>   manually select data interface
  --ptp                                   install Precision Time Protocol (default: do not install it) **At this time PTP  can only be manually installed please contact support@swxtch.io for further instructions. 
  --verify_signature                      verify install package with respective signature file (sig_public.pem if public_key is not set).
  --public_key <public key file>          public key file to use for signature verification (used with verify parameter).
  --override_src_ip                       override the source IP of incoming packets (default: false)
  --persist                               keep persistence folder (default: do not keep it)
  -h | --help                             shows this help

Note: There is an option (-t) for users to switch between xNIC Type 1, 2 (default), or 3. All installation instructions and system requirements are solely for Type 2.

Precision Time Protocol Installation

At this time PTP can only be manually installed please contact support@swxtch.io for further instructions.

Prior to installing the xNIC, the user may need to verify the authenticity of swXtch.io's installer files. While it is not a necessary step in the installation process, it is still an available option to users with security protocols that require files to be validated.

After downloading the swxtch-xnic-install.sh file on your VM, run the following steps: 

  1. Download the public key from swXtch.io using the following command on your VM:

    curl https://services.swxtch.io/assets/sig_public.pem
  2. Move the public key into the same directory as the swxtch-xnic-install.sh file. 

  3. Run the install command with the --verify argument:

    ./swxtch-xnic-install.sh --verify_signature

The --verify_signature argument will download the .sig file associated with the xNIC installer file based on the VM's operating system, verify with the public key, and proceed to install the xNIC onto the VM as a service.

Testing

xNIC installation includes a set of utility applications that you can use to verify the operation of your cloudSwXtch network. Refer to Tools and Testing for details.

  • swx-top: An application to display real-time statistics of the cloudSwXtch instance.

  • swx-perf: An application to produce and consume unicast and multicast traffic for testing purposes.

  • swx-tcpdump: An application based on tcpdump to capture network packets and that is able to decode the swxtch.io header.

Increasing the Number of Groups Being Consumed by the xNIC

Linux environments limit the number of groups that can be consumed by the xNIC. By default, the value is set to 20. If a user needs to consume more than 20 groups through a single xNIC, they need to make a change to the kernel parameter, net.ipv4.igmp_max_memberships, in the systctl.conf file.

To do this:

  1. Open the /etc/sysctl.conf to begin editing.

  2. Add the following line:

    net.ipv4.igmp_max_memberships=4096
  3. Save the file and apply the changes immediately:

    sysctl -p
  4. Verify the change:

    sysctl net.ipv4.igmp_max_memberships

The xNIC should now be able to consume more groups.

Uninstalling xNIC on Linux

To uninstall xNIC on Linux, users can follow the steps in the xNIC Linux Uninstall Guide.

Upgrading xNIC on Linux

To upgrade xNIC on Linux, users can follow the steps in the xNIC Linux Upgrade Guide.