由於需要有智慧的控制 E2 Node(包含 CU、 DU以及 O-eNB),故實現 Near-RT RIC系統,使其能與 E2 Node 進行資料上的傳遞,因此需要架設 Near-RT RIC平台來達到 E2 Node可將資料上傳到 Near-RT RIC以及透過 Near-RT RIC內部演算法運算後下達適當的控制指令給 E2 Node,使其達到控制CU/DU參數的功能。Near-RT RIC的內部架構可以分成不同的部分如圖 1 所示。
(資料來源: Near_RT_RIC_for_ONS.pdf, Nokia)
圖 1 Near-RT RIC內部系統架構圖
SDL(Shared Data Layer)
SDL為 RIC 存取Redis資料庫的介面。
RMR(RIC Message Router)
RIC 中傳遞訊息是由 RMR介面來負責傳輸。
E2 Termination 為 RIC 與 E2 Node 的接口元件,負責
接收從 E2 Node 傳送過來的 Message,將 Message解析完並且傳送到 E2 Manager 或 Subscription Manager。
接收從 RIC 傳送過來的 Message,將 Message 解析完並且傳送到 E2 Node。
E2 Manager 為負責接收 E2 Node 相關 Message,並傳給 xApp,以利 xApp 利用該資訊,做相對應的操作,操控 E2 Node。
若 xApp 想要操控 E2 Node 的參數,需要先通知 E2 Node(Subscription),Subscription Manager 就是負責管理這些 Subscription 資訊。
在建立Kubernetes、 Docker與 RMR之前,需建立一個 Virtual Machine (VM)環境,其後會將 Near-RT RIC平台其功能佈建在該 VM上。 關於詳細 VirtualBox安裝步驟請參考 VirtualBox官方文件 。
以下是該 VM所需最小的設備要求:
● OS:Ubuntu 18.04 LTS (Bionic Beaver)
● CPU: 4核心
● RAM 16 GB
● Storage 160 GB
以下 基礎套件 的安裝皆在 Linux Ubuntu 18.04 LTS (Bionic Beaver)
輸入以下的指令:
$ sudo -i
安裝過程,詳見圖 2 所示。
(資料來源:作者自行繪製)
圖 2 基本套件安裝過程-1
輸入以下的指令:
$ apt-get install git
安裝過程的畫面詳見圖 3。
(資料來源:作者自行繪製)
圖 3 基本套件安裝過程-2
使用git指令抓取並複製O-RAN Software Community提供的軟體(例如,Bronze版本)到VM中的dep資料夾,輸入以下的指令:
$ git clone http://gerrit.o-ran-sc.org/r/it/dep -b bronze
指令輸入後,完成畫面如圖 4。
(資料來源:作者自行繪製)
圖 4 基本套件安裝過程-3
輸入以下的指令來切換到dep的資料夾底下:
$ cd dep
輸入以下的指令來使用git做submodule讓資料可以自動更新並重新安裝Repository:
$ git submodule update --init --recursive --remote
執行結果詳見圖 5。
(資料來源:作者自行繪製)
圖 5 基本套件安裝過程-4
部署Near-RT RIC平台須先建置Kubernetes系統,故需要進入到Kubernetes的bin資料夾路徑下,生成Near-RT RIC所需要的安裝腳本,此腳本將用於部署Near-RT RIC所需的Kubernetes系統。在dep的路徑底下先輸入以下指令:
$ cd tools/k8s/bin
接著輸入下列指令讓Cloud Initialization,執行過程請詳見圖 6。
$ ./gen-cloud-init.sh
(資料來源:作者自行繪製)
圖 6 基本套件安裝過程-5
由於O-RAN Software Community所提供的 Near-RT RIC平台需建立在Kubernetes系統下。建立Kubernetes環境前,必須先手動安裝Kubectl套件,可以把Kubectl套件。然而Kubectl套件可以安裝在Windows、Mac或Linux上。本文件是將Kubectl套件建置在Linux Ubuntu 18.04系統上。
由於安裝Kubectl套件需要用到curl指令,因此需輸入以下的指令來對Linux Ubuntu 18.04系統安裝curl:
$ apt install curl
指令輸入後,部分執行畫面詳見圖 7。
(資料來源:作者自行繪製)
圖 7 Kubectl套件安裝過程-1
在Linux Ubuntu 18.04系統上使用curl指令來下載Kubectl套件,請參考以下步驟:
下載最新的版本,不論是Intel處理器或是AMD處理器皆可輸入下列指令:
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
指令輸入後,執行畫面如圖 8 所示。
如果需下載不同Kubernetes的版本,則需要取代以下指令中的stable以及-s的部分並替換成相對應Kubernetes的版本號碼。
$ (curl -s https://storage.googleapis.com/kubernetes-release / release/stable.txt)
舉例來說,如果需下載第19版本,需要輸入:
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.19.0/bin/linux/amd64/kubectl
輸入以下的指令使Kubectl Binary可被執行(給予執行權限)。
$ chmod +x ./kubectl
輸入以下的指令,移動binary到Linux系統的路徑上。
$ sudo mv ./kubectl /usr/local/bin/kubectl
輸入以下的指令,可檢測目前Kubernetes的版本,假如Kubernetes已正確安裝,將會出現目前Kubernetes的版本號碼,如圖 9 所示。
$ kubectl version –client
當輸入指令後,將會顯示Kubernetes目前的版本號碼,表示Kubernetes安裝完成。但如果出現Error或是系統無反應即代表在安裝Kubernetes時發生錯誤。此時,請按照下列步驟排除狀況。
請先使用下列指令刪除檔案:
$ rm -f /usr/local/bin/kubectl
接著依序輸入下列指令:
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
輸入下列指令,當輸入完指令後,VM將重新開機,直到VM開機完成後,即可使用Docker、Kubernetes等指令。如果一開始安裝RIC系統時,是使用Secure Shell連線到Linux VM,在安裝完下列指令之後,Secure Shell連線會自動斷開,大概等待五分鐘過後,即可再次使用Secure Shell連線至VM上。
$ ./k8s-1node-cloud-init-k_1_16-h_2_12-d_cur.sh
輸入下列兩行指令,將進到系統管理員身分並檢查Kubernetes的Pod是否都已經就緒(安裝完成)。(假如使用Secure Shell,請先再次使用 SecureShell 連線至VM上再執行下列指令。)
$ sudo -i
$ kubectl get pods -A
(資料來源:作者自行繪製)
圖 8 Kubectl套件安裝過程-2
(資料來源:作者自行繪製)
圖 9 Kubectl套件安裝過程-3
步驟一
由於需要佈署Near-RT RIC平台的Pod好讓Near-RT RIC平台能被組織性的管理,需輸入指令如下:
$ helm init --stable-repo-url=https://charts.helm.sh/stable --client-only
$ cd dep/bin
步驟二
使用example_recipe.yaml指令檔佈署16個Pod,請輸入以下指令:
$ ./deploy-ric-platform -f ../RECIPE_EXAMPLE/PLATFORM/example_recipe.yaml
步驟三
輸入以下指令來查看Near-RT RIC的16個Pod是否已經成功佈署:
$ kubectl get pods -n ricplt
當輸入完成後,完成畫面如圖 10所示。
(資料來源:作者自行擷取)
圖 10 16個Pods執行狀態