mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
Merge remote-tracking branch 'origin/ue_nas_simulator' into integration_2026_w13 (!3973)
Introduce UE NAS Simulator This MR introduces a simple standalone tester for 5G UE NAS signaling and NGAP messages. It connects to the AMF to perform NGAP and NAS encoding/decoding and validates the UE Registration and PDU Session Establishment processes without the overhead of a full Radio Access Network (PHY/MAC/RLC). The motivation for this tester is as follows, - This tester is a lightweight, deterministic tool to test the UE NAS layer directly. - Developers can easily inject specific NAS messages depending on the use-case. - Developers can validate custom NAS/NGAP messages without the need to implement complete RRC/MAC etc procedures. Start the 5G Core network to test the UE NAS simulator. The compiling and testing procedure is described below. To compile: mkdir build && cd build && cmake .. -GNinja && ninja nr-ue-nas-simulator-test To run: LD_LIBRARY_PATH=. ./tests/nr-ue-nas-simulator/nr-ue-nas-simulator-test -O ../tests/nr-ue-nas-simulator/test.conf
This commit is contained in:
@@ -78,6 +78,12 @@
|
||||
|
||||
static nr_ue_nas_t nr_ue_nas[MAX_NUM_NR_UE_INST] = {0};
|
||||
|
||||
nr_ue_nas_t *get_nr_ue_nas_info(uint8_t ue_inst)
|
||||
{
|
||||
AssertFatal(ue_inst >= 0 && ue_inst < MAX_NUM_NR_UE_INST, "Invalid UE instance\n");
|
||||
return &nr_ue_nas[ue_inst];
|
||||
}
|
||||
|
||||
#define FOREACH_STATE(TYPE_DEF) \
|
||||
TYPE_DEF(NAS_SECURITY_NO_SECURITY_CONTEXT, 0) \
|
||||
TYPE_DEF(NAS_SECURITY_UNPROTECTED, 1) \
|
||||
@@ -1166,6 +1172,10 @@ static void generateSecurityModeComplete(nr_ue_nas_t *nas, as_nas_info_t *initia
|
||||
security_header_len
|
||||
+ mm_msg_encode(plain, (uint8_t *)(initialNasMsg->nas_data + security_header_len), size - security_header_len);
|
||||
|
||||
if (rr.nas_data) {
|
||||
free(rr.nas_data);
|
||||
}
|
||||
|
||||
/* ciphering */
|
||||
uint8_t buf[initialNasMsg->length - 7];
|
||||
stream_cipher.context = nas->security_container->ciphering_context;
|
||||
|
||||
@@ -113,5 +113,6 @@ void *nas_nrue(void *args_p);
|
||||
void nas_init_nrue(int num_ues);
|
||||
void nr_ue_create_ip_if(const char *ifnameprefix, const char *ipv4, const char *ipv6, int ue_id, int pdu_session_id);
|
||||
void request_pdusession(nr_ue_nas_t *nas, const pdu_session_config_t *pdu);
|
||||
nr_ue_nas_t *get_nr_ue_nas_info(uint8_t ue_inst);
|
||||
|
||||
#endif /* __NR_NAS_MSG_SIM_H__*/
|
||||
|
||||
Reference in New Issue
Block a user