.. _AraRAN_Experiment_ORAN_OAI_FlexRIC: Field-Deployed OAI 5G RAN with Integrated E2 Agent and nearRT-RIC using O-RAN Compliant FlexRIC ---------------------------------------------------------------------------------------------------------------------------- **Platform:** OpenAirInterface5g, FlexRIC, and Universal Software Radio Peripherals. **Resources used:** USRP N320 and Dell R750 server as gNB, USRP B210 and Supermicro server as nrUE, CommScope SS-65M-R2 antenna, Laird OC69421 UE Antenna, Power Amplifiers, and Low Noise Amplifiers. **Description:** This experiment features a 5G NR Radio Access Network (RAN) deployment using containerized instances of OAI 5G softmodems with O-RAN support. The experiment describes the steps of deployment OAI 5G RAN with integrated E2 agent and a nearRT-RIC using O-RAN compliant FlexRIC. The figure below shows the network diagram of the experiment. .. image:: images/oran_experiment.png :align: center | **Detailed Steps for the Experiment** #. Login to `ARA portal `_ with your credentials. #. Create two reservations using the *Project -> Reservations -> Leases* tab from the dashboard. 1. gNB * *Site*: Curtiss Farm * *Resource Type*: AraRAN * *Device Type*: Base Station * *Device ID*: 000 2. UE * *Site*: Curtiss Farm * *Resource Type*: AraRAN * *Device Type*: User Equipment * *Device ID*: 001 #. Create the following two containers on the respective nodes using the corresponding reservation IDs. For the containers, use the following setting: 1. gNB * *Container Image*: ``arawirelesshub/openairinterface5g:gnb_flexRIC`` * *CPU*: 8 * *Memory*: 8192 * *Network*: ARA_Shared_Net 2. nrUE * *Container Image*: ``arawirelesshub/openairinterface5g:nrue_flexRIC`` * *CPU*: 8 * *Memory*: 8192 * *Network*: ARA_Shared_Net #. Once the container is launched, take a note on the floating IP if you want to access the container from your PC via ARA jumpbox. The containers can be accessed via the console tab of the respective containers in the *Project -> Containers* tab from the dashboard or using SSH via the ARA jumpbox server. Visit :ref:`ARA_Jumpbox` for more information on accessing containers via jumpbox. #. In both containers, run the following command to check the radios connected to the host. :: # uhd_find_devices The output of the above command should look like the following image, showing three SDR devices detected. For this experiment, you should use the SDR with IP address ``192.168.20.2``, as this is the sector pointing toward ``CurtissFarm-UE-001``. The gNB configuration has already been revised to use this SDR. .. image:: images/ufd.png :align: center #. To connect the **gNB** to the core network, you need to attach the gNB to the **AMF** of the core network. First, note down the IP address of the interface ``eth0`` of the **gNB** container by executing the following command in the terminal. :: # ifconfig eth0 For this experiment, we assume that the IP address of ``eth0`` on the gNB is **10.0.4.106**. #. Open the gNB configuration file with the following command. :: # nano ~/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf Make the necessary changes as shown in the figure below: * Edit the lines with the IP address you obtained in the previous step. Use the **/24** subnet mask, i.e., **10.0.4.106/24**. .. image:: images/net.png :align: center Once the modification is complete, save and exit the nano editor. #. Add a route to the core network from the gNB container with the following command. :: # ip route add 192.168.70.128/26 via 10.0.4.4 dev eth0 (If you are using your own core network, replace ``10.0.4.4`` with the IP address of your core network node.) .. note:: For detailed instructions on how to create your own core network, see the :doc:`Outdoor Over-The-Air (OTA) OpenAirInterface 5G SA Experiment `. #. To test the reachability of the 5G Core from the gNB container, run a ping toward the AMF of the core network. :: # ping 192.168.70.132 #. **Running the gNodeB:** In one terminal of the gNB container created, run the OAI gNB using the following commands. In case of any error, refer our :ref:`FAQ `. :: # cd ~/openairinterface5g/cmake_targets/ran_build/build/ # ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --usrp-tx-thread-config 1 --RUs.[0].att_tx 0 --RUs.[0].att_rx 27 After starting, the gNB will wait for a connection from the nearRT-RIC. The console output at this stage is shown below: .. image:: images/gnb_waiting.png :align: center #. **Starting nrUE:** In the UE container, run the OAI nrUE using the following commands. :: # cd ~/openairinterface5g/cmake_targets/ran_build/build # ./nr-uesoftmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf -r 106 --numerology 1 --band 78 -C 3416160000 --ue-fo-compensation -E --ue-txgain 0 In case of error or UE not connecting to gNB, refer :ref:`FAQ `. :: #. **Starting nearRT-RIC:** In a second terminal of the **gNB container**, start the nearRT-RIC using the following commands. :: # cd ~/openairinterface5g/openair2/E2AP/flexric # ./build/examples/ric/nearRT-RIC The console trace when the ``flexRIC`` starts is shown below: .. image:: images/nearRT-RIC.png :align: center #. **Starting KPM monitor xApp:** In a third terminal of the **gNB container**, start the KPM monitor xApp using the following commands. :: # cd ~/openairinterface5g/openair2/E2AP/flexric # ./build/examples/xApp/c/monitor/xapp_kpm_moni The console trace when the ``KPM monitor xApp`` starts is shown below. .. image:: images/kpm_moni.png :align: center #. **Starting slice_moni_ctrl xApp:** In a fourth terminal of the **gNB container**, start the slice monitor xApp using the following commands. :: # cd ~/openairinterface5g/openair2/E2AP/flexric # ./build/examples/xApp/c/slice/xapp_slice_moni_ctrl The console trace when the ``slice_moni_ctrl xApp`` starts is shown below. .. image:: images/slice_moni_ctrl.png :align: center #. **Starting (MAC + RLC + PDCP) monitor xApp:** In a fifth terminal of the gNB container, start the (GTP + MAC + RLC + PDCP) monitor xApp using the following commands. :: # cd ~/openairinterface5g/openair2/E2AP/flexric # ./build/examples/xApp/c/monitor/xapp_gtp_mac_rlc_pdcp_moni The console trace when the ``GTP_MAC_RLC_PDCP monitor xApp`` starts is shown below. .. image:: images/gtp_mac_rlc_pdcp.png :align: center **Console traces for gNB and nrUE on different events**. 1. **gNB when flexRIC starts** .. image:: images/gnb_flexRIC.png :align: center 2. **gNB when connection with nrUE is established** .. image:: images/gnb_ue.png :align: center 3. **nrUE when connection with gNB is established** .. image:: images/nrUE.png :align: center .. tip:: If you want to perform weather measurements along with the RAN experiments, refer to :ref:`ARA Weather APIs `.