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 firewalldIf 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.shThe 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:

For other xNIC types see How to determine correct xNIC Type.
For setting up rp_filters see Setting up the rp_filter on Linux.
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 helpNote: 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:
Download the public key from swXtch.io using the following command on your VM:
curl https://services.swxtch.io/assets/sig_public.pemMove the public key into the same directory as the swxtch-xnic-install.sh file.
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
tcpdumpto 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:
Open the
/etc/sysctl.confto begin editing.Add the following line:
net.ipv4.igmp_max_memberships=4096Save the file and apply the changes immediately:
sysctl -pVerify 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.