The Ixy network driver re-written in C#
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
src
.gitignore
IxyCs.csproj
LICENSE
README.md
build.sh
dotnet_install_ubuntu_16.sh
setup-hugetlbfs.sh
setup-simple-hugetlbfs.sh

README.md

Ixy.cs

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 (ixgbe family).

Features

  • See Ixy documentation

Build instructions

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:

./build.sh

This will build the driver in debug and release configuration and compile the C code.

Set up hugepages

sudo ./setup-hugetlbfs.sh

Usage

Run the packet generator demo

sudo dotnet bin/release/netcoreapp2.0/IxyCs.dll pktgen PCI_ADDRESS

OR

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 0000:

Using dotnet run or the debug configuration severely decreases performance!

Internals

src/Ixgbe/IxgbeDevice.cs contains the core logic. The demos are in src/Demo. The Ixgbe/IxgbeDefs.cs file contains a huge amount of NIC-related constants. Most of these are not used in this driver.

License

ixy.cs is licensed under the MIT license.

Disclaimer

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!

Other languages

Check out the other ixy implementations.