...
- Each NetConf session should be terminated as soon as possible. Therefore any solution requiring a permanent NetConf session (e.g. for NetConf Notification) should be avoided.
(TODO: add here the reasons for such requirement/expectation. It may have something to do with avoiding TCP connection for better scale. However, for the required event streaming functionality, a permanent session is necessary. To be continued) - The NetConf client should be informed about the operational-status of the VES connection. In the case of misconfiguration, alarm events can not be sent to the MnS Consumer (alarm blindness). The only channel to troubleshoot such situation is via NetConf.
Subscription
Message
...
As a consequence of the protocol split for configuration (NetConf) and events (HTTP/VES) information form TCP header cant be re-used, and the entire VES end-point must be described in the Subscription request message. Under the assumption that not every MnS Consumer is interested about every VES message, a filter can be applied to the Subscription request message. If no filter is set, all supported VES messages by the MnS Provider (ME) will be forwarded.
There should be three kinds of filters.
- VES-Domain-Filter
A list of all VES domains the MnS Consumer is interested. - Subtree-Filter
A filter analog to RFC6241 chapter 6. - xPath-Filter
A filter analog to RFC6241 chapter 8.9.
The MnS Consumer is responsible for a correct filter setting, in case the combination for all three filters lead to the consequence that no VES message is sent to the MnS Consumer, then the MnS Consumer is simply not updated, even the subscription operational-status indicates "ok".
Proposal: not aligned yet! Very likely to be changed - I mean: for sure!!!
MOI: Subscription
- administrative-status: ENUM = {"unlocked", "locked"; default: "unlocked"}; ACCESS: read-write; OPTIONAL
- operational-status: ENUM = {"enabled", "disabled"}; ACCESS: read-only
- ves-end-point: object; ACCESS: read-write; MANDATORY
- protocol: ENUM = {"http", "https"; default "https" }
- host:
- Fully qualified domain name OR
- IP Address (IP version: v4 or v6)
- port: integer = {0..65535 }
- cert-for-authorization: Open: string or binary or ...; MANDATORY, when protocol=https
- pass-phrase: string; OPTIONAL
- compression: boolean; default false
- filter: object; OPTIONAL
- ves-domain: list of an extensible ENUM according to supported VES message specification; ACCESS: read-write; OPTIONAL;
- subtree: string; ACCESS: read-write; OPTIONAL; Open: support of multiple subtrees?)
- x-path-expression: ACCESS: read-write; OPTIONAL; Open: support of multiple subtrees?)
Message flow
Due to the Design Guidelines above the operational-status of the subscription can not be handled asynchronously. The operational-status must be given in the NetConf response.
...
Figure
PlantUml
...
title | Click here to view PlantUml code... |
---|
flow
Due to the Design Guidelines above the operational-status of the subscription can not be handled asynchronously. The operational-status must be given in the NetConf response.
- Establish a NetConf session
A secure communication channel is required to establish a NetConf session. This can be done via Secure Shell (SSH) connection (RFC6242) or via Transport Layer Security (TLS) (RFC5539).
Due to the fact that O-RAN-Alliance requires TLS for HTTP traffic, it is preferred and recommended to use also TLS for NetConf. - Subscribe for VES events
Open: The details about the NetConf operation and the exact data structure are currently (2019-07-28) under discussion. The results of this discussion will be updated later here. - Inform VES client about a new subscription
An MnS Provider internal mechanism is necessary to verify the VES configuration. - Check VES connectivity
The verification of the VES communication channel id done by sending a VES heartbeat.
Note: If the MnS Consumer does not subscribe for VES heartbeats, then an HTTP-POST with an empty body should be send. The expected response is "HTTP status: 400 - Bad request". If this is the case the operational-status of the subscription should be mapped to "200 - Ok". - Response from VES server
Based on the response from the VES-HTTPS-Server (TCP/TLS/HTTP-POST/VES) the operational-status attribute value of Managed Object instance (MOI) representing the subscription will be updated and exposed as attribute value change to all subscribers.- SUCCESS
The HTTP response codes 20x indicate that the VES connection can be established and the subscription operational-status attribute will be changed to the value of the HTTP-status (integer). - FAILED
The HTTP response codes different from 20x may require operator actions. Also, in this case, the subscription operational-status attribute will be changed to the value of the HTTP-status (integer)
Open: is a textual status attribute useful? e.g. status: ok and status: "failed" or status: "failed (connection refused)" - Assumption; no - such translation is not subject of an OAM interface, it is subject of customer documentation and/or user interface (UI).
- SUCCESS
- Inform NetConf server about the status of the VES connection
The NetConf server must be triggered, to response the correct operational-status back to the MnS Consumer. - NetConf response
The NetConf server sends a response including the VES connection operational-status of the subscription.
Open: Shall the response also include all other attributes of the MOI representing the subscription? - Terminate NetConf session
Once the NetConf client received the NetConf response or the NetConf response timed out, the NetConf session should be actively terminated.
Note: All ODL based NetConf clients until release "Sodium" do not support such functionality yet - Also the ODL based implementation by ONAP CCSDK does not support such function.
It is currently (2019-07-28) under discussion, which of the involved open-source projects should implement such function - candidates are ODL, ONAP-CCSDK, ONAP-SDNC, ONAP-SDN-R, O-RAN-SC-NON-RT-RIC or O-RAN-SC-OAM. (TODO: add OAM Jira to track it). As a consequence, it is very likely that O-RAN-SC release A does not support the automated termination of the NetConf session after NetConf responses.
Figure
PlantUml
Expand | ||
---|---|---|
| ||
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' |
Message data
As a consequence of the protocol split for configuration (NetConf) and events (HTTP/VES) information form TCP header cant be re-used, and the entire VES end-point must be described in the Subscription request message. Under the assumption that not every MnS Consumer is interested about every VES message, a filter can be applied to the Subscription request message. If no filter is set, all supported VES messages by the MnS Provider (ME) will be forwarded.
There should be three kinds of filters.
- VES-Domain-Filter
A list of all VES domains the MnS Consumer is interested. - Subtree-Filter
A filter analog to RFC6241 chapter 6. - xPath-Filter
A filter analog to RFC6241 chapter 8.9.
The MnS Consumer is responsible for a correct filter setting, in case the combination for all three filters lead to the consequence that no VES message is sent to the MnS Consumer, then the MnS Consumer is simply not updated, even the subscription operational-status indicates "ok".
Proposal: not aligned yet! Very likely to be changed - I mean: for sure!!!
MOI: Subscription
- administrative-status: ENUM = {"unlocked", "locked"; default: "unlocked"}; ACCESS: read-write; OPTIONAL
- operational-status: ENUM = {"enabled", "disabled"}; ACCESS: read-only
- ves-end-point: object; ACCESS: read-write; MANDATORY
- protocol: ENUM = {"http", "https"; default "https" }
- host:
- Fully qualified domain name OR
- IP Address (IP version: v4 or v6)
- port: integer = {0..65535 }
- cert-for-authorization: Open: string or binary or ...; MANDATORY, when protocol=https
- pass-phrase: string; OPTIONAL
- compression: boolean; default false
- filter: object; OPTIONAL
- ves-domain: list of an extensible ENUM according to supported VES message specification; ACCESS: read-write; OPTIONAL;
- subtree: string; ACCESS: read-write; OPTIONAL; Open: support of multiple subtrees?)
- x-path-expression: ACCESS: read-write; OPTIONAL; Open: support of multiple subtrees?)
Un-subscription
Message flow
...