Hybrid per-slice UPF autoscaling — sidecar telemetry agent with eBPF/XDP dataplane instrumentation
155
Lightweight sidecar designed to run alongside UPF instances in 5G standalone core deployments on Kubernetes, collecting and exporting dataplane telemetry to feed the hybrid autoscaling controller and Prometheus observability stack. Four concurrent goroutines handle collection and export independently.
| Subsystem | Source | Metrics |
|---|---|---|
| TrafficCollector | Linux sysfs /sys/class/net/<iface>/statistics/ | upf_throughput_mbps, upf_drop_rate_pct |
| LatencyCollector | Active ICMP probing on N3 | upf_latency_p95_ms, upf_latency_jitter_ms |
| EbpfCollector | eBPF/XDP hook UDP/2152 BPF_MAP_TYPE_PERCPU_ARRAY | upf_gtpu_pps |
| Dispatcher | Gauge snapshot every 5s — HTTP POST 2s timeout | ControllerPayload {slice, dnn, pod, iface, pps, throughput, drop_rate, latency_p95, jitter} |
All metrics carry labels {slice, dnn, pod, iface} on both export channels.
| Channel | Endpoint | Protocol |
|---|---|---|
| Push | /api/v1/upf-metrics → controller :8080 | HTTP POST |
| Pull | /metrics :9102 | Prometheus scraping |
Exponential backoff (1s → 10s) against /healthz before activating the push loop, preventing delivery to unavailable targets.
9102 HTTP — Prometheus /metrics
Multi-stage — golang:1.24-alpine (build) + alpine:3.20 (runtime) — eBPF object at /ebpf/gtpu.o
UPF Agent repository: github.com/5gc-hybrid-upf-autoscaling-system/upf-agent
Full project: github.com/5gc-hybrid-upf-autoscaling-system
Content type
Image
Digest
sha256:0f3a06ca7…
Size
17.5 MB
Last updated
6 months ago
docker pull lpoclin/upf-agent:v1