Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Updated Sample(s) 5 - 8 based on DCAEGEN2-130 and subtasks

cdap-tca-hi-lo: a TCA application enhanced for Amsterdam/ONAP R1

This page is intended to give a broad overview of a microservice which has been onboarded with the DCAE platform and should be considered the "launch page" for others to find out basic information about your microservice.  "Others" will include testers, DCAE/ASDC Service Designers, team members from other subsystems (Policy, CLAMP), etc. 

Name:

cdap-tca-hi-lo

Synopsis/Description:

The cdap-tca-hi-lo app was first delivered as part of ONAP R0.  In that release, it was intended to be an application that established a software architecture for building CDAP applications that demonstrate sufficient unit test coverage and reusable libraries for ingesting DMaaP MR feeds formatted according to the VES standard.  Functionally, it performs a simple comparison of an incoming performance metric(s) against both a high and low threshold.

In the Amsterdam release, this microservice will be enhanced roadmap to meet the release requirements.  The code will be used in the following ONAP use cases:

  • Enhance TCA app to support R1 vCPE use case (requires new configuration model)
    • also needs to support the ONAP R1 vFW, vDNS/vLB use cases
      • unchanged from R0 DCAE analytics perspective; primary difference is the deployment of the TCA app is via CLAMP and the new DCAE controller

Gerrit:

...


Detailed Description:

This CDAP application is driven by the VES collector which outputs to Message Router.  This Message Router topic is the source for the CDAP application which will read each incoming message. If a message meets the Common Event Format (CEF, v28.3) as specified by the VES 5.3 standard (AttServiceSpecification-VesEventListener-v5.3.docx, Rev: 5.3, 6/22/17), it will be parsed and if it contains a message which matches the policy configuration for a given metric (denoted primarily by the "eventName" and the "fieldPath"), the value of the metric will be compared to the "thresholdValue".  If that comparison indicates that a Control Loop Event Message should be generated, the application will output the alarm to the Message Router Sink topic in a format that matches the interface spec defined in the ONAP Control Loop Operational Policy (see section titled "Control Loop Event Messages").

Assumptions:

TCA output will be similar to R0 implementation, where CL event will be triggered each time threshold rules are met.

  • Support for ABATEMENT event is not strictly necessary in the vFW or vDNS/vLB use cases as the Policy team has an "ABATEMENT not expected" configuration setting.  In the context of the vCPE use case, the CLEAR event (aka ABATED event) is driven by a measured metric (i.e. packet loss equal to 0) rather than by the lapse of a threshold crossing event over some minimum number of measured intervals.  Thus, this requirement can be accommodated by use of the low threshold with a policy of "direction =  0".  Hence, for this release, the cdap-tca-hi-lo implementation will keep only the minimal state needed to correlate an ABATED event with the corresponding ONSET event.  This correlation will be indicated by the requestID in the Control Loop Event Message.

CDAP Programming Paradigm

The ONAP R0 version of this microservice was built using the flowlet paradigm.  We have also successfully built it as a batch pipeline.  For Amsterdam/ONAP R1, the code has been refactored to allow for delivery as either a flowlet or a batch pipeline.  We expect that for this release the implementation will stay with the flowlet version since other parts of the DCAE platform do not yet support CDAP pipelines.

Public APIs:

MR Interface - Source

The source interface to TCA is Message Router; the input topic is expected to contain CEF messages (v28.3) as defined in the VES specification.  Sample 1 and Sample 2 contain sample data based on the known schema in this spec as of 8/9/17.  This data can be used as a guide for planning and development, but should not be considered authoritative for any of the use cases.


Sample 1 - Sample data for vFW and vDNS use cases; downloadable: ves5.3-measurement-vf5vdns.txt

...

As compared to the ONAP R0 release where the configuration policy was flattened into a series of key-value pairs, in the ONAP R1 release, such config info will be passed from the controller to the CDAP app as a complex json object.  A design goal for creating the schema for this policy model was to insure that the model was extensible so that a single instance of TCA could handle one or more use cases without alteration to the schema.  That said, for the Amsterdam/ONAP R1 release, we are expecting to have a single instance of TCA deployed via CLAMP for each use case.  Samples 5 through 7 illustrate a sample config policy that is expected with each use case while Sample 8 shows how a single instance could receive the policy config for all use cases.  (see also JIRA DCAEGEN2-130 and Policy R1 Amsterdam Functional Test Cases).


Sample 5 - Sample Policy, as Complex Json, Illustrating the vFW use case

 {

  "domain": "measurementsForVfScaling",

  "metricsPerEventName": [

    {

     
Expandcode
languagejs
titleSample Policy for vFW use case
{
  "domain": "measurementsForVfScaling",

  "metricsPerEventName": [
    {
      "eventName": "vFirewallBroadcastPackets",
     

	  "controlLoopSchemaType": "VNF",
     

      "policyScope": "DCAE",
     

      "policyName": "DCAE.Config_tca-hi-lo",
     

      "policyVersion": "v0.0.1",
     


      "thresholds":
[

        {

         
 [
        {
          "closedLoopControlName": "
CL
ControlLoop-
FRWL
vFirewall-
TRAFFIC
d0a1dfc6-
SIG
94f5-
d925ed73
4fd4-
8231-4d02-9545-db4e101f88f8",         
a5b5-4630b438850a",
          "version": "1.0.2",
         

          "fieldPath": "$.event.measurementsForVfScalingFields.
vNicPerformanceArray
vNicUsageArray[*].
receivedBroadcastPacketsAccumulated
receivedTotalPacketsDelta",
         

          "thresholdValue":
4000,         
 300,
          "direction": "LESS_OR_EQUAL",
         

          "severity": "MAJOR",
         

		  "closedLoopEventStatus": "ONSET"

        },

        {

         

        },
        {
          "closedLoopControlName": "
CL
ControlLoop-
FRWL
vFirewall-
TRAFFIC
d0a1dfc6-
SIG
94f5-
d925ed73
4fd4-
8231-4d02-9545-db4e101f88f8",         
a5b5-4630b438850a",
          "version": "1.0.2",
         

          "fieldPath": "$.event.measurementsForVfScalingFields.
vNicPerformanceArray
vNicUsageArray[*].
receivedBroadcastPacketsAccumulated
receivedTotalPacketsDelta",
         

          "thresholdValue":
20000,         
 700,
          "direction": "GREATER_OR_EQUAL",
         

          "severity": "CRITICAL",
         

		  "closedLoopEventStatus": "ONSET"

        }

      ]

    },

  ]


        }
      ]
    }
  ]

}


Sample 6 - Sample Policy, as Complex Json, Illustrating the vDN/vLB use case

{

 
Expand
Code Block
languagejs
titlevDNS/vLB use case
{
  "domain": "measurementsForVfScaling",
 


  "metricsPerEventName":
[

    {

     
 [
    {
      "eventName": "vLoadBalancer",
     

	  "controlLoopSchemaType": "VM",
     

      "policyScope": "DCAE",
     

      "policyName": "DCAE.Config_tca-hi-lo",
     

      "policyVersion": "v0.0.1",
     

      "thresholds":
[

        {

         
 [
        {
          "closedLoopControlName": "CL-LBAL-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A",
         

          "version": "1.0.2",
         

          "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
         

          "thresholdValue":
500,         
 300,
          "direction": "
LESS
GREATER_OR_EQUAL",
         

          "severity": "
MAJOR
CRITICAL",
         

		  "closedLoopEventStatus": "ONSET"

        },

        {

          "closedLoopControlName": "CL-LBAL-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A",

          "version": "1.0.2",

          "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",

          "thresholdValue": 5000,

          "direction": "GREATER_OR_EQUAL",

          "severity": "CRITICAL",

          "closedLoopEventStatus": "ONSET"

        }

      ]

    }

  ]

}

Sample 7 - Sample Policy, as Complex Json, Illustrating the vCPE use case

Expand

{

  "domain": "measurementsForVfScaling",

  "metricsPerEventName": [

    {

      "eventName": "vCPEvGMUXPacketLoss",

      "controlLoopSchemaType": "VM",

      "policyScope": "DCAE",

      "policyName": "DCAE.Config_tca-hi-lo",

      "policyVersion": "v0.0.1",

      "thresholds": [

        {

          "closedLoopControlName": "CL-vCPEvGMUX-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241ABA1",

          "version": "1.0.2",

          "fieldPath":

        }
      ]
    }
  ]
  
}


Sample 7 - Sample Policy, as Complex Json, Illustrating the vCPE use case

Code Block
languagejs
titlevCPE Config Policy
{
  "domain": "measurementsForVfScaling",

  "metricsPerEventName": [
	{
      "eventName": "Measurement_vGMUX",
	  "controlLoopSchemaType": "VNF",
      "policyScope": "DCAE",
      "policyName": "DCAE.Config_tca-hi-lo",
      "policyVersion": "v0.0.1",
      "thresholds": [
        {
          "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
          "version": "1.0.2",
          "fieldPath": "$.event.measurementsForVfScalingFields.
vNicPerformanceArray
additionalMeasurements[*].arrayOfFields[0].
receivedDiscardedPacketsDelta
value",
         

          "thresholdValue": 0,
         

          "direction": "EQUAL",
         

          "severity": "MAJOR",
         

		  "closedLoopEventStatus": "ABATED

        },

        {

         

        },
        {
          "closedLoopControlName": "
CL
ControlLoop-
vCPEvGMUX
vCPE-
TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241ABA1",         
48f0c2c3-a172-4192-9ae3-052274181b6e",
          "version": "1.0.2",
         

          "fieldPath": "$.event.measurementsForVfScalingFields.
vNicPerformanceArray
additionalMeasurements[*].
receivedDiscardedPacketsDelta",         
arrayOfFields[0].value",
          "thresholdValue":
1000,         
 0,
          "direction": "GREATER
_OR_EQUAL
",
         

          "severity": "CRITICAL",
         

		  "closedLoopEventStatus": "ONSET"

        }

      ]

    }

  ]


        }
      ]
    }
  ]

}


Sample 8 - Sample Policy, Illustrating How the Policy Model is Extensible to More than One Use Case

...

{

...

Code Block
languagejs
titleSample Policy for all Use Cases
{
  "domain": "measurementsForVfScaling",
 


  "metricsPerEventName":
[

    {

     
 [
    {
      "eventName": "vFirewallBroadcastPackets
",     
",
	  "controlLoopSchemaType": "VNF",
      "policyScope": "DCAE",
     

      "policyName": "DCAE.Config_tca-hi-lo",
     

      "policyVersion": "v0.0.1",
     


      "thresholds":
[

        {

         
 [
        {
          "closedLoopControlName": "
CL
ControlLoop-
FRWL
vFirewall-
LOW
d0a1dfc6-
TRAFFIC
94f5-
SIG
4fd4-
d925ed73-8231-4d02-9545-db4e101f88f8",

          "controlLoopSchemaType": "VNF",

          "version":
a5b5-4630b438850a",
          "version": "1.0.2",
         

          "fieldPath": "$.event.measurementsForVfScalingFields.
vNicPerformanceArray
vNicUsageArray[*].
receivedBroadcastPacketsAccumulated
receivedTotalPacketsDelta",
         

          "thresholdValue":
4000,         
 300,
          "direction": "LESS_OR_EQUAL",
         

          "severity": "MAJOR",
         

		  "closedLoopEventStatus": "ONSET"

        },

        {

         

        },
        {
          "closedLoopControlName": "
CL
ControlLoop-
FRWL
vFirewall-
HIGH
d0a1dfc6-
TRAFFIC
94f5-
SIG
4fd4-
EA36FE84-9342-5E13-A656-EC5F21309A09",

          "controlLoopSchemaType": "VNF",

          "version":
a5b5-4630b438850a",
          "version": "1.0.2"
,         
,
          "fieldPath": "$.event.measurementsForVfScalingFields.
vNicPerformanceArray
vNicUsageArray[*].
receivedBroadcastPacketsAccumulated
receivedTotalPacketsDelta",
         

          "thresholdValue":
20000,

          "direction": "GREATER_OR_EQUAL",

          "severity": "CRITICAL",

          "closedLoopEventStatus": "ONSET"

        }

      ]

    },

    {

      "eventName": "vLoadBalancer",

      "policyScope": "DCAE",

      "policyName": "DCAE.Config_tca-hi-lo",

      "policyVersion": "v0.0.1",

      "thresholds": [

        {

          "closedLoopControlName": "CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A",

          "controlLoopSchemaType": "VM",

          "version": "1.0.2",

          "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",

          "thresholdValue": 500,

          "direction": "LESS_OR_EQUAL",

          "severity": "MAJOR",

          "closedLoopEventStatus": "ONSET"

        },

        {

          "closedLoopControlName": "CL-LBAL-HIGH-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B",

          "controlLoopSchemaType": "VM",

          "version":
 700,
          "direction": "GREATER_OR_EQUAL",
          "severity": "CRITICAL",
		  "closedLoopEventStatus": "ONSET"
        }
      ]
    },

    {
      "eventName": "vLoadBalancer",
	  "controlLoopSchemaType": "VM",
      "policyScope": "DCAE",
      "policyName": "DCAE.Config_tca-hi-lo",
      "policyVersion": "v0.0.1",
      "thresholds": [
        {
          "closedLoopControlName": "CL-LBAL-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A",
          "version": "1.0.2",
         

          "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
         

          "thresholdValue":
5000,         
 300,
          "direction": "GREATER_OR_EQUAL",
         

          "severity": "CRITICAL",
         

		  "closedLoopEventStatus": "ONSET"

        }

      ]

    }

    {

      "eventName": "vCPEvGMUXPacketLoss",

     

        }
      ]
    },

	{
      "eventName": "Measurement_vGMUX",
	  "controlLoopSchemaType": "VNF",
      "policyScope": "DCAE",
     

      "policyName": "DCAE.Config_tca-hi-lo",
     

      "policyVersion": "v0.0.1",

      "thresholds": [

        {

         

      "thresholds": [
        {
          "closedLoopControlName": "
CL
ControlLoop-
vCPEvGMUX
vCPE-
LOW
48f0c2c3-
TRAFFIC
a172-
SIG
4192-
FB480F95-A453-6F24-B767-FD703241ABA1",

          "controlLoopSchemaType": "VM",

          "version":
9ae3-052274181b6e",
          "version": "1.0.2",
         

          "fieldPath": "$.event.measurementsForVfScalingFields.
vNicPerformanceArray
additionalMeasurements[*].
receivedDiscardedPacketsDelta",         
arrayOfFields[0].value",
          "thresholdValue": 0,
         

          "direction": "EQUAL",
         

          "severity": "MAJOR",
         

		  "closedLoopEventStatus": "ABATED
"

        },

        {

         

        },
        {
          "closedLoopControlName": "
CL
ControlLoop-
vCPEvGMUX
vCPE-
HIGH
48f0c2c3-
TRAFFIC
a172-
SIG
4192-
0C5920A6-B564-8035-C878-0E814352BCB2",

          "controlLoopSchemaType": "VM",

          "version":
9ae3-052274181b6e",
          "version": "1.0.
2",          "
2",
          "fieldPath": "$.event.measurementsForVfScalingFields.
vNicPerformanceArray
additionalMeasurements[*].arrayOfFields[0].
receivedDiscardedPacketsDelta
value",
         

          "thresholdValue":
1000,         
 0,
          "direction": "GREATER
_OR_EQUAL
",
         

          "severity": "CRITICAL",
         

		  "closedLoopEventStatus": "ONSET"

        }

      ]

    }

    

  ]


        }
      ]
    }
	
  ]

}


SME(s):

Alexei Nekrassov

Sandeep Singh

...