Commit Graph
258 Commits
Author SHA1 Message Date
Bartosz Podrygajlo 7aec889cf6 Remove some global variables 2024-06-05 09:42:56 +02:00
Robert Schmidt 9b3ab10c20 Make failed TUN socket operation non-fatal
It might be desirable to run the UE without superuser rights. More
concretely, it might run without NET_ADMIN. In this case, various
corresponding operations on the TUN socket fd might fail. In this
commit,

- improve error reports to make them more clear
- do not automatically exit(1), but return from the function to ensure
  continuity of the softmodem
2024-06-03 14:00:49 +02:00
Cedric Roux fbe2b65ee6 nr pdcp: small improvement: LOG after unlock
Reduces time with lock acquired.
2024-04-03 08:29:26 +02:00
Cedric Roux a323195aed nr pdcp: improve readability of integrity checking
Introduce the structure nr_pdcp_integrity_data_t and adapt code to use it.

Note: in nr_pdcp_sdu_t we keep the 'count' variable (which is also present
in nr_pdcp_integrity_data_t). They represent the same value, but 'count'
in nr_pdcp_integrity_data_t is to be specifically used for integrity while
the other one has other uses, so it's better to keep it.
2024-04-03 08:28:15 +02:00
Cedric Roux d1f490243e nrUE: check integrity of SecurityModeCommand
We AssertFatal() if integrity fails. To be refined if needed.
2024-04-03 08:28:15 +02:00
Cedric Roux 4e625b01d2 nr pdcp: add an API function to check integrity 2024-04-03 08:28:15 +02:00
Cedric Roux cc61d4f7be nr pdcp: pass MAC-I and header to upper layers
Needed by some RRC procedures to validate the integrity of a message
before accepting it.
2024-04-03 08:28:15 +02:00
Cedric Roux f85e3adc5a nrUE: bugfix/improvement in security mode handling
The use of security_mode_completed in the PDCP entity was a hack.

Plus it was not working at all with the deregistration request
when nea2 is used, sent when doing ctrl+c in the nrUE.

So let's remove it.

And let's handle activation of integrity and ciphering more in
accordance with what 38.331 says. SecurityModeComplete has to
be sent integrity protected, but not ciphered. Only after should
the ciphering be activated. (See 38.331 5.3.4.3.)
2024-04-03 08:28:12 +02:00
Guido Casati 914e71fdab Flag RBs as suspended in PDCP
- this prevents pulling PDUs from PDCP when re-establishment is awaiting
2024-03-28 18:28:16 +01:00
Guido Casati f7a285cfc1 Define for PDCP Formats
- short and long SN sizes
- PDCP PDU header sizes
- PDCP integrity size
- getter for maximim PDCP PDU size
2024-03-28 18:28:11 +01:00
Jaroslava Fiedlerova d56c7dfc07 Merge remote-tracking branch 'origin/717-sdap-reconfiguration' into integration_2024_w09 2024-03-04 17:37:50 +01:00
Guido Casati b431e1442f Moved nr_reconfigure_sdap_entity to SDAP module
- improves code readability and maintainability
2024-03-01 16:56:02 +01:00
Guido Casati 2a078c757b E1 Reestablishment
- PDCP reestablishment on CUCP (DRBs) triggering Bearer Context Modification procedures over E1
- Performing PDCP reestablishment for requested DRBs on CUUP
- Introduced function to notify re-establishment to CU-UP
- removed call to PDCP reestablishment for the DRBs on CUCP (it's done on CUUP)

cuup_notify_reestablishment:

- to fetch PDU session to setup in E1 following logic as in e1_send_bearer_updates
- fill bearer context modification request with stored F1-U tunnel information
  during E1 reestablishment, otherwise it would initialized to 0 by default
- update GTP tunnel with the stored configuration after E1 reestablishment
2024-03-01 09:48:35 +01:00
Guido Casati edb2dd7d6d SDAP Entity reconfiguration at UE according to TS 37.324
- triggered by RRC reconfiguration events according to clause 5.3.5.6.5 of TS 38.331
- This procedure does QoS flow to DRB mapping according to clause 5.3.1 of TS 37.324
- QoS flows to DRBs to be released are also handled
2024-02-27 09:47:26 +01:00
Guido Casati bc0cab7a08 Minor fixes and clang formatting in SDAP procedures
- added descriptive comments to the code
- removed redundant function prototype
- removed unused function argument
2024-02-27 09:47:24 +01:00
Guido Casati 4a8815a41e Introduced function to check whether it is a transmitting or a receiving SDAP entity 2024-02-27 09:45:28 +01:00
Robert Schmidt da7c02b872 PDCP: add log to info for adding/releasing bearer 2024-02-03 11:24:41 +01:00
Jaroslava Fiedlerova 01c7dca652 Merge remote-tracking branch 'origin/update-e2-agent' into integration_2024_w03 2024-01-19 11:35:30 +01:00
francescomani 0e5c040aa1 purge unnecessary maybeRNTI from PDCP 2024-01-19 11:33:27 +01:00
francescomani ceef53c56a improvements in ITTI for multi-ue instances 2024-01-19 11:33:27 +01:00
francescomani 82e323eed4 using instance to identify PDCP at UE 2024-01-19 11:33:27 +01:00
Teodora 9207e13467 Service Models support in CU-UP
- e2_ran_func library divided into e2_ran_func_cuup (CU-UP only) and e2_ran_func_du_cucp_cuup (DU, CU, CU-CP and gNB-mono)
  - GTP SM is not yet implemented in CU-UP -> CU-UP doesn't store PDU session information
  - PDCP SM support for gNB-mono, CU and CU-UP
  - KPM SM support for all node types (DU, CU, CU-UP, CU-CP and gNB-mono)
2024-01-17 15:53:52 +01:00
Robert Schmidt 460f11e3f3 Merge remote-tracking branch 'origin/remove-unused-memblock' into integration_2023_w51 2023-12-21 16:10:05 +01:00
francescomani e3e158a77a RRC go to IDLE 2023-12-20 11:19:06 +01:00
Laurent THOMAS 63b64d4fce move common code file in common directory
remove several unused files
remove mem_block_t that is never used in a different way than a simple heap buffer
move up IP address type and remove duplications of the same struct declaration
2023-12-19 10:37:10 +01:00
francescomani d24a3d1a98 SDAP release DRB 2023-12-12 05:56:09 +01:00
Cedric Roux 9e46a6a6ae nr pdcp: introduce nr_pdcp_get_rb() and some cleanup
cleanup means:
- typo: susbend -> suspend
- call nr_pdcp_manager_unlock() where needed
- simplify LOG_XX (remove __FILE__, __LINE__, __FUNCTION__)

note:
nr_pdcp_release_srb() and nr_pdcp_release_drb() don't use
nr_pdcp_release_drb() because they modify the arrays, so
it does not make sense to "abstract" the accesses to
->srb and ->drb.
2023-11-20 14:55:34 +01:00
Cedric Roux 107913d6b2 nr pdcp: rework reestablishment
Security part needs to be checked, may fail to work.
But if it fails, it was probably not working before either.

This commit also contains adding 'static' to nr_pdcp_entity_release()
and nr_pdcp_entity_delete() (it was too complicated to do a separate
commit for this).

We also update stats in free_rx_list() (again, too complicated for
a separate commit).

openair2/RRC/NR/rrc_gNB.c probably needs some more work, it is a
bit ugly to reestablish all the drbs without checking if they
exit. It will generate warnings at runtime. I didn't do it because
I don't know the proper way.
2023-11-19 16:57:03 +01:00
Robert Schmidt 380151faa7 E1 Bearer Context Setup Request: harmonize code
- harmonize monolithic and E1AP case
- use ITTI message to send bearer context setup response to RRC
2023-10-27 09:07:51 +02:00
Robert Schmidt 9546166ebc Create files to handle E1AP messages at CU-UP 2023-10-27 09:07:51 +02:00
francescomani 832bea2482 implementing PDCP entity suspend 2023-10-04 10:32:38 +02:00
Robert Schmidt 2676e9a5bf Merge remote-tracking branch 'origin/bearer-release' into integration_2023_w39 2023-10-03 07:49:39 +02:00
Robert Schmidt 40fbe8b0cd Merge remote-tracking branch 'origin/const_return_values' into integration_2023_w39 2023-10-02 17:34:41 +02:00
Robert Schmidt 51862543e4 Rename to nr_pdcp_release_{d,s}rb() for consistency
Most functions start with nr_pdcp_*(), so do the same for release.
2023-10-02 14:57:03 +02:00
mir b07e9f32c4 Remove return const values 2023-10-02 14:15:42 +02:00
francescomani cf1baafd75 fixing release according to review 2023-09-22 11:52:24 +02:00
francescomani e7c626a79e release RB entities 2023-09-22 11:40:49 +02:00
francescomani 18892963a9 cleanup and fixes 2023-09-22 11:40:49 +02:00
francescomani 53348bd41d improving DRB management at RRC UE 2023-09-22 11:40:49 +02:00
francescomani d8cb2491bd improve handling of SRBs at RRC UE 2023-09-22 11:40:49 +02:00
Robert Schmidt 7a298e73cd Repair reestablishment and make it work via F1
This commit repairs the reestablishment after the introduction of the CU
UE ID in the CU, different from the DU UE ID. Now, the CU uses an
identifier different from the RNTI, used in the MAC, to refer to UEs.

To repair the reestablishment, a number of changes needed to be
introduced:

- Handle old_gNB_DU_UE_id in MAC

The MAC handles the old_gNB_DU_UE_id field in the DL RRC Message. The
commit adds encoding/decoding of the field. The MAC will drop the old
UE, but retain the CellGroup of the corresponding UE(!). Because a UE
releases the spCellGroup on reestablishment, the MAC does the same; it
needs to reapply the old configuration after a reconfiguration. For the
latter, introduce new variables to keep a "future" CellGroupConfig to be
applied (reconfigCellGroup) and a flag (expect_reconfiguration) that
applies the CellGroupConfig if a DL RRC Message transfer on DCCH, which
is assumed to be the reconfiguration.

- Add RNTI change in RLC

The RLC needs to reuse the old UE context. Hence, we simply change the
RNTI in the old context, and delete the new one.

- No PDCP UE ID change

The previous implementation of the PDCP used the RNTI; hence, the ID
needed to be switch (as above for the RLC). Since the PDCP now also uses
the CU UE ID, no identifier change is needed, and we remove all
corresponding code.

- No MAC modifications/update from CU

As foreseen by the spec, the CU does not modify or change the
cellGroupConfig in the RRC during reestablishment. This change will be
generalized in the future to all of the RRC.  Also, the
nr_rrc_mac_remove_ue() function has been removed: the MAC handles any UE
changes autonomeously, without being triggered from the RRC explicitly.

- Remove reestablish_rnti_map

The RRC does not use RNTIs for UE identification. Hence, a
reestablish_rnti_map to link two UEs to each other is not necessary
anymore.
2023-08-12 11:48:17 +02:00
Robert Schmidt 04abbdb668 Implement PDCP reset counters for reestablishment
After a reestablishment, the PDCP sequence number counters have to be
reset. Implement an API to allow the RRC to reset the sequence numbers
for a particular UE in the case of reestablishment
2023-08-12 11:48:17 +02:00
Robert Schmidt 9790246daf Do-ra: write out directly 2023-08-11 17:38:12 +02:00
Robert Schmidt 5c42004e21 RRC: switch to NGAP UE ID as CU UE ID 2023-08-11 17:38:12 +02:00
Robert Schmidt 2e1107fa41 Refactor PDCP: DRB callback for gNB to look up IDs 2023-08-11 17:38:12 +02:00
Robert Schmidt d220ee23e2 UL RRC Message has CU/DU UE IDs 2023-08-11 17:38:12 +02:00
Robert Schmidt 0943891005 Use CU/DU UE ID in DL RRC Message Transfer, manage at DU, refactor
- The CU/DU UE ID is used in DL RRC Message Transfer
- Note: The CU UE ID currently is still the RNTI
- on every DL RRC Message, the DU verifies that the UE exists
- Refactor RRC: common function to forward protected SRB PDUs
2023-08-11 17:38:12 +02:00
Robert Schmidt c5b9962954 Remove unnecessary dl_rrc_message_transfer_direct() 2023-08-11 15:20:47 +02:00
Robert Schmidt 5be3dcf341 Merge remote-tracking branch 'origin/int-f1-ue-ctxt-release' into integration_2023_w21 2023-05-26 16:48:19 +02:00
mir c9012298de OSA SECU harmonization 2023-05-26 12:35:33 +02:00