- Created by Alex Stancu, last modified on Jun 08, 2022
Near-RT RIC deployment steps
Both VMs:
mkdir workspace cd workspace git clone "https://gerrit.o-ran-sc.org/r/ric-plt/ric-dep" cd ric-dep/bin sudo ./install_k8s_and_helm.sh sudo ./install_common_templates_to_helm.sh sudo ./setup-ric-common-template
RIC Platform:
Under ~/workspace/ric-dep repo:
nano helm/appmgr/values.yaml # replace tiller image with these values # tiller: # registry: ghcr.io # name: helm/tiller # tag: v2.12.3 nano helm/infrastructure/values.yaml # replace tiller image with these values # tiller: # registry: ghcr.io # name: helm/tiller # tag: v2.12.3 # edit the ../RECIPE_EXAMPLE/example_recipe_latest_stable.yaml ./install -f ../RECIPE_EXAMPLE/example_recipe_latest_stable.yaml
RIC Aux
cd ~/workspace git clone "https://gerrit.o-ran-sc.org/r/it/dep" cd dep nano RECIPE_EXAMPLE/AUX/example_recipe.yaml # replace the ric-dashboard image with the one below # image: # registry: nexus3.o-ran-sc.org:10002/o-ran-sc # name: ric-dashboard # tag: 2.1.0 nano ric-aux/helm/infrastructure/subcharts/kong/values.yaml # replace the ingressController image with the one below #ingressController: # enabled: true # image: # repository: docker.io/kong/kubernetes-ingress-controller # tag: 0.7.0 sudo apt install dos2unix cd dep/bin dos2unix -o deploy-ric-aux kubectl label --overwrite nodes $(hostname) portal-storage=enable kubectl label --overwrite nodes $(hostname) aaf-storage=enable ./deploy-ric-aux ../RECIPE_EXAMPLE/AUX/example_recipe.yaml
E2 Simulator deployment steps
git clone "https://gerrit.o-ran-sc.org/r/sim/e2-interface" sudo apt-get install -y cmake build-essential libsctp-dev autoconf automake libtool bison flex libboost-all-dev cd e2-interface/e2sim mkdir build cd build cmake .. && make package && cmake .. -DDEV_PKG=1 && make package cp *.deb ../e2sm_examples/kpm_e2sm/
################################################################################ # Copyright 2022 highstreet technologies GmbH # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # version: '3.8' services: e2-simulator: image: "o-ran-sc/ntsim-e2-simulator:2.0.0" build: context: /home/ubuntu/workspace/e2-interface/e2sim/e2sm_examples/kpm_e2sm container_name: e2-simulator entrypoint: ["kpm_sim", "10.106.23.83", "38000"]
#!/bin/bash NODE_IP=$(kubectl get pod -n=ricplt -l app=ricplt-e2term-alpha -o jsonpath="{.items[0].status.hostIP}") NODE_PORT=$(kubectl get svc -n=ricplt service-ricplt-e2term-sctp-alpha -o jsonpath="{.spec.ports[0].nodePort}") echo "E2 term IP address: ${NODE_IP}" echo "E2 term port: ${NODE_PORT}"
cd /workspace mkdir e2-sim cd e2-sim nano e2sim-infra.sh # copy above script for getting the IP and Port of the E2 termination point # run the script and use the IP and port in the following docker-compose nano docker-compose.yml # copy above YAML into this file # replace the entrypoint IP and port with the above IP and port sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-compose-plugin sudo docker compose build sudo docker compose up -d
Wireshark deployment
Wireshark can also be deployed to sniff the traffic inside the k8s cluster.
Steps:
krew installation (instructions here):
( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && KREW="krew-${OS}_${ARCH}" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && tar zxvf "${KREW}.tar.gz" && ./"${KREW}" install krew ) export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
ksniff installation (instructions here):
kubectl krew install sniff
Wireshark can be deployed inside a docker container, as described in the OAM repository (wireshark section) in O-RAN-SC.
In order to see the packets captured with `kubectl sniff` in Wireshark, a pipe needs to be created (instructions here):
mkfifo /tmp/capture.pcap
Please make sure that the above pipe (/tmp/capture.pcap) is mounted as a volume in the Wireshark docker container!
Configure Wireshark to capture packets from that pipe:
Capture → Options
Manage Interfaces:
Add a new pipe pointing to the pipe inside the mapped volume of the Wireshark docker container.
Select that pipe as the interface to run the capture on:
Start the k8s sniffer on the Pod of interest:
kubectl sniff ricxapp-rc-86f7dfd8ff-5klz8 -n ricxapp -o /tmp/capture.pcap # this will sniff traffic from the RC xApp k8s pod to the /tmp/capture.pcap pipe
Important: the order matters! The Wireshark capture needs to be started first, and only then the sniffing of the traffic towards that pipe!
- No labels
4 Comments
Mohammed Hameed
Hi Guys,
I have a problem with the command "./install_k8s_and_helm.sh"
Can I do the same thing with other commands ? installating kubernetes and helm ?
because I tried every thing without any result and I couldn't even catchup the errors and missings
Appreciate your help
Meghana S
Hello,
I am facing below error while running command "
/deploy-ric-aux
..
/RECIPE_EXAMPLE/AUX/example_recipe
.yaml"
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: [ValidationError(Service.spec.ports[0]): unknown field "containerPort" in io.k8s.api.core.v1.ServicePort, ValidationError(Service.spec.ports[1]): unknown field "containerPort" in io.k8s.api.core.v1.ServicePort, ValidationError(Service.spec.ports[2]): unknown field "containerPort" in io.k8s.api.core.v1.ServicePort, ValidationError(Service.spec.ports[3]): unknown field "containerPort" in io.k8s.api.core.v1.ServicePort]
Kindly assist in resolving this issue.
黃經天
Hi Guys,
I use the following command to get certificate of Kong Ingress Controller because I need to access Kong Ingress Controller using TLS.
openssl s_client -connect RIC_Platform_IP:32443 -servername RIC_Platform_IP </dev/null | openssl x509 -text
The domain name in the certificate is string 'localhost'. How to change it ?
Appreciate your help
MST
Hello. I was installed near RT RIC from bellow link and all pods are ok running:
https://gerrit.o-ran-sc.org/r/gitweb?p=ric-plt/ric-dep.git;a=blob;f=new-installer/README.md;h=a4cb085c12a61bfd7421c8b04aee147232688c42;hb=HEAD
kubectl get pods -n ricplt
NAME READY STATUS RESTARTS AGE
deployment-ricplt-a1mediator-7fdbb756c5-2qrx7 1/1 Running 1 (15h ago) 15h
deployment-ricplt-appmgr-6f445568d9-8xtpd 1/1 Running 0 15h
deployment-ricplt-e2mgr-647999fcbc-zl755 1/1 Running 3 (15h ago) 15h
deployment-ricplt-e2term-alpha-5cdf68cb54-kcjlx 1/1 Running 0 15h
deployment-ricplt-rtmgr-86c96d6b6-mjwrv 1/1 Running 0 15h
deployment-ricplt-submgr-64c9b8cf89-kwd9h 1/1 Running 0 15h
ricplt-influxdb-0 1/1 Running 0 15h
statefulset-ricplt-dbaas-server-0 1/1 Running 0 15h
Also i set my mcc and mnc in near RT RIC yaml file. ric ip an aux ip are also set as ip of my near RT RIC machine.
extsvcplt:
ricip: "192.168.75.154"
auxip: "192.168.75.154"
%%
e2mgr:
e2mgr:
image:
registry: "nexus3.o-ran-sc.org:10002/o-ran-sc"
name: ric-plt-e2mgr
tag: 6.0.1
privilegedmode: false
globalRicId:
ricId: "AACCE"
mcc: "999"
mnc: "70"
rnibWriter:
stateChangeMessageChannel: RAN_CONNECTION_STATUS_CHANGE
ranManipulationMessageChannel: RAN_MANIPULATION
%%
i run open5gs and then gnb with e2 config as bellow :
e2:
enable_du_e2: true # Enable DU E2 agent (one for each DU insta>
e2sm_kpm_enabled: true # Enable KPM service module
addr: 192.168.75.154 # RIC IP address
bind_addr: 192.168.75.151 # A local IP that the E2 agent binds to fo>
port: 36422 # RIC port
But have this error:
./gnb -c gnb_zmq_e2.yaml
--== srsRAN gNB (commit 40b17b429) ==--
The PRACH detector will not meet the performance requirements with the configuration {Format 0, ZCZ 0, SCS 1.25kHz, Rx ports 1}.
Lower PHY in executor blocking mode.
N2: Connection to AMF on 192.168.75.150:38412 completed
Cell pci=1, bw=10 MHz, 1T1R, dl_arfcn=368500 (n3), dl_freq=1842.5 MHz, dl_ssb_arfcn=368410, ul_freq=1747.5 MHz
Connecting to NearRT-RIC on 192.168.75.154:36422
Failed to connect SCTP socket to 192.168.75.154:36422. error="Connection refused" timeout=0ms
srsRAN ERROR: Failed to create SCTP gateway.
Can you help me how can solve it?