packetrusher
High performance 5G UE/gNB Simulator and CP/UP load tester.
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.3%) to scientific vocabulary
Keywords
Repository
High performance 5G UE/gNB Simulator and CP/UP load tester.
Basic Info
Statistics
- Stars: 140
- Watchers: 10
- Forks: 32
- Open Issues: 31
- Releases: 3
Topics
Metadata Files
README.md
PacketRusher

Description
Now with SUCI Concealing/Deconcealment (Null-Scheme, Profile A (X25519), Profile B (P-256))!
PacketRusher is a tool 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 after a careful review of existing closed issues.
PacketRusher borrows libraries and data structures from the free5gc project.
Features
- Simulate multiple UEs and gNodeB from a single tool
- We tested up to 10k UEs!
- Supports both N2 (NGAP) and N1 (NAS) interfaces for stress testing
- --pcap parameter to capture pcap of N1/N2 traffic
- Implements main control plane procedures:
- SUCI Concealing/Deconcealment (Null-Scheme, Profile A (X25519), Profile B (P-256))
- UE attach/detach (registration/identity request/authentification/security mode) procedures
- Create/Delete PDU Sessions, up to 15 PDU Sessions per UE
- Xn handover: UE handover between simulated gNodeB (PathSwitchRequest)
- N2 handover: UE handover between simulated gNodeB (HandoverRequired)
- UE Enter/Exit CM-IDLE procedures (Service Request)
- GUTI Re-registration
- Supports 5G roaming: Tested with new https://github.com/open5gs/open5gs/issues/2194 Roaming feature
- Implements high-performant N3 (GTP-U) interface
- Generic tunnel supporting all kind of traffic (TCP, UDP, Video…)
- We tested iperf3 traffic, and Youtube traffic through PacketRusher
- We roughly reach 5 GB/s per UE, which is more than what a real UE can achieve.
- Integrated all-in-one mocked 5GC/AMF for PacketRusher's integration testing
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
- Ubuntu 20.04-24.04
- All Linux distibutions with kernel >= 5.4 should work, but untested.
- There might be issues with frankenstein kernel from RHEL/CentOS/Rocky, feel free to open a bug if you encounter one!
- Windows is not supported (Windows does not support SCTP)
- Go 1.23.0 or more recent
- Root privilege
- Secure boot disabled (for custom kernel module)
PacketRusher is not yet supported on Docker.
Dependencies
```bash $ 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.24.1.linux-amd64.tar.gz && sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.24.1.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
bash
$ 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
```bash $ 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
bash
$ 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:
latex
@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-2025 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.
Owner
- Name: Hewlett Packard Enterprise
- Login: HewlettPackard
- Kind: organization
- Website: http://www.hpe.com
- Repositories: 161
- Profile: https://github.com/HewlettPackard
Hewlett Packard Enterprise on github; please contact github@hpe.com for access
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "D'Emmanuele"
given-names: "Valentin"
orcid: "https://orcid.org/0009-0008-5802-401X"
- family-names: "Raguideau"
given-names: "Akiya"
title: "PacketRusher: High performance 5G UE/gNB Simulator and CP/UP load tester"
version: 1.0.0
doi: 10.5281/zenodo.10446651
date-released: 2023-11-29
url: "https://github.com/HewlettPackard/PacketRusher"
references:
- type: article
authors:
- given-name: Lucas
family-name: Silveira
name-suffix: B.D.
- given-name: Henrique
family-name: de Resende
- given-name: Cristiano
family-name: Both
name-suffix: B.
- given-name: Johann
family-name: Marquez-Barja
name-suffix: M.
- given-name: Bruno
family-name: Silvestre
- given-name: Kleber
family-name: Cardoso
name-suffix: V.
title: "Tutorial on communication between access networks and the 5G core"
year: 2022
journal: Computer Networks
volume: 216
doi: 10.1016/j.comnet.2022.109301
url: https://doi.org/10.1016/j.comnet.2022.109301
GitHub Events
Total
- Create event: 3
- Release event: 1
- Issues event: 50
- Watch event: 31
- Issue comment event: 62
- Push event: 12
- Gollum event: 2
- Pull request event: 24
- Pull request review event: 14
- Pull request review comment event: 3
- Fork event: 9
Last Year
- Create event: 3
- Release event: 1
- Issues event: 50
- Watch event: 31
- Issue comment event: 62
- Push event: 12
- Gollum event: 2
- Pull request event: 24
- Pull request review event: 14
- Pull request review comment event: 3
- Fork event: 9
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 79
- Total pull requests: 56
- Average time to close issues: 3 months
- Average time to close pull requests: 3 days
- Total issue authors: 27
- Total pull request authors: 10
- Average comments per issue: 1.3
- Average comments per pull request: 0.7
- Merged pull requests: 49
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 21
- Pull requests: 12
- Average time to close issues: about 1 month
- Average time to close pull requests: about 15 hours
- Issue authors: 14
- Pull request authors: 5
- Average comments per issue: 1.0
- Average comments per pull request: 0.58
- Merged pull requests: 11
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- linouxis9 (32)
- yoursunny (7)
- huahuaLover (4)
- IgnacioCTO (3)
- rjaksa (3)
- abousselmi (3)
- Mouradnetworking (2)
- LSKhappychild (2)
- infinitydon (2)
- Borjis131 (2)
- sambitcom (2)
- avrodriguezgrad (2)
- HasibuzzamanFUAS (1)
- MA3CIN (1)
- Raguideau (1)
Pull Request Authors
- linouxis9 (39)
- Raguideau (20)
- brianchennn (11)
- yoursunny (9)
- abousselmi (6)
- fossabot (2)
- chen042531 (1)
- gw-de (1)
- infinitydon (1)
- Alonza0314 (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v2 composite
- actions/setup-go v2 composite
- $BASE_IMAGE latest build
- packetrusher latest
- github.com/aead/cmac v0.0.0-20160719120800-7af84192f0b1
- github.com/antonfisher/nested-logrus-formatter v1.3.1
- github.com/cpuguy83/go-md2man/v2 v2.0.2
- github.com/davecgh/go-spew v1.1.1
- github.com/free5gc/go-gtp5gnl v1.4.5
- github.com/free5gc/nas v1.1.1
- github.com/free5gc/openapi v1.0.6
- github.com/free5gc/util v1.0.4
- github.com/golang-jwt/jwt v3.2.1+incompatible
- github.com/google/gopacket v1.1.19
- github.com/ishidawataru/sctp v0.0.0-20230406120618-7ff4192f6ff2
- github.com/khirono/go-genl v1.0.1
- github.com/khirono/go-nl v1.0.4
- github.com/khirono/go-rtnllink v1.1.1
- github.com/kr/text v0.2.0
- github.com/mitchellh/mapstructure v1.4.2
- github.com/russross/blackfriday/v2 v2.1.0
- github.com/sirupsen/logrus v1.9.2
- github.com/tetratelabs/wazero v1.3.0
- github.com/urfave/cli/v2 v2.25.5
- github.com/vishvananda/netlink v1.1.0
- github.com/vishvananda/netns v0.0.4
- github.com/wmnsk/go-gtp v0.8.6
- github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673
- golang.org/x/net v0.16.0
- golang.org/x/sys v0.13.0
- gopkg.in/yaml.v2 v2.4.0
- github.com/aead/cmac v0.0.0-20160719120800-7af84192f0b1
- github.com/antonfisher/nested-logrus-formatter v1.3.1
- github.com/cpuguy83/go-md2man/v2 v2.0.2
- github.com/creack/pty v1.1.9
- github.com/davecgh/go-spew v1.1.0
- github.com/davecgh/go-spew v1.1.1
- github.com/free5gc/go-gtp5gnl v1.4.5
- github.com/free5gc/nas v1.1.1
- github.com/free5gc/openapi v1.0.6
- github.com/free5gc/util v1.0.4
- github.com/golang-jwt/jwt v3.2.1+incompatible
- github.com/google/go-cmp v0.5.8
- github.com/google/gopacket v1.1.19
- github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1
- github.com/ishidawataru/sctp v0.0.0-20230406120618-7ff4192f6ff2
- github.com/jtolds/gls v4.20.0+incompatible
- github.com/khirono/go-genl v1.0.1
- github.com/khirono/go-nl v1.0.4
- github.com/khirono/go-rtnllink v1.1.1
- github.com/kr/pretty v0.1.0
- github.com/kr/text v0.2.0
- github.com/mitchellh/mapstructure v1.4.2
- github.com/pascaldekloe/goe v0.1.0
- github.com/pmezard/go-difflib v1.0.0
- github.com/russross/blackfriday/v2 v2.1.0
- github.com/sirupsen/logrus v1.9.2
- github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d
- github.com/smartystreets/goconvey v1.6.4
- github.com/stretchr/objx v0.1.0
- github.com/stretchr/testify v1.7.0
- github.com/tetratelabs/wazero v1.3.0
- github.com/urfave/cli/v2 v2.25.5
- github.com/vishvananda/netlink v1.1.0
- github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df
- github.com/vishvananda/netns v0.0.4
- github.com/wmnsk/go-gtp v0.8.6
- github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673
- golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
- golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550
- golang.org/x/lint v0.0.0-20200302205851-738671d3881b
- golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee
- golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
- golang.org/x/net v0.0.0-20190620200207-3b0461eec859
- golang.org/x/net v0.16.0
- golang.org/x/sync v0.0.0-20190423024810-112230192c58
- golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
- golang.org/x/sys v0.0.0-20190412213103-97732733099d
- golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444
- golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8
- golang.org/x/sys v0.13.0
- golang.org/x/text v0.3.0
- golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7
- golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898
- gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
- gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127
- gopkg.in/yaml.v2 v2.4.0
- gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
- gopkg.in/yaml.v3 v3.0.1
- actions/checkout v3 composite
- codacy/codacy-analysis-cli-action d840f886c4bd4edc059706d09c6a1586111c540b composite
- github/codeql-action/upload-sarif v2 composite