Skip to main content
UE Data Collection, Reporting and Event Exposure

Implementation Detail

See also: Developer Exchange.

Category: 3GPP Implementations

What This Project Implements​

The UE (User Equipment) Data Collection, Reporting and Event Exposure framework is defined by 3GPP in TS 26.531 and TS 26.532 (introduced in Release 17 and maintained through Release 18, Rel-18) to enable on-device collection and structured reporting of media performance data. It specifies the Data Collection Application Function (DCAF) and the associated provisioning, reporting and event exposure interfaces (R1 to R6), allowing application service providers to receive UE-side metrics and trigger analytics or policy decisions. R1 to R6 are named 3GPP reference points: the interfaces between the DCAF and the surrounding entities. The deliverable here is a reusable Rel-18 DCAF service-provider library together with a runnable Application Function that exercises these interfaces.

The interface sections below are presented in usage order (provision, then subscribe, then report): R1 (provisioning), R6 (event subscription and exposure) and R2 (direct data reporting). The remaining reference points R3 to R5 also exist in the framework but are not covered on this page.

Technical documentation providing context to this project can be found in the link below.

Streaming & Media Delivery

A list of relevant specifications can be found in the link below.

Standards: UE Data Collection, Reporting and Event Exposure

In short

A reusable Rel-18 DCAF Service Provider library for data reporting and event exposure. These functional entities could later on be integrated within the data reporting framework of 5G Media Streaming (5GMS).

Deployment Configurations​

Two deployment shapes are shown below: the DCAF running on its own (standalone), and the DCAF integrated alongside 5G Downlink Media Streaming.

Standalone UE Data Collection, Reporting and Event Exposure​

This is the standalone DCAF deployment, where the Data Collection AF is used on its own to collect and expose UE-side data.

Standalone DCAF architecture, with the Data Collection AF connected to a UE and a consuming Application Service Provider

Figure: standalone DCAF deployment.

This is the integrated deployment, where the DCAF is combined with the 5G Downlink Media Streaming (5GMSd) data reporting framework.

DCAF integrated with the 5G Downlink Media Streaming data reporting framework

Figure: DCAF integrated with 5GMSd data reporting.

Generic UE Data Collection, Reporting and Event Exposure​

A functional Data Collection Application Function (DCAF) implementation is available. In the diagram below, the building blocks marked with a green tick are the ones already implemented.

DCAF functional blocks, with implemented blocks marked by a green tick

Figure: DCAF functional blocks; a green tick marks each implemented building block.

The implementation covers the generic handling of provisioning, the receipt and queueing of data reports, and event subscription management and exposure. It provides service endpoints for provisioning (R1), data reporting (R2/R3/R4) and event subscription/exposure (R5/R6).

An illustrative usage sequence flow is shown below, tracing the actors (Application Service Provider, DCAF, UE) through the provisioning, subscription and reporting phases:

Sequence diagram of the DCAF usage flow across provisioning, subscription and reporting phases

The following tutorial covers the setup of a Data Collection Application Function and usage of APIs.

Go to the Tutorial: Data Collection Application Function with Docker and Insomnia REST client

The event exposure API links in the interface sections below resolve to the Rel-17 and Rel-18 5GC_APIs OpenAPI definitions; use the Rel-18 definitions when a matching version is available.

R1 (Provisioning API) - Ndcaf_DataReportingProvisioning​

R1 supports interactions between a Provisioning AF (in the Application Service Provider) and the Data Collection AF to:

Creating a Data Reporting Provisioning Session​

A Data Reporting Provisioning Session ties an Application Service Provider (aspId) and an event (eventId) to one or more Data Reporting Configurations. The shape of the request body:

{
"aspId": "string",
"eventId": "UE_COMM",
"dataReportingConfigurationIds": ["string"]
}

UE_COMM is the example eventId that has been implemented (UE communication information). See the Docker + Insomnia tutorial for the full request body and a working walkthrough.

Creating a Data Reporting Configuration​

A Data Reporting Configuration defines how a client samples and reports data, and which access profiles may consume it. The shape of the request body:

{
"dataCollectionClientType": "DIRECT",
"dataSamplingRules": [{ "samplingPeriod": 10.0 }],
"dataReportingConditions": [{ "type": "INTERVAL", "period": 60 }],
"dataAccessProfiles": [
{
"dataAccessProfileId": "per_min_totals",
"targetEventConsumerTypes": ["NWDAF", "EVENT_CONSUMER_AF"]
}
]
}

See the Docker + Insomnia tutorial for the full request body and a working walkthrough.

R6 (Event Exposure API) - Naf_EventExposure​

R6 supports interactions between the Event Consumer AF and the Data Collection AF. The Event Consumer AF is the Application Function that subscribes to and receives the exposed events; a typical consumer is the Network Data Analytics Function (NWDAF), the 5G core function that produces network analytics. It works as follows:

  • Subscribe to data reporting events exposed by the Data Collection AF (by means of Naf_EventExposure_Subscribe or Nnef_EventExposure_Subscribe services) - when used by an Event Consumer AF.
  • Expose data reporting events to the Event Consumer AF (by means of Naf_EventExposure_Notify or Nnef_EventExposure_Notify services) - when subsequently used by the Data Collection AF.

Subscribing for Events​

An Individual Application Event Exposure Subscription names the event to subscribe to and where to send notifications. The shape of the request body:

{
"eventsSubs": [{ "event": "UE_COMM", "eventFilter": { "anyUeInd": true } }],
"eventsRepInfo": { "notifMethod": "PERIODIC", "repPeriod": 10 },
"notifUri": "http://h2-server:8888/dcaf/notification/handler"
}

See the Docker + Insomnia tutorial for the full request body and a working walkthrough.

R2 (Direct Data Reporting API) - Ndcaf_DataReporting​

R2 supports interactions between the Direct Data Collection Client in the UE and the Data Collection AF to:

  • Obtain data collection and reporting configuration from the corresponding Data Collection AF instance (by means of Ndcaf_DataReporting service) - when used by a Direct Data Collection Client instance.
  • Send reports to a Data Collection AF instance (by means of Ndcaf_DataReporting service) - when subsequently used by the Direct Data Collection Client.

The shape of the request body when creating a new Data Reporting Session:

{
"externalApplicationId": "{{ _.external_application_id }}",
"supportedDomains": ["COMMUNICATION"]
}

See the Docker + Insomnia tutorial for the full request body and a working walkthrough.

Docker deployment support​

Docker-Compose setups are provided to run the Data Collection AF in Docker container environments, so the standalone DCAF can be brought up quickly for testing.

Docker-Compose deployment of the Data Collection AF and supporting containers

Figure: Docker-Compose deployment of the Data Collection AF.

How the tools map to the standard​

The implementation provides a reusable DCAF Service Provider library plus a runnable Application Function. It implements the generic handling described in TS 26.531/26.532, covering provisioning, the receipt and queueing of data reports, and event subscription management, together with the service endpoints for the reference points. The interface coverage exercised on this page is:

  • R1 (provisioning) via Ndcaf_DataReportingProvisioning - create provisioning sessions and data reporting configurations, including Data Access Profiles.
  • R2 (direct data reporting) via Ndcaf_DataReporting - obtain a reporting configuration and submit reports from a Direct Data Collection Client.
  • R6 (event exposure) via Naf_EventExposure - an Event Consumer AF subscribes and receives notifications.

The other reference points in the framework (R3 for the Indirect Data Collection Client, R4 for Application Server reporting, and R5 for NWDAF exposure) exist in the standard but are not exercised by the examples on this page. The green ticks in the DCAF functional-block diagram above indicate which building blocks are implemented.

Packages​

This project provides or makes use of the following GitHub Container packages.

The published container image lets you run the Data Collection Application Function (DCAF) without compiling it yourself. Use the pre-built image when you want to try the DCAF quickly or run it in a container environment; build from source instead when you need to modify the code or work from an unreleased branch. The DCAF Docker and Insomnia tutorial walks through running it.

UE data collection, reporting and event exposure​

ComponentsPackage
DCAFDCAF container image

Getting Started​

Bring up the standalone DCAF (see Docker deployment support above), provision it over R1, subscribe an Event Consumer AF over R6, then open a data reporting session and submit reports over R2. The Docker + Insomnia tutorial walks through these steps end to end. The source lives in Repositories & Releases on the project index.

note

Refer to the UE Data Collection repositories on GitHub to use or contribute to these Reference Tools. See How to Contribute for the process.