Skip to content

TTU-CWBT/Lab5-O-RAN-Near-RT-RIC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Lab5 智慧基站控制平台與行動管理實驗

目錄

  1. 實驗內容
  2. 相關知識
  3. 相關建制環境/設備規格
  4. 實驗架構
  5. xApp程式說明
  6. 實驗步驟
  7. 參考資料

1.實驗內容

此次實驗主要是學習架設與部署O-RAN的RIC,以及使用xApp並觀察使用結果

1-1問題與討論

  1. 截圖6-2最後watch kubectl get pod -A -o wide佈署成功的畫面
  2. 截圖6-5最後,一、二、三號終端機的成功畫面
  3. 解釋A3 Event觸發與停止條件的物理意義
  4. 解釋Ping Pong Effect的物理意義

2.相關知識

  • O-RAN Near-RT RIC 與 E2AP:Near-RT RIC 透過 E2 介面 / E2AP 跟基站(或 Emulator)互動,流程通常包含:
    • E2 Setup:E2 Node 與 RIC 建立連線、交換能力資訊
    • Subscription:RIC 訂閱你要的量測/事件
    • Indication:E2 Node 持續上報量測資料(xApp 依此決策)
  • 部署相關
    • Kubernetes / Helm:RIC 平台元件與 xApp 都跑在 K8s 上
    • AppMgr / DMS CLI:管理 xApp 的 onboard / install / uninstall
    • ChartMuseum:xApp Helm chart 的本機 repo
    • Docker Registry:讓 K8s 能拉到你 build 的 xApp image

3.相關建置環境/設備規格

此次實驗環境使用實體主機與虛擬機皆可,只是需要注意的是ubuntu需要使用20.04的版本,與之前的不同,再請同學們注意!

電腦選擇 實體機、虛擬機皆可
Ubuntu 20.04
Near RT-RIC i-release
CPU 4 Core
RAM 8G
Storage 75 G

4.實驗架構

4-1 實驗環境模擬圖

此次實驗是模擬Rear-RT RIC中的Handover xApp在接收E2 Termination的即時訊號後,持續的對當前環境做決策並最終交給E2 Termination做判斷,判斷的場域如右圖,在8000m x 6000m的環境中,有18個基站,並分成辦公區與居住區,UE在兩個區域中移動時xApp會判斷該UE是否需要換手,並給予換手的決策。 Screenshot 2025-12-29 at 11.02.42 AM

4-2 Rear-RT RIC架構

  • Emulator:負責模擬基站和 UE 的相關資料
  • Handover xApp:透過算法分析並決策是否要進行換手 Screenshot 2025-12-29 at 12.25.29 PM

以上資料是參考O-RAN SC 官方規格書 (Specifications) 相關網站

4-2 Emulator

Emulator 模擬的是科學園區的上下班情況

環境大小

  • 長8000m、寬6000m
  • 基站數量:18
  • 基站半徑:1000m

UE 設定

  1. 移動限制在矩形區域內
  2. 模擬時間: 24 小時
  3. 分佈情形:
班表 上班時間 整體UE占比
大夜班 00:00 ~ 09:00 20%
小夜班 16:00 ~ 01:00 20%
正常日班 08:00 ~ 17:00 60%

Screenshot 2025-12-29 at 12.18.40 PM

5. xApp式碼說明

image image

6. 實驗流程

6-0 Software Updater

登入ubuntu後,一樣需要更新與安裝必要的工具,依序完成以下指令即可

sudo apt update
sudo apt upgrade
sudo apt install ubuntu-desktop
sudo -i
sudo apt install unrar
sudo apt-get install -y git vim curl net-tools openssh-server python3-pip nfs-common libsctp1
sudo apt-get update

6-1 下載實驗所需的O-RAN Near RT RIC Source Code

將壓縮檔解壓縮並移動至桌面 image

6-2安裝O-RAN Near RT RIC

  1. 安裝O-RAN SC I-Release
sudo -i
git clone https://gerrit.o-ran-sc.org/r/ric-plt/ric-dep -b i-release
ls ~/ric-dep/bin  #確認ric-dep/bin有安裝成功

image

  1. 將教材提供的 install_k8s_and_helm.sh , install_kong.sh , install_RIC.sh 覆蓋掉原本的檔案 (假設你已經放在桌面)
cd /home/*你設的username*/Desktop 
cp install_RIC.sh ~/ric-dep/bin/
cp install_k8s_and_-_helm.sh ~/ric-dep/bin/
cp install_kong.sh ~/ric-dep/bin/
  1. 依序給予這三個 Shell Scripts 權限
chmod 777 install_k8s_and_helm.sh 
chmod 777 install_kong.sh
chmod 777 install_RIC.sh

提權成功後會看到權限列表長這樣 image

  1. 執行三個shell scripts來安裝與部署需要的pods
    ⚠️ 請先檢查./install_k8s_and_helm.sh中的IP使否與你現在電腦的IP相同,若不相同請自行修改!不然會安裝失敗!

可以透過ip a的指令查看本機的IP image

⚠️執行以下指令會花費很多時間,請奈心等待!如果虛擬機效能太差會安裝更久!安裝時會出現重複的訊息是正常的,請放心

./install_k8s_and_helm.sh 
./install_kong.sh
./install_RIC.sh
  • 完成畫面 2025-12-27_09-09

執行完成後須透過以下指令查看pods的部署情況

watch kubectl get pod -A -o wide

2025-12-27_09-09_1

watch kubectl get pod -A -o wide結果一切正常就請略過第五步

  1. 安裝O-RAN Near RT RIC失敗
    如果在執行第四步時安裝失敗,會需要解除安O-RAN Near RT RIC指令並重新部署O-RAN Near RT RIC指令(希望大家不會執行到這步)
  • 解除 O-RAN Near RT RIC 指令
./uninstall
  • 重新部署 O-RAN Near RT RIC 指令
cd ~/ric\-dep/bin
./install -f ../RECIPE_EXAMPLE/example_recipe_oran_i_release.yaml -c "jaegeradapter influxdb"

6-3xApp 佈署工具 DMS CLI 安裝指令

O-RAN SC有提供一個部署的工具『DMS CLI』,接下來就只要透過以下的指令就可以順利部署xApp了

docker run --rm -u 0 -it -d -p 8090:8080 -e DEBUG=1 -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/charts -v $(pwd)/charts:/charts chartmuseum/chartmuseum:latest
export CHART_REPO_URL=http://0.0.0.0:8090

git clone https://gerrit.o-ran-sc.org/r/ric-plt/appmgr -b h-release
cd appmgr/xapp_orchestrater/dev/xapp_onboarder

apt-get install python3-pip
pip3 uninstall xapp_onboarder
pip3 install ./

chmod 755 /usr/local/bin/dms_cli
ls -la /usr/local/lib/python3.8

chmod -R 755 /usr/local/lib/python3.8

輸入完畢後,需要透過以下指令確認所有的確認xApp部署(DMS/xapp_onboarder)這套工具鏈本身能不能正常運作,如果有可以就會顯示Ture

dms_cli health

image

6-4 xApp檔案修改

因為每個人在部署RIC時,不同的pod都會分配不同到IP,所以需要找到一下ric-app-A3handover中的dockerfile,並修改檔案中ENV SUBMGR的IP成自己的,而如何找到自己的submgr,則可以透過先前的watch kubectl get pod -A -o wide來查看

image image

6-5 RIC、Emulator和xApp連線

  1. 在這個步驟中,會需要先開三個terminal,並透過以下指令進入路徑(記住!是三個terminal都需要)
sudo -i
cd /home/<your username>/Desktop
  1. 先在第三個terminal執行以下指令
    ⚠️ 請注意最後一個curl的指令,在http://<appmgr IP>:8080/ric/v1/registerappmgr中,也需要透過watch kubectl get pod -A -o wide來查看自己的IP。 例:http://10.244.0.11:8080/ric/v1/register
cd ric-app-A3handover
docker run -d -p 5000:5000 --restart=always --name registry registry:2
export CHART_REPO_URL=http://0.0.0.0:8090
dms_cli onboard ./init/config-file.json ./init/schema.json
docker build -t 127.0.0.1:5000/hw-python:1.0.2 .
docker tag 127.0.0.1:5000/hw-python:1.0.2 127.0.0.1:5000/hw-python:1.0.2
docker push 127.0.0.1:5000/hw-python:1.0.2

curl -v -X POST 'http://<appmgr IP>:8080/ric/v1/register' -H 'accept:application/json' -H 'Content-Type:application/json' -d '@hwpython-register.json'

成功畫面 2025-12-27_09-29

  1. 依序給予 Shell Scripts 檔案權限
chmod 777 Emulator_TCP
chmod 777 emulator_connect_run.sh
chmod 777 emulator_run.sh
  1. 建立kuberbet所需的設置
mkdir -p ~/.kube
sudo cp -i /etc/kubernetes/admin.conf ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
  1. 在三個terminal 依序執行以下指令
//第一個 terminal 執行,等第一個terminal出現wait for connect...再執行第二個指令
./emulator_run.sh 

//第二個 terminal 執行 
./emulator_connect_run.sh

//第三個 terminal 執行 
dms_cli install hw-python 1.0.1 ricxapp

如果看到以下畫面就是有判斷成功!
⚠️ 成功時請務必要截圖!

  • 一號終端機會顯示適合當下的情境與是否要做handover image
  • 透過二號終端機紅色框框的E2 Setup的狀態來判斷Emulator是否有正常運作,黃色框框的RIC Subscription的狀態來判斷xApp是否有正常運作 success
  • 三號終端機會顯示OK
    image
  1. 清除ricxapp
  • 若有發現連不上或以上兩個procedure沒有順利完成,請中斷一號和二號terminal並透過以下指令解除xApp佈署
dms_cli uninstall hw-python ricxapp

參考資料

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors