srsran / srsRAN_Project

Open source O-RAN 5G CU/DU solution from Software Radio Systems (SRS) https://docs.srsran.com/projects/project
https://www.srsran.com
GNU Affero General Public License v3.0
520 stars 175 forks source link

Duplicate served cell CGI #798

Closed mickwubs97 closed 3 weeks ago

mickwubs97 commented 2 months ago

Issue Description

Cannot establish F1 connections from two DUs to one CU simultaneously. CU-CP-F1] [W] Rejecting F1 Setup Request. Cause: Duplicate served cell CGI

Setup Details

CU:

gnb_id_bit_length: 32
  #ran_node_name: cu_cp_01
amf:
  addr: 10.129.3.131
  bind_addr: 10.129.3.254

cu_cp:
  inactivity_timer: 7200
  plmns: "20893"
  tacs: "7"
  f1ap:
    bind_addr: 127.0.10.1
  mobility:
    trigger_handover_from_measurements: true  # Set the CU-CP to trigger handover when neighbor cell measurements arrive
    cells:                                    # List of cells available for handover known to the cu-cp
      - nr_cell_id: 0x19B0                      # Cell ID for cell 1
        periodic_report_cfg_id: 1               #
        ncells:                                 # Neighbor cell(s) available for handover
          - nr_cell_id: 0x19B1                    # Cell ID of neighbor cell available for handover
            report_configs: [ 2 ]                 # Report configurations to configure for this neighbor cell
      - nr_cell_id: 0x19B1                      # Cell ID for cell 2
        periodic_report_cfg_id: 1               #
        ncells:                                 # Neighbor cell(s) available for handover
          - nr_cell_id: 0x19B0                    # Cell ID of neighbor cell available for handover
            report_configs: [ 2 ]                 # Report configurations to configure for this neighbor cell
    report_configs:  
      - report_cfg_id: 1                        # Report config ID 1
        report_type: periodical                 # Sets the report type as periodical
        report_interval_ms: 480                 # Sets to report every 480ms
      - report_cfg_id: 2                        # Report config ID 2
        report_type: event_triggered            # Sets the report type as event triggered
        a3_report_type: rsrp                    # Sets the A3 report type to RSRP
        a3_offset_db: 3                         # A3 offset in dB used for measurement report trigger. Note the actual value is field valu        
        a3_hysteresis_db: 0                     #
        a3_time_to_trigger_ms: 100              # Time in ms during which A3 condition must be met before measurement report trigger
cu_up:
  nru:
    bind_addr: 127.0.10.1

log:
  filename: /tmp/cu.log
  all_level: info

pcap:
  ngap_enable: false
  ngap_filename: /tmp/cu_ngap.pcap

DU1:

gnb_id: 411
gnb_id_bit_length: 32
gnb_du_id: 0

cells:
  - pci: 1
    dl_arfcn: 626020
f1ap:
  cu_cp_addr: 127.0.10.1
  bind_addr: 127.0.10.2
nru:
  bind_addr: 127.0.10.2

ru_sdr:
  device_driver: zmq                # The RF driver name.
  device_args: tx_port=tcp://127.0.0.1:2000,rx_port=tcp://127.0.0.1:2001,base_srate=23.04e6 # Optionally pass arguments to the selected RF driver.  srate: 23.04                      # RF sample rate might need to be adjusted according to selected bandwidth.
  tx_gain: 75                       # Transmit gain of the RF might need to adjusted to the given situation.
  rx_gain: 75                       # Receive gain of the RF might need to adjusted to the given situation.

cell_cfg:
  dl_arfcn: 650000
  band: 78
  channel_bandwidth_MHz: 20
  common_scs: 30
  plmn: "20893"
  tac: 7
  pci: 1

log:
  filename: /tmp/du1.log
  all_level: debug

pcap:
  mac_enable: false
  mac_filename: /tmp/du_mac.pcap
  f1ap_enable: false
  f1ap_filename: /tmp/du_f1ap.pcap
  f1u_enable: false
  f1u_filename: /tmp/du_f1u.pcap

DU2:

gnb_id: 411
gnb_id_bit_length: 32
gnb_du_id: 1

f1ap:
  cu_cp_addr: 127.0.10.1
  bind_addr: 127.0.10.3
nru:
  bind_addr: 127.0.10.3

cells:
  - pci: 2
    dl_arfcn: 622020

ru_sdr:
  device_driver: zmq                # The RF driver name.
  device_args: tx_port=tcp://127.0.0.1:2001,rx_port=tcp://127.0.0.1:2002,base_srate=23.04e6 # Optionally pass arguments to the selected RF driver.  srate: 23.04                      # RF sample rate might need to be adjusted according to selected bandwidth.
  tx_gain: 75                       # Transmit gain of the RF might need to adjusted to the given situation.
  rx_gain: 75                       # Receive gain of the RF might need to adjusted to the given situation.

cell_cfg:
  dl_arfcn: 650000
  band: 78
  channel_bandwidth_MHz: 20
  common_scs: 30
  plmn: "20893"
  tac: 7
  pci: 2

log:
  filename: /tmp/du2.log
  all_level: debug

pcap:
  mac_enable: false
  mac_filename: /tmp/du_mac.pcap
  f1ap_enable: false
  f1ap_filename: /tmp/du_f1ap.pcap
  f1u_enable: false
  f1u_filename: /tmp/du_f1u.pcap

Expected Behavior

Establish F1 connections from two DUs to one CU simultaneously

Actual Behaviour

Cannot establish F1 connections from two DUs to one CU simultaneously. CU-CP-F1] [W] Rejecting F1 Setup Request. Cause: Duplicate served cell CGI (from /tmp/cu.log) image

CU-CP-F1] [W] Rejecting F1 Setup Request. Cause: Duplicate served cell CGI

Steps to reproduce the problem

cd srsRAN_Project/config
sudo srscu -c cu.yml
sudo srsdu -c du1.yml
sudo srsdu -c du2.yml

Additional Information

srsRAN was used with free5gc. It's the same issue with the UHD setting.

I commented out line 243:250 in https://github.com/srsran/srsRAN_Project/blob/4ac5300d4927b5199af69e6bc2e55d061fc33652/lib/cu_cp/du_processor/du_configuration_manager.cpp#L28 and it worked. I don't think it is the best way.

I change this section of code again https://github.com/srsran/srsRAN_Project/blob/4ac5300d4927b5199af69e6bc2e55d061fc33652/lib/cu_cp/du_processor/du_configuration_manager.cpp#L28 to have CU only check pci instead of cgi and the duplicated cgi error goes away. Is it because pci is not included in the cgi?

FabianEckermann commented 1 month ago

Hi @mickwubs97, You must assign different sector IDs to their cells to connect multiple DUs to the CU. The cells config provides a sector_id argument for this.