Rust rewrite of the ixy network driver
Clone or download
Latest commit dfc3083 Jan 30, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Refactor driver Oct 12, 2018
src Merge branch 'master' into master Jan 23, 2019
.gitignore first steps Jun 6, 2018
Cargo.toml Add simple_logger to dev dependencies Sep 19, 2018
LICENSE Initial commit May 15, 2018
README.md Update README Jan 30, 2019
setup-hugetlbfs.sh device and queues initialized Jul 5, 2018

README.md

ixy.rs

MIT licensed

ixy.rs is a Rust rewrite of the ixy userspace network driver. It is designed to be readable, idiomatic Rust code. It supports Intel 82599 10GbE NICs (ixgbe family). Check out our paper to read about the details of our implementation.

Features

  • less than 2000 lines of Rust code for the driver and two sample applications
  • simple API to use
  • super fast, can forward > 26 million packets per second on a single 3.3 GHz CPU core
  • documented code

Build instructions

You will need Rust and its package manager cargo. Install using:

curl https://sh.rustup.rs -sSf | sh -s -- -y
source $HOME/.cargo/env

Ixy.rs uses hugepages. To enable them run:

cd ixy.rs
sudo ./setup-hugetlbfs.sh

To build the provided sample applications and execute them manually run:

cargo build --release --all-targets

The built binaries are located in target/release/examples/.

To build and execute the examples at once see Usage.

Performance

Have a look at our performance results in the ixy-languages repository.

Usage

There are two sample applications included in the ixy.rs crate. You can run the packet generator with

sudo cargo run --release --example generator 0000:AA:BB.C 

and the forwarder with

sudo cargo run --release --example forwarder 0000:AA:BB.C 0000:AA:BB.D

API

src/lib.rs defines ixy.rs's public API.

Examples

examples contains all sample applications included in this crate.

Internals

src/ixgbe.rs contains the core logic.

Docs

ixy.rs contains documentation that can be created and viewed by running

cargo doc --open

License

ixy.rs is licensed under the MIT license.

Disclaimer

ixy.rs is not production-ready. Do not use it in critical environments. DMA may corrupt memory.

Other languages

Check out the other ixy implementations.