Table of Contents | ||
---|---|---|
|
Introduction
The PNF Registration and Re-registration Notification is generated whenever the a CPE is plugged into the network either for the first time (registration) or whenever the CPE is plugged into a different interface of an access node in the network (re-registration..
Upon reception of the notification within ONAP by a DCAE collector, the notification is mapped into a VES event and placed on the DMaaP bus for processing by the DCAE/PRH uS.
BBS Flows Cross Reference
The PNF Registration notification is used within the following use case scenarios:
PNF Registration and Re-registration Flow
Gliffy Diagram | ||||
---|---|---|---|---|
|
Figure 1. BBS PNF Registration and Re-registration Notification Flow Diagram
Here are the flow by steps (WIP):
10) Access SDN M&C reports the PNF registration event to DCAE/PRH
- This notification may be sent to the Restconf VES collector for translation and mapping into the PNF registration VES event as described here.
20) DCAE/PRH then processes the PNF registration event logic where PRH determines if the event is a registration or re-registration event.
- The determination if this event is a registration or registration for starts or if the PNF has already registered with ONAP.
- If the ONT/PNF is re-registered, a pnfUpdate event with pnf-id and PON UNI is produced by PRH onto DMAAP.
30) For the PNF re-registration, the UpdateServiceMSvc
30.1) consumes pnfEvent from DMAAP,
30.2) looks up the service-instance-id by the pnd-id (ont-SN) ,
30.3) produces a Nomadic ONT event with service-instance-id and PON UNI, OLT (??) to50 DMAAP
40) Policy consumes the Nomadic ONT event and calls SDNC API with input of the service-instance-id along with the new PON UNI/OLT, etc.
50) SDNC API conducts the service resource re-provisioning upon the ONT location change.
60) The PNF registration procedure continues from step 9 to completion
DCAE
PNF Registration Event
The BBS Use uses the ONAP pnfRegisration event with additional fields to identify the Access Node UNI to which the CPE is attached.
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
This pnfRegistration Event definition can be found at link: https://wiki.onap.org/display/DW/5G+-+PNF+Plug+and+Play#id-5G-PNFPlugandPlay-STAGE3-PNFREGISTRATIONVESEVENT The field definitions use for the BBS Use case for ONT Registration: eventName: pnfRegistration_<vendorName>_cpe eventId: unique per CPE proxied – incremented as described sourceName: <PNF-name/PNF correlation ID>: Format string: <Manufacturer OUI>-<SerialNumber> or <Manufacturer OUI>-<Model>-<SerialNumber> reportingEntityName:<thirdparty-sdnc-id> from esr request additionalFields: oltName: <OLT name> oltPONSlot: <OLT PON Slot> oltPONPort: <OLT PON Port> |
PRH Extension
PNF Re-registration Detection
Refer to PNF Re-registration detection logic handled in 5G use case by extension of PRH micro-service.
PNF for ONT in A&AI
Refer to ONT/PNF definition in ONT modeling.
PNF pnfUpdate Event
This event is the output of PRH active service detection and is consumed by BBS MS.
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Nomadic ONT Event/DCAE_CL_OUTPUT Event
This event triggers Policy engine to call SO API to modify the associated HSIA service.
DCAE_CL_OUTPUT Event
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "closedLoopEventClient": "DCAE.BBS_mSInstance", "policyVersion": "1.0.0.5", "policyName": "Nomadic_ONT", "policyScope": "service=HSIAService,type=SampleType,closedLoopControlName=CL-NomadicONT-d925ed73-8231-4d02-9545-db4e101f88f8", "target_type": "VM", "AAI": { "service-information.service-instance-id" : "service-instance-id-example", "pnf.ontSN" : "ontSN-example" //...what ever this is }, "closedLoopAlarmStart": 1484677482204798, "closedLoopEventStatus": "ONSET", "closedLoopControlName": "ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b", "version": "1.0.2", "target": "vserver.vserver-name", "requestID": "97964e10-686e-4790-8c45-bdfa61df770f", "from": "DCAE" } |
A&AI Enrichment
The moving ONT associated (through pnfName) service ID is looked up in A&AI and enriched in the A&AI portion of the above DCAE_CL_OUTPUT Event which trigger the operational policy in the operational policy defined below.
Policy
There are two options to author and execute the Nomadic ONT policy - Apex PDP(Pdp-A) or Drools PDP(Pdp-D).
Apex Engine Triggering
Apex PDP engine is configured to consumes the Nomadic ONT event/DCAE-CL_Event from DMAAP and call the SDNC Rest API to take resource re-provisioning actions.
PDP-A Configuration (JSON)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "engineServiceParameters": { "name": "MyApexEngine", "version": "0.0.1", "id": 45, "instanceCount": 4, "deploymentPort": 1234512561, "policyModelFileName": "examples/models/NomadicONT/NomadicONTPolicyModelpolicy/ONAPvCPEPolicyModel.json", "engineParameters": { "executorParameters": { "JAVASCRIPT": { "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" } }, } }, "contextParameters": { "eventInputParameters": { "DMaaPConsumer": { parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters", "schemaParameters": { "Avro": { "parameterClassName": "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters" } } } } }, "eventInputParameters": { "BBSInitConsumer": { "carrierTechnologyParameters": { "carrierTechnology": "FILE", "parameters": { "fileName": "config/BBSInitiationEvent.json" // ... example event } }, "eventProtocolParameters": { "eventProtocol": "JSON", "parameters": { "nameAlias": "closedLoopControlName", "versionAlias": "version", "sourceAlias": "from" } } }, "GuardRequestorConsumer": { "carrierTechnologyParameters": { "carrierTechnology": "RESTREQUESTOR", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters", "parameters": { "url": "http://192.168.144.235:54321/AAIAndGuardSim/sim/pdp/api/getDecision", "httpMethod": "POST", "restRequestTimeout": 2000 } }, "eventProtocolParameters": { "eventProtocol": "JSON" }, "eventName": "GuardResponseEvent", "eventNameFilter": "GuardResponseEvent", "requestorMode": true, "requestorPeer": "GuardRequestorProducer", "requestorTimeout": 500 }, "DCAEConsumer": { "carrierTechnologyParameters": { "carrierTechnology": "RESTCLIENT", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", "parameters": { "url": "http://<MSB_IP>:3904/dmaap_port>/unauthenticated.DCAE_CL_OUTPUT/APEX/1?timeout=60000" } }, "eventProtocolParameters": { "eventProtocol": "JSON", "parameters": { "nameAlias": "closedLoopControlName", "versionAlias": "version", "sourceAlias": "from" } } } }, "eventOutputParameters": { "logProducer": { "carrierTechnologyParameters": { "carrierTechnology": "FILE", "parameters": { "fileName": "/tmp/BBSEventsOut.json" } }, "eventProtocolParameters": { "eventProtocol": "JSON" } }, "GuardRequestorProducer": { "carrierTechnologyParameters": { "carrierTechnology": "RESTREQUESTOR", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters" }, "eventProtocolParameters": { "eventProtocol": "JSON" }, "eventNameFilter": "GuardRequestEvent", "requestorMode": true, "requestorPeer": "GuardRequestorConsumer", "requestorTimeout": 500 }, "SDNCProducer": { "carrierTechnologyParameters": { "carrierTechnology": "RESTCLIENT", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", "parameters": { "url": "http://<MSB_IP>:<DMaaP<sdnc_port>/events/toApex/APEX/NomadicONT?timeout=60000" <path-to-HSIA_Service-Resource-Update>" // ... how doesSDNC thisREST associated with the right event topic on DMAAP? Call API } }, "eventProtocolParameters": { "eventProtocol": "JSON" }, } "eventNameFilter": "APPCRestartVNFRequestEvent" }, "eventOutputParameters": { }, "SDNCPolicyLogProducer": { "carrierTechnologyParameters": { "carrierTechnology": "RESTCLIENT", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", "parameters": { "url": "http://<MSB_IP>:<SDNC<dmaap_Port>/<path-to-HSIA-Service-Resource-Update-api>" port>/events/POLICY_CL_MGT" } }, "eventProtocolParameters": { "eventProtocol": "JSON" }, } "eventNameFilter": "ControlLoopLogEvent" } } } |
Apex Policy for Nomadic ONT is created as following. It can be on-board as part of the service Tosca module at design time, distributed to an Apex PDP engine by the policy distribution engine through SDC.
Policy Schema
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Logic Artifacts
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Pdp-D Option
Operational Policy
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
ontrolLoop: version: 2.0.0 controlLoopName: ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b trigger_policy: unique-policy-id-16-ServiceModify timeout: 3600 abatement: false policies: - id: unique-policy-id-16-ResourceUpdate name: Resource Update description: actor: SDNC recipe: resourceUpdate target: type: VM retry: 3 timeout: 1200 success: final_success failure: final_failure failure_timeout: final_failure_timeout failure_retries: final_failure_retries failure_exception: final_failure_exception failure_guard: final_failure_guard |
SDNC API/Recipe
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Design Time Artifacts
DCAE-DS
Micro-service Blueprints
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
CLAMP
Control Loop (Micro-service) Orchestration
There are basically 2 ways of CL creation and micro-service orchestration in BBS Nomadic ONT scenario.
- Restconf collector + VES Mapper + PRH + Policy Engine
- VES Collector + PRH + Policy Engine
Notes:
Interestingly, this is the first case where DCAE/Policy seem playing roles together in a non-closed/loop or service assurance in sense of usage/solution in ONAP domain, However, this does not really matter in the sense of micro services since service is a service as long as it provides the functionality that meets the requirements in a solution, An argument could be that Policy engine does not have to be introduced in this case, However, the important functionality for policy engine is to decouple action takers from the trigger pullers and ultimately establish robust policy driving on this platform w/o code change.