- 實驗內容
- 相關知識
- 相關建制環境/設備規格
- 實驗架構
- xApp程式說明
- 實驗步驟
- 參考資料
此次實驗主要是學習架設與部署O-RAN的RIC,以及使用xApp並觀察使用結果
- 截圖6-2最後
watch kubectl get pod -A -o wide佈署成功的畫面 - 截圖6-5最後,一、二、三號終端機的成功畫面
- 解釋A3 Event觸發與停止條件的物理意義
- 解釋Ping Pong Effect的物理意義
- 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
此次實驗環境使用實體主機與虛擬機皆可,只是需要注意的是ubuntu需要使用20.04的版本,與之前的不同,再請同學們注意!
| 電腦選擇 | 實體機、虛擬機皆可 |
|---|---|
| Ubuntu | 20.04 |
| Near RT-RIC | i-release |
| CPU | 4 Core |
| RAM | 8G |
| Storage | 75 G |
此次實驗是模擬Rear-RT RIC中的Handover xApp在接收E2 Termination的即時訊號後,持續的對當前環境做決策並最終交給E2 Termination做判斷,判斷的場域如右圖,在8000m x 6000m的環境中,有18個基站,並分成辦公區與居住區,UE在兩個區域中移動時xApp會判斷該UE是否需要換手,並給予換手的決策。
以上資料是參考O-RAN SC 官方規格書 (Specifications) 相關網站
Emulator 模擬的是科學園區的上下班情況
- 長8000m、寬6000m
- 基站數量:18
- 基站半徑:1000m
- 移動限制在矩形區域內
- 模擬時間: 24 小時
- 分佈情形:
| 班表 | 上班時間 | 整體UE占比 |
|---|---|---|
| 大夜班 | 00:00 ~ 09:00 | 20% |
| 小夜班 | 16:00 ~ 01:00 | 20% |
| 正常日班 | 08:00 ~ 17:00 | 60% |
登入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
- 安裝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有安裝成功
- 將教材提供的 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/
- 依序給予這三個 Shell Scripts 權限
chmod 777 install_k8s_and_helm.sh
chmod 777 install_kong.sh
chmod 777 install_RIC.sh
- 執行三個shell scripts來安裝與部署需要的pods
⚠️ 請先檢查./install_k8s_and_helm.sh中的IP使否與你現在電腦的IP相同,若不相同請自行修改!不然會安裝失敗!
./install_k8s_and_helm.sh
./install_kong.sh
./install_RIC.sh
執行完成後須透過以下指令查看pods的部署情況
watch kubectl get pod -A -o wide若watch kubectl get pod -A -o wide結果一切正常就請略過第五步
安裝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"
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
因為每個人在部署RIC時,不同的pod都會分配不同到IP,所以需要找到一下ric-app-A3handover中的dockerfile,並修改檔案中ENV SUBMGR的IP成自己的,而如何找到自己的submgr,則可以透過先前的watch kubectl get pod -A -o wide來查看
- 在這個步驟中,會需要先開三個terminal,並透過以下指令進入路徑(記住!是三個terminal都需要)
sudo -i
cd /home/<your username>/Desktop
- 先在第三個terminal執行以下指令
⚠️ 請注意最後一個curl的指令,在http://<appmgr IP>:8080/ric/v1/register的appmgr中,也需要透過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'
- 依序給予 Shell Scripts 檔案權限
chmod 777 Emulator_TCP
chmod 777 emulator_connect_run.sh
chmod 777 emulator_run.sh
- 建立kuberbet所需的設置
mkdir -p ~/.kube
sudo cp -i /etc/kubernetes/admin.conf ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config- 在三個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
- 透過二號終端機紅色框框的E2 Setup的狀態來判斷Emulator是否有正常運作,黃色框框的RIC Subscription的狀態來判斷xApp是否有正常運作
- 三號終端機會顯示OK
- 清除ricxapp
- 若有發現連不上或以上兩個procedure沒有順利完成,請中斷一號和二號terminal並透過以下指令解除xApp佈署
dms_cli uninstall hw-python ricxapp
















