Dear powder team and members,
I am currently working on solutions for deploying O-RAN (https://docs.o-ran-sc.org/en/latest/) based RICs in combination with srslte (https://www.srsran.com/). My ultimate goal is to develop xapps for 5G Network Slicing for research purposes. In this context, I came across the O-RAN powder profile, which I am trying to run on a local virtual machine for testing purposes: https://www.powderwireless.net/show-profile.php?project=PowderProfiles&profile=O-RAN.
Yet after thoroughly following the explanations, I could not get the nexran slicing xapp to work properly.
I would be thankful to get information on dependencies which I might have missed as well as on recommended versions and known bug fixes.
System:
Ubuntu 20.0.4
helm version 3.7.2
kubectl:
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:36:53Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
I used the following software according to the listed software of the profile:
srslte:
powder srslte fork: https://gitlab.flux.utah.edu/powderrenewpublic/srslte-ric
I utilized the given e2 bindings as well as the asn1c compiler: https://gitlab.eurecom.fr/oai/asn1c.git, commit f12568d617dbf48497588f8e227d70388fa217c9
As suggested, I use the zmq virtual radios https://docs.srsran.com/en/latest/app_notes/source/zeromq/source/index.html
During make test, I got the following error message of which I am not certain whether it is critical:
The following tests FAILED: 771 - nas_test (SEGFAULT) Errors while running CTest
O-RAN RIC platform:
for RIC deployment, I used the following fork: https://gitlab.flux.utah.edu/powderrenewpublic/dep
here, I used the cherry-powder release, because in dawn-powder release I was not able to get the e2term pod to work.
after instantiating the RIC platform and running both srsepc and srsenb, the logs of the e2term pod show the error
{"ts":1644939386846,"crit":"ERROR","id":"E2Terminator","mdc":{"thread id":"140040957060864"},"msg":"epoll error, events 8 on fd 20, RAN NAME : enB_macro_001_001_0019b0"}
nexran xapp:
I use the following xapp: https://gitlab.flux.utah.edu/powderrenewpublic/nexran
When following the profile tutorial, I am able to call the nexran api and configure the slices, yet the UE’s bandwidth does not seem to change depending on the slice priorities.
Is there anything crucial that I might miss or are there other software components required?
Are there any suggestions on the occuring errors?
I am very thankful for any suggestions.
Kind regards,
Robin
Hi David,
thank you very much for the detailed reply. In the following I refer to your suggestion:
> “This is likely the problem; probably the E2 agent in srsenb is losing
> its SCTP connection within the first few seconds. You should see
> confirmation in the srsenb's logs if you have the right debug stuff set.
> This should not happen in some network plugins, e.g. calico, but does
> happen in others like flannel. You can workaround this by forcing
> srsenb to bind the SCTP socket to a local addr and port with additional
> args to srsenb: `--ric.agent.local_ipv4_addr <addr> -ric.agent.local_port <port>`.”
Indeed I was able to confirm that the SCTP connection is lost using the logs you suggested.
In order to solve it, I switched from flannel to calico, which took me some time to figure out. In fact, I needed to use some older software versions in order to get it to work properly (Ubuntu 18, Kubernetes 1.16. and Calico 3.16).
Unfortunately, this did not solve the problem. I attached detailed error logs; I would be very thankful if you could have another look at it and give me further advice.
I also tried your second suggestion of forcing to bind the SCTP socket to a local addr and port. However, the following error occurs additionally to the error logs mentioned above:
“Failed to bind on address 192.168.128.1: Cannot assign requested address errno 99”
I do not entirely understand whether I need to use a specific address and port here, could you please explain?
Thank you in advance!
Best regards,
Robin
Dear David,
thanks again for the great help. As already discussed in your office hour I was able to fix the sctp error. This is a summary of what I did to achieve it:
Software versions:
ubuntu 18
kubernetes v1.16.15
flannel or calico v3.16
e2term image provided by powder (5.4.8-powder), which is the cherry release
The dawn release version (5.4.9-powder) did not work due to some rmr errors occuring on pod startup (1649878294366 22/RMR [INFO] ric message routing library on SI95 p=38000 mv=3 flg=00 id=a (11838bc 4.7.4 built: Apr 27 2021) terminate called without an active exception)
First I enabled iptables, multus and metallb (and configured it as explained here https://metallb.universe.tf/configuration/)
Then, when starting the srsenb, I passed the ip and port of the interface used by the E2 agent using the parameters --ric.agent.local_ipv4_addr=<ip> and --ric.agent.local_port=59596
I tried it with both flannel and calico, and in both cases I had to pass these params, otherwise the aforementioned sctp error would occur (19:05:42.314871 [RIC ] [E] Error reading from SCTP socket: Connection reset by peer). In the flannel case it is the “cni0” interface, and in the calico case it is the “vxlan.calico” interface.
As we’ve talked about, another error occurs when trying to use the nexran xapp. I attached the relevant log files. Restarting some parts of the application did not solve it, unfortunately (I tried restarting / redeploying the ric, the xapp, and both multiple times). Here are some observations which might help to identify the problem in hope that you might have another idea on how to fix it:
Additionally, here are some potential errors or deviations from what worked for me which I found in the oran profile description (https://www.powderwireless.net/show-profile.php?project=PowderProfiles&profile=O-RAN). I’d like to share these to help improve the description.
Again, I am very thankful for any ideas or suggestions!
Best regards,
Robin