5G-MAG / rt-5gms-application-provider

The 5GMS Application Provider interacts with the 5GMS Application Function via M1 Provisioning interface, and uses M8 interface to communicate with UE.
Other
2 stars 4 forks source link

Endpoint to fetch all provisioning sessions #36

Closed dsilhavy closed 6 months ago

dsilhavy commented 6 months ago

Description

For playback of 5GMS content on the client-side, information provided via the M8 interface is required. Our current implementation relies on an m8.json file with the following structure:

{
  "m5BaseUrl": "http://192.168.178.55:7778/3gpp-m5/v2/",
  "serviceList": [
    {
      "provisioningSessionId": "872a0eb2-e40a-41ed-bf2a-03b8343221a7",
      "name": "VoD: Llama Drama",
      "entryPoints": [
        {
          "locator": "http://192.168.178.55/m4d/provisioning-session-872a0eb2-e40a-41ed-bf2a-03b8343221a7/634cd01c-6822-4630-8444-8dd6279f94c6/CaminandesLlamaDrama4K.ism/manifest(format=mpd-time-csf)",
          "contentType": "application/dash+xml",
          "profiles": [
            "urn:mpeg:dash:profile:isoff-live:2011"
          ]
        },
        {
          "locator": "http://192.168.178.55/m4d/provisioning-session-872a0eb2-e40a-41ed-bf2a-03b8343221a7/634cd01c-6822-4630-8444-8dd6279f94c6/CaminandesLlamaDrama4K.ism/manifest(format=m3u8-aapl-v3)",
          "contentType": "application/vnd.apple.mpegurl"
        }
      ]
    }
  ]
}

Problem Description

Currently, only the msaf-configuration tool is capable of creating the m8.json file automatically. If the configuration of the AF is done via Postman, curl or any other REST client, the M8 information needs to be created manually and placed on a webserver for the 5GMS Aware Application to download.

Feature Request

It would be nice to have an endpoint that allows us to fetch all provisioning sessions. We can use this information to update the m8.json once a new provisioning session is added.

Discussion Items

From my understanding, the easiest way to support this feature request is to implement an endpoint via the M1 API. Rel.17 of TS26.512 defines an endpoint to retrieve a specific provisioning session via a provisioningSessionId: {apiRoot}/3gpp-m1/{apiVersion}/provisioning-sessions/{provisioningSessionId}.

I suggest that the Application Function returns all provisioning sessions if the provisioningSessionId is omitted. On the Application Provider side, we can extend our Python libraries to support this new endpoint.

dsilhavy commented 6 months ago

@rjb1000 In our previous call you mentioned that Rel.18 will support such a feature if I remember correctly.

rjb1000 commented 6 months ago

Yes, @dsilhavy. The new operation enumerateProvisioningSessions can be reviewed in this unapproved draft API on 3GPP Forge under the SA4 project for the 5GMS_Pro_Ph2 Work Item. This is due for publication in the forthcoming TS 26.510 Rel-18.

However, in addition to this, you will recall that @davidjwbbc recently mentioned that the 5GMS AF reference implementation already supports a pre-standardisation prototype management API to provide the functionality missing from the precursor TS 26.512 Rel-17 specification on which the reference implementation of the provisioning API is based. Because this is not standardised in Rel-17, it is not formally part of reference point M1. Think of it as proprietary to 5G-MAG in this release.

https://github.com/5G-MAG/rt-5gms-application-function/blob/899e28e8e31f16e2c3620515b0adfafe20abae62/src/5gmsaf/openapi-extra-yaml/Maf_Management.yaml#L23-L43

dsilhavy commented 6 months ago

I can confirm this works:

  1. Set maf.address to 0.0.0.0 and maf.port to 4444 in msaf.yaml on Linux machine that is running the AF
  2. Created two provisioning sessions
  3. Querying {{maf_url}}/5gmag-rt-management/v1/provisioning-sessions returns:
[
    "c8fb07b0-092f-41ef-ba64-af7091b62997",
    "c7b38e0e-092f-41ef-ba64-af7091b62997"
]

Note that this is not an M1 endpoint.

dsilhavy commented 6 months ago

Discussion in reference call: