pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40895?usp=email )
Change subject: WIP: PDU Sess Modification Request ......................................................................
WIP: PDU Sess Modification Request
Change-Id: Id9ac0f0e431c4a82dfab8675c93bf3c3f05442a7 --- M 5gc/C5G_Tests.ttcn M 5gc/ConnHdlr.ttcn M library/NG_NAS_Osmo_Templates.ttcn 3 files changed, 93 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/95/40895/1
diff --git a/5gc/C5G_Tests.ttcn b/5gc/C5G_Tests.ttcn index ae8260c..768201c 100644 --- a/5gc/C5G_Tests.ttcn +++ b/5gc/C5G_Tests.ttcn @@ -361,6 +361,24 @@ vc_conn.done; }
+private function f_TC_pdu_sess_modification() runs on ConnHdlr { + f_register(); + f_pdu_sess_establish(false); + f_sleep(1.0); + f_pdu_sess_modify(); + f_pdu_sess_release(); + f_deregister(); +} +testcase TC_pdu_sess_modification() runs on MTC_CT { + f_init(); + f_ngap_setup(0); + + var ConnHdlrPars pars := f_init_pars(ue_idx := 0); + var ConnHdlr vc_conn; + vc_conn := f_start_handler_with_pars(refers(f_TC_pdu_sess_modification), pars); + vc_conn.done; +} + private function f_TC_register_ping4() runs on ConnHdlr { f_register(); f_pdu_sess_establish(); @@ -404,9 +422,22 @@ execute( TC_periodic_registration_updating() ); execute( TC_ue_context_release_no_pdu_session() ); execute( TC_ue_context_release_with_pdu_session() ); + execute( TC_pdu_sess_modification() ); execute( TC_ng_register_ping4() ); execute( TC_ng_register_ping4_256() ); }
+/* TODO: + * - UE requested PDU Session Modification, 3GPP TS 23.502 4.3.3.2 + * - Emergency call (PDU Sess Establish "Request Type"="Emergency Request") + * - Handover from/to EPS vs 5GC + * - Handover from/to 3GPP vs non-3GPP (PDU Sess Establish "Request Type"="Existing PDU Session" and RAT Type change) + * - PDU Session Type IPv6 + * - PDU Session Type IPv4v6 + * - VoLTE: + * -- " If the UE requested P-CSCF discovery then the message shall also include the P-CSCF IP address(es) as determined by the SMF and as described in clause 5.16.3.4 of TS 23.50" + * - Fill in PCO during PDU Sess Establish Req. + * - "If the PDU Session being established was requested to be an always-on PDU Session, the SMF shall indicate whether the request is accepted by including an Always-on PDU Session Granted indication in the PDU Session Establishment Accept message" + */
} diff --git a/5gc/ConnHdlr.ttcn b/5gc/ConnHdlr.ttcn index ebac2ae..ebd446e 100644 --- a/5gc/ConnHdlr.ttcn +++ b/5gc/ConnHdlr.ttcn @@ -386,6 +386,29 @@ } }
+/* 3GPP TS 24.501 8.3.7 PDU session modification request, + * 3GPP TS 23.502 4.3.3.2 UE requested PDU Session Modification */ +function f_pdu_sess_modify() runs on ConnHdlr { + var template (value) NG_NAS_UL_Message_Type nas_ul_msg; + var NAS_PDU nas_pdu; + var NG_NAS_DL_Message_Type rx_nas, inner_nas; + var ProcedureTransactionIdentifier pti := f_next_pti(); + var OCT1 pdu_sess_id := int2oct(g_pars.ue_pars.sess_pars.id, 1); + + /* 3GPP TS 24.501 Table 8.3.7.1. */ + nas_ul_msg := cs_NG_PDU_SESSION_MODIFICATION_REQUEST(cs_NG_PDU_SessionIdV(pdu_sess_id), pti, + p_IntegrityProtMaxDataRate := cs_IntegrityProtMaxDataRateV('FF'O, 'FF'O)); + nas_pdu := enc_NG_NAS_UL_Message_Type(valueof(nas_ul_msg)); + nas_ul_msg := cs_NG_UL_NAS_TRANSPORT(cs_PayloadContainerType(tsc_PayloadContainerESMMsg), + cs_PayloadContainerLV(nas_pdu), + p_PDU_SessionId := cs_NG_PDU_SessionIdTV(pdu_sess_id), + p_RequestType := cs_NG_Request_TypeTV('001'B), + p_DNN := cs_DNN_TLV(f_enc_dns_hostname(g_pars.ue_pars.apn))); + NGAP.send(nas_ul_msg); + f_sleep(5.0); + /* TODO: handle response */ +} + function f_register() runs on ConnHdlr { var template (value) NGAP_PDU tx_pdu; var template (value) NG_NAS_UL_Message_Type nas_ul_msg; diff --git a/library/NG_NAS_Osmo_Templates.ttcn b/library/NG_NAS_Osmo_Templates.ttcn index 4f8e8cc..d6660cb 100644 --- a/library/NG_NAS_Osmo_Templates.ttcn +++ b/library/NG_NAS_Osmo_Templates.ttcn @@ -656,6 +656,45 @@ } }
+template (value) NG_NAS_UL_Message_Type +cs_NG_PDU_SESSION_MODIFICATION_REQUEST(template (value) NG_PDU_SessionId p_PDU_SessionId, + template (value) ProcedureTransactionIdentifier p_PTI, + template (omit) NG_UE_SM_Cap p_NG_UE_SM_Cap := omit, + template (omit) GMM_GSM_Cause p_Cause := omit, + template (omit) MaxNumPacketFilters p_MaxNumPacketFilters := omit, + template (omit) AlwaysOnPDUSessionReq p_AlwaysOnPDUSessionReq := omit, + template (omit) IntegrityProtMaxDataRate p_IntegrityProtMaxDataRate := omit, + template (omit) QoS_Rules p_QoS_Rules := omit, + template (omit) QoSFlowDescr p_QoSFlowDescr := omit, + template (omit) MappedEPSBearerContexts p_MappedEPSBearerContexts := omit, + template (omit) ExtdProtocolConfigOptions p_ExtdPCO := omit, + template (omit) PortManagementInfoContainer p_PortManagementInfoContainer := omit, + template (omit) IPHeaderCompressionConfig p_IPHeaderCompConfig := omit, + template (omit) EthernetHeaderCompressConfig p_EthernetHeaderCompConfig := omit, + template (omit) RequestedMBSContainer p_RequestedMBS := omit, + template (omit) ServiceLvlAAContainer p_ServiceLvlAA := omit) := { + pdu_Session_Modification_Request := { + protocolDiscriminator := tsc_EPD_GSM, /* cl. 9.2 M V 1 */ + pduSessionId := p_PDU_SessionId, /* cl. 9.4 M V 1 */ + procedureTransactionIdentifier := p_PTI, /* cl. 9.6 M V 1 */ + messageType := tsc_MT_NG_PDUSessionModificationRequest, /* cl. 9.7 M V 1 */ + smCapability := p_NG_UE_SM_Cap, /* cl. 9.11.4.1 O TLV 3-15 IEI=28 */ + gsmCause := p_Cause, /* cl. 9.11.4.2 O TV 2 IEI=59 */ + maxNumPacketFilters := p_MaxNumPacketFilters, /* c. 9.11.4.9 O TV 3 IEI=55 */ + alwaysOnPDUSessionReq := p_AlwaysOnPDUSessionReq, /* c. 9.11.4.4 O TV 1 IEI=B */ + integrityProtMaxDataRate := p_IntegrityProtMaxDataRate, /* c. 9.11.4.7 O TV 2 IEI=13 */ + requestedQoSRules := p_QoS_Rules, /* cl. 9.11.4.13 O TLV-E 7-65538 IEI=7A */ + requestedQoSFlowDescr := p_QoSFlowDescr, /* cl. 9.11.4.12 O TLV-E 5-65538 IEI=79 */ + mappedEPSbearerContexts := p_MappedEPSBearerContexts, /* cl. 9.11.4.8 O TLV-E 7-65538 IEI=7F Dec18 */ + extdProtocolConfigurationOptions := p_ExtdPCO, /* cl. 9.11.4.6 O TLV-E 4-65538 IEI=0x7B */ + portManagementInfoContainer := p_PortManagementInfoContainer, /* cl. 9.11.4.27 O TLV-E 8-65538 IEI=7C Sep20 @sic R5s201387 Baseline Moving sic@ */ + ipHeaderCompressionConfig := p_IPHeaderCompConfig, /* cl. 9.11.4.24 O TLV 5-257 IEI=66 Sep20 @sic R5s201387 Baseline Moving sic@ */ + ethernetHeaderCompressConfig := p_EthernetHeaderCompConfig, /* cl. 9.11.4.28 O TLV 3 IEI=1F Sep20 @sic R5s201387 Baseline Moving sic@ */ + requestedMBS := p_RequestedMBS, /* cl. 9.11.4.30 O TLV-E 8-65538 IEI=70 Sep22 @sic R5s221179 Baseline Moving sic@ */ + serviceLvlAA := p_ServiceLvlAA /* cl. 9.11.2.10 O TLV-E 6-n IEI=72 Sep22 @sic R5s221179 Baseline Moving sic@ */ + } +} // End of template m_NG_PDU_SESSION_MODIFICATION_REQUEST + /* 24.501 cl. 8.3.12 */ template (value) NG_NAS_UL_Message_Type cs_NG_PDU_SESSION_RELEASE_REQUEST(template (value) NG_PDU_SessionId p_PDU_SessionId,