HewlettPackard / PacketRusher

High performance 5G UE/gNB Simulator and CP/UP load tester.
Apache License 2.0
100 stars 21 forks source link
5g 5g-simulation 5gc gnb load-testing packetrusher

PacketRusher

PacketRusher Logo


Description

PacketRusher is a tool, based upon my5G-RANTester, dedicated to the performance testing and automatic validation of 5G Core Networks using simulated UE (user equipment) and gNodeB (5G base station).

If you have questions or comments, feel free to open an issue.

PacketRusher borrows libraries and data structures from the free5gc project.

Features

Installation

Quick start guide

The following is a quick start guide, for more details on the installation, configuration or usage, you may refer to the wiki.

Requirements

PacketRusher is not yet supported on Docker.

Dependencies

$ sudo apt install build-essential linux-headers-generic make git wget tar linux-modules-extra-$(uname -r)
# Warning this command will remove your existing local Go installation if you have one:
$ wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz && sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz
# Add go binary to the executable PATH variable:
$ echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.profile

Download PacketRusher source code

$ git clone https://github.com/HewlettPackard/PacketRusher # or download the ZIP from https://github.com/HewlettPackard/PacketRusher/archive/refs/heads/master.zip and upload it to your Linux server
$ cd PacketRusher && echo "export PACKETRUSHER=$PWD" >> $HOME/.profile
$ source $HOME/.profile

Build free5gc's gtp5g kernel module

$ cd $PACKETRUSHER/lib/gtp5g
$ make clean && make && sudo make install
# Make sure you have Secure boot disabled if you are unable to install the custom Kernel module

Build PacketRusher CLI

$ cd $PACKETRUSHER
$ go mod download
$ go build cmd/packetrusher.go
$ ./packetrusher --help

You can edit the configuration in $PACKETRUSHER/config/config.yml as specified here, and then run a basic scenario using sudo ./packetrusher ue while in the $PACKETRUSHER folder.
More complex scenarios are possible using sudo ./packetrusher multi-ue, see ./packetrusher multi-ue --help for more details.
For more details on the installation, configuration or usage, you may refer to the wiki.

Contributing

We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great!
You can review our contributing guide.

Developer's Certificate of Origin

All contributions must include acceptance of the DCO.

Sign your work

To accept the DCO, simply add this line to each commit message with your name and email address (git commit -s will do this for you):

Signed-off-by: Jane Example <jane@example.com>

For legal reasons, no anonymous or pseudonymous contributions are accepted.

Citation

If you use this software, you may cite it as below:

@software{PacketRusher,
  author = {D'Emmanuele, Valentin and Raguideau, Akiya},
  doi = {10.5281/zenodo.10446651},
  month = nov,
  title = {{PacketRusher: High performance 5G UE/gNB Simulator and CP/UP load tester}},
  url = {https://github.com/HewlettPackard/PacketRusher},
  version = {1.0.0},
  year = {2023}
}

License

© Copyright 2023 Hewlett Packard Enterprise Development LP

© Copyright 2024 Valentin D'Emmanuele

This project is under the Apache 2.0 License license.

By contributing here, you agree to license your contribution under the terms of the Apache 2.0 License. All files are released with the Apache License 2.0.

PacketRusher borrows libraries and data structures from the free5gc project, and is originally based upon my5G-RANTester.