What is an xNIC?

Prev Next

WHAT TO EXPECT

In this article, you will learn how the xNIC, our virtual NIC, fits into the cloudSwXtch infrastructure.

cloudSwXtch Hybrid Network diagram xNIC

A Fully Virtualized NIC

The xNIC is a software service deployed by swXtch.io that creates a fully virtualized Network Interface Controller (NIC) within a virtual machine’s (VM) operating system. In tandem with the cloudSwXtch, the xNIC provides users with wXcked fast network connectivity and enables applications running on the VM to send and receive IP multicast traffic. It is seamless and transparent to all workloads, requiring no code changes.

xNIC installation for cloudSwXtch is required for multicast to work across all major clouds — AWS, Azure, GCP, OCI. It is available on both Linux and Windows machines as well as Kubernetes. You can find a more detailed list of xNIC system requirements, here.

In addition to multicast, the xNIC can be configured to perform high availability. At an endpoint, the xNIC compares packet reception from the multiple paths, detects dropped packets, and reconstructs the output stream in the correct order. For more information, see Configuring xNIC for High Availability.

Q: Can xNIC work on any IP within the multicast address space?

A: We recommend referring to the IANA IPv4 Multicast Address Space Registry. Currently, the xNIC can’t join a multicast stream if it’s on 224.0.0.1.

xNIC Type 1 vs. xNIC Type 2

xNIC Type 2 is the default xNIC. When running the xNIC installer script, xNIC Type 2 will automatically install. Type 2 should always be used unless kernel bypass interferes with the function of the application. In this case, use Type 1. For example, if a program requires packet captures, we would recommend using the TAP interfaces since it would expose packets earlier in the network. Another example would be a video multi-viewer as these applications typically require more information than just the video packets themselves.

Please note: For Windows machines, TAP/TUN interfaces are only supported in xNIC Type 1.

If a user would like to use xNIC Type 1, they will need to specify that argument during installation. For a complete list of available arguments, see Install xNIC on Linux or Install xNIC on Windows.