Commit Graph
100 Commits
Author SHA1 Message Date
Guido Casati 124f4ab9c5 Improvements to rrc_gNB_process_e1_setup_req
* add const atttribute to input message
* use malloc_or_fail
2025-01-24 11:13:17 +01:00
Guido Casati 5ea432c081 Use CU-UP E1 Setup Failure enc/dec lib in stack 2025-01-24 11:13:17 +01:00
Guido Casati 75b238633c Add test for E1 CUUP Setup Failure 2025-01-24 11:13:17 +01:00
Guido Casati beb74b3e62 Add GNB-CU-UP E1 Setup failure enc/dec library 2025-01-24 11:13:14 +01:00
Guido Casati f3890dcd2a Completed GNB-CU-UP E1 Setup failure according to 9.2.1.6 of 3GPP TS 38.463 2025-01-23 17:37:52 +01:00
Guido Casati b2f5f216cd Add E1AP cause enum definition 2025-01-23 17:37:52 +01:00
Guido Casati 5176199aa2 Use GNB-CU-UP E1 Setup Response enc/dec lib in stack 2025-01-23 17:37:52 +01:00
Guido Casati 5b4a45b694 Add test for E1 CUUP Setup Response 2025-01-23 17:37:52 +01:00
Guido Casati 422e82df70 Add GNB-CU-UP E1 Setup Response enc/dec lib 2025-01-23 17:37:50 +01:00
Guido Casati 763c265c42 Extend CU-UP E1 Setup Response according to 9.2.1.5 of 3GPP TS 38.463 2025-01-23 17:37:02 +01:00
Guido Casati 02e1c3589b Use E1 CU-UP Setup Request enc/dec lib in stack 2025-01-23 17:34:03 +01:00
Guido Casati 8fbfcf48f6 Add test for E1 CUUP Setup Request 2025-01-23 17:34:03 +01:00
Guido Casati 414fc2e9a2 Add E1 CU-UP Setup Request enc/dec lib 2025-01-23 17:34:00 +01:00
Guido Casati 6cfa3e3722 Add E1AP Interface Management lib files 2025-01-20 13:48:47 +01:00
Guido Casati c0db34077a Explicitly include the mandatory IE cn_support in the E1 Setup Request
* this commit is making explicit the mandatory IE cn_support
  in the E1 Setup Request message
* also, init cn_support in E1 Setup Request initial message preparation
2025-01-20 13:45:29 +01:00
Guido Casati 0cd4aeee5b Add E1 CU-CP Setup Request type
* E1 CU-CP Setup Request is an E1 Interface Management message
  whose type defition was missing, and it is introduced in this commit
  (see 9.2.1.7 of 3GPP TS 38.463)
2025-01-20 13:38:53 +01:00
Guido Casati 334537aa98 Add comments to clarify that E1AP Setup Request refers to GNB-CU-UP E1 Setup Request 2025-01-20 13:28:56 +01:00
Guido Casati 9fe045f40e Add abnormal conditions section to E1-design.md 2025-01-20 09:59:57 +01:00
Guido Casati beee87cdf6 Add check on CU-UP association before sending any E1 Bearer Context Modification Request 2025-01-17 18:07:02 +01:00
Guido Casati 9e9bd278a9 Minor: RCconfig_NR_CU_E1 function description and logging 2025-01-14 14:13:49 +01:00
Guido Casati bcd1270237 Refactor SCTP association response handler
* this function is used by both CU-CP and CU-UP
* it behaves differently depending on the type of E1 instance:
  CU-CP: inform RRC of E1 connection loss with CU-UP
  CU-UP: trigger a new SCTP association request by sending an ITTI to the CU-UP task
* after receiving the E1AP register request, the CU-UP will send a new association request to
  SCTP until new E1 connection is achieved by sending a TIMER_HAS_EXPIRED message to the CU-UP
  task. The function e1apHandleTimer() is basically triggering a new E1 association request
  until new E1 connection is achieved
* print SCTP association state in e1ap.c whenever needed

Related to #878
2025-01-14 14:13:49 +01:00
Guido Casati b922fd2649 Clean up NGAP Setup Failure messages: there's no such message in 3GPP TS 38.413
* the list of PDU Session Resources Failed to Setup shall be sent in the Response message
2025-01-14 14:13:49 +01:00
Guido Casati a1abf90d5b Handle PDU Session Resource to Setup Failure in (PDU Session Resource/Initial Context) Setup Response
* add function to check whether cu-up is connected
* add functions to send the relevant response messages with the failed list
  e.g. to fill PDU Session Resource Failed to Setup items
* set return value of trigger_bearer_setup to bool and handle the
  failure by sending setup response messages with list of PDU sessions failed to setup
  i.e. send failed list of items when no CU-UP is associated to the CU-CP
  note: it considers all PDU Sessions as failed to setup in the considered failure scenarios
* e.g. send a list of failed PDU session resources in the response message to reject
  PDU Session Resource Setup in rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ
* the Initial Context Setup has a Failure message, but for the considered failure scenario
  when no CU-UP is available the current design is just sending a list of failed to setup
  items in the Response message
* transfer PDU Session Resource/Initial Context Setup Request NAS PDU to UE

closes #878
2025-01-14 14:13:49 +01:00
Guido Casati f00a7a0197 Refactor NGAP cause
* new struct definition including both NGAP cause group and value
* add encoding function, temporarily in ngap_common.c
  (in the long term to be place in a enc/dec NGAP library)
* extend Radio Network cause enum values
* add cause member to Setup Failure
2025-01-14 14:13:49 +01:00
Guido CasatiandRobert Schmidt 665a7d5020 Add CI test to trigger RLF with high pathloss in channelmod
Upon restoration to ploss, set to 20; when setting to 0, the UE is not
able to sync to the cell anymore.

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2024-12-09 09:59:09 +01:00
Guido CasatiandArash Sahbafard 3438d45d6c Add tutorial about how to run multiple UEs
* multiple UEs with namespaces (provided new script)
* multiple UEs with Docker UEs
* updated rfsimulator and channel simulation tutorials
* updated README.md

Co-authored-by: Arash Sahbafard <arash.sahbafard@silicon-austria.com>
2024-12-05 13:50:36 +01:00
Guido Casati 3dd177bbce Use calloc_or_fail in f1ap_lib_test with the explicit size derived from pointer dereferencing 2024-11-27 10:40:10 +01:00
Guido Casati 0bcf504209 Fix equality check in eq_f1ap_setup_failure 2024-11-27 10:40:10 +01:00
Guido Casati 7ae020599a Add compile definitions ENABLE_TESTS
* this is necessary to enable the PRINT_ERROR logs in the E1/F1 libs
2024-11-27 10:40:10 +01:00
Guido Casati a05084de95 Extend the scope of free_f1ap_cell and use it in stack 2024-11-27 10:40:10 +01:00
Guido Casati 22f3476d88 Use copy_f1ap_served_cell_info in update_cell_info
* tac is optional IE, and it was assumed as always present
* is now allocated in DU container by copy_f1ap_served_cell_info
  when present in the updated cell info and missing in the
  DU container
2024-11-27 10:40:10 +01:00
Guido Casati 40cc035b8c Extend the scope and refactor copy_f1ap_served_cell_info
* allocate memory for pointers only if necessary
* removed redundant copies of simple data types
2024-11-27 10:40:10 +01:00
Guido Casati a394a40d5d Add and use F1 encode function for Transmission Bandwidth and NR Frequency Info in F1 interface management lib 2024-11-27 10:40:10 +01:00
Guido Casati 927b157714 Add test for E1 Bearer Context Setup Response 2024-11-27 10:18:20 +01:00
Guido Casati 10b07c774d Use enc/dec lib for E1 Bearer Context Setup Response in stack 2024-11-27 10:18:19 +01:00
Guido Casati d56e8a2de1 Add enc/dec library for E1AP Bearer Context Setup Response 2024-11-27 10:17:46 +01:00
Guido Casati ccab22f41f Add test for E1AP Bearer Context Setup Request enc/dec library 2024-11-27 10:17:46 +01:00
Guido Casati 254a0e9ad5 Use E1AP Bearer Context Setup Request enc/dec library in stack 2024-11-27 10:17:46 +01:00
Guido Casati e439a4359c Add enc/dec library for E1AP Bearer Context Setup Request 2024-11-27 10:17:46 +01:00
Guido Casati 2a1f5ac5ed Introduce library for E1AP message encoding/decoding 2024-11-27 10:17:46 +01:00
Guido Casati ac8da484db Replace cell_group_t with CELL_GROUP_ID_t
* simplified number of Cell Group types
2024-11-27 10:17:46 +01:00
Guido Casati aae05e95b9 Use sizeof(in_addr_t) in memcpy of TL uint32_t address 2024-11-27 10:17:46 +01:00
Guido Casati 4829fa0543 Refactor E1AP Bearer Context Setup Request struct members
* cleanup struct members not compliant to specs 3GPP TS 38.463
* add defines whenever necessary
2024-11-27 10:17:46 +01:00
Guido Casati 13d1c34d35 Use one definition of maxnoofDRBs according to 3GPP TS 38.463 (up to 32)
* define E1AP_MAX_NUM_DRBS
2024-11-27 10:17:46 +01:00
Guido Casati b00f095089 Fix bug (missing parenthesis) in hton_int16 2024-11-27 10:17:46 +01:00
Guido Casati 04491efb3c Cleanup unused conversions 2024-11-27 10:17:46 +01:00
Guido Casati 44c9dec681 Add test for NAS Service Request enc/dec 2024-11-25 13:15:10 +01:00
Guido Casati 6faa5d3066 Refactor TLVEncoder
* deleted unused TLVEncoder.c
* removed dependency from LOG module in TLVEncoder Macros
2024-11-25 13:15:10 +01:00
Guido Casati ad412028a2 Refactor TLVDecoder macros
* ideally the result of these macros shall be relevant
  only in unit tests, in order to validate enc/dec NAS functions
* use a local print macro
* remove dependency from LOG module
* simplified the code
* cleanup TLVDecoder.c (kept it for LTE dependencies)
2024-11-25 13:15:10 +01:00
Guido Casati 1c4e1029a8 Add NAS Service Request enc/dec functions
* FGMM enc/dec library files
* Plain message encoding + logic for security protected message
* added fill_fgstmsi function
* add checks on length in 5G-S-TMSI encoder function
* encoding of NAS Service Request and relevant mandatory IEs
2024-11-25 13:15:10 +01:00
Guido Casati c817c44ae9 Add include for stdbool.h in FGSMobileIdentity.c 2024-11-25 13:15:10 +01:00
Guido Casati 29220a60dc Add check on minimum length in encode_5gs_mobile_identity 2024-11-25 13:15:10 +01:00
Guido Casati bf7761131d Refactor NAS Key Set Identifier enc/dec functions
* simplified the code while keeping same functionality
* reduced the number of functions (from 4 to 2)
* clang-formatted
2024-11-25 13:15:10 +01:00
Guido Casati 5c3953b684 Cleanup test5Gnas.c and MAC references in NR_NAS_defs.h (undefined functions prototypes) 2024-11-25 13:15:10 +01:00
Guido Casati 8a7321db11 Rename FGS Service Request/Reject/Accept type for consistency with FGS naming style 2024-11-25 13:15:10 +01:00
Guido Casati 1679be6a14 Refactor includes in gNB config
* used open source IWYU tool + manual review
2024-11-18 11:25:02 +01:00
Guido Casati 83a4b4df64 Refactor includes in NR_PHY_INTERFACE
* used open source IWYU tool + manual review
2024-11-18 11:25:02 +01:00
Guido Casati 37e856a7fd Add include for MAX_ANT
* to defs_gNB.h, nr_dlsch_demodulation.c
2024-11-18 11:25:02 +01:00
Guido Casati ca96ea7002 Updated iwyu/README.md 2024-11-18 11:25:02 +01:00
Guido Casati bfe7b803fe Refactor includes in SDAP and PDCP API
* used open source IWYU tool + manual review
2024-11-18 11:25:02 +01:00
Guido Casati b7c1b4d761 Refactor includes in NR_MAC_gNB/main.c
* used open source IWYU tool + manual review
2024-11-18 11:25:02 +01:00
Guido Casati 893102a104 Refactor includes in nr-softmodem.c 2024-11-18 11:25:02 +01:00
Guido Casati 1c9bcf4004 Refactor includes in unitary simulators
* prachsim, ulsim, dlsim
* used open source IWYU tool + manual review
2024-11-18 11:25:02 +01:00
Guido Casati eb39836b0a Refactor includes in RRC files
* used open source IWYU tool + manual review
* deleted unused nr_rrc_common.c
2024-11-18 11:25:02 +01:00
Guido Casati 4957f446e9 Refactor includes in NGAP files
* used open source IWYU tool
2024-11-18 11:25:02 +01:00
Guido Casati e8f9d577cd Use DL_SCH_LCID_DCCH in NR and remove dependency from mac.h 2024-11-18 11:25:02 +01:00
Guido Casati 69df3598f3 Redefine NGAP_MAX_PDUSESSION and removed LTE dependency
* limit to 16 instead of specs value 256
2024-11-18 11:25:02 +01:00
Guido Casati 9c94203e49 Move transport_layer_addr_t to platform_types.h
* tunnel address is the same for NR and LTE and used in both
* Remove LTE dependency in gtpv1_u_messages_types.h
2024-11-18 11:25:02 +01:00
Guido Casati 6b3f26f538 Add define to printf and fflush in telnetsrv for real-time logs 2024-11-17 21:46:23 +01:00
Guido Casati 4f2fa739a1 Disable ASAN ODR detection to workaround double registration of log_mem_write_side variable in CU
/opt/oai-gnb/bin/nr-softmodem -O /opt/oai-gnb/etc/gnb.conf --sa --log_config.global_log_options level,nocolor,time --rfsimulator.options chanmod --telnetsrv --telnetsrv.listenaddr 192.168.71.150 --telnetsrv.shrmod ci
=================================================================
==7==ERROR: AddressSanitizer: odr-violation (0x7fce78b85be0):
  [1] size=4 'log_mem_write_side' /oai-ran/common/utils/LOG/log.c:78:14
  [2] size=4 'log_mem_write_side' /oai-ran/common/utils/LOG/log.c:78:14
These globals were registered at these points:
  [1]:
    \#0 0x7fce7b691658 in __asan_register_globals ../../../../src/libsanitizer/asan/asan_globals.cpp:341
    \#1 0x7fce7bd0c47d in call_init elf/dl-init.c:70

  [2]:
    \#0 0x7fce7b691658 in __asan_register_globals ../../../../src/libsanitizer/asan/asan_globals.cpp:341
    \#1 0x7fce7a5e2eba in call_init ../csu/libc-start.c:145
    \#2 0x7fce7a5e2eba in __libc_start_main_impl ../csu/libc-start.c:379

==7==HINT: if you don't care about these errors you may set ASAN_OPTIONS=detect_odr_violation=0
SUMMARY: AddressSanitizer: odr-violation: global 'log_mem_write_side' at /oai-ran/common/utils/LOG/log.c:78:14
==7==ABORTING
[INFO  tini (1)] Spawned child process '/opt/oai-gnb/bin/entrypoint.sh' with pid '7'
[INFO  tini (1)] Main child exited normally (with status '1')
2024-11-17 21:46:23 +01:00
Guido Casati 813690ece7 Add ciUE command to force RRC_IDLE 2024-11-17 21:46:23 +01:00
Guido Casati 882712ffd8 Add ciUE telnet command to force RLF 2024-11-17 21:46:23 +01:00
Guido Casati 1692e00d4a Add function to fetch RRC UE instance 2024-11-17 21:46:23 +01:00
Guido Casati 60ef7f04aa Add new ci telnet commands to force UE release and UL failure 2024-11-17 21:46:23 +01:00
Guido Casati 59bf54c9cd Make a separate function to fetch RNTI in telnet CI 2024-11-17 21:46:23 +01:00
Guido Casati 0bbd446478 Add test to trigger re-establishment to RFSIM F1 CI
* trigger re-establshemnt on DU: reset RLC counters on DRB 1
  for OAI UE, since SRB 1 does not work for lack of periodic
  measurements reports
* how is the re-establishment triggered?
  * a transmission on DRB 1 occurs
  * detection of a mismatch of RLC counters at the UE side
  * max number of RLC retransmissions reached
  * RLF detection
* verify re-establishment on CU: we ping the core from the UE; this
  sends packets on DRB, and because the sequence number mismatches, will
  trigger a reestablishment. We accept in the ping that a couple of
  packets might be lost; after ping is over, reestablishment must be
  done as well (else the ping will already fail).
2024-11-17 21:46:23 +01:00
Guido Casati d585aa0041 Add UL PRBs Blacklist section to NR_SA_Tutorial_COTS_UE.md 2024-11-08 10:12:19 +01:00
Guido Casati b61de6453a Refactor NRRCConfig
* the goal of this function is to initialize and configure the RAN Context
* the goal of get_options is to get command line options
* this commit aims at making the implementation more consistent
* move initialization of RC.nb_nr_CC to this function
* cleanup redundant initializations of RC.nb_nr_macrlc_inst outside NRRCConfig
* cleanup redundant initization of RC.nb_nr_macrlc_inst from getter function (get_node_type)
* cleanup RC initialization in RCconfig_NR_L1
* removed redundant log lines (print number of instances in NRRCConfig only)
* do RC init after getting CL options and configuration
* get_node_type shall access configuration only, not RC context
* NRRCConfig shall be called only once: made it thread-safe
2024-11-06 10:16:39 +01:00
Guido Casati 14a379cb75 Removed global variable NB_RU
* this variable was set after RC.nb_RU, which is set in NRRCConfig
  therefore it was redundant since it can be easily replaced by
  the original
2024-11-06 10:16:11 +01:00
Guido Casati b7063c8b75 Return a pointer to a new RRC instance (gNB_RRC_INST) from RCconfig_NRRRC 2024-11-06 10:15:43 +01:00
Guido Casati f80b09ac99 Simplified use of nb_nr_inst
* nb_nr_inst represents the number of gNB instances and the number of RAN contexts
* it used also to count the number of RRC instances in the node
* it is set from config file in NRRCConfig, therefore redundant checks after
  this function have been removed
* redundant global variable NB_gNB_INST, set after nb_nr_inst, was removed
2024-11-06 10:15:42 +01:00
Guido Casati eaeae880d0 Removed unused wait_for_sync 2024-11-06 10:15:26 +01:00
Guido Casati dfb90a173d Cleanup commented out code in nr_init.c 2024-11-06 10:15:26 +01:00
Guido Casati 881c6b0c1a Refactor l1_north_init_gNB
* code cleanup
* clang-formatted
* simplified code
2024-11-06 10:15:25 +01:00
Guido Casati 3e5292ca0b Cleanup unused global vars in executables/nr-softmodem.c 2024-11-06 10:14:58 +01:00
Guido Casati 3698881849 Removed redundant initialization of pre-processor function pointers
* done already in mac_top_init_gNB
2024-11-06 10:14:58 +01:00
Guido Casati ba43ebb5a8 Cleanup of dump_nr_prach_config 2024-11-06 10:14:58 +01:00
Guido Casati ebeedbfe7f Cleanup of unused set_default_frame_parms 2024-11-06 10:14:57 +01:00
Guido Casati e828d0e6a4 Removed unused num_ulprbbl in gNB_MAC_INST_s 2024-11-06 10:14:42 +01:00
Guido Casati 2ff25e688a Remove gNB and L1 init in RCconfig_nr_prs
* gNB and L1 init is done in init_gNB and RCconfig_NR_L1
* moved RCconfig_nr_prs out of create_gNB_tasks for consistency
* do RCconfig_nr_prs only for L1 instances
2024-11-06 10:14:42 +01:00
Guido Casati e57acf6190 Refactor RCconfig_NR_L1
* removed initialization of gNB
* separate function to get blacklisted UL PRBs
* call the getter in both L1 and MAC/RLC configuration
* other minor improvements
2024-11-06 10:14:41 +01:00
Guido Casati 2a9cb35348 Do L1 configuration right after gNB initialization
* do always gNB init for L1 instance
  and also for CU and CU-CP
* do L1 config only for L1 instances
2024-11-06 10:13:06 +01:00
Guido Casati d8c7ff4c2c Refactor init_gNB()
* code cleanup
* clang-formatted
* adopted calloc_or_fail
* allocate nb_nr_L1_inst of RC.gNB instead of (RC.nb_nr_L1_inst + 1)
2024-11-06 10:12:52 +01:00
Guido Casati c3f1824f0b Use capture_pdu_session_establishment_accept_msg in handleDownlinkNASTransport
* DL NAS Transport messages can piggy-back 5GSM messages
* the relevant decoding functions can be called in the handler (e.g. capture_pdu_session_establishment_accept_msg)
2024-10-25 12:43:44 +02:00
Guido Casati 9a67c5e5b5 Fix scoping issues for variable declarations in switch-case blocks (capture_pdu_session_establishment_accept_msg) 2024-10-25 11:52:28 +02:00
Guido Casati b5f4c55d88 Use capture_pdu_session_establishment_accept_msg with NAS_DOWNLINK_DATA_IND:FGS_PDU_SESSION_ESTABLISHMENT_ACC
* the capture_pdu_session_establishment_accept_msg function is already handling
  the code in the case FGS_PDU_SESSION_ESTABLISHMENT_ACC of NAS_DOWNLINK_DATA_IND

Closes: #841
2024-10-25 11:50:52 +02:00
Guido Casati 66231badaf Refactor PDU address IE in PDU Session Establishment Accept
* take 3 bits for PDU session type value
* add define for SMF's IPv6 link local address
2024-10-25 11:44:14 +02:00
Guido Casati a85be06c72 Add defines for IPv4 and IPv6 PDU address header fields 2024-10-25 11:42:22 +02:00
Guido Casati f85271a349 Free F1AP messages in RRC task after processing 2024-10-24 16:23:05 +02:00
Guido Casati b17f1d1b57 Free F1 UL RRC Message Transfer after use in F1AP_DU_task 2024-10-24 16:22:04 +02:00