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.
slice_mixed
: UEs are randomly distributed across slicesslice_traffic
: UEs are divided per slice based on traffic types:
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 |
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 |
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:
ml_models
;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()
).
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:
tx_brate downlink [Mbps]
, which represents the downlink throughput in Mbps as measured by srsLTE;tx_brate downlink [Mbps]
, which represents the downlink throughput in Mbps as measured by srsLTE;ratio_granted_req
, which represents the ratio between the number of PRBs allocated by the scheduler and those requested by the UEs. The higher the value, the faster requests are satisfied and traffic experience low latency.These metrics are reported periodically by DUs and, in our case, are contained in the CSV repository included in this repository.
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.
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.