ixy.cs is a C# rewrite of the ixy userspace network driver.
It is designed to be readable, idiomatic C# code.
It supports Intel 82599 10GbE NICs (
- See Ixy documentation
Install the .NET Core SDK (if you're on Ubuntu 16.10, you can use the dotnet_install_ubuntu_16.sh script).
Clone this repository and build the driver:
This will build the driver in debug and release configuration and compile the C code.
Set up hugepages
Run the packet generator demo
sudo dotnet bin/release/netcoreapp2.0/IxyCs.dll pktgen PCI_ADDRESS
sudo dotnet bin/release/netcoreapp2.0/IxyCs.dll fwd PCI_1 PCI_2
Replace PCI_ADDRESS with the fully qualified PCI address of your NIC, which is typically prefixed with
Using dotnet run or the debug configuration severely decreases performance!
src/Ixgbe/IxgbeDevice.cs contains the core logic. The demos are in
Ixgbe/IxgbeDefs.cs file contains a huge amount of NIC-related constants. Most of these are not used in this driver.
ixy.cs is licensed under the MIT license.
Ixy.cs is not production-ready. Do not use it in critical environments or on any systems with data you don't want to lose!
Check out the other ixy implementations.