From d0311f5b584cea4ad001a4332f1dd43141b91ba5 Mon Sep 17 00:00:00 2001 From: herlesupreeth Date: Fri, 16 Sep 2022 09:40:35 +0200 Subject: [PATCH] Introduce srsRAN ZMQ mode (eNB, gNB, 4G UE, 5G UE) --- .env | 3 + README.md | 13 +- srsenb.yaml | 1 - srsenb_zmq.yaml | 28 ++ srsgnb.yaml | 1 - srsgnb_zmq.yaml | 28 ++ srslte/Dockerfile | 3 +- srslte/enb_zmq.conf | 426 ++++++++++++++++++++++ srslte/rr_gnb.conf | 1 + srslte/sib.conf | 118 +++++++ srslte/{enb_init.sh => srslte_init.sh} | 42 ++- srslte/ue_5g_zmq.conf | 467 +++++++++++++++++++++++++ srslte/ue_mac_nr.pcap | Bin 0 -> 151552 bytes srslte/ue_nas.pcap | 0 srslte/ue_zmq.conf | 467 +++++++++++++++++++++++++ srsue_5g_zmq.yaml | 28 ++ srsue_zmq.yaml | 28 ++ 17 files changed, 1646 insertions(+), 8 deletions(-) create mode 100644 srsenb_zmq.yaml create mode 100644 srsgnb_zmq.yaml create mode 100644 srslte/enb_zmq.conf rename srslte/{enb_init.sh => srslte_init.sh} (56%) create mode 100644 srslte/ue_5g_zmq.conf create mode 100644 srslte/ue_mac_nr.pcap create mode 100644 srslte/ue_nas.pcap create mode 100644 srslte/ue_zmq.conf create mode 100644 srsue_5g_zmq.yaml create mode 100644 srsue_zmq.yaml diff --git a/.env b/.env index c5efbc0..fa8e31e 100644 --- a/.env +++ b/.env @@ -107,3 +107,6 @@ OSMOHLR_IP=172.22.0.32 # SMSC SMSC_IP=172.22.0.33 + +# SRSLTE UE +SRS_UE_IP=172.22.0.34 diff --git a/README.md b/README.md index aa62332..c03dec8 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,9 @@ docker build --no-cache --force-rm -t docker_open5gs . cd ../ims_base docker build --no-cache --force-rm -t docker_kamailio . +cd ../srslte +docker build --no-cache --force-rm -t docker_srslte . + cd ../ueransim docker build --no-cache --force-rm -t docker_ueransim . ``` @@ -45,10 +48,18 @@ docker-compose build --no-cache docker-compose up # srsRAN eNB -docker-compose -f srsenb.yaml build --no-cache docker-compose -f srsenb.yaml up -d && docker attach srsenb # srsRAN gNB docker-compose -f srsgnb.yaml up -d && docker attach srsgnb +# srsRAN ZMQ based setup + # eNB + docker-compose -f srsenb_zmq.yaml up -d && docker attach srsenb_zmq + # gNB + docker-compose -f srsgnb_zmq.yaml up -d && docker attach srsgnb_zmq + # 4G UE + docker-compose -f srsue_zmq.yaml up -d && docker attach srsue_zmq + # 5G UE + docker-compose -f srsue_5g_zmq.yaml up -d && docker attach srsue_5g_zmq # UERANSIM gNB docker-compose -f nr-gnb.yaml up -d && docker attach nr_gnb diff --git a/srsenb.yaml b/srsenb.yaml index 9e9616d..4515370 100644 --- a/srsenb.yaml +++ b/srsenb.yaml @@ -1,7 +1,6 @@ version: '3' services: srsenb: - build: ./srslte image: docker_srslte container_name: srsenb stdin_open: true diff --git a/srsenb_zmq.yaml b/srsenb_zmq.yaml new file mode 100644 index 0000000..b30bc8f --- /dev/null +++ b/srsenb_zmq.yaml @@ -0,0 +1,28 @@ +version: '3' +services: + srsenb_zmq: + image: docker_srslte + container_name: srsenb_zmq + stdin_open: true + tty: true + privileged: true + volumes: + - ./srslte:/mnt/srslte + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + environment: + - COMPONENT_NAME=enb_zmq + expose: + - "36412/sctp" + - "2152/udp" + - "2000/tcp" + - "2001/tcp" + networks: + default: + ipv4_address: ${SRS_ENB_IP} +networks: + default: + external: + name: docker_open5gs_default diff --git a/srsgnb.yaml b/srsgnb.yaml index 80c0e83..44ea650 100644 --- a/srsgnb.yaml +++ b/srsgnb.yaml @@ -1,7 +1,6 @@ version: '3' services: srsgnb: - build: ./srslte image: docker_srslte container_name: srsgnb stdin_open: true diff --git a/srsgnb_zmq.yaml b/srsgnb_zmq.yaml new file mode 100644 index 0000000..2105077 --- /dev/null +++ b/srsgnb_zmq.yaml @@ -0,0 +1,28 @@ +version: '3' +services: + srsgnb_zmq: + image: docker_srslte + container_name: srsgnb_zmq + stdin_open: true + tty: true + privileged: true + volumes: + - ./srslte:/mnt/srslte + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + environment: + - COMPONENT_NAME=gnb_zmq + expose: + - "38412/sctp" + - "2152/udp" + - "2000/tcp" + - "2001/tcp" + networks: + default: + ipv4_address: ${SRS_ENB_IP} +networks: + default: + external: + name: docker_open5gs_default diff --git a/srslte/Dockerfile b/srslte/Dockerfile index 7972ddf..f9f7718 100644 --- a/srslte/Dockerfile +++ b/srslte/Dockerfile @@ -67,7 +67,6 @@ RUN cd srsRAN/build && srsran_install_configs.sh service ENV UHD_IMAGES_DIR=/usr/share/uhd/images/ -CMD /mnt/srslte/enb_init.sh && \ - cd /mnt/srslte && /usr/local/bin/srsenb +CMD cd /mnt/srslte && /mnt/srslte/srslte_init.sh #gdb /usr/local/bin/srsenb diff --git a/srslte/enb_zmq.conf b/srslte/enb_zmq.conf new file mode 100644 index 0000000..d27d23e --- /dev/null +++ b/srslte/enb_zmq.conf @@ -0,0 +1,426 @@ +##################################################################### +# srsENB configuration file +##################################################################### + +##################################################################### +# eNB configuration +# +# enb_id: 20-bit eNB identifier. +# mcc: Mobile Country Code +# mnc: Mobile Network Code +# mme_addr: IP address of MME for S1 connnection +# gtp_bind_addr: Local IP address to bind for GTP connection +# gtp_advertise_addr: IP address of eNB to advertise for DL GTP-U Traffic +# s1c_bind_addr: Local IP address to bind for S1AP connection +# s1c_bind_port: Source port for S1AP connection (0 means any) +# n_prb: Number of Physical Resource Blocks (6,15,25,50,75,100) +# tm: Transmission mode 1-4 (TM1 default) +# nof_ports: Number of Tx ports (1 port default, set to 2 for TM2/3/4) +# +##################################################################### +[enb] +enb_id = 0x19B +mcc = MCC +mnc = MNC +mme_addr = MME_IP +gtp_bind_addr = SRS_ENB_IP +s1c_bind_addr = SRS_ENB_IP +s1c_bind_port = 0 +n_prb = 50 +#tm = 4 +#nof_ports = 2 + +##################################################################### +# eNB configuration files +# +# sib_config: SIB1, SIB2 and SIB3 configuration file +# note: When enabling MBMS, use the sib.conf.mbsfn configuration file which includes SIB13 +# rr_config: Radio Resources configuration file +# rb_config: SRB/DRB configuration file +##################################################################### +[enb_files] +sib_config = /etc/srsran/sib.conf +rr_config = /etc/srsran/rr.conf +rb_config = /etc/srsran/rb.conf + +##################################################################### +# RF configuration +# +# dl_earfcn: EARFCN code for DL (only valid if a single cell is configured in rr.conf) +# tx_gain: Transmit gain (dB). +# rx_gain: Optional receive gain (dB). If disabled, AGC if enabled +# +# Optional parameters: +# dl_freq: Override DL frequency corresponding to dl_earfcn +# ul_freq: Override UL frequency corresponding to dl_earfcn (must be set if dl_freq is set) +# device_name: Device driver family +# Supported options: "auto" (uses first driver found), "UHD", "bladeRF", "soapy", "zmq" or "Sidekiq" +# device_args: Arguments for the device driver. Options are "auto" or any string. +# Default for UHD: "recv_frame_size=9232,send_frame_size=9232" +# Default for bladeRF: "" +# time_adv_nsamples: Transmission time advance (in number of samples) to compensate for RF delay +# from antenna to timestamp insertion. +# Default "auto". B210 USRP: 100 samples, bladeRF: 27 +##################################################################### +[rf] +#dl_earfcn = 3150 +tx_gain = 80 +rx_gain = 40 + +#device_name = auto + +# For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings: +# USRP B210: num_recv_frames=64,num_send_frames=64 +# And for 75 PRBs, also append ",master_clock_rate=15.36e6" to the device args + +# For best performance when BW<5 MHz (25 PRB), use the following device_args settings: +# USRP B210: send_frame_size=512,recv_frame_size=512 + +#device_args = auto +#time_adv_nsamples = auto + +# Example for ZMQ-based operation with TCP transport for I/Q samples +device_name = zmq +device_args = fail_on_disconnect=true,tx_port=tcp://SRS_ENB_IP:2000,rx_port=tcp://SRS_UE_IP:2001,id=enb,base_srate=23.04e6 + +##################################################################### +# Packet capture configuration +# +# MAC-layer packets are captured to a file in the compact format which can +# be decoded by Wireshark. For decoding, use the UDP dissector and the UDP +# heuristic dissection. Edit the preferences (Edit > Preferences > +# Protocols > DLT_USER) for DLT_USER to add an entry for DLT=149 with +# Protocol=udp. Further, enable the heuristic dissection in UDP under: +# Analyze > Enabled Protocols > MAC-LTE > mac_lte_udp and MAC-NR > mac_nr_udp +# For more information see: https://wiki.wireshark.org/MAC-LTE +# Configuring this Wireshark preferences is needed for decoding the MAC PCAP +# files as well as for the live network capture option. +# +# Please note that this setting will by default only capture MAC +# frames on dedicated channels, and not SIB. You have to build with +# WRITE_SIB_PCAP enabled in srsenb/src/stack/mac/mac.cc if you want +# SIB to be part of the MAC pcap file. +# +# S1AP Packets are captured to a file in the compact format which can +# be decoded by the Wireshark s1ap dissector with DLT 150. +# To use the dissector, edit the preferences for DLT_USER to +# add an entry with DLT=150, Payload Protocol=s1ap. +# +# mac_enable: Enable MAC layer packet captures (true/false) +# filename: File path to use for LTE MAC packet captures +# nr_filename: File path to use for NR MAC packet captures +# s1ap_enable: Enable or disable the PCAP. +# s1ap_filename: File name where to save the PCAP. +# +# mac_net_enable: Enable MAC layer packet captures sent over the network (true/false default: false) +# bind_ip: Bind IP address for MAC network trace (default: "0.0.0.0") +# bind_port: Bind port for MAC network trace (default: 5687) +# client_ip: Client IP address for MAC network trace (default: "127.0.0.1") +# client_port Client IP address for MAC network trace (default: 5847) +##################################################################### +[pcap] +#enable = false +#filename = /mnt/srslte/enb_mac.pcap +#nr_filename = /mnt/srslte/enb_mac_nr.pcap +#s1ap_enable = false +#s1ap_filename = /mnt/srslte/enb_s1ap.pcap + +#mac_net_enable = false +#bind_ip = 0.0.0.0 +#bind_port = 5687 +#client_ip = 127.0.0.1 +#client_port = 5847 + +##################################################################### +# Log configuration +# +# Log levels can be set for individual layers. "all_level" sets log +# level for all layers unless otherwise configured. +# Format: e.g. phy_level = info +# +# In the same way, packet hex dumps can be limited for each level. +# "all_hex_limit" sets the hex limit for all layers unless otherwise +# configured. +# Format: e.g. phy_hex_limit = 32 +# +# Logging layers: rf, phy, phy_lib, mac, rlc, pdcp, rrc, gtpu, s1ap, stack, all +# Logging levels: debug, info, warning, error, none +# +# filename: File path to use for log output. Can be set to stdout +# to print logs to standard output +# file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created. +# If set to negative, a single log file will be created. +##################################################################### +[log] +all_level = warning +all_hex_limit = 32 +filename = /mnt/srslte/enb.log +file_max_size = -1 + +[gui] +enable = false + +##################################################################### +# Scheduler configuration options +# +# sched_policy: User MAC scheduling policy (E.g. time_rr, time_pf) +# min_aggr_level: Optional minimum aggregation level index (l=log2(L) can be 0, 1, 2 or 3) +# max_aggr_level: Optional maximum aggregation level index (l=log2(L) can be 0, 1, 2 or 3) +# adaptive_aggr_level: Boolean flag to enable/disable adaptive aggregation level based on target BLER +# pdsch_mcs: Optional fixed PDSCH MCS (ignores reported CQIs if specified) +# pdsch_max_mcs: Optional PDSCH MCS limit +# pusch_mcs: Optional fixed PUSCH MCS (ignores reported CQIs if specified) +# pusch_max_mcs: Optional PUSCH MCS limit +# min_nof_ctrl_symbols: Minimum number of control symbols +# max_nof_ctrl_symbols: Maximum number of control symbols +# pucch_multiplex_enable: Allow PUCCH HARQ to collide with PUSCH and other PUCCH +# pucch_harq_max_rb: Maximum number of RB to be used for PUCCH on the edges of the grid. +# If defined and greater than 0, the scheduler will avoid DL PDCCH allocations if +# PUCCH HARQ falls outside this region +# target_bler: Target BLER (in decimal) to achieve via adaptive link +# max_delta_dl_cqi: Maximum shift in CQI for adaptive DL link +# max_delta_ul_snr: Maximum shift in UL SNR for adaptive UL link +# adaptive_dl_mcs_step_size: Step size or learning rate used in adaptive DL MCS link +# adaptive_ul_mcs_step_size: Step size or learning rate used in adaptive UL MCS link +# min_tpc_tti_interval: Minimum TTI interval between TPCs different than 1 +# ul_snr_avg_alpha: Exponential Average alpha coefficient used in estimation of UL SNR +# init_ul_snr_value: Initial UL SNR value used for computing MCS in the first UL grant +# init_dl_cqi: DL CQI value used before any CQI report is available to the eNB +# max_sib_coderate: Upper bound on SIB and RAR grants coderate +# pdcch_cqi_offset: CQI offset in derivation of PDCCH aggregation level +# nr_pdsch_mcs: Optional fixed NR PDSCH MCS (ignores reported CQIs if specified) +# nr_pusch_mcs: Optional fixed NR PUSCH MCS (ignores reported CQIs if specified) +# +##################################################################### +[scheduler] +#policy = time_pf +#policy_args = 2 +#min_aggr_level = 0 +#max_aggr_level = 3 +#adaptive_aggr_level = false +#pdsch_mcs = -1 +#pdsch_max_mcs = -1 +#pusch_mcs = -1 +#pusch_max_mcs = 16 +#min_nof_ctrl_symbols = 1 +#max_nof_ctrl_symbols = 3 +#pucch_multiplex_enable = false +#pucch_harq_max_rb = 0 +#target_bler = 0.05 +#max_delta_dl_cqi = 5 +#max_delta_ul_snr = 5 +#adaptive_dl_mcs_step_size = 0.001 +#adaptive_ul_mcs_step_size = 0.001 +#min_tpc_tti_interval = 1 +#ul_snr_avg_alpha=0.05 +#init_ul_snr_value=5 +#init_dl_cqi=5 +#max_sib_coderate=0.3 +#pdcch_cqi_offset=0 +nr_pdsch_mcs=28 +#nr_pusch_mcs=28 + +##################################################################### +# eMBMS configuration options +# +# enable: Enable MBMS transmission in the eNB +# m1u_multiaddr: Multicast address the M1-U socket will register to +# m1u_if_addr: Address of the interface the M1-U interface will listen to for multicast packets +# mcs: Modulation and Coding scheme for MBMS traffic +# +##################################################################### +[embms] +#enable = false +#m1u_multiaddr = 239.255.0.1 +#m1u_if_addr = 127.0.1.201 +#mcs = 20 + + + +##################################################################### +# Channel emulator options: +# enable: Enable/disable internal Downlink/Uplink channel emulator +# +# -- AWGN Generator +# awgn.enable: Enable/disable AWGN generator +# awgn.snr: Target SNR in dB +# +# -- Fading emulator +# fading.enable: Enable/disable fading simulator +# fading.model: Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc) +# +# -- Delay Emulator delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2 +# Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period +# delay.enable: Enable/disable delay simulator +# delay.period_s: Delay period in seconds +# delay.init_time_s: Delay initial time in seconds +# delay.maximum_us: Maximum delay in microseconds +# delay.minumum_us: Minimum delay in microseconds +# +# -- Radio-Link Failure (RLF) Emulator +# rlf.enable: Enable/disable RLF simulator +# rlf.t_on_ms: Time for On state of the channel (ms) +# rlf.t_off_ms: Time for Off state of the channel (ms) +# +# -- High Speed Train Doppler model simulator +# hst.enable: Enable/disable HST simulator +# hst.period_s: HST simulation period in seconds +# hst.fd_hz: Doppler frequency in Hz +# hst.init_time_s: Initial time in seconds +##################################################################### +[channel.dl] +#enable = false + +[channel.dl.awgn] +#enable = false +#snr = 30 + +[channel.dl.fading] +#enable = false +#model = none + +[channel.dl.delay] +#enable = false +#period_s = 3600 +#init_time_s = 0 +#maximum_us = 100 +#minimum_us = 10 + +[channel.dl.rlf] +#enable = false +#t_on_ms = 10000 +#t_off_ms = 2000 + +[channel.dl.hst] +#enable = false +#period_s = 7.2 +#fd_hz = 750.0 +#init_time_s = 0.0 + +[channel.ul] +#enable = false + +[channel.ul.awgn] +#enable = false +#n0 = -30 + +[channel.ul.fading] +#enable = false +#model = none + +[channel.ul.delay] +#enable = false +#period_s = 3600 +#init_time_s = 0 +#maximum_us = 100 +#minimum_us = 10 + +[channel.ul.rlf] +#enable = false +#t_on_ms = 10000 +#t_off_ms = 2000 + +[channel.ul.hst] +#enable = false +#period_s = 7.2 +#fd_hz = -750.0 +#init_time_s = 0.0 + +##################################################################### +# CFR configuration options +# +# The CFR module provides crest factor reduction for the transmitted signal. +# +# enable: Enable or disable the CFR. Default: disabled +# +# mode: manual: CFR threshold is set by cfr_manual_thres (default). +# auto_ema: CFR threshold is adaptive based on the signal PAPR. Power avg. with Exponential Moving Average. +# The time constant of the averaging can be tweaked with the ema_alpha parameter. +# auto_cma: CFR threshold is adaptive based on the signal PAPR. Power avg. with Cumulative Moving Average. +# Use with care, as CMA's increasingly slow response may be unsuitable for most use cases. +# +# strength: Ratio between amplitude-limited vs unprocessed signal (0 to 1). Default: 1 +# manual_thres: Fixed manual clipping threshold for CFR manual mode. Default: 0.5 +# auto_target_papr: Signal PAPR target (in dB) in CFR auto modes. output PAPR can be higher due to peak smoothing. Default: 8 +# ema_alpha: Alpha coefficient for the power average in auto_ema mode. Default: 1/7 +# +##################################################################### +[cfr] +#enable = false +#mode = manual +#manual_thres = 0.5 +#strength = 1 +#auto_target_papr = 8 +#ema_alpha = 0.0143 + +##################################################################### +# Expert configuration options +# +# pusch_max_its: Maximum number of turbo decoder iterations (default: 4) +# nr_pusch_max_its: Maximum number of LDPC iterations for NR (Default 10) +# pusch_8bit_decoder: Use 8-bit for LLR representation and turbo decoder trellis computation (experimental) +# nof_phy_threads: Selects the number of PHY threads (maximum: 4, minimum: 1, default: 3) +# metrics_period_secs: Sets the period at which metrics are requested from the eNB +# metrics_csv_enable: Write eNB metrics to CSV file. +# metrics_csv_filename: File path to use for CSV metrics +# report_json_enable: Write eNB report to JSON file (default: disabled) +# report_json_filename: Report JSON filename (default: /mnt/srslte/enb_report.json) +# report_json_asn1_oct: Prints ASN1 messages encoded as an octet string instead of plain text in the JSON report file +# alarms_log_enable: Enable Alarms logging (default: disabled) +# alarms_filename: Alarms logging filename (default: /mnt/srslte/alarms.log) +# tracing_enable: Write source code tracing information to a file +# tracing_filename: File path to use for tracing information +# tracing_buffcapacity: Maximum capacity in bytes the tracing framework can store +# stdout_ts_enable: Prints once per second the timestamp into stdout +# tx_amplitude: Transmit amplitude factor (set 0-1 to reduce PAPR) +# rrc_inactivity_timer Inactivity timeout used to remove UE context from RRC (in milliseconds) +# max_mac_dl_kos: Maximum number of consecutive KOs in DL before triggering the UE's release (default: 100) +# max_mac_ul_kos: Maximum number of consecutive KOs in UL before triggering the UE's release (default: 100) +# max_prach_offset_us: Maximum allowed RACH offset (in us) +# nof_prealloc_ues: Number of UE memory resources to preallocate during eNB initialization for faster UE creation (default: 8) +# rlf_release_timer_ms: Time taken by eNB to release UE context after it detects an RLF +# eea_pref_list: Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1) +# eia_pref_list: Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0) +# gtpu_tunnel_timeout: Time that GTPU takes to release indirect forwarding tunnel since the last received GTPU PDU (0 for no timer) +# ts1_reloc_prep_timeout: S1AP TS 36.413 TS1RelocPrep Expiry Timeout value in milliseconds +# ts1_reloc_overall_timeout: S1AP TS 36.413 TS1RelocOverall Expiry Timeout value in milliseconds +# rlf_release_timer_ms: Time taken by eNB to release UE context after it detects a RLF +# rlf_min_ul_snr_estim: SNR threshold in dB below which the enb is notified with RLF ko +# s1_setup_max_retries: Maximum amount of retries to setup the S1AP connection. If this value is exceeded, an alarm is written to the log. -1 means infinity. +# rx_gain_offset: RX Gain offset to add to rx_gain to calibrate RSRP readings +##################################################################### +[expert] +#pusch_max_its = 8 # These are half iterations +#nr_pusch_max_its = 10 +#pusch_8bit_decoder = false +#nof_phy_threads = 3 +#metrics_period_secs = 1 +#metrics_csv_enable = false +#metrics_csv_filename = /mnt/srslte/enb_metrics.csv +#report_json_enable = true +#report_json_filename = /mnt/srslte/enb_report.json +#report_json_asn1_oct = false +#alarms_log_enable = true +#alarms_filename = /mnt/srslte/enb_alarms.log +#tracing_enable = true +#tracing_filename = /mnt/srslte/enb_tracing.log +#tracing_buffcapacity = 1000000 +#stdout_ts_enable = false +#tx_amplitude = 0.6 +#rrc_inactivity_timer = 30000 +#max_mac_dl_kos = 100 +#max_mac_ul_kos = 100 +#max_prach_offset_us = 30 +#nof_prealloc_ues = 8 +#rlf_release_timer_ms = 4000 +#lcid_padding = 3 +#eea_pref_list = EEA0, EEA2, EEA1 +#eia_pref_list = EIA2, EIA1, EIA0 +#gtpu_tunnel_timeout = 0 +#extended_cp = false +#ts1_reloc_prep_timeout = 10000 +#ts1_reloc_overall_timeout = 10000 +#rlf_release_timer_ms = 4000 +#rlf_min_ul_snr_estim = -2 +#s1_setup_max_retries = -1 +#rx_gain_offset = 62 diff --git a/srslte/rr_gnb.conf b/srslte/rr_gnb.conf index 5da8b6e..b508c9c 100644 --- a/srslte/rr_gnb.conf +++ b/srslte/rr_gnb.conf @@ -64,6 +64,7 @@ nr_cell_list = tac = 1; pci = 500; dl_arfcn = 368500; + coreset0_idx = 6; band = 3; } ); diff --git a/srslte/sib.conf b/srslte/sib.conf index 0d4e60a..c38cdbe 100644 --- a/srslte/sib.conf +++ b/srslte/sib.conf @@ -137,12 +137,130 @@ sib3 = } }; +##################################################################### +# sib5 configuration options (See TS 36.331) +# Contains information relevant for inter-frequency cell re-selection. +# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted +# +# inter_freq_carrier_freq_list: A list of neighbouring inter-frequencies. +# dl_carrier_freq: The EARFCN for the EUTRA carrier frequency. +# q_rx_lev_min: Minimum received RSRP level in the E-UTRA cell, ([field_val] * 2) = [level in dBm]. +# p_max: Optional maximum allowed transmission power for the neighbouring E-UTRA cells on this carrier frequency. +# t_resel_eutra: Cell reselection timer (seconds). +# t_resel_eutra_sf: Optional speed dependent ScalingFactor for t_resel_eutra. +# sf_medium: Scaling factor if the UE is in Medium Mobility state, one of "0.25", "0.5", "0.75" or "1.0". +# sf_high: Scaling factor if the UE is in High Mobility state, one of "0.25", "0.5", "0.75" or "1.0". +# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency. +# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency. +# allowed_meas_bw: Maximum allowed measurement bandwidth on a carrier frequency . +# presence_ant_port_1: whether all the neighbouring cells use Antenna Port 1. +# cell_resel_prio: Optional absolute priority of the carrier frequency group. +# neigh_cell_cfg: Information related to MBSFN and TDD UL/DL configuration of neighbour cells. +# q_offset_freq: Frequency specific offset for equal priority E-UTRAN frequencies. +# inter_freq_neigh_cell_list: A List of inter-frequency neighbouring cells with specific cell re-selection parameters. +# phys_cell_id: Physical layer identity of the cell. +# q_offset_cell: Cell spcific offset. +# inter_freq_black_cell_list: A List of blacklisted inter-frequency neighbouring cells. +# start: The lowest physical cell identity in the range. +# range: The number of physical cell identities in the range. +# +##################################################################### +sib5 = +{ + inter_freq_carrier_freq_list = + ( + { + dl_carrier_freq = 1450; + q_rx_lev_min = -70; + t_resel_eutra = 2; + t_resel_eutra_sf = { + sf_medium = "0.25"; + sf_high = "1.0"; + }; + thresh_x_high = 3; + thresh_x_low = 2; + allowed_meas_bw = 75; + presence_ant_port_1 = True; + cell_resel_prio = 4; + neigh_cell_cfg = 2; + q_offset_freq = -6; + inter_freq_neigh_cell_list = + ( + { + phys_cell_id = 500; + q_offset_cell = 2; + } + ); + inter_freq_black_cell_list = + ( + { + start = 123; + range = 4; + } + ); + } + ); +}; + +##################################################################### +# sib6 configuration options (See TS 36.331) +# Contains UTRA neighbor information for inter-rat handover. +# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted +# +# t_resel_utra: Cell reselection timer (seconds) +# t_resel_utra_sf: Optional speed dependent ScalingFactor for t_resel_utra. +# sf_medium: Scaling factor if the UE is in Medium Mobility state, one of "0.25", "0.5", "0.75" or "1.0". +# sf_high: Scaling factor if the UE is in High Mobility state, one of "0.25", "0.5", "0.75" or "1.0". +# carrier_freq_list_utra_fdd / carrier_freq_list_utra_tdd: A list of carrier frequencies of UTRA FDD / TDD. +# carrier_freq: The UARFCN for the UTRA carrier frequency. +# cell_resel_prio: Optional absolute priority of the carrier frequency group. +# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency. +# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency. +# q_rx_lev_min: Minimum receive level in UTRA cell, ([field_val] * 2) + 1 = [level in dBm]. +# p_max_utra: The maximum allowed transmission power on the (uplink) carrier frequency. +# q_qual_min: Minimum required quality leve in UTRA cell, applicable only for FDD cells. +# +##################################################################### +sib6 = +{ + t_resel_utra = 1; + t_resel_utra_sf = { + sf_medium = "0.25"; + sf_high = "1.0"; + } + carrier_freq_list_utra_fdd = + ( + { + carrier_freq = 9613; + cell_resel_prio = 6; + thresh_x_high = 3; + thresh_x_low = 2; + q_rx_lev_min = -50; + p_max_utra = 4; + q_qual_min = -10; + } + ); + carrier_freq_list_utra_tdd = + ( + { + carrier_freq = 9505; + thresh_x_high = 1; + thresh_x_low = 2; + q_rx_lev_min = -50; + p_max_utra = -3; + } + ); +}; + ##################################################################### # sib7 configuration options (See TS 36.331) # Contains GERAN neighbor information for CSFB and inter-rat handover. # Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted # # t_resel_geran: Cell reselection timer (seconds) +# t_resel_geran_sf: Optional speed dependent ScalingFactor for t_resel_geran. +# sf_medium: Scaling factor if the UE is in Medium Mobility state, one of "0.25", "0.5", "0.75" or "1.0". +# sf_high: Scaling factor if the UE is in High Mobility state, one of "0.25", "0.5", "0.75" or "1.0". # carrier_freqs_info_list: A list of carrier frequency groups. # cell_resel_prio: Absolute priority of the carrier frequency group # ncc_permitted: 8-bit bitmap of NCC carriers permitted for monitoring diff --git a/srslte/enb_init.sh b/srslte/srslte_init.sh similarity index 56% rename from srslte/enb_init.sh rename to srslte/srslte_init.sh index bf17979..0aca5f9 100755 --- a/srslte/enb_init.sh +++ b/srslte/srslte_init.sh @@ -30,20 +30,37 @@ export IP_ADDR=$(awk 'END{print $1}' /etc/hosts) mkdir -p /etc/srsran -cp /mnt/srslte/enb.conf /etc/srsran cp /mnt/srslte/rb.conf /etc/srsran cp /mnt/srslte/sib.conf /etc/srsran if [[ -z "$COMPONENT_NAME" ]]; then echo "Error: COMPONENT_NAME environment variable not set"; exit 1; elif [[ "$COMPONENT_NAME" =~ ^(gnb$) ]]; then - echo "Deploying component: '$COMPONENT_NAME'" + echo "Configuring component: '$COMPONENT_NAME'" cp /mnt/srslte/rr_gnb.conf /etc/srsran/rr.conf + cp /mnt/srslte/enb.conf /etc/srsran sed -i 's|MME_IP|'$AMF_IP'|g' /etc/srsran/enb.conf elif [[ "$COMPONENT_NAME" =~ ^(enb$) ]]; then - echo "Deploying component: '$COMPONENT_NAME'" + echo "Configuring component: '$COMPONENT_NAME'" cp /mnt/srslte/rr.conf /etc/srsran + cp /mnt/srslte/enb.conf /etc/srsran sed -i 's|MME_IP|'$MME_IP'|g' /etc/srsran/enb.conf +elif [[ "$COMPONENT_NAME" =~ ^(enb_zmq$) ]]; then + echo "Configuring component: '$COMPONENT_NAME'" + cp /mnt/srslte/rr.conf /etc/srsran + cp /mnt/srslte/enb_zmq.conf /etc/srsran/enb.conf + sed -i 's|MME_IP|'$MME_IP'|g' /etc/srsran/enb.conf +elif [[ "$COMPONENT_NAME" =~ ^(gnb_zmq$) ]]; then + echo "Configuring component: '$COMPONENT_NAME'" + cp /mnt/srslte/rr_gnb.conf /etc/srsran/rr.conf + cp /mnt/srslte/enb_zmq.conf /etc/srsran/enb.conf + sed -i 's|MME_IP|'$AMF_IP'|g' /etc/srsran/enb.conf +elif [[ "$COMPONENT_NAME" =~ ^(ue_zmq$) ]]; then + echo "Configuring component: '$COMPONENT_NAME'" + cp /mnt/srslte/ue_zmq.conf /etc/srsran/ue.conf +elif [[ "$COMPONENT_NAME" =~ ^(ue_5g_zmq$) ]]; then + echo "Configuring component: '$COMPONENT_NAME'" + cp /mnt/srslte/ue_5g_zmq.conf /etc/srsran/ue.conf else echo "Error: Invalid component name: '$COMPONENT_NAME'" fi @@ -51,8 +68,27 @@ fi sed -i 's|MNC|'$MNC'|g' /etc/srsran/enb.conf sed -i 's|MCC|'$MCC'|g' /etc/srsran/enb.conf sed -i 's|SRS_ENB_IP|'$SRS_ENB_IP'|g' /etc/srsran/enb.conf +sed -i 's|SRS_UE_IP|'$SRS_UE_IP'|g' /etc/srsran/enb.conf +sed -i 's|UE1_KI|'$UE1_KI'|g' /etc/srsran/ue.conf +sed -i 's|UE1_OP|'$UE1_OP'|g' /etc/srsran/ue.conf +sed -i 's|UE1_IMSI|'$UE1_IMSI'|g' /etc/srsran/ue.conf +sed -i 's|SRS_UE_IP|'$SRS_UE_IP'|g' /etc/srsran/ue.conf +sed -i 's|SRS_ENB_IP|'$SRS_ENB_IP'|g' /etc/srsran/ue.conf +# For dbus not started issue when host machine is running Ubuntu 22.04 service dbus start && service avahi-daemon start +if [[ -z "$COMPONENT_NAME" ]]; then + echo "Error: COMPONENT_NAME environment variable not set"; exit 1; +elif [[ "$COMPONENT_NAME" =~ ^(gnb$) || "$COMPONENT_NAME" =~ ^(enb$) || "$COMPONENT_NAME" =~ ^(enb_zmq$) || "$COMPONENT_NAME" =~ ^(gnb_zmq$) ]]; then + echo "Deploying component: '$COMPONENT_NAME'" + /usr/local/bin/srsenb +elif [[ "$COMPONENT_NAME" =~ ^(ue_zmq$) || "$COMPONENT_NAME" =~ ^(ue_5g_zmq$) ]]; then + echo "Deploying component: '$COMPONENT_NAME'" + /usr/local/bin/srsue +else + echo "Error: Invalid component name: '$COMPONENT_NAME'" +fi + # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/srslte/ue_5g_zmq.conf b/srslte/ue_5g_zmq.conf new file mode 100644 index 0000000..460689e --- /dev/null +++ b/srslte/ue_5g_zmq.conf @@ -0,0 +1,467 @@ +##################################################################### +# srsUE configuration file +##################################################################### + +##################################################################### +# RF configuration +# +# freq_offset: Uplink and Downlink optional frequency offset (in Hz) +# tx_gain: Transmit gain (dB). +# rx_gain: Optional receive gain (dB). If disabled, AGC if enabled +# srate: Optional fixed sampling rate (Hz), corresponding to cell bandwidth. Must be set for 5G-SA. +# +# nof_antennas: Number of antennas per carrier (all carriers have the same number of antennas) +# device_name: Device driver family. Supported options: "auto" (uses first found), "UHD" or "bladeRF" +# device_args: Arguments for the device driver. Options are "auto" or any string. +# Default for UHD: "recv_frame_size=9232,send_frame_size=9232" +# Default for bladeRF: "" +# device_args_2: Arguments for the RF device driver 2. +# device_args_3: Arguments for the RF device driver 3. +# time_adv_nsamples: Transmission time advance (in number of samples) to compensate for RF delay +# from antenna to timestamp insertion. +# Default "auto". B210 USRP: 100 samples, bladeRF: 27. +# continuous_tx: Transmit samples continuously to the radio or on bursts (auto/yes/no). +# Default is auto (yes for UHD, no for rest) +##################################################################### +[rf] +freq_offset = 0 +tx_gain = 80 +#rx_gain = 40 +srate = 11.52e6 + +#nof_antennas = 1 + +# For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings: +# USRP B210: num_recv_frames=64,num_send_frames=64 + +# For best performance when BW<5 MHz (25 PRB), use the following device_args settings: +# USRP B210: send_frame_size=512,recv_frame_size=512 + +#device_args = auto +#time_adv_nsamples = auto +#continuous_tx = auto + +# Example for ZMQ-based operation with TCP transport for I/Q samples +device_name = zmq +device_args = tx_port=tcp://SRS_UE_IP:2001,rx_port=tcp://SRS_ENB_IP:2000,id=ue,base_srate=23.04e6 + +##################################################################### +# EUTRA RAT configuration +# +# dl_earfcn: Downlink EARFCN list. +# +# Optional parameters: +# dl_freq: Override DL frequency corresponding to dl_earfcn +# ul_freq: Override UL frequency corresponding to dl_earfcn +# nof_carriers: Number of carriers +##################################################################### +[rat.eutra] +#dl_earfcn = 3350 +nof_carriers = 0 + +##################################################################### +# NR RAT configuration +# +# Optional parameters: +# bands: List of support NR bands seperated by a comma (default 78) +# nof_carriers: Number of NR carriers (must be at least 1 for NR support) +##################################################################### +[rat.nr] +bands = 3 +nof_carriers = 1 + +##################################################################### +# Packet capture configuration +# +# Packet capture is supported at the MAC, MAC_NR, and NAS layer. +# MAC-layer packets are captured to file a the compact format decoded +# by the Wireshark. For decoding, use the UDP dissector and the UDP +# heuristic dissection. Edit the preferences (Edit > Preferences > +# Protocols > DLT_USER) for DLT_USER to add an entry for DLT=149 with +# Protocol=udp. Further, enable the heuristic dissection in UDP under: +# Analyze > Enabled Protocols > MAC-LTE > mac_lte_udp and MAC-NR > mac_nr_udp +# For more information see: https://wiki.wireshark.org/MAC-LTE +# Using the same filename for mac_filename and mac_nr_filename writes both +# MAC-LTE and MAC-NR to the same file allowing a better analysis. +# NAS-layer packets are dissected with DLT=148, and Protocol = nas-eps. +# +# enable: Enable packet captures of layers (mac/mac_nr/nas/none) multiple option list +# mac_filename: File path to use for MAC packet capture +# mac_nr_filename: File path to use for MAC NR packet capture +# nas_filename: File path to use for NAS packet capture +##################################################################### +[pcap] +enable = none +mac_filename = /mnt/srslte/ue_mac.pcap +mac_nr_filename = /mnt/srslte/ue_mac_nr.pcap +nas_filename = /mnt/srslte/ue_nas.pcap + +##################################################################### +# Log configuration +# +# Log levels can be set for individual layers. "all_level" sets log +# level for all layers unless otherwise configured. +# Format: e.g. phy_level = info +# +# In the same way, packet hex dumps can be limited for each level. +# "all_hex_limit" sets the hex limit for all layers unless otherwise +# configured. +# Format: e.g. phy_hex_limit = 32 +# +# Logging layers: rf, phy, mac, rlc, pdcp, rrc, nas, gw, usim, stack, all +# Logging levels: debug, info, warning, error, none +# +# filename: File path to use for log output. Can be set to stdout +# to print logs to standard output +# file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created. +# If set to negative, a single log file will be created. +##################################################################### +[log] +all_level = warning +phy_lib_level = none +all_hex_limit = 32 +filename = /mnt/srslte/ue.log +file_max_size = -1 + +##################################################################### +# USIM configuration +# +# mode: USIM mode (soft/pcsc) +# algo: Authentication algorithm (xor/milenage) +# op/opc: 128-bit Operator Variant Algorithm Configuration Field (hex) +# - Specify either op or opc (only used in milenage) +# k: 128-bit subscriber key (hex) +# imsi: 15 digit International Mobile Subscriber Identity +# imei: 15 digit International Mobile Station Equipment Identity +# pin: PIN in case real SIM card is used +# reader: Specify card reader by it's name as listed by 'pcsc_scan'. If empty, try all available readers. +##################################################################### +[usim] +mode = soft +algo = milenage +op = UE1_OP +k = UE1_KI +imsi = UE1_IMSI +imei = 353490069873319 +#reader = +#pin = 1234 + +##################################################################### +# RRC configuration +# +# ue_category: Sets UE category (range 1-5). Default: 4 +# release: UE Release (8 to 15) +# feature_group: Hex value of the featureGroupIndicators field in the +# UECapabilityInformation message. Default 0xe6041000 +# mbms_service_id: MBMS service id for autostarting MBMS reception +# (default -1 means disabled) +# mbms_service_port: Port of the MBMS service +# nr_measurement_pci: NR PCI for the simulated NR measurement. Default: 500 +# nr_short_sn_support: Announce PDCP short SN support. Default: true +##################################################################### +[rrc] +#ue_category = 4 +release = 15 +#feature_group = 0xe6041000 +#mbms_service_id = -1 +#mbms_service_port = 4321 + +##################################################################### +# NAS configuration +# +# apn: Set Access Point Name (APN) +# apn_protocol: Set APN protocol (IPv4, IPv6 or IPv4v6.) +# user: Username for CHAP authentication +# pass: Password for CHAP authentication +# force_imsi_attach: Whether to always perform an IMSI attach +# eia: List of integrity algorithms included in UE capabilities +# Supported: 1 - Snow3G, 2 - AES, 3 - ZUC +# eea: List of ciphering algorithms included in UE capabilities +# Supported: 0 - NULL, 1 - Snow3G, 2 - AES, 3 - ZUC +##################################################################### +[nas] +apn = internet +apn_protocol = ipv4 +#user = srsuser +#pass = srspass +#force_imsi_attach = false +#eia = 1,2,3 +#eea = 0,1,2,3 + +##################################################################### +# GW configuration +# +# netns: Network namespace to create TUN device. Default: empty +# ip_devname: Name of the tun_srsue device. Default: tun_srsue +# ip_netmask: Netmask of the tun_srsue device. Default: 255.255.255.0 +##################################################################### +[gw] +#netns = +#ip_devname = tun_srsue +#ip_netmask = 255.255.255.0 + +##################################################################### +# GUI configuration +# +# Simple GUI displaying PDSCH constellation and channel freq response. +# (Requires building with srsGUI) +# enable: Enable the graphical interface (true/false) +##################################################################### +[gui] +enable = false + +##################################################################### +# Channel emulator options: +# enable: Enable/Disable internal Downlink/Uplink channel emulator +# +# -- AWGN Generator +# awgn.enable: Enable/disable AWGN generator +# awgn.snr: SNR in dB +# awgn.signal_power: Received signal power in decibels full scale (dBfs) +# +# -- Fading emulator +# fading.enable: Enable/disable fading simulator +# fading.model: Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc) +# +# -- Delay Emulator delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2 +# Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period +# delay.enable: Enable/disable delay simulator +# delay.period_s: Delay period in seconds. +# delay.init_time_s: Delay initial time in seconds. +# delay.maximum_us: Maximum delay in microseconds +# delay.minumum_us: Minimum delay in microseconds +# +# -- Radio-Link Failure (RLF) Emulator +# rlf.enable: Enable/disable RLF simulator +# rlf.t_on_ms: Time for On state of the channel (ms) +# rlf.t_off_ms: Time for Off state of the channel (ms) +# +# -- High Speed Train Doppler model simulator +# hst.enable: Enable/Disable HST simulator +# hst.period_s: HST simulation period in seconds +# hst.fd_hz: Doppler frequency in Hz +# hst.init_time_s: Initial time in seconds +##################################################################### +[channel.dl] +#enable = false + +[channel.dl.awgn] +#enable = false +#snr = 30 + +[channel.dl.fading] +#enable = false +#model = none + +[channel.dl.delay] +#enable = false +#period_s = 3600 +#init_time_s = 0 +#maximum_us = 100 +#minimum_us = 10 + +[channel.dl.rlf] +#enable = false +#t_on_ms = 10000 +#t_off_ms = 2000 + +[channel.dl.hst] +#enable = false +#period_s = 7.2 +#fd_hz = 750.0 +#init_time_s = 0.0 + +[channel.ul] +#enable = false + +[channel.ul.awgn] +#enable = false +#n0 = -30 + +[channel.ul.fading] +#enable = false +#model = none + +[channel.ul.delay] +#enable = false +#period_s = 3600 +#init_time_s = 0 +#maximum_us = 100 +#minimum_us = 10 + +[channel.ul.rlf] +#enable = false +#t_on_ms = 10000 +#t_off_ms = 2000 + +[channel.ul.hst] +#enable = false +#period_s = 7.2 +#fd_hz = -750.0 +#init_time_s = 0.0 + +##################################################################### +# PHY configuration options +# +# rx_gain_offset: RX Gain offset to add to rx_gain to calibrate RSRP readings +# prach_gain: PRACH gain (dB). If defined, forces a gain for the tranmsission of PRACH only., +# Default is to use tx_gain in [rf] section. +# cqi_max: Upper bound on the maximum CQI to be reported. Default 15. +# cqi_fixed: Fixes the reported CQI to a constant value. Default disabled. +# snr_ema_coeff: Sets the SNR exponential moving average coefficient (Default 0.1) +# snr_estim_alg: Sets the noise estimation algorithm. (Default refs) +# Options: pss: use difference between received and known pss signal, +# refs: use difference between noise references and noiseless (after filtering) +# empty: use empty subcarriers in the boarder of pss/sss signal +# pdsch_max_its: Maximum number of turbo decoder iterations (Default 4) +# pdsch_meas_evm: Measure PDSCH EVM, increases CPU load (default false) +# nof_phy_threads: Selects the number of PHY threads (maximum 4, minimum 1, default 3) +# equalizer_mode: Selects equalizer mode. Valid modes are: "mmse", "zf" or any +# non-negative real number to indicate a regularized zf coefficient. +# Default is MMSE. +# correct_sync_error: Channel estimator measures and pre-compensates time synchronization error. Increases CPU usage, +# improves PDSCH decoding in high SFO and high speed UE scenarios. +# sfo_ema: EMA coefficient to average sample offsets used to compute SFO +# sfo_correct_period: Period in ms to correct sample time to adjust for SFO +# sss_algorithm: Selects the SSS estimation algorithm. Can choose between +# {full, partial, diff}. +# estimator_fil_auto: The channel estimator smooths the channel estimate with an adaptative filter. +# estimator_fil_stddev: Sets the channel estimator smooth gaussian filter standard deviation. +# estimator_fil_order: Sets the channel estimator smooth gaussian filter order (even values perform better). +# The taps are [w, 1-2w, w] +# +# snr_to_cqi_offset: Sets an offset in the SNR to CQI table. This is used to adjust the reported CQI. +# +# interpolate_subframe_enabled: Interpolates in the time domain the channel estimates within 1 subframe. Default is to average. +# +# pdsch_csi_enabled: Stores the Channel State Information and uses it for weightening the softbits. It is only +# used in TM1. It is True by default. +# +# pdsch_8bit_decoder: Use 8-bit for LLR representation and turbo decoder trellis computation (Experimental) +# force_ul_amplitude: Forces the peak amplitude in the PUCCH, PUSCH and SRS (set 0.0 to 1.0, set to 0 or negative for disabling) +# +# in_sync_rsrp_dbm_th: RSRP threshold (in dBm) above which the UE considers to be in-sync +# in_sync_snr_db_th: SNR threshold (in dB) above which the UE considers to be in-sync +# nof_in_sync_events: Number of PHY in-sync events before sending an in-sync event to RRC +# nof_out_of_sync_events: Number of PHY out-sync events before sending an out-sync event to RRC +# +# force_N_id_2: Force using a specific PSS (set to -1 to allow all PSSs). +# force_N_id_1: Force using a specific SSS (set to -1 to allow all SSSs). +# +##################################################################### +[phy] +#rx_gain_offset = 62 +#prach_gain = 30 +#cqi_max = 15 +#cqi_fixed = 10 +#snr_ema_coeff = 0.1 +#snr_estim_alg = refs +#pdsch_max_its = 8 # These are half iterations +#pdsch_meas_evm = false +#nof_phy_threads = 3 +#equalizer_mode = mmse +#correct_sync_error = false +#sfo_ema = 0.1 +#sfo_correct_period = 10 +#sss_algorithm = full +#estimator_fil_auto = false +#estimator_fil_stddev = 1.0 +#estimator_fil_order = 4 +#snr_to_cqi_offset = 0.0 +#interpolate_subframe_enabled = false +#pdsch_csi_enabled = true +#pdsch_8bit_decoder = false +#force_ul_amplitude = 0 +#detect_cp = false + +#in_sync_rsrp_dbm_th = -130.0 +#in_sync_snr_db_th = 3.0 +#nof_in_sync_events = 10 +#nof_out_of_sync_events = 20 + +#force_N_id_2 = 1 +#force_N_id_1 = 10 + +##################################################################### +# PHY NR specific configuration options +# +# store_pdsch_ko: Dumps the PDSCH baseband samples into a file on KO reception +# +##################################################################### +[phy.nr] +#store_pdsch_ko = false + +##################################################################### +# CFR configuration options +# +# The CFR module provides crest factor reduction for the transmitted signal. +# +# enable: Enable or disable the CFR. Default: disabled +# +# mode: manual: CFR threshold is set by cfr_manual_thres (default). +# auto_ema: CFR threshold is adaptive based on the signal PAPR. Power avg. with Exponential Moving Average. +# The time constant of the averaging can be tweaked with the ema_alpha parameter. +# auto_cma: CFR threshold is adaptive based on the signal PAPR. Power avg. with Cumulative Moving Average. +# Use with care, as CMA's increasingly slow response may be unsuitable for most use cases. +# +# strength: Ratio between amplitude-limited vs unprocessed signal (0 to 1). Default: 1 +# manual_thres: Fixed manual clipping threshold for CFR manual mode. Default: 2 +# auto_target_papr: Signal PAPR target (in dB) in CFR auto modes. output PAPR can be higher due to peak smoothing. Default: 7 +# ema_alpha: Alpha coefficient for the power average in auto_ema mode. Default: 1/7 +# +##################################################################### +[cfr] +#enable = false +#mode = manual +#manual_thres = 2.0 +#strength = 1.0 +#auto_target_papr = 7.0 +#ema_alpha = 0.0143 + +##################################################################### +# Simulation configuration options +# +# The UE simulation supports turning on and off airplane mode in the UE. +# The actions are carried periodically until the UE is stopped. +# +# airplane_t_on_ms: Time to leave airplane mode turned on (in ms) +# +# airplane_t_off_ms: Time to leave airplane mode turned off (in ms) +# +##################################################################### +[sim] +#airplane_t_on_ms = -1 +#airplane_t_off_ms = -1 + +##################################################################### +# General configuration options +# +# metrics_csv_enable: Write UE metrics to CSV file. +# +# metrics_period_secs: Sets the period at which metrics are requested from the UE. +# +# metrics_csv_filename: File path to use for CSV metrics. +# +# tracing_enable: Write source code tracing information to a file. +# +# tracing_filename: File path to use for tracing information. +# +# tracing_buffcapacity: Maximum capacity in bytes the tracing framework can store. +# +# have_tti_time_stats: Calculate TTI execution statistics using system clock +# +# metrics_json_enable: Write UE metrics to JSON file. +# +# metrics_json_filename: File path to use for JSON metrics. +# +##################################################################### +[general] +#metrics_csv_enable = false +#metrics_period_secs = 1 +#metrics_csv_filename = /mnt/srslte/ue_metrics.csv +#have_tti_time_stats = true +#tracing_enable = true +#tracing_filename = /mnt/srslte/ue_tracing.log +#tracing_buffcapacity = 1000000 +#metrics_json_enable = false +#metrics_json_filename = /mnt/srslte/ue_metrics.json diff --git a/srslte/ue_mac_nr.pcap b/srslte/ue_mac_nr.pcap new file mode 100644 index 0000000000000000000000000000000000000000..f80184f4471591bc64b693934cb862c55b8cc5f8 GIT binary patch literal 151552 zcmeI*e{5A}9mnzSb9(RX>Ftku+KshEq_?BOM39c+sD-Yll^=x~))|&b_%TWs1+xMJ zjF|c3X(^_#$&U^RKQ_FbBf&(>#6%G%J=qolf)SU=#9-+b788wPMs%BQ*5|pUBuki{ z63p82KIv)iy*)pk^Lp+-=acXAoL62v(&b1*29~})k?)u{i#LpGR&p;{si;J9e6^uft@ZqfBVv9kmRCk=#UE|{{YXn^>6Nv9QbcR1 zjp@{mr;_di#lG37>%{px1Civ>T_4>pWnEs&KYvpBs4ScOy|_7@J^ho8D-GtgUDKyG zF9uHUIFcAReeNB~H>c9h9A&orpNlLX}_Zg=nQjk>j zQ~tf{*%NmkJCt&JGekvXOr4zc@*Kz0>ZN4%ZWZWRo>aE0bwOp3TPK;G{^at^i1K`S z-HV`C;Z_Llh>zCUx8J(1gZzUf?petwL7Bh^uA zE7B1BLI42-5I_I{1Q0*~0R#|0009IL7_@-Rt6tvjN=d$?S6g3|UvjO!>iy%P=9n>K zqA0N%v@$y&fB*srAbgE5B9BE_>JFeS-0tg_000IagfB*srAb+a{J=77hyyu`&W9>+^No{L_uYT>o zl4K&tPWiGdZ_M~0>D%KoP0w|e`49mF5I_I{1Q0*~0R#|0009Jsk${a${<1q{dC!mg zM?ilj=KCfe1Z|txVUe}Qqf6$?{ zNTJ$TS=cK2``WxQOLZpkN*aP+2q1s}0tg_000IagfB*srAb5I_I{1Q0*~0R#|0009ILxB&s1S9N#Cr6ga{tIezOORnWrY9OytHm@qR zc~wM|XY;CZML-Gd_q&q`obd@=dKz zuf_1p>L^J@B%XfbU;cB;sp=SIKNg1t0R#|0009ILKmY**5I_I{1Q0+VynxNCDx=xq zhND&5yecYchRv&-EXn?^?%Mz6%l<>!)Be)Hc~{SzCEA-Qlehm?ofPv%WVWyUdb1Yl z`Tn%iznVaV6~1%W5&;AdKmY**5I_I{1Q0*~0R%n_0UMWWGI2?$*{16lj`m^n5$8kz z0R#|0009ILKmY**5I_I{1a2h(n^&zV3z=6nUM=s5>!?Isd27l3KdDhVCb6n$jaqQ} z@8_jkN_DpT`v!G)kSUo}x7DbGCthofRA?P36y4j`ck=8O33iI^Y;T|T)2gXIn?CiJ zJX;zxRl8LF+)Cd(t`z|U5I_I{1Q0*~0R#|0009ILxW0hRt1iqBIUMZ)n^(C)u5^7% zK1Bcl1Q0*~0R#|0009ILKmdUeAzRRm_{q)D3-!Q6Yc&G7FF;vG$IN>*>42V@UKbjX(ea1Q0*~0R#|0009ILKmY**hMR!Rs}}l+aHFAK zvw2mVhjR_LPNuyGAb+#DyhYM07Eltgn zSFcl&;mk1+iNqu-k;EHJc03qcwnYE|1Q0*~0R#|0009ILKmY**5E#6`5|dX=AJd;z z+05#{=2ch7s|GL39ta?S00IagfB*srAb= 15 MHz use the following device_args settings: +# USRP B210: num_recv_frames=64,num_send_frames=64 + +# For best performance when BW<5 MHz (25 PRB), use the following device_args settings: +# USRP B210: send_frame_size=512,recv_frame_size=512 + +#device_args = auto +#time_adv_nsamples = auto +#continuous_tx = auto + +# Example for ZMQ-based operation with TCP transport for I/Q samples +device_name = zmq +device_args = tx_port=tcp://SRS_UE_IP:2001,rx_port=tcp://SRS_ENB_IP:2000,id=ue,base_srate=23.04e6 + +##################################################################### +# EUTRA RAT configuration +# +# dl_earfcn: Downlink EARFCN list. +# +# Optional parameters: +# dl_freq: Override DL frequency corresponding to dl_earfcn +# ul_freq: Override UL frequency corresponding to dl_earfcn +# nof_carriers: Number of carriers +##################################################################### +[rat.eutra] +dl_earfcn = 3150 +#nof_carriers = 1 + +##################################################################### +# NR RAT configuration +# +# Optional parameters: +# bands: List of support NR bands seperated by a comma (default 78) +# nof_carriers: Number of NR carriers (must be at least 1 for NR support) +##################################################################### +[rat.nr] +# bands = 78 +# nof_carriers = 0 + +##################################################################### +# Packet capture configuration +# +# Packet capture is supported at the MAC, MAC_NR, and NAS layer. +# MAC-layer packets are captured to file a the compact format decoded +# by the Wireshark. For decoding, use the UDP dissector and the UDP +# heuristic dissection. Edit the preferences (Edit > Preferences > +# Protocols > DLT_USER) for DLT_USER to add an entry for DLT=149 with +# Protocol=udp. Further, enable the heuristic dissection in UDP under: +# Analyze > Enabled Protocols > MAC-LTE > mac_lte_udp and MAC-NR > mac_nr_udp +# For more information see: https://wiki.wireshark.org/MAC-LTE +# Using the same filename for mac_filename and mac_nr_filename writes both +# MAC-LTE and MAC-NR to the same file allowing a better analysis. +# NAS-layer packets are dissected with DLT=148, and Protocol = nas-eps. +# +# enable: Enable packet captures of layers (mac/mac_nr/nas/none) multiple option list +# mac_filename: File path to use for MAC packet capture +# mac_nr_filename: File path to use for MAC NR packet capture +# nas_filename: File path to use for NAS packet capture +##################################################################### +[pcap] +enable = none +mac_filename = /mnt/srslte/ue_mac.pcap +mac_nr_filename = /mnt/srslte/ue_mac_nr.pcap +nas_filename = /mnt/srslte/ue_nas.pcap + +##################################################################### +# Log configuration +# +# Log levels can be set for individual layers. "all_level" sets log +# level for all layers unless otherwise configured. +# Format: e.g. phy_level = info +# +# In the same way, packet hex dumps can be limited for each level. +# "all_hex_limit" sets the hex limit for all layers unless otherwise +# configured. +# Format: e.g. phy_hex_limit = 32 +# +# Logging layers: rf, phy, mac, rlc, pdcp, rrc, nas, gw, usim, stack, all +# Logging levels: debug, info, warning, error, none +# +# filename: File path to use for log output. Can be set to stdout +# to print logs to standard output +# file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created. +# If set to negative, a single log file will be created. +##################################################################### +[log] +all_level = warning +phy_lib_level = none +all_hex_limit = 32 +filename = /mnt/srslte/ue.log +file_max_size = -1 + +##################################################################### +# USIM configuration +# +# mode: USIM mode (soft/pcsc) +# algo: Authentication algorithm (xor/milenage) +# op/opc: 128-bit Operator Variant Algorithm Configuration Field (hex) +# - Specify either op or opc (only used in milenage) +# k: 128-bit subscriber key (hex) +# imsi: 15 digit International Mobile Subscriber Identity +# imei: 15 digit International Mobile Station Equipment Identity +# pin: PIN in case real SIM card is used +# reader: Specify card reader by it's name as listed by 'pcsc_scan'. If empty, try all available readers. +##################################################################### +[usim] +mode = soft +algo = milenage +op = UE1_OP +k = UE1_KI +imsi = UE1_IMSI +imei = 353490069873319 +#reader = +#pin = 1234 + +##################################################################### +# RRC configuration +# +# ue_category: Sets UE category (range 1-5). Default: 4 +# release: UE Release (8 to 15) +# feature_group: Hex value of the featureGroupIndicators field in the +# UECapabilityInformation message. Default 0xe6041000 +# mbms_service_id: MBMS service id for autostarting MBMS reception +# (default -1 means disabled) +# mbms_service_port: Port of the MBMS service +# nr_measurement_pci: NR PCI for the simulated NR measurement. Default: 500 +# nr_short_sn_support: Announce PDCP short SN support. Default: true +##################################################################### +[rrc] +#ue_category = 4 +#release = 8 +#feature_group = 0xe6041000 +#mbms_service_id = -1 +#mbms_service_port = 4321 + +##################################################################### +# NAS configuration +# +# apn: Set Access Point Name (APN) +# apn_protocol: Set APN protocol (IPv4, IPv6 or IPv4v6.) +# user: Username for CHAP authentication +# pass: Password for CHAP authentication +# force_imsi_attach: Whether to always perform an IMSI attach +# eia: List of integrity algorithms included in UE capabilities +# Supported: 1 - Snow3G, 2 - AES, 3 - ZUC +# eea: List of ciphering algorithms included in UE capabilities +# Supported: 0 - NULL, 1 - Snow3G, 2 - AES, 3 - ZUC +##################################################################### +[nas] +apn = internet +apn_protocol = ipv4 +#user = srsuser +#pass = srspass +#force_imsi_attach = false +#eia = 1,2,3 +#eea = 0,1,2,3 + +##################################################################### +# GW configuration +# +# netns: Network namespace to create TUN device. Default: empty +# ip_devname: Name of the tun_srsue device. Default: tun_srsue +# ip_netmask: Netmask of the tun_srsue device. Default: 255.255.255.0 +##################################################################### +[gw] +#netns = +#ip_devname = tun_srsue +#ip_netmask = 255.255.255.0 + +##################################################################### +# GUI configuration +# +# Simple GUI displaying PDSCH constellation and channel freq response. +# (Requires building with srsGUI) +# enable: Enable the graphical interface (true/false) +##################################################################### +[gui] +enable = false + +##################################################################### +# Channel emulator options: +# enable: Enable/Disable internal Downlink/Uplink channel emulator +# +# -- AWGN Generator +# awgn.enable: Enable/disable AWGN generator +# awgn.snr: SNR in dB +# awgn.signal_power: Received signal power in decibels full scale (dBfs) +# +# -- Fading emulator +# fading.enable: Enable/disable fading simulator +# fading.model: Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc) +# +# -- Delay Emulator delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2 +# Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period +# delay.enable: Enable/disable delay simulator +# delay.period_s: Delay period in seconds. +# delay.init_time_s: Delay initial time in seconds. +# delay.maximum_us: Maximum delay in microseconds +# delay.minumum_us: Minimum delay in microseconds +# +# -- Radio-Link Failure (RLF) Emulator +# rlf.enable: Enable/disable RLF simulator +# rlf.t_on_ms: Time for On state of the channel (ms) +# rlf.t_off_ms: Time for Off state of the channel (ms) +# +# -- High Speed Train Doppler model simulator +# hst.enable: Enable/Disable HST simulator +# hst.period_s: HST simulation period in seconds +# hst.fd_hz: Doppler frequency in Hz +# hst.init_time_s: Initial time in seconds +##################################################################### +[channel.dl] +#enable = false + +[channel.dl.awgn] +#enable = false +#snr = 30 + +[channel.dl.fading] +#enable = false +#model = none + +[channel.dl.delay] +#enable = false +#period_s = 3600 +#init_time_s = 0 +#maximum_us = 100 +#minimum_us = 10 + +[channel.dl.rlf] +#enable = false +#t_on_ms = 10000 +#t_off_ms = 2000 + +[channel.dl.hst] +#enable = false +#period_s = 7.2 +#fd_hz = 750.0 +#init_time_s = 0.0 + +[channel.ul] +#enable = false + +[channel.ul.awgn] +#enable = false +#n0 = -30 + +[channel.ul.fading] +#enable = false +#model = none + +[channel.ul.delay] +#enable = false +#period_s = 3600 +#init_time_s = 0 +#maximum_us = 100 +#minimum_us = 10 + +[channel.ul.rlf] +#enable = false +#t_on_ms = 10000 +#t_off_ms = 2000 + +[channel.ul.hst] +#enable = false +#period_s = 7.2 +#fd_hz = -750.0 +#init_time_s = 0.0 + +##################################################################### +# PHY configuration options +# +# rx_gain_offset: RX Gain offset to add to rx_gain to calibrate RSRP readings +# prach_gain: PRACH gain (dB). If defined, forces a gain for the tranmsission of PRACH only., +# Default is to use tx_gain in [rf] section. +# cqi_max: Upper bound on the maximum CQI to be reported. Default 15. +# cqi_fixed: Fixes the reported CQI to a constant value. Default disabled. +# snr_ema_coeff: Sets the SNR exponential moving average coefficient (Default 0.1) +# snr_estim_alg: Sets the noise estimation algorithm. (Default refs) +# Options: pss: use difference between received and known pss signal, +# refs: use difference between noise references and noiseless (after filtering) +# empty: use empty subcarriers in the boarder of pss/sss signal +# pdsch_max_its: Maximum number of turbo decoder iterations (Default 4) +# pdsch_meas_evm: Measure PDSCH EVM, increases CPU load (default false) +# nof_phy_threads: Selects the number of PHY threads (maximum 4, minimum 1, default 3) +# equalizer_mode: Selects equalizer mode. Valid modes are: "mmse", "zf" or any +# non-negative real number to indicate a regularized zf coefficient. +# Default is MMSE. +# correct_sync_error: Channel estimator measures and pre-compensates time synchronization error. Increases CPU usage, +# improves PDSCH decoding in high SFO and high speed UE scenarios. +# sfo_ema: EMA coefficient to average sample offsets used to compute SFO +# sfo_correct_period: Period in ms to correct sample time to adjust for SFO +# sss_algorithm: Selects the SSS estimation algorithm. Can choose between +# {full, partial, diff}. +# estimator_fil_auto: The channel estimator smooths the channel estimate with an adaptative filter. +# estimator_fil_stddev: Sets the channel estimator smooth gaussian filter standard deviation. +# estimator_fil_order: Sets the channel estimator smooth gaussian filter order (even values perform better). +# The taps are [w, 1-2w, w] +# +# snr_to_cqi_offset: Sets an offset in the SNR to CQI table. This is used to adjust the reported CQI. +# +# interpolate_subframe_enabled: Interpolates in the time domain the channel estimates within 1 subframe. Default is to average. +# +# pdsch_csi_enabled: Stores the Channel State Information and uses it for weightening the softbits. It is only +# used in TM1. It is True by default. +# +# pdsch_8bit_decoder: Use 8-bit for LLR representation and turbo decoder trellis computation (Experimental) +# force_ul_amplitude: Forces the peak amplitude in the PUCCH, PUSCH and SRS (set 0.0 to 1.0, set to 0 or negative for disabling) +# +# in_sync_rsrp_dbm_th: RSRP threshold (in dBm) above which the UE considers to be in-sync +# in_sync_snr_db_th: SNR threshold (in dB) above which the UE considers to be in-sync +# nof_in_sync_events: Number of PHY in-sync events before sending an in-sync event to RRC +# nof_out_of_sync_events: Number of PHY out-sync events before sending an out-sync event to RRC +# +# force_N_id_2: Force using a specific PSS (set to -1 to allow all PSSs). +# force_N_id_1: Force using a specific SSS (set to -1 to allow all SSSs). +# +##################################################################### +[phy] +#rx_gain_offset = 62 +#prach_gain = 30 +#cqi_max = 15 +#cqi_fixed = 10 +#snr_ema_coeff = 0.1 +#snr_estim_alg = refs +#pdsch_max_its = 8 # These are half iterations +#pdsch_meas_evm = false +#nof_phy_threads = 3 +#equalizer_mode = mmse +#correct_sync_error = false +#sfo_ema = 0.1 +#sfo_correct_period = 10 +#sss_algorithm = full +#estimator_fil_auto = false +#estimator_fil_stddev = 1.0 +#estimator_fil_order = 4 +#snr_to_cqi_offset = 0.0 +#interpolate_subframe_enabled = false +#pdsch_csi_enabled = true +#pdsch_8bit_decoder = false +#force_ul_amplitude = 0 +#detect_cp = false + +#in_sync_rsrp_dbm_th = -130.0 +#in_sync_snr_db_th = 3.0 +#nof_in_sync_events = 10 +#nof_out_of_sync_events = 20 + +#force_N_id_2 = 1 +#force_N_id_1 = 10 + +##################################################################### +# PHY NR specific configuration options +# +# store_pdsch_ko: Dumps the PDSCH baseband samples into a file on KO reception +# +##################################################################### +[phy.nr] +#store_pdsch_ko = false + +##################################################################### +# CFR configuration options +# +# The CFR module provides crest factor reduction for the transmitted signal. +# +# enable: Enable or disable the CFR. Default: disabled +# +# mode: manual: CFR threshold is set by cfr_manual_thres (default). +# auto_ema: CFR threshold is adaptive based on the signal PAPR. Power avg. with Exponential Moving Average. +# The time constant of the averaging can be tweaked with the ema_alpha parameter. +# auto_cma: CFR threshold is adaptive based on the signal PAPR. Power avg. with Cumulative Moving Average. +# Use with care, as CMA's increasingly slow response may be unsuitable for most use cases. +# +# strength: Ratio between amplitude-limited vs unprocessed signal (0 to 1). Default: 1 +# manual_thres: Fixed manual clipping threshold for CFR manual mode. Default: 2 +# auto_target_papr: Signal PAPR target (in dB) in CFR auto modes. output PAPR can be higher due to peak smoothing. Default: 7 +# ema_alpha: Alpha coefficient for the power average in auto_ema mode. Default: 1/7 +# +##################################################################### +[cfr] +#enable = false +#mode = manual +#manual_thres = 2.0 +#strength = 1.0 +#auto_target_papr = 7.0 +#ema_alpha = 0.0143 + +##################################################################### +# Simulation configuration options +# +# The UE simulation supports turning on and off airplane mode in the UE. +# The actions are carried periodically until the UE is stopped. +# +# airplane_t_on_ms: Time to leave airplane mode turned on (in ms) +# +# airplane_t_off_ms: Time to leave airplane mode turned off (in ms) +# +##################################################################### +[sim] +#airplane_t_on_ms = -1 +#airplane_t_off_ms = -1 + +##################################################################### +# General configuration options +# +# metrics_csv_enable: Write UE metrics to CSV file. +# +# metrics_period_secs: Sets the period at which metrics are requested from the UE. +# +# metrics_csv_filename: File path to use for CSV metrics. +# +# tracing_enable: Write source code tracing information to a file. +# +# tracing_filename: File path to use for tracing information. +# +# tracing_buffcapacity: Maximum capacity in bytes the tracing framework can store. +# +# have_tti_time_stats: Calculate TTI execution statistics using system clock +# +# metrics_json_enable: Write UE metrics to JSON file. +# +# metrics_json_filename: File path to use for JSON metrics. +# +##################################################################### +[general] +#metrics_csv_enable = false +#metrics_period_secs = 1 +#metrics_csv_filename = /mnt/srslte/ue_metrics.csv +#have_tti_time_stats = true +#tracing_enable = true +#tracing_filename = /mnt/srslte/ue_tracing.log +#tracing_buffcapacity = 1000000 +#metrics_json_enable = false +#metrics_json_filename = /mnt/srslte/ue_metrics.json diff --git a/srsue_5g_zmq.yaml b/srsue_5g_zmq.yaml new file mode 100644 index 0000000..75a23c7 --- /dev/null +++ b/srsue_5g_zmq.yaml @@ -0,0 +1,28 @@ +version: '3' +services: + srsue_5g_zmq: + image: docker_srslte + container_name: srsue_5g_zmq + stdin_open: true + tty: true + cap_add: + - NET_ADMIN + privileged: true + volumes: + - ./srslte:/mnt/srslte + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + environment: + - COMPONENT_NAME=ue_5g_zmq + expose: + - "2000/tcp" + - "2001/tcp" + networks: + default: + ipv4_address: ${SRS_UE_IP} +networks: + default: + external: + name: docker_open5gs_default diff --git a/srsue_zmq.yaml b/srsue_zmq.yaml new file mode 100644 index 0000000..434ebae --- /dev/null +++ b/srsue_zmq.yaml @@ -0,0 +1,28 @@ +version: '3' +services: + srsue_zmq: + image: docker_srslte + container_name: srsue_zmq + stdin_open: true + tty: true + cap_add: + - NET_ADMIN + privileged: true + volumes: + - ./srslte:/mnt/srslte + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + environment: + - COMPONENT_NAME=ue_zmq + expose: + - "2000/tcp" + - "2001/tcp" + networks: + default: + ipv4_address: ${SRS_UE_IP} +networks: + default: + external: + name: docker_open5gs_default