Virne
[ICLR '26 - Virne] A simulator & benchmark for resource allocation (RA) problems in network function virtualization (NFV), i.e., NFV-RA, including virtual network embedding, service function chain deployment, network slicing, etc.
Install / Use
/learn @GeminiLight/VirneREADME
Virne is a simulator and benchmark designed to address resource allocation (RA) problems in network function virtualization (NFV), with a highlight on supporting reinforcement learning (RL)-based algorithms.
In the literature, RA in NFV is often termed Virtual Network Embedding (VNE), Virtual Network Function (VNF) placement, service function chain (SFC) deployment, or network slicing in 5G.
Virne offers a unified and comprehensive framework for NFV-RA, with the following key features:
- 1️⃣ Highly Customizable Simulations: Simulates diverse network environments (e.g., cloud, edge, 5G), with user-defined topologies, resources, and service requirements.
- 2️⃣ Extensive Algorithm Suite: Implements 30+ NFV-RA algorithms (including exact, heuristics, meta-heuristics, and RL-based methods) in a modular, extensible architecture.
- 3️⃣ Reinforcement Learning Support: Provides standardized RL pipelines and Gym-style environments for rapid development and benchmarking of RL-based solutions.
- 4️⃣ In-depth Evaluation Aspects: Enables insightful analysis beyond effectiveness, covering multiple practicality perspectives (e.g., solvability, generalization, and scalability).
[!IMPORTANT] 🎉 We have released the benchmark paper of Virne. Welcome to check it out!
✨ If you have any questions, please open a new issue or contact me via email (wtfly2018@gmail.com)

Citations
❤️ If you find Virne helpful to your research, please feel free to cite our related papers.
Benchmark Paper
[arXiv, 2025] Virne (paper) & code
@article{tfwang-2025-virne,
title={Virne: A Comprehensive Benchmark for Deep RL-based Network Resource Allocation in NFV},
author={Wang, Tianfu and Deng, Liwei and Chen, Xi and Wang, Junyang and He, Huiguo and Ding, Leilei and Wu, Wei and Fan, Qilin and Xiong, Hui},
journal={arXiv preprint arXiv:2507.19234},
year={2025},
}
Algorithmic Papers
[IJCAI, 2024] FlagVNE (paper & code)
@INPROCEEDINGS{ijcai-2024-flagvne,
title={FlagVNE: A Flexible and Generalizable Reinforcement Learning Framework for Network Resource Allocation},
author={Wang, Tianfu and Fan, Qilin and Wang, Chao and Ding, Leilei and Yuan, Nicholas Jing and Xiong, Hui},
booktitle={Proceedings of the 33rd International Joint Conference on Artificial Intelligence},
year={2024},
}
[TSC, 2023] HRL-ACRA (paper & code)
@ARTICLE{tsc-2023-hrl-acra,
author={Wang, Tianfu and Shen, Li and Fan, Qilin and Xu, Tong and Liu, Tongliang and Xiong, Hui},
journal={IEEE Transactions on Services Computing},
title={Joint Admission Control and Resource Allocation of Virtual Network Embedding Via Hierarchical Deep Reinforcement Learning},
volume={17},
number={03},
pages={1001--1015},
year={2024},
}
[ICC, 2021] DRL-SFCP (paper & code)
@INPROCEEDINGS{icc-2021-drl-sfcp,
author={Wang, Tianfu and Fan, Qilin and Li, Xiuhua and Zhang, Xu and Xiong, Qingyu and Fu, Shu and Gao, Min},
booktitle={ICC 2021 - IEEE International Conference on Communications},
title={DRL-SFCP: Adaptive Service Function Chains Placement with Deep Reinforcement Learning},
year={2021},
pages={1-6},
}
Table of Contents
Quick Start
Installation
- Create a new conda environment
conda create -n virne python=3.10
conda activate virne
- Install with script
# use cpu
bash install.sh -c 0
# use cuda (only support cuda=12.4 and torch=2.6.0)
bash install.sh -c 12.4
Running Examples
- Run the default example
Before running the example, you could update the configuration file in settings/ directory to set the parameters on simulation and algorithm.
python main.py
- Run with custom configuration
Virne is built on Hydra, which allows you to override configuration parameters directly from the command line.
python main.py CONFIG_NAME=NEW_VALUE
Some examples of command line arguments are:
# Run with a specific nfv-ra algorithm
python main.py solver.solver_name=nrm_rank
# Run with a specific physical topology
python main.py p_net_setting.topology.file_path=../../datasets/topology/Geant.gml
# Run with a specific network system
python main.py system.if_offline_system=true
Implemented Algorithms
Virne has implemented the rich heuristic-based and learning-based algorithms for NFV-RA. Some of them are listed in the following tables.
Learning-based Solvers
| Name | Command | Type | Mapping | Title | Publication | Year | Note |
| ------------------------------ | ---------------------- | ------------ | ------------------------------------------------------------ | -------------- | ---- | ---- | ------------------------------ |
| PG-CNN2 | pg_cnn2 | learning | two-stage | A Virtual Network EmbeddingAlgorithm Based On Double-LayerReinforcement Learning | The Computer Journal | 2022 | |
| A3C-G3C-Seq2Seq* | a3c_gcn_seq2seq | learning | joint_pr | DRL-SFCP: Adaptive Service Function Chains Placement with Deep Reinforcement Learning | ICC | 2021 | |
| PG-CNN-QoS | pg_cnn_qos | learning | two-stage | Resource Management and Security Scheme of ICPSs and IoT Based on VNE Algorithm | IoTJ | 2021 | |
| PG-Seq2Seq | pg_seq2seq | learning | joint_pr | A Continuous-Decision Virtual Network Embedding Scheme Relying on Reinforcement Learning | TNSM | 2020 | |
| GAE-Clustering | gae_clustering | learning | bfs_trials | Accelerating Virtual Network Embedding with Graph Neural Networks | CNSM | 2020 | Clustering |
| PG-MLP | pg_mlp | learning | joint_pr | NFVdeep: adaptive online service function chain deployment with deep reinforcement learning. | IWQOS | 2019 | |
| Hopfield-Network | hopfield_network | learning | two-stage | NeuroViNE: A Neural Preprocessor for Your Virtual Network Embedding Algorithm | INFOCOM | 2018 | Subgraph Extraction |
| PG-CNN | pg_cnn | learning | two-stage | A Novel Reinforcement Learning Algorithm for Virtual Network Embedding | Neurocomputing | 2018 | |
| MCTS | mcts | learning | two-stage | Virtual Network Embedding via Monte Carlo Tree Search | TCYB | 2018 | MultiThreading Support |
*means that the algorithm only supports chain-shape virtual networks embedding
Meta-heuristics Solvers
| Name | Command | Type | Mapping | Title | Publication | Year | Note | | ------------------------------ | ------------- | ------------ | ------------ | -----------------------------------------
