OpenSat is an open-source satellite network service framework built on Open5GS, focusing on mobility management for Low Earth Orbit (LEO) satellite networks.
It primarily investigates the process of traffic handover between core networks and its impact on upper-layer application services.
This repo is based on open5gs v2.7.4
Currently, there are several branch:
stable
: ensure stability- all config files are unmodified
- all func and module tests should be 100/100
mm-roam
: nightly built- config files are modified with the requirement of 5G Roaming
- some errors when testing func and modules in Open5GS User's Guide, no worry
tcpgen
: interact with UERANSIM- working on "End2End Terrestrial TrafficGen" experiments
mm-switch
:- inspired by #issue 5
- working on "Dynamic CoreNets" experiments
There are some testing platforms interacting closely with OpenSat:
- open5gs-satellite: independent
- ueransim-satellite: independent
- free5gc: forked
Everything you should know about 5G before getting started
- 5G Network Overwiew && 5G Architecture
- Mobility Management
- 5G Roaming (HR and LBO)
- Basic Tools for OpenSat
Your device should be prepared
Details can be checked at pre-opensat doc.
(0) Prerequisites for OpenSat
cd $OPEN5GS_SATELLITE
# create and activate pyvenv for opensat
python3 -m venv .venv
source activate-opensat
# now you can use `opensat` command
opensat -h
(1) Skeleton
Follow Building Open5GS from Sources - Open5GS to configure and build the skeleton:
- Getting MongoDB
- Setting up TUN device (not persistent after rebooting)
- Building Open5GS
- ensure all tests go smoothly
- config file:
$open5gs-satellite/build/configs/sample.yaml
- Running Open5GS
- no Configure Open5gs, run directly!
- ensure all tests work well
- config files:
$open5gs-satellite/install/etc/open5gs/[NAME].yaml
- Building the WebUI of Open5GS
(2) Roaming Between Core Networks
Follow Roaming: Roaming Test on a Single Host to build a simple test:
- Config Home PLMN
- Config Visited PLMN
- Run the V-PLMN 5G Core and H-PLMN 5G Core on a single host
- Home Network: open multiple windows, keep running for connection
- Visited Network: open multiple windows, keep running for observation
- Performs a test of UE access while roaming subscribed to H-PLMN
Warning: Something You Should Know Before Using OpenSat
(1) Every time you git pull
, you need to rebuild the whole system:
# rebuild
cd open5gs-satellite
meson build --prefix=`pwd`/install
ninja -C build
# test
./build/tests/attach/attach ## EPC Only
./build/tests/registration/registration ## 5G Core Only
# ...
(2) Every time you restart your experiment device (PC/VM/Server...), you have to reconfigure the networks:
# initialize opensat system: net | tun | db
opensat sysinit
(3) Every time you finish your experiments, please deconstruct all open5gs resources:
# cleanup all opensat resources: ps | tun | db
opensat syscls
For Integrated Space-Terrestrial Network (ISTN), focusing on mobility management of satellite networks.
Details can be checked here.
Experiments | Slide | Jump to | Status |
---|---|---|---|
Roaming on Single Host | RoamingSim | mm-roam branch | ✅ |
End2End TrafficGen Instances (Terrestrial) | End2End TrafficGen | tcpgen branch | ✅ |
End2End TrafficGen Instances (Satellite) | TBD | TBD | ⌛️ |
Dynamic CoreNets | TBD | (stage 1) mm-switch branch (stage 2) Open5GS-1: tcpgen branch + Open5GS-2: mm-switch branch | 🚧 |
High-Frequency Link Establishment | TBD | TBD | ⌛️ |
Roaming between Multiple Satellite CoreNets | TBD | TBD | ⌛️ |
We welcome all contributions to the project! See CONTRIBUTING for how to get involved.
Copyright (C) 2025 OpenSat Boxuan Hu [email protected]