From 8a495f4de5487dbb3e5e943211be8e77fc8fde41 Mon Sep 17 00:00:00 2001 From: Hagop Bozawglanian Date: Sun, 7 Apr 2019 23:10:30 +0000 Subject: [PATCH] VNFRQTS - Update Ch 7 VES Change-Id: I043aa61670d06fdeffc030d060d5ec842116d3dd Issue-ID: VNFRQTS-609 Signed-off-by: Hagop Bozawglanian --- docs/Bulk_Data_Transfer_Mechv1.PNG | Bin 12968 -> 0 bytes docs/Bulk_Data_Transfer_Mechv1.png | Bin 0 -> 13198 bytes docs/Chapter7/Monitoring-And-Management.rst | 296 +++++++++++++++++----------- docs/Data_Model_For_Event_Records.png | Bin 31804 -> 73594 bytes docs/Protocol_Buffers_Driven_Model.png | Bin 14280 -> 14039 bytes docs/VES_JSON_Driven_Model.png | Bin 9218 -> 15419 bytes 6 files changed, 186 insertions(+), 110 deletions(-) delete mode 100644 docs/Bulk_Data_Transfer_Mechv1.PNG create mode 100755 docs/Bulk_Data_Transfer_Mechv1.png mode change 100644 => 100755 docs/Data_Model_For_Event_Records.png mode change 100644 => 100755 docs/Protocol_Buffers_Driven_Model.png mode change 100644 => 100755 docs/VES_JSON_Driven_Model.png diff --git a/docs/Bulk_Data_Transfer_Mechv1.PNG b/docs/Bulk_Data_Transfer_Mechv1.PNG deleted file mode 100644 index f97ce161d508b08895ceb3b7637de16440c23f7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12968 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 j|J46eMa|mO` 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 ZPF3_aLVo~0PyvA)Y@Lr*TK{?De*s0uNtOTr literal 0 HcmV?d00001 diff --git a/docs/Chapter7/Monitoring-And-Management.rst b/docs/Chapter7/Monitoring-And-Management.rst index 4607bf6..cc78f74 100755 --- a/docs/Chapter7/Monitoring-And-Management.rst +++ b/docs/Chapter7/Monitoring-And-Management.rst @@ -17,86 +17,85 @@ Monitoring & Management ----------------------- This section addresses data collection and event processing functionality that -is directly dependent on the interfaces provided by the xNFs’ APIs. These can -be in the form of asynchronous interfaces for event, fault notifications, and -autonomous data streams. They can also be synchronous interfaces for on-demand -requests to retrieve various performance, usage, and other event information. -It should be understood that events are well structured packages of -information, identified by an eventName, which are communicated to subscribers -who are interested in the eventName. Events are simply a way of communicating -well-structured packages of information to one or more instances of an Event -Listener service. - -The target direction for xNF interfaces is to employ APIs that are implemented -utilizing standardized messaging and modeling protocols over standardized -transports. Virtualized environments present a tremendous opportunity to -eliminate the need for proprietary interfaces for xNF provider equipment while +is directly dependent on the interfaces provided by the VNFs' or PNFs' APIs. +These can be in the form of asynchronous interfaces for event, fault +notifications, and autonomous data streams. They can also be synchronous +interfaces for on-demand requests to retrieve various performance, usage, and +other event information. It should be understood that events are well +structured packages of information, identified by an eventName, which are +communicated to subscribers who are interested in the eventName. Events are +simply a way of communicating well-structured packages of information to one +or more instances of an Event Listener service. + +The target direction for these interfaces is to employ APIs that are +implemented utilizing standardized messaging and modeling protocols over +standardized transports. Standardized environments (physical, virtual) present +a tremendous opportunity to eliminate the need for proprietary interfaces while removing the traditional boundaries between Network Management Systems and Element Management Systems. Additionally, virtualized NFs provide the ability to instrument networking applications by creating event records to test and monitor end-to-end data flow through the network, similar to what physical or virtual probes provide without the need to insert probes at various points in -the network. The xNF providers must be able to provide the aforementioned set -of required data directly to the ONAP collection layer using standardized +the network. Providers must be able to provide the aforementioned set of +required data directly to the ONAP collection layer using standardized interfaces. + Data Model for Event Records ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This section describes the data model for the collection of telemetry data from -xNFs by Service Providers (SPs) to manage xNF health and run-time life cycle. -This data model is referred to as the VES Data Model. The VES acronym -originally stood for Virtual-function Event Streaming, but VES has been -generalized to support network-function event streaming, whether virtualized or -not. +physical or virtual NFs by Service Providers (SPs) to manage NF health and +run-time life cycle. This data model is referred to as the VES Data Model. The +VES acronym originally stood for Virtual-function Event Streaming, but VES has +been generalized to support network-function event streaming, whether +virtualized or not. The VES Data Model describes a vendor-agnostic common vocabulary of event payloads. Vendor-specific, product-specific or service-specific data is supported by the inclusion of a flexible additional information field -structure. The VES Data Models' common vocabulary is used to drive -standard and automated data analytics (policy-driven analytics) within the -ONAP DCAE Framework. - -While this document is focused on specifying some of the records from the ONAP -perspective, there may be other external bodies using the same framework to -specify additional records. For example, OPNFV has a VES project that is -looking to specify records for OpenStack’s internal telemetry to manage +structure. The VES Data Models' common vocabulary is used to drive standard +and automated data analytics (policy-driven analytics) within the ONAP +DCAE Framework. + +While this document is focused on specifying some of the records from the +ONAP perspective, there may be other external bodies using the same framework +to specify additional records. For example, OPNFV has a VES project that is +looking to specify records for OpenStack's internal telemetry to manage application (xNFs), physical and virtual infrastructure (compute, storage, network devices, etc.) and virtual infrastructure managers (cloud controllers, -SDN controllers). It uses ONAP’s VES Agent to generate VES events from the xNF -and Intel’s collectD agent to generate infrastructure VES events. Note that any -configurable parameters for these data records (e.g., frequency, granularity, -policy-based configuration) will be managed using the "Configuration" framework -described in the prior sections of this document. The infrastructure metrics -have been funneled via the ONAP Multi-VIM Project and are now included in -current specifications. +SDN controllers). It uses ONAP's VES Agent to generate VES events from the NF +and Intel's collectD agent to generate infrastructure VES events. Note that +any configurable parameters for these data records (e.g., frequency, +granularity, policy-based configuration) will be managed using the +"Configuration" framework described in the prior sections of this document. +The infrastructure metrics have been funneled via the ONAP Multi-VIM Project +and are now included in current specifications. The Data Model consists of: - * Common Header Record: This data structure precedes each of the Technology - Independent and Technology Specific records sections of the data model. - - * Technology Independent Records: This version of the document specifies the - model for Fault, Heartbeat, Measurements, Notification, pnfRegistration, - State Change, Syslog, and Threshold Crossing Alerts records. In the - future, these may be extended to support other types of technology - independent records (work is currently progressing to define a new - Performance Domain that would be able to support already defined 3GPP - Metrics for xNF, e.g. 5G RAN device Use Case in Casablanca). Each of - these records allows additional fields (name/ value pairs) for - extensibility. The xNF provider may use these xNF provider-specific - additional fields to provide additional information that may be relevant - to the managing systems. - - * Technology Specific Records: This version of the document specifies the - model for Mobile Flow records, Signaling and Voice Quality records. - In the future, these may be extended to support other types of records - (e.g. Network Fabric, Security records, etc.). Each of these records - allows additional fields (name/value pairs) for extensibility. The xNF - provider can use these xNF-specific additional fields to provide - additional information that may be relevant to the managing systems. - A placeholder for additional technology specific areas of interest to - be defined in the future documents has been depicted. + - Common Header Record: This data structure precedes each of the + Technology Independent and Technology Specific records sections of + the data model. + + - Technology Independent Records: This version of the document specifies + the model for fault, heartbeat, measurement, notification, perf3gpp, + pnfRegistration, stateChange, syslog, and thresholdCrossingAlert (TCA) + records. In the future, these may be extended to support other types of + technology independent records. Each of these records allows additional + fields (name/value pairs) for extensibility. The NF provider may use these + NF provider-specific additional fields to provide additional information + that may be relevant to the managing systems. + + - Technology Specific Records: This version of the document specifies the + model for mobileFlow, sipSignaling and voiceQuality records. In the + future, these may be extended to support other types of records (e.g. + Network Fabric, Security records, etc.). Each of these records allows + additional fields (name/value pairs) for extensibility. The NF provider can + use these NF-specific additional fields to provide additional information + that may be relevant to the managing systems. A placeholder for additional + technology specific areas of interest to be defined in the future documents + has been depicted. |image0| @@ -109,14 +108,14 @@ The data structure for event records consists of: - a Common Event Header block; and -- zero (Heartbeat) or more technology independent domain blocks; or +- zero (heartbeat) or more technology independent domain blocks; or - - e.g. Fault, Measurements, Notification, PNF Registration, State Change, - Syslog, TCA, Other Fields etc. + - e.g. fault, measurement, notification, perf3gpp, pnfRegistration, + stateChange, syslog, TCA, otherFields etc. - technology specific domain blocks. - - e.g. Mobile Flow, Signaling, Voice Quality, etc. + - e.g. mobileFlow, sipSignaling, voiceQuality, etc. Common Event Header ~~~~~~~~~~~~~~~~~~~~~ @@ -154,40 +153,40 @@ sender and other identifying characteristics related to the domain and event. * ``vesEventListenerVersion`` - Version of the VES event listener API spec that this event is compliant with -Technology Independent Records – Fault Fields -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Technology Independent Records +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The current version of the data model supports the following technology independent event records: - * ``Fault`` - the Fault Record, describing a condition in the Fault domain, + * ``fault`` - the fault record, describing a condition in the fault domain, contains information about device failures. The fault event provides data such as the entity experiencing a fault, the severity, resulting status, etc. - * ``Heartbeat`` - the Heartbeat Record provides an optional structure for + * ``heartbeat`` - the heartbeat record provides an optional structure for communicating information about device health. Heartbeat records would only have the Common Event Header block. An optional heartbeat domain is available to specify information such as heartbeat interval and recommended action upon missing heartbeat interval. Heartbeat avoids the need to ping a device. A communication failure can be determined via missing heartbeat events being delivered to DCAE and appropriate action - (e.g. restart VM, rebuild xNF or create ticket) can be taken by DCAE + (e.g. restart VM, rebuild VNF or create ticket) can be taken by DCAE CLAMP. - * ``Measurements`` - the Measurements Record contains information about xNF - and xNF resource structure and its condition to help in the management of - the resources for purposes of capacity planning, elastic scaling, - performance management and service assurance. These are soft alarms - providing an opportunity for proactive maintenance. + * ``Measurements`` - the Measurements Record contains information about + PNF or VNF and PNF or VNF resource structure and its condition to help + in the management of the resources for purposes of capacity planning, + elastic scaling, performance management and service assurance. These + are soft alarms providing an opportunity for proactive maintenance. * ``Notification`` - the Notification Record provides a structure for - communicating notification information from the NF. It can contain + communicating notification information from the PNF or VNF. It can contain notification information related to the current operational state that is - reported by the NF. As an example, when cards or port name of the entity - have changed state. (e.g., offline -> online) Other use cases include - notification of file ready for collection using Bulk Data Transfer or - notification on configuration changes to a device. + reported by the PNF or VNF. As an example, when cards or port name of the + entity have changed state. (e.g., offline -> online) Other use cases + include notification of file ready for collection using Bulk Data Transfer + or notification on configuration changes to a device. * ``Other`` - the Other Record defines fields for events that do not have a defined domain but are needed to be collected and sent to DCAE. This @@ -195,30 +194,37 @@ independent event records: nested or opaque) and is purely intended to address miscellaneous needs such as addressing time-to-market considerations or other proof-of-concept evaluations. Hence, use of this record type is discouraged and should be - minimized. (Note: the Other domain could be used to create and test new + minimized. (Note: the Other domain could be used to create and test new domain ideas.) + * ``perf3gpp`` - the perf3gpp record provides a structure for communicating + information that supports 3GPP defined performance metrics. The perf3gpp + record can contain information from vendors, including measurement name, + measurement family, measured object class, description, collection method, + value ranges, unit of measure, triggering conditions and other measurement + information. + * ``pnfRegistration`` - the pnfRegistration Record provides a structure for registration of a physical network function. The pnfRegistration Record can contain information about attributes related to the physical network function including serial number, software revision, unit type and vendor name. - * ``State Change`` - the State Change Record provides a structure for - communicating information about data flow through the xNF. The State - Change Record can contain information about state change related to - physical device that is reported by the xNF. As an example, when cards or - port name of the entity that has changed state. Note: The Notification - Domain can also communicate similar information. + * ``stateChange`` - the State Change Record provides a structure for + communicating information about data flow through the PNF or VNF. The + State Change Record can contain information about state change related to + physical device that is reported by the PNF or VNF. As an example, when + cards or port name of the entity that has changed state. Note: The + Notification Domain can also communicate similar information. * ``Syslog`` - the Syslog Record provides a structure for communicating any - type of information that may be logged by the xNF. It can contain + type of information that may be logged by the PNF or VNF. It can contain information about system internal events, status, errors, etc. It is recommended that low volume control or session logs are communicated via a push mechanism, while other large volume logs should be sent via file transfer. - * ``Threshold Crossing Alert`` - the Threshold Crossing Alert (TCA) Record + * ``thresholdCrossingAlert`` - the Threshold Crossing Alert (TCA) Record provides a structure for communicating information about threshold crossing alerts. It uses data from the Measurement or a similar domain to watch for a Key Performance Indicator (KPI) threshold that has been @@ -398,7 +404,7 @@ minimizing changes to data delivery. The xNF **MUST** deliver event records to ONAP using the common transport mechanisms and protocols defined in this document. -The term ‘Event Record’ is used throughout this document to represent various +The term 'Event Record' is used throughout this document to represent various forms of telemetry or instrumentation made available by the xNFs including, faults, status events, various other types of xNF measurements and logs. @@ -425,8 +431,8 @@ data sets. prior to the on-boarding of the xNF into ONAP SDC Design Studio. -xNF Telemetry using VES/JSON Model -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +VNF or PNF Telemetry using VES/JSON Model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. req:: :id: R-659655 @@ -445,8 +451,8 @@ xNF Telemetry using VES/JSON Model Figure 2. VES/JSON Driven Model -xNF Telemetry using Google Protocol Buffers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +VNF or PNF Telemetry using Google Protocol Buffers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. req:: :id: R-697654 @@ -463,7 +469,7 @@ xNF Telemetry using Google Protocol Buffers |image2| -Figure 3. xNF Telemetry using Google Protocol Buffers +Figure 3. VNF or PNF Telemetry using Google Protocol Buffers **NOTE:** For high-volume xNF telemetry, native (binary) Google Protocol @@ -495,7 +501,7 @@ Bulk Telemetry Transmission |image3| -Figure 4. xNF Telemetry using Bulk Transmission +Figure 4. VNF or PNF Telemetry using Bulk Transmission **NOTE:** An optional VES mapper micro-service can be leveraged to to extract measurements and publish them as VES events. @@ -534,7 +540,7 @@ JSON The xNF, when leveraging JSON for events, **MUST** encode and serialize content delivered to ONAP using JSON (RFC 7159) plain text format. High-volume data is to be encoded and serialized using - `Avro `_, where the Avro [#7.4.1]_ data + `Avro `_, where the Avro data format are described using JSON. Note: @@ -543,26 +549,33 @@ Note: (option 1), as JSON has the advantage of having well-understood simple processing and being human-readable without additional decoding. Examples of moderate volume data sets include the fault alarms and performance - alerts, heartbeat messages, measurements used for xNF scaling and syslogs. - - Binary format using Avro is preferred for high volume data sets - (option 2) such as mobility flow measurements and other high-volume - streaming events (such as mobility signaling events or SIP signaling) - or bulk data, as this will significantly reduce the volume of data - to be transmitted. As of the date of this document, all events are - reported using plain text JSON and REST. + alerts, heartbeat messages, measurements used for VNF scaling and syslogs. + + - Binary format using Avro is preferred for high volume data sets (option 2) + such as mobility flow measurements and other high-volume streaming events + (such as mobility signaling events, mobility trace data or SIP signaling) + or bulk data, as this will significantly reduce the volume of data to be + transmitted. As of the date of this document, all events are reported + using plain text JSON and REST. + - Avro content is self-documented, using a JSON schema. The JSON schema is delivered along with the data content (http://avro.apache.org/docs/current/ ). This means the presence and position of data fields can be recognized automatically, as well as the data format, definition and other attributes. Avro content can be - serialized as JSON tagged text or as binary. In binary format, the - JSON schema is included as a separate data block, so the content is - not tagged, further compressing the volume. For streaming data, Avro - will read the schema when the stream is established and apply the - schema to the received content. + serialized as JSON tagged text or as binary. In binary format, the JSON + schema is included as a separate data block, so the content is not tagged, + further compressing the volume. For streaming data, Avro will read the + schema when the stream is established and apply the schema to the + received content. + + - In addition to the preferred delivery format (JSON), content delivered + from PNFs or VNFs to ONAP can be encoded and serialized using Google + Protocol Buffers (GPB). Please refer to the next section of this document + for additional information. In addition to the preferred method (JSON), content can be delivered -from xNFs to ONAP can be encoded and serialized using Google Protocol +from VNFs or PNFs to ONAP can be encoded and serialized using Google Protocol Buffers (GPB). Google Protocol Buffers (GPB) @@ -953,6 +966,69 @@ Bulk Performance Measurement Note: Recommended period is at least 24 hours. +PM Dictionary +^^^^^^^^^^^^^^ + +The Performance Management (PM) Dictionary is used by analytics applications +to interpret and process perf3gpp measurement information from vendors, +including measurement name, measurement family, measured object class, +description, collection method, value ranges, unit of measure, triggering +conditions and other information. The ultimate goal is for analytics +applications to dynamically process new and updated measurements based on +information in the PM Dictionary. + +The PM dictionary is supplied by NF vendors in two parts: + + - PM Dictionary Schema: specifies meta-information about perf3gpp + measurement events from that vendor. The meta-information is conveyed + using standard meta-information keywords, and may be extended to include + vendor-specific meta-information keywords. The PM Dictionary Schema may + also convey a range of vendor-specific values for some of the keywords. + + - PM Dictionary: defines specific perf3gpp measurements sent by vendor VNFs + or PNFs (each of which is compliant with a referenced PM Dictionary + Schema). + +Note: + + - A vendor may provide multiple versions of the PM Dictionary Schema and + refer to those versions from the PM Dictionary. + + - Please refer to the latest version of the VES Event Registration + specification for the listing of the PM Dictionary schema keywords, PM + Dictionary Schema example and PM Dictionary example. + + +FM Meta Data +^^^^^^^^^^^^^^ + +FM Meta Data enables vendors to provide meta information about FM events using +a set of standard keywords. FM Meta Data is conveyed in the YAML event +registration using the YAML Comment qualifier. The FM Meta Data section is +optional. + +FM Meta Data includes Alarm Meta Data and Fault Meta Data: + + - FM Meta Data keywords must be provided in 'hash format' as Keyword: Value. + + - FM Meta Data values containing whitespace must be enclosed in single + quotes. Successive keywords must be separated by commas. + + - Alarm Meta Data, if provided, shall be placed in the YAML comments + qualifier at the top of the event registration for the alarm. + + - Fault Meta Data, if provided, shall be placed in the YAML comments + qualifier of faultFields.alarmAdditionalInformation within each alarm. + +The above conventions will make machine processing of FM Meta Data Keywords +easier to perform. + +Note: + + - Please refer to the latest version of the VES Event Registration + specification for the listing of the FM Alarm Meta Data keywords, Fault + Meta Data keywords and FM Meta Data examples. + .. |image0| image:: ../Data_Model_For_Event_Records.png @@ -964,6 +1040,6 @@ Bulk Performance Measurement :width: 4.74in :height: 3.3in -.. |image3| image:: ../Bulk_Data_Transfer_Mechv1.PNG +.. |image3| image:: ../Bulk_Data_Transfer_Mechv1.png :width: 4.74in :height: 3.3in diff --git a/docs/Data_Model_For_Event_Records.png b/docs/Data_Model_For_Event_Records.png old mode 100644 new mode 100755 index 2c4abbddffbb2be0183426c03ccbdb3fb7df11c0..08b42fbaca3cc503e52fd262a793e7265bb5daee GIT binary patch literal 73594 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