Ixy.py Save

Simple userspace packet processing for educational purposes 🎓

Project README

ixy.py

MIT licensed

ixy.py is a Python rewrite of the ixy userspace network driver. It is designed to be readable, idiomatic Python code. It supports Intel 82599 10GbE (ixgbe family) and Virtio NICs.

Build instructions

Install python3.6 or higher.

From source:

# Install Python 3.7.2 (To be adapted accordingly for the version of choice)
PYTHON_VERSION=3.7.2
PYTHON_DIR="Python-$PYTHON_VERSION"
wget "https://www.python.org/ftp/python/$PYTHON_VERSION/$PYTHON_DIR.tgz"
tar xvf "$PYTHON_DIR.tgz"
rm "$PYTHON_DIR.tgz"
cd $PYTHON_DIR
./configure --enable-optimizations
make -j8
sudo make altinstall
cd ..
rm -fr $PYTHON_DIR

Install pip

wget https://bootstrap.pypa.io/get-pip.py
python3.7 get-pip.py
rm -f get-pip.py

Create a virtual environment

python3.7 -m venv venv
source venv/bin/activate

Install cython

pip install cython

or (from the project directory)

pip install -r <path-to-project-directory>/requirements-dev.txt

Install ixypy

pip install <path-to-project-directory>

Enable hugepages

sudo ./setup-hugetables.sh

Run one of the sample applications in the following way:

python ixy-fwd.py <pci_1> <pci_2>

or

python ixy-pktgen.py <pci>

Disclaimer

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

Other languages

Check out the other ixy implementations

Profiling

cProfile

cProfile

Pystats

Flamegraph

Linux perf

FlameGraph

Open Source Agenda is not affiliated with "Ixy.py" Project. README Source: ixy-languages/ixy.py
Stars
33
Open Issues
0
Last Commit
3 years ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating