Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

srsEPC to srseNB Connectivity Across Virtual Machines #1395

Open
rcbarke opened this issue Sep 25, 2024 · 0 comments
Open

srsEPC to srseNB Connectivity Across Virtual Machines #1395

rcbarke opened this issue Sep 25, 2024 · 0 comments

Comments

@rcbarke
Copy link

rcbarke commented Sep 25, 2024

Issue Description

My goal is to scale my simulated architecture across virtual machines. I am leveraging OAIC and srsRAN. I have already completed basic tutorials on working with both software packages below:
https://openaicellular.github.io/oaic/MultipleUEs.html#instructions-for-setting-a-5g-network-with-multiple-ues

I am currently experiencing connectivity issues between my core network VM1 (srsEPC/RIC) and my srsRAN node VM2 (srseNB). Specifically, I am unable to successfully execute srsENB on VM2.

Setup Details

I am working with two virtual box VMs which exceed the minimum system specifications for both pieces of software, as documented at the above link. Both VMs are connected via a virtual private network on the 10.0.2.0/24 subnet. They are configured with static IP addresses VM1 10.0.2.15 and VM2 10.0.2.101. Given OAIC is deployed with K8S, I have identified the E2MGR HTTPS service of the RIC and converted it to a NodeIP exposed to port 32321. I have also tried port forwarding to port 3800. I have tested the network connection and verified both ingress IPs can ping one another. I have also verified I can telnet 10.2.101 32321/3800 from 10.0.2.101. Network layer connectivity is established.

Expected Behavior

I expect to:

  1. Build srsue instances on VM2
  2. Run srsepc to start the core network service on VM1.
  3. Run srsgnb to build a gNB on VM2, and complete a bearer setup handshake with VM1's RIC/EPC
  4. Run srsue to build two UEs on VM2, and send data end-to-end from the UE, through every component, into the EPC. I want to prove connectivity from the UE to the EPC across virtual machines.
  5. Complete this process in a way that is both repeatable and scalable, so I can continue to scale my network from here.

Actual Behaviour

Failure occurs at step 3. I see communication with the gNB reach the RIC within the E2MGR logs on VM1, and the gNB's handshake with the EPC crashes on VM2 as seen below. On a related note, there seems to be an issue with buffer overflow with the EPC service, which times out after about 3-5 minutes. I noticed this while troubleshooting this problem.

Steps to reproduce the problem

I have attempted several modifications of enb.conf on VM2 to achieve the expected behavior. I have worked off of the config file provided in the 5G tutorial setup provided below as a base. I have tried modifying the mme_addr, gtp_bind_addr, and s1c_bind_addr to VM1's ingress IP (10.0.2.15). I have attempted adding specific keys for the RIC and RIC Port. I have tried different combinations of all of the above keys, but no combination gets past step 3 of the expected behavior.
https://openaicellular.github.io/oaic/MultipleUEs.html#instructions-for-setting-a-5g-network-with-multiple-ues

OAIC makes implicit inferences that "simulating UEs" across VMs is possible, but they do not provide a configuration file or reference that explains how to do this. Is there documentation on how configurations need to change if the srseNB and srsEPC are not collocated to the same machine?

I have already tested the collocated scenario, which functions since localhost and private K8S IPs become available to srseNB in that scenario. However, I'd like to figure out how this works so I can scale into simulating larger network sizes. Thank you!

Additional Information

srsran1@srsRAN1:~/oaic/srsRAN-e2/srsenb$ sudo srsenb
--- Software Radio Systems LTE eNodeB ---

Couldn't open , trying /root/.config/srsran/enb.conf
Reading configuration file /root/.config/srsran/enb.conf...
Couldn't open sib.conf, trying /root/.config/srsran/sib.conf
Couldn't open rr.conf, trying /root/.config/srsran/rr.conf
Couldn't open rb.conf, trying /root/.config/srsran/rb.conf

Built in RelWithDebInfo mode using commit 384d343 on branch HEAD.

2024-09-25T15:39:57.971490 [ENB ] [I] Using binary srsenb with arguments:
2024-09-25T15:39:58.017093 [ENB ] [I] Built in RelWithDebInfo mode using commit 384d343 on branch HEAD.
2024-09-25T15:39:58.017714 [ENB ] [I] Using sync queue size of one for ZMQ based radio.
bind(): Cannot assign requested address
Failed to initiate S1 connection. Attempting reconnection in 10 seconds
bind(): Cannot assign requested address
Failed to bind on address 192.168.3.1, port 2152: Cannot assign requested address
Error initializing EUTRA stack.
2024-09-25T15:39:58.091444 [COMN ] [D] [ 0] Setting RTO_INFO options on SCTP socket. Association 0, Initial RTO 3000, Minimum RTO 1000, Maximum RTO 6000
2024-09-25T15:39:58.091446 [COMN ] [D] [ 0] Setting SCTP_INITMSG options on SCTP socket. Max attempts 3, Max init attempts timeout 5000
2024-09-25T15:39:58.091468 [COMN ] [E] [ 0] Failed to bind on address 192.168.3.1: Cannot assign requested address errno 99
2024-09-25T15:39:58.091532 [COMN ] [W] [ 0] RxSockets: The socket fd=-1 to be removed does not exist
2024-09-25T15:39:58.091544 [COMN ] [E] [ 0] Failed to bind on address 192.168.3.1: Cannot assign requested address errno 99
Opening 2 channels in RF device=zmq with args="fail_on_disconnect=true,tx_port0=tcp://:2000,rx_port0=tcp://localhost:2001,tx_port1=tcp://:2100,rx_port1=tcp://localhost:2101,id=enb,base_srate=23.04e6"
Available RF device list: UHD zmq
CHx base_srate=23.04e6"
CHx id=enb
Current sample rate is 1.92 MHz with a base rate of 23.04 MHz (x12 decimation)
CH0 rx_port=tcp://localhost:2001
CH0 tx_port=tcp://:2000
CH0 fail_on_disconnect=true
CH1 rx_port=tcp://localhost:2101
CH1 tx_port=tcp://
:2100
2024-09-25T15:39:58.267105 [COMN ] [D] [ 0] Setting RTO_INFO options on SCTP socket. Association 0, Initial RTO 3000, Minimum RTO 1000, Maximum RTO 6000
2024-09-25T15:39:58.267111 [COMN ] [D] [ 0] Setting SCTP_INITMSG options on SCTP socket. Max attempts 3, Max init attempts timeout 5000
2024-09-25T15:39:58.267163 [COMN ] [D] [ 0] Successfully bound to address 10.0.2.101:5006
2024-09-25T15:39:58.268203 [COMN ] [I] [ 0] Failed to establish socket connection to 10.0.2.15
connect(): Connection refused
2024-09-25T15:39:58.268818 [COMN ] [D] [ 0] RxSockets: Closing rx socket handler thread
2024-09-25T15:39:58.268939 [COMN ] [D] [ 0] RxSockets: closed.
2024-09-25T15:40:00.275799 [COMN ] [D] [ 0] RxSockets: Closing rx socket handler thread
2024-09-25T15:40:00.276545 [COMN ] [D] [ 0] RxSockets: closed.
srsRAN crashed... backtrace saved in './srsRAN.backtrace.crash'...
--- exiting ---
srsran1@srsRAN1:~/oaic/srsRAN-e2/srsen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant