Skip to content

My UEs are not attatching when running the multi UE scenario in different machines. #1353

@JoaoGabrielTN

Description

@JoaoGabrielTN

Context

I'm following this tutorial: https://docs.srsran.com/projects/project/en/latest/tutorials/source/srsUE/source/index.html
When I get to the part where I have to execute the flow graph, the gnuradio terminal gives me this error:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Traceback (most recent call last):
  File "/home/oranor/multi_ue_scenario.py", line 227, in <module>
    main()
  File "/home/oranor/multi_ue_scenario.py", line 205, in main
    tb = top_block_cls()
  File "/home/oranor/multi_ue_scenario.py", line 104, in __init__
    self.zeromq_rep_sink_0_2 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2300', 100, False, zmq_hwm)
RuntimeError: Cannot assign requested address

The only thing I'm doing different from the tutorial is that I'm not running everthing on localhost. I'm trying to replicate the tutorial using two different machines (one for the core and gNB (IP 192.168.0.108), the other for the UEs (IP 192.168.0.206)). I'm running the gnuradio command on the same host that is running the gNB.

My UEs run o a docker with Ubuntu 22.04 as the base image. Communication between the UE and Core works when I follow the tutorial with a single UE.

Configs

All configs files I'm using are the defaults files from the srsRAN Project and the files provided on the tutorial, so I will share only the parts I've changed.

open5gs.env

# SUBSCRIBER_DB=001010123456780,00112233445566778899aabbccddeeff,opc,63bfa50ee6523365ff14c1f45f88737d,8000,9,10.45.1.2
SUBSCRIBER_DB="subscriber_db.csv"

gNB config:

...
  device_args: tx_port=tcp://192.168.0.108:2000,rx_port=tcp://192.168.0.206:2001,base_srate=11.52e6 # Optionally pass arguments to the selected RF driver.
...
  prach:
    prach_config_index: 1           # Sets PRACH config to match what is expected by srsUE
    total_nof_ra_preambles: 64      # Sets number of available PRACH preambles. J
    nof_ssb_per_ro: 1               # Sets the number of SSBs per RACH occasion. J 
    nof_cb_preambles_per_ssb: 64    # Sets the number of contention based preambles per SSB. J

UE1 config:

device_args = tx_port=tcp://192.168.0.206:2101,rx_port=tcp://192.168.0.108:2001,base_srate=11.52e6

UE2 config

device_args = tx_port=tcp://192.168.0.206:2201,rx_port=tcp://192.168.0.108:2001,base_srate=11.52e6

UE3 config

device_args = tx_port=tcp://192.168.0.206:2301,rx_port=tcp://192.168.0.108:2001,base_srate=11.52e6

multi_ue_scenario.py

        self.zeromq_req_source_1_0 = zeromq.req_source(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2201', zmq_timeout, False, zmq_hwm)
        self.zeromq_req_source_1 = zeromq.req_source(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2101', zmq_timeout, False, zmq_hwm)
        self.zeromq_req_source_0_0 = zeromq.req_source(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2301', zmq_timeout, False, zmq_hwm)
        self.zeromq_req_source_0 = zeromq.req_source(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.108:2000', zmq_timeout, False, zmq_hwm)
        self.zeromq_rep_sink_0_2 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2300', 100, False, zmq_hwm)
        self.zeromq_rep_sink_0_1 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.108:2001', zmq_timeout, False, zmq_hwm)
        self.zeromq_rep_sink_0_0 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2200', zmq_timeout, False, zmq_hwm)
        self.zeromq_rep_sink_0 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2100', zmq_timeout, False, zmq_hwm)
        self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, 1.0*samp_rate/(1.0*slow_down_ratio),True)
        self.blocks_multiply_const_vxx_0_1_1 = blocks.multiply_const_cc(10**(-1.0*ue2_path_loss_db/20.0))
        self.blocks_multiply_const_vxx_0_1_0 = blocks.multiply_const_cc(10**(-1.0*ue3_path_loss_db/20.0))
        self.blocks_multiply_const_vxx_0_1 = blocks.multiply_const_cc(10**(-1.0*ue1_path_loss_db/20.0))
        self.blocks_multiply_const_vxx_0_0_0 = blocks.multiply_const_cc(10**(-1.0*ue3_path_loss_db/20.0))
        self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_cc(10**(-1.0*ue2_path_loss_db/20.0))
        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_cc(10**(-1.0*ue1_path_loss_db/20.0))
        self.blocks_add_xx_0 = blocks.add_vcc(1)

Image of the graph

Image

I run my container with the following arguments:
docker run --rm -it --network host --name ue --privileged srsran:latest bash

Questions

Why it doesn't connect? Did I miss something/did something wrong with the configs? If so, what should I fix? Or how can I tackle (debug) this problem?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions