NICs are usually way overprovisioned on cloud servers. 27% of network bandwidth in a rack isn't even allocated because it runs out of CPU or memory resources first. The allocated bandwidth is also seriously underutilized, with racks typically having <20% utilization even in the 99.99th percentile.
If we could share NICs among multiple hosts, we'd get much better utilization by, e.g., using only one NIC for 4 hosts. And, by pooling resources, we can make extra NICs available within the rack to tolerate failures, without a huge utilization penalty.
The CXL interconnect gives us a way to share resources between servers that is relatively cheap (compared to PCIe switches) and high performance. For some workloads, it may already be deployed in order to pool memory.
Our work shows that we can also use it to share NICs, SSDs, and other PCIe resources. We do this by creating a message channel in shared CXL memory that allows a driver on one machine to send a message to the machine that hosts the PCIe device.
For more information, the full paper is available at https://drkp.net/papers/oasis-sosp25.pdf
and the source code at https://bitbucket.org/yuhong_zhong/oasis