Code for the paper "SRmesh: Deterministic and Efficient Diagnosis of Latency Bottleneck Links in SRv6 Networks" in IEEE ICNP 2025
| Component | Description |
|---|---|
| Frontend | Web-based user interface for visualization and interaction (see ./frontend/) |
| Controller | Central orchestration component that manages the diagnosis process |
| Agent | Distributed monitoring agents deployed on network nodes |
| Analyzer | Data analysis component for processing network metrics |
| Docker Infrastructure | Containerized deployment for easy scalability |
| Requirement | Details |
|---|---|
| Docker | Version 20.10 or higher |
| Docker Compose | Version 2.0 or higher |
| Linux environment | Kernel version 5.4 or higher (recommended for eBPF support) |
| Resources | At least 8GB RAM and 20GB disk space |
# Clone the repository
git clone https://github.com/DeepShield-AI/SRmesh.git
cd SRmesh
# Build and deploy the entire system
cd docker
chmod +x run.sh
./run.sh
# Start the system
docker compose up -dThe system supports custom network topologies. Configure your topology in:
docker/conf/topo.json- Primary topology configurationdocker/conf/topo2.json- Alternative topology configuration
Example topology configuration:
{
"nodes": [
{
"id": "node1",
"type": "router",
"ipv6": "fc00::1/64"
},
{
"id": "node2",
"type": "router",
"ipv6": "fc00::2/64"
}
],
"links": [
{
"source": "node1",
"target": "node2",
"latency": "10ms"
}
]
}SRmesh supports automatic injection of artificial delay (latency bottlenecks) for testing and diagnosis. This feature is integrated into the deployment and analysis workflow.
Step 1: Inject Delay via run.sh
You can specify delay injection for any container interface when starting the system:
cd docker
# Syntax: ./run.sh --delay <container> <interface> [delay]
./run.sh --delay Wulumuqi eth1 100ms
# You can specify multiple --delay parameters in one command
./run.sh --delay Wulumuqi eth1 100ms --delay Beihang eth2 200msThis will automatically set the specified delay (default: 200ms if omitted) on the given container interface(s) after startup. All delay settings are applied before the system begins probing.
Step 2: Check Delay Configuration
To verify the current delay (netem) settings on all containers, use:
cd docker
./check_delay.shThis script will print the network interfaces and their delay rules for each running container, helping you confirm that artificial bottlenecks are in effect.
Step 3: Run Automated Bottleneck Diagnosis
After running the system and collecting probe data, the analyzer will automatically diagnose and report bottleneck links:
- The analyzer (
analyzer/analyzer.py) is invoked automatically at the end ofrun.sh(on exit or Ctrl+C), or can be run manually:
cd analyzer
python3 analyzer.py
# Optionally specify a custom bottleneck threshold (ms):
python3 analyzer.py 80The analyzer will output:
- Estimated per-link delays
- Detected bottleneck links (with severity)
- A summary report
This workflow enables end-to-end testing of delay injection, verification, and diagnosis in SRmesh.
Key environment variables for configuration:
| Variable | Description | Default |
|---|---|---|
CONTROLLER_PORT |
Controller gRPC port | 50051 |
LOG_LEVEL |
Logging level | INFO |
METRICS_INTERVAL |
Metrics collection interval | 5s |
# Check all services status
docker compose ps
# View controller logs
docker logs controller -f
# Check agent connectivity
docker exec point-1 ping fc00::2
# Monitor network traffic
docker exec controller tcpdump -i any -n1. Port conflicts
# Check if port 50051 is in use
ss -tnlp | grep 50051
# Kill conflicting processes if needed
sudo kill $(sudo lsof -t -i:50051)2. eBPF program loading failures
# Ensure kernel version support
uname -r
# Check BPF filesystem mount
mount | grep bpf3. Network connectivity issues
# Verify Docker networks
docker network ls
# Check IP routing
docker exec controller ip routeSRmesh achieves up to 95% reduction in probe traffic through three-step optimization while maintaining comprehensive network coverage. See ./simulation/ for detailed results.
- Controller README - Controller component documentation
KenyonZhao233 Major Contributor |
tongy21 Major Contributor |
@INPROCEEDINGS{11192455, author={Zhao, Kaiyang and Zhang, Han and Tong, Yao and Li, Yahui and Shi, Xingang and Wang, Zhiliang and Yin, Xia and Wu, Jianping}, booktitle={2025 IEEE 33rd International Conference on Network Protocols (ICNP)}, title={SRmesh: Deterministic and Efficient Diagnosis of Latency Bottleneck Links in SRv6 Networks}, year={2025}, volume={}, number={}, pages={1-12}, keywords={Accuracy;Uncertainty;Protocols;Network topology;Scalability;Redundancy;Prototypes;Transforms;Routing;Probes}, doi={10.1109/ICNP65844.2025.11192455}}



