Commit Graph
595 Commits
Author SHA1 Message Date
francescomani 39920eb337 L2 indication to prepare MSG3 payload in advance
This is required to comply with the standard to flush MSG3 buffer in some occasions and to keep preparing MSG3 payload in advance
2025-03-13 11:53:55 +01:00
francescomani dcc17a9d70 signaling RRC RA problems (leading to possible radio link failure) 2025-03-12 10:30:17 +01:00
Jaroslava Fiedlerova e03c15e85b Merge remote-tracking branch 'origin/nr-ue-nas-5g-s-tmsi' into integration_2025_w08 (!2725)
Use 5G-S-TMSI as UE identity in RRCSetupRequest

This MR includes the following implementation:

- Handle 5G-S-TMSI in RRCSetup:
  - Set the ue-Identity to ng-5G-S-TMSI-Part1 in RRCSetupRequest and
  - If RRCSetup is received in response to an RRCSetupRequest: set the
    ng-5G-S-TMSI-Value to ng-5G-S-TMSI-Part2 in do_RRCSetupComplete

TS 38.331 5.3.3.3 Actions related to transmission of RRCSetupRequest message:

The UE shall set the contents of RRCSetupRequest message as follows:
1> set the ue-Identity as follows:
2> if upper layers provide a 5G-S-TMSI:
3> set the ue-Identity to ng-5G-S-TMSI-Part1;

- Pass 5G-S-TMSI to RRC when NAS receives GUTI in Registration Accept
  - NAS extracts GUTI from Registration Accept
  - send ITTI indication from NAS to RRC when GUTI is available and store
    5G-S-TMSI in RRC instance
- Rework of Initial UE message handling in RRCSetupComplete: simplify code and memory management
- Fix for integrity failure after UE comes back from RRC IDLE
- Other NAS fixes

Note:
- Initial implementation of Initial NAS Message: Service Request -> moved to !3065 (merged)
- Rework of Registration Request added to !3176 (merged)

Closes #772
2025-02-25 11:35:13 +01:00
Guido Casati 89ca89ea4b Address integrity failure after UE reconnects from RRC IDLE
After a new connection from RRC IDLE, an integrity failure occurs. This
commit is addressing this issue to pass the integrity check.

* Reset ciphering and integrity algorithms when going into RRC IDLE

* Use uplink NAS COUNT in Registration Request for initial KgNB derivation
  * Temporarily deriving UP protection keys in Registration Request
  * Note: AS SMC handling should be done according to 33.501 §6.8.1.1.2.2
2025-02-19 15:07:08 +01:00
Guido Casati 48a307e172 Use 5G-S-TMSI in RRC connection setup procedures
* Use the 5G-S-TMSI stored in RRC to be used as UE identity
* Use 5G-S-TMSI part 1 in RRCSetupRequest encoding (TS 38.331 clause 5.3.3.3)
* Set the ng-5G-S-TMSI-Value in RRCSetupComplete to ng-5G-S-TMSI-Part2 (5.3.3.4 of 3GPP TS 38.331)
* current and only scenario: RRCSetup is received in response to an RRCSetupRequest
2025-02-19 15:02:11 +01:00
francescomani 1ce6167c45 free message after receiving it at MAC from RRC 2025-02-18 18:07:44 +01:00
Guido Casati c6cc00633f Rework handling of initial NAS message in RRCSetupComplete generation
* use initialNasMsg to store nas messages buffer and length
* buffer is dynamically allocated in generateRegistrationRequest, so do the
  same in NSA and free dynamic allocated data afterwards
2025-02-18 12:47:13 +01:00
Guido Casati ca869d8fd3 Pass to RRC the 5G-S-TMSI extracted from NAS Registration Accept
* NAS -> RRC: RRC receives an ITTI message with NAS 5GMM indication message
  containing the 5G-S-TMSI derived from NAS GUTI
* 5G-S-TMSI is stored in the RRC instance and to be later encoded in the RRCSetup
2025-02-18 12:47:13 +01:00
Guido Casati 4736f97055 Indicate to NAS that the RRC connection has been established with a Connection Establishment Indication
* ITTI from RRC to NAS
* according to 5.3.1.3 of 3GPP TS 24.501
* set 5GMM mode to CONNECTED
2025-02-18 12:47:13 +01:00
Robert Schmidt 7d574ffcfb Merge remote-tracking branch 'origin/fix_ntn_leo' into integration_2025_w07 (!3194)
fix NTN LEO scenarios

- gNB: add support for NTN parameter ta-CommonDrift-r17
- NR UE: fix application of NTN TA information
- NR UE: add command line parameter ntn-initial-time-drift to compensate
  time drift during initial sync
- NR UE: fix writeTimestamp inconsistencies
- NR UE: add MAC state UE_RECEIVING_SIB ensuring to start RA only after
  successfully receiving SIBs
- rfsimulator: update earth radius for LEO simulation to match UE
  position in ue.conf file
- update conf files for NTN LEO scenario
- update description how to run NTN scenarios in RUNMODEM.md
- fix: ta-Common is a round-trip-time, not a one-way delay
- NR UE: simplify calculation of next_tx_slot_and_frame by moving up
  assignment of duration_rx_to_tx
- cellbarredNTN indicates notbarred in SIB1 if NTN access is available
- Removed b66 NTN and enabled B254 NTN conf file in CI
- NR UE: RRC layer now explicitly tells MAC layer when the RA procedure
  can be started
- move NTN LEO config to band 254 and update doc/RUNMODEM.md

Closes #901
2025-02-17 15:09:24 +01:00
Thomas Schlichter 11b87d8744 NR UE: RRC layer now explicitly tells MAC layer when the RA procedure can be started 2025-02-14 17:04:47 +00:00
Raghavendra Dinavahi 2b4ca7e47d cellbarredNTN indicates notbarred in SIB1 if NTN access is available
38.331 release 18  section 5.2.2.4.2 indicates that to access NTN, cellbarredNTN in SIB1 should be set to notbarred.
2025-02-14 17:04:47 +00:00
Guido Casati 81ec8d2e13 Rework protection of initial NAS signaling messages (REGISTRATION REQUEST) as per 3GPP TS 33.501
* Without a valid 5G NAS security context:
  * Send REGISTRATION REQUEST with cleartext IEs only.
  * After activating a security context via Security Mode Control:
    wrap the entire REGISTRATION REQUEST (with both non-cleartext and cleartext)
    in a NAS message container IE, include it in SECURITY MODE COMPLETE

* With a valid 5G NAS security context:
  * If non-cleartext IEs are needed, wrap the entire message in a NAS message container IE and cipher it.
  * If only cleartext IEs are needed, send the message directly without the NAS message container IE.
2025-02-10 10:05:02 +01:00
francescomani 7c93de87a4 lower layers to verify the integrity protection of the RRCReestablishment message 2025-01-30 18:20:17 +01:00
francescomani 9d9902d883 apply ITTI queue to SIB19 2025-01-10 18:28:27 +01:00
francescomani 35e9d1e0c2 tentative fix for double sib1 decoding 2025-01-06 12:09:29 +01:00
Laurent THOMAS 9c0d90a014 Introduce UE RCC to MAC ITTI queue
Reduce race conditions through a itti queue, such that RRC-initiated MAC
memory modifications happen at the same time as MAC thread writes.
However, it doesn't resolve the problem of exact slot we should apply
the new cell configurtion.
2025-01-06 12:09:29 +01:00
Roberto RoscaandRobert Schmidt ef55aaa7c9 Store position coordinates in NR_UE_RRC_INST_t
position_coordinates will be allocated and populated upon receiving SIB19

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2024-12-11 13:01:50 +02:00
Robert Schmidt 3f74749aa6 Simplify position reading 2024-12-11 13:01:50 +02:00
Robert Schmidt 2989bb592b handle position from RRC 2024-12-11 13:01:50 +02:00
Roberto Rosca 698ff73c7f Added SIB19 related calculations on UE 2024-12-11 10:20:34 +02:00
francescomani 6c0c27a201 do not start T304 RRC timer at UE for phy-test mode 2024-11-27 10:12:55 +01:00
Jaroslava Fiedlerova 683a39c982 Merge remote-tracking branch 'origin/NR_UE_RRC_Reconfiguration_improvements' into integration_2024_w47 (!2996)
Improvements in handling RRC Reconfiguration at UE
2024-11-26 09:39:44 +01:00
Jaroslava Fiedlerova a9060cd382 Merge remote-tracking branch 'origin/nr-cleanup-includes' into integration_2024_w47 (!2966)
Refactor of includes in gNB/UE for improved header management

This merge request implements changes suggested by the Include What You Use
(IWYU) open source tool to streamline the project’s header file usage.

The adjustments ensure that each file includes only the necessary headers for
the symbols it uses, making the code more efficient and maintainable.
Unnecessary includes have been removed, and missing headers have been added
where required. This improves modularity and reduces inter-dependencies between
files, helping to avoid future build issues caused by unused or missing includes.

Each output has been manually reviewed.

Followed a similar approach as in !2953 (merged).

Affected folders/files:

- NR_MAC_gNB/main.c
- nr-softmodem.c
- unitary simulators: nr_dlsim, nr_ulsim, prachsim
- openair2/RRC/NR
- openair3/NGAP
- openair2/LAYER2/nr_pdcp
- openair2/SDAP/nr_sdap
2024-11-26 09:26:28 +01:00
francescomani 216c42358b remove unnecessary storage of SIBs structures at RRC 2024-11-25 17:23:27 +01:00
francescomani 086ac79830 improvements in handling reconfigurationWithSync 2024-11-25 10:35:05 +01:00
francescomani 9ca0b133ec resume RBs in 1st reconfiguration after reestablishment 2024-11-25 10:35:05 +01:00
francescomani 9a4f12b881 handling dedicated system information via RRC Reconfiguration 2024-11-25 10:35:05 +01:00
francescomani 59403e5b01 adding assertion for reportUplinkTxDirectCurrent 2024-11-25 10:35:05 +01:00
francescomani 2beb7fd8a8 adding error messages for field not handled yet by RRC UE in Reconfiguration 2024-11-25 10:35:05 +01:00
francescomani 1867aa928a remove unnecessary declaration of nr_rrc_ue_process_rrcReconfiguration 2024-11-25 10:35:05 +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 1692e00d4a Add function to fetch RRC UE instance 2024-11-17 21:46:23 +01:00
Robert Schmidt eee4a0c652 UE: signal RLF to RRC 2024-11-13 14:25:01 +01:00
francescomani 6beeb6eef1 handle rlf with re-establishment or going to idle 2024-11-13 14:25:01 +01:00
Robert Schmidt e0e1ca6583 Make SA the default mode, remove corresponding option 2024-11-12 13:55:49 +01:00
Robert Schmidt f216c47ace Merge remote-tracking branch 'origin/fix-regression-4G' into integration_2024_w44 (!3008)
Fix Regression 4G

- Fix various bugs and/or regressions in 4G code
- Also, the CI does not test RFsim 4G with --sanitize, enables this to
  detect problems.
2024-11-04 19:43:52 +01:00
Laurent THOMAS 345bd9cc82 remove duplicated code, add registration reject cause 2024-10-23 10:51:17 +02:00
Laurent THOMAS e48e38650d Fix various problems in 4G NAS handling
- rename as_nas_info_t member data to nas_data to have a uniq name to
  trace between complex malloc/free of this pointer
- fix, maybe not perfect, these pais od malloc/free
- remove typedef name changes across transmission of these as_nas_info_t
  over itti, as name changing makes it even more confusing
- remove globals that are likely possible races
- in as_message_decode() fix memcpy size, it is hard to understand the
  initial idea, likely the author beleives a struct of struct makes a
  intermediate pointer
- in network_api.c remove globals (static but used globally)
- remove casts that are there to hide gcc warnings on probable unaligned
  access
- remain a weird mix of packed/unpacked versions of the same typedef,
  but gcc is happy
2024-10-22 11:05:20 +02:00
Raghavendra Dinavahi 1bf4ca7d97 fix for Other SI reception when BWP start != 0 2024-10-15 13:11:13 +02:00
Jaroslava Fiedlerova cab28f0f5a Merge remote-tracking branch 'origin/misc-fixes' into integration_2024_w41 2024-10-11 11:09:00 +02:00
Laurent THOMAS 8f46b07b22 Lacking RRC check: avoid SEGV if the received packet is not what we believe 2024-10-07 13:39:29 +02:00
Bartosz Podrygajlo 01066a3f0d Fix some sizeof and switch-case errors reported by CodeChecker
CodeChecker is a python application that collects reports from static analyzers like
clang-tidy, clangsa, cppcheck.
2024-10-07 09:35:24 +02:00
Jaroslava Fiedlerova b64b2e310d Merge remote-tracking branch 'origin/sib19-ue-reception' into integration_2024_w38b 2024-09-20 13:58:45 +02:00
Roberto Rosca 4c15a04b87 Receive SIB19 on UE 2024-09-17 14:13:11 +03:00
francescomani f1c8134d4f prevent UE to declare RLF in phy-test mode 2024-09-11 15:05:49 +02:00
Raphael Defosseux 1691c607cc Merge remote-tracking branch 'origin/fix-nas-ue-memory-leaks' into integration_2024_w36 2024-09-09 12:08:56 +02:00
Robert Schmidt 44d427bf7b Rename RRC_BUF_SIZE for 5G to increase size
A maximum RRC buffer size of 1024 might be very small. We should
increase it, but then the 5G RRC_BUF_SIZE does conflict with other
definitions. To make it unique, also rename to NR_RRC_BUF_SIZE.
2024-09-06 10:20:08 +02:00
Robert Schmidt ea171c75c0 nr_timer: consistently pass by ref, rename to nr_timer_is_active()
Pass consistently the NR_timer_t object through a pointer. Since we have
to modify all occurrences of is_nr_timer_active(), we use that occasion
and rename that function to nr_timer_is_active() to make it consistent
with all other functions, starting with nr_timer.
2024-09-06 10:20:08 +02:00
Guido Casati 0ef6153bb9 Fix memory leak of NAS buffer transfered to RRC with NAS_UPLINK_DATA_REQ
* Data buffer for NAS Registration Complete and Authentication Response is malloced in
  the NAS thread and transfered with ITTI message to RRC, where needs to be freed

Direct leak of 24 byte(s) in 1 object(s) allocated from:
    >0 0x7ffff74b4887 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
    >1 0x5555572b0607 in generateAuthenticationResp /repo/openairinterface5g/develop/openair3/NAS/NR_UE/nr_nas_msg_sim.c:608
    >2 0x5555572b0607 in nas_nrue /repo/openairinterface5g/develop/openair3/NAS/NR_UE/nr_nas_msg_sim.c:1402
    >3 0x5555572baef6 in nas_nrue_task /repo/openairinterface5g/develop/openair3/NAS/NR_UE/nr_nas_msg_sim.c:1198
    >4 0x7ffff5e94ac2 in start_thread nptl/pthread_create.c:442

Direct leak of 10 byte(s) in 1 object(s) allocated from:
    >0 0x7ffff74b4887 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
    >1 0x55555729754e in generateRegistrationComplete /repo/openairinterface5g/develop/openair3/NAS/NR_UE/nr_nas_msg_sim.c:782
    >2 0x555557299ad3 in handle_registration_accept /repo/openairinterface5g/develop/openair3/NAS/NR_UE/nr_nas_msg_sim.c:1212
    >3 0x5555572b06a0 in nas_nrue /repo/openairinterface5g/develop/openair3/NAS/NR_UE/nr_nas_msg_sim.c:1411
    >4 0x5555572baef6 in nas_nrue_task /repo/openairinterface5g/develop/openair3/NAS/NR_UE/nr_nas_msg_sim.c:1198
    >5 0x7ffff5e94ac2 in start_thread nptl/pthread_create.c:442
2024-08-30 14:51:54 +02:00