EdgeRIC main paper

This paper provides real-time MAC scheduler that assigns scheduling decisions per UE for each TTI. We implement multiple scheduling algorithms with this μApp. The scheduling algorithms considered in this work to demonstrate system behavior are: Max Weight, Max CQI, Proportional Fairness, Round Robin, and A custom AI based scheduler using an off-the-shelf reinforcement learning policy

MAC scheduling

This μApp offers scheduling decisions to the RAN at the granularity of one TTI (~1ms). It adopts a weight based approach for its decision. The weight of an UE corresponds to its relative priority to be scheduled given the current state of the system. We list the metrics used by this μApp below:

Metrics: ue_data[rnti]['Tx'], ue_data[rnti]['CQI'], ue_data[rnti]['BL'] for each UE.

Actions Sent: weight_{i} which corresponds to the weight of each UE i

RT-E2 Policy Format for this μApp: RNTI_{i}, weight{i} where i corresponds to each UE.

Training Reinforcement Learning Policy

Here, we train an RL agent with the objective of total system throughput maximization. Listed below are the specifications for our training:

- Algorithm used: Proximal Policy Optimization

- State_space: [BL1,CQI1,BL2,CQI2.....]

- Action_space: ``[Weight1,Weight2.....]

- Reward: Total system throughput 

Install srsRAN supporting EdgeRIC messages and control

Install zmq

git clone https://github.com/zeromq/libzmq.git  
cd libzmq  
./autogen.sh  
./configure  
make  
sudo make install  
sudo ldconfig
git clone https://github.com/zeromq/czmq.git  
cd czmq  
./autogen.sh  
./configure  
make  
sudo make install  
sudo ldconfig  

Dependencies and cloning the repository

sudo apt-get install cmake make gcc g++ pkg-config libfftw3-dev libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-dev # install dependencies

git clone https://github.com/ushasigh/EdgeRIC-A-real-time-RIC.git
cd srsRAN-4G-new-ER-design

Build the repository

./make-ran.sh

All config files are provided in srsRAN_4G-ER/.config


How to run the network

Setup the core and srsenb

Terminal 1: Run the GRC broker, depending on the number of UEs {i}

./top_block_{i}ue_23.04MHz.py

This step is not needed in over the air mode

Terminal 2: Run the EPC update the hss section in the ./config/epc.conf to your file directory

./run_epc.sh

Terminal 3: Run the enb
update ./config/enb.conf:
the [rf] section for zmq/ uhd configurations
the [enb_files] section: upadte the file directories

./run_enb.sh

Run the UEs

Run UE1:

cd srsRAN_4G-ER/build
sudo ./srsue/src/srsue ../.config/ue1.conf --rf.device_name=zmq --rf.device_args="tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6" --gw.netns=ue1

Run UE2:

cd srsRAN_4G-ER/build
sudo ./srsue/src/srsue ../.config/ue2.conf --rf.device_name=zmq --rf.device_args="tx_port=tcp://*:2011,rx_port=tcp://localhost:2010,id=ue,base_srate=23.04e6" --gw.netns=ue2

To run automated scripts for {i} UEs:

./run_srsran_{i}ue.sh # script is included for 2/ 4 UEs 

Running UEs with CQI trace files

./run_{i}ue_cqi_emul.sh # script is included for 2 UEs

You can run the UEs in separate terminals, use the commands provided in the .sh script.

Press t to view the UE metrics on console

Updating the CQI channel trace: file under concern: srsRAN_4G-er-ue1/lib/src/phy/ue/ue_dl.c, update line 155 with the desired CQI file which should be present in folder srsRAN_4G-er-ue1/cqis. Repeat the same for each UE codebase.

Stream Traffic:

cd traffic-generator