Enhanced PFCP Association Release Procedure for Graceful Session Termination

Call Disconnection Notification from UPF to cnSGWc through PFCP Association Release

Table 1. Feature History

Feature Name

Release

Description

Notification for UPF-initiated PFCP Association Release

2024.03.0

This feature enables cnSGWc to receive notification on UPF-initiated PFCP Association Release Session procedure. This notification indicates to clear the sessions and association simultaneously in UPF and cnSGWc.

If the cnSGWc is not notified, the call remains connected until UPF receives the next Session Modify Request from cnSGWc. This leads to loss of subscriber usage reports. Here, the Enhanced PFCP Association Release feature (EPFAR) improves the signalling efficiency and effective handling of usage reports by cnSGWc.

Default Setting: Disabled – Configuration Required to Enable

When the UPF decides to clear the call due an error or a partial failure, the UPF clears the calls locally without informing the cnSGWc on the call clearance. The call remains connected until the next Session Modify Request is received by the UPF from cnSGWc.

To avoid losing the usage reports and improving the signalling efficiency during call clearance, the Enhanced PFCP Association Release (EPFAR) feature is applied for the UPF to initiate the PFCP Association Release to gracefully clear the session between cnSGWc and UPF simultaneously. This feature complies with the Release 16.9.0 of 3GPP TS 29.244, section 5.18.1 and section 5.18.2.

EPFAR Negotiation

EPFAR feature negotiation processes the communication between the CP function and UP function. When both the CP function and the UP function support the EPFAR feature, the association release action is accomplished. You can also enable the EPFAR feature using the configuration command when the UPF needs to release the association with the SMF.

SGW indicates the support of EPFAR feature by setting the EPFAR bit in CP Function Features IE in the PFCP Association Setup Response towards UPF.

In case of rolling upgrade, whenever the chassis is becoming Active, UPF or cnSGWc sends PFCP Association Update with the UP or CP Function Features, so that EPFAR feature can be negotiated again.

The UPF initiated release is triggered using these procedures:

  1. UPF-initiated PFCP Session Release

  2. UPF-initiated Enhanced PFCP Association Release

UPF-initiated PFCP Session Release

  1. UPF enables the feature for a peer node only if it is negotiated during Association Setup procedure. When the UPF needs to delete a PFCP sesssion due to an error or a partial failure, it initiates the PFCP Session Report requests for the affected session.

  2. cnSGWc receives PFCP Session Report Request from UPF with the Report Type and User Report Trigger.

    • The Report Type is set as USAR (Usage Report) when there is a non-zero usage report for the PFCP session or UISR (UP Initiated Session Request) if there is no usage report to send.

      The fifth bit of Octet 6 in Report Type IE is a proprietary IE bit used for indicating UISR for PFCP Session Report Request.

    • User Report Trigger is set as TEBUR (Termination By UP function Report) for a non-zero usage report.

  3. UPF sends the Cause IE to the peer node in PFCP Session Report Request message. The IE uses the following values for communicating the Disconnect Reason for session deletion:

    • 201 - Subscriber Clear

    • 202 - Association Release initiated by UP

    • 203 - Recovery Failure

    The Gz interface carries these causes from cnSGWc:

    Cause from UPF

    Gz

    CauseForRecClosing

    Subscriber Clear (201)

    Normal Release

    Association Release initiated by UP (202)

    Normal Release

    Recovery Failure (203)

    Abnormal Release

    IP Source Violation (204)

    Normal Release

  4. UPF sets the PSDBU (PFCP Session Deleted By the UP function) flag as 1 to indicate the PFCP session deletion.

  5. cnSGWc handles these Usage Reports as a part of the release procedure:

    • TEBUR with PSDBU

    • Session Reports with UISR and PSDBU

  6. The Usage Reports are reported together to CGF in session release.

  7. cnSGWc sends the PFCP Session Report Response to UPF. Once the sessions are deleted in locally in UPF, the cnSGWc continues the disconnect procedure.

UPF-initiated Enhanced PFCP Association Release

  1. When both the cnSGWc and UPF support EPFAR feature, UPF initiates the PFCP Session Report requests for all the sessions affected by the association release and deletes the sessions.

  2. cnSGWc receives the PFCP Association Update Request with PARPS (PFCP Association Release Preparation Start) flag set from the UPF on PFCP Association Release and cnSGWc stops selecting the UPF.

  3. cnSGWc receives usage reports with the following flags set from UPF:

    • TEBUR with PSDBU for all sessions with final non-zero usage reports.

    • Session Reports with UISR and PSDBU flags for all sessions with no usage reports.

  4. cnSGWc receives PFCP Association Update Request from UPF with the URSS flag set to 1 that indicates all the non-zero Usage Reports for the affected PFCP Sessions are sent. cnSGWc deletes all the remaining Sessions for this UPF.

  5. After all the sessions for the UPF are cleared, the cnSGWc triggers PFCP Association Release procedure towards UPF to clear the PFCP Association.

Enabling EPFAR to Initiate the PFCP Session Release Procedure

You can enable the EPFAR feature by using the CLI procedure.

Procedure


Step 1

Enter the profile converged-core cc supported-features command in the configuration mode.

Example:

[sgw] sgw(config)# profile converged-core cc supported-features [ epfar ] 

Note

 

epfar—enables support for Enhanced PFCP Association Release

Step 2

Verify the enabled EPFAR feature using the show running-config profile converged-core show command.

Example:

[sgw] sgw# show running-config profile converged-core
Mon May  6  03:09:36.813 UTC+00:00
profile converged-core cc
 supported-features [ epfar ] 
exit
[sgw] sgw#

Bulk Statistics

The following statistics are updated with the new labels:

  • sgw_pdn_disconnect_stats, sgw_ue_disconnect_stats

    Example Query1:

    sgw_pdn_disconnect_stats{app_name="smf",
    cluster="Local",data_center="DC",gr_instance_id="1",
    instance_id="0",pdn_type="ipv4",rat_type="EUTRAN",
    reason="userplane_initiated_clear_subscriber",
    service_name="sgw-service"} 1

    Example Query 2:

    sgw_ue_disconnect_stats{app_name="smf",cluster="Local",
    data_center="DC",gr_instance_id="1",instance_id="0",
    peer_ip="",reason="userplane_initiated_clear_subscriber",
    service_name="sgw-service"} 1

    Labels:

    • userplane_initiated_clear_subscriber

    • userplane_initiated_association_release

    • userplane_initiated_recovery_failure

    • sx_urss_association_release

  • sgw_service_stats

    Example Query 1:

    sgw_service_stats{app_name="smf",cluster="Local",
    data_center="DC",fail_reason="",gr_instance_id="1",
    instance_id="0",interface="interface_sgw_egress",
    reject_cause="",service_name="sgw-service",
    sgw_procedure_type="upf_initiated_clear_subscriber",
    status="attempted",sub_fail_reason="",svc_to_svc="False"} 1

    Example Query 2:

    sgw_service_stats{app_name="smf",
    cluster="Local",data_center="DC",
    fail_reason="",gr_instance_id="1",
    instance_id="0",interface=
    "interface_sgw_egress",reject_cause="",
    service_name="sgw-service",sgw_procedure_type=
    "upf_initiated_clear_subscriber",status="success",
    sub_fail_reason="",svc_to_svc="False"} 1

    Example Query 3:

    sgw_service_stats{app_name="smf",
    cluster="Local",data_center="DC",fail_reason="",
    gr_instance_id="1",instance_id="0",interface=
    "interface_sgw_ingress",reject_cause="",
    service_name="sgw-service",sgw_procedure_type=
    "upf_initiated_clear_subscriber",status="attempted",
    sub_fail_reason="",svc_to_svc="False"} 1

    Example Query 4:

    sgw_service_stats{app_name="smf",
    cluster="Local",data_center="DC",fail_reason="",
    gr_instance_id="1",instance_id="0",interface=
    "interface_sgw_ingress",reject_cause="",
    service_name="sgw-service",sgw_procedure_type=
    "upf_initiated_clear_subscriber",status="success",
    sub_fail_reason="",svc_to_svc="False"} 1

    Labels:

    • upf_initiated_clear_subscriber

    • upf_initiated_association_release

    • upf_recovery_failure

    • sx_urss_association_release_initiated_deletion

  • sgw_sx_session_report_stats

    Example Query 1:

    sgw_sx_session_report_stats{app_name="smf",
    cluster="Local",data_center="DC",gr_instance_id="1",
    instance_id="0",reason="psdbu",service_name="sgw-service",
    status="success",sx_session_report_type="USAR"} 1

    Example Query 2:

    sgw_sx_session_report_stats{app_name="smf",
    cluster="Local",data_center="DC",gr_instance_id="1",
    instance_id="0",reason="psdbu",service_name="sgw-service",
    status="success"sx_session_report_type="UISR"} 1

    Labels:

    • USAR

    • UISR

  • sgw_sx_usage_report_stats

    Example Query:

    sgw_sx_usage_report_stats{app_name="smf",
    cluster="Local",data_center="DC",gr_instance_id="1",
    instance_id="0",service_name="sgw-service",status="success",
    sx_usage_report_trigger_type="TEBUR"} 1

    Label:

    • TEBUR

  • nodemgr_up_pathfail_reasons

    Example Query:

    nodemgr_up_pathfail_reasons {app_name="SMF",
     cluster="SMF",data_center="DC",gr_instance_id="1",
    instance_id="0",service_name="nodemgr",
    up_pathfail_reason="up_urss_reason_association_release"} 1

    Label:

    • up_urss_reason_association_release