Skip to content

root-hbx/open5gs-satellite

Repository files navigation

OpenSat: Open5gs Simulator for Satellite Networks

OpenSat

Documentation Workflow Status Issues Pull Requests License Repo Stars


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:

Prerequisites for OpenSat

Everything you should know about 5G before getting started

Your device should be prepared

Details can be checked at pre-opensat doc.

Quick Start

(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

Schedule

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 ⌛️

Contributing

We welcome all contributions to the project! See CONTRIBUTING for how to get involved.

Copyright (C) 2025 OpenSat Boxuan Hu [email protected]