-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
M5: Network Assistance Session API: Lifecycle #64
Comments
I suggest splitting out |
In preparation for the implementation of the Network Assistance Session API, integrated the PCF Service consumer library with the 5GMS AF. The AF initialises the library, which listens to the events. Generated the OpenAPI code files and currently implementing the |
Implemented the internal data structures in the 5G MSAF to hold the Modified the MSAF M5 State machine to receive and process the The next step is to test the |
The PCF service consumer library requires the connection details of the UE, media component and change_callback to communicate with the PCF. The AF can now extract the connection details of the UE from Another parameter for the |
When a new Network Assistance Session is created by the Media Session Handler invoking createNetworkAssistanceSession, the 5GMS AF receives a NetworkAssistanceSession resource. NetworkAssistanceSession.requestedQoS provides QoS requirements, namely the maximum, minimum and desired bit rates, potentially in both the uplink and downlink directions. The QoS parameters from the M5 Network Assistance Session are passed to the PCF through the MediaComponent data type in the N5 Application Session Context. As mentioned in the createNetworkAssistanceSession design section, the The table below shows the OpenAPI model data structures for M5 requestedQos and the
At this stage, however, the 5GMS AF does not handle policy template. (This will be implemented as part of the Dynamic Policies feature.) So, the initial implementation simply maps the QoS parameters obtained from the requestedQoS to the corresponding elements of the media component. The mapping of the relevant fields is shown below:
|
In the absence of clear specification in TS 26.512, the above simple mapping is our best guess of the intended 5GMS AF behaviour when the Media Session Handler omits the policyTemplateId parameter, either out of choice, or because no Policy Templates are provisioned in the relevant Provisioning Session. Raised issue 5G-MAG/Standards#80 to seek clarity on this. |
During testing, we discovered that @acetcom's current implementation of the Open5GS PCF requires a media type to be specified in the media component, despite MediaComponent.medType being specified as optional in table 5.6.2.7-1 of TS 29.514. Specifically, Open5GS PCF recognises only the So, for the time being I will hard code the media type as |
Here is an example network interaction at reference point N5 between a test client (
Error message sent to stderr by the PCF Service consumer:
Next steps
|
The code of the AF is modified so that it uses the PCF provided by the BSF. The allocated resources are released during finalisation. Now implementing the |
Implemented the Currently during the test, there is no UE registered with the network. This means there is no PCF bindings for the UE. So, both creation and retrieval return an unsuccessful responses:
Moving on to the |
Implemented the destroyNetworkAssistanceSession operation. When the AF finds the session to be deleted, it:
Items on the delete list are processed lazily by the AF on a separate "garbage collection" thread:
|
Currently working on testing these operations with a virtualised UE/gNB. |
Did some additional testing of the
The above output shows that a Network Assistance session is created for the UE with 10.45.0.4 and is assigned the Network Assistance session identifier ec782162-2fd4-41ee-ac3e-dba34e90aa08 by the AF . Some code tidy up and testing of other operations will be done next. |
We noticed this morning that all of the above testing at reference point M5 has been done using HTTP/2 with prior knowledge, whereas the target for reference point M5 is HTTP/1.1 (for compatibility with the Media Session Handler reference implementation). We have a medium term ambition to develop a way of autodetecting HTTP/1.1 versus HTTP/2 with prior knowledge on the same listening socket, as well as supporting protocol upgrade from HTTP/1.1 to HTTP/2 (see #12). To make progress on this issue now, we just need to flip all listening sockets on the AF back to HTTP/1.1 (per the solution described in #10) by linking it against libmicrohttpd instead of libnghttp2 at build time. (Note that this won't stop the AF using an HTTP/2 client to invoke service operations on the NRF, BSF and PCF. However, it will temporarily prevent the AF from receiving asynchronous notifications from these Network Functions using HTTP/2. This isn't a problem at the moment, though, since the Open5GS PCF doesn't yet implement any asynchronous notifications anyway...) |
The AF now handles HTTP/1.1 for reference point M5. Tested the Will test the destroy operation next.
|
Implemented and tested the create, retrieve and destroy operations. Sample output below:
|
@davidjwbbc: Does the above list of events correspond to the first bullet specified in TS 26.512 clause 16.1 (reproduced below)? Does your specification need to be expanded to include events corresponding to the second and third bullets below?
|
I think the first 2 equate to the "Service Data Flow QoS notification control" and the last two equate to the "Resources allocation outcome". The "Service Data Flow Deactivation" comes through a change notification channel rather than the event notification channel. |
Started implementing the The workflow is described below: This operation uses a Look up the Use pcf_session_update_app_session() function to update the stored Replace the Return the |
Implemented the |
Sample outputs from the Network Assistance Session API:
|
Description
When an AF offers Network Assistance (see #63) the UE may then choose to establish a
NetworkAssistanceSession
with the AF and use this session to request available bandwidth estimates or ask for a temporary download bit rate boost.If the request to establish a
NetworkAssistanceSession
with the AF fails then the UE is denied access to these features.If the request succeeds then the UE is provided with a
naSessionId
(Network Assistance Session Identifier), which it can then use to:Relevant Specifications
Design
All these API operations are performed on the interface at reference point M5 using the URL path prefix of:
{apiRoot}/3gpp-m5/v2/network-assistance/
createNetworkAssistanceSession
This is a POST request with no further sub-resource path elements. The UE will provide a
NetworkAssistanceSession
resource in the body of the request with:serviceDataFlowInformation
set to indicate TCP session between the UE and 5GMS AS.policyTemplateId
set to indicate the desired initial policyTemplateId to use.requestedQoS
(where the policy template is a general QoS template and extra QoS parameters are indicated elsewhere, usually in the media stream manifest) which will provide additional QoS requirements for QoS based policy templates.A connection to the PCF should be established using the UE details from the
serviceDataFlowInformation
or an existing connection for the UE may be re-used.A call to
pcf_session_create_app_session()
(see 5G-MAG/rt-5gc-service-consumers#3) is then made to establish anAppSessionContext
for the UE with the PCF. Theue_address
parameter will be derived from theserviceDataFlowInformation
in the request. Theevents
parameter will be the following event types ORed together:The
media_component
parameter will be derived from the policy template and therequestedQoS
parameters.When the change_callback is called then:
pcf_app_session_t
pointer isNULL
then no NetworkAssistanceSession will be created and an error response (401) will be returned.pcf_app_session_t
pointer is notNULL
then anaSessionId
is generated and the network assistance data, including thepcf_app_session_t
pointer, will be stored in the application context and aNetworkAssistanceSession
response body generated and returned along with thenaSessionId
as part of theLocation
header.retrieveNetworkAssistanceSession
Lookup the
naSessionId
in the application context and generate theNetworkAssistanceSession
response body from the associated data. Return this with a 200 response code. If the naSessionId was not found then return a 404 response code.updateNetworkAssistanceSession
TODO
destroyNetworkAssistanceSession
Lookup the
naSessionId
in the application context and if found usepcf_app_session_free()
on thepcf_app_session_t
associated with thenaSessionId
. When the change_callback is called withNULL
, return a 204 response.If the lookup failed then return a 404 response.
The text was updated successfully, but these errors were encountered: