This repository is part of the artifact for the SIGCOMM 2026 paper "Synchronizing with the Scheduler: Dual-Loop Congestion Control for 5G Uplink on Commodity Devices."
This repository contains the cloud-side MsQuic/secnetperf receiver used with the GBR-CC sender repository:
https://github.com/QiangWu769/GBR-CC_sender
Use GBR-CC_receiver on the remote cloud machine to build and run the
secnetperf server. Use GBR-CC_sender on the phone/host sender side for
CellNinjia, DIAG parsing, GBR ratio calculation, and the GBR-CC-enabled
secnetperf client.
Android phone + host sender Cloud server
-------------------------------- ------------------------------
GBR-CC_sender GBR-CC_receiver
cellninjia_mobile reads modem DIAG ---> secnetperf receiver listens
host parser computes GBR ratio on UDP/QUIC port 4433
GBR-CC sender runs secnetperf client
The cloud server does not run CellNinjia and does not compute GBR. It only
receives the QUIC upload traffic and provides the remote secnetperf endpoint
for experiments.
git clone https://github.com/QiangWu769/GBR-CC_receiver.git
cd GBR-CC_receiver
git submodule update --init --recursiveExisting checkout:
cd /home/qwu26/GBR-CC_receiver
git submodule sync --recursive
git submodule update --init --recursiveUse the same build method as the sender-side GBR-CC_sender repository. Only
the working directory is different.
cd /home/qwu26/GBR-CC_receiver
rm -rf build
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DQUIC_BUILD_PERF=ON \
-DQUIC_ENHANCED_PACKET_LOGGING=ON \
-DQUIC_TLS_LIB=openssl
cmake --build build --target secnetperf -j"$(nproc)"Expected binary:
/home/qwu26/GBR-CC_receiver/build/bin/Release/secnetperf
Run this on the cloud server:
cd /home/qwu26/GBR-CC_receiver
./build/bin/Release/secnetperf -port:4433 -exec:maxtput -cc:bbrsecnetperf runs as a server when -target:<host> is not specified. Keep this
process running while the phone/host sender runs the upload experiment.
If the cloud firewall is enabled, allow UDP port 4433.
On the sender machine, use the companion repository:
cd /home/qwu26/GBR-CC_sender
./build/bin/Release/secnetperf \
-target:<cloud-server-ip> \
-port:4433 \
-cc:bbr \
-upload:20mb \
-ptput:1 \
-cellular:1Before running the sender command, GBR-CC_sender should already have:
cellninjia_mobilerunning on the phone.adb forward tcp:43555 tcp:43555configured.- One host parser running:
tools/cellninjia/diag_get_lte_msquic.py, ortools/cellninjia/diag_get_5g_msquic.py.
This repository keeps the cloud-side MsQuic/BBR logging and analysis utilities.
Typical receiver logs can be redirected from the secnetperf server process:
./build/bin/Release/secnetperf -port:4433 -exec:maxtput -cc:bbr \
> server_secnetperf.log 2>&1Phone-side DIAG logs, GBR ratio logs, and sender-side GBR-CC control logs belong
to the companion GBR-CC_sender repository.
src/perf/lib/SecNetPerfMain.cpp:secnetperfcommand-line entry point.src/perf/lib/PerfServer.cpp:secnetperfserver/receiver implementation.src/core/bbr.c: BBR congestion-control implementation used by receiver-side tests.src/core/bbr_packet_level_logging.c: packet-level BBR logging support.src/perf/readme.md: upstreamsecnetperfusage reference.bbr_logs/: historical BBR experiment logs and generated plots.