A.4 xMB Procedure example for File Delivery Services (without File Schedule)
29.1163GPPRelease 18Representational state transfer over xMB reference point between content provider and BM-SCTS
This procedure example describes the provisioning procedure for the delivery of a File Delivery service, to a single broadcast area, without the presence of the fileSchedule element in the Schedule Description fragment of MBMS User Service Announcement information. The fileSchedule element contains transmission timing information for each file by its file URL. Consequently, the file URLs must be present when creating service announcement information.
This example assumes that the BM-SC automatically fetches the file using a pull method (xMB-U mode) and prepares the transmission. File URLs can be provided in the session creation request or any subsequent session update request. When file preparation ends after the session start time, the file is automatically added to user plane flow. It is up to Content Provider to ensure that session scheduling is large enough to allow files preparation and transmission according to bitrate between BM-SC and file location, and bitrate of user plane.
Figure A.4-1: xMB-C and xMB-U Procedures for a File Delivery Service
1: The operator and the Content Provider agree on a Service Level Agreement (SLA), which entitles the Content Provider to use the MBMS system (in accordance to some rules) for content delivery. For instance, the SLA can include day time ranges, during which the Content Provider can distributed its content. The SLA can also inclue geographical areas, in which the Content Provider is allowed to distribute content. The SLA also includes target bitrates and likely definitions of tolerable losses per service.
2: The BM-SC administrators (operator) apply the agreed ranges. This can imply to add additional Service Areas, the provisioning ofand other system related configurations.
The Content Provider provisioning a file delivery session in a single broadcast area.
3: The Content Provider authenticates itself as authorized user. The Content Provider can only see those configurations, sessions and services, which belong to the Content Provider.
4: The Content Provider creates a new service. Optionally, the Content Provider may provide properties for the service like service class, service languages, service names, notification configuration as well as consumption reporting configuration. The Content Provider can select whether the Content Provider or the operator distributes service announcement by providing a list of Service Announcement Channel (SACH, as defined in Annex L.2 / L.3 of 3GPP TS 26.346 [3]) services used for operator-driven service announcement.
NOTE 1: BM-SC derives the required UE capabilities from the provided service and session properties.
5: Upon successful service creation by the BM-SC, the BM-SC shall provide a unique resource id of the service, that the Content Provider can use for subsequent requests.
6: The Content Provider retrieves the current service properties. The unique resource id of the service is provided by the Content Provider as input to the BM-SC. The BM-SC responds with the service properties.
7: The Content Provider updates service properties. The unique resource id of the service and some or all service properties are provided by the Content Provider as in put to the BM-SC
8: The Content Provider creates a session for previously created service. The unique resource id of the service is provided by the Content Provider as input to the BM-SC. Optionally, the Content Provider may provide common session properties like max ingest bitrate (excluding any FEC redundancy and transport overhead), scheduling information (start time, stop time), Geographical Area and QoE Reporting configuration and session type (set to Files) as input. File specific session properties provided as input by Content Provider: xMB-U ingest mode (pull/push), file list if xMB-U pull mode.
NOTE 2: BM-SC allocates following parameters for SDP of the MBMS User Service: TMGI, FLUTE IP Multicast Address, UDP Port and TSI (see 3GPP TS 26.346 [3]).
NOTE 3: BM-SC derives the SAI list for the MBMS Service Area from Geographical Area provided in Content Provider request and from PLMN id negotiated in step 1. FEC information (codec and ratio) and MBMS Bearer QoS (ARP, QCI) are also negotiated in step 1.
NOTE 4: In xMB-U pull ingest mode, file URLs can be provided now (i.e. at session resource creation) or at a later stage (e.g. while the session is active) through the Session Update xMB-C procedure.
NOTE 5: Service Announcement start time can be provided in request. If not, BM-SC starts annoucing service as soon as all required service and session properties are provided by Content Provider.
NOTE 6: In the case of regional services, i.e. that deliver region specific content, a session can be cloned so that all Sessions of user service use same FLUTE parameters.
9: A unique resource id of the session, which identifies the created Session, is responded. If xMB-U push ingest mode is used, BM-SC provides also the push URL the Content Provider shall use.
NOTE 7: For file URLs provided in session creation request, the BM-SC starts automatically to fetch the file resource(s) from the content location when file earliest fetch time elapses and generates the FLUTE and FEC symbols (if any). The BM-SC can notify the Content Provider when the process is finalized.
10: Once all information for service announcement is available, and if service announcement start time is elapsed, the BM-SC starts announcing the service automatically. Service announcement is automatically updated following subsequent Session updates. File schedule element can be present in Schedule fragment for files URLs provided in Session creation request.
11: The Content Provider queries the Session configuration, providing the resource ids of the session and service.
12: The BM-SC provides the information in response.
13: The Content Provider updates session by providing additional File URLs.
14: The BM-SC sends response with update status.
NOTE 8: The BM-SC starts automatically to fetch the new file resource(s) from the content location when file earliest fetch time elapses and generates the FLUTE and FEC symbols (if any). The BM-SC can notify the Content Provider when the process is finalized.
NOTE 9: Steps 9-12 can be executed at any time after Session is created and prior to the Session stop time. Any file URL added after Session start time will be automatically fetched, processed and sent on user plane.
The BM-SC activates automatically the MBMS Bearer at session start time.
15: The BM-SC activates the MBMS bearer by providing the TMGI, the Flow ID, the MBMS Service Area (MSA), the GBR and other parameters to the MBMS-GW. The BM-SC can notify the Content Provider about the activation of the MBMS Bearer.
16: When the MBMS Broadcast bearer is activated, then the BM-SC starts sending the user plane data, according to target reception completion time. The BM-SC can notify Content Provider of file delivery start/end.
17: At session stop time, the MBMS bearer is terminated. The BM-SC can notify the Content Provider about the termination of the MBMS Bearer.
NOTE 10: The Content Provider terminates the service. All sessions, which are still created or active will be deleted automatically by BM-SC with the termination of the service.
Annex B (normative):
JSON Schema
{
"swagger":"2.0",
"info":{
"title":"BM-SC API",
"description":"BM-SC Content Provider ingestion API",
"version":"1.0.2"
},
"host":"<xMB_Entry_Point>",
"schemes":[
"https"
],
"basePath":"/xmb/v1.0",
"produces":[
"application/json"
],
"paths":{
"/services":{
"get":{
"description":"Return all supported services",
"produces":[
"application/json"
],
"responses":{
"200":{
"description":"A list of services.",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/Service"
}
}
},
"default":{
"description":"Unexpected error",
"schema":{
"$ref":"#/definitions/Error"
}
}
}
},
"post":{
"description":"Creates a service",
"produces":[
"application/json"
],
"responses":{
"201":{
"description":"Service successfully created..",
"schema":{
"$ref":"#/definitions/services-response"
}
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
}
}
}
},
"/services/{service-id}":{
"get":{
"description":"Returns resource for a given service-id",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"OK.",
"schema":{
"$ref":"#/definitions/Service"
}
}
}
},
"patch":{
"description":"Update a service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"description":"Service that needs to be created",
"schema":{
"$ref":"#/definitions/Service"
}
},
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"The request has succeeded",
"schema":{
"$ref":"#/definitions/Service"
}
},
"204":{
"description":"The request has succeeded"
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
}
}
},
"put":{
"description":"Updates a service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"description":"Service that needs to be created",
"schema":{
"$ref":"#/definitions/Service"
}
},
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"The request has succeeded",
"schema":{
"$ref":"#/definitions/Service"
}
},
"204":{
"description":"The request has succeeded"
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
}
}
},
"delete":{
"description":"Delete a service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"The request has succeeded",
"schema":{
"$ref":"#/definitions/services-response"
}
},
"204":{
"description":"The request has succeeded"
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
}
}
}
},
"/services/{service-id}/sessions":{
"get":{
"description":"Return all sessions of a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"A list of sessions.",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/Session"
}
}
},
"default":{
"description":"Unexpected error",
"schema":{
"$ref":"#/definitions/Error"
}
}
}
},
"post":{
"description":"Create a session for a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"201":{
"description":"Session successfully created..",
"schema":{
"$ref":"#/definitions/session-response"
}
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
}
}
}
},
"/services/{service-id}/sessions/{session-id}":{
"get":{
"description":"Return a session of a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
},
{
"name":"session-id",
"in":"path",
"description":"Session Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"OK.",
"schema":{
"$ref":"#/definitions/Session"
}
}
}
},
"patch":{
"description":"Updates a session of a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"description":"Session that needs to be created",
"schema":{
"$ref":"#/definitions/Session"
}
},
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
},
{
"name":"session-id",
"in":"path",
"description":"Session Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"The request has succeeded",
"schema":{
"$ref":"#/definitions/Session"
}
},
"204":{
"description":"The request has succeeded"
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
}
}
},
"put":{
"description":"Update a session of a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"description":"Session that needs to be created",
"schema":{
"$ref":"#/definitions/Session"
}
},
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
},
{
"name":"session-id",
"in":"path",
"description":"Session Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"The request has succeeded",
"schema":{
"$ref":"#/definitions/Session"
}
},
"204":{
"description":"The request has succeeded"
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
}
}
},
"delete":{
"description":"Delete a session of a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
},
{
"name":"session-id",
"in":"path",
"description":"Session Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"The request has succeeded",
"schema":{
"$ref":"#/definitions/session-response"
}
},
"204":{
"description":"The request has succeeded"
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
}
}
}
},
"/services/{service-id}/reports":{
"get":{
"description":"Returns all reports of a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"A list of reports.",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/Report"
}
}
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
},
"default":{
"description":"Unexpected error",
"schema":{
"$ref":"#/definitions/Error"
}
}
}
}
},
"/services/{service-id}/reports/{report-id}":{
"get":{
"description":"Returns all reports of a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
},
{
"name":"report-id",
"in":"path",
"description":"Report Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"A report with given report-id",
"schema":{
"$ref":"#/definitions/Report"
}
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
},
"default":{
"description":"Unexpected error",
"schema":{
"$ref":"#/definitions/Error"
}
}
}
}
},
"/services/{service-id}/sessions/{session-id}/reports":{
"get":{
"description":"Return all reports of a given session of a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
},
{
"name":"session-id",
"in":"path",
"description":"Session Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"OK.",
"schema":{
"$ref":"#/definitions/Report"
}
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
}
}
}
},
"/services/{service-id}/sessions/{session-id}/reports/{report-id}":{
"get":{
"description":"Return all reports of a given session of a given service",
"produces":[
"application/json"
],
"parameters":[
{
"name":"service-id",
"in":"path",
"description":"Service Id",
"required":true,
"type":"integer",
"format":"int32"
},
{
"name":"session-id",
"in":"path",
"description":"Session Id",
"required":true,
"type":"integer",
"format":"int32"
},
{
"name":"report-id",
"in":"path",
"description":"Report Id",
"required":true,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"OK.",
"schema":{
"$ref":"#/definitions/Report"
}
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"404":{
"description":"Request not found"
}
}
}
},
"/notifications":{
"get":{
"description":"Returns all notifications.",
"produces":[
"application/json"
],
"responses":{
"200":{
"description":"A list of notifications.",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/Notification"
}
}
},
"401":{
"description":"Request requires user authentication"
},
"403":{
"description":"Request cannot be fulfilled"
},
"default":{
"description":"Unexpected error",
"schema":{
"$ref":"#/definitions/Error"
}
}
}
}
}
},
"definitions":{
"Service":{
"type":"object",
"description":"Service Description",
"properties":{
"id":{
"type":"number",
"description":"Service Resource Identifier"
},
"service-id":{
"type":"string",
"description":"Identifies the MBMS User Service as defined in Clause 11.2.1.1 of TS 26.346."
},
"service-class":{
"description":"Service Class",
"type":"string"
},
"service-languages":{
"type":"array",
"description":"List of service languages",
"items":{
"type":"string"
}
},
"service-names":{
"type":"array",
"description":"List of service names",
"items":{
"type":"string"
}
},
"receive-only-mode":{
"description":" When set to true, the Content Provider indicates that the service is a Receive Only Mode service.",
"type":"boolean"
},
"service-announcement-mode":{
"description":"Enumeration that the BM-SC creates according service announcement fragments for the sessions and / or do service announcement on SACH. Additional service announcement modes may be added in future",
"type":"string"
},
"consumption-reporting-configuration":{
"type":"object",
"description":"The Content Provider wishes to collect consumption reports (enabling precision, i.e. combination of sample percentage and reporting interval)",
"properties":{
"reporting-interval":{
"type":"number",
"description":"The interval for which the BM-SC has to aggregate the statistics for"
},
"sample-percentage":{
"type":"number",
"description":"Percentage of users to collect reports from"
},
"start-time":{
"type":"string",
"description":"Start time of consumption report collection"
},
"end-time":{
"type":"string",
"description":"End time of consumption report collection"
}
}
},
"push-notification-url":{
"type":"string",
"description":"The Content Provider provides Notification URL over which it will receive notifications “pushed” by the BM-SC. The Notification procedure is described in Clause 5.3.6 of 3GPP TS 26.348 [33]."
},
"push-notification-configuration":{
"type":"string",
"description":"If the Content Provider enables push delivery of notifications, then the Content Provider may provide notification filters. This parameter contains a comma separated list of Classes it wishes to receive among the following options: Critical, Warning, Information, Service, Session, or All to get all types of notification. The notification message shall be sent immediately to the Content Provider upon becoming available."
}
}
},
"services-response": {
"required": [
"service-res-id"
],
"properties": {
"service-res-id": {
"type": "integer",
"format": "int32",
"description": "The resource identifier of the service."
}
}
},
"Session":{
"type":"object",
"description":"Session Description",
"properties":{
"id":{
"type":"string",
"description":"Session Resource Identifier"
},
"session-start":{
"description":"Start time when the MBMS Bearer is active",
"type":"number"
},
"session-stop":{
"description":"Stop time until the MBMS bearer is active",
"type":"number"
},
"max-ingest-bitrate":{
"description":"The requested bitrate excludes FEC overhead and transport overhead. The BM-SC calculates the MBMS Bearer bitrate from it, considering overhead like FEC and other transport overheads. The session bitrate is always larger or equal to the payload bitrate",
"type":"number",
"format":"float"
},
"max-delay":{
"description":"Specifies the maximum delay the MBMS System should add, i.e. from the time the data is received to the time by when the data is released from the MBMS system",
"type":"number",
"format":"float"
},
"session-state":{
"description":"The BM-SC may automatically change the state of the session. Possible states: Session Idle, Session Announced, Session Active",
"type":"string"
},
"service-announcement-start-time":{
"description":"When present, this time at which the BM-SC shall start service announcement",
"type":"number"
},
"geographical-area":{
"description":"Geographics Area, where the service is provided, either through unicast or through MBMS Bearers. The BM-SC derives the MBMS Service Area and the SAI list for the availability information from Geographical Area as provided by the Content Provider. The content of each string item is left to the business agreement between the Content Provider and the Operator.",
"type":"array",
"items":{
"type":"string"
}
},
"qoe-reporting-configuration":{
"type":"array",
"description":"The Content Provider wishes to collect QoE reports for this session. If this configuration is included, the QoE reporting configuration shall be applied only for this session. If this configuration is present, the Content Provider requests overriding of service level configuration for this session with this configuration. The possible QoE metrics that the Content Provider may request can be either found in or derived from subclauses 8.4.2 and 10 of 3GPP TS 26.347 [21], as well as the reception reporting information that is available in subclause 9.4.6 of 3GPP TS 26.346 [3]. The detailed or aggregated reports shall not contain information such as clientId, which might pose privacy concerns, or networkResourceCellId, which would expose mobile network information.",
"items":{
"type":"object",
"description":"QoE metric configuration",
"properties":{
"metric-name":{
"type":"string",
"description":"Name of QoE metric"
},
"metric-type":{
"type":"string",
"description":"Type of metric"
},
"reporting-interval":{
"type":"number",
"description":"The interval for which the BM-SC has to aggregate the statistics for"
},
"sample-percentage":{
"type":"number",
"description":"Percentage of users to collect reports from"
},
"start-time":{
"type":"string",
"description":"Start time of consumption report collection"
},
"end-time":{
"type":"string",
"description":"End time of consumption report collection"
}
}
}
},
"session-type":{
"description":"The session type is how the Content Provider is providing the content to the BM-SC. The BM-SC is selecting the appropriate delivery methods from the session type. The session type shall be extensible for further session types",
"type":"string",
"enum":[
"Streaming: When the session type is set to Streaming, the BM-SC expects a Streaming type input (RTP). When the method is set to streaming, then the format is compliant to MBMS streaming (as defined in 3GPP TS 26.346 [3]).",
"Files: When the session type is set to Files, the BM-SC expects generic files as input. The files can be provided either by on-request pull interactions or continuous push ingest",
"Application: When the session type is set to Application, then the ingest depends on the application service description. When the Application Service Description is set to DASH, the BM-SC expects an MPD and optionally one or more IS’s. The content is assumed to be 3GP-DASH compliant (as defined by 3GPP TS 26.247). The BM-SC may either pull the Media Segments from the Content Provider or the Content Provider continuously pushes Segments into the BM-SC",
"Transport-Mode: When the session type is set to Transport-Mode, the BM-SC provides transport of data/TV content in a transparent manner. The content provide may provide some configuration parameters for the distributions"
]
},
"max-cid": {
"type": "integer",
"minimum": 0,
"maximum": 16383,
"description": "indicating the MAX CID parameter for the compressor (see IETF RFC 5795)."
},
" header-compression":{
"description":" Requests the BM-SC to enable ROHC on the input flows.",
"type":"array",
"items":{
"type":"object",
"description":"Desribes a single input flow where ROHC is to be applied. Either ipv4addr or ipv6addr shall be included and port and periodicity may be included.",
"properties":{
"ipv4addr":{
"type":"string",
"description":"An IPv4 address formatted in the ‘dotted decimal’ notation as defined in IETF RFC 1166 [31]"
},
"ipv6addr":{
"type":"string",
"description":" An IPv6 address formatted according to clause 4 of IETF RFC 5952 [32]. The mixed IPv4 IPv6 notation according to clause 5 of IETF RFC 5952 [32] shall not be used."
},
"port":{
"type":"integer",
"description":"A UDP or TCP port between 0 and 65535 "
},
"periodicity":{
"type":"number",
"description":"the target periodicity for ROHC full header packets in units of seconds"
},
"profile":{
"type":"integer",
"description":"the applicable ROHC profile (see IETF RFC 5795 [27])"
}
}
}
},
"fec":{
"description":"Requests the BM-SC to perform FEC protection of the input flow when transmitting over the MBMS channel. The string shall include an SDP description of FEC framework configuration information (see subclause 5.5 of IETF RFC 6363 [29]) formatted according to subclause 8A.5 of 3GPP TS 26.346 [3].",
"type":"string"
},
"resource-sharing-ind":{
"type":"boolean",
"description": "The resource sharing indication."
},
"resource-sharing-id":{
"type":"string",
"description": "The resource sharing id. When present in the session modification operation, the value of the field identifies an existing xMB session resource URL (as specified in table 5.1.1-1) to share the transmission, where Max Bitrate, Geographical Area and (in case of MC Services) QoS Information are re-used."
},
"transport-mode-session":{
"description":"Describes a transport mode session",
"type":"object",
"properties":{
"session-announcement-mode":{
"description":"The session announcement mode is either Content Provider or MBMS",
"type":"string",
"enum":[
" Content Provider: the BMSC generates the session parameters and provides those to the Content Provider.",
"SACH: the session announcement is done by the MBMS system through the SACH."
]
},
"userplane-session-description-parameters":{
"description":"The session description parameters for the user plane provide the information on where and how the to access the session at the Content Provider. The parameters Type and Access URL. Note the BM-SC may get input on session properties from the Content Provider, e.g. bitrate, dependening on the ingest session.",
"type":"object",
"properties":{
"session-description-type":{
"type":"string",
"description":"The type of the session that describes the session, typically for proper interpretation of the target resource of the request, for example the Internet Media Type of the document, of the URL in an HTTP URL. An “Embedded” type is defined which indicates that the xMB-U user plane parameters are embedded in the User Plane Parameters object."
},
"session-description-access-url":{
"type":"string",
"description":"A URL that enables to access and possibly control the ingest session. The URL may for example be an RTSP URL or a URL to an SDP that describes a multicast stream or an HTTP URL to retrieve a ready packaged MPEG2-TS stream, etc."
},
"user-plane-parameters": {
"type": "string",
"description": "When the Type is set to ‘Embedded’, the Content Provider adds an object containing the session description. In case of Forward Only Mode, the object may contain a ready-made Session Description and the indication of a single xMB-U reception UDP port. When a Session Description is present, then the BM-SC uses it for Session Announcement. In case of Proxy Mode, the object shall contain a Session Description template and a list of the UDP flows to be forwarded on the established MBMS bearer for the session. For each list entry, the content provider indicates whether this flow is directly associated with a media description entry in the Session Description Template or whether it is related to a media description entry (e.g. RTCP flows, which have a relation to a media description entry, but are not described in the Session Description). If the flow is directly associated with a media description entry, the BM-SC shall modify the port field of the media description entry in the Session Description Template. If the flow is related to a media description entry, then the BM-SC just forwards the flow on a port that is equal to the port of the related media session plus an offset; such a flow is only implicitly described in the session description – for example corresponding to the RTCP flows per the RTP/AVP profile."
}
}
},
"userplane-delivery-mode-configuration":{
"description":"This mode configures how the session needs to be delivered to the application, i.e. it basically establishes the delivery mode",
"type":"string",
"enum":[
"Forward-only: The BM-SC receives complete IP Multicast packets for to be forwarded",
"Proxy: Proxy the incoming UDP payloads to the outgoing UDP payloads"
]
},
"delivery-session-description-parameters":{
"description":"If the Service Announcement Mode is set to Content Provider, then at least the following information is provided by the BM-SC: TMGI of the MBMS Bearer. Note that additional parameters may be provided, based on the configuration options of the delivery method for transport only.",
"type":"string"
}
}
},
"streaming-session":{
"description":"Describes a streming session",
"type":"object",
"properties":{
"sdp-url":{
"description":"A URL to the SDP that describes the streaming session between the Content Provider and the BM-SC, that will be used for ingesting the streaming session. The SDP shall include the RTSP links for every media session as part of the “a=control” attribute to enable RTSP control of the session. The SDP shall also contain the required bitrate for each of the media sessions. The content shall conform to the constraints of this specification.",
"type":"string"
},
"time-shifting":{
"description":"Indicates if and for how long time shifting access to the content (using unicast) may be provided for this session.",
"type":"number"
}
}
},
"application-session":{
"description":"Describes an application session",
"type":"object",
"properties":{
"application-service":{
"description":"Mimetype of the Application Service",
"type":"string"
},
"ingest-mode":{
"description":"The ingest mode enumerates how resources are ingested into the BM-SC",
"type":"string",
"enum":[
"Pull: The BM-SC pulls the resources as described by the application entry point document. If DASH resources are Media Segments, the BM-SC pulls the Media Segments as described by the Segment availability start time from a DASH MPD.",
"Push: The Content Provider pushes resources. The BM-SC needs to provide a push URL. If DASH resources are Media Segments, Content Provider pushes Media Segments, so that the Media Segment is available on the BM-SC according to Segment availability start time. The BM-SC needs to provide a push URL."
]
},
"application-entry-point-url":{
"description":"The application entry point refers to an MPD when Application Service Description is set to DASH. When the Ingest Mode is set to Push, then the MPD Url refers to a DASH MPD which should be fetched, optionally conditioned and inserted into Service Announcement. When the Ingest Mode is set to Pull, then the BM-SC starts fetching the Segments using unicast.",
"type":"string"
},
"push-url":{
"description":"If the Session Type is set to Application: A resource locator for ingesting Media Segments using HTTP. The Content Provider may create additional sub-resources using WebDAV procedures. This is a read-only parameter managed by the BM-SC and only present when Ingest Mode is set to Push. If the Session Type is set to Files: This parameter contains the Push URL the Content Provider shall use when using the Push ingestion mode. This is a read-only parameter managed by the BM-SC and only present when Ingest Mode is set to Push. ",
"type":"string"
},
"unicast-delivery":{
"description":"Indicator whether the content is also available for unicast retrieval",
"type":"boolean"
},
"components":{
"description":"List of Components of the application, which are recommended to be made available on MBMS Bearers. In case of DASH, each component is identified by a representation identifier. ",
"type":"array",
"items":{
"type":"string"
}
}
}
},
"files-session":{
"description":"Describes a file session",
"type":"object",
"properties":{
"ingest-mode":{
"description":"The ingest mode enumerates how resources are ingested into the BM-SC",
"type":"string",
"enum":[
"Pull: The Content Provider adds files URLs that the BM-SC will fetch. The Content Provider may tell the BM-SC when to start fetching the file",
"Push: The Content Provider shall push the file to the BM-SC that will immediately process and deliver as soon as it is ready. The BM-SC may be configured to ignore all files that are pushed before session active time, or stage them. The BM-SC shall provide back to the Content Provider the URL the Content Provider shall use to push the files."
]
},
"push-url":{
"description":"If the Session Type is set to Application: A resource locator for ingesting Media Segments using HTTP. The Content Provider may create additional sub-resources using WebDAV procedures. This is a read-only parameter managed by the BM-SC and only present when Ingest Mode is set to Push. If the Session Type is set to Files: This parameter contains the Push URL the Content Provider shall use when using the Push ingestion mode. This is a read-only parameter managed by the BM-SC and only present when Ingest Mode is set to Push. ",
"type":"string"
},
"file-list":{
"type":"array",
"description":"List of files to be sent. In the Push mode, the file list is not used since the BM-SC will monitor its push folder and send the files it receives on a first-come first-served basis. In Pull mode, the file list contains the following information per file entry:",
"items":{
"type":"object",
"properties":{
"file-url":{
"type":"string",
"description":"the URL where the BM-SC will fetch the file content"
},
"file-display-url":{
"type":"string",
"description":"the file URL as seen by the UE"
},
"file-earliest-fetch-time":{
"type":"string",
"description":"The BM-SC shall fetch the file no sooner than this UTC timestamp. If absent, then the file shall be present on the Content Provider server and the BM-SC may fetch it when it wants",
"format":"date-time"
},
"file-latest-fetch-time":{
"type":"string",
"description":"The BM-SC shall fetch the file no later than this UTC timestamp. If absent, then the file shall be present on the Content Provider server and the BM-SC may fetch it at a time of its choosing.",
"format":"date-time"
},
"file-size":{
"type":"integer",
"format":"int32",
"description":"The Content Provider may provide the precise or an file size estimate as input. The BM-SC may update the file size once it has started to fetch the file"
},
"file-status":{
"type":"string",
"description":"Enumeration stating the state of the file. Possible values are pending, fetched, prepared, transmitting, sent",
"enum":[
"pending",
"fetched",
"prepared",
"transmitting",
"sent"
]
},
"target-reception-completion-time":{
"type":"string",
"description":"(On the MBMS Client) hint on the due date, when the file should be completely received by the UE. The BM-SC should schedule and order the transmission etc accordingly",
"format":"date-time"
},
"keep-update-interval":{
"type":"number",
"description":"The BM-SC checks the file resources with the given interval for changes"
},
"unicast-availability":{
"description":"Indication that the file is also available for unicast retrieval by the application at a Content Provider server whose location is given by the HTTP(S) URL corresponding to the value of file display URL",
"type":"boolean"
},
"byte-range":{
"type":"boolean",
"description": "indicates that the HTTP(S) URL given in the file display URL parameter can be used for Byte-Range-Based file repair"
},
"e-tag":{
"type":"boolean",
"description": "value of the ETag used as version identifier for the file in the Byte-Range-Based file repair requests"
},
"file-repeatition-duration":{
"type":"integer",
"format":"int32",
"description":"The number of times the file shall be sent on the session (a value of 1 means the file shall be sent only once). This counter shall be decreased each time the file has been transmitted. When equals to zero, no more file repeat is scheduled. The BM-SC may send FEC instead of source information"
},
"periodic-update-interval": {
"type": "number",
"description": "When present, it is an indication that this file of the list of files is expected to be periodically updated, and the value of this parameter represents the nominally expected time interval between successive updates of this file. This parameter is a signal to the BM-SC to deliver the file and its updates as a Datacasting service. From its value, the BM-SC will choose the delivery mode, and set the associated interval and mode values in controlling the transmission of the Datacasting service."
}
}
}
},
"file-delivery-manifest-url":{
"description":"Alternative to the file list. The resource may describe scheduling information for the file",
"type":"string"
},
"display-base-url": {
"type": "string",
"description": "When ingest mode is set to Push, the Base URL is seen by the UE."
},
"sa-file-url":{
"type":"string",
"description": "URL of the SA file announcing the download delivery session, provided by the BM-SC when service-announcement-mode is set to ‘Content Provider’."
}
}
},
"local-mbms-delivery-information": {
"type": "object",
"description": "Local MBMS Delivery Information",
"properties": {
"mbms-enb-ipv4-multicast-address": {
"type": "string",
"format": "ipv4",
"description": "Contains the M1 (transport) plane IPv4 destination multicast address used by MBMS-GW for IP multicast encapsulation of application IP multicast datagrams."
},
"mbms-enb-ipv6-multicast-address ": {
"type": "string",
"format": "ipv6",
"description": "Contains the M1 (transport) plane IPv6 prefix of destination multicast address used by MBMS-GW for IP multicast encapsulation of application IP multicast datagrams."
},
"mbms-gw-ipv4-ssm-address": {
"type": "string",
"format": "ipv4",
"description": "Contains the value of MBMS-GW’s IPv4 address for Source Specific Multicasting."
},
"mbms-gw-ipv6-ssm-address": {
"type": "string",
"format": "ipv6",
"description": " Contains the value of MBMS-GW’s IPv6 address for Source Specific Multicasting."
},
"common-tunnel-endpoint-identifier": {
"type": "string",
"description": "Indicates the common tunnel endpoint identifier of MBMS GW for user plane."
},
"bm-sc-ipv4-address": {
"type": "string",
"format": "ipv4",
"description": "Indicates the destination IPv4 address of the BM SC for the reception of user plane data via the xMB U interface."
},
"bm-sc-ipv6-address": {
"type": "string",
"format": "ipv6",
"description": "Indicates the destination IPv6 address of the BM SC for the reception of user plane data via the xMB U interface."
},
"bm-sc-port": {
"type": "integer",
"minimum": 0,
"maximum": 65535,
"description": "Indicates the destination UDP port of the BM SC for the reception of user plane data via the xMB U interface."
}
}
},
"group-ids": {
"type": "array",
"description": "List of group identifiers",
"items" : {
"type" : "string"
}
},
"mc-extension": {
"type": "object",
"description": "Mission critical extension, allowing QoS control by the content provider",
"properties": {
"gbr": {
"type":"number",
"format":"float",
"description": "Guaranteed bitrate for the MBMS bearer in unit kbps"
},
"qci": {
"type": "integer",
"minimum": 0,
"maximum": 255,
"description": "QoS class identifier for the MBMS bearer"
},
"arp-priority-level": {
"type": "integer",
"minimum": 1,
"maximum": 15,
"description": "ARP priority level",
},
"arp-pre-emption-capability": {
"type": "boolean",
"description": "ARP preemption capability"
},
"arp-pre-emption-vulnerability": {
"type": "boolean",
"description": "ARP preemption vulnerability"
},
"tmgi": {
"type": "string",
"description": "TMGI of the MBMS bearer"
}
}
}
}
},
"session-response": {
"required": [
"session-res-id"
],
"properties": {
"session-res-id": {
"type": "integer",
"format": "int32",
"description": "The resource identifier of the session."
}
}
},
"Report":{
"type":"object",
"description":"Report Description",
"properties":{
"id":{
"type":"string",
"description":"Report Resource Identifier"
},
"report-type":{
"description":"Type of report",
"type":"string"
},
"report-url":{
"type":"string",
"description":"Location of the report from where the Content Provider can retrieve the detailed report"
},
"report":{
"type":"string",
"description":"Detailed report"
},
"report-starttime":{
"type":"string",
"description":"Report collection start time"
},
"report-endtime":{
"description":"Report collection end time",
"type":"string"
}
}
},
"Notification": {
"type": "object",
"description": "Notification Description",
"properties": {
"id": {
"type": "string",
"description": "Notification Resource Identifier"
},
"message-class": {
"type": "string",
"description": "Indicates the message class of the notification",
"enum" : ["Critical: When some event drastically prevent the proper delivery of content", "Warning: When the service can be partially delivered but quality is reduced", "Information: When the service is properly delivered but some interesting event occurred", "transmitting", "Session/Service: Information about Service/Session related parameters"]
},
"message-name": {
"description": "Unique identifier of the message. Provides information about the message pertaining to the message-class of the notification",
"type": "string",
"enum" : ["network-is-down", "service-badly-configured", "session-badly-configured", "incoming-bitrate-exceed-session-capacity", "no-incoming-data", "qoe-report-available", "consumption-reports-available", "reception-reports-available", "service-announcement-change", "session-state-change", "file-ready-for-transmission", "file-download-started ", "file-successfully-sent", "file-fetch-error"]
},
"message-information": {
"type": "object",
"description": "A dictionary of key values containing informations linked to the notification",
"additionalProperties": {
"type": "string"
}
}
}
},
"Error":{
"type":"object",
"properties":{
"code":{
"type":"integer",
"format":"int32"
},
"message":{
"type":"string"
}
}
}
}
}
Annex C (informative):
Change history
|
Change history |
|||||||
|
Date |
Meeting |
TDoc |
CR |
Rev |
Cat |
Subject/Comment |
New |
|
2017-01 |
TS initial skeleton |
0.0.0 |
|||||
|
2017-01 |
C3A170064, C3A170066, C3A170069 agreed in Adhoc |
0.1.0 |
|||||
|
2017-02 |
Specification of the xMB user- and control-plane procedures, accompanied by the corresponding JSON schema. |
0.2.0 |
|||||
|
2017-03 |
CT#75 |
CP-170102 |
TS sent for approval to Plenary |
1.0.0 |
|||
|
2017-03 |
CT#75 |
CP-170102 |
TS under change control |
14.0.0 |
|||
|
2017-06 |
CT#76 |
CP-171115 |
0001 |
2 |
F |
Editorial Updates to TS 29.116 v14.0.0 |
14.1.0 |
|
2017-06 |
CT#76 |
CP-171115 |
0002 |
2 |
F |
Technical Corrections to TS 29.116 v14.0.0 |
14.1.0 |
|
2017-06 |
CT#76 |
CP-171115 |
0003 |
3 |
F |
Technical Corrections to TS 29.116 v14.0.0 |
14.1.0 |
|
2017-06 |
CT#76 |
CP-171115 |
0004 |
2 |
F |
Supported feature negotiation |
14.1.0 |
|
2017-06 |
CT#76 |
CP-171137 |
0005 |
2 |
B |
Local MBMS related MBMS data delivery for xMB interface |
14.1.0 |
|
2017-06 |
CT#76 |
CP-171115 |
0010 |
2 |
F |
xMB Stage-2 related updates |
14.1.0 |
|
2017-06 |
CT#76 |
CP-171140 |
0011 |
2 |
F |
Security in xMB |
14.1.0 |
|
2017-09 |
CT#77 |
CP-172037 |
0013 |
– |
F |
Reference correction |
14.2.0 |
|
2017-09 |
CT#77 |
CP-172037 |
0014 |
1 |
F |
Fixes and editorial updates to TS 29.116 |
14.2.0 |
|
2017-09 |
CT#77 |
CP-172053 |
0016 |
1 |
F |
Alignment to TS 26.346 |
14.2.0 |
|
2017-09 |
CT#77 |
CP-172055 |
0017 |
1 |
F |
Modification of Text on xMB Security |
14.2.0 |
|
2017-12 |
CT#78 |
CP-173087 |
0018 |
1 |
F |
Correction of Reference |
14.3.0 |
|
2018-06 |
CT#80 |
CP-181024 |
0021 |
1 |
B |
FEC and ROHC for mission critical services over MBMS |
15.0.0 |
|
2019-03 |
CT#83 |
CP-190129 |
0024 |
2 |
F |
Moving xMB stage 2 to TS 26.348 |
16.0.0 |
|
2019-06 |
CT#84 |
CP-191086 |
0027 |
– |
A |
Correct feature applicability |
16.1.0 |
|
2019-06 |
CT#84 |
CP-191108 |
0029 |
1 |
A |
UE group content delivery |
16.1.0 |
|
2019-06 |
CT#84 |
CP-191099 |
0031 |
1 |
A |
Correct ROHC usage in xMB |
16.1.0 |
|
2019-09 |
CT#85 |
CP-192158 |
0032 |
F |
Removal of a duplicated openAPI definition |
16.2.0 |
|
|
2019-12 |
CT#86 |
CP-193199 |
0033 |
F |
Add file display URI support |
16.3.0 |
|
|
2019-12 |
CT#86 |
CP-193199 |
0034 |
F |
Clarify consumption report configuration |
16.3.0 |
|
|
2019-12 |
CT#86 |
CP-193199 |
0035 |
1 |
F |
Clarify PATCH usage |
16.3.0 |
|
2019-12 |
CT#86 |
CP-193204 |
0036 |
1 |
B |
Mission critical extension |
16.3.0 |
|
2019-12 |
CT#86 |
CP-193204 |
0037 |
B |
MBMS resource sharing |
16.3.0 |
|
|
2019-12 |
CT#86 |
CP-193204 |
0038 |
B |
SA file returned for the download delivery session |
16.3.0 |
|
|
2019-12 |
CT#86 |
CP-193204 |
0039 |
B |
File Repair hosted by the content provider |
16.3.0 |
|
|
2019-12 |
CT#86 |
CP-193204 |
0040 |
1 |
B |
xMB adaptation for CAPIF |
16.3.0 |
|
2019-12 |
CT#86 |
CP-193129 |
0041 |
A |
Format for FEC framework configuration information in xMB |
16.3.0 |
|
|
2020-03 |
CT#87e |
CP-200217 |
0042 |
F |
Correct xMB adaptation for CAPIF |
16.4.0 |
|
|
2020-03 |
CT#87e |
CP-200213 |
0043 |
1 |
F |
Correct opeAPI error in Mission critical extension section |
16.4.0 |
|
2020-06 |
CT#88e |
CP-201246 |
0044 |
F |
Corrected reference to xMB stage-2 spec |
16.5.0 |
|
|
2020-06 |
CT#88e |
CP-201246 |
0045 |
1 |
D |
Remove redundant annex content |
16.5.0 |
|
2020-06 |
CT#88e |
CP-201239 |
0046 |
F |
Correct qci for Mission critical extension |
16.5.0 |
|
|
2020-06 |
CT#88e |
CP-201249 |
0047 |
F |
Fix the missing push url in file session |
16.5.0 |
|
|
2020-09 |
CT#89e |
CP-202061 |
0050 |
A |
Correct xMB update procedure |
16.6.0 |
|
|
2021-06 |
CT#92e |
CP-211248 |
0052 |
B |
eCAPIF support |
17.0.0 |
|
|
2021-12 |
CT#94e |
CP-213220 |
0053 |
B |
Update of HTTP Digest Access Authentication |
17.1.0 |
|
|
2022-09 |
CT#97e |
CP-222094 |
0054 |
B |
Supporting xMB interface extensions for 5GMS via eMBMS |
17.2.0 |
|
|
2022-12 |
CT#98e |
CP-223199 |
0055 |
F |
Miscellaneous corrections |
18.0.0 |
|