Commit Graph
26329 Commits
Author SHA1 Message Date
Cedric Roux a1c4c356bd nrUE NAS: check NAS COUNT UL
It should not be > 0xffffff.

Normally the core network would prevent this case from happening.
Plus to reach this value means to send a lot of NAS messages, which
is very doubtful in practice.

Anyway, it's better to deal with the case.

We exit if that happens. To be refined if needed (very doubtful).
2024-05-27 17:39:35 +02:00
Cedric Roux 4c248a433e nrUE NAS: bugfix: add sequence number to generateSecurityModeComplete
It was working because on initial connection, it is 0.
But it's probably a bad assumption.
2024-05-27 17:39:35 +02:00
Cedric Roux 0147bb2e08 nrUE NAS: add NEA1 and NIA1 in nrUE security capabilities 2024-05-27 17:39:35 +02:00
Cedric Roux 04027b9265 nrUE NAS: minor changes in get_allowed_nssai()
This function was very wrong, now it's just wrong.
(It does not sanitize the input properly. Some bad input may have
unexpected effects on the nrUE.)

It needs a serious rewrite.

I just wanted to "fix" it so that it processes correctly some
correct input data.
2024-05-27 17:39:35 +02:00
Cedric Roux a100929067 nrUE NAS: accept some messages without integrity+ciphering
OAI core network is sending Deregistation Accept in clear, even
after security context activation.

The standards is not clear to me, so let's accept it.

To be removed if incorrect with respect to the standards.
(The core network will need to be fixed then.)
2024-05-27 17:39:35 +02:00
Cedric Roux 56abe6c118 nrUE NAS: deal with security for NAS_CONN_ESTABLI_CNF
This message is ciphered + integrity protected, let's decipher it
and integrity check it.
2024-05-27 17:39:35 +02:00
Cedric Roux 245f430ad9 nrUE NAS: apply ciphering to uplink messages
Before this commit, only integrity protection was applied.
This was working only if the NAS connection is using NEA0.
2024-05-27 17:39:35 +02:00
Cedric Roux 075f8330f6 nrUE NAS: implement downlink security processing
Maybe not totally ok (code has some comments). To be refined if needed.
2024-05-27 17:39:35 +02:00
Cedric Roux 4cc1bb5433 nrUE NAS: hotfix for get_msg_type()
The version before this commit is wrong, taking wrong byte for msg_type
in some cases.

I don't have much time to implement a proper NAS PDU parser, so let's go
with hardcoded values.

Some later work will be done to have a cleaner solution. As of now, it's
too much work.
2024-05-27 17:39:35 +02:00
Cedric Roux 6c42ea6293 nrUE NAS: don't hardcode sequence number, get value from NAS COUNT UL
as per standard (see 33.501 6.4.3.1, see 24.501 4.4.3)
2024-05-27 17:39:35 +02:00
Cedric Roux ce771a17dc nrUE NAS: adapt code to use configured integrity algorithm 2024-05-27 17:39:35 +02:00
Cedric Roux 41037d57b5 nrUE NAS: handle SecurityModeCommand
Get the security algorithms from SecurityModeCommand.

Restructure the code a bit: add the function handle_security_mode_command()
and adapt the code to use it.

Derive also knas_enc (not used yet).

Do the derivation for knas_enc and knas_int only after reception
of SecurityModeCommand. We need the algorithms configured by core
network to derive those keys.
2024-05-27 17:39:35 +02:00
Cedric Roux b615162630 nrUE NAS: there are actually two NAS COUNT, one for DL and one for UL 2024-05-27 17:39:35 +02:00
Cedric Roux 2e7b926827 nrUE NAS: remove mm_counter and sm_counter, replace with nas_count
Specs (24.501, 33.501) don't seem to mention mm_counter and sm_counter,
simply nas_count, let's use this.
2024-05-27 17:39:35 +02:00
Robert Schmidt 168b172f9a Merge branch 'integration_2024_w21c' into 'develop'
Integration: `2024.w21`

See merge request oai/openairinterface5g!2757

* !2733 Remove duplicated function to reverse N bits
* !2712 rfsimulator: add support to simulate a long propagation delay
* !2695 improve polar init and polar readability
* !2709 Fix cmdline configmodule in phy simulators
* !2756 remove some enb dependencies in NR files
* !2687 bug fix ue UL payload filling randomly done in retransmissions (pointer not set)
* !2543 power/PHR normalizations for deltaMCS power adaptation
* !2719 Refactor LC handling at MAC
* !2736 Fix debug for ongoing transactions
* !2747 Fix aerial memory leak
* !2761 Use timeout command to kill hanging iperf3
* !2752 fix-dci11-type0-bitmap-setting
* !2759 Fix invalid MSG2 HARQ feedback attempt and remove accumulated_delta_PUCCH field from UE FAPI IF
* !2740 bugfix/cleanup: remove uint8_t to encode size plus some cleanup
* !2760 fix 5G NR SA FDD configs for 24 and 25 PRBs
* !2520 Documentation on coding style, workflow, and review instructions
2024-05-27 13:45:59 +00:00
Robert Schmidt 60c052a95a Merge remote-tracking branch 'origin/code-style-review-instructions' into integration_2024_w21c 2024-05-27 12:18:56 +02:00
Robert Schmidt 1b9ba55843 Merge remote-tracking branch 'origin/fix_fdd_configs' into integration_2024_w21c 2024-05-27 12:18:32 +02:00
Robert Schmidt 1f6d4a6cfe Merge remote-tracking branch 'origin/hotfix-uint8_t-size' into integration_2024_w21c 2024-05-27 12:18:26 +02:00
Robert Schmidt c202e9173f Merge remote-tracking branch 'origin/hotfix-fdbk-for-msg2-sib' into integration_2024_w21c 2024-05-27 12:18:13 +02:00
Robert Schmidt c0b7ac9a7e Merge remote-tracking branch 'origin/fix-dci11-rb_bitmap-filling-bug' into integration_2024_w21c 2024-05-27 12:18:07 +02:00
Robert Schmidt 7ffc403098 Demote log to debug for Msg3 infeasibility
It can happen that in the current DL slot, we cannot send an allocation
for Msg3 in a later UL slot. Up to this commit, MAC printed a warning.
However, this is not really a warning, as it will likely work in the
next or a later slot. So demote this to debug.
2024-05-27 11:48:21 +02:00
Robert Schmidt f261ce9124 OAIUE pipeline: Adjust sample timing advance to make test more stable 2024-05-27 10:24:29 +02:00
Cedric Roux 31274f6c64 bugfix/cleanup: remove uint8_t to encode size plus some cleanup
The starting point was the function do_NR_DLInformationTransfer() which
may deal with more than 256 bytes.

Then why not cleanup all the functions in the same file.
(And do a bit of formattting fixing while we're here.)

Then cleanup the callers of those functions.

Then, because of do_SIB23_NR() let's also cleanup in some
structures.

Not all the codebase was cleaned up, there surely remain some uint8_t
(and char/short/uint16_t) which are wrong.
2024-05-27 09:45:22 +02:00
Bartosz Podrygajlo 4a5d924375 Remove accumulated_delta_PUCCH from UE nfapi interface. 2024-05-27 09:22:42 +02:00
Bartosz Podrygajlo 3fd119ff29 Do not send PUCCH ACK on DLSCH that doesnt require it.
UE was attempting to send ACK on MSG2 - was caused by missing brackets in if statement.
2024-05-27 09:17:39 +02:00
Robert Schmidt 92b8453960 Merge remote-tracking branch 'origin/ci-kill-hanging-iperf3' into integration_2024_w21c 2024-05-25 12:35:35 +02:00
Robert Schmidt bfc41d1038 Merge remote-tracking branch 'origin/Fix_Aerial_Memory_Leak' into integration_2024_w21c 2024-05-25 12:35:26 +02:00
Robert Schmidt 1127a9850b Merge remote-tracking branch 'origin/Fix_array_for_debug_ongoing_transactions' into integration_2024_w21c 2024-05-25 12:34:46 +02:00
Rúben Soares da Silva dd93181951 Replace unneeded memcpy for sr_payload
Set appropriate length for csi payload calloc and memcpy, according to bit_len
2024-05-24 17:26:28 +01:00
Rúben Soares da Silva d27d193339 Fix P5 messages memory leaks ( CONFIG.request / CONFIG.response ) 2024-05-24 17:26:16 +01:00
Robert Schmidt e30552c23a Merge remote-tracking branch 'origin/refactor-lcid-gnb-mac' into integration_2024_w21c 2024-05-24 17:54:32 +02:00
Robert Schmidt 5686b2a26d Merge remote-tracking branch 'origin/phr_handling_for_develop' into integration_2024_w21c 2024-05-24 17:53:50 +02:00
Rúben Soares da Silva f6a039f38b Fix memory leak related to UCI.indication and RACH.indication 2024-05-24 14:49:45 +01:00
Rúben Soares da Silva 48ed7fba0d Fix memory leak related to CRC.indication and RACH.indication 2024-05-24 14:49:45 +01:00
Rúben Soares da Silva a516a632d4 Fix memory leak related to RX_DATA.indication message 2024-05-24 14:49:45 +01:00
Rúben Soares da Silva 8a8b38ae70 Fix memory leak related to SLOT.response message 2024-05-24 14:49:45 +01:00
Rúben Soares da Silva b215a60a3b Fix memory leak related to fapi_phy_api_msg fapi_msg 2024-05-24 14:49:45 +01:00
Robert Schmidt 8d16ff8459 Use timeout command to kill hangling iperf3
In some pipelines, it happens that iperf3 is hanging on 100% CPU load.
In these cases, a simple TERM signal does not seem to be enough to kill
it; KILL is necessary.

While e.g., RemoteCmd's driver paramiko has a timeout command, the
documentation [1] is not really clear how it is trying to stop commands.
Since it effectively does not stop, we have to assume it is only sending
TERM.

To remedy this, use the timeout command to start iperf3. We use option
-v for diagnose timeouts on stderr, and send KILL after an additional 3
seconds (-k3) if TERM does not succeed. The timeout is sent to the same
duration as the overall iperf timeout.

[1] https://docs.paramiko.org/en/3.4/api/channel.html#paramiko.channel.Channel.settimeout
2024-05-24 14:20:04 +02:00
Thomas Schlichter 2bb632a7fe fix 5G NR SA FDD configs for 25 and 25 PRBs
make sure the SSB is offset by 4 PRBs from the BW start.
Therefore, the ARFCN for the SSB center must be offset by 14 PRB from the ARFCN for the BW start.
2024-05-24 13:21:38 +02:00
Thomas Schlichter f969eddbe2 fix gNB to print correct --CO parameter for OAI UE in FDD case 2024-05-24 13:16:47 +02:00
Robert Schmidt 8820a57547 Merge remote-tracking branch 'origin/fix-ue-ul-retransmissions-payload-copy' into integration_2024_w21c 2024-05-24 11:53:16 +02:00
Robert Schmidt c76a9d43f2 Merge remote-tracking branch 'origin/remove_some_enb_references_in_nr' into integration_2024_w21c 2024-05-24 11:50:17 +02:00
Robert Schmidt d268378f2b Merge remote-tracking branch 'origin/fix_phy_simulators_configmodule' into integration_2024_w21c 2024-05-24 11:50:11 +02:00
Robert Schmidt 1465fed81c Merge remote-tracking branch 'origin/better-polar' into integration_2024_w21c 2024-05-24 11:50:04 +02:00
Robert Schmidt 12a1c8a820 Merge remote-tracking branch 'origin/rfsim_add_prop_delay' into integration_2024_w21c 2024-05-24 11:49:54 +02:00
Robert Schmidt 87a1ff5b37 Merge remote-tracking branch 'origin/fix_reverse_n_bits' into integration_2024_w21c 2024-05-24 11:49:13 +02:00
Robert Schmidt 98df398dc3 Remove empty/useless process_CellGroupConfig() 2024-05-24 11:42:50 +02:00
Robert Schmidt d7ba96f4ee Add new RA as part of nr_mac_add_test_ue() and refactor
A to-be-added UE's RA is added through nr_mac_add_test_ue() (the name is
misleading, it is not a "test UE") through its CellGroupConfig. Using
the process_CellGroupConfig() is unfortunate, because it is not really
clear what part of the CellGroupConfig gets evaluated (it is certainly
not all). Move the code for adding a new RA directly in the user-add
function, and refactor this one.
2024-05-24 11:42:50 +02:00
Robert Schmidt 6c71775ea1 Sort LCs by priority
Introduce new LC configuration "priority", as specified in 38.321, and
use to sort LCs by priority. We set the priority of an SRB according to
38.331 Section 9.2.1, and for a DRB to be the minimum priority of the
QoS flows associated to this DRB.
2024-05-24 11:42:50 +02:00
Robert Schmidt ee9570993d Add functions for LC add/release at MAC
Introduce new functions to add/release LCs without needing to go through
the intermediate CellGroupConfig. This harmonizes LC handling at the "DU
handler" to keep it consistent with RLC bearer handling.

These functions allow to group LC configuration handling, and we can
remove functions for setting NSSAIs and QoS by handling in one central
place (while adding LCs).

nr_mac_add_test_ue() is used by simulators and also in NSA mode to add a
new UE. Ideally, these users should also call the ue context setup
request handler to add a UE context; for the moment, respect the passed
list of LCs to add. Similarly, for do-ra, we require a dedicated
function to still parse the CellGroupConfig, so we keep that part of
functionality.

On reestablishment, since we do not process the CellGroupConfig from the
old UE, we need to add LCs for the new UE based on the onces from old
UE.
2024-05-24 11:42:45 +02:00