draft-ietf-i2nsf-nsf-monitoring-data-model-15.txt | draft-ietf-i2nsf-nsf-monitoring-data-model-16.txt | |||
---|---|---|---|---|
Network Working Group J. Jeong, Ed. | Network Working Group J. Jeong, Ed. | |||
Internet-Draft P. Lingga | Internet-Draft P. Lingga | |||
Intended status: Standards Track Sungkyunkwan University | Intended status: Standards Track Sungkyunkwan University | |||
Expires: 19 August 2022 S. Hares | Expires: 23 September 2022 S. Hares | |||
L. Xia | L. Xia | |||
Huawei | Huawei | |||
H. Birkholz | H. Birkholz | |||
Fraunhofer SIT | Fraunhofer SIT | |||
15 February 2022 | 22 March 2022 | |||
I2NSF NSF Monitoring Interface YANG Data Model | I2NSF NSF Monitoring Interface YANG Data Model | |||
draft-ietf-i2nsf-nsf-monitoring-data-model-15 | draft-ietf-i2nsf-nsf-monitoring-data-model-16 | |||
Abstract | Abstract | |||
This document proposes an information model and the corresponding | This document proposes an information model and the corresponding | |||
YANG data model of an interface for monitoring Network Security | YANG data model of an interface for monitoring Network Security | |||
Functions (NSFs) in the Interface to Network Security Functions | Functions (NSFs) in the Interface to Network Security Functions | |||
(I2NSF) framework. If the monitoring of NSFs is performed with the | (I2NSF) framework. If the monitoring of NSFs is performed with the | |||
NSF monitoring interface in a standard way, it is possible to detect | NSF monitoring interface in a standard way, it is possible to detect | |||
the indication of malicious activity, anomalous behavior, the | the indication of malicious activity, anomalous behavior, the | |||
potential sign of denial-of-service attacks, or system overload in a | potential sign of denial-of-service attacks, or system overload in a | |||
skipping to change at page 1, line 46 ¶ | skipping to change at page 1, line 46 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on 19 August 2022. | This Internet-Draft will expire on 23 September 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
skipping to change at page 2, line 26 ¶ | skipping to change at page 2, line 26 ¶ | |||
described in Section 4.e of the Trust Legal Provisions and are | described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Revised BSD License. | provided without warranty as described in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Use Cases for NSF Monitoring Data . . . . . . . . . . . . . . 5 | 3. Use Cases for NSF Monitoring Data . . . . . . . . . . . . . . 5 | |||
4. Classification of NSF Monitoring Data . . . . . . . . . . . . 5 | 4. Classification of NSF Monitoring Data . . . . . . . . . . . . 5 | |||
4.1. Retention and Emission from NSFs . . . . . . . . . . . . 6 | 4.1. Retention and Emission from NSFs . . . . . . . . . . . . 6 | |||
4.2. Notifications for Events and Records . . . . . . . . . . 7 | 4.2. Notifications for Events and Records . . . . . . . . . . 8 | |||
4.3. Push and Pull for the retrieval of monitoring data from | 4.3. Push and Pull for the retrieval of monitoring data from | |||
NSFs . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | NSFs . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
5. Basic Information Model for Monitoring Data . . . . . . . . . 9 | 5. Basic Information Model for Monitoring Data . . . . . . . . . 9 | |||
6. Extended Information Model for Monitoring Data . . . . . . . 10 | 6. Extended Information Model for Monitoring Data . . . . . . . 10 | |||
6.1. System Alarms . . . . . . . . . . . . . . . . . . . . . . 11 | 6.1. System Alarms . . . . . . . . . . . . . . . . . . . . . . 11 | |||
6.1.1. Memory Alarm . . . . . . . . . . . . . . . . . . . . 11 | 6.1.1. Memory Alarm . . . . . . . . . . . . . . . . . . . . 11 | |||
6.1.2. CPU Alarm . . . . . . . . . . . . . . . . . . . . . . 11 | 6.1.2. CPU Alarm . . . . . . . . . . . . . . . . . . . . . . 11 | |||
6.1.3. Disk Alarm . . . . . . . . . . . . . . . . . . . . . 12 | 6.1.3. Disk (Storage) Alarm . . . . . . . . . . . . . . . . 12 | |||
6.1.4. Hardware Alarm . . . . . . . . . . . . . . . . . . . 12 | 6.1.4. Hardware Alarm . . . . . . . . . . . . . . . . . . . 12 | |||
6.1.5. Interface Alarm . . . . . . . . . . . . . . . . . . . 12 | 6.1.5. Interface Alarm . . . . . . . . . . . . . . . . . . . 13 | |||
6.2. System Events . . . . . . . . . . . . . . . . . . . . . . 13 | 6.2. System Events . . . . . . . . . . . . . . . . . . . . . . 13 | |||
6.2.1. Access Violation . . . . . . . . . . . . . . . . . . 13 | 6.2.1. Access Violation . . . . . . . . . . . . . . . . . . 13 | |||
6.2.2. Configuration Change . . . . . . . . . . . . . . . . 14 | 6.2.2. Configuration Change . . . . . . . . . . . . . . . . 14 | |||
6.2.3. Session Table Event . . . . . . . . . . . . . . . . . 15 | 6.2.3. Session Table Event . . . . . . . . . . . . . . . . . 15 | |||
6.2.4. Traffic Flows . . . . . . . . . . . . . . . . . . . . 15 | 6.2.4. Traffic Flows . . . . . . . . . . . . . . . . . . . . 15 | |||
6.3. NSF Events . . . . . . . . . . . . . . . . . . . . . . . 16 | 6.3. NSF Events . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.3.1. DDoS Detection . . . . . . . . . . . . . . . . . . . 16 | 6.3.1. DDoS Detection . . . . . . . . . . . . . . . . . . . 17 | |||
6.3.2. Virus Event . . . . . . . . . . . . . . . . . . . . . 17 | 6.3.2. Virus Event . . . . . . . . . . . . . . . . . . . . . 18 | |||
6.3.3. Intrusion Event . . . . . . . . . . . . . . . . . . . 18 | 6.3.3. Intrusion Event . . . . . . . . . . . . . . . . . . . 19 | |||
6.3.4. Web Attack Event . . . . . . . . . . . . . . . . . . 19 | 6.3.4. Web Attack Event . . . . . . . . . . . . . . . . . . 19 | |||
6.3.5. VoIP/VoCN Event . . . . . . . . . . . . . . . . . . . 19 | 6.3.5. VoIP/VoCN Event . . . . . . . . . . . . . . . . . . . 20 | |||
6.4. System Logs . . . . . . . . . . . . . . . . . . . . . . . 20 | 6.4. System Logs . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
6.4.1. Access Log . . . . . . . . . . . . . . . . . . . . . 20 | 6.4.1. Access Log . . . . . . . . . . . . . . . . . . . . . 21 | |||
6.4.2. Resource Utilization Log . . . . . . . . . . . . . . 21 | 6.4.2. Resource Utilization Log . . . . . . . . . . . . . . 22 | |||
6.4.3. User Activity Log . . . . . . . . . . . . . . . . . . 22 | 6.4.3. User Activity Log . . . . . . . . . . . . . . . . . . 23 | |||
6.5. NSF Logs . . . . . . . . . . . . . . . . . . . . . . . . 23 | 6.5. NSF Logs . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
6.5.1. Deep Packet Inspection Log . . . . . . . . . . . . . 23 | 6.5.1. Deep Packet Inspection Log . . . . . . . . . . . . . 24 | |||
6.6. System Counter . . . . . . . . . . . . . . . . . . . . . 23 | 6.6. System Counter . . . . . . . . . . . . . . . . . . . . . 24 | |||
6.6.1. Interface Counter . . . . . . . . . . . . . . . . . . 23 | 6.6.1. Interface Counter . . . . . . . . . . . . . . . . . . 24 | |||
6.7. NSF Counters . . . . . . . . . . . . . . . . . . . . . . 25 | 6.7. NSF Counters . . . . . . . . . . . . . . . . . . . . . . 26 | |||
6.7.1. Firewall Counter . . . . . . . . . . . . . . . . . . 25 | 6.7.1. Firewall Counter . . . . . . . . . . . . . . . . . . 26 | |||
6.7.2. Policy Hit Counter . . . . . . . . . . . . . . . . . 26 | 6.7.2. Policy Hit Counter . . . . . . . . . . . . . . . . . 27 | |||
7. YANG Tree Structure of NSF Monitoring YANG Module . . . . . . 27 | 7. YANG Tree Structure of NSF Monitoring YANG Module . . . . . . 28 | |||
8. YANG Data Model of NSF Monitoring YANG Module . . . . . . . . 35 | 8. YANG Data Model of NSF Monitoring YANG Module . . . . . . . . 34 | |||
9. I2NSF Event Stream . . . . . . . . . . . . . . . . . . . . . 84 | 9. I2NSF Event Stream . . . . . . . . . . . . . . . . . . . . . 85 | |||
10. XML Examples for I2NSF NSF Monitoring . . . . . . . . . . . . 85 | 10. XML Examples for I2NSF NSF Monitoring . . . . . . . . . . . . 86 | |||
10.1. I2NSF System Detection Alarm . . . . . . . . . . . . . . 85 | 10.1. I2NSF System Detection Alarm . . . . . . . . . . . . . . 86 | |||
10.2. I2NSF Interface Counters . . . . . . . . . . . . . . . . 87 | 10.2. I2NSF Interface Counters . . . . . . . . . . . . . . . . 87 | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 89 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 88 | |||
12. Security Considerations . . . . . . . . . . . . . . . . . . . 89 | 12. Security Considerations . . . . . . . . . . . . . . . . . . . 89 | |||
13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 91 | 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 91 | |||
14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 91 | 14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 91 | |||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 92 | 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 91 | |||
15.1. Normative References . . . . . . . . . . . . . . . . . . 92 | 15.1. Normative References . . . . . . . . . . . . . . . . . . 92 | |||
15.2. Informative References . . . . . . . . . . . . . . . . . 96 | 15.2. Informative References . . . . . . . . . . . . . . . . . 96 | |||
Appendix A. Changes from | Appendix A. Changes from | |||
draft-ietf-i2nsf-nsf-monitoring-data-model-14 . . . . . . 97 | draft-ietf-i2nsf-nsf-monitoring-data-model-15 . . . . . . 97 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 97 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 97 | |||
1. Introduction | 1. Introduction | |||
According to [RFC8329], the interface provided by a Network Security | According to [RFC8329], the interface provided by a Network Security | |||
Function (NSF) (e.g., Firewall, IPS, or Anti-DDoS function) to enable | Function (NSF) (e.g., Firewall, IPS, or Anti-DDoS function) to enable | |||
the collection of monitoring information is referred to as an I2NSF | the collection of monitoring information is referred to as an I2NSF | |||
Monitoring Interface. This interface enables the sharing of vital | Monitoring Interface. This interface enables the sharing of vital | |||
data from the NSFs (e.g., events, records, and counters) to the NSF | data from the NSFs (e.g., events, records, and counters) to an NSF | |||
data collector through a variety of mechanisms (e.g., queries and | data collector (e.g., Security Controller) through a variety of | |||
notifications). The monitoring of NSF plays an important role in an | mechanisms (e.g., queries and notifications). The monitoring of NSF | |||
overall security framework, if it is done in a timely way. The | plays an important role in an overall security framework, if it is | |||
monitoring information generated by an NSF can be a good, early | done in a timely way. The monitoring information generated by an NSF | |||
indication of anomalous behavior or malicious activity, such as | can be a good, early indication of anomalous behavior or malicious | |||
denial-of-service (DoS) attacks. | activity, such as denial-of-service (DoS) attacks. | |||
This document defines an information model of an NSF monitoring | This document defines an information model of an NSF monitoring | |||
interface that provides visibility into an NSF for the NSF data | interface that provides visibility into an NSF for the NSF data | |||
collector. Note that an NSF data collector is defined as an entity | collector (note that an NSF data collector is defined as an entity to | |||
to collect NSF monitoring data from an NSF, such as Security | collect NSF monitoring data from an NSF, such as Security | |||
Controller. It specifies the information and illustrates the methods | Controller). It specifies the information and illustrates the | |||
that enable an NSF to provide the information required in order to be | methods that enable an NSF to provide the information required in | |||
monitored in a scalable and efficient way via the NSF Monitoring | order to be monitored in a scalable and efficient way via the NSF | |||
Interface. The information model for the NSF monitoring interface | Monitoring Interface. The information model for the NSF monitoring | |||
presented in this document is complementary for the security policy | interface presented in this document is complementary for the | |||
provisioning functionality of the NSF-Facing Interface specified in | security policy provisioning functionality of the NSF-Facing | |||
[I-D.ietf-i2nsf-nsf-facing-interface-dm]. | Interface specified in [I-D.ietf-i2nsf-nsf-facing-interface-dm]. | |||
This document also defines a YANG [RFC7950] data model for the NSF | This document also defines a YANG [RFC7950] data model for the NSF | |||
monitoring interface, which is derived from the information model for | monitoring interface, which is derived from the information model for | |||
the NSF monitoring interface. | the NSF monitoring interface. | |||
Note that this document covers a subset of monitoring data for | Note that this document covers a subset of monitoring data for | |||
systems and NSFs, which are related to security. | systems and NSFs, which are related to security. | |||
2. Terminology | 2. Terminology | |||
skipping to change at page 4, line 37 ¶ | skipping to change at page 4, line 37 ¶ | |||
* Monitoring Information: Relevant data that can be processed to | * Monitoring Information: Relevant data that can be processed to | |||
know the status and performance of the network and the NSF. The | know the status and performance of the network and the NSF. The | |||
monitoring information in an I2NSF environment consists of I2NSF | monitoring information in an I2NSF environment consists of I2NSF | |||
Events, I2NSF Records, and I2NSF Counters (see Section 4.1 for the | Events, I2NSF Records, and I2NSF Counters (see Section 4.1 for the | |||
detailed definition). This information is to be delivered to the | detailed definition). This information is to be delivered to the | |||
NSF data collector. | NSF data collector. | |||
* Notification: Unsolicited transmission of monitoring information. | * Notification: Unsolicited transmission of monitoring information. | |||
* NSF Data Collector: An entity that collects NSF monitoring | * NSF Data Collector: An entity that collects NSF monitoring | |||
information from NSFs, such as Security Controllers. | information from NSFs, such as Security Controller. | |||
* Subscription: An agreement initialized by the NSF data collector | * Subscription: An agreement initialized by the NSF data collector | |||
to receive monitoring information from an NSF. The method to | to receive monitoring information from an NSF. The method to | |||
subscribe follows the method explained in [RFC5277]. | subscribe follows the method by either NETCONF or RESTCONF, | |||
explained in [RFC5277] and [RFC8650], respectively. | ||||
This document follows the guidelines of [RFC8407], uses the common | This document follows the guidelines of [RFC8407], uses the common | |||
YANG types defined in [RFC6991], and adopts the Network Management | YANG types defined in [RFC6991], and adopts the Network Management | |||
Datastore Architecture (NMDA) [RFC8342]. The meaning of the symbols | Datastore Architecture (NMDA) [RFC8342]. The meaning of the symbols | |||
in tree diagrams is defined in [RFC8340]. | in tree diagrams is defined in [RFC8340]. | |||
3. Use Cases for NSF Monitoring Data | 3. Use Cases for NSF Monitoring Data | |||
As mentioned earlier, monitoring plays a critical role in an overall | As mentioned earlier, monitoring plays a critical role in an overall | |||
security framework. The monitoring of the NSF provides very valuable | security framework. The monitoring of the NSF provides very valuable | |||
information to an NSF data collector (e.g., Security Controller) in | information to an NSF data collector (e.g., Security Controller) in | |||
maintaining the provisioned security posture. Besides this, there | maintaining the provisioned security posture. Besides this, there | |||
are various other reasons to monitor the NSF as listed below: | are various other reasons to monitor the NSF as listed below: | |||
* The I2NSF User that is the security administrator can configure a | * The I2NSF User that is the security administrator can configure a | |||
policy that is triggered on a specific event occurring in the NSF | policy that is triggered on a specific event occurring in the NSF | |||
or the network [RFC8329] | or the network [RFC8329] | |||
[I-D.ietf-i2nsf-consumer-facing-interface-dm]. If an NSF data | [I-D.ietf-i2nsf-consumer-facing-interface-dm]. If an NSF data | |||
collector detects the specified event, it configures additional | collector (e.g., Security Controller) detects the specified event, | |||
security functions as defined by policies. | it can configure additional security functions as defined by | |||
policies. | ||||
* The events triggered by an NSF as a result of security policy | * The events triggered by an NSF as a result of security policy | |||
violation can be used by Security Information and Event Management | violation can be used by Security Information and Event Management | |||
(SIEM) to detect any suspicious activity in a larger correlation | (SIEM) to detect any suspicious activity in a larger correlation | |||
context. | context. | |||
* The information (i.e., events, records, and counters) from an NSF | * The information (i.e., events, records, and counters) from an NSF | |||
can be used to build advanced analytics, such as behavior and | can be used to build advanced analytics, such as behavior and | |||
predictive models to improve security posture in large | predictive models to improve security posture in large | |||
deployments. | deployments. | |||
skipping to change at page 6, line 18 ¶ | skipping to change at page 6, line 19 ¶ | |||
Three basic domains of monitoring data originating from a system | Three basic domains of monitoring data originating from a system | |||
entity [RFC4949], i.e., an NSF, are discussed in this document. | entity [RFC4949], i.e., an NSF, are discussed in this document. | |||
* Retention and Emission from NSFs | * Retention and Emission from NSFs | |||
* Notifications for Events and Records | * Notifications for Events and Records | |||
* Push and Pull for the retrieval of monitoring data from NSFs | * Push and Pull for the retrieval of monitoring data from NSFs | |||
Every system entity creates information about some context with | Every system entity creates information about some context with | |||
defined I2NSF monitoring data, and so every entity can be an I2NSF | defined I2NSF monitoring data, and so every system entity that | |||
component. This information is intended to be consumed by other | provides such information can be an I2NSF component. This | |||
I2NSF components, which deals with NSF monitoring data in an | information is intended to be consumed by other I2NSF components, | |||
automated fashion. | which deals with NSF monitoring data in an automated fashion. | |||
4.1. Retention and Emission from NSFs | 4.1. Retention and Emission from NSFs | |||
A system entity (e.g., NSF) first retains I2NSF monitoring data | A system entity (e.g., NSF) first retains I2NSF monitoring data | |||
inside its own system before emitting the information to another | inside its own system before emitting the information to another | |||
I2NSF component (e.g., NSF Data Collector). The I2NSF monitoring | I2NSF component (e.g., NSF Data Collector). The I2NSF monitoring | |||
information consist of I2NSF Events, I2NSF Records, and I2NSF | information consist of I2NSF Events, I2NSF Records, and I2NSF | |||
Counters as follows: | Counters as follows: | |||
I2NSF Event: I2NSF Event is defined as an important occurrence at a | I2NSF Event: I2NSF Event is defined as an important occurrence at a | |||
particular time, that is, a change in the system being managed or | particular time, that is, a change in the system being managed or | |||
a change in the environment of the system being managed. An I2NSF | a change in the environment of the system being managed. An I2NSF | |||
Event requires immediate attention and should be notified as soon | Event requires immediate attention and should be notified as soon | |||
as possible. When used in the context of an (imperative) I2NSF | as possible. When used in the context of an (imperative) I2NSF | |||
Policy Rule, an I2NSF Event is used to determine whether the | Policy Rule, an I2NSF Event is used to determine whether the | |||
Condition clause of that Policy Rule can be evaluated or not. The | Condition clause of that Policy Rule can be evaluated or not. The | |||
Alarm Management Framework in [RFC3877] defines an event as | Alarm Management Framework in [RFC3877] defines an event as | |||
something that happens which may be of interest. Examples for an | something that happens which may be of interest. Examples of an | |||
event are a fault, a change in status, crossing a threshold, or an | event are a fault, a change in status, crossing a threshold, or an | |||
external input to the system. In the I2NSF domain, I2NSF events | external input to the system. In the I2NSF domain, I2NSF events | |||
are created following the definition of an event in the Alarm | are created following the definition of an event in the Alarm | |||
Management Framework. | Management Framework. | |||
I2NSF Record: A record is defined as an item of information that is | I2NSF Record: A record is defined as an item of information that is | |||
kept to be looked at and used in the future. Typically, records | kept to be looked at and used in the future. Typically, records | |||
are information generated by a system entity (e.g., NSF) that is | are the information, which is based on operational and | |||
based on operational and informational data (i.e., various changes | informational data (i.e., various changes in system | |||
in system characteristics), and are generated at particular | characteristics). They are generated by a system entity (e.g., | |||
instants to be kept without any changes afterward. A set of | NSF) at particular instants to be kept without any changes | |||
records has an ordering in time based on when they are generated. | afterward. A set of records has an ordering in time based on when | |||
they are generated. Unlike I2NSF Events, records do not require | ||||
Unlike I2NSF Events, records do not require immediate attention | immediate attention but may be useful for visibility and | |||
but may be useful for visibility and retroactive cyber forensics. | retroactive cyber forensics. Records are typically stored in log- | |||
Records are typically stored in log-files or databases on a system | files or databases on a system entity or NSF. The examples of | |||
entity or NSF. The examples of records include as user | records include user activities, device performance, and network | |||
activities, device performance, and network status. They are | status. They are important for debugging, auditing, and security | |||
important for debugging, auditing, and security forensic of a | forensic of a system entity or the network having the system | |||
system entity or the network having the system entity. | entity. | |||
I2NSF Counter: An I2NSF Counter is defined as a specific | I2NSF Counter: An I2NSF Counter is defined as a specific | |||
representation of an information element whose value changes very | representation of an information element whose value changes very | |||
frequently. Prominent examples are network interface counters for | frequently. Prominent examples are network interface counters for | |||
protocol data unit (PDU) amount, byte amount, drop counters, and | protocol data unit (PDU) amount, byte amount, drop counters, and | |||
error counters. Counters are useful in debugging and visibility | error counters. Counters are useful in debugging and visibility | |||
into operational behavior of a system entity (e.g., NSF). When an | into operational behavior of a system entity (e.g., NSF). When an | |||
NSF data collector asks for the value of a counter, a system | NSF data collector asks for the value of a counter, a system | |||
entity MUST update the counter information and emit the latest | entity MUST update the counter information and emit the latest | |||
information to the NSF data collector. | information to the NSF data collector. | |||
skipping to change at page 7, line 42 ¶ | skipping to change at page 7, line 43 ¶ | |||
Emission is defined as the delivery of monitoring data in NSFs to an | Emission is defined as the delivery of monitoring data in NSFs to an | |||
NSF data collector. The I2NSF monitoring information retained on a | NSF data collector. The I2NSF monitoring information retained on a | |||
system entity (e.g., NSF) may be delivered to a corresponding I2NSF | system entity (e.g., NSF) may be delivered to a corresponding I2NSF | |||
User via an NSF data collector. The information consists of the | User via an NSF data collector. The information consists of the | |||
aggregated records, typically in the form of log-files or databases. | aggregated records, typically in the form of log-files or databases. | |||
For the NSF Monitoring Interface to deliver the information to the | For the NSF Monitoring Interface to deliver the information to the | |||
NSF data collector, the NSF needs to accommodate standardized | NSF data collector, the NSF needs to accommodate standardized | |||
delivery protocols, such as NETCONF [RFC6241] and RESTCONF [RFC8040]. | delivery protocols, such as NETCONF [RFC6241] and RESTCONF [RFC8040]. | |||
The NSF data collector can forward the information to the I2NSF User | The NSF data collector can forward the information to the I2NSF User | |||
through standardized delivery protocols (e.g., RESTCONF and NETCONF). | through standardized delivery protocols (e.g., RESTCONF and NETCONF). | |||
The interface for this delivery is out of the scope of this document. | The interface for the delivery of Monitoring Data from the NSF data | |||
collector to the I2NSF User is out of the scope of this document. | ||||
4.2. Notifications for Events and Records | 4.2. Notifications for Events and Records | |||
A specific task of an I2NSF User is to process I2NSF Policy Rules. | A specific task of an I2NSF User is to provide I2NSF Policy Rules. | |||
The rules of a policy are composed of three clauses: Event, | The rules of a policy are composed of three clauses: Event, | |||
Condition, and Action clauses. In consequence, an I2NSF Event is | Condition, and Action clauses. In consequence, an I2NSF Event is | |||
specified to trigger the evaluation of the Condition clause of the | specified to trigger the evaluation of the Condition clause of the | |||
I2NSF Policy Rule. Such an I2NSF Event is defined as an important | I2NSF Policy Rule. Such an I2NSF Event is defined as an important | |||
occurrence at a particular time in the system being managed, and/or | occurrence at a particular time in the system being managed, and/or | |||
in the environment of the system being managed whose concept aligns | in the environment of the system being managed whose concept aligns | |||
well with the generic definition of Event from [RFC3877]. | well with the generic definition of Event from [RFC3877]. | |||
Another role of the I2NSF Event is to trigger a notification for | Another role of the I2NSF Event is to trigger a notification for | |||
monitoring the status of an NSF. A notification is defined in | monitoring the status of an NSF. A notification is defined in | |||
skipping to change at page 8, line 19 ¶ | skipping to change at page 8, line 29 ¶ | |||
System alarm (called alarm) is defined as a warning related to | System alarm (called alarm) is defined as a warning related to | |||
service degradation in system hardware in Section 6.1. System event | service degradation in system hardware in Section 6.1. System event | |||
(called alert) is defined as a warning about any changes of | (called alert) is defined as a warning about any changes of | |||
configuration, any access violation, information about sessions and | configuration, any access violation, information about sessions and | |||
traffic flows in Section 6.2. Both an alarm and an alert are I2NSF | traffic flows in Section 6.2. Both an alarm and an alert are I2NSF | |||
Events that can be delivered as a notification. The model | Events that can be delivered as a notification. The model | |||
illustrated in this document introduces a complementary type of | illustrated in this document introduces a complementary type of | |||
information that can be a conveyed notification. | information that can be a conveyed notification. | |||
In I2NSF monitoring, a notification is used to deliver either an | In I2NSF monitoring, a notification is used to deliver either an | |||
event and a record via the I2NSF Monitoring Interface. The | event or a record via the I2NSF Monitoring Interface. The difference | |||
difference between the event and record is the timing by which the | between the event and record is the timing by which the notifications | |||
notifications are emitted. An event is emitted as soon as it happens | are emitted. An event is emitted as soon as it happens in order to | |||
in order to notify an NSF Data Collector of the problem that needs | notify an NSF Data Collector of the problem that needs immediate | |||
immediate attention. A record is not emitted immediately to the NSF | attention. A record is not emitted immediately to the NSF Data | |||
Data Collector, and it can be emitted periodically to the NSF Data | Collector, and it can be emitted periodically to the NSF Data | |||
Collector. | Collector. | |||
It is important to note that an NSF Data Collector as a consumer | It is important to note that an NSF Data Collector as a consumer | |||
(i.e., observer) of a notification assesses the importance of the | (i.e., observer) of a notification assesses the importance of the | |||
notification rather than an NSF as a producer. The producer can | notification rather than an NSF as a producer. The producer can | |||
include metadata in a notification that supports the observer in | include metadata in a notification that supports the observer in | |||
assessing its importance (e.g., severity). | assessing its importance (e.g., severity). | |||
4.3. Push and Pull for the retrieval of monitoring data from NSFs | 4.3. Push and Pull for the retrieval of monitoring data from NSFs | |||
An important aspect of monitoring information is the freshness of the | An important aspect of monitoring information is the freshness of the | |||
information. From the perspective of security, it is important to | information. From the perspective of security, it is important to | |||
notice changes in the current status of the network. The I2NSF | notice changes in the current status of the network. The I2NSF | |||
Monitoring Interface provides the means of sending monitored | Monitoring Interface provides the means of sending monitored | |||
information from the NSFs to an NSF data collector in a timely | information from the NSFs to an NSF data collector in a timely | |||
manner. Monitoring information can be acquired by a client (i.e., | manner. Monitoring information can be acquired by a client (i.e., | |||
NSF data collector) from a server (i.e., NSF) using push or pull | NSF data collector) from a server (i.e., NSF) using push [RFC5277] | |||
methods. | [RFC8641] or pull methods [RFC6241] [RFC8040]. | |||
The pull is a query-based method to obtain information from the NSF. | The pull is a query-based method to obtain information from the NSF. | |||
In this method, the NSF will remain passive until the information is | In this method, the NSF will remain passive until the information is | |||
requested from the NSF data collector. Once a request is accepted | requested from the NSF data collector. Once a request is accepted | |||
(with proper authentication), the NSF MUST update the information | (with proper authentication), the NSF MUST update the information | |||
before sending it to the NSF data collector. | before sending it to the NSF data collector. | |||
The push is a report-based method to obtain information from the NSF. | The push is a report-based method to obtain information from the NSF. | |||
The report-based method ensures the information can be delivered | The report-based method ensures the information can be delivered | |||
immediately without any requests. This method is used by the NSF to | immediately without any requests. This method is used by the NSF to | |||
skipping to change at page 9, line 24 ¶ | skipping to change at page 9, line 30 ¶ | |||
I2NSF Event) should be provided with the push method, while | I2NSF Event) should be provided with the push method, while | |||
information that has a lower level of urgency (i.e., I2NSF Record and | information that has a lower level of urgency (i.e., I2NSF Record and | |||
I2NSF Counter) can be provided with either the pull method or push | I2NSF Counter) can be provided with either the pull method or push | |||
method. | method. | |||
5. Basic Information Model for Monitoring Data | 5. Basic Information Model for Monitoring Data | |||
As explained in the above section, there is a wealth of data | As explained in the above section, there is a wealth of data | |||
available from NSFs that can be monitored. Firstly, there must be | available from NSFs that can be monitored. Firstly, there must be | |||
some general information with each monitoring message sent from an | some general information with each monitoring message sent from an | |||
NSF that helps a consumer to identify meta data with that message, | NSF that helps a consumer to identify metadata with that message, | |||
which are listed as below: | which are listed as below: | |||
* message: The extra detailed description of NSF monitoring data to | * message: The extra detailed description of NSF monitoring data to | |||
give an NSF data collector the context information as meta data. | give an NSF data collector the context information as metadata. | |||
* vendor-name: The vendor's name of the NSF that generates the | * vendor-name: The vendor's name of the NSF that generates the | |||
message. | message. | |||
* device-model: The model of the device, can be represented by the | * device-model: The model of the device, can be represented by the | |||
device model name or serial number. This field is used to | device model name or serial number. This field is used to | |||
identify the model of the device that provides the security | identify the model of the device that provides the security | |||
service. | service. | |||
* software-version: The version of the software used to provide the | * software-version: The version of the software used to provide the | |||
security service. | security service. | |||
* nsf-name: The name or IP address of the NSF generating the | * nsf-name: The name or IP address of the NSF generating the | |||
message. If the given nsf-name is not an IP address, the name can | message. If the given nsf-name is not an IP address, the name can | |||
be an arbitrary string including a FQDN (Fully Qualified Domain | be an arbitrary string including a FQDN (Fully Qualified Domain | |||
Name). The name MUST be unique in the scope of management domain | Name). The name MUST be unique in the scope of management domain | |||
for a different NSF to identify the NSF that generates the | for a different NSF to identify the NSF that generates the | |||
message. | message. | |||
* severity: The severity level of the message. There are four | ||||
levels, i.e., critical, high, middle, and low. | ||||
* timestamp: The time when the message was generated. For the | * timestamp: The time when the message was generated. For the | |||
notification operations (i.e., System Alarms, System Events, NSF | notification operations (i.e., System Alarms, System Events, NSF | |||
Events, System Logs, and NSF Logs), this is represented by the | Events, System Logs, and NSF Logs), this is represented by the | |||
eventTime of NETCONF event notification [RFC5277] For other | eventTime of NETCONF event notification [RFC5277] For other | |||
operations (i.e., System Counter and NSF Counter), the timestamp | operations (i.e., System Counter and NSF Counter), the timestamp | |||
MUST be provided separately. | MUST be provided separately. The time format used is following | |||
the rules in Section 5.6 of [RFC3339]. | ||||
* language: describes the human language intended for the user, so | * language: describes the human language intended for the user, so | |||
that it allows a user to differentiate the language that is used | that it allows a user to verify the language that is used in the | |||
in the notification. This field is mandatory only when the | notification (i.e., '../message', '/i2nsf-log/i2nsf-nsf-system- | |||
implementation provides more than one human language for the | access-log/output', and '/i2nsf-log/i2nsf-system-user-activity- | |||
human-readable string fields. | log/additional-info/cause'). The attribute is encoded following | |||
the rules in Section 2.1 of [RFC5646]. The default language tag | ||||
is "en-US". | ||||
6. Extended Information Model for Monitoring Data | 6. Extended Information Model for Monitoring Data | |||
The extended information model is the specific monitoring data that | The extended information model is the specific monitoring data that | |||
covers the additional information associated with the detailed | covers the additional information associated with the detailed | |||
information of status and performance of the network and the NSF over | information of status and performance of the network and the NSF over | |||
the basic information model. The extended information combined with | the basic information model. The extended information combined with | |||
the basic information creates the monitoring information (i.e., I2NSF | the basic information creates the monitoring information (i.e., I2NSF | |||
Event, Record, and Counter). | Event, Record, and Counter). | |||
The extended monitoring information has settable characteristics for | The extended monitoring information has settable characteristics for | |||
data collection as follows: | data collection as follows: | |||
* Acquisition method: The method to obtain the message. It can be a | * Acquisition method: The method to obtain the message. It can be a | |||
"query" or a "subscription". A "query" is a request-based method | "query" or a "subscription". A "query" is a request-based method | |||
to acquire the solicited information. A "subscription" is a | to acquire the solicited information. A "subscription" is a | |||
report-based method that pushes information to the subscriber. | report-based method that pushes information to the subscriber. | |||
* Emission type: The cause type for the message to be emitted. It | * Emission type: The cause type for the message to be emitted. This | |||
can be "on-change", "periodic", or "on-request". An "on-change" | attribute is used only when the acquisition method is a | |||
message is emitted when an important event happens in the NSF. A | "subscription" method. The emission type can be either "on- | |||
"periodic" message is emitted at a certain time interval. An "on- | change" or "periodic". An "on-change" message is emitted when an | |||
request" message is emitted when the information is requested. | important event happens in the NSF. A "periodic" message is | |||
The time to periodically emit the message is configurable. | emitted at a certain time interval. The time to periodically emit | |||
the message is configurable. | ||||
* Dampening type: The type of message dampening to stop the rapid | * Dampening type: The type of message dampening to stop the rapid | |||
transmission of messages. The dampening types are "on-repetition" | transmission of messages. The dampening types are "on-repetition" | |||
and "no-dampening". The "on-repetition" type limits the | and "no-dampening". The "on-repetition" type limits the | |||
transmitted "on-change" message to one message at a certain | transmitted "on-change" message to one message at a certain | |||
interval (e.g., 1 second). This interval is defined as dampening- | interval (e.g., 100 centiseconds). This interval is defined as | |||
period in [RFC8641]. The dampening-period is configurable. The | dampening-period in [RFC8641]. The dampening-period is | |||
"no-dampening" type does not limit the transmission for the | configurable in the unit of centiseconds. The "no-dampening" type | |||
messages of the same type. In short, "on-repetition" means that | does not limit the transmission for the messages of the same type. | |||
the dampening is active and "no-dampening" is inactive. | In short, "on-repetition" means that the dampening is active and | |||
Activating the dampening for an "on-change" type of message is | "no-dampening" is inactive. Activating the dampening for an "on- | |||
RECOMMENDED to reduce the number of messages generated. | change" type of message is RECOMMENDED to reduce the number of | |||
messages generated. | ||||
Note that the characteristic information is not mandatory to be | ||||
included in a monitoring message. The information is expected to be | ||||
stored and may or may not be useful in some ways in the future. In | ||||
any case, the inclusion of the characteristic information is up to | ||||
the implementation. | ||||
6.1. System Alarms | 6.1. System Alarms | |||
System alarms have the following characteristics: | System alarms have the following characteristics: | |||
* acquisition-method: subscription | * acquisition-method: subscription | |||
* emission-type: on-change | * emission-type: on-change | |||
* dampening-type: on-repetition or no-dampening | * dampening-type: on-repetition or no-dampening | |||
6.1.1. Memory Alarm | 6.1.1. Memory Alarm | |||
The memory is the hardware to store information temporarily or for a | The memory is the hardware to store information temporarily or for a | |||
short period, i.e., Random Access Memory (RAM). The memory-alarm is | short period, i.e., Random Access Memory (RAM). The memory-alarm is | |||
emitted when the RAM usage exceeds the threshold. The following | emitted when the memory usage exceeds the threshold. The following | |||
information should be included in a Memory Alarm: | information should be included in a Memory Alarm: | |||
* event-name: memory-alarm. | * event-name: memory-alarm. | |||
* usage: specifies the amount of memory used. | * usage: specifies the amount of memory used in percentage. | |||
* threshold: The threshold triggering the alarm | * threshold: The threshold triggering the alarm in percentage. | |||
* severity: The severity level of the message. There are four | * severity: The severity level of the message. There are four | |||
levels, i.e., critical, high, middle, and low. | levels, i.e., critical, high, middle, and low. | |||
* message: Simple information as a human readable text string such | * message: Simple information as a human readable text string such | |||
as "The memory usage exceeded the threshold" or with extra | as "The memory usage exceeded the threshold" or with extra | |||
information. | information. | |||
6.1.2. CPU Alarm | 6.1.2. CPU Alarm | |||
CPU is the Central Processing Unit that executes basic operations of | CPU is the Central Processing Unit that executes basic operations of | |||
the system. The cpu-alarm is emitted when the CPU usage exceeds the | the system. The cpu-alarm is emitted when the CPU usage exceeds the | |||
threshold. The following information should be included in a CPU | threshold. The following information should be included in a CPU | |||
Alarm: | Alarm: | |||
* event-name: cpu-alarm. | * event-name: cpu-alarm. | |||
* usage: Specifies the CPU utilization. | * usage: Specifies the CPU utilization in percentage. | |||
* threshold: The threshold triggering the event. | * threshold: The threshold triggering the event in percentage. | |||
* severity: The severity level of the message. There are four | * severity: The severity level of the message. There are four | |||
levels, i.e., critical, high, middle, and low. | levels, i.e., critical, high, middle, and low. | |||
* message: Simple information as a human readable text string such | * message: Simple information as a human readable text string such | |||
as "The CPU usage exceeded the threshold" or with extra | as "The CPU usage exceeded the threshold" or with extra | |||
information. | information. | |||
6.1.3. Disk Alarm | 6.1.3. Disk (Storage) Alarm | |||
Disk is the hardware to store information for a long time, i.e., Hard | Disk or storage is the hardware to store information for a long time, | |||
Disk or Solid-State Drive. The disk-alarm is emitted when the Disk | i.e., Hard Disk or Solid-State Drive. The disk-alarm is emitted when | |||
usage exceeds the threshold. The following information should be | the Disk usage exceeds the threshold. The following information | |||
included in a Disk Alarm: | should be included in a Disk Alarm: | |||
* event-name: disk-alarm. | * event-name: disk-alarm. | |||
* usage: Specifies the size of disk space used. | * usage: Specifies the ratio of the used disk space to the whole | |||
disk space in terms of percentage. | ||||
* threshold: The threshold triggering the event. | * threshold: The threshold triggering the event in percentage. | |||
* severity: The severity level of the message. There are four | * severity: The severity level of the message. There are four | |||
levels, i.e., critical, high, middle, and low. | levels, i.e., critical, high, middle, and low. | |||
* message: Simple information as a human readable text string such | * message: Simple information as a human readable text string such | |||
as "The disk usage exceeded the threshold" or with extra | as "The disk usage exceeded the threshold" or with extra | |||
information. | information. | |||
6.1.4. Hardware Alarm | 6.1.4. Hardware Alarm | |||
skipping to change at page 13, line 13 ¶ | skipping to change at page 13, line 24 ¶ | |||
in an Interface Alarm: | in an Interface Alarm: | |||
* event-name: interface-alarm. | * event-name: interface-alarm. | |||
* interface-name: The name of the interface. | * interface-name: The name of the interface. | |||
* interface-state: The status of the interface, i.e., down, up (not | * interface-state: The status of the interface, i.e., down, up (not | |||
congested), congested (up but congested), testing, unknown, | congested), congested (up but congested), testing, unknown, | |||
dormant, not-present, and lower-layer-down. | dormant, not-present, and lower-layer-down. | |||
* severity: The severity level of the message. There are total | * severity: The severity level of the message. There are four | |||
levels, i.e., critical, high, middle, and low. | levels, i.e., critical, high, middle, and low. | |||
* message: Simple information as a human readable text string such | * message: Simple information as a human readable text string such | |||
as "The interface is 'interface-state'" or with extra information. | as "The interface is 'interface-state'" or with extra information. | |||
6.2. System Events | 6.2. System Events | |||
System events (as alerts) have the following characteristics: | System events (as alerts) have the following characteristics: | |||
* acquisition-method: subscription | * acquisition-method: subscription | |||
skipping to change at page 15, line 20 ¶ | skipping to change at page 15, line 26 ¶ | |||
information of the currently active sessions. The following | information of the currently active sessions. The following | |||
information should be included in a Session Table Event: | information should be included in a Session Table Event: | |||
* event-name: detection-session-table. | * event-name: detection-session-table. | |||
* current-session: The number of concurrent sessions. | * current-session: The number of concurrent sessions. | |||
* maximum-session: The maximum number of sessions that the session | * maximum-session: The maximum number of sessions that the session | |||
table can support. | table can support. | |||
* threshold: The threshold triggering the event. | * threshold: The threshold (in terms of an allowed number of | |||
sessions) triggering the event. | ||||
* message: The message as a human readable text string to give the | * message: The message as a human readable text string to give the | |||
context of the event, such as "The number of sessions exceeded the | context of the event, such as "The number of sessions exceeded the | |||
table threshold". | table threshold". | |||
6.2.4. Traffic Flows | 6.2.4. Traffic Flows | |||
Traffic flows need to be monitored because they might be used for | Traffic flows need to be monitored because they might be used for | |||
security attacks to the network. The following information should be | security attacks to the network. The following information should be | |||
included in this event: | included in this event: | |||
* event-name: traffic-flows. | * event-name: traffic-flows. | |||
* interface-name: The mnemonic name of the network interface | * interface-name: The mnemonic name of the network interface | |||
* interface-type: The type of a network interface such as an ingress | * interface-type: The type of a network interface such as an ingress | |||
or egress interface. | or egress interface. | |||
* src-mac: The source MAC address of the traffic flow. | * src-mac: The source MAC address of the traffic flow. This | |||
information may or may not be included depending on the type of | ||||
traffic flow. For example, the information will be useful and | ||||
should be included if the traffic flows are traffic flows of Link | ||||
Layer Discovery Protocol (LLDP) [IEEE-802.1AB], Address Resolution | ||||
Protocol (ARP) for IPv4 [RFC0826], and Neighbor Discovery Protocol | ||||
(ND) for IPv6 [RFC4861]. | ||||
* dst-mac: The destination MAC address of the traffic flow. | * dst-mac: The destination MAC address of the traffic flow. This | |||
information may or may not be included depending on the type of | ||||
traffic flow. For example, the information will be useful and | ||||
should be included if the traffic flows are LLDP, ARP for IPv4, or | ||||
ND for IPv6 traffic flows. | ||||
* src-ip: The source IPv4 or IPv6 address of the traffic flow. | * src-ip: The source IPv4 or IPv6 address of the traffic flow. | |||
* dst-ip: The destination IPv4 or IPv6 address of the traffic flow. | * dst-ip: The destination IPv4 or IPv6 address of the traffic flow. | |||
* src-port: The transport layer source port number of the traffic | * src-port: The transport layer source port number of the traffic | |||
flow. | flow. | |||
* dst-port: The transport layer destination port number of the | * dst-port: The transport layer destination port number of the | |||
traffic flow. | traffic flow. | |||
* protocol: The protocol of the traffic flow. | * protocol: The protocol of the traffic flow. | |||
* measurement-time: The duration of the measurement in seconds for | ||||
the arrival rate and arrival throughput of packets of a traffic | ||||
flow. These two metrics (i.e., arrival rate and arrival | ||||
throughput) are measured over the past measurement duration before | ||||
now. | ||||
* arrival-rate: Arrival rate of packets of the traffic flow in | * arrival-rate: Arrival rate of packets of the traffic flow in | |||
packet per second calculated from the beginning of the flow. | packets per second measured over the past "measurement-time". | |||
* arrival-throughput: Arrival rate of packets of the traffic flow in | * arrival-throughput: Arrival rate of packets of the traffic flow in | |||
bytes per second calculated from the beginning of the flow. | bytes per second measured over the past "measurement-time". | |||
Note that the NSF Monitoring Interface data model is focused on a | Note that the NSF Monitoring Interface data model is focused on a | |||
generic method to collect the monitoring information of systems and | generic method to collect the monitoring information of systems and | |||
NSFs including traffic flows related to security attacks and system | NSFs including traffic flows related to security attacks and system | |||
resource usages. On the other hand, IPFIX [RFC7011] is a standard | resource usages. On the other hand, IPFIX [RFC7011] is a standard | |||
method to collect general information on traffic flows rather than | method to collect general information on traffic flows rather than | |||
security. | security. | |||
6.3. NSF Events | 6.3. NSF Events | |||
skipping to change at page 16, line 45 ¶ | skipping to change at page 17, line 18 ¶ | |||
6.3.1. DDoS Detection | 6.3.1. DDoS Detection | |||
The following information should be included in a Denial-of-Service | The following information should be included in a Denial-of-Service | |||
(DoS) or Distributed Denial-of-Service (DDoS) Event: | (DoS) or Distributed Denial-of-Service (DDoS) Event: | |||
* event-name: detection-ddos. | * event-name: detection-ddos. | |||
* attack-type: The type of DoS or DDoS Attack, i.e., SYN flood, ACK | * attack-type: The type of DoS or DDoS Attack, i.e., SYN flood, ACK | |||
flood, SYN-ACK flood, FIN/RST flood, TCP Connection flood, UDP | flood, SYN-ACK flood, FIN/RST flood, TCP Connection flood, UDP | |||
flood, ICMP flood, HTTPS flood, HTTP flood, DNS query flood, DNS | flood, ICMP flood, HTTPS flood, HTTP flood, DNS query flood, DNS | |||
reply flood, SIP flood, SSL flood, and NTP amplification flood. | reply flood, SIP flood, TLS flood, and NTP amplification flood. | |||
This can be extended with additional types of DoS or DDoS attack. | This can be extended with additional types of DoS or DDoS attack. | |||
* attack-src-ip: The IP address of the source of the DDoS attack. | * attack-src-ip: The IP addresses of the source of the DDoS attack. | |||
Note that not all IP addresses should be included but only limited | ||||
IP addresses are included to conserve the server resources. The | ||||
listed attacking IP addresses can be an arbitrary sampling of the | ||||
"top talkers", i.e., the attackers that send the highest amount of | ||||
traffic. | ||||
* attack-dst-ip: The network prefix with a network mask (for IPv4) | * attack-dst-ip: The destination IPv4 or IPv6 addresses of attack | |||
or prefix length (for IPv6) of a victim under DDoS attack. | traffic. It can hold multiple IPv4 or IPv6 addresses. | |||
* dst-port: The port number that the attack traffic aims at. | * attack-src-port: The transport layer source port numbers of the | |||
attack traffic. Note that not all ports will have been seen on | ||||
all the corresponding source IP addresses. | ||||
* attack-dst-port: The transport layer destination port numbers that | ||||
the attack traffic aims at. Note that not all ports will have | ||||
been seen on all the corresponding destination IP addresses. | ||||
* start-time: The time stamp indicating when the attack started. | * start-time: The time stamp indicating when the attack started. | |||
The time format used is following the rules in Section 5.6 of | ||||
[RFC3339]. | ||||
* end-time: The time stamp indicating when the attack ended. If the | * end-time: The time stamp indicating when the attack ended. If the | |||
attack is still ongoing when sending out the notification, this | attack is still ongoing when sending out the notification, this | |||
field can be empty. | field can be empty. The time format used is following the rules | |||
in Section 5.6 of [RFC3339]. | ||||
* attack-rate: The packets per second of attack traffic. | * attack-rate: The packets per second of attack traffic. | |||
* attack-throughput: The bytes per second of attack traffic. | * attack-throughput: The bytes per second of attack traffic. | |||
* rule-name: The name of the I2NSF Policy Rule being triggered. | * rule-name: The name of the I2NSF Policy Rule being triggered. | |||
Note that rule-name is used to match a detected NSF event with a | Note that rule-name is used to match a detected NSF event with a | |||
policy rule in [I-D.ietf-i2nsf-nsf-facing-interface-dm]. | policy rule in [I-D.ietf-i2nsf-nsf-facing-interface-dm]. | |||
6.3.2. Virus Event | 6.3.2. Virus Event | |||
skipping to change at page 17, line 34 ¶ | skipping to change at page 18, line 22 ¶ | |||
flow or inside a host. Note that "malware" is a more generic word | flow or inside a host. Note that "malware" is a more generic word | |||
for malicious software, including virus and worm. In the document, | for malicious software, including virus and worm. In the document, | |||
"virus" is used to represent "malware" such that they are | "virus" is used to represent "malware" such that they are | |||
interchangeable. The following information should be included in a | interchangeable. The following information should be included in a | |||
Virus Event: | Virus Event: | |||
* event-name: detection-virus. | * event-name: detection-virus. | |||
* virus-name: Name of the virus. | * virus-name: Name of the virus. | |||
* virus-type: Type of the virus. e.g., trojan, worm, macro virus | * virus-type: Type of the virus. e.g., trojan, worm, and macro | |||
type. | virus. | |||
* The following information is used only when the virus is detected | * The following information is used only when the virus is detected | |||
within the traffic flow and not yet attacking the host: | within the traffic flow and not yet attacking the host: | |||
- dst-ip: The destination IP address of the flow where the virus | - dst-ip: The destination IP address of the flow where the virus | |||
is found. | is found. | |||
- src-ip: The source IP address of the flow where the virus is | - src-ip: The source IP address of the flow where the virus is | |||
found. | found. | |||
skipping to change at page 18, line 14 ¶ | skipping to change at page 18, line 51 ¶ | |||
- host: The name or IP address of the host/device that is | - host: The name or IP address of the host/device that is | |||
infected by the virus. If the given name is not an IP address, | infected by the virus. If the given name is not an IP address, | |||
the name can be an arbitrary string including a FQDN (Fully | the name can be an arbitrary string including a FQDN (Fully | |||
Qualified Domain Name). The name MUST be unique in the scope | Qualified Domain Name). The name MUST be unique in the scope | |||
of management domain for identifying the device that has been | of management domain for identifying the device that has been | |||
infected with a virus. | infected with a virus. | |||
- os: The operating system of the host that has the virus. | - os: The operating system of the host that has the virus. | |||
- file-type: The type of the file where the virus is hidden. | - file-type: The type of file (indicated by the file's suffix, | |||
e.g., .exe) virus code is found in (if applicable). | ||||
- file-name: The name of the file where the virus is hidden. | - file-name: The name of the file where the virus is hidden. | |||
* rule-name: The name of the rule being triggered. | * rule-name: The name of the rule being triggered. | |||
Note "host" is used only when the virus is detected within a host | Note "host" is used only when the virus is detected within a host | |||
itself. Thus, the traffic flow information such as the source and | itself. Thus, the traffic flow information such as the source and | |||
destination IP addresses is not important, so the elements of the | destination IP addresses is not important, so the elements of the | |||
traffic flow (i.e., dst-ip, src-ip, src-port, and dst-port) are not | traffic flow (i.e., dst-ip, src-ip, src-port, and dst-port) are not | |||
specified above. On the other hand, when the virus is detected | specified above. On the other hand, when the virus is detected | |||
skipping to change at page 18, line 40 ¶ | skipping to change at page 19, line 29 ¶ | |||
The following information should be included in an Intrusion Event: | The following information should be included in an Intrusion Event: | |||
* event-name: detection-intrusion. | * event-name: detection-intrusion. | |||
* attack-type: Attack type, e.g., brutal force or buffer overflow. | * attack-type: Attack type, e.g., brutal force or buffer overflow. | |||
* src-ip: The source IP address of the flow. | * src-ip: The source IP address of the flow. | |||
* dst-ip: The destination IP address of the flow. | * dst-ip: The destination IP address of the flow. | |||
* src-port:The source port number of the flow. | * src-port: The source port number of the flow. | |||
* dst-port: The destination port number of the flow | * dst-port: The destination port number of the flow | |||
* protocol: The employed transport layer protocol. e.g., TCP or UDP. | * protocol: The employed transport layer protocol. e.g., TCP or UDP. | |||
Note that QUIC protocol [RFC9000] is excluded in the data model as | ||||
it is not considered in the initial I2NSF documents [RFC8329]. | ||||
The QUIC traffic should not be treated as UDP traffic and will be | ||||
considered in the future I2NSF documents. | ||||
* app: The employed application layer protocol. e.g., HTTP or FTP. | * app: The employed application layer protocol. e.g., HTTP or FTP. | |||
* rule-name: The name of the I2NSF Policy Rule being triggered. | * rule-name: The name of the I2NSF Policy Rule being triggered. | |||
6.3.4. Web Attack Event | 6.3.4. Web Attack Event | |||
The following information should be included in a Web Attack Alarm: | The following information should be included in a Web Attack Alarm: | |||
* event-name: detection-web-attack. | * event-name: detection-web-attack. | |||
skipping to change at page 19, line 29 ¶ | skipping to change at page 20, line 18 ¶ | |||
* dst-port: The destination port number of the packet. | * dst-port: The destination port number of the packet. | |||
* req-method: The HTTP method of the request. For instance, "PUT" | * req-method: The HTTP method of the request. For instance, "PUT" | |||
and "GET" in HTTP. | and "GET" in HTTP. | |||
* req-target: The HTTP Request Target. | * req-target: The HTTP Request Target. | |||
* response-code: The HTTP Response status code. | * response-code: The HTTP Response status code. | |||
* req-user-agent: The HTTP User-Agent header field of the request. | ||||
* cookies: The HTTP Cookie header field of the request from the user | * cookies: The HTTP Cookie header field of the request from the user | |||
agent. | agent. The cookies information needs to be kept confidential and | |||
is not RECOMMENDED to be included in the monitoring data unless | ||||
the information is absolutely necessary to help to enhance the | ||||
security of the network. | ||||
* req-host: The HTTP Host header field of the request. | * req-host: The HTTP Host header field of the request. | |||
* filtering-type: URL filtering type. e.g., deny-list, allow-list, | * filtering-type: URL filtering type. e.g., deny-list, allow-list, | |||
and unknown. | and unknown. | |||
* rule-name: The name of the I2NSF Policy Rule being triggered. | * rule-name: The name of the I2NSF Policy Rule being triggered. | |||
6.3.5. VoIP/VoCN Event | 6.3.5. VoIP/VoCN Event | |||
skipping to change at page 20, line 29 ¶ | skipping to change at page 21, line 17 ¶ | |||
* rule-name: The name of the I2NSF Policy Rule being triggered. | * rule-name: The name of the I2NSF Policy Rule being triggered. | |||
6.4. System Logs | 6.4. System Logs | |||
System log is a record that is used to monitor the activity of the | System log is a record that is used to monitor the activity of the | |||
user on the NSF and the status of the NSF. System logs have the | user on the NSF and the status of the NSF. System logs have the | |||
following characteristics: | following characteristics: | |||
* acquisition-method: subscription or query | * acquisition-method: subscription or query | |||
* emission-type: on-change, periodic, or on-request | * emission-type: on-change or periodic | |||
* dampening-type: on-repetition or no-dampening | * dampening-type: on-repetition or no-dampening | |||
6.4.1. Access Log | 6.4.1. Access Log | |||
Access logs record administrators' login, logout, and operations on a | Access logs record administrators' login, logout, and operations on a | |||
device. By analyzing them, security vulnerabilities can be | device. By analyzing them, some security vulnerabilities can be | |||
identified. The following information should be included in an | identified. The following information should be included in an | |||
operation report: | operation report: | |||
* identity: The information to identify the user. The minimum | * identity: The information to identify the user. The minimum | |||
information (extensible) that should be included: | information (extensible) that should be included: | |||
1. user: The unique username that attempted access violation. | 1. user: The unique username that attempted access violation. | |||
2. group: Group(s) to which a user belongs. A user can belong to | 2. group: Group(s) to which a user belongs. A user can belong to | |||
multiple groups. | multiple groups. | |||
skipping to change at page 21, line 24 ¶ | skipping to change at page 22, line 13 ¶ | |||
* output: The result after executing the input. | * output: The result after executing the input. | |||
6.4.2. Resource Utilization Log | 6.4.2. Resource Utilization Log | |||
Running reports record the device system's running status, which is | Running reports record the device system's running status, which is | |||
useful for device monitoring. The following information should be | useful for device monitoring. The following information should be | |||
included in running report: | included in running report: | |||
* system-status: The current system's running status. | * system-status: The current system's running status. | |||
* cpu-usage: Specifies the aggregated CPU usage. | * cpu-usage: Specifies the aggregated CPU usage in percentage. | |||
* memory-usage: Specifies the memory usage. | * memory-usage: Specifies the memory usage in percentage. | |||
* disk-id: Specifies the disk ID to identify the storage disk. | * disk-id: Specifies the disk ID to identify the storage disk. | |||
* disk-usage: Specifies the disk usage of disk-id. | * disk-usage: Specifies the disk usage of disk-id in percentage. | |||
* disk-space-left: Specifies the available disk space left of disk- | * disk-space-left: Specifies the available disk space left of disk- | |||
id. | id in percentage. | |||
* session-number: Specifies total concurrent sessions. | * session-number: Specifies total concurrent sessions. | |||
* process-number: Specifies total number of systems processes. | * process-number: Specifies total number of systems processes. | |||
* interface-id: Specifies the interface ID to identify the network | * interface-id: Specifies the interface ID to identify the network | |||
interface. | interface. | |||
* in-traffic-rate: The total inbound data plane traffic rate in | * in-traffic-rate: The total inbound data plane traffic rate in | |||
packets per second. | packets per second. | |||
skipping to change at page 22, line 9 ¶ | skipping to change at page 22, line 47 ¶ | |||
* in-traffic-throughput: The total inbound data plane traffic | * in-traffic-throughput: The total inbound data plane traffic | |||
throughput in bytes per second. | throughput in bytes per second. | |||
* out-traffic-throughput: The total outbound data plane traffic | * out-traffic-throughput: The total outbound data plane traffic | |||
throughput in bytes per second. | throughput in bytes per second. | |||
Note that "traffic" includes only the data plane since the monitoring | Note that "traffic" includes only the data plane since the monitoring | |||
interface focuses on the monitoring of traffic flows for | interface focuses on the monitoring of traffic flows for | |||
applications, rather than the control plane. In the document, | applications, rather than the control plane. In the document, | |||
"packet" includes a layer-2 frame, so "packet" and "frame" are | "packet" includes a layer-2 frame, so "packet" and "frame" are | |||
interchangeable. | interchangeable. Also, note that system resources (e.g., CPU, | |||
memory, disk, and interface) are monitored for the sake of security | ||||
in NSFs even though they are common ones to be monitored by a generic | ||||
Operations, Administration and Maintenance (OAM) protocol (or | ||||
module). | ||||
6.4.3. User Activity Log | 6.4.3. User Activity Log | |||
User activity logs provide visibility into users' online records | User activity logs provide visibility into users' online records | |||
(such as login time, online/lockout duration, and login IP addresses) | (such as login time, online/lockout duration, and login IP addresses) | |||
and the actions that users perform. User activity reports are | and the actions that users perform. User activity reports are | |||
helpful to identify exceptions during a user's login and network | helpful to identify exceptions during a user's login and network | |||
access activities. This information should be included in a user's | access activities. This information should be included in a user's | |||
activity report: | activity report: | |||
skipping to change at page 23, line 11 ¶ | skipping to change at page 23, line 51 ¶ | |||
Failed User Password Change, User Lockout, and User Unlocking. | Failed User Password Change, User Lockout, and User Unlocking. | |||
2. cause: Cause of a failed user activity. | 2. cause: Cause of a failed user activity. | |||
6.5. NSF Logs | 6.5. NSF Logs | |||
NSF logs have the folowing characteristics: | NSF logs have the folowing characteristics: | |||
* acquisition-method: subscription or query | * acquisition-method: subscription or query | |||
* emission-type: on-change or on-request | * emission-type: on-change | |||
* dampening-type: on-repetition or no-dampening | * dampening-type: on-repetition or no-dampening | |||
6.5.1. Deep Packet Inspection Log | 6.5.1. Deep Packet Inspection Log | |||
Deep Packet Inspection (DPI) Logs provide statistics of transit | Deep Packet Inspection (DPI) Logs provide statistics of transit | |||
traffic at an NSF such that the traffic includes uploaded and | traffic at an NSF such that the traffic includes uploaded and | |||
downloaded files/data, sent/received emails, and blocking/alert | downloaded files/data, sent/received emails, and blocking/alert | |||
records on websites. It is helpful to learn risky user behaviors and | records on websites. It is helpful to learn risky user behaviors and | |||
why access to some URLs is blocked or allowed with an alert record. | why access to some URLs is blocked or allowed with an alert record. | |||
* attack-type: DPI action types. e.g., File Blocking, Data | * attack-type: DPI action types. e.g., File Blocking, Data | |||
Filtering, and Application Behavior Control. | Filtering, and Application Behavior Control. | |||
* src-user: The I2NSF User's name who generates the policy. | * src-ip: The source IP address of the flow. | |||
* policy-name: Security policy name that traffic matches. | * dst-ip: The destination IP address of the flow. | |||
* src-port: The source port number of the flow. | ||||
* dst-port: The destination port number of the flow | ||||
* rule-name: The name of the I2NSF Policy Rule being triggered. | ||||
* action: Action defined in the file blocking rule, data filtering | * action: Action defined in the file blocking rule, data filtering | |||
rule, or application behavior control rule that traffic matches. | rule, or application behavior control rule that traffic matches. | |||
6.6. System Counter | 6.6. System Counter | |||
System counter has the following characteristics: | System counter has the following characteristics: | |||
* acquisition-method: subscription or query | * acquisition-method: subscription or query | |||
* emission-type: periodic or on-request | * emission-type: periodic | |||
* dampening-type: no-dampening | * dampening-type: no-dampening | |||
6.6.1. Interface Counter | 6.6.1. Interface Counter | |||
Interface counters provide visibility into traffic into and out of an | Interface counters provide visibility into traffic into and out of an | |||
NSF, and bandwidth usage. The statistics of the interface counters | NSF, and bandwidth usage. | |||
should be computed from the start of the service up to the last | ||||
measure time instant. When the service is reset, the computation of | ||||
statistics per counter should use the reset time instant as the start | ||||
of the service for measurement. | ||||
* interface-name: Network interface name configured in NSF. | * interface-name: Network interface name configured in NSF. | |||
* protocol: The type of network protocol (e.g., IPv4, IPv6, TCP, and | * protocol: The type of network protocol (e.g., IPv4, IPv6, TCP, and | |||
UDP). If this field is empty, then the counter is used for all | UDP). If this field is empty, then the counter is used for all | |||
protocols. | protocols. | |||
* measurement-time: The duration of the measurement in seconds for | ||||
the calculation of statistics such as traffic rate and throughput. | ||||
The statistic attributes are measured over the past measurement | ||||
duration before now. | ||||
* in-total-traffic-pkts: Total inbound packets. | * in-total-traffic-pkts: Total inbound packets. | |||
* out-total-traffic-pkts: Total outbound packets. | * out-total-traffic-pkts: Total outbound packets. | |||
* in-total-traffic-bytes: Total inbound bytes. | * in-total-traffic-bytes: Total inbound bytes. | |||
* out-total-traffic-bytes: Total outbound bytes. | * out-total-traffic-bytes: Total outbound bytes. | |||
* in-drop-traffic-pkts: Total inbound drop packets caused by a | * in-drop-traffic-pkts: Total inbound drop packets caused by a | |||
policy or hardware/resource error. | policy or hardware/resource error. | |||
* out-drop-traffic-pkts: Total outbound drop packets caused by a | * out-drop-traffic-pkts: Total outbound drop packets caused by a | |||
policy or hardware/resource error. | policy or hardware/resource error. | |||
* in-drop-traffic-bytes: Total inbound drop bytes caused by a policy | * in-drop-traffic-bytes: Total inbound drop bytes caused by a policy | |||
or hardware/resource error. | or hardware/resource error. | |||
* out-drop-traffic-bytes: Total outbound drop bytes caused by a | * out-drop-traffic-bytes: Total outbound drop bytes caused by a | |||
policy or hardware/resource error. | policy or hardware/resource error. | |||
* total-traffic: The total number of traffic packets (in and out) in | ||||
the NSF. | ||||
* in-traffic-average-rate: Inbound traffic average rate in packets | * in-traffic-average-rate: Inbound traffic average rate in packets | |||
per second. | per second. | |||
* in-traffic-peak-rate: Inbound traffic peak rate in packets per | * in-traffic-peak-rate: Inbound traffic peak rate in packets per | |||
second. | second. | |||
* in-traffic-average-throughput: Inbound traffic average throughput | * in-traffic-average-throughput: Inbound traffic average throughput | |||
in bytes per second. | in bytes per second. | |||
* in-traffic-peak-throughput: Inbound traffic peak throughput in | * in-traffic-peak-throughput: Inbound traffic peak throughput in | |||
skipping to change at page 25, line 10 ¶ | skipping to change at page 26, line 13 ¶ | |||
throughput in bytes per second. | throughput in bytes per second. | |||
* out-traffic-peak-throughput: Outbound traffic peak throughput in | * out-traffic-peak-throughput: Outbound traffic peak throughput in | |||
bytes per second. | bytes per second. | |||
* discontinuity-time: The time of the most recent occasion at which | * discontinuity-time: The time of the most recent occasion at which | |||
any one or more of the counters suffered a discontinuity. If no | any one or more of the counters suffered a discontinuity. If no | |||
such discontinuities have occurred since the last re- | such discontinuities have occurred since the last re- | |||
initialization of the local management subsystem, then this node | initialization of the local management subsystem, then this node | |||
contains the time the local management subsystem was re- | contains the time the local management subsystem was re- | |||
initialized. | initialized. The time format used is following the rules in | |||
Section 5.6 of [RFC3339]. | ||||
6.7. NSF Counters | 6.7. NSF Counters | |||
NSF counters have the following characteristics: | NSF counters have the following characteristics: | |||
* acquisition-method: subscription or query | * acquisition-method: subscription or query | |||
* emission-type: periodic or on-request | * emission-type: periodic | |||
* dampening-type: no-dampening | * dampening-type: no-dampening | |||
6.7.1. Firewall Counter | 6.7.1. Firewall Counter | |||
Firewall counters provide visibility into traffic signatures, | Firewall counters provide visibility into traffic signatures and | |||
bandwidth usage, and how the configured security and bandwidth | bandwidth usage that correspond to the policy that is configured in a | |||
policies have been applied. | firewall. | |||
* src-ip: Source IP address of traffic. | ||||
* src-user: The I2NSF User's name who generates the policy. | ||||
* dst-ip: Destination IP address of traffic. | ||||
* src-port: Source port of traffic. | ||||
* dst-port: Destination port of traffic. | ||||
* protocol: Protocol type of traffic. | ||||
* app: Application type of traffic. | ||||
* policy-id: Security policy id that traffic matches. | ||||
* policy-name: Security policy name that traffic matches. | * policy-name: Security policy name that traffic matches. | |||
* measurement-time: The duration of the measurement in seconds for | ||||
the calculation of statistics such as traffic rate and throughput. | ||||
The statistic attributes are measured over the past measurement | ||||
duration before now. | ||||
* in-interface: Inbound interface of traffic. | * in-interface: Inbound interface of traffic. | |||
* out-interface: Outbound interface of traffic. | * out-interface: Outbound interface of traffic. | |||
* total-traffic: Total traffic volume. | * total-traffic: The total number of traffic packets (in and out) in | |||
the firewall. | ||||
* in-traffic-average-rate: Inbound traffic average rate in packets | * in-traffic-average-rate: Inbound traffic average rate in packets | |||
per second. | per second. | |||
* in-traffic-peak-rate: Inbound traffic peak rate in packets per | * in-traffic-peak-rate: Inbound traffic peak rate in packets per | |||
second. | second. | |||
* in-traffic-average-throughput: Inbound traffic average throughput | * in-traffic-average-throughput: Inbound traffic average throughput | |||
in bytes per second. | in bytes per second. | |||
skipping to change at page 26, line 34 ¶ | skipping to change at page 27, line 28 ¶ | |||
throughput in bytes per second. | throughput in bytes per second. | |||
* out-traffic-peak-throughput: Outbound traffic peak throughput in | * out-traffic-peak-throughput: Outbound traffic peak throughput in | |||
bytes per second. | bytes per second. | |||
* discontinuity-time: The time on the most recent occasion at which | * discontinuity-time: The time on the most recent occasion at which | |||
any one or more of the counters suffered a discontinuity. If no | any one or more of the counters suffered a discontinuity. If no | |||
such discontinuities have occurred since the last re- | such discontinuities have occurred since the last re- | |||
initialization of the local management subsystem, then this node | initialization of the local management subsystem, then this node | |||
contains the time the local management subsystem was re- | contains the time the local management subsystem was re- | |||
initialized. | initialized. The time format used is following the rules in | |||
Section 5.6 of [RFC3339]. | ||||
6.7.2. Policy Hit Counter | 6.7.2. Policy Hit Counter | |||
Policy hit counters record the security policy that traffic matches | Policy hit counters record the security policy that traffic matches | |||
and its hit count. That is, when a packet actually matches a policy, | and its hit count. That is, when a packet actually matches a policy, | |||
it should be added to the statistics of a "policy hit counter" of the | it should be added to the statistics of a "policy hit counter" of the | |||
policy. The "policy hit counter" provides the "policy-name" that | policy. The "policy hit counter" provides the "policy-name" that | |||
matches the policy's name in the NSF-Facing Interface YANG data model | matches the policy's name in the NSF-Facing Interface YANG data model | |||
[I-D.ietf-i2nsf-nsf-facing-interface-dm]. It can check if policy | [I-D.ietf-i2nsf-nsf-facing-interface-dm]. It can check if policy | |||
configurations are correct or not. | configurations are correct or not. | |||
* src-ip: Source IP address of traffic. | ||||
* src-user: The I2NSF User's name who generates the policy. | ||||
* dst-ip: Destination IP address of traffic. | ||||
* src-port: Source port of traffic. | ||||
* dst-port: Destination port of traffic. | ||||
* protocol: Protocol type of traffic. | ||||
* app: Application type of traffic. | ||||
* policy-id: Security policy id that traffic matches. | ||||
* policy-name: Security policy name that traffic matches. | * policy-name: Security policy name that traffic matches. | |||
* hit-times: The number of times that the security policy matches | * hit-times: The number of times that the security policy matches | |||
the specified traffic. | the specified traffic. | |||
* discontinuity-time: The time on the most recent occasion at which | * discontinuity-time: The time on the most recent occasion at which | |||
any one or more of the counters suffered a discontinuity. If no | any one or more of the counters suffered a discontinuity. If no | |||
such discontinuities have occurred since the last re- | such discontinuities have occurred since the last re- | |||
initialization of the local management subsystem, then this node | initialization of the local management subsystem, then this node | |||
contains the time the local management subsystem was re- | contains the time the local management subsystem was re- | |||
initialized. | initialized. The time format used is following the rules in | |||
Section 5.6 of [RFC3339]. | ||||
7. YANG Tree Structure of NSF Monitoring YANG Module | 7. YANG Tree Structure of NSF Monitoring YANG Module | |||
The tree structure of the NSF monitoring YANG module is provided | The tree structure of the NSF monitoring YANG module is provided | |||
below: | below: | |||
module: ietf-i2nsf-nsf-monitoring | module: ietf-i2nsf-nsf-monitoring | |||
+--ro i2nsf-counters | +--ro i2nsf-counters | |||
| +--ro language? string | | +--ro vendor-name? string | |||
| +--ro device-model? string | ||||
| +--ro software-version? string | ||||
| +--ro nsf-name union | ||||
| +--ro timestamp? yang:date-and-time | ||||
| +--ro acquisition-method? identityref | ||||
| +--ro emission-type? identityref | ||||
| +--ro system-interface* [interface-name] | | +--ro system-interface* [interface-name] | |||
| | +--ro acquisition-method? identityref | ||||
| | +--ro emission-type? identityref | ||||
| | +--ro dampening-type? identityref | ||||
| | +--ro interface-name if:interface-ref | | | +--ro interface-name if:interface-ref | |||
| | +--ro protocol? identityref | | | +--ro protocol? identityref | |||
| | +--ro in-total-traffic-pkts? yang:counter64 | | | +--ro in-total-traffic-pkts? yang:counter64 | |||
| | +--ro out-total-traffic-pkts? yang:counter64 | | | +--ro out-total-traffic-pkts? yang:counter64 | |||
| | +--ro in-total-traffic-bytes? uint64 | | | +--ro in-total-traffic-bytes? uint64 | |||
| | +--ro out-total-traffic-bytes? uint64 | | | +--ro out-total-traffic-bytes? uint64 | |||
| | +--ro in-drop-traffic-pkts? yang:counter64 | | | +--ro in-drop-traffic-pkts? yang:counter64 | |||
| | +--ro out-drop-traffic-pkts? yang:counter64 | | | +--ro out-drop-traffic-pkts? yang:counter64 | |||
| | +--ro in-drop-traffic-bytes? uint64 | | | +--ro in-drop-traffic-bytes? uint64 | |||
| | +--ro out-drop-traffic-bytes? uint64 | | | +--ro out-drop-traffic-bytes? uint64 | |||
| | +--ro discontinuity-time yang:date-and-time | | | +--ro discontinuity-time yang:date-and-time | |||
| | +--ro measurement-time? uint32 | ||||
| | +--ro total-traffic? yang:counter64 | | | +--ro total-traffic? yang:counter64 | |||
| | +--ro in-traffic-average-rate? uint32 | | | +--ro in-traffic-average-rate? uint64 | |||
| | +--ro in-traffic-peak-rate? uint32 | | | +--ro in-traffic-peak-rate? uint64 | |||
| | +--ro in-traffic-average-throughput? uint64 | | | +--ro in-traffic-average-throughput? uint64 | |||
| | +--ro in-traffic-peak-throughput? uint64 | | | +--ro in-traffic-peak-throughput? uint64 | |||
| | +--ro out-traffic-average-rate? uint32 | | | +--ro out-traffic-average-rate? uint64 | |||
| | +--ro out-traffic-peak-rate? uint32 | | | +--ro out-traffic-peak-rate? uint64 | |||
| | +--ro out-traffic-average-throughput? uint64 | | | +--ro out-traffic-average-throughput? uint64 | |||
| | +--ro out-traffic-peak-throughput? uint64 | | | +--ro out-traffic-peak-throughput? uint64 | |||
| | +--ro message? string | ||||
| | +--ro vendor-name? string | ||||
| | +--ro nsf-name? union | ||||
| | +--ro severity? severity | ||||
| | +--ro timestamp? yang:date-and-time | ||||
| +--ro nsf-firewall* [policy-name] | | +--ro nsf-firewall* [policy-name] | |||
| | +--ro acquisition-method? identityref | | | +--ro in-interface? if:interface-ref | |||
| | +--ro emission-type? identityref | | | +--ro out-interface? if:interface-ref | |||
| | +--ro dampening-type? identityref | ||||
| | +--ro policy-name -> /nsfintf:i2nsf-security-policy/name | | | +--ro policy-name -> /nsfintf:i2nsf-security-policy/name | |||
| | +--ro src-user? string | ||||
| | +--ro discontinuity-time yang:date-and-time | | | +--ro discontinuity-time yang:date-and-time | |||
| | +--ro measurement-time? uint32 | ||||
| | +--ro total-traffic? yang:counter64 | | | +--ro total-traffic? yang:counter64 | |||
| | +--ro in-traffic-average-rate? uint32 | | | +--ro in-traffic-average-rate? uint64 | |||
| | +--ro in-traffic-peak-rate? uint32 | | | +--ro in-traffic-peak-rate? uint64 | |||
| | +--ro in-traffic-average-throughput? uint64 | | | +--ro in-traffic-average-throughput? uint64 | |||
| | +--ro in-traffic-peak-throughput? uint64 | | | +--ro in-traffic-peak-throughput? uint64 | |||
| | +--ro out-traffic-average-rate? uint32 | | | +--ro out-traffic-average-rate? uint64 | |||
| | +--ro out-traffic-peak-rate? uint32 | | | +--ro out-traffic-peak-rate? uint64 | |||
| | +--ro out-traffic-average-throughput? uint64 | | | +--ro out-traffic-average-throughput? uint64 | |||
| | +--ro out-traffic-peak-throughput? uint64 | | | +--ro out-traffic-peak-throughput? uint64 | |||
| | +--ro message? string | ||||
| | +--ro vendor-name? string | ||||
| | +--ro nsf-name? union | ||||
| | +--ro severity? severity | ||||
| | +--ro timestamp? yang:date-and-time | ||||
| +--ro nsf-policy-hits* [policy-name] | | +--ro nsf-policy-hits* [policy-name] | |||
| +--ro acquisition-method? identityref | ||||
| +--ro emission-type? identityref | ||||
| +--ro dampening-type? identityref | ||||
| +--ro policy-name -> /nsfintf:i2nsf-security-policy/name | | +--ro policy-name -> /nsfintf:i2nsf-security-policy/name | |||
| +--ro src-user? string | ||||
| +--ro message? string | ||||
| +--ro vendor-name? string | ||||
| +--ro nsf-name? union | ||||
| +--ro severity? severity | ||||
| +--ro discontinuity-time yang:date-and-time | | +--ro discontinuity-time yang:date-and-time | |||
| +--ro hit-times? yang:counter64 | | +--ro hit-times? yang:counter64 | |||
| +--ro timestamp? yang:date-and-time | ||||
+--rw i2nsf-monitoring-configuration | +--rw i2nsf-monitoring-configuration | |||
+--rw i2nsf-system-detection-alarm | +--rw i2nsf-system-detection-alarm | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw system-alarm* [alarm-type] | | +--rw system-alarm* [alarm-type] | |||
| +--rw alarm-type enumeration | | +--rw alarm-type enumeration | |||
| +--rw threshold? uint8 | | +--rw threshold? uint8 | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-system-detection-event | +--rw i2nsf-system-detection-event | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-traffic-flows | +--rw i2nsf-traffic-flows | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
+--rw i2nsf-nsf-detection-ddos {i2nsf-nsf-detection-ddos}? | +--rw i2nsf-nsf-detection-ddos {i2nsf-nsf-detection-ddos}? | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-nsf-detection-virus {i2nsf-nsf-detection-virus}? | ||||
| +--rw enabled? boolean | ||||
| +--rw dampening-period? centiseconds | ||||
+--rw i2nsf-nsf-detection-session-table | +--rw i2nsf-nsf-detection-session-table | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-nsf-detection-intrusion | +--rw i2nsf-nsf-detection-intrusion | |||
{i2nsf-nsf-detection-intrusion}? | {i2nsf-nsf-detection-intrusion}? | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-nsf-detection-web-attack | +--rw i2nsf-nsf-detection-web-attack | |||
{i2nsf-nsf-detection-web-attack}? | {i2nsf-nsf-detection-web-attack}? | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-nsf-detection-voip-vocn | ||||
{i2nsf-nsf-detection-voip-vocn}? | ||||
| +--rw enabled? boolean | ||||
| +--rw dampening-period? centiseconds | ||||
+--rw i2nsf-nsf-system-access-log | +--rw i2nsf-nsf-system-access-log | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-system-res-util-log | +--rw i2nsf-system-res-util-log | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-system-user-activity-log | +--rw i2nsf-system-user-activity-log | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-nsf-log-dpi {i2nsf-nsf-log-dpi}? | +--rw i2nsf-nsf-log-dpi {i2nsf-nsf-log-dpi}? | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw dampening-period? uint32 | | +--rw dampening-period? centiseconds | |||
+--rw i2nsf-counter | +--rw i2nsf-counter | |||
+--rw period? uint16 | +--rw period? uint16 | |||
notifications: | notifications: | |||
+---n i2nsf-event | +---n i2nsf-event | |||
| +--ro vendor-name? string | ||||
| +--ro device-model? string | ||||
| +--ro software-version? string | ||||
| +--ro nsf-name union | ||||
| +--ro message? string | ||||
| +--ro language? string | | +--ro language? string | |||
| +--ro acquisition-method? identityref | ||||
| +--ro emission-type? identityref | ||||
| +--ro dampening-type? identityref | ||||
| +--ro (sub-event-type)? | | +--ro (sub-event-type)? | |||
| +--:(i2nsf-system-detection-alarm) | | +--:(i2nsf-system-detection-alarm) | |||
| | +--ro i2nsf-system-detection-alarm | | | +--ro i2nsf-system-detection-alarm | |||
| | +--ro alarm-category? identityref | | | +--ro alarm-category? identityref | |||
| | +--ro component-name? string | | | +--ro component-name? string | |||
| | +--ro interface-name? if:interface-ref | | | +--ro interface-name? if:interface-ref | |||
| | +--ro interface-state? enumeration | | | +--ro interface-state? enumeration | |||
| | +--ro acquisition-method? identityref | | | +--ro severity? severity | |||
| | +--ro emission-type? identityref | | | +--ro usage? uint8 | |||
| | +--ro dampening-type? identityref | | | +--ro threshold? uint8 | |||
| | +--ro usage? uint8 | ||||
| | +--ro threshold? uint8 | ||||
| | +--ro message? string | ||||
| | +--ro vendor-name? string | ||||
| | +--ro nsf-name? union | ||||
| | +--ro severity? severity | ||||
| +--:(i2nsf-system-detection-event) | | +--:(i2nsf-system-detection-event) | |||
| | +--ro i2nsf-system-detection-event | | | +--ro i2nsf-system-detection-event | |||
| | +--ro event-category? identityref | | | +--ro event-category? identityref | |||
| | +--ro acquisition-method? identityref | | | +--ro user string | |||
| | +--ro emission-type? identityref | | | +--ro group* string | |||
| | +--ro dampening-type? identityref | | | +--ro ip-address inet:ip-address-no-zone | |||
| | +--ro user string | | | +--ro l4-port-number inet:port-number | |||
| | +--ro group* string | | | +--ro authentication? identityref | |||
| | +--ro ip-address inet:ip-address-no-zone | ||||
| | +--ro l4-port-number inet:port-number | ||||
| | +--ro authentication? identityref | ||||
| | +--ro message? string | ||||
| | +--ro vendor-name? string | ||||
| | +--ro nsf-name? union | ||||
| | +--ro severity? severity | ||||
| | +--ro changes* [policy-name] | | | +--ro changes* [policy-name] | |||
| | +--ro policy-name | | | +--ro policy-name | |||
-> /nsfintf:i2nsf-security-policy/name | -> /nsfintf:i2nsf-security-policy/name | |||
| +--:(i2nsf-traffic-flows) | | +--:(i2nsf-traffic-flows) | |||
| | +--ro i2nsf-traffic-flows | | | +--ro i2nsf-traffic-flows | |||
| | +--ro interface-name? if:interface-ref | | | +--ro interface-name? if:interface-ref | |||
| | +--ro interface-type? enumeration | | | +--ro interface-type? enumeration | |||
| | +--ro src-mac? yang:mac-address | | | +--ro src-mac? yang:mac-address | |||
| | +--ro dst-mac? yang:mac-address | | | +--ro dst-mac? yang:mac-address | |||
| | +--ro src-ip? inet:ip-address-no-zone | | | +--ro src-ip? inet:ip-address-no-zone | |||
| | +--ro dst-ip? inet:ip-address-no-zone | | | +--ro dst-ip? inet:ip-address-no-zone | |||
| | +--ro protocol? identityref | | | +--ro protocol? identityref | |||
| | +--ro src-port? inet:port-number | | | +--ro src-port? inet:port-number | |||
| | +--ro dst-port? inet:port-number | | | +--ro dst-port? inet:port-number | |||
| | +--ro arrival-rate? uint32 | | | +--ro measurement-time? uint32 | |||
| | +--ro arrival-throughput? uint32 | | | +--ro arrival-rate? uint64 | |||
| | +--ro acquisition-method? identityref | | | +--ro arrival-throughput? uint64 | |||
| | +--ro emission-type? identityref | ||||
| | +--ro dampening-type? identityref | ||||
| | +--ro message? string | ||||
| | +--ro vendor-name? string | ||||
| | +--ro nsf-name? union | ||||
| | +--ro severity? severity | ||||
| +--:(i2nsf-nsf-detection-session-table) | | +--:(i2nsf-nsf-detection-session-table) | |||
| +--ro i2nsf-nsf-detection-session-table | | +--ro i2nsf-nsf-detection-session-table | |||
| +--ro current-session? uint32 | | +--ro current-session? uint32 | |||
| +--ro maximum-session? uint32 | | +--ro maximum-session? uint32 | |||
| +--ro threshold? uint32 | | +--ro threshold? uint32 | |||
| +--ro message? string | ||||
| +--ro vendor-name? string | ||||
| +--ro nsf-name? union | ||||
| +--ro severity? severity | ||||
+---n i2nsf-log | +---n i2nsf-log | |||
| +--ro vendor-name? string | ||||
| +--ro device-model? string | ||||
| +--ro software-version? string | ||||
| +--ro nsf-name union | ||||
| +--ro message? string | ||||
| +--ro language? string | | +--ro language? string | |||
| +--ro acquisition-method? identityref | ||||
| +--ro emission-type? identityref | ||||
| +--ro dampening-type? identityref | ||||
| +--ro (sub-logs-type)? | | +--ro (sub-logs-type)? | |||
| +--:(i2nsf-nsf-system-access-log) | | +--:(i2nsf-nsf-system-access-log) | |||
| | +--ro i2nsf-nsf-system-access-log | | | +--ro i2nsf-nsf-system-access-log | |||
| | +--ro user string | | | +--ro user string | |||
| | +--ro group* string | | | +--ro group* string | |||
| | +--ro ip-address inet:ip-address-no-zone | | | +--ro ip-address inet:ip-address-no-zone | |||
| | +--ro l4-port-number inet:port-number | | | +--ro l4-port-number inet:port-number | |||
| | +--ro authentication? identityref | | | +--ro authentication? identityref | |||
| | +--ro operation-type? operation-type | | | +--ro operation-type? operation-type | |||
| | +--ro input? string | | | +--ro input? string | |||
| | +--ro output? string | | | +--ro output? string | |||
| | +--ro acquisition-method? identityref | ||||
| | +--ro emission-type? identityref | ||||
| | +--ro dampening-type? identityref | ||||
| | +--ro message? string | ||||
| | +--ro vendor-name? string | ||||
| | +--ro nsf-name? union | ||||
| | +--ro severity? severity | ||||
| +--:(i2nsf-system-res-util-log) | | +--:(i2nsf-system-res-util-log) | |||
| | +--ro i2nsf-system-res-util-log | | | +--ro i2nsf-system-res-util-log | |||
| | +--ro system-status? enumeration | | | +--ro system-status? enumeration | |||
| | +--ro cpu-usage? uint8 | | | +--ro cpu-usage? uint8 | |||
| | +--ro memory-usage? uint8 | | | +--ro memory-usage? uint8 | |||
| | +--ro disk* [disk-id] | | | +--ro disks* [disk-id] | |||
| | | +--ro disk-id string | | | | +--ro disk-id string | |||
| | | +--ro disk-usage? uint8 | | | | +--ro disk-usage? uint8 | |||
| | | +--ro disk-space-left? uint8 | | | | +--ro disk-space-left? uint8 | |||
| | +--ro session-num? uint32 | | | +--ro session-num? uint32 | |||
| | +--ro process-num? uint32 | | | +--ro process-num? uint32 | |||
| | +--ro interface* [interface-id] | | | +--ro interface* [interface-id] | |||
| | | +--ro interface-id string | | | +--ro interface-id string | |||
| | | +--ro in-traffic-rate? uint32 | | | +--ro in-traffic-rate? uint64 | |||
| | | +--ro out-traffic-rate? uint32 | | | +--ro out-traffic-rate? uint64 | |||
| | | +--ro in-traffic-throughput? uint64 | | | +--ro in-traffic-throughput? uint64 | |||
| | | +--ro out-traffic-throughput? uint64 | | | +--ro out-traffic-throughput? uint64 | |||
| | +--ro acquisition-method? identityref | ||||
| | +--ro emission-type? identityref | ||||
| | +--ro dampening-type? identityref | ||||
| | +--ro message? string | ||||
| | +--ro vendor-name? string | ||||
| | +--ro nsf-name? union | ||||
| | +--ro severity? severity | ||||
| +--:(i2nsf-system-user-activity-log) | | +--:(i2nsf-system-user-activity-log) | |||
| | +--ro i2nsf-system-user-activity-log | | | +--ro i2nsf-system-user-activity-log | |||
| | +--ro acquisition-method? identityref | | | +--ro user string | |||
| | +--ro emission-type? identityref | | | +--ro group* string | |||
| | +--ro dampening-type? identityref | | | +--ro ip-address inet:ip-address-no-zone | |||
| | +--ro user string | | | +--ro l4-port-number inet:port-number | |||
| | +--ro group* string | | | +--ro authentication? identityref | |||
| | +--ro ip-address inet:ip-address-no-zone | | | +--ro online-duration? uint32 | |||
| | +--ro l4-port-number inet:port-number | | | +--ro logout-duration? uint32 | |||
| | +--ro authentication? identityref | | | +--ro additional-info | |||
| | +--ro message? string | | | +--ro type? enumeration | |||
| | +--ro vendor-name? string | | | +--ro cause? string | |||
| | +--ro nsf-name? union | ||||
| | +--ro severity? severity | ||||
| | +--ro online-duration? uint32 | ||||
| | +--ro logout-duration? uint32 | ||||
| | +--ro additional-info? enumeration | ||||
| +--:(i2nsf-nsf-log-dpi) {i2nsf-nsf-log-dpi}? | | +--:(i2nsf-nsf-log-dpi) {i2nsf-nsf-log-dpi}? | |||
| +--ro i2nsf-nsf-log-dpi | | +--ro i2nsf-nsf-log-dpi | |||
| +--ro attack-type? dpi-type | | +--ro attack-type? identityref | |||
| +--ro acquisition-method? identityref | | +--ro src-ip? inet:ip-address-no-zone | |||
| +--ro emission-type? identityref | | +--ro src-port? inet:port-number | |||
| +--ro dampening-type? identityref | | +--ro dst-ip? inet:ip-address-no-zone | |||
| +--ro policy-name | | +--ro dst-port? inet:port-number | |||
-> /nsfintf:i2nsf-security-policy/name | | +--ro rule-name | |||
| +--ro src-user? string | -> /nsfintf:i2nsf-security-policy/rules/name | |||
| +--ro message? string | | +--ro action* identityref | |||
| +--ro vendor-name? string | ||||
| +--ro nsf-name? union | ||||
| +--ro severity? severity | ||||
+---n i2nsf-nsf-event | +---n i2nsf-nsf-event | |||
+--ro vendor-name? string | ||||
+--ro device-model? string | ||||
+--ro software-version? string | ||||
+--ro nsf-name union | ||||
+--ro message? string | ||||
+--ro language? string | +--ro language? string | |||
+--ro acquisition-method? identityref | ||||
+--ro emission-type? identityref | ||||
+--ro dampening-type? identityref | ||||
+--ro (sub-event-type)? | +--ro (sub-event-type)? | |||
+--:(i2nsf-nsf-detection-ddos) {i2nsf-nsf-detection-ddos}? | +--:(i2nsf-nsf-detection-ddos) {i2nsf-nsf-detection-ddos}? | |||
| +--ro i2nsf-nsf-detection-ddos | | +--ro i2nsf-nsf-detection-ddos | |||
| +--ro attack-type? identityref | | +--ro attack-type? identityref | |||
| +--ro start-time yang:date-and-time | | +--ro start-time yang:date-and-time | |||
| +--ro end-time? yang:date-and-time | | +--ro end-time? yang:date-and-time | |||
| +--ro attack-src-ip* inet:ip-address-no-zone | | +--ro attack-src-ip* inet:ip-address-no-zone | |||
| +--ro attack-dst-ip* inet:ip-address-no-zone | | +--ro attack-dst-ip* inet:ip-address-no-zone | |||
| +--ro attack-src-port* inet:port-number | | +--ro attack-src-port* inet:port-number | |||
| +--ro attack-dst-port* inet:port-number | | +--ro attack-dst-port* inet:port-number | |||
| +--ro rule-name | | +--ro rule-name | |||
-> /nsfintf:i2nsf-security-policy/rules/name | -> /nsfintf:i2nsf-security-policy/rules/name | |||
| +--ro attack-rate? uint32 | | +--ro attack-rate? uint64 | |||
| +--ro attack-throughput? uint64 | | +--ro attack-throughput? uint64 | |||
| +--ro action* log-action | ||||
| +--ro acquisition-method? identityref | ||||
| +--ro emission-type? identityref | ||||
| +--ro dampening-type? identityref | ||||
| +--ro message? string | ||||
| +--ro vendor-name? string | ||||
| +--ro nsf-name? union | ||||
| +--ro severity? severity | ||||
+--:(i2nsf-nsf-detection-virus) | +--:(i2nsf-nsf-detection-virus) | |||
{i2nsf-nsf-detection-virus}? | {i2nsf-nsf-detection-virus}? | |||
| +--ro i2nsf-nsf-detection-virus | | +--ro i2nsf-nsf-detection-virus | |||
| +--ro dst-ip? inet:ip-address-no-zone | | +--ro src-ip? inet:ip-address-no-zone | |||
| +--ro dst-port? inet:port-number | | +--ro src-port? inet:port-number | |||
| +--ro dst-ip? inet:ip-address-no-zone | ||||
| +--ro dst-port? inet:port-number | ||||
| +--ro rule-name | | +--ro rule-name | |||
-> /nsfintf:i2nsf-security-policy/rules/name | -> /nsfintf:i2nsf-security-policy/rules/name | |||
| +--ro src-ip? inet:ip-address-no-zone | | +--ro virus-name? string | |||
| +--ro src-port? inet:port-number | | +--ro virus-type? identityref | |||
| +--ro virus-name? string | | +--ro host? union | |||
| +--ro virus-type? identityref | | +--ro file-type? string | |||
| +--ro host? union | | +--ro file-name? string | |||
| +--ro file-type? string | | +--ro os? string | |||
| +--ro file-name? string | ||||
| +--ro os? string | ||||
| +--ro action* log-action | ||||
| +--ro acquisition-method? identityref | ||||
| +--ro emission-type? identityref | ||||
| +--ro dampening-type? identityref | ||||
| +--ro message? string | ||||
| +--ro vendor-name? string | ||||
| +--ro nsf-name? union | ||||
| +--ro severity? severity | ||||
+--:(i2nsf-nsf-detection-intrusion) | +--:(i2nsf-nsf-detection-intrusion) | |||
{i2nsf-nsf-detection-intrusion}? | {i2nsf-nsf-detection-intrusion}? | |||
| +--ro i2nsf-nsf-detection-intrusion | | +--ro i2nsf-nsf-detection-intrusion | |||
| +--ro dst-ip? inet:ip-address-no-zone | | +--ro src-ip? inet:ip-address-no-zone | |||
| +--ro dst-port? inet:port-number | | +--ro src-port? inet:port-number | |||
| +--ro dst-ip? inet:ip-address-no-zone | ||||
| +--ro dst-port? inet:port-number | ||||
| +--ro rule-name | | +--ro rule-name | |||
-> /nsfintf:i2nsf-security-policy/rules/name | -> /nsfintf:i2nsf-security-policy/rules/name | |||
| +--ro src-ip? inet:ip-address-no-zone | | +--ro protocol? identityref | |||
| +--ro src-port? inet:port-number | | +--ro app? identityref | |||
| +--ro protocol? identityref | | +--ro attack-type? identityref | |||
| +--ro app? identityref | ||||
| +--ro attack-type? identityref | ||||
| +--ro action* log-action | ||||
| +--ro attack-rate? uint32 | ||||
| +--ro attack-throughput? uint64 | ||||
| +--ro acquisition-method? identityref | ||||
| +--ro emission-type? identityref | ||||
| +--ro dampening-type? identityref | ||||
| +--ro message? string | ||||
| +--ro vendor-name? string | ||||
| +--ro nsf-name? union | ||||
| +--ro severity? severity | ||||
+--:(i2nsf-nsf-detection-web-attack) | +--:(i2nsf-nsf-detection-web-attack) | |||
{i2nsf-nsf-detection-web-attack}? | {i2nsf-nsf-detection-web-attack}? | |||
| +--ro i2nsf-nsf-detection-web-attack | | +--ro i2nsf-nsf-detection-web-attack | |||
| +--ro dst-ip? inet:ip-address-no-zone | | +--ro src-ip? inet:ip-address-no-zone | |||
| +--ro dst-port? inet:port-number | | +--ro src-port? inet:port-number | |||
| +--ro dst-ip? inet:ip-address-no-zone | ||||
| +--ro dst-port? inet:port-number | ||||
| +--ro rule-name | | +--ro rule-name | |||
-> /nsfintf:i2nsf-security-policy/rules/name | -> /nsfintf:i2nsf-security-policy/rules/name | |||
| +--ro src-ip? inet:ip-address-no-zone | | +--ro attack-type? identityref | |||
| +--ro src-port? inet:port-number | | +--ro req-method? identityref | |||
| +--ro attack-type? identityref | | +--ro req-target? string | |||
| +--ro req-method? identityref | | +--ro filtering-type* identityref | |||
| +--ro req-target? string | | +--ro cookies? string | |||
| +--ro filtering-type* identityref | | +--ro req-host? string | |||
| +--ro req-user-agent? string | | +--ro response-code? string | |||
| +--ro cookie? string | ||||
| +--ro req-host? string | ||||
| +--ro response-code? string | ||||
| +--ro acquisition-method? identityref | ||||
| +--ro emission-type? identityref | ||||
| +--ro dampening-type? identityref | ||||
| +--ro action* log-action | ||||
| +--ro message? string | ||||
| +--ro vendor-name? string | ||||
| +--ro nsf-name? union | ||||
| +--ro severity? severity | ||||
+--:(i2nsf-nsf-detection-voip-vocn) | +--:(i2nsf-nsf-detection-voip-vocn) | |||
{i2nsf-nsf-detection-voip-vocn}? | {i2nsf-nsf-detection-voip-vocn}? | |||
+--ro i2nsf-nsf-detection-voip-vocn | +--ro i2nsf-nsf-detection-voip-vocn | |||
+--ro src-ip? inet:ip-address-no-zone | ||||
+--ro src-port? inet:port-number | ||||
+--ro dst-ip? inet:ip-address-no-zone | +--ro dst-ip? inet:ip-address-no-zone | |||
+--ro dst-port? inet:port-number | +--ro dst-port? inet:port-number | |||
+--ro rule-name | +--ro rule-name | |||
-> /nsfintf:i2nsf-security-policy/rules/name | -> /nsfintf:i2nsf-security-policy/rules/name | |||
+--ro src-ip? inet:ip-address-no-zone | ||||
+--ro src-port? inet:port-number | ||||
+--ro source-voice-id* string | +--ro source-voice-id* string | |||
+--ro destination-voice-id* string | +--ro destination-voice-id* string | |||
+--ro user-agent* string | +--ro user-agent* string | |||
+--ro message? string | ||||
+--ro vendor-name? string | ||||
+--ro nsf-name? union | ||||
+--ro severity? severity | ||||
Figure 1: NSF Monitoring YANG Module Tree | Figure 1: NSF Monitoring YANG Module Tree | |||
8. YANG Data Model of NSF Monitoring YANG Module | 8. YANG Data Model of NSF Monitoring YANG Module | |||
This section describes a YANG module of I2NSF NSF Monitoring. The | This section describes a YANG module of I2NSF NSF Monitoring. The | |||
data model provided in this document uses identities to be used to | data model provided in this document uses identities to be used to | |||
get information of the monitored of an NSF's monitoring data. Every | get information of the monitored of an NSF's monitoring data. Every | |||
identity used in the document gives information or status about the | identity used in the document gives information or status about the | |||
current situation of an NSF. This YANG module imports from | current situation of an NSF. This YANG module imports from | |||
[RFC6991], [RFC8343], and [I-D.ietf-i2nsf-nsf-facing-interface-dm], | [RFC6991], [RFC8343], and [I-D.ietf-i2nsf-nsf-facing-interface-dm], | |||
and makes references to [RFC0768] [RFC0791] [RFC0792] [RFC0793] | and makes references to [RFC0768] [RFC0791] [RFC0792] [RFC0826] | |||
[RFC0854] [RFC1939] [RFC0959] [RFC2595] [RFC4340] [RFC4443] [RFC5321] | [RFC0854] [RFC1939] [RFC0959] [RFC2595] [RFC4340] [RFC4443] [RFC4861] | |||
[RFC5646] [RFC6242] [RFC6265] [RFC8200] [RFC8641] [RFC9051] | [RFC5321] [RFC5646] [RFC6242] [RFC6265] [RFC8200] [RFC8641] [RFC9051] | |||
[I-D.ietf-httpbis-http2bis] [I-D.ietf-httpbis-messaging] | [I-D.ietf-httpbis-http2bis] [I-D.ietf-httpbis-messaging] | |||
[I-D.ietf-httpbis-semantics] [I-D.ietf-tcpm-rfc793bis] | [I-D.ietf-httpbis-semantics] [I-D.ietf-tcpm-rfc793bis] | |||
[I-D.ietf-tsvwg-rfc4960-bis] [IANA-HTTP-Status-Code] | [I-D.ietf-tsvwg-rfc4960-bis] [IANA-HTTP-Status-Code] [IEEE-802.1AB] | |||
[IANA-Media-Types]. | ||||
<CODE BEGINS> file "ietf-i2nsf-nsf-monitoring@2022-02-15.yang" | <CODE BEGINS> file "ietf-i2nsf-nsf-monitoring@2022-03-22.yang" | |||
module ietf-i2nsf-nsf-monitoring { | module ietf-i2nsf-nsf-monitoring { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace | namespace | |||
"urn:ietf:params:xml:ns:yang:ietf-i2nsf-nsf-monitoring"; | "urn:ietf:params:xml:ns:yang:ietf-i2nsf-nsf-monitoring"; | |||
prefix | prefix | |||
nsfmi; | nsfmi; | |||
import ietf-inet-types{ | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
reference | reference | |||
"Section 4 of RFC 6991"; | "Section 4 of RFC 6991"; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
reference | reference | |||
"Section 3 of RFC 6991"; | "Section 3 of RFC 6991"; | |||
} | } | |||
import ietf-i2nsf-policy-rule-for-nsf { | import ietf-i2nsf-policy-rule-for-nsf { | |||
skipping to change at page 36, line 39 ¶ | skipping to change at page 35, line 45 ¶ | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
for full legal notices."; | for full legal notices."; | |||
revision "2022-02-15" { | revision "2022-03-22" { | |||
description "Latest revision"; | description "Latest revision"; | |||
reference | reference | |||
"RFC XXXX: I2NSF NSF Monitoring Interface YANG Data Model"; | "RFC XXXX: I2NSF NSF Monitoring Interface YANG Data Model"; | |||
// RFC Ed.: replace XXXX with an actual RFC number and remove | // RFC Ed.: replace XXXX with an actual RFC number and remove | |||
// this note. | // this note. | |||
} | } | |||
/* | /* | |||
* Typedefs | * Typedefs | |||
*/ | */ | |||
typedef severity { | typedef severity { | |||
type enumeration { | type enumeration { | |||
enum critical { | enum critical { | |||
description | description | |||
skipping to change at page 37, line 44 ¶ | skipping to change at page 37, line 4 ¶ | |||
of a potential fault before any effect is observed. | of a potential fault before any effect is observed. | |||
The 'low' severity is reported when an action should | The 'low' severity is reported when an action should | |||
be done before a fault happen."; | be done before a fault happen."; | |||
} | } | |||
} | } | |||
description | description | |||
"An indicator representing severity levels. The severity | "An indicator representing severity levels. The severity | |||
levels starting from the highest are critical, high, middle, | levels starting from the highest are critical, high, middle, | |||
and low."; | and low."; | |||
} | } | |||
typedef operation-type { | ||||
typedef log-action { | ||||
type enumeration { | ||||
enum allow { | ||||
description | ||||
"If action is allow"; | ||||
} | ||||
enum alert { | ||||
description | ||||
"If action is alert"; | ||||
} | ||||
enum block { | ||||
description | ||||
"If action is block"; | ||||
} | ||||
enum discard { | ||||
description | ||||
"If action is discard"; | ||||
} | ||||
enum declare { | ||||
description | ||||
"If action is declare"; | ||||
} | ||||
enum block-ip { | ||||
description | ||||
"If action is block-ip"; | ||||
} | ||||
enum block-service{ | ||||
description | ||||
"If action is block-service"; | ||||
} | ||||
} | ||||
description | ||||
"The type representing action for | ||||
logging."; | ||||
} | ||||
typedef dpi-type{ | ||||
type enumeration { | ||||
enum file-blocking{ | ||||
description | ||||
"DPI for preventing the specified file types from flowing | ||||
in the network."; | ||||
} | ||||
enum data-filtering{ | ||||
description | ||||
"DPI for preventing sensitive information (e.g., Credit | ||||
Card Number or Social Security Numbers) leaving a | ||||
protected network."; | ||||
} | ||||
enum application-behavior-control{ | ||||
description | ||||
"DPI for filtering packet based on the application or | ||||
network behavior analysis to identify malicious or | ||||
unusual activity."; | ||||
} | ||||
} | ||||
description | ||||
"The type of Deep Packet Inspection (DPI). | ||||
The defined types are file-blocking, data-filtering, and | ||||
application-behavior-control."; | ||||
} | ||||
typedef operation-type{ | ||||
type enumeration { | type enumeration { | |||
enum login { | enum login { | |||
description | description | |||
"The operation type is Login."; | "The operation type is Login."; | |||
} | } | |||
enum logout { | enum logout { | |||
description | description | |||
"The operation type is Logout."; | "The operation type is Logout."; | |||
} | } | |||
enum configuration { | enum configuration { | |||
skipping to change at page 40, line 14 ¶ | skipping to change at page 38, line 7 ¶ | |||
enum guest { | enum guest { | |||
description | description | |||
"Guest login role. Restricted role, only few read data are | "Guest login role. Restricted role, only few read data are | |||
available and write configurations are restricted."; | available and write configurations are restricted."; | |||
} | } | |||
} | } | |||
description | description | |||
"The privilege level of the user account."; | "The privilege level of the user account."; | |||
} | } | |||
typedef centiseconds { | ||||
type uint32; | ||||
description | ||||
"A period of time, measured in units of 0.01 seconds."; | ||||
} | ||||
/* | /* | |||
* Identity | * Identity | |||
*/ | */ | |||
identity characteristics { | identity characteristics { | |||
description | description | |||
"Base identity for monitoring information | "Base identity for monitoring information | |||
characteristics"; | characteristics"; | |||
} | } | |||
identity acquisition-method { | identity acquisition-method { | |||
skipping to change at page 41, line 5 ¶ | skipping to change at page 39, line 4 ¶ | |||
} | } | |||
identity periodic { | identity periodic { | |||
base emission-type; | base emission-type; | |||
description | description | |||
"The emission-type type is periodic."; | "The emission-type type is periodic."; | |||
} | } | |||
identity on-change { | identity on-change { | |||
base emission-type; | base emission-type; | |||
description | description | |||
"The emission-type type is on-change."; | "The emission-type type is on-change."; | |||
} | ||||
identity on-request { | ||||
base emission-type; | ||||
description | ||||
"The emission-type type is on-request."; | ||||
} | } | |||
identity dampening-type { | identity dampening-type { | |||
base characteristics; | base characteristics; | |||
description | description | |||
"The type of message dampening to stop the rapid transmission | "The type of message dampening to stop the rapid transmission | |||
of messages. The dampening types are on-repetition and | of messages, such as on-repetition and no-dampening."; | |||
no-dampening"; | ||||
} | } | |||
identity no-dampening { | identity no-dampening { | |||
base dampening-type; | base dampening-type; | |||
description | description | |||
"The dampening-type is no-dampening. No-dampening type does | "The dampening-type is no-dampening. No-dampening type does | |||
not limit the transmission for the messages of the same | not limit the transmission for the messages of the same | |||
type."; | type."; | |||
} | } | |||
identity on-repetition { | identity on-repetition { | |||
base dampening-type; | base dampening-type; | |||
skipping to change at page 42, line 23 ¶ | skipping to change at page 40, line 16 ¶ | |||
identity system-alarm { | identity system-alarm { | |||
base event; | base event; | |||
description | description | |||
"Base identity for detectable system alarm types"; | "Base identity for detectable system alarm types"; | |||
} | } | |||
identity memory-alarm { | identity memory-alarm { | |||
base system-alarm; | base system-alarm; | |||
description | description | |||
"A memory alarm is alerted."; | "Memory is the hardware to store information temporarily or for | |||
a short period, i.e., Random Access Memory (RAM). A | ||||
memory-alarm is emitted when the memory usage is exceeding | ||||
the threshold."; | ||||
} | } | |||
identity cpu-alarm { | identity cpu-alarm { | |||
base system-alarm; | base system-alarm; | |||
description | description | |||
"A CPU alarm is alerted."; | "CPU is the Central Processing Unit that executes basic | |||
operations of the system. A cpu-alarm is emitted when the CPU | ||||
usage is exceeding a threshold."; | ||||
} | } | |||
identity disk-alarm { | identity disk-alarm { | |||
base system-alarm; | base system-alarm; | |||
description | description | |||
"A disk alarm is alerted."; | "Disk or storage is the hardware to store information for a | |||
long period, i.e., Hard Disk and Solid-State Drive. A | ||||
disk-alarm is emitted when the disk usage is exceeding a | ||||
threshold."; | ||||
} | } | |||
identity hardware-alarm { | identity hardware-alarm { | |||
base system-alarm; | base system-alarm; | |||
description | description | |||
"A hardware alarm (i.e., hardware failure) is alerted."; | "A hardware alarm is emitted when a hardware failure (e.g., | |||
CPU, memory, disk, or interface) is detected. A hardware | ||||
failure is a malfunction within the electronic circuits or | ||||
electromechanical components of the hardware that makes it | ||||
unusable."; | ||||
} | } | |||
identity interface-alarm { | identity interface-alarm { | |||
base system-alarm; | base system-alarm; | |||
description | description | |||
"An interface alarm is alerted."; | "Interface is the network interface for connecting a device | |||
with the network. The interface-alarm is emitted when the | ||||
state of the interface is changed."; | ||||
} | } | |||
identity access-violation { | identity access-violation { | |||
base system-event; | base system-event; | |||
description | description | |||
"The access-violation system event is an event when a user | "Access-violation system event is an event when a user tries | |||
tries to access (read, write, create, or delete) any | to access (read, write, create, or delete) any information or | |||
information or execute commands above their privilege."; | execute commands above their privilege (i.e., not-conformant | |||
with the access profile)."; | ||||
} | } | |||
identity configuration-change { | identity configuration-change { | |||
base system-event; | base system-event; | |||
description | description | |||
"The configuration-change system event is an event when a user | "The configuration-change system event is an event when a user | |||
adds a new configuration or modify an existing configuration | adds a new configuration or modify an existing configuration | |||
(write configuration)."; | (write configuration)."; | |||
} | } | |||
identity attack-type { | identity attack-type { | |||
skipping to change at page 49, line 21 ¶ | skipping to change at page 47, line 28 ¶ | |||
description | description | |||
"The applied filter type is a deny list. This filter opens all | "The applied filter type is a deny list. This filter opens all | |||
connection except the specified list."; | connection except the specified list."; | |||
} | } | |||
identity unknown-filter { | identity unknown-filter { | |||
base filter-type; | base filter-type; | |||
description | description | |||
"The applied filter is unknown."; | "The applied filter is unknown."; | |||
} | } | |||
identity dpi-type { | ||||
description | ||||
"Base identity for the type of Deep Packet Inspection (DPI)."; | ||||
} | ||||
identity file-blocking { | ||||
base dpi-type; | ||||
description | ||||
"DPI for preventing the specified file types from flowing | ||||
in the network."; | ||||
} | ||||
identity data-filtering { | ||||
base dpi-type; | ||||
description | ||||
"DPI for preventing sensitive information (e.g., Credit | ||||
Card Number or Social Security Numbers) leaving a | ||||
protected network."; | ||||
} | ||||
identity application-behavior-control { | ||||
base dpi-type; | ||||
description | ||||
"DPI for filtering packet based on the application or | ||||
network behavior analysis to identify malicious or | ||||
unusual activity."; | ||||
} | ||||
identity protocol { | identity protocol { | |||
description | description | |||
"An identity used to enable type choices in leaves | "An identity used to enable type choices in leaves | |||
and leaflists with respect to protocol metadata. This is used | and leaf-lists with respect to protocol metadata. This is used | |||
to identify the type of protocol that goes through the NSF."; | to identify the type of protocol that goes through the NSF."; | |||
} | } | |||
identity ip { | identity ip { | |||
base protocol; | base protocol; | |||
description | description | |||
"General IP protocol type."; | "General IP protocol type."; | |||
reference | reference | |||
"RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
RFC 8200: Internet Protocol, Version 6 (IPv6)"; | RFC 8200: Internet Protocol, Version 6 (IPv6)"; | |||
} | } | |||
skipping to change at page 50, line 40 ¶ | skipping to change at page 49, line 23 ¶ | |||
base protocol; | base protocol; | |||
description | description | |||
"Base identity for Layer 4 protocol condition capabilities, | "Base identity for Layer 4 protocol condition capabilities, | |||
e.g., TCP, UDP, SCTP, DCCP, and ICMP"; | e.g., TCP, UDP, SCTP, DCCP, and ICMP"; | |||
} | } | |||
identity tcp { | identity tcp { | |||
base transport-protocol; | base transport-protocol; | |||
description | description | |||
"TCP protocol type."; | "TCP protocol type."; | |||
reference | reference | |||
"RFC 793: Transmission Control Protocol | "draft-ietf-tcpm-rfc793bis-25: Transmission Control Protocol | |||
draft-ietf-tcpm-rfc793bis-25: Transmission Control Protocol | ||||
(TCP) Specification"; | (TCP) Specification"; | |||
} | } | |||
identity udp { | identity udp { | |||
base transport-protocol; | base transport-protocol; | |||
description | description | |||
"UDP protocol type."; | "UDP protocol type."; | |||
reference | reference | |||
"RFC 768: User Datagram Protocol"; | "RFC 768: User Datagram Protocol"; | |||
} | } | |||
identity sctp { | identity sctp { | |||
skipping to change at page 51, line 21 ¶ | skipping to change at page 49, line 51 ¶ | |||
identity dccp { | identity dccp { | |||
base transport-protocol; | base transport-protocol; | |||
description | description | |||
"Identity for DCCP condition capabilities"; | "Identity for DCCP condition capabilities"; | |||
reference | reference | |||
"RFC 4340: Datagram Congestion Control Protocol"; | "RFC 4340: Datagram Congestion Control Protocol"; | |||
} | } | |||
identity application-protocol { | identity application-protocol { | |||
base protocol; | base protocol; | |||
description | description | |||
"Base identity for Application protocol. Note that popular | "Base identity for Application protocol. Note that a subset of | |||
application protocols (e.g., HTTP, HTTPS, FTP, POP3, and | application protocols (e.g., HTTP, HTTPS, FTP, POP3, and | |||
IMAP) are handled in this YANG module, rather than all | IMAP) are handled in this YANG module, rather than all | |||
the existing application protocols."; | the existing application protocols."; | |||
} | } | |||
identity http { | identity http { | |||
base application-protocol; | base application-protocol; | |||
description | description | |||
"The identity for Hypertext Transfer Protocol version 1.X | "The identity for Hypertext Transfer Protocol version 1.1 | |||
(HTTP/1.X)."; | (HTTP/1.1)."; | |||
reference | reference | |||
"draft-ietf-httpbis-semantics-19: HTTP Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
draft-ietf-httpbis-messaging-19: HTTP/1.1"; | draft-ietf-httpbis-messaging-19: HTTP/1.1"; | |||
} | } | |||
identity https { | identity https { | |||
base application-protocol; | base application-protocol; | |||
description | description | |||
"The identity for Hypertext Transfer Protocol version 1.X | "The identity for Hypertext Transfer Protocol version 1.1 | |||
(HTTP/1.X) over TLS."; | (HTTP/1.1) over TLS."; | |||
reference | reference | |||
"draft-ietf-httpbis-semantics-19: HTTP Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
draft-ietf-httpbis-messaging-19: HTTP/1.1"; | draft-ietf-httpbis-messaging-19: HTTP/1.1"; | |||
} | } | |||
identity http2 { | identity http2 { | |||
base application-protocol; | base application-protocol; | |||
description | description | |||
"The identity for Hypertext Transfer Protocol version 2 | "The identity for Hypertext Transfer Protocol version 2 | |||
(HTTP/2)."; | (HTTP/2)."; | |||
reference | reference | |||
skipping to change at page 53, line 40 ¶ | skipping to change at page 52, line 22 ¶ | |||
grouping timestamp { | grouping timestamp { | |||
description | description | |||
"Grouping for identifying the time of the message."; | "Grouping for identifying the time of the message."; | |||
leaf timestamp { | leaf timestamp { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"Specify the time of a message being delivered."; | "Specify the time of a message being delivered."; | |||
} | } | |||
} | } | |||
grouping common-monitoring-data { | grouping message { | |||
description | description | |||
"A set of common monitoring data that is needed | "A set of common monitoring data that is needed | |||
as the basic information."; | as the basic information."; | |||
leaf message { | leaf message { | |||
type string; | type string; | |||
description | description | |||
"This is a freetext annotation for | "This is a freetext annotation for | |||
monitoring a notification's content."; | monitoring a notification's content."; | |||
} | } | |||
leaf language { | ||||
type string { | ||||
pattern '(([A-Za-z]{2,3}(-[A-Za-z]{3}(-[A-Za-z]{3})' | ||||
+ '{,2})?|[A-Za-z]{4}|[A-Za-z]{5,8})(-[A-Za-z]{4})?' | ||||
+ '(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}' | ||||
+ '|([0-9][A-Za-z0-9]{3})))*(-[0-9A-WY-Za-wy-z]' | ||||
+ '(-([A-Za-z0-9]{2,8}))+)*(-[Xx](-([A-Za-z0-9]' | ||||
+ '{1,8}))+)?|[Xx](-([A-Za-z0-9]{1,8}))+|' | ||||
+ '(([Ee][Nn]-[Gg][Bb]-[Oo][Ee][Dd]|[Ii]-' | ||||
+ '[Aa][Mm][Ii]|[Ii]-[Bb][Nn][Nn]|[Ii]-' | ||||
+ '[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Ii]-' | ||||
+ '[Ee][Nn][Oo][Cc][Hh][Ii][Aa][Nn]' | ||||
+ '|[Ii]-[Hh][Aa][Kk]|' | ||||
+ '[Ii]-[Kk][Ll][Ii][Nn][Gg][Oo][Nn]|' | ||||
+ '[Ii]-[Ll][Uu][Xx]|[Ii]-[Mm][Ii][Nn][Gg][Oo]|' | ||||
+ '[Ii]-[Nn][Aa][Vv][Aa][Jj][Oo]|[Ii]-[Pp][Ww][Nn]|' | ||||
+ '[Ii]-[Tt][Aa][Oo]|[Ii]-[Tt][Aa][Yy]|' | ||||
+ '[Ii]-[Tt][Ss][Uu]|[Ss][Gg][Nn]-[Bb][Ee]-[Ff][Rr]|' | ||||
+ '[Ss][Gg][Nn]-[Bb][Ee]-[Nn][Ll]|[Ss][Gg][Nn]-' | ||||
+ '[Cc][Hh]-[Dd][Ee])|([Aa][Rr][Tt]-' | ||||
+ '[Ll][Oo][Jj][Bb][Aa][Nn]|[Cc][Ee][Ll]-' | ||||
+ '[Gg][Aa][Uu][Ll][Ii][Ss][Hh]|' | ||||
+ '[Nn][Oo]-[Bb][Oo][Kk]|[Nn][Oo]-' | ||||
+ '[Nn][Yy][Nn]|[Zz][Hh]-[Gg][Uu][Oo][Yy][Uu]|' | ||||
+ '[Zz][Hh]-[Hh][Aa][Kk][Kk][Aa]|[Zz][Hh]-' | ||||
+ '[Mm][Ii][Nn]|[Zz][Hh]-[Mm][Ii][Nn]-' | ||||
+ '[Nn][Aa][Nn]|[Zz][Hh]-[Xx][Ii][Aa][Nn][Gg])))'; | ||||
} | ||||
default "en-US"; | ||||
description | ||||
"The value in this field indicates the language tag | ||||
used for the human readable fields (i.e., '../message', | ||||
'/i2nsf-log/i2nsf-nsf-system-access-log/output', and | ||||
'/i2nsf-log/i2nsf-system-user-activity-log/additional-info | ||||
/cause'). | ||||
The attribute is encoded following the rules in Section 2.1 | ||||
in RFC 5646. The default language tag is 'en-US'"; | ||||
reference | ||||
"RFC 5646: Tags for Identifying Languages"; | ||||
} | ||||
} | ||||
grouping common-monitoring-data { | ||||
description | ||||
"A set of common monitoring data that is needed | ||||
as the basic information."; | ||||
leaf vendor-name { | leaf vendor-name { | |||
type string; | type string; | |||
description | description | |||
"The name of the NSF vendor. The string is unrestricted to | "The name of the NSF vendor. The string is unrestricted to | |||
identify the provider or vendor of the NSF."; | identify the provider or vendor of the NSF."; | |||
} | } | |||
leaf device-model { | ||||
type string; | ||||
description | ||||
"The model of the device, can be represented by the | ||||
device model name or serial number. This field is used to | ||||
identify the model of the device that provides the security | ||||
service."; | ||||
} | ||||
leaf software-version { | ||||
type string; | ||||
description | ||||
"The version of the software used to provide the security | ||||
service"; | ||||
} | ||||
leaf nsf-name { | leaf nsf-name { | |||
type union { | type union { | |||
type string; | type string; | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
} | } | |||
mandatory true; | ||||
description | description | |||
"The name or IP address of the NSF generating the message. | "The name or IP address of the NSF generating the message. | |||
If the given nsf-name is not an IP address, the name can be | If the given nsf-name is not an IP address, the name can be | |||
an arbitrary string including a FQDN (Fully Qualified Domain | an arbitrary string including a FQDN (Fully Qualified Domain | |||
Name). The name MUST be unique in the scope of management | Name). The name MUST be unique in the scope of management | |||
domain for a different NSF to identify the NSF that | domain for a different NSF to identify the NSF that | |||
generates the message."; | generates the message."; | |||
} | } | |||
leaf severity { | ||||
type severity; | ||||
description | ||||
"The severity of the alarm such as critical, high, | ||||
middle, and low."; | ||||
} | ||||
} | } | |||
grouping characteristics { | grouping characteristics { | |||
description | description | |||
"A set of characteristics of a notification."; | "A set of characteristics of a monitoring information."; | |||
leaf acquisition-method { | leaf acquisition-method { | |||
type identityref { | type identityref { | |||
base acquisition-method; | base acquisition-method; | |||
} | } | |||
description | description | |||
"The acquisition-method for characteristics"; | "The acquisition-method for characteristics"; | |||
} | } | |||
leaf emission-type { | leaf emission-type { | |||
when "derived-from-or-self(../acquisition-method, " | ||||
+ "'nsfmi:subscription')"; | ||||
type identityref { | type identityref { | |||
base emission-type; | base emission-type; | |||
} | } | |||
description | description | |||
"The emission-type for characteristics"; | "The emission-type for characteristics. This attribute is | |||
used only when the acquisition-method is a 'subscription'"; | ||||
} | } | |||
} | ||||
grouping characteristics-extended { | ||||
description | ||||
"An extended characteristics for the monitoring information."; | ||||
uses characteristics; | ||||
leaf dampening-type { | leaf dampening-type { | |||
type identityref { | type identityref { | |||
base dampening-type; | base dampening-type; | |||
} | } | |||
description | description | |||
"The dampening-type for characteristics"; | "The dampening-type for characteristics"; | |||
} | } | |||
} | } | |||
grouping i2nsf-system-alarm-type-content { | grouping i2nsf-system-alarm-type-content { | |||
description | description | |||
"A set of contents for alarm type notification."; | "A set of contents for alarm type notification."; | |||
leaf usage { | leaf usage { | |||
type uint8 { | type uint8 { | |||
range "0..100"; | range "0..100"; | |||
} | } | |||
units "percent"; | units "percent"; | |||
description | description | |||
skipping to change at page 55, line 48 ¶ | skipping to change at page 55, line 45 ¶ | |||
leaf-list group { | leaf-list group { | |||
type string; | type string; | |||
min-elements 1; | min-elements 1; | |||
description | description | |||
"The group(s) to which a user belongs."; | "The group(s) to which a user belongs."; | |||
} | } | |||
leaf ip-address { | leaf ip-address { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The IPv4 (or IPv6) address of a user that trigger the | "The IPv4 or IPv6 address of a user that trigger the | |||
event."; | event."; | |||
} | } | |||
leaf l4-port-number { | leaf l4-port-number { | |||
type inet:port-number; | type inet:port-number; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The transport layer port number used by the user."; | "The transport layer port number used by the user."; | |||
} | } | |||
leaf authentication { | leaf authentication { | |||
type identityref { | type identityref { | |||
base authentication-mode; | base authentication-mode; | |||
} | } | |||
description | description | |||
"The authentication-mode of a user."; | "The authentication-mode of a user."; | |||
} | } | |||
} | } | |||
grouping i2nsf-nsf-event-type-content { | grouping i2nsf-nsf-event-type-content { | |||
description | description | |||
"A set of common IPv4 (or IPv6)-related NSF event | "A set of common IPv4 or IPv6-related NSF event | |||
content elements"; | content elements"; | |||
leaf dst-ip { | leaf dst-ip { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The destination IPv4 (IPv6) address of the packet"; | "The destination IPv4 or IPv6 address of the packet"; | |||
} | } | |||
leaf dst-port { | leaf dst-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The destination port of the packet"; | "The destination port of the packet"; | |||
} | } | |||
leaf rule-name { | leaf rule-name { | |||
type leafref { | type leafref { | |||
path | path | |||
"/nsfintf:i2nsf-security-policy" | "/nsfintf:i2nsf-security-policy" | |||
+"/nsfintf:rules/nsfintf:name"; | +"/nsfintf:rules/nsfintf:name"; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The name of the I2NSF Policy Rule being triggered"; | "The name of the I2NSF Policy Rule being triggered"; | |||
} | } | |||
} | } | |||
grouping i2nsf-nsf-event-type-content-extend { | grouping i2nsf-nsf-event-type-content-extend { | |||
description | description | |||
"A set of extended common IPv4 (or IPv6)-related NSF | "A set of extended common IPv4 or IPv6 related NSF | |||
event content elements"; | event content elements"; | |||
uses i2nsf-nsf-event-type-content; | ||||
leaf src-ip { | leaf src-ip { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The source IPv4 (or IPv6) address of the packet or flow"; | "The source IPv4 or IPv6 address of the packet or flow"; | |||
} | } | |||
leaf src-port { | leaf src-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The source port of the packet or flow"; | "The source port of the packet or flow"; | |||
} | } | |||
uses i2nsf-nsf-event-type-content; | ||||
} | } | |||
grouping log-action { | grouping action { | |||
description | description | |||
"A grouping for logging action."; | "A grouping for action."; | |||
leaf-list action { | leaf-list action { | |||
type log-action; | type identityref { | |||
base nsfintf:ingress-action; | ||||
} | ||||
description | description | |||
"Action type: allow, alert, block, discard, declare, | "Action type: pass, drop, reject, mirror, or rate limit"; | |||
block-ip, block-service"; | ||||
} | } | |||
} | } | |||
grouping attack-rates { | grouping attack-rates { | |||
description | description | |||
"A set of traffic rates for monitoring attack traffic | "A set of traffic rates for monitoring attack traffic | |||
data"; | data"; | |||
leaf attack-rate { | leaf attack-rate { | |||
type uint32; | type uint64; | |||
units "pps"; | units "pps"; | |||
description | description | |||
"The average packets per second (pps) rate of attack | "The average packets per second (pps) rate of attack | |||
traffic"; | traffic"; | |||
} | } | |||
leaf attack-throughput { | leaf attack-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"The average bytes per second (Bps) throughput of attack | "The average bytes per second (Bps) throughput of attack | |||
skipping to change at page 58, line 4 ¶ | skipping to change at page 57, line 52 ¶ | |||
type yang:date-and-time; | type yang:date-and-time; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time on the most recent occasion at which any one or | |||
more of the counters suffered a discontinuity. | more of the counters suffered a discontinuity. | |||
If no such discontinuities have occurred since the last | If no such discontinuities have occurred since the last | |||
re-initialization of the local management subsystem, then | re-initialization of the local management subsystem, then | |||
this node contains the time the local management subsystem | this node contains the time the local management subsystem | |||
was re-initialized."; | was re-initialized."; | |||
} | } | |||
leaf measurement-time { | ||||
type uint32; | ||||
units "seconds"; | ||||
description | ||||
"The time of the measurement in seconds for the | ||||
calculation of statistics such as traffic rate and | ||||
throughput. The statistic attributes are measured over | ||||
the past measurement duration before now."; | ||||
} | ||||
leaf total-traffic { | leaf total-traffic { | |||
type yang:counter64; | type yang:counter64; | |||
units "packets"; | units "packets"; | |||
description | description | |||
"The total number of traffic packets (in and out) in the | "The total number of traffic packets (in and out) in the | |||
NSF."; | NSF."; | |||
} | } | |||
leaf in-traffic-average-rate { | leaf in-traffic-average-rate { | |||
type uint32; | type uint64; | |||
units "pps"; | units "pps"; | |||
description | description | |||
"Inbound traffic average rate in packets per second (pps). | "Inbound traffic average rate in packets per second (pps). | |||
The average is calculated from the start of the NSF service | The average is calculated from the start of the NSF service | |||
until the generation of this record."; | until the generation of this record."; | |||
} | } | |||
leaf in-traffic-peak-rate { | leaf in-traffic-peak-rate { | |||
type uint32; | type uint64; | |||
units "pps"; | units "pps"; | |||
description | description | |||
"Inbound traffic peak rate in packets per second (pps)."; | "Inbound traffic peak rate in packets per second (pps)."; | |||
} | } | |||
leaf in-traffic-average-throughput { | leaf in-traffic-average-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"Inbound traffic average throughput in bytes per second | "Inbound traffic average throughput in bytes per second | |||
(Bps). The average is calculated from the start of the NSF | (Bps). The average is calculated from the start of the NSF | |||
service until the generation of this record."; | service until the generation of this record."; | |||
} | } | |||
leaf in-traffic-peak-throughput { | leaf in-traffic-peak-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"Inbound traffic peak throughput in bytes per second (Bps)."; | "Inbound traffic peak throughput in bytes per second (Bps)."; | |||
} | } | |||
leaf out-traffic-average-rate { | leaf out-traffic-average-rate { | |||
type uint32; | type uint64; | |||
units "pps"; | units "pps"; | |||
description | description | |||
"Outbound traffic average rate in packets per second (pps). | "Outbound traffic average rate in packets per second (pps). | |||
The average is calculated from the start of the NSF service | The average is calculated from the start of the NSF service | |||
until the generation of this record."; | until the generation of this record."; | |||
} | } | |||
leaf out-traffic-peak-rate { | leaf out-traffic-peak-rate { | |||
type uint32; | type uint64; | |||
units "pps"; | units "pps"; | |||
description | description | |||
"Outbound traffic peak rate in packets per second (pps)."; | "Outbound traffic peak rate in packets per second (pps)."; | |||
} | } | |||
leaf out-traffic-average-throughput { | leaf out-traffic-average-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"Outbound traffic average throughput in bytes per second | "Outbound traffic average throughput in bytes per second | |||
(Bps). The average is calculated from the start of the NSF | (Bps). The average is calculated from the start of the NSF | |||
service until the generation of this record."; | service until the generation of this record."; | |||
} | } | |||
leaf out-traffic-peak-throughput { | leaf out-traffic-peak-throughput { | |||
skipping to change at page 59, line 22 ¶ | skipping to change at page 59, line 30 ¶ | |||
service until the generation of this record."; | service until the generation of this record."; | |||
} | } | |||
leaf out-traffic-peak-throughput { | leaf out-traffic-peak-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"Outbound traffic peak throughput in bytes per second | "Outbound traffic peak throughput in bytes per second | |||
(Bps)."; | (Bps)."; | |||
} | } | |||
} | } | |||
grouping i2nsf-system-counter-type-content{ | grouping i2nsf-system-counter-type-content { | |||
description | description | |||
"A set of counters for an interface traffic data."; | "A set of counters for an interface traffic data."; | |||
leaf interface-name { | leaf interface-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Network interface name configured in an NSF"; | "Network interface name configured in an NSF"; | |||
reference | reference | |||
"RFC 8343: A YANG Data Model for Interface Management"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
leaf protocol { | leaf protocol { | |||
skipping to change at page 60, line 39 ¶ | skipping to change at page 60, line 48 ¶ | |||
} | } | |||
leaf out-drop-traffic-bytes { | leaf out-drop-traffic-bytes { | |||
type uint64; | type uint64; | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"Total outbound drop bytes"; | "Total outbound drop bytes"; | |||
} | } | |||
uses traffic-rates; | uses traffic-rates; | |||
} | } | |||
grouping i2nsf-nsf-counters-type-content{ | grouping i2nsf-nsf-counters-type-content { | |||
description | description | |||
"A set of contents of a policy in an NSF."; | "A set of contents of a policy in an NSF."; | |||
leaf policy-name { | leaf policy-name { | |||
type leafref { | type leafref { | |||
path | path | |||
"/nsfintf:i2nsf-security-policy" | "/nsfintf:i2nsf-security-policy" | |||
+"/nsfintf:name"; | +"/nsfintf:name"; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The name of the policy being triggered"; | "The name of the policy being triggered"; | |||
} | } | |||
leaf src-user{ | ||||
type string; | ||||
description | ||||
"The I2NSF User's name who generates the policy."; | ||||
} | ||||
} | } | |||
grouping enable-notification { | grouping enable-notification { | |||
description | description | |||
"A grouping for enabling or disabling notification"; | "A grouping for enabling or disabling notification"; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"Enables or Disables the notification. | "Enables or Disables the notification. | |||
If 'true', then the notification is enabled. | If 'true', then the notification is enabled. | |||
If 'false, then the notification is disabled."; | If 'false, then the notification is disabled."; | |||
} | } | |||
} | } | |||
grouping dampening { | grouping dampening { | |||
description | description | |||
"A grouping for dampening period of notification."; | "A grouping for dampening period of notification."; | |||
leaf dampening-period { | leaf dampening-period { | |||
type uint32; | type centiseconds; | |||
units "centiseconds"; | ||||
default "0"; | default "0"; | |||
description | description | |||
"Specifies the minimum interval between the assembly of | "Specifies the minimum interval between the assembly of | |||
successive update records for a single receiver of a | successive update records for a single receiver of a | |||
subscription. Whenever subscribed objects change and | subscription. Whenever subscribed objects change and | |||
a dampening-period interval (which may be zero) has | a dampening-period interval (which may be zero) has | |||
elapsed since the previous update record creation for | elapsed since the previous update record creation for | |||
a receiver, any subscribed objects and properties | a receiver, any subscribed objects and properties | |||
that have changed since the previous update record | that have changed since the previous update record | |||
will have their current values marshalled and placed | will have their current values marshalled and placed | |||
skipping to change at page 62, line 4 ¶ | skipping to change at page 62, line 6 ¶ | |||
record without sending the notification until the dampening- | record without sending the notification until the dampening- | |||
period is finished. If multiple changes happen during the | period is finished. If multiple changes happen during the | |||
active dampening-period, it should update the record with | active dampening-period, it should update the record with | |||
the latest data. And at the end of the dampening-period, it | the latest data. And at the end of the dampening-period, it | |||
should send the record as a notification with the latest | should send the record as a notification with the latest | |||
updated record and restart the countdown."; | updated record and restart the countdown."; | |||
reference | reference | |||
"RFC 8641: Subscription to YANG Notifications for | "RFC 8641: Subscription to YANG Notifications for | |||
Datastore Updates - Section 5."; | Datastore Updates - Section 5."; | |||
} | } | |||
} | ||||
grouping language { | ||||
description | ||||
"A grouping for language tag"; | ||||
leaf language { | ||||
type string { | ||||
pattern | ||||
"^((en-GB-oed|i-ami|i-bnn|i-default|" | ||||
+ "i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|" | ||||
+ "i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|" | ||||
+ "(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|" | ||||
+ "zh-min|zh-min-nan|zh-xiang)|" | ||||
+ "(([A-Za-z]{2,3}(-[A-Za-z]{3}(-[A-Za-z]{3}){0,2})?)|" | ||||
+ "[A-Za-z]{4}|[A-Za-z]{5,8}" | ||||
+ "(-[A-Za-z]{4})?" | ||||
+ "(-[A-Za-z]{2}|[0-9]{3})?" | ||||
+ "(-[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3})*" | ||||
+ "(-[0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+)*" | ||||
+ "(-x(-[A-Za-z0-9]{1,8})+)?)|" | ||||
+ "x(-[A-Za-z0-9]{1,8})+)$"; | ||||
} | ||||
description | ||||
"The value in this field describes the human language | ||||
intended for the user, so that it allows a user to | ||||
differentiate the language that is used in the | ||||
notification. This field is mandatory only | ||||
when the implementation provides more than one human | ||||
language for the human-readable string fields. | ||||
This field uses the language-tag production in Section 2.1 | ||||
in RFC 5646. See the document for more details."; | ||||
reference | ||||
"RFC 5646: Tags for Identifying Languages"; | ||||
} | ||||
} | } | |||
/* | /* | |||
* Feature Nodes | * Feature Nodes | |||
*/ | */ | |||
feature i2nsf-nsf-detection-ddos { | feature i2nsf-nsf-detection-ddos { | |||
description | description | |||
"This feature means it supports I2NSF nsf-detection-ddos | "This feature means it supports I2NSF nsf-detection-ddos | |||
notification"; | notification"; | |||
skipping to change at page 63, line 34 ¶ | skipping to change at page 62, line 49 ¶ | |||
"This feature means it supports I2NSF nsf-log-dpi | "This feature means it supports I2NSF nsf-log-dpi | |||
notification"; | notification"; | |||
} | } | |||
/* | /* | |||
* Notification nodes | * Notification nodes | |||
*/ | */ | |||
notification i2nsf-event { | notification i2nsf-event { | |||
description | description | |||
"Notification for I2NSF Event."; | "Notification for I2NSF Event. This notification provides | |||
general information that can be supported by most types of | ||||
NSFs."; | ||||
uses language; | uses common-monitoring-data; | |||
uses message; | ||||
uses characteristics-extended; | ||||
choice sub-event-type { | choice sub-event-type { | |||
description | description | |||
"This choice must be augmented with cases for each allowed | "This choice must be augmented with cases for each allowed | |||
sub-event. Only 1 sub-event will be instantiated in each | sub-event. Only 1 sub-event will be instantiated in each | |||
i2nsf-event message. Each case is expected to define one | i2nsf-event message. Each case is expected to define one | |||
container with all the sub-event fields."; | container with all the sub-event fields."; | |||
case i2nsf-system-detection-alarm { | case i2nsf-system-detection-alarm { | |||
container i2nsf-system-detection-alarm{ | container i2nsf-system-detection-alarm { | |||
description | description | |||
"This notification is sent, when a system alarm | "This notification is sent, when a system alarm | |||
is detected."; | is detected."; | |||
leaf alarm-category { | leaf alarm-category { | |||
type identityref { | type identityref { | |||
base system-alarm; | base system-alarm; | |||
} | } | |||
description | description | |||
"The alarm category for | "The alarm category for | |||
system-detection-alarm notification"; | system-detection-alarm notification"; | |||
} | } | |||
leaf component-name { | leaf component-name { | |||
type string; | type string; | |||
description | description | |||
"The hardware component responsible for generating | "The hardware component responsible for generating | |||
the message. Applicable for Hardware Failure | the message. Applicable for Hardware Failure | |||
skipping to change at page 64, line 18 ¶ | skipping to change at page 63, line 36 ¶ | |||
system-detection-alarm notification"; | system-detection-alarm notification"; | |||
} | } | |||
leaf component-name { | leaf component-name { | |||
type string; | type string; | |||
description | description | |||
"The hardware component responsible for generating | "The hardware component responsible for generating | |||
the message. Applicable for Hardware Failure | the message. Applicable for Hardware Failure | |||
Alarm."; | Alarm."; | |||
} | } | |||
leaf interface-name { | leaf interface-name { | |||
when "derived-from-or-self(../alarm-category, " | ||||
+ "'nsfmi:interface-alarm')"; | ||||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The interface name responsible for generating | "The interface name responsible for generating | |||
the message. Applicable for Network Interface | the message. Applicable for Network Interface | |||
Failure Alarm."; | Failure Alarm."; | |||
reference | reference | |||
"RFC 8343: A YANG Data Model for Interface Management"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
leaf interface-state { | leaf interface-state { | |||
when "derived-from-or-self(../alarm-category, " | ||||
+ "'nsfmi:interface-alarm')"; | ||||
type enumeration { | type enumeration { | |||
enum up { | enum up { | |||
value 1; | value 1; | |||
description | description | |||
"The interface state is up and not congested. | "The interface state is up and not congested. | |||
The interface is ready to pass packets."; | The interface is ready to pass packets."; | |||
} | } | |||
enum down { | enum down { | |||
value 2; | value 2; | |||
description | description | |||
skipping to change at page 65, line 30 ¶ | skipping to change at page 65, line 4 ¶ | |||
"Down due to state of lower-layer interface(s)."; | "Down due to state of lower-layer interface(s)."; | |||
} | } | |||
} | } | |||
description | description | |||
"The state of the interface. Applicable for Network | "The state of the interface. Applicable for Network | |||
Interface Failure Alarm."; | Interface Failure Alarm."; | |||
reference | reference | |||
"RFC 8343: A YANG Data Model for Interface Management - | "RFC 8343: A YANG Data Model for Interface Management - | |||
Operational States"; | Operational States"; | |||
} | } | |||
uses characteristics; | leaf severity { | |||
type severity; | ||||
description | ||||
"The severity of the alarm such as critical, high, | ||||
middle, and low."; | ||||
} | ||||
uses i2nsf-system-alarm-type-content; | uses i2nsf-system-alarm-type-content; | |||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
case i2nsf-system-detection-event { | case i2nsf-system-detection-event { | |||
container i2nsf-system-detection-event { | container i2nsf-system-detection-event { | |||
description | description | |||
"This notification is sent when a security-sensitive | "This notification is sent when an event in the system is | |||
authentication action fails."; | detected, such as access violation and configuration | |||
change"; | ||||
leaf event-category { | leaf event-category { | |||
type identityref { | type identityref { | |||
base system-event; | base system-event; | |||
} | } | |||
description | description | |||
"The event category for system-detection-event"; | "The event category for system-detection-event"; | |||
} | } | |||
uses characteristics; | ||||
uses i2nsf-system-event-type-content; | uses i2nsf-system-event-type-content; | |||
uses common-monitoring-data; | ||||
list changes { | list changes { | |||
when "derived-from-or-self(../event-category, " | ||||
+ "'nsfmi:configuration-change')"; | ||||
key policy-name; | key policy-name; | |||
description | description | |||
"Describes the modification that was made to the | "Describes the modification that was made to the | |||
configuration. The minimum information that must be | configuration. This list is only applicable when the | |||
provided is the name of the policy that has been | event is 'configuration-change'. | |||
altered (added, modified, or removed). | The minimum information that must be provided is the | |||
name of the policy that has been altered (added, | ||||
modified, or removed). | ||||
This list can be extended with the detailed | This list can be extended with the detailed | |||
information about the specific changes made to the | information about the specific changes made to the | |||
configuration based on the implementation."; | configuration based on the implementation."; | |||
leaf policy-name { | leaf policy-name { | |||
type leafref { | type leafref { | |||
path | path | |||
"/nsfintf:i2nsf-security-policy" | "/nsfintf:i2nsf-security-policy" | |||
+"/nsfintf:name"; | +"/nsfintf:name"; | |||
} | } | |||
description | description | |||
skipping to change at page 67, line 9 ¶ | skipping to change at page 66, line 39 ¶ | |||
egress interface."; | egress interface."; | |||
} | } | |||
} | } | |||
description | description | |||
"The type of a network interface such as an ingress or | "The type of a network interface such as an ingress or | |||
egress interface."; | egress interface."; | |||
} | } | |||
leaf src-mac { | leaf src-mac { | |||
type yang:mac-address; | type yang:mac-address; | |||
description | description | |||
"The source MAC address of the traffic flow."; | "The source MAC address of the traffic flow. This | |||
information may or may not be included depending on | ||||
the type of traffic flow. For example, the information | ||||
will be useful and should be included if the traffic | ||||
flows are traffic flows of Link Layer Discovery | ||||
Protocol (LLDP), Address Resolution Protocol (ARP) for | ||||
IPv4, and Neighbor Discovery Protocol (ND) for IPv6."; | ||||
reference | ||||
"IEEE-802.1AB: IEEE Standard for Local and metropolitan | ||||
area networks - Station and Media Access Control | ||||
Connectivity Discovery - Link Layer Discovery Protocol | ||||
(LLDP) | ||||
RFC 826: An Ethernet Address Resolution Protocol - | ||||
Address Resolution Protocol (ARP) | ||||
RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
Neighbor Discovery Protocol (ND)"; | ||||
} | } | |||
leaf dst-mac { | leaf dst-mac { | |||
type yang:mac-address; | type yang:mac-address; | |||
description | description | |||
"The destination MAC address of the traffic flow."; | "The destination MAC address of the traffic flow. This | |||
information may or may not be included depending on | ||||
the type of traffic flow. For example, the information | ||||
will be useful and should be included if the traffic | ||||
flows are traffic flows of Link Layer Discovery | ||||
Protocol (LLDP), Address Resolution Protocol (ARP) for | ||||
IPv4, and Neighbor Discovery Protocol (ND) for IPv6."; | ||||
reference | ||||
"IEEE-802.1AB: IEEE Standard for Local and metropolitan | ||||
area networks - Station and Media Access Control | ||||
Connectivity Discovery - Link Layer Discovery Protocol | ||||
(LLDP) | ||||
RFC 826: An Ethernet Address Resolution Protocol - | ||||
Address Resolution Protocol (ARP) | ||||
RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
Neighbor Discovery Protocol (ND)"; | ||||
} | } | |||
leaf src-ip { | leaf src-ip { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The source IPv4 (or IPv6) address of the flow"; | "The source IPv4 or IPv6 address of the traffic flow"; | |||
} | } | |||
leaf dst-ip { | leaf dst-ip { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The destination IPv4 (or IPv6) address of the flow"; | "The destination IPv4 or IPv6 address of the traffic | |||
flow"; | ||||
} | } | |||
leaf protocol { | leaf protocol { | |||
type identityref { | type identityref { | |||
base protocol; | base protocol; | |||
} | } | |||
description | description | |||
"The protocol type for nsf-detection-intrusion | "The protocol type of a traffic flow"; | |||
notification"; | ||||
} | } | |||
leaf src-port { | leaf src-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The transport layer source port number of the flow"; | "The transport layer source port number of the flow"; | |||
} | } | |||
leaf dst-port { | leaf dst-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The transport layer destination port number of the | "The transport layer destination port number of the | |||
flow"; | flow"; | |||
} | } | |||
leaf arrival-rate { | leaf measurement-time { | |||
type uint32; | type uint32; | |||
units "seconds"; | ||||
description | ||||
"The duration of the measurement in seconds for the | ||||
arrival rate and arrival throughput of packets of a | ||||
traffic flow. These two metrics (i.e., arrival rate | ||||
and arrival throughput) are measured over the past | ||||
measurement duration before now."; | ||||
} | ||||
leaf arrival-rate { | ||||
type uint64; | ||||
units "pps"; | units "pps"; | |||
description | description | |||
"The average arrival rate of the flow in packets per | "The arrival rate of packets of the traffic flow in | |||
second. The average is calculated from the start of | packets per second measured over the past | |||
the NSF service until the generation of this | 'measurement-time'."; | |||
record."; | ||||
} | } | |||
leaf arrival-throughput { | leaf arrival-throughput { | |||
type uint32; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"The average arrival rate of the flow in bytes per | "The arrival rate of packets of the traffic flow in | |||
second. The average is calculated from the start of | bytes per second measured over the past | |||
the NSF service until the generation of this | 'measurement-time'."; | |||
record."; | ||||
} | } | |||
uses characteristics; | ||||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
case i2nsf-nsf-detection-session-table { | case i2nsf-nsf-detection-session-table { | |||
container i2nsf-nsf-detection-session-table { | container i2nsf-nsf-detection-session-table { | |||
description | description | |||
"This notification is sent, when a session table | "This notification is sent, when a session table | |||
event is detected."; | event is detected."; | |||
leaf current-session { | leaf current-session { | |||
type uint32; | type uint32; | |||
skipping to change at page 68, line 35 ¶ | skipping to change at page 69, line 4 ¶ | |||
leaf current-session { | leaf current-session { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of concurrent sessions"; | "The number of concurrent sessions"; | |||
} | } | |||
leaf maximum-session { | leaf maximum-session { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum number of sessions that the session | "The maximum number of sessions that the session | |||
table can support"; | table can support"; | |||
} | } | |||
leaf threshold { | leaf threshold { | |||
type uint32; | type uint32; | |||
description | description | |||
"The threshold triggering the event"; | "The threshold triggering the event"; | |||
} | } | |||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
notification i2nsf-log { | notification i2nsf-log { | |||
description | description | |||
"Notification for I2NSF log. The notification is generated | "Notification for I2NSF log. The notification is generated | |||
from the logs of the NSF."; | from the logs of the NSF."; | |||
uses language; | uses common-monitoring-data; | |||
uses message; | ||||
uses characteristics-extended; | ||||
choice sub-logs-type { | choice sub-logs-type { | |||
description | description | |||
"This choice must be augmented with cases for each allowed | "This choice must be augmented with cases for each allowed | |||
sub-logs. Only 1 sub-event will be instantiated in each | sub-logs. Only 1 sub-event will be instantiated in each | |||
i2nsf-logs message. Each case is expected to define one | i2nsf-logs message. Each case is expected to define one | |||
container with all the sub-logs fields."; | container with all the sub-logs fields."; | |||
case i2nsf-nsf-system-access-log { | case i2nsf-nsf-system-access-log { | |||
container i2nsf-nsf-system-access-log { | container i2nsf-nsf-system-access-log { | |||
description | description | |||
skipping to change at page 69, line 35 ¶ | skipping to change at page 70, line 4 ¶ | |||
type string; | type string; | |||
description | description | |||
"The operation performed by a user after login. The | "The operation performed by a user after login. The | |||
operation is a command given by a user."; | operation is a command given by a user."; | |||
} | } | |||
leaf output { | leaf output { | |||
type string; | type string; | |||
description | description | |||
"The result in text format after executing the | "The result in text format after executing the | |||
input."; | input."; | |||
} | } | |||
uses characteristics; | ||||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
case i2nsf-system-res-util-log { | case i2nsf-system-res-util-log { | |||
container i2nsf-system-res-util-log { | container i2nsf-system-res-util-log { | |||
description | description | |||
"This notification is sent, if there is a new log | "This notification is sent, if there is a new log | |||
entry representing resource utilization updates."; | entry representing resource utilization updates."; | |||
leaf system-status { | leaf system-status { | |||
type enumeration { | type enumeration { | |||
skipping to change at page 70, line 31 ¶ | skipping to change at page 70, line 48 ¶ | |||
description | description | |||
"Specifies the relative percentage of CPU utilization | "Specifies the relative percentage of CPU utilization | |||
with respect to platform resources"; | with respect to platform resources"; | |||
} | } | |||
leaf memory-usage { | leaf memory-usage { | |||
type uint8; | type uint8; | |||
units "percent"; | units "percent"; | |||
description | description | |||
"Specifies the percentage of memory usage."; | "Specifies the percentage of memory usage."; | |||
} | } | |||
list disk { | list disks { | |||
key disk-id; | key disk-id; | |||
description | description | |||
"Disk is the hardware to store information for a | "Disk is the hardware to store information for a | |||
long period, i.e., Hard Disk or Solid-State Drive."; | long period, i.e., Hard Disk or Solid-State Drive."; | |||
leaf disk-id { | leaf disk-id { | |||
type string; | type string; | |||
description | description | |||
"The ID of the storage disk. It is a free form | "The ID of the storage disk. It is a free form | |||
identifier to identify the storage disk."; | identifier to identify the storage disk."; | |||
} | } | |||
leaf disk-usage { | leaf disk-usage { | |||
type uint8; | type uint8; | |||
units "percent"; | units "percent"; | |||
description | description | |||
skipping to change at page 71, line 29 ¶ | skipping to change at page 71, line 46 ¶ | |||
description | description | |||
"The network interface for connecting a device | "The network interface for connecting a device | |||
with the network."; | with the network."; | |||
leaf interface-id { | leaf interface-id { | |||
type string; | type string; | |||
description | description | |||
"The ID of the network interface. It is a free form | "The ID of the network interface. It is a free form | |||
identifier to identify the network interface."; | identifier to identify the network interface."; | |||
} | } | |||
leaf in-traffic-rate { | leaf in-traffic-rate { | |||
type uint32; | type uint64; | |||
units "pps"; | units "pps"; | |||
description | description | |||
"The total inbound traffic rate in packets per | "The total inbound traffic rate in packets per | |||
second"; | second"; | |||
} | } | |||
leaf out-traffic-rate { | leaf out-traffic-rate { | |||
type uint32; | type uint64; | |||
units "pps"; | units "pps"; | |||
description | description | |||
"The total outbound traffic rate in packets per | "The total outbound traffic rate in packets per | |||
second"; | second"; | |||
} | } | |||
leaf in-traffic-throughput { | leaf in-traffic-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"The total inbound traffic throughput in bytes per | "The total inbound traffic throughput in bytes per | |||
second"; | second"; | |||
} | } | |||
leaf out-traffic-throughput { | leaf out-traffic-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"The total outbound traffic throughput in bytes per | "The total outbound traffic throughput in bytes per | |||
second"; | second"; | |||
} | } | |||
} | } | |||
uses characteristics; | ||||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
case i2nsf-system-user-activity-log { | case i2nsf-system-user-activity-log { | |||
container i2nsf-system-user-activity-log { | container i2nsf-system-user-activity-log { | |||
description | description | |||
"This notification is sent, if there is a new user | "This notification is sent, if there is a new user | |||
activity log entry."; | activity log entry."; | |||
uses characteristics; | ||||
uses i2nsf-system-event-type-content; | uses i2nsf-system-event-type-content; | |||
uses common-monitoring-data; | ||||
leaf online-duration { | leaf online-duration { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"The duration of a user's activeness (stays in login) | "The duration of a user's activeness (stays in login) | |||
during a session."; | during a session."; | |||
} | } | |||
leaf logout-duration { | leaf logout-duration { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"The duration of a user's inactiveness (not in login) | "The duration of a user's inactiveness (not in login) | |||
from the last session."; | from the last session."; | |||
} | } | |||
leaf additional-info { | container additional-info { | |||
type enumeration { | leaf type { | |||
enum successful-login { | type enumeration { | |||
description | enum successful-login { | |||
"The user has succeeded in login."; | description | |||
} | "The user has succeeded in login."; | |||
enum failed-login { | } | |||
description | enum failed-login { | |||
"The user has failed in login (e.g., wrong | description | |||
password)"; | "The user has failed in login (e.g., wrong | |||
} | password)"; | |||
enum logout { | } | |||
description | enum logout { | |||
"The user has succeeded in logout"; | description | |||
} | "The user has succeeded in logout"; | |||
enum successful-password-changed { | } | |||
description | enum successful-password-changed { | |||
"The password has been changed successfully"; | description | |||
} | "The password has been changed successfully"; | |||
enum failed-password-changed{ | } | |||
description | enum failed-password-changed { | |||
"The attempt to change password has failed"; | description | |||
} | "The attempt to change password has failed"; | |||
enum lock { | } | |||
description | enum lock { | |||
"The user has been locked. A locked user cannot | description | |||
login."; | "The user has been locked. A locked user cannot | |||
} | login."; | |||
enum unlock { | } | |||
description | enum unlock { | |||
"The user has been unlocked."; | description | |||
"The user has been unlocked."; | ||||
} | ||||
} | } | |||
description | ||||
"User activities, e.g., Successful User Login, | ||||
Failed Login attempts, User Logout, Successful User | ||||
Password Change, Failed User Password Change, User | ||||
Lockout, User Unlocking, and Unknown."; | ||||
} | ||||
leaf cause { | ||||
type string; | ||||
description | ||||
"The cause of a failed user activity related to the | ||||
type of user activity. For example, when the 'type' | ||||
is failed-login, the value of this attribute can be | ||||
'Failed login attempt due to wrong password | ||||
entry'."; | ||||
} | } | |||
description | description | |||
"User activities, e.g., Successful User Login, | "The additional information about user activity."; | |||
Failed Login attempts, User Logout, Successful User | ||||
Password Change, Failed User Password Change, User | ||||
Lockout, User Unlocking, and Unknown."; | ||||
} | } | |||
} | } | |||
} | } | |||
case i2nsf-nsf-log-dpi { | case i2nsf-nsf-log-dpi { | |||
if-feature "i2nsf-nsf-log-dpi"; | if-feature "i2nsf-nsf-log-dpi"; | |||
container i2nsf-nsf-log-dpi { | container i2nsf-nsf-log-dpi { | |||
description | description | |||
"This notification is sent, if there is a new DPI | "This notification is sent, if there is a new DPI | |||
event in the NSF log."; | event in the NSF log."; | |||
leaf attack-type { | leaf attack-type { | |||
type dpi-type; | type identityref { | |||
base dpi-type; | ||||
} | ||||
description | description | |||
"The type of the DPI"; | "The type of the DPI"; | |||
} | } | |||
uses characteristics; | uses i2nsf-nsf-event-type-content-extend; | |||
uses i2nsf-nsf-counters-type-content; | uses action; | |||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
notification i2nsf-nsf-event { | notification i2nsf-nsf-event { | |||
description | description | |||
"Notification for I2NSF NSF Event. This notification is | "Notification for I2NSF NSF Event. This notification provides | |||
used for a specific NSF that supported such feature."; | specific information that can only be provided by an NSF | |||
that supports additional features (e.g., DDoS attack | ||||
detection)."; | ||||
uses language; | uses common-monitoring-data; | |||
uses message; | ||||
uses characteristics-extended; | ||||
choice sub-event-type { | choice sub-event-type { | |||
description | description | |||
"This choice must be augmented with cases for each allowed | "This choice must be augmented with cases for each allowed | |||
sub-event. Only 1 sub-event will be instantiated in each | sub-event. Only 1 sub-event will be instantiated in each | |||
i2nsf-event message. Each case is expected to define one | i2nsf-event message. Each case is expected to define one | |||
container with all the sub-event fields."; | container with all the sub-event fields."; | |||
case i2nsf-nsf-detection-ddos { | case i2nsf-nsf-detection-ddos { | |||
if-feature "i2nsf-nsf-detection-ddos"; | if-feature "i2nsf-nsf-detection-ddos"; | |||
container i2nsf-nsf-detection-ddos { | container i2nsf-nsf-detection-ddos { | |||
skipping to change at page 74, line 42 ¶ | skipping to change at page 75, line 24 ¶ | |||
type yang:date-and-time; | type yang:date-and-time; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The time stamp indicating when the attack started"; | "The time stamp indicating when the attack started"; | |||
} | } | |||
leaf end-time { | leaf end-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time stamp indicating when the attack ended. If | "The time stamp indicating when the attack ended. If | |||
the attack is still undergoing when sending out the | the attack is still undergoing when sending out the | |||
notification, this field can be empty."; | notification, this field can be omitted."; | |||
} | } | |||
leaf-list attack-src-ip { | leaf-list attack-src-ip { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The source IPv4 (or IPv6) addresses of attack | "The source IPv4 or IPv6 addresses of attack | |||
traffic. It can hold multiple IPv4 (or IPv6) | traffic. It can hold multiple IPv4 or IPv6 | |||
addresses."; | addresses. Note that all IP addresses should not be | |||
included, but only limited IP addresses are included | ||||
to conserve the server resources. The listed attacking | ||||
IP addresses can be an arbitrary sampling of the | ||||
'top talkers', i.e., the attackers that send the | ||||
highest amount of traffic."; | ||||
} | } | |||
leaf-list attack-dst-ip { | leaf-list attack-dst-ip { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"The destination IPv4 (or IPv6) addresses of attack | "The destination IPv4 or IPv6 addresses of attack | |||
traffic. It can hold multiple IPv4 (or IPv6) | traffic. It can hold multiple IPv4 or IPv6 | |||
addresses."; | addresses."; | |||
} | } | |||
leaf-list attack-src-port { | leaf-list attack-src-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The transport layer source ports of the DDoS attack"; | "The transport-layer source ports of the DDoS attack. | |||
Note that not all ports will have been seen on all the | ||||
corresponding source IP addresses."; | ||||
} | } | |||
leaf-list attack-dst-port { | leaf-list attack-dst-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The transport layer destination ports of the DDoS | "The transport-layer destination ports of the DDoS | |||
attack"; | attack. Note that not all ports will have been seen | |||
on all the corresponding destination IP addresses."; | ||||
} | } | |||
leaf rule-name { | leaf rule-name { | |||
type leafref { | type leafref { | |||
path | path | |||
"/nsfintf:i2nsf-security-policy" | "/nsfintf:i2nsf-security-policy" | |||
+"/nsfintf:rules/nsfintf:name"; | +"/nsfintf:rules/nsfintf:name"; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The name of the I2NSF Policy Rule being triggered"; | "The name of the I2NSF Policy Rule being triggered"; | |||
} | } | |||
uses attack-rates; | uses attack-rates; | |||
uses log-action; | ||||
uses characteristics; | ||||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
case i2nsf-nsf-detection-virus { | case i2nsf-nsf-detection-virus { | |||
if-feature "i2nsf-nsf-detection-virus"; | if-feature "i2nsf-nsf-detection-virus"; | |||
container i2nsf-nsf-detection-virus { | container i2nsf-nsf-detection-virus { | |||
description | description | |||
"This notification is sent, when a virus is detected."; | "This notification is sent, when a virus is detected."; | |||
uses i2nsf-nsf-event-type-content-extend; | uses i2nsf-nsf-event-type-content-extend; | |||
leaf virus-name { | leaf virus-name { | |||
type string; | type string; | |||
skipping to change at page 76, line 26 ¶ | skipping to change at page 77, line 11 ¶ | |||
used to identify the host/device that is infected by | used to identify the host/device that is infected by | |||
the virus. If the given name is not an IP address, the | the virus. If the given name is not an IP address, the | |||
name can be an arbitrary string including a FQDN | name can be an arbitrary string including a FQDN | |||
(Fully Qualified Domain Name). The name MUST be unique | (Fully Qualified Domain Name). The name MUST be unique | |||
in the scope of management domain for identifying the | in the scope of management domain for identifying the | |||
device that has been infected with a virus."; | device that has been infected with a virus."; | |||
} | } | |||
leaf file-type { | leaf file-type { | |||
type string; | type string; | |||
description | description | |||
"The type of file virus code is found in (if | "The type of a file (indicated by the file's suffix, | |||
e.g., .exe) where virus code is found (if | ||||
applicable)."; | applicable)."; | |||
reference | ||||
"IANA Website: Media Types"; | ||||
} | } | |||
leaf file-name { | leaf file-name { | |||
type string; | type string; | |||
description | description | |||
"The name of file virus code is found in (if | "The name of file virus code is found in (if | |||
applicable)."; | applicable)."; | |||
} | } | |||
leaf os { | leaf os { | |||
type string; | type string; | |||
description | description | |||
"The operating system of the device."; | "The operating system of the device."; | |||
} | } | |||
uses log-action; | ||||
uses characteristics; | ||||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
case i2nsf-nsf-detection-intrusion { | case i2nsf-nsf-detection-intrusion { | |||
if-feature "i2nsf-nsf-detection-intrusion"; | if-feature "i2nsf-nsf-detection-intrusion"; | |||
container i2nsf-nsf-detection-intrusion { | container i2nsf-nsf-detection-intrusion { | |||
description | description | |||
"This notification is sent, when an intrusion event | "This notification is sent, when an intrusion event | |||
is detected."; | is detected."; | |||
uses i2nsf-nsf-event-type-content-extend; | uses i2nsf-nsf-event-type-content-extend; | |||
leaf protocol { | leaf protocol { | |||
type identityref { | type identityref { | |||
base transport-protocol; | base transport-protocol; | |||
} | } | |||
description | description | |||
"The transport protocol type for | "The transport protocol type for | |||
nsf-detection-intrusion notification"; | nsf-detection-intrusion notification"; | |||
} | } | |||
leaf app { | leaf app { | |||
skipping to change at page 77, line 28 ¶ | skipping to change at page 78, line 9 ¶ | |||
description | description | |||
"The employed application layer protocol"; | "The employed application layer protocol"; | |||
} | } | |||
leaf attack-type { | leaf attack-type { | |||
type identityref { | type identityref { | |||
base intrusion-attack-type; | base intrusion-attack-type; | |||
} | } | |||
description | description | |||
"The sub attack type for intrusion attack"; | "The sub attack type for intrusion attack"; | |||
} | } | |||
uses log-action; | ||||
uses attack-rates; | ||||
uses characteristics; | ||||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
case i2nsf-nsf-detection-web-attack { | case i2nsf-nsf-detection-web-attack { | |||
if-feature "i2nsf-nsf-detection-web-attack"; | if-feature "i2nsf-nsf-detection-web-attack"; | |||
container i2nsf-nsf-detection-web-attack { | container i2nsf-nsf-detection-web-attack { | |||
description | description | |||
"This notification is sent, when an attack event is | "This notification is sent, when an attack event is | |||
detected."; | detected."; | |||
uses i2nsf-nsf-event-type-content-extend; | uses i2nsf-nsf-event-type-content-extend; | |||
leaf attack-type { | leaf attack-type { | |||
skipping to change at page 78, line 7 ¶ | skipping to change at page 78, line 33 ¶ | |||
"Concrete web attack type, e.g., SQL injection, | "Concrete web attack type, e.g., SQL injection, | |||
command injection, XSS, and CSRF."; | command injection, XSS, and CSRF."; | |||
} | } | |||
leaf req-method { | leaf req-method { | |||
type identityref { | type identityref { | |||
base req-method; | base req-method; | |||
} | } | |||
description | description | |||
"The HTTP method of the request, e.g., PUT or GET."; | "The HTTP method of the request, e.g., PUT or GET."; | |||
reference | reference | |||
"draft-ietf-httpbis-semantics-19: HTTP Semantics - Request | "draft-ietf-httpbis-semantics-19: HTTP Semantics - | |||
Methods"; | Request Methods"; | |||
} | } | |||
leaf req-target { | leaf req-target { | |||
type string; | type string; | |||
description | description | |||
"The HTTP Request Target. This field can be filled in | "The HTTP Request Target. This field can be filled in | |||
the format of origin-form, absolute-form, | the format of origin-form, absolute-form, | |||
authority-form, or asterisk-form"; | authority-form, or asterisk-form"; | |||
reference | reference | |||
"draft-ietf-httpbis-messaging-19: HTTP/1.1 - Request | "draft-ietf-httpbis-messaging-19: HTTP/1.1 - Request | |||
Target"; | Target"; | |||
} | } | |||
leaf-list filtering-type { | leaf-list filtering-type { | |||
type identityref { | type identityref { | |||
base filter-type; | base filter-type; | |||
} | } | |||
description | description | |||
"URL filtering type, e.g., deny-list, allow-list, | "URL filtering type, e.g., deny-list, allow-list, | |||
and Unknown"; | and Unknown"; | |||
} | } | |||
leaf req-user-agent { | leaf cookies { | |||
type string; | ||||
description | ||||
"The HTTP User-Agent header field of the request"; | ||||
reference | ||||
"draft-ietf-httpbis-semantics-19: HTTP Semantics - User | ||||
Agent"; | ||||
} | ||||
leaf cookie { | ||||
type string; | type string; | |||
description | description | |||
"The HTTP Cookie header field of the request from | "The HTTP Cookies header field of the request from | |||
the user agent."; | the user agent. The cookie information needs to be | |||
kept confidential and is not RECOMMENDED to be | ||||
included in the monitoring data unless the information | ||||
is absolutely necessary to help to enhance the | ||||
security of the network."; | ||||
reference | reference | |||
"RFC 6265: HTTP State Management Mechanism - Cookie"; | "RFC 6265: HTTP State Management Mechanism - Cookie"; | |||
} | } | |||
leaf req-host { | leaf req-host { | |||
type string; | type string; | |||
description | description | |||
"The HTTP Host header field of the request"; | "The HTTP Host header field of the request"; | |||
reference | reference | |||
"draft-ietf-httpbis-semantics-19: HTTP Semantics - Host"; | "draft-ietf-httpbis-semantics-19: HTTP Semantics - Host"; | |||
} | } | |||
leaf response-code { | leaf response-code { | |||
type string; | type string; | |||
description | description | |||
"The HTTP Response status code"; | "The HTTP Response status code"; | |||
reference | reference | |||
"IANA Website: Hypertext Transfer Protocol (HTTP) | "IANA Website: Hypertext Transfer Protocol (HTTP) | |||
Status Code Registry"; | Status Code Registry"; | |||
} | } | |||
uses characteristics; | ||||
uses log-action; | ||||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
case i2nsf-nsf-detection-voip-vocn { | case i2nsf-nsf-detection-voip-vocn { | |||
if-feature "i2nsf-nsf-detection-voip-vocn"; | if-feature "i2nsf-nsf-detection-voip-vocn"; | |||
container i2nsf-nsf-detection-voip-vocn { | container i2nsf-nsf-detection-voip-vocn { | |||
description | description | |||
"This notification is sent, when a VoIP/VoCN violation | "This notification is sent, when a VoIP/VoCN violation | |||
is detected."; | is detected."; | |||
uses i2nsf-nsf-event-type-content-extend; | uses i2nsf-nsf-event-type-content-extend; | |||
leaf-list source-voice-id { | leaf-list source-voice-id { | |||
skipping to change at page 79, line 41 ¶ | skipping to change at page 80, line 12 ¶ | |||
description | description | |||
"The detected destination voice ID for VoIP and VoCN | "The detected destination voice ID for VoIP and VoCN | |||
that violates the security policy."; | that violates the security policy."; | |||
} | } | |||
leaf-list user-agent { | leaf-list user-agent { | |||
type string; | type string; | |||
description | description | |||
"The detected user-agent for VoIP and VoCN that | "The detected user-agent for VoIP and VoCN that | |||
violates the security policy."; | violates the security policy."; | |||
} | } | |||
uses common-monitoring-data; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Data nodes | * Data nodes | |||
*/ | */ | |||
container i2nsf-counters { | container i2nsf-counters { | |||
config false; | config false; | |||
description | description | |||
"The state data representing continuous value changes of | "The state data representing continuous value changes of | |||
information elements that occur very frequently. The value | information elements that occur very frequently. The value | |||
should be calculated from the start of the service of the | should be calculated from the start of the service of the | |||
NSF."; | NSF."; | |||
uses language; | uses common-monitoring-data; | |||
uses timestamp; | ||||
uses characteristics; | ||||
list system-interface { | list system-interface { | |||
key interface-name; | key interface-name; | |||
description | description | |||
"Interface counters provide the visibility of traffic into | "Interface counters provide the visibility of traffic into | |||
and out of an NSF, and bandwidth usage."; | and out of an NSF, and bandwidth usage."; | |||
uses characteristics; | ||||
uses i2nsf-system-counter-type-content; | uses i2nsf-system-counter-type-content; | |||
uses common-monitoring-data; | ||||
uses timestamp; | ||||
} | } | |||
list nsf-firewall { | list nsf-firewall { | |||
key policy-name; | key policy-name; | |||
description | description | |||
"Firewall counters provide the visibility of traffic | "Firewall counters provide visibility into traffic signatures | |||
signatures, bandwidth usage, and how the configured security | and bandwidth usage that correspond to the policy that is | |||
and bandwidth policies have been applied."; | configured in a firewall."; | |||
uses characteristics; | leaf in-interface { | |||
type if:interface-ref; | ||||
description | ||||
"Inbound interface of the traffic"; | ||||
} | ||||
leaf out-interface { | ||||
type if:interface-ref; | ||||
description | ||||
"Outbound interface of the traffic"; | ||||
} | ||||
uses i2nsf-nsf-counters-type-content; | uses i2nsf-nsf-counters-type-content; | |||
uses traffic-rates; | uses traffic-rates; | |||
uses common-monitoring-data; | ||||
uses timestamp; | ||||
} | } | |||
list nsf-policy-hits { | list nsf-policy-hits { | |||
key policy-name; | key policy-name; | |||
description | description | |||
"Policy hit counters record the number of hits that traffic | "Policy hit counters record the number of hits that traffic | |||
packets match a security policy. It can check if policy | packets match a security policy. It can check if policy | |||
configurations are correct or not."; | configurations are correct or not."; | |||
uses characteristics; | ||||
uses i2nsf-nsf-counters-type-content; | uses i2nsf-nsf-counters-type-content; | |||
uses common-monitoring-data; | ||||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time on the most recent occasion at which any one or | |||
more of the counters suffered a discontinuity. If no such | more of the counters suffered a discontinuity. If no such | |||
discontinuities have occurred since the last | discontinuities have occurred since the last | |||
re-initialization of the local management subsystem, then | re-initialization of the local management subsystem, then | |||
this node contains the time the local management subsystem | this node contains the time the local management subsystem | |||
was re-initialized."; | was re-initialized."; | |||
skipping to change at page 81, line 4 ¶ | skipping to change at page 81, line 26 ¶ | |||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time on the most recent occasion at which any one or | |||
more of the counters suffered a discontinuity. If no such | more of the counters suffered a discontinuity. If no such | |||
discontinuities have occurred since the last | discontinuities have occurred since the last | |||
re-initialization of the local management subsystem, then | re-initialization of the local management subsystem, then | |||
this node contains the time the local management subsystem | this node contains the time the local management subsystem | |||
was re-initialized."; | was re-initialized."; | |||
} | } | |||
leaf hit-times { | leaf hit-times { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The number of times that the security policy matches the | "The number of times that the security policy matches the | |||
specified traffic."; | specified traffic."; | |||
} | } | |||
uses timestamp; | ||||
} | } | |||
} | } | |||
container i2nsf-monitoring-configuration { | container i2nsf-monitoring-configuration { | |||
description | description | |||
"The container for configuring I2NSF monitoring."; | "The container for configuring I2NSF monitoring."; | |||
container i2nsf-system-detection-alarm { | container i2nsf-system-detection-alarm { | |||
description | description | |||
"The container for configuring I2NSF system-detection-alarm | "The container for configuring I2NSF system-detection-alarm | |||
notification"; | notification"; | |||
skipping to change at page 82, line 44 ¶ | skipping to change at page 83, line 17 ¶ | |||
uses enable-notification; | uses enable-notification; | |||
} | } | |||
container i2nsf-nsf-detection-ddos { | container i2nsf-nsf-detection-ddos { | |||
if-feature "i2nsf-nsf-detection-ddos"; | if-feature "i2nsf-nsf-detection-ddos"; | |||
description | description | |||
"The container for configuring I2NSF nsf-detection-ddos | "The container for configuring I2NSF nsf-detection-ddos | |||
notification"; | notification"; | |||
uses enable-notification; | uses enable-notification; | |||
uses dampening; | uses dampening; | |||
} | } | |||
container i2nsf-nsf-detection-virus { | ||||
if-feature "i2nsf-nsf-detection-virus"; | ||||
description | ||||
"The container for configuring I2NSF nsf-detection-virus | ||||
notification"; | ||||
uses enable-notification; | ||||
uses dampening; | ||||
} | ||||
container i2nsf-nsf-detection-session-table { | container i2nsf-nsf-detection-session-table { | |||
description | description | |||
"The container for configuring I2NSF nsf-detection-session- | "The container for configuring I2NSF nsf-detection-session- | |||
table notification"; | table notification"; | |||
uses enable-notification; | uses enable-notification; | |||
uses dampening; | uses dampening; | |||
} | } | |||
container i2nsf-nsf-detection-intrusion { | container i2nsf-nsf-detection-intrusion { | |||
if-feature "i2nsf-nsf-detection-intrusion"; | if-feature "i2nsf-nsf-detection-intrusion"; | |||
description | description | |||
skipping to change at page 83, line 19 ¶ | skipping to change at page 83, line 48 ¶ | |||
uses dampening; | uses dampening; | |||
} | } | |||
container i2nsf-nsf-detection-web-attack { | container i2nsf-nsf-detection-web-attack { | |||
if-feature "i2nsf-nsf-detection-web-attack"; | if-feature "i2nsf-nsf-detection-web-attack"; | |||
description | description | |||
"The container for configuring I2NSF nsf-detection-web-attack | "The container for configuring I2NSF nsf-detection-web-attack | |||
notification"; | notification"; | |||
uses enable-notification; | uses enable-notification; | |||
uses dampening; | uses dampening; | |||
} | } | |||
container i2nsf-nsf-detection-voip-vocn { | ||||
if-feature "i2nsf-nsf-detection-voip-vocn"; | ||||
description | ||||
"The container for configuring I2NSF nsf-detection-voip-vocn | ||||
notification"; | ||||
uses enable-notification; | ||||
uses dampening; | ||||
} | ||||
container i2nsf-nsf-system-access-log { | container i2nsf-nsf-system-access-log { | |||
description | description | |||
"The container for configuring I2NSF system-access-log | "The container for configuring I2NSF system-access-log | |||
notification"; | notification"; | |||
uses enable-notification; | uses enable-notification; | |||
uses dampening; | uses dampening; | |||
} | } | |||
container i2nsf-system-res-util-log { | container i2nsf-system-res-util-log { | |||
description | description | |||
"The container for configuring I2NSF system-res-util-log | "The container for configuring I2NSF system-res-util-log | |||
skipping to change at page 85, line 28 ¶ | skipping to change at page 86, line 4 ¶ | |||
<description>I2NSF Monitoring Event Stream</description> | <description>I2NSF Monitoring Event Stream</description> | |||
<replaySupport>true</replaySupport> | <replaySupport>true</replaySupport> | |||
<replayLogCreationTime> | <replayLogCreationTime> | |||
2021-04-29T09:37:39+00:00 | 2021-04-29T09:37:39+00:00 | |||
</replayLogCreationTime> | </replayLogCreationTime> | |||
</stream> | </stream> | |||
</streams> | </streams> | |||
</netconf> | </netconf> | |||
</data> | </data> | |||
</rpc-reply> | </rpc-reply> | |||
Figure 3: Example of NETCONF Server supporting I2NSF-Monitoring | Figure 3: Example of NETCONF Server supporting I2NSF-Monitoring | |||
Event Stream | Event Stream | |||
10. XML Examples for I2NSF NSF Monitoring | 10. XML Examples for I2NSF NSF Monitoring | |||
This section shows XML examples of I2NSF NSF Monitoring data | This section shows XML examples of I2NSF NSF Monitoring data | |||
delivered via Monitoring Interface from an NSF. In order for the XML | delivered via Monitoring Interface from an NSF. The XML examples are | |||
data to be used correctly, the prefix (i.e., the characters before | following the guidelines from [RFC6241] [RFC7950]. | |||
the colon or 'nsfmi' in the example) in the content of the element | ||||
that uses the "identityref" type (e.g., /i2nsf-event/i2nsf-system- | ||||
detection-alarm/alarm-category/) in the YANG module described in this | ||||
document MUST be the same as the namespace prefix (i.e., 'nsfmi' in | ||||
the example) for urn:ietf:params:xml:ns:yang:ietf-i2nsf-nsf- | ||||
monitoring. Therefore, XML software MUST be chosen that makes the | ||||
namespace prefix information available. | ||||
10.1. I2NSF System Detection Alarm | 10.1. I2NSF System Detection Alarm | |||
The following example shows an alarm triggered by Memory Usage on the | The following example shows an alarm triggered by Memory Usage on the | |||
server; this example XML file is delivered by an NSF to an NSF data | server; this example XML file is delivered by an NSF to an NSF data | |||
collector: | collector: | |||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<notification | <notification | |||
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> | xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> | |||
<eventTime>2021-04-29T07:43:52.181088+00:00</eventTime> | <eventTime>2021-04-29T07:43:52.181088+00:00</eventTime> | |||
<i2nsf-event | <i2nsf-event | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-nsf-monitoring"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-nsf-monitoring"> | |||
<acquisition-method>subscription</acquisition-method> | ||||
<emission-type>on-change</emission-type> | ||||
<dampening-type>on-repetition</dampening-type> | ||||
<language>en-US</language> | ||||
<i2nsf-system-detection-alarm> | <i2nsf-system-detection-alarm> | |||
<alarm-category | <alarm-category>memory-alarm</alarm-category> | |||
xmlns:nsfmi="urn:ietf:params:xml:ns:yang:\ | ||||
ietf-i2nsf-nsf-monitoring"> | ||||
nsfmi:memory-alarm | ||||
</alarm-category> | ||||
<acquisition-method | ||||
xmlns:nsfmi="urn:ietf:params:xml:ns:yang:\ | ||||
ietf-i2nsf-nsf-monitoring"> | ||||
nsfmi:subscription | ||||
</acquisition-method> | ||||
<emission-type | ||||
xmlns:nsfmi="urn:ietf:params:xml:ns:yang:\ | ||||
ietf-i2nsf-nsf-monitoring"> | ||||
nsfmi:on-change | ||||
</emission-type> | ||||
<dampening-type | ||||
xmlns:nsfmi="urn:ietf:params:xml:ns:yang:\ | ||||
ietf-i2nsf-nsf-monitoring"> | ||||
nsfmi:on-repetition | ||||
</dampening-type> | ||||
<usage>91</usage> | <usage>91</usage> | |||
<threshold>90</threshold> | <threshold>90</threshold> | |||
<message>Memory Usage Exceeded the Threshold</message> | <message>Memory Usage Exceeded the Threshold</message> | |||
<nsf-name>time_based_firewall</nsf-name> | <nsf-name>time_based_firewall</nsf-name> | |||
<severity>high</severity> | <severity>high</severity> | |||
</i2nsf-system-detection-alarm> | </i2nsf-system-detection-alarm> | |||
</i2nsf-event> | </i2nsf-event> | |||
</notification> | </notification> | |||
Figure 4: Example of I2NSF System Detection Alarm triggered by | Figure 4: Example of I2NSF System Detection Alarm triggered by | |||
skipping to change at page 88, line 11 ¶ | skipping to change at page 88, line 11 ¶ | |||
The following XML file shows the reply from the NETCONF Server (e.g., | The following XML file shows the reply from the NETCONF Server (e.g., | |||
NSF): | NSF): | |||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<rpc-reply message-id="1" | <rpc-reply message-id="1" | |||
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<data> | <data> | |||
<i2nsf-counters | <i2nsf-counters | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-nsf-monitoring"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-i2nsf-nsf-monitoring"> | |||
<acquisition-method>query</acquisition-method> | ||||
<system-interface> | <system-interface> | |||
<discontinuity-time> | <discontinuity-time> | |||
2021-04-29T08:43:52.181088+00:00 | 2021-04-29T08:43:52.181088+00:00 | |||
</discontinuity-time> | </discontinuity-time> | |||
<interface-name>ens3</interface-name> | <interface-name>ens3</interface-name> | |||
<acquisition-method | ||||
xmlns:nsfmi="urn:ietf:params:xml:ns:yang:\ | ||||
ietf-i2nsf-nsf-monitoring"> | ||||
nsfmi:query | ||||
</acquisition-method> | ||||
<in-total-traffic-bytes>549050</in-total-traffic-bytes> | <in-total-traffic-bytes>549050</in-total-traffic-bytes> | |||
<out-total-traffic-bytes>814956</out-total-traffic-bytes> | <out-total-traffic-bytes>814956</out-total-traffic-bytes> | |||
<in-drop-traffic-bytes>0</in-drop-traffic-bytes> | <in-drop-traffic-bytes>0</in-drop-traffic-bytes> | |||
<out-drop-traffic-bytes>5078</out-drop-traffic-bytes> | <out-drop-traffic-bytes>5078</out-drop-traffic-bytes> | |||
<nsf-name>time_based_firewall</nsf-name> | <nsf-name>time_based_firewall</nsf-name> | |||
</system-interface> | </system-interface> | |||
<system-interface> | <system-interface> | |||
<discontinuity-time> | <discontinuity-time> | |||
2021-04-29T08:43:52.181088+00:00 | 2021-04-29T08:43:52.181088+00:00 | |||
</discontinuity-time> | </discontinuity-time> | |||
<interface-name>lo</interface-name> | <interface-name>lo</interface-name> | |||
<acquisition-method | ||||
xmlns:nsfmi="urn:ietf:params:xml:ns:yang:\ | ||||
ietf-i2nsf-nsf-monitoring"> | ||||
nsfmi:query | ||||
</acquisition-method> | ||||
<in-total-traffic-bytes>48487</in-total-traffic-bytes> | <in-total-traffic-bytes>48487</in-total-traffic-bytes> | |||
<out-total-traffic-bytes>48487</out-total-traffic-bytes> | <out-total-traffic-bytes>48487</out-total-traffic-bytes> | |||
<in-drop-traffic-bytes>0</in-drop-traffic-bytes> | <in-drop-traffic-bytes>0</in-drop-traffic-bytes> | |||
<out-drop-traffic-bytes>0</out-drop-traffic-bytes> | <out-drop-traffic-bytes>0</out-drop-traffic-bytes> | |||
<nsf-name>time_based_firewall</nsf-name> | <nsf-name>time_based_firewall</nsf-name> | |||
</system-interface> | </system-interface> | |||
</i2nsf-counters> | </i2nsf-counters> | |||
</data> | </data> | |||
</rpc-reply> | </rpc-reply> | |||
skipping to change at page 91, line 10 ¶ | skipping to change at page 90, line 38 ¶ | |||
security controls and their relative efficacy in detecting or | security controls and their relative efficacy in detecting or | |||
mitigating an attack. To an attacker, this information could inform | mitigating an attack. To an attacker, this information could inform | |||
how to (further) compromise the network, evade detection, or confirm | how to (further) compromise the network, evade detection, or confirm | |||
whether they have been observed by the network operator. | whether they have been observed by the network operator. | |||
Additionally, many of the data nodes in this YANG module such as | Additionally, many of the data nodes in this YANG module such as | |||
containers "i2nsf-system-user-activity-log", "i2nsf-system-detection- | containers "i2nsf-system-user-activity-log", "i2nsf-system-detection- | |||
event", and "i2nsf-nsf-detection-voip-vocn" are privacy sensitive. | event", and "i2nsf-nsf-detection-voip-vocn" are privacy sensitive. | |||
They may describe specific or aggregate user activity including | They may describe specific or aggregate user activity including | |||
associating user names with specific IP addresses; or users with | associating user names with specific IP addresses; or users with | |||
specific network usage. | specific network usage. They may also describe the specific commands | |||
that were run by users and the resulting output. Any sensitive | ||||
information in that command input or output will be visible to the | ||||
NSF data collector and potentially other entities, and care must be | ||||
taken to protect the confidentiality of such data from unauthorized | ||||
parties. | ||||
13. Acknowledgments | 13. Acknowledgments | |||
This document is a product by the I2NSF Working Group (WG) including | This document is a product by the I2NSF Working Group (WG) including | |||
WG Chairs (i.e., Linda Dunbar and Yoav Nir) and Diego Lopez. This | WG Chairs (i.e., Linda Dunbar and Yoav Nir) and Diego Lopez. This | |||
document took advantage of the review and comments from the following | document took advantage of the review and comments from the following | |||
people: Roman Danyliw, Tim Bray (IANA), Kyle Rose (TSV-ART), Dale R. | people: Roman Danyliw, Tim Bray (IANA), Kyle Rose (TSV-ART), Dale R. | |||
Worley (Gen-ART), Melinda Shore (SecDir), Valery Smyslov (ART-ART), | Worley (Gen-ART), Melinda Shore (SecDir), Valery Smyslov (ART-ART), | |||
and Tom Petch. The authors sincerely appreciate their sincere | and Tom Petch. The authors sincerely appreciate their sincere | |||
efforts and kind help. | efforts and kind help. | |||
skipping to change at page 92, line 25 ¶ | skipping to change at page 92, line 18 ¶ | |||
<https://www.rfc-editor.org/info/rfc768>. | <https://www.rfc-editor.org/info/rfc768>. | |||
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
DOI 10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
<https://www.rfc-editor.org/info/rfc791>. | <https://www.rfc-editor.org/info/rfc791>. | |||
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, | [RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, | |||
RFC 792, DOI 10.17487/RFC0792, September 1981, | RFC 792, DOI 10.17487/RFC0792, September 1981, | |||
<https://www.rfc-editor.org/info/rfc792>. | <https://www.rfc-editor.org/info/rfc792>. | |||
[RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | ||||
RFC 793, DOI 10.17487/RFC0793, September 1981, | ||||
<https://www.rfc-editor.org/info/rfc793>. | ||||
[RFC0854] Postel, J. and J. Reynolds, "Telnet Protocol | [RFC0854] Postel, J. and J. Reynolds, "Telnet Protocol | |||
Specification", STD 8, RFC 854, DOI 10.17487/RFC0854, May | Specification", STD 8, RFC 854, DOI 10.17487/RFC0854, May | |||
1983, <https://www.rfc-editor.org/info/rfc854>. | 1983, <https://www.rfc-editor.org/info/rfc854>. | |||
[RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | |||
STD 9, RFC 959, DOI 10.17487/RFC0959, October 1985, | STD 9, RFC 959, DOI 10.17487/RFC0959, October 1985, | |||
<https://www.rfc-editor.org/info/rfc959>. | <https://www.rfc-editor.org/info/rfc959>. | |||
[RFC1939] Myers, J. and M. Rose, "Post Office Protocol - Version 3", | [RFC1939] Myers, J. and M. Rose, "Post Office Protocol - Version 3", | |||
STD 53, RFC 1939, DOI 10.17487/RFC1939, May 1996, | STD 53, RFC 1939, DOI 10.17487/RFC1939, May 1996, | |||
skipping to change at page 93, line 5 ¶ | skipping to change at page 92, line 39 ¶ | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC2595] Newman, C., "Using TLS with IMAP, POP3 and ACAP", | [RFC2595] Newman, C., "Using TLS with IMAP, POP3 and ACAP", | |||
RFC 2595, DOI 10.17487/RFC2595, June 1999, | RFC 2595, DOI 10.17487/RFC2595, June 1999, | |||
<https://www.rfc-editor.org/info/rfc2595>. | <https://www.rfc-editor.org/info/rfc2595>. | |||
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: | ||||
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, | ||||
<https://www.rfc-editor.org/info/rfc3339>. | ||||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC3877] Chisholm, S. and D. Romascanu, "Alarm Management | [RFC3877] Chisholm, S. and D. Romascanu, "Alarm Management | |||
Information Base (MIB)", RFC 3877, DOI 10.17487/RFC3877, | Information Base (MIB)", RFC 3877, DOI 10.17487/RFC3877, | |||
September 2004, <https://www.rfc-editor.org/info/rfc3877>. | September 2004, <https://www.rfc-editor.org/info/rfc3877>. | |||
[RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram | [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram | |||
Congestion Control Protocol (DCCP)", RFC 4340, | Congestion Control Protocol (DCCP)", RFC 4340, | |||
skipping to change at page 95, line 28 ¶ | skipping to change at page 95, line 19 ¶ | |||
[RFC8639] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, | [RFC8639] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, | |||
E., and A. Tripathy, "Subscription to YANG Notifications", | E., and A. Tripathy, "Subscription to YANG Notifications", | |||
RFC 8639, DOI 10.17487/RFC8639, September 2019, | RFC 8639, DOI 10.17487/RFC8639, September 2019, | |||
<https://www.rfc-editor.org/info/rfc8639>. | <https://www.rfc-editor.org/info/rfc8639>. | |||
[RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications | [RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications | |||
for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, | for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, | |||
September 2019, <https://www.rfc-editor.org/info/rfc8641>. | September 2019, <https://www.rfc-editor.org/info/rfc8641>. | |||
[RFC8650] Voit, E., Rahman, R., Nilsen-Nygaard, E., Clemm, A., and | ||||
A. Bierman, "Dynamic Subscription to YANG Events and | ||||
Datastores over RESTCONF", RFC 8650, DOI 10.17487/RFC8650, | ||||
November 2019, <https://www.rfc-editor.org/info/rfc8650>. | ||||
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | ||||
Multiplexed and Secure Transport", RFC 9000, | ||||
DOI 10.17487/RFC9000, May 2021, | ||||
<https://www.rfc-editor.org/info/rfc9000>. | ||||
[RFC9051] Melnikov, A., Ed. and B. Leiba, Ed., "Internet Message | [RFC9051] Melnikov, A., Ed. and B. Leiba, Ed., "Internet Message | |||
Access Protocol (IMAP) - Version 4rev2", RFC 9051, | Access Protocol (IMAP) - Version 4rev2", RFC 9051, | |||
DOI 10.17487/RFC9051, August 2021, | DOI 10.17487/RFC9051, August 2021, | |||
<https://www.rfc-editor.org/info/rfc9051>. | <https://www.rfc-editor.org/info/rfc9051>. | |||
[I-D.ietf-httpbis-http2bis] | [I-D.ietf-httpbis-http2bis] | |||
Thomson, M. and C. Benfield, "HTTP/2", Work in Progress, | Thomson, M. and C. Benfield, "HTTP/2", Work in Progress, | |||
Internet-Draft, draft-ietf-httpbis-http2bis-07, 24 January | Internet-Draft, draft-ietf-httpbis-http2bis-07, 24 January | |||
2022, <https://www.ietf.org/archive/id/draft-ietf-httpbis- | 2022, <https://www.ietf.org/archive/id/draft-ietf-httpbis- | |||
http2bis-07.txt>. | http2bis-07.txt>. | |||
skipping to change at page 96, line 16 ¶ | skipping to change at page 96, line 16 ¶ | |||
Hares, S., Jeong, J. (., Kim, J. (., Moskowitz, R., and Q. | Hares, S., Jeong, J. (., Kim, J. (., Moskowitz, R., and Q. | |||
Lin, "I2NSF Capability YANG Data Model", Work in Progress, | Lin, "I2NSF Capability YANG Data Model", Work in Progress, | |||
Internet-Draft, draft-ietf-i2nsf-capability-data-model-26, | Internet-Draft, draft-ietf-i2nsf-capability-data-model-26, | |||
10 February 2022, <https://www.ietf.org/archive/id/draft- | 10 February 2022, <https://www.ietf.org/archive/id/draft- | |||
ietf-i2nsf-capability-data-model-26.txt>. | ietf-i2nsf-capability-data-model-26.txt>. | |||
[I-D.ietf-i2nsf-nsf-facing-interface-dm] | [I-D.ietf-i2nsf-nsf-facing-interface-dm] | |||
Kim, J. (., Jeong, J. (., Park, J., Hares, S., and Q. Lin, | Kim, J. (., Jeong, J. (., Park, J., Hares, S., and Q. Lin, | |||
"I2NSF Network Security Function-Facing Interface YANG | "I2NSF Network Security Function-Facing Interface YANG | |||
Data Model", Work in Progress, Internet-Draft, draft-ietf- | Data Model", Work in Progress, Internet-Draft, draft-ietf- | |||
i2nsf-nsf-facing-interface-dm-20, 31 January 2022, | i2nsf-nsf-facing-interface-dm-22, 21 March 2022, | |||
<https://www.ietf.org/archive/id/draft-ietf-i2nsf-nsf- | <https://www.ietf.org/archive/id/draft-ietf-i2nsf-nsf- | |||
facing-interface-dm-20.txt>. | facing-interface-dm-22.txt>. | |||
[I-D.ietf-tcpm-rfc793bis] | [I-D.ietf-tcpm-rfc793bis] | |||
Eddy, W. M., "Transmission Control Protocol (TCP) | Eddy, W. M., "Transmission Control Protocol (TCP) | |||
Specification", Work in Progress, Internet-Draft, draft- | Specification", Work in Progress, Internet-Draft, draft- | |||
ietf-tcpm-rfc793bis-26, 8 February 2022, | ietf-tcpm-rfc793bis-28, 7 March 2022, | |||
<https://www.ietf.org/archive/id/draft-ietf-tcpm- | <https://www.ietf.org/archive/id/draft-ietf-tcpm- | |||
rfc793bis-26.txt>. | rfc793bis-28.txt>. | |||
[I-D.ietf-tsvwg-rfc4960-bis] | [I-D.ietf-tsvwg-rfc4960-bis] | |||
Stewart, R. R., Tüxen, M., and K. E. E. Nielsen, "Stream | Stewart, R. R., Tüxen, M., and K. E. E. Nielsen, "Stream | |||
Control Transmission Protocol", Work in Progress, | Control Transmission Protocol", Work in Progress, | |||
Internet-Draft, draft-ietf-tsvwg-rfc4960-bis-18, 16 | Internet-Draft, draft-ietf-tsvwg-rfc4960-bis-19, 5 | |||
January 2022, <https://www.ietf.org/archive/id/draft-ietf- | February 2022, <https://www.ietf.org/archive/id/draft- | |||
tsvwg-rfc4960-bis-18.txt>. | ietf-tsvwg-rfc4960-bis-19.txt>. | |||
15.2. Informative References | 15.2. Informative References | |||
[RFC0826] Plummer, D., "An Ethernet Address Resolution Protocol: Or | ||||
Converting Network Protocol Addresses to 48.bit Ethernet | ||||
Address for Transmission on Ethernet Hardware", STD 37, | ||||
RFC 826, DOI 10.17487/RFC0826, November 1982, | ||||
<https://www.rfc-editor.org/info/rfc826>. | ||||
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, | ||||
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, | ||||
DOI 10.17487/RFC4861, September 2007, | ||||
<https://www.rfc-editor.org/info/rfc4861>. | ||||
[RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | |||
FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | |||
<https://www.rfc-editor.org/info/rfc4949>. | <https://www.rfc-editor.org/info/rfc4949>. | |||
[RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | |||
"Handling Long Lines in Content of Internet-Drafts and | "Handling Long Lines in Content of Internet-Drafts and | |||
RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | |||
<https://www.rfc-editor.org/info/rfc8792>. | <https://www.rfc-editor.org/info/rfc8792>. | |||
[I-D.ietf-i2nsf-consumer-facing-interface-dm] | [I-D.ietf-i2nsf-consumer-facing-interface-dm] | |||
skipping to change at page 97, line 11 ¶ | skipping to change at page 97, line 24 ¶ | |||
facing-interface-dm-16, 28 January 2022, | facing-interface-dm-16, 28 January 2022, | |||
<https://www.ietf.org/archive/id/draft-ietf-i2nsf- | <https://www.ietf.org/archive/id/draft-ietf-i2nsf- | |||
consumer-facing-interface-dm-16.txt>. | consumer-facing-interface-dm-16.txt>. | |||
[IANA-HTTP-Status-Code] | [IANA-HTTP-Status-Code] | |||
Internet Assigned Numbers Authority (IANA), "Hypertext | Internet Assigned Numbers Authority (IANA), "Hypertext | |||
Transfer Protocol (HTTP) Status Code Registry", September | Transfer Protocol (HTTP) Status Code Registry", September | |||
2018, <https://www.iana.org/assignments/http-status-codes/ | 2018, <https://www.iana.org/assignments/http-status-codes/ | |||
http-status-codes.xhtml>. | http-status-codes.xhtml>. | |||
[IANA-Media-Types] | [IEEE-802.1AB] | |||
Internet Assigned Numbers Authority (IANA), "Media Types", | Institute of Electrical and Electronics Engineers, "IEEE | |||
August 2021, <https://www.iana.org/assignments/media- | Standard for Local and metropolitan area networks - | |||
types/media-types.xhtml>. | Station and Media Access Control Connectivity Discovery", | |||
March 2016, | ||||
<https://ieeexplore.ieee.org/document/7433915>. | ||||
Appendix A. Changes from draft-ietf-i2nsf-nsf-monitoring-data-model-14 | Appendix A. Changes from draft-ietf-i2nsf-nsf-monitoring-data-model-15 | |||
The following changes are made from draft-ietf-i2nsf-nsf-monitoring- | The following changes are made from draft-ietf-i2nsf-nsf-monitoring- | |||
data-model-14: | data-model-15: | |||
* This version is added to update the references. | * This version is added following Benjamin Kaduk, Francesca | |||
Palombini, and Robert Wilton's comments | ||||
Authors' Addresses | Authors' Addresses | |||
Jaehoon (Paul) Jeong (editor) | Jaehoon (Paul) Jeong (editor) | |||
Department of Computer Science and Engineering | Department of Computer Science and Engineering | |||
Sungkyunkwan University | Sungkyunkwan University | |||
2066 Seobu-Ro, Jangan-Gu | 2066 Seobu-Ro, Jangan-Gu | |||
Suwon | Suwon | |||
Gyeonggi-Do | Gyeonggi-Do | |||
16419 | 16419 | |||
End of changes. 287 change blocks. | ||||
780 lines changed or deleted | 824 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |