wineslab / colosseum-oran-commag-dataset

Dataset for the paper L. Bonati, S. D'Oro, M. Polese, S. Basagni, T. Melodia, "Intelligence and Learning in O-RAN for Data-driven NextG Cellular Networks," IEEE Communications Magazine, vol. 59, no. 10, pp. 21–27, October 2021.
https://ieeexplore.ieee.org/abstract/document/9627832
45 stars 13 forks source link

Colosseum O-RAN COMMAG Dataset

This repository contains the dataset for the paper L. Bonati, S. D'Oro, M. Polese, S. Basagni, T. Melodia, "Intelligence and Learning in O-RAN for Data-driven NextG Cellular Networks," IEEE Communications Magazine, vol. 59, no. 10, pp. 21–27, October 2021. Please cite the paper if you plan to use it in your publication.

Experiment setup

Dataset structure

Training configurations

The scheduling policies and initial Resource Block Group (RBG) allocations for each slice are as follows.

Slice Scheduling Policy Slice RBG Allocation
Training Slice 0 Slice 1 Slice 2 Slice 0 Slice 1 Slice 2
tr0 PF RR PF 1 2 4
tr1 WF RR RR 1 4 2
tr2 RR PF WF 2 1 4
tr3 WF WF PF 2 4 1
tr4 RR WF WF 4 2 1
tr5 WF WF WF 4 1 2
tr6 PF PF WF 2 2 3
tr7 WF RR PF 2 3 2
tr8 WF PF RR 3 2 2
tr9 PF WF RR 3 3 1
tr10 RR RR PF 3 1 3
tr11 RR PF RR 1 3 3
tr12 RR RR RR 1 2 4
tr13 WF PF WF 1 4 2
tr14 PF WF PF 4 2 1
tr15 RR WF PF 3 1 4
tr16 PF RR RR 1 2 4
tr17 PF RR WF 1 2 4

Dynamic slice resizing

After the initial allocation, the RBGs for each slice are dynamically re-allocated as follows.

Time [s] RBG Slice 0 RBG Slice 1 RBG Slice 2
0-30 initial allocation (see training configurations above)
30-60 1 2 4
60-90 1 4 2
90-120 2 1 4
120-150 2 4 1
150-180 4 2 1
180-210 4 1 2
210-240 2 2 3
240-270 2 3 2
270-300 3 2 2
300-330 3 3 1
330-360 3 1 3
360-390 1 3 3
390-420 1 2 4
420-450 1 4 2
450-480 4 2 1

Testing the DRL agents

This repository contains the script test_agent_release.py, which is used to test the DRL agents we used in our work. The script executes in three phases:

All required dependencies are included in the requirements.txt file.

Remark 1: anyone interested in feeding real-time data to the DRL agents must implement proper methods to (i) gather data from DUs (i.e., get_data_from_DUs()); (ii) feed it to the DRL agent (i.e., split_data()); and (iii) feed back the output of the DRL agent to the DUs (i.e., send_action_to_DU()).

Phase 1

We load the 3 DRL agents and the encoder portion of the autoencoder we used in the experimental section of our work. All models are stored in ml_models and loaded when starting the script. We have one DRL agent (i.e., the trained Proximal Policy Optimization (PPO) policy network) per slice. Rewards vary across the various DRL agents and are set as follows:

These metrics are reported periodically by DUs and, in our case, are contained in the CSV repository included in this repository.

Phase 2

We load the CSV dataset included in the repository. CSV files are loaded into Pandas DataFrame structures, which are used in this case to feed the DRL agents with data. In real-world deployments, data is reported directly from DUs. In this case, and for testing purposes only, we provide functions to emulate such data by extracting it from the dataset we collected.

Phase 3

We run a loop that extracts data from the dataset and feeds it to each DRL agent. Data is taken from the dataset at random, grouped according to the slice they belong to, and fed to the corresponding DRL agent, which uses the PPO policy network to compute the best action to maximize the reward.