An OpenTelemetry-based tracing proxy for a 5G core's Service-Based Interface (SBI) traffic. It classifies each SBI call into a 5G procedure (UE Registration, PDU Session Establishment, ...) and correlates the calls belonging to one UE's one procedure into a single trace.
- The contribution is
src/scp-tracer. - Everything else in this repo is the evaluation testbed used to benchmark it.
src/
scp-tracer/ The OTel tracing proxy
open5gs/ Dockerfiles that build the 5G core
ueransim/ Dockerfiles that build the RAN
conf/ per-stack configs for each NF
docker-compose-cn*.yaml compose file per stack (described below)
docker-compose-ran-bulk.yaml gNB + UE simulator
scripts/ UE provisioning helpers
evaluation/ the paper evaluation scripts and results
| Compose file | Proxy | Deployment model | Traces |
|---|---|---|---|
docker-compose-cn.yaml |
none | Model B | no |
docker-compose-cn-scp.yaml |
Open5GS SCP | Model C | no |
docker-compose-cn-scp-d.yaml |
Open5GS SCP | Model D | no |
docker-compose-cn-scp-tracer.yaml |
scp-tracer | Model C | yes |
docker-compose-cn-scp-tracer-d.yaml |
scp-tracer | Model D | yes |
docker-compose-cn-scp-traefik.yaml |
Traefik | Model C | yes |
docker-compose-cn-scp-traefik-d.yaml |
Traefik | Model D | yes |
Prerequisites: Docker with Compose v2, and a Linux host.
Each core-network stack only exposes two ports to the host: MongoDB (27017/tcp); and Jaeger (16686/tcp).
Clone the repository:
git clone https://github.com/simula/anservapp26.git
cd anservapp26Build the base images:
docker build -t base-open5gs:v2.7.6 -f src/open5gs/base/Dockerfile .
docker build -t base-ueransim:v3.2.7 -f src/ueransim/base/Dockerfile .Then bring up the stacks:
# 1. bring up a core-network stack
docker compose -f docker-compose-cn-scp-tracer.yaml up -d --build
# 2. provision some subscribers in DB
scripts/add-ues.sh 20
# 3. bring up the RAN and UEs
N_UES=20 docker compose -f docker-compose-ran-bulk.yaml up -d --build
# 4. view traces
open http://localhost:16686Tear down:
docker compose -f docker-compose-ran-bulk.yaml down
docker compose -f docker-compose-cn-scp-tracer.yaml downSwap the compose file in step 1 for any of the stacks above.
cd evaluation
./run_all.sh # runs 10 times by default; ./run_all.sh 5 for 5 runsRaw results land in evaluation/results/*.csv (registration_latency.csv,
pdu_latency.csv, resource_consumption.csv).
The paper also compares against 5gmap (MobiCom 2025). That baseline's code isn't included here. Clone and build it from their repo if you want to reproduce that comparison.
AGPL-3.0, see LICENSE.
The Docker/Compose tooling (src/open5gs/*/Dockerfile, conf/,
docker-compose-cn*.yaml) is adapted (2026) from
Borjis131/docker-open5gs.
@inproceedings{mekrache2026scp,
title = {SCP-Tracer: Procedure-Aware 5G Core Tracing},
author = {Mekrache, Abdelkader and Cicic, Tarik},
booktitle = {2026 22nd International Conference on Network and Service Management (CNSM)},
pages = {1--6},
year = {2026},
organization = {IEEE}
}