Repository navigation
Replies: 4 comments 6 replies
|
When we designed the Data Collection AF library we did so with the knowledge that the 5GMS AF would not want most of the standard Data Collection reference points. This is why these interfaces can be disabled by the application when it initialises the library. The original plan was based around the 5GMS AF only providing the standard R5 and R6 interfaces for event reporting to the NWDAF and Application Provider, all other interfaces would be replaced by internal DCAF library API calls from the 5GMS AF:
This would allow the 5GMS AF to react to the metrics itself instead of them being hidden away in the Data Collection function, the 5GMS AF would then pass on relevant metrics in a suitable form to the Data Collection function during processing of the metrics events. Some things have changed a little since then, such as the direct R4 and R2 interfaces. But the library remains configurable by the controlling application so that it is able to pick which interfaces it wants the library to handle and which it will handle itself (or just not implement). |
|
My main question is how the information that would normally be exchanged over R2 is carried over M5. The specifications define different data structures for the two interfaces, so I cannot see how they map to each other. Could you explain which M5 messages correspond to the R2 functionality and how the 5GMS AF passes their contents to the DCAF internally? I have included the relevant schema definitions below. Please let me know if I have misunderstood how this is intended to work in 5GMS Release 17.10.0. Thanks for helping clarify this. R226532-h30/TS26532_Ndcaf_DataReporting.yaml: DataReportingSession:
description: "A representation of a Data Reporting Session."
type: object
properties:
sessionId:
readOnly: true
allOf:
- $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
validUntil:
readOnly: true
allOf:
- $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
externalApplicationId:
$ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId'
supportedDomains:
type: array
items:
$ref: '#/components/schemas/DataDomain'
minItems: 0
samplingRules:
readOnly: true
type: object
additionalProperties:
type: array
items:
$ref: 'TS26532_CommonData.yaml#/components/schemas/DataSamplingRule'
minItems: 0
reportingConditions:
readOnly: true
type: object
additionalProperties:
type: array
items:
$ref: 'TS26532_CommonData.yaml#/components/schemas/DataReportingCondition'
minItems: 0
reportingRules:
readOnly: true
type: object
additionalProperties:
type: array
items:
$ref: 'TS26532_CommonData.yaml#/components/schemas/DataReportingRule'
minItems: 0
required:
- sessionId
- validUntil
- externalApplicationId
- supportedDomains
- samplingRules
- reportingConditions
- reportingRulesM526512-ha0/TS26512_M5_ServiceAccessInformation.yaml: ServiceAccessInformationResource:
description: "A representation of a Service Access Information resource."
type: object
required:
- provisioningSessionId
- provisioningSessionType
properties:
provisioningSessionId:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
provisioningSessionType:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ProvisioningSessionType'
streamingAccess:
type: object
properties:
entryPoints:
type: array
items:
$ref: '#/components/schemas/M5MediaEntryPoint'
eMBMSServiceAnnouncementLocator:
$ref: 'TS26512_CommonData.yaml#/components/schemas/AbsoluteUrl'
clientConsumptionReportingConfiguration:
type: object
required:
- serverAddresses
- locationReporting
- accessReporting
- samplePercentage
properties:
reportingInterval:
$ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
serverAddresses:
$ref: '#/components/schemas/ServerAddresses'
locationReporting:
type: boolean
accessReporting:
type: boolean
samplePercentage:
$ref: 'TS26512_CommonData.yaml#/components/schemas/Percentage'
dynamicPolicyInvocationConfiguration:
type: object
required:
- serverAddresses
- policyTemplateBindings
- sdfMethods
properties:
serverAddresses:
$ref: '#/components/schemas/ServerAddresses'
policyTemplateBindings:
type: array
minItems: 1
items:
type: object
required:
- externalReference
- policyTemplateId
properties:
externalReference:
type: string
policyTemplateId:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
sdfMethods:
type: array
items:
$ref: 'TS26512_CommonData.yaml#/components/schemas/SdfMethod'
minItems: 0
clientMetricsReportingConfigurations:
type: array
minItems: 1
items:
type: object
required:
- metricsReportingConfigurationId
- serverAddresses
- scheme
- samplePercentage
- samplingPeriod
- metrics
properties:
metricsReportingConfigurationId:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
serverAddresses:
$ref: '#/components/schemas/ServerAddresses'
sliceScope:
type: array
items:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
minItems: 1
scheme:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
dataNetworkName:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
reportingInterval:
$ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
samplePercentage:
$ref: 'TS26512_CommonData.yaml#/components/schemas/Percentage'
urlFilters:
type: array
items:
type: string
minItems: 1
samplingPeriod:
$ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
metrics:
type: array
items:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
networkAssistanceConfiguration:
type: object
required:
- serverAddresses
properties:
serverAddresses:
$ref: '#/components/schemas/ServerAddresses'
clientEdgeResourcesConfiguration:
type: object
required:
- easDiscoveryTemplate
properties:
eligibilityCriteria:
$ref: 'TS26512_CommonData.yaml#/components/schemas/EdgeProcessingEligibilityCriteria'
easDiscoveryTemplate:
$ref: '#/components/schemas/EASDiscoveryTemplate'
easRelocationRequirements:
$ref: '#/components/schemas/M5EASRelocationRequirements'26512-ha0/TS26512_M5_NetworkAssistance.yaml: NetworkAssistanceSession:
description: "A representation of a Network Assistance Session resource."
type: object
required:
- naSessionId
- provisioningSessionId
- serviceDataFlowDescriptions
properties:
naSessionId:
readOnly: true
allOf:
- $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
provisioningSessionId:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
serviceDataFlowDescriptions:
type: array
items:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ServiceDataFlowDescription'
minItems: 1
mediaType:
$ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MediaType'
policyTemplateId:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
requestedQoS:
$ref: 'TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification'
recommendedQoS:
readOnly: true
allOf:
- $ref: 'TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification'
notficationURL:
readOnly: true
allOf:
- $ref: 'TS26512_CommonData.yaml#/components/schemas/AbsoluteUrl'26512-ha0/TS26512_M5_MetricsReporting.yaml: The endpoint is defined here, but the report body has no detailed schema in this OpenAPI file 26512-ha0/TS26512_M5_DynamicPolicies.yaml: DynamicPolicy:
description: "A representation of a Dynamic Policy resource."
type: object
required:
- dynamicPolicyId
- policyTemplateId
- serviceDataFlowDescriptions
- provisioningSessionId
properties:
dynamicPolicyId:
readOnly: true
allOf:
- $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
policyTemplateId:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
serviceDataFlowDescriptions:
type: array
items:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ServiceDataFlowDescription'
mediaType:
$ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MediaType'
provisioningSessionId:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
qosSpecification:
$ref: 'TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification'
enforcementMethod:
readOnly: true
type: string
enforcementBitRate:
readOnly: true
type: integer26512-ha0/TS26512_M5_ConsumptionReporting.yaml: ConsumptionReport:
description: "A representation of a Consumption Report."
type: object
required:
- mediaPlayerEntry
- reportingClientId
- consumptionReportingUnits
properties:
mediaPlayerEntry:
$ref: 'TS26512_CommonData.yaml#/components/schemas/AbsoluteUrl'
reportingClientId:
type: string
consumptionReportingUnits:
type: array
items:
$ref: '#/components/schemas/ConsumptionReportingUnit'
ConsumptionReportingUnit:
description: "A Consumption Reporting Unit."
type: object
required:
- mediaConsumed
- startTime
- duration
properties:
mediaConsumed:
type: string
clientEndpointAddress:
$ref: 'TS26512_CommonData.yaml#/components/schemas/EndpointAddress'
serverEndpointAddress:
$ref: 'TS26512_CommonData.yaml#/components/schemas/EndpointAddress'
startTime:
$ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
duration:
$ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
locations:
type: array
items:
$ref: 'TS26512_CommonData.yaml#/components/schemas/TypedLocation'
minItems: 1 |
|
This message summarizes the outcome of the call involving @davidjwbbc, @rjb1000, and me. It is intended to record the main points for further discussion. 5GMS AFInterfaces not required in the AF:
Interfaces needed in the AF:
Questions:
Answer: For flexibility of deployment, the ability to configure different IP addresses and ports for R4, R5, and R6 is highly desirable. Different data exposure policies may exist at the different reference points.
Answer: Yes. This is feasible and is the recommended approach. DCAF integration should be configurable at runtime through the presence/absence of the relevant stanzas in the msaf.yaml configuration file, allowing the additional functionality to be enabled or disabled as needed.
As an example, a Communication Record has already been implemented in the 5GMS AF. This implementation serves as a reference for the DCAF integration. A corresponding mechanism would need to be implemented for every M5 data structure to transfer the data from M5 to DCAF. The existing TS 26.532 Communication Record implementation illustrates how this could be designed and integrated as a handler for each 5GMS feature; the details can be derived from the code. Open point: @dsilhavy must confirm whether a full DCAF integration is intended. Open5GS Core? (NWDAF)
The Open5GS Core currently does not include an NWDAF implementation. Therefore, implementing an R5 client would require implementing an NWDAF, which is outside the scope of this project. In practice, R5 and R6 use the same API: the only distinction is the source of the subscription:
5GMS AP
The name “AF” is a little confusing in this context. It could also simply be called an Event Consumer; this is only a naming choice. UESince R2 is not instantiated in Release 17, an R2 client in the UE is not required. However, with the upcoming 5GMS Release 18/19 uplift of the 5GMS AF, implementing it early is perfectly fine. It can be considered an optional task for now. Create a GitHub issue to add the R2 client implementation to the Media Session Handler backlog. The implementation can be treated as an optional work item for now and should be addressed as part of the 5GMS Release 18 uplift, where an R2 client component will be required. Uplift to 5GMS AFThe uplift to the 5GMS AF can happen before or after the integration of DCAF. However, we have decided that we will first integrate DCAF into the 5GMS AF before considering the uplift. |
|
Thanks for the summary @ErikGaida. Regarding your question:
That should be goal but I suggest to break it down into small incremental steps and PRs. Create a high level issue with subissues for the individual structures. Then tackle them one by one in small PRs. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
In 3GPP TS 26.501 V17.10.0, clause 4.7.1 describes R2 as follows:
In 3GPP TS 26.501 V18.9.0, clause 4.7.1 describes R2 as follows:
The DCAF implementation itself is not the issue here. The question is whether the R2 reference point is instantiated and exposed by the 5GMS architecture.
According to Release 17, it is explicitly not instantiated. Since the current 5GMS AF is based on Release 17, my understanding is therefore that an R2 interface should not be exposed by this AF.
The 5GMSd Master Plan, on the other hand, is based on Release 18, where R2 is part of the 5GMS architecture.
A Release 17 5GMS AF should therefore not expose an R2 interface solely because it contains a Release 18-based DCAF implementation.
So the remaining question is specifically:
1.1 R2 exposure
Should an R2 interface be available from a Release 17 5GMS AF when that AF embeds a Release 18 DCAF, or should the externally exposed interfaces remain aligned with the Release 17 5GMS architecture?
1.2 Logical realisation of R2 via M5
When R2 is not instantiated, the specification states that it is logically realised through a combination of internal interfaces and the M5 reference point.
How is this logical mapping expected to work in practice? In particular, which component is responsible for translating or forwarding the corresponding R2 functionality via M5, and what would that flow look like?
DCAF operating modes
Would the 5GMS AF support two operating modes: one involving the DCAF and one operating without it?
Impact on M5
Does integrating the DCAF require any changes to the M5 interface or to the behaviour of the existing M5 APIs?
Clear Work Items
The main integration work for the DCAF concerns the implementation of the corresponding clients in the following components:
@davidjwbbc, @rjb1000, @dsilhavy and @jordijoangimenez
All reactions