draft-ietf-i2nsf-nsf-monitoring-data-model-14.txt | draft-ietf-i2nsf-nsf-monitoring-data-model-15.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: 1 August 2022 S. Hares | Expires: 19 August 2022 S. Hares | |||
L. Xia | L. Xia | |||
Huawei | Huawei | |||
H. Birkholz | H. Birkholz | |||
Fraunhofer SIT | Fraunhofer SIT | |||
28 January 2022 | 15 February 2022 | |||
I2NSF NSF Monitoring Interface YANG Data Model | I2NSF NSF Monitoring Interface YANG Data Model | |||
draft-ietf-i2nsf-nsf-monitoring-data-model-14 | draft-ietf-i2nsf-nsf-monitoring-data-model-15 | |||
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 comprehensive way, it is possible to | NSF monitoring interface in a standard way, it is possible to detect | |||
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 | |||
timely manner. This monitoring functionality is based on the | timely manner. This monitoring functionality is based on the | |||
monitoring information that is generated by NSFs. Thus, this | monitoring information that is generated by NSFs. Thus, this | |||
document describes not only an information model for the NSF | document describes not only an information model for the NSF | |||
monitoring interface along with a YANG data diagram, but also the | monitoring interface along with a YANG tree diagram, but also the | |||
corresponding YANG data model. | corresponding YANG data model. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 1 August 2022. | This Internet-Draft will expire on 19 August 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 | |||
and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
extracted from this document must include Revised BSD License text as | extracted from this document must include Revised BSD License text as | |||
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 . . . . . . . . . . . . . . 4 | 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 . . . . . . . . . . . . . . . . . 6 | 4.1. Retention and Emission from NSFs . . . . . . . . . . . . 6 | |||
4.2. Notifications, Events, and Records . . . . . . . . . . . 7 | 4.2. Notifications for Events and Records . . . . . . . . . . 7 | |||
4.3. Unsolicited Poll and Solicited Pull . . . . . . . . . . . 8 | 4.3. Push and Pull for the retrieval of monitoring data from | |||
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 . . . . . . . . . . . . . . . . . . . . . . 10 | 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 . . . . . . . . . . . . . . . . . . . . . 11 | 6.1.3. Disk 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 . . . . . . . . . . . . . . . . . . . 12 | |||
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 . . . . . . . . . . . . . . . . 13 | 6.2.2. Configuration Change . . . . . . . . . . . . . . . . 14 | |||
6.2.3. Session Table Event . . . . . . . . . . . . . . . . . 14 | 6.2.3. Session Table Event . . . . . . . . . . . . . . . . . 15 | |||
6.2.4. Traffic Flows . . . . . . . . . . . . . . . . . . . . 15 | 6.2.4. Traffic Flows . . . . . . . . . . . . . . . . . . . . 15 | |||
6.3. NSF Events . . . . . . . . . . . . . . . . . . . . . . . 15 | 6.3. NSF Events . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.3.1. DDoS Detection . . . . . . . . . . . . . . . . . . . 15 | 6.3.1. DDoS Detection . . . . . . . . . . . . . . . . . . . 16 | |||
6.3.2. Virus Event . . . . . . . . . . . . . . . . . . . . . 16 | 6.3.2. Virus Event . . . . . . . . . . . . . . . . . . . . . 17 | |||
6.3.3. Intrusion Event . . . . . . . . . . . . . . . . . . . 17 | 6.3.3. Intrusion Event . . . . . . . . . . . . . . . . . . . 18 | |||
6.3.4. Web Attack Event . . . . . . . . . . . . . . . . . . 18 | 6.3.4. Web Attack Event . . . . . . . . . . . . . . . . . . 19 | |||
6.3.5. VoIP/VoLTE Event . . . . . . . . . . . . . . . . . . 19 | 6.3.5. VoIP/VoCN Event . . . . . . . . . . . . . . . . . . . 19 | |||
6.4. System Logs . . . . . . . . . . . . . . . . . . . . . . . 19 | 6.4. System Logs . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
6.4.1. Access Log . . . . . . . . . . . . . . . . . . . . . 20 | 6.4.1. Access Log . . . . . . . . . . . . . . . . . . . . . 20 | |||
6.4.2. Resource Utilization Log . . . . . . . . . . . . . . 20 | 6.4.2. Resource Utilization Log . . . . . . . . . . . . . . 21 | |||
6.4.3. User Activity Log . . . . . . . . . . . . . . . . . . 21 | 6.4.3. User Activity Log . . . . . . . . . . . . . . . . . . 22 | |||
6.5. NSF Logs . . . . . . . . . . . . . . . . . . . . . . . . 22 | 6.5. NSF Logs . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
6.5.1. Deep Packet Inspection Log . . . . . . . . . . . . . 22 | 6.5.1. Deep Packet Inspection Log . . . . . . . . . . . . . 23 | |||
6.6. System Counter . . . . . . . . . . . . . . . . . . . . . 23 | ||||
6.6. System Counter . . . . . . . . . . . . . . . . . . . . . 22 | ||||
6.6.1. Interface Counter . . . . . . . . . . . . . . . . . . 23 | 6.6.1. Interface Counter . . . . . . . . . . . . . . . . . . 23 | |||
6.7. NSF Counters . . . . . . . . . . . . . . . . . . . . . . 24 | 6.7. NSF Counters . . . . . . . . . . . . . . . . . . . . . . 25 | |||
6.7.1. Firewall Counter . . . . . . . . . . . . . . . . . . 24 | 6.7.1. Firewall Counter . . . . . . . . . . . . . . . . . . 25 | |||
6.7.2. Policy Hit Counter . . . . . . . . . . . . . . . . . 25 | 6.7.2. Policy Hit Counter . . . . . . . . . . . . . . . . . 26 | |||
7. YANG Tree Structure of NSF Monitoring YANG Module . . . . . . 26 | 7. YANG Tree Structure of NSF Monitoring YANG Module . . . . . . 27 | |||
8. YANG Data Model of NSF Monitoring YANG Module . . . . . . . . 34 | 8. YANG Data Model of NSF Monitoring YANG Module . . . . . . . . 35 | |||
9. I2NSF Event Stream . . . . . . . . . . . . . . . . . . . . . 82 | 9. I2NSF Event Stream . . . . . . . . . . . . . . . . . . . . . 84 | |||
10. XML Examples for I2NSF NSF Monitoring . . . . . . . . . . . . 83 | 10. XML Examples for I2NSF NSF Monitoring . . . . . . . . . . . . 85 | |||
10.1. I2NSF System Detection Alarm . . . . . . . . . . . . . . 83 | 10.1. I2NSF System Detection Alarm . . . . . . . . . . . . . . 85 | |||
10.2. I2NSF Interface Counters . . . . . . . . . . . . . . . . 85 | 10.2. I2NSF Interface Counters . . . . . . . . . . . . . . . . 87 | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 87 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 89 | |||
12. Security Considerations . . . . . . . . . . . . . . . . . . . 87 | 12. Security Considerations . . . . . . . . . . . . . . . . . . . 89 | |||
13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 89 | 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 91 | |||
14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 89 | 14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 91 | |||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 90 | 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 92 | |||
15.1. Normative References . . . . . . . . . . . . . . . . . . 90 | 15.1. Normative References . . . . . . . . . . . . . . . . . . 92 | |||
15.2. Informative References . . . . . . . . . . . . . . . . . 93 | 15.2. Informative References . . . . . . . . . . . . . . . . . 96 | |||
Appendix A. Changes from | Appendix A. Changes from | |||
draft-ietf-i2nsf-nsf-monitoring-data-model-13 . . . . . . 94 | draft-ietf-i2nsf-nsf-monitoring-data-model-14 . . . . . . 97 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 94 | 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 the NSF | |||
data collector through a variety of mechanisms (e.g., queries and | data collector through a variety of mechanisms (e.g., queries and | |||
notifications). The monitoring of NSF plays an important role in an | notifications). The monitoring of NSF plays an important role in an | |||
overall security framework, if it is done in a timely and | overall security framework, if it is done in a timely way. The | |||
comprehensive way. The monitoring information generated by an NSF | monitoring information generated by an NSF can be a good, early | |||
can be a good, early indication of anomalous behavior or malicious | indication of anomalous behavior or malicious activity, such as | |||
activity, such as denial of service attacks (DoS). | denial-of-service (DoS) attacks. | |||
This document defines a comprehensive information model of an NSF | This document defines an information model of an NSF monitoring | |||
monitoring interface that provides visibility into an NSF for the NSF | interface that provides visibility into an NSF for the NSF data | |||
data collector. Note that an NSF data collector is defined as an | collector. Note that an NSF data collector is defined as an entity | |||
entity to collect NSF monitoring data from an NSF, such as Security | to 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 methods | |||
that enable an NSF to provide the information required in order to be | that enable an NSF to provide the information required in order to be | |||
monitored in a scalable and efficient way via the NSF Monitoring | monitored in a scalable and efficient way via the NSF Monitoring | |||
Interface. The information model for the NSF monitoring interface | Interface. The information model for the NSF monitoring interface | |||
presented in this document is complementary for the security policy | presented in this document is complementary for the security policy | |||
provisioning functionality of the NSF-Facing Interface specified in | provisioning functionality of the NSF-Facing Interface specified in | |||
[I-D.ietf-i2nsf-nsf-facing-interface-dm]. | [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 | ||||
systems and NSFs, which are related to security. | ||||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
This document uses the terminology described in [RFC8329]. In | This document uses the terminology described in [RFC8329]. In | |||
addition, the following terms are defined in this document: | addition, the following terms are defined in this document: | |||
* I2NSF User: An entity that delivers a high-level security policy | * I2NSF User: An entity that delivers a high-level security policy | |||
to the Security Controller and may request monitoring information | to the Security Controller and may request monitoring information | |||
via the NSF data collector. | via the NSF data collector. | |||
* 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 I2NSF environment consists of I2NSF | monitoring information in an I2NSF environment consists of I2NSF | |||
Event, I2NSF Record, and I2NSF Counter (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 Controller. | information from NSFs, such as Security Controllers. | |||
* 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 explained in [RFC5277]. | |||
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]. | |||
skipping to change at page 5, line 37 ¶ | skipping to change at page 5, line 45 ¶ | |||
can aid in the root cause analysis of an operational issue, so it | can aid in the root cause analysis of an operational issue, so it | |||
can improve debugging. | can improve debugging. | |||
* The records from the NSF can be used to build historical data for | * The records from the NSF can be used to build historical data for | |||
operation and business reasons. | operation and business reasons. | |||
4. Classification of NSF Monitoring Data | 4. Classification of NSF Monitoring Data | |||
In order to maintain a strong security posture, it is not only | In order to maintain a strong security posture, it is not only | |||
necessary to configure an NSF's security policies but also to | necessary to configure an NSF's security policies but also to | |||
continuously monitor the NSF by consuming acquirable and observable | continuously monitor the NSF by checking acquirable and observable | |||
data. This enables security administrators to assess the state of | data. This enables security administrators to assess the state of | |||
the networks in a timely fashion. It is not possible to block all | the networks in a timely fashion. It is not possible to block all | |||
the internal and external threats based on static security posture. | the internal and external threats based on static security posture. | |||
A more practical approach is supported by enabling dynamic security | A more practical approach is supported by enabling dynamic security | |||
measures, for which continuous visibility is required. This document | measures, for which continuous visibility is required. This document | |||
defines a set of monitoring elements and their scopes that can be | defines a set of monitoring elements and their scopes that can be | |||
acquired from an NSF and can be used as NSF monitoring data. In | acquired from an NSF and can be used as NSF monitoring data. In | |||
essence, this monitoring data can be leveraged to support constant | essence, this monitoring data can be leveraged to support constant | |||
visibility on multiple levels of granularity and can be consumed by | visibility on multiple levels of granularity and can be consumed by | |||
the corresponding functions. | the corresponding functions. | |||
Three basic domains about the monitoring data originating from a | Three basic domains of monitoring data originating from a system | |||
system entity [RFC4949], i.e., an NSF, are highlighted in this | entity [RFC4949], i.e., an NSF, are discussed in this document. | |||
document. | ||||
* Retention and Emission | * Retention and Emission from NSFs | |||
* Notifications, Events, and Records | * Notifications for Events and Records | |||
* Unsolicited Poll and Solicited Pull | * 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 entity can be an I2NSF | |||
component. This information is intended to be consumed by other | component. This information is intended to be consumed by other | |||
I2NSF components, which deals with NSF monitoring data in an | I2NSF components, which deals with NSF monitoring data in an | |||
automated fashion. | automated fashion. | |||
4.1. Retention and Emission | 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 Event, I2NSF Record, and I2NSF Counter | information consist of I2NSF Events, I2NSF Records, and I2NSF | |||
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 for an | |||
skipping to change at page 6, line 46 ¶ | skipping to change at page 7, line 4 ¶ | |||
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 information generated by a system entity (e.g., NSF) that is | |||
based on operational and informational data (i.e., various changes | based on operational and informational data (i.e., various changes | |||
in system characteristics), and are generated at particular | in system characteristics), and are generated at particular | |||
instants to be kept without any changes afterward. A set of | instants to be kept without any changes afterward. A set of | |||
records has an ordering in time based on when they are generated. | records has an ordering in time based on when they are generated. | |||
Unlike I2NSF Event, records do not require immediate attention but | ||||
may be useful for visibility and retroactive cyber forensic. | Unlike I2NSF Events, records do not require immediate attention | |||
but may be useful for visibility and retroactive cyber forensics. | ||||
Records are typically stored in log-files or databases on a system | Records are typically stored in log-files or databases on a system | |||
entity or NSF. The examples of records include as user | entity or NSF. The examples of records include as user | |||
activities, device performance, and network status. They are | activities, device performance, and network status. They are | |||
important for debugging, auditing, and security forensic of a | important for debugging, auditing, and security forensic of a | |||
system entity or the network having the system entity. | system entity or the network having the system 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. Other examples are integer approximations to | error counters. Counters are useful in debugging and visibility | |||
continuous values, such as a processor temperature measured in | into operational behavior of a system entity (e.g., NSF). When an | |||
tenths of a degree or the percentage of a disk that is used. | NSF data collector asks for the value of a counter, a system | |||
Counters are useful in debugging and visibility into operational | entity MUST update the counter information and emit the latest | |||
behavior of a system entity (e.g., NSF). When an NSF data | ||||
collector asks for the value of a counter to it, a system entity | ||||
MUST update the counter information and emit the latest | ||||
information to the NSF data collector. | information to the NSF data collector. | |||
The retention of I2NSF monitoring information may be affected by the | Retention is defined as the storing of monitoring data in NSFs. The | |||
retention of I2NSF monitoring information may be affected by the | ||||
importance of the data. The importance of the data could be context- | importance of the data. The importance of the data could be context- | |||
dependent, where it may not just be based on the type of data, but | dependent, where it may not just be based on the type of data, but | |||
may also depend on where it is deployed, e.g., a test lab and | may also depend on where it is deployed, e.g., a test lab and | |||
testbed. The local policy and configuration will dictate the | testbed. The local policy and configuration will dictate the | |||
policies and procedures to review, archive, or purge the collected | policies and procedures to review, archive, or purge the collected | |||
monitoring data. | monitoring data. | |||
The I2NSF monitoring information retained on a system entity (e.g., | Emission is defined as the delivery of monitoring data in NSFs to an | |||
NSF) may be delivered to a corresponding I2NSF User via an NSF data | NSF data collector. The I2NSF monitoring information retained on a | |||
collector. The information consists of the aggregated records, | system entity (e.g., NSF) may be delivered to a corresponding I2NSF | |||
typically in the form of log-files or databases. For the NSF | User via an NSF data collector. The information consists of the | |||
Monitoring Interface to deliver the information to the NSF data | aggregated records, typically in the form of log-files or databases. | |||
collector, the NSF needs to accommodate standardized delivery | For the NSF Monitoring Interface to deliver the information to the | |||
protocols, such as NETCONF [RFC6241] and RESTCONF [RFC8040]. The NSF | NSF data collector, the NSF needs to accommodate standardized | |||
data collector can forward the information to the I2NSF User through | delivery protocols, such as NETCONF [RFC6241] and RESTCONF [RFC8040]. | |||
one of standardized delivery protocols. The interface for this | The NSF data collector can forward the information to the I2NSF User | |||
delivery is out of the scope of this document. | through standardized delivery protocols (e.g., RESTCONF and NETCONF). | |||
The interface for this delivery is out of the scope of this document. | ||||
4.2. Notifications, Events, and Records | 4.2. Notifications for Events and Records | |||
A specific task of I2NSF User is to process I2NSF Policy Rules. The | A specific task of an I2NSF User is to process I2NSF Policy Rules. | |||
rules of a policy are composed of three clauses: Event, Condition, | The rules of a policy are composed of three clauses: Event, | |||
and Action clauses. In consequence, an I2NSF Event is specified to | Condition, and Action clauses. In consequence, an I2NSF Event is | |||
trigger the evaluation of the Condition clause of the I2NSF Policy | specified to trigger the evaluation of the Condition clause of the | |||
Rule. Such an I2NSF Event is defined as an important occurrence at a | I2NSF Policy Rule. Such an I2NSF Event is defined as an important | |||
particular time in the system being managed, and/or in the | occurrence at a particular time in the system being managed, and/or | |||
environment of the system being managed whose concept aligns well | in the environment of the system being managed whose concept aligns | |||
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 | |||
[RFC3877] as an unsolicited transmission of management information. | [RFC3877] as an unsolicited transmission of management information. | |||
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, the information of 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 and a record via the I2NSF Monitoring Interface. The | |||
difference between the event and record is the timing by which the | difference between the event and record is the timing by which the | |||
notifications are emitted. An event is emitted as soon as it happens | notifications are emitted. An event is emitted as soon as it happens | |||
in order to notify an NSF Data Collector of the problem that needs | in order to notify an NSF Data Collector of the problem that needs | |||
immediate attention. A record is not emitted immediately to the NSF | immediate attention. A record is not emitted immediately to the NSF | |||
Data Collector, and it can be emitted periodically to the NSF Data | Data Collector, and it can be emitted periodically to the NSF Data | |||
Collector every certain time interval. | 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. Unsolicited Poll and Solicited Pull | 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 the current status of the network. The I2NSF Monitoring | notice changes in the current status of the network. The I2NSF | |||
Interface provides the means of sending monitored information from | Monitoring Interface provides the means of sending monitored | |||
the NSFs to an NSF data collector in a timely manner. The method of | information from the NSFs to an NSF data collector in a timely | |||
acquiring the monitoring information can be performed from a client | manner. Monitoring information can be acquired by a client (i.e., | |||
(i.e., NSF data collector) to a server (i.e., NSF) by unsolicited | NSF data collector) from a server (i.e., NSF) using push or pull | |||
poll or solicited pull. | methods. | |||
The solicited pull is a query-based method to obtain information from | The pull is a query-based method to obtain information from the NSF. | |||
the NSF. In this method, the NSF will remain passive until the | In this method, the NSF will remain passive until the information is | |||
information is requested from the NSF data collector. Once a new | requested from the NSF data collector. Once a request is accepted | |||
request is accepted (with proper authentication), the NSF MUST update | (with proper authentication), the NSF MUST update the information | |||
the information before sending it to the NSF data collector. | before sending it to the NSF data collector. | |||
The unsolicited poll is a report-based method to obtain information | The push is a report-based method to obtain information from the NSF. | |||
from the NSF. The report-based method ensures the information can be | The report-based method ensures the information can be delivered | |||
delivered immediately without any requests. This method is used by | immediately without any requests. This method is used by the NSF to | |||
the NSF to actively provide information to the NSF data collector. | actively provide information to the NSF data collector. To receive | |||
To receive the information, the NSF data collector subscribes to the | the information, the NSF data collector subscribes to the NSF for the | |||
NSF for the information. | information. | |||
These acquisition methods are used for different types of monitoring | These acquisition methods are used for different types of monitoring | |||
information. The information that has a high level of urgency (i.e., | information. The information that has a high level of urgency (i.e., | |||
I2NSF Event) should be provided with the unsolicited poll method, | I2NSF Event) should be provided with the push method, while | |||
while information that has a lower level of urgency (i.e., I2NSF | information that has a lower level of urgency (i.e., I2NSF Record and | |||
Record and I2NSF Counter) can be provided with either the solicited | I2NSF Counter) can be provided with either the pull method or push | |||
pull method or unsolicited poll 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 the NSF 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 meta data with that message, | |||
which are listed as below: | which are listed as below: | |||
* message: The extra detailed description on 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 meta data. | |||
* 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 IP address, the name can be | message. If the given nsf-name is not an IP address, the name can | |||
an arbitrary string including FQDN (Fully Qualified Domain Name). | be an arbitrary string including a FQDN (Fully Qualified Domain | |||
The name MUST be unique in the scope of management domain for a | Name). The name MUST be unique in the scope of management domain | |||
different NSF to identify the NSF that generates the message. | for a different NSF to identify the NSF that generates the | |||
message. | ||||
* severity: The severity level of the message. There are total 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. | |||
* timestamp: The time when the message is 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. | |||
* 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 differentiate the language that is used | |||
in the notification. This field is not mandatory, but required | in the notification. This field is mandatory only when the | |||
when the implementation provides more than one human language for | implementation provides more than one human language for the | |||
the human-readable string fields. | human-readable string fields. | |||
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 characteristics for data | The extended monitoring information has settable characteristics for | |||
collection setting 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 to acquire the unsolicited information. | 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. It | |||
can be "on-change", "periodic", or "on-request". An "on-change" | can be "on-change", "periodic", or "on-request". An "on-change" | |||
message is emitted when an important event happens in the NSF. A | message is emitted when an important event happens in the NSF. A | |||
"periodic" message is emitted at a certain time interval. An "on- | "periodic" message is emitted at a certain time interval. An "on- | |||
request" message is emitted when the information is requested. | request" message is emitted when the information is requested. | |||
The time to periodically emit the message is configurable. | 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., 1 second). This interval is defined as dampening- | |||
period in [RFC8641]. The dampening-period is configurable. The | period in [RFC8641]. The dampening-period is configurable. The | |||
"no-dampening" type does not limit the transmission for the | "no-dampening" type does not limit the transmission for the | |||
messages of the same type. In short, "on-repetition" means that | messages of the same type. In short, "on-repetition" means that | |||
the dampening is active and "no-dampening" is inactive. It is | the dampening is active and "no-dampening" is inactive. | |||
recommended to activate the dampening for an "on-change" type of | Activating the dampening for an "on-change" type of message is | |||
message to reduce the number of messages generated. | RECOMMENDED to reduce the number of messages generated. | |||
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 RAM usage exceeds the threshold. The following | |||
information should be included in a Memory Alarm: | information should be included in a Memory Alarm: | |||
skipping to change at page 11, line 17 ¶ | skipping to change at page 11, line 24 ¶ | |||
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 RAM 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 size of memory used. | * usage: specifies the amount of memory used. | |||
* threshold: The threshold triggering the alarm | * threshold: The threshold triggering the alarm | |||
* severity: The severity level of the message. There are total 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 such as "The memory usage exceeded the | * message: Simple information as a human readable text string such | |||
threshold" or with extra information. | as "The memory usage exceeded the threshold" or with extra | |||
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. | |||
* threshold: The threshold triggering the event. | * threshold: The threshold triggering the event. | |||
* severity: The severity level of the message. There are total 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 such as "The CPU usage exceeded the | * message: Simple information as a human readable text string such | |||
threshold" or with extra information. | as "The CPU usage exceeded the threshold" or with extra | |||
information. | ||||
6.1.3. Disk Alarm | 6.1.3. Disk Alarm | |||
Disk is the hardware to store information for a long period, i.e., | Disk is the hardware to store information for a long time, i.e., Hard | |||
Hard Disk or Solid-State Drive. The disk-alarm is emitted when the | Disk or Solid-State Drive. The disk-alarm is emitted when the Disk | |||
Disk usage exceeds the threshold. The following information should | usage exceeds the threshold. The following information should be | |||
be included in a Disk Alarm: | included in a Disk Alarm: | |||
* event-name: disk-alarm. | * event-name: disk-alarm. | |||
* usage: Specifies the size of disk space used. | * usage: Specifies the size of disk space used. | |||
* threshold: The threshold triggering the event. | * threshold: The threshold triggering the event. | |||
* severity: The severity level of the message. There are total 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 such as "The disk usage exceeded the | * message: Simple information as a human readable text string such | |||
threshold" or with extra information. | as "The disk usage exceeded the threshold" or with extra | |||
information. | ||||
6.1.4. Hardware Alarm | 6.1.4. Hardware Alarm | |||
The hardware-alarm is emitted when a hardware, e.g., CPU, memory, | The hardware-alarm is emitted when a hardware, e.g., CPU, memory, | |||
disk, or interface, problem is detected. The following information | disk, or interface, problem is detected. The following information | |||
should be included in a Hardware Alarm: | should be included in a Hardware Alarm: | |||
* event-name: hardware-alarm. | * event-name: hardware-alarm. | |||
* component-name: It indicates the hardware component responsible | * component-name: It indicates the hardware component responsible | |||
for generating this alarm. | for generating this alarm. | |||
* severity: The severity level of the message. There are total 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 such as "The hardware component has | * message: Simple information as a human readable text string such | |||
failed or degraded" or with extra information. | as "The hardware component has failed or degraded" or with extra | |||
information. | ||||
6.1.5. Interface Alarm | 6.1.5. Interface Alarm | |||
Interface is the network interface for connecting a device with the | Interface is the network interface for connecting a device with the | |||
network. The interface-alarm is emitted when the state of the | network. The interface-alarm is emitted when the state of the | |||
interface is changed. The following information should be included | interface is changed. The following information should be included | |||
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: down, up (not congested), congested (up but | * interface-state: The status of the interface, i.e., down, up (not | |||
congested). | congested), congested (up but congested), testing, unknown, | |||
dormant, not-present, and lower-layer-down. | ||||
* severity: The severity level of the message. There are total four | * severity: The severity level of the message. There are total | |||
levels, i.e., critical, high, middle, and low. | levels, i.e., critical, high, middle, and low. | |||
* message: Simple information such as "The interface is 'interface- | * message: Simple information as a human readable text string such | |||
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 | |||
* emission-type: on-change | * emission-type: on-change | |||
* dampening-type: on-repetition or no-dampening | * dampening-type: on-repetition or no-dampening | |||
skipping to change at page 13, line 36 ¶ | skipping to change at page 13, line 50 ¶ | |||
included: | 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. | |||
3. ip-address: The IP address of the user that triggered the | 3. ip-address: The IP address of the user that triggered the | |||
event. | event. | |||
4. port-number: The port number used by the user. | 4. l4-port-number: The transport layer port number used by the | |||
user. | ||||
* authentication: The method to verify the valid user, i.e., pre- | * authentication: The method to verify the valid user, i.e., pre- | |||
configured-key and certificate-authority. | configured-key and certificate-authority. | |||
* message: The message to give the context of the event, such as | * message: The message as a human readable text string to give the | |||
"Access is denied". | context of the event, such as "Access is denied". | |||
6.2.2. Configuration Change | 6.2.2. Configuration Change | |||
A configuration change is a system event when a new configuration is | A configuration change is a system event when a new configuration is | |||
added or an existing configuration is modified. The following | added or an existing configuration is modified. The following | |||
information should be included in this event: | information should be included in this event: | |||
* event-name: configuration-change. | * event-name: configuration-change. | |||
* identity: The information to identify the attempted access | * identity: The information to identify the user that updated the | |||
violation. The minimum information (extensible) that should be | configuration. The minimum information (extensible) that should | |||
included: | be included: | |||
1. user: The unique username that changes the configuration. | 1. user: The unique username that changes the configuration. | |||
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. | |||
3. ip-address: The IP address of the user that triggered the | 3. ip-address: The IP address of the user that triggered the | |||
event. | event. | |||
4. port-number: The port number used by the user. | 4. l4-port-number: The transport layer port number used by the | |||
user. | ||||
* authentication: The method to verify the valid user, i.e., pre- | * authentication: The method to verify the valid user, i.e., pre- | |||
configured-key and certificate-authority. | configured-key and certificate-authority. | |||
* message: The message to give the context of the event, such as | * message: The message as a human readable text string to give the | |||
"Configuration is modified", "New configuration is added", or "A | context of the event, such as "Configuration is modified", "New | |||
configuration has been removed". | configuration is added", or "A configuration has been removed". | |||
* changes: Describes the modification that was made to the | * changes: Describes the modification that was made to the | |||
configuration. The minimum information that must be provided is | configuration. The minimum information that must be provided is | |||
the name of the policy that has been altered (added, modified, or | the name of the policy that has been altered (added, modified, or | |||
removed). Other detailed information about the configuration | removed). Other detailed information about the configuration | |||
changes is up to the implementation. | changes is up to the implementation. | |||
6.2.3. Session Table Event | 6.2.3. Session Table Event | |||
Session Table Event is the event triggered by the session table of an | A session is defined as a connection (i.e., traffic flow) of a data | |||
NSF. A session table holds the information of the current active | plane (e.g., TCP, UDP, and SCTP). Session Table Event is the event | |||
sessions. The following information should be included in a Session | triggered by the session table of an NSF. A session table holds the | |||
Table Event: | information of the currently active sessions. The following | |||
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 triggering the event. | |||
* message: The message to give the context of the event, such as | * message: The message as a human readable text string to give the | |||
"The number of session table exceeded the threshold". | context of the event, such as "The number of sessions exceeded the | |||
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-type: The type of a network interface such as an ingress | ||||
or egress interface. | ||||
* src-mac: The source MAC address of the traffic flow. | ||||
* dst-mac: The destination MAC address of the traffic flow. | ||||
* 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 source port of the traffic flow. | * src-port: The transport layer source port number of the traffic | |||
flow. | ||||
* dst-port: The destination port of the traffic flow. | * dst-port: The transport layer destination port number of the | |||
traffic flow. | ||||
* protocol: The protocol of the traffic flow. | * protocol: The protocol of the traffic flow. | |||
* 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. | packet per second calculated from the beginning of the flow. | |||
* arrival-speed: Arrival rate of packets of the traffic flow in | * arrival-throughput: Arrival rate of packets of the traffic flow in | |||
bytes per second. | bytes per second calculated from the beginning of the flow. | |||
Note that the NSF Monitoring Interface data model is focused on a | ||||
generic method to collect the monitoring information of systems and | ||||
NSFs including traffic flows related to security attacks and system | ||||
resource usages. On the other hand, IPFIX [RFC7011] is a standard | ||||
method to collect general information on traffic flows rather than | ||||
security. | ||||
6.3. NSF Events | 6.3. NSF Events | |||
NSF events have the following characteristics: | The NSF events provide the event that is detected by a specific NSF | |||
that supported a certain capability. This section only discusses the | ||||
monitoring data for the advanced NSFs discussed in | ||||
[I-D.ietf-i2nsf-capability-data-model]. The NSF events information | ||||
can be extended to support other types of NSF. NSF events 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.3.1. DDoS Detection | 6.3.1. DDoS Detection | |||
The following information should be included in a DDoS Event: | The following information should be included in a Denial-of-Service | |||
(DoS) or Distributed Denial-of-Service (DDoS) Event: | ||||
* event-name: detection-ddos. | * event-name: detection-ddos. | |||
* attack-type: The type of DDoS Attack, i.e., SYN flood, ACK flood, | * attack-type: The type of DoS or DDoS Attack, i.e., SYN flood, ACK | |||
SYN-ACK flood, FIN/RST flood, TCP Connection flood, UDP flood, | flood, SYN-ACK flood, FIN/RST flood, TCP Connection flood, UDP | |||
ICMP flood, HTTPS flood, HTTP flood, DNS query flood, DNS reply | flood, ICMP flood, HTTPS flood, HTTP flood, DNS query flood, DNS | |||
flood, SIP flood, SSL flood, and NTP amplification flood. This | reply flood, SIP flood, SSL flood, and NTP amplification flood. | |||
can be extended with additional types of 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 address of the source of the DDoS attack. | |||
* attack-dst-ip: The network prefix with a network mask (for IPv4) | * attack-dst-ip: The network prefix with a network mask (for IPv4) | |||
or prefix length (for IPv6) of a victim under DDoS attack. | or prefix length (for IPv6) of a victim under DDoS attack. | |||
* dst-port: The port number that the attack traffic aims at. | * dst-port: The port number that the attack traffic aims at. | |||
* start-time: The time stamp indicating when the attack started. | * start-time: The time stamp indicating when the attack started. | |||
* 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 undergoing when sending out the notification, this | attack is still ongoing when sending out the notification, this | |||
field can be empty. | field can be empty. | |||
* attack-rate: The packets per second of attack traffic. | * attack-rate: The packets per second of attack traffic. | |||
* attack-speed: 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 | |||
This information is used when a virus is detected within the traffic | This information is used when a virus is detected within a traffic | |||
flow or inside the host. The following information should be | flow or inside a host. Note that "malware" is a more generic word | |||
included in a Virus Event: | for malicious software, including virus and worm. In the document, | |||
"virus" is used to represent "malware" such that they are | ||||
interchangeable. The following information should be included in a | ||||
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, macro virus | |||
type. | type. | |||
* dst-ip: The destination IP address of the flow where the virus is | * The following information is used only when the virus is detected | |||
found. This is used when the virus is detected within the traffic | within the traffic flow and not yet attacking the host: | |||
flow. | ||||
* src-ip: The source IP address of the flow where the virus is | - dst-ip: The destination IP address of the flow where the virus | |||
found. This is used when the virus is detected within the traffic | is found. | |||
flow. | ||||
* src-port: The source port of the flow where the virus is found. | - src-ip: The source IP address of the flow where the virus is | |||
This is used when the virus is detected within the traffic flow. | found. | |||
* dst-port: The destination port of the flow where the virus is | - src-port: The source port of the flow where the virus is found. | |||
found. This is used when the virus is detected within the traffic | ||||
flow. | ||||
* src-location: The geographical location (e.g., country and city) | - dst-port: The destination port of the flow where the virus is | |||
of the src-ip field. This is used when the virus is detected | found. | |||
within the traffic flow. | ||||
* dst-location: The geographical location (e.g., country and city) | * The following information is used only when the virus is detected | |||
of the dst-ip field. This is used when the virus is detected | within a host system: | |||
within the traffic flow. | ||||
* host: The name or IP address of the host/device that is infected | - host: The name or IP address of the host/device that is | |||
by the virus. This is used when the virus is detected within a | infected by the virus. If the given name is not an IP address, | |||
host system. If the given name is not IP address, the name can be | the name can be an arbitrary string including a FQDN (Fully | |||
an arbitrary string including FQDN (Fully Qualified Domain Name). | Qualified Domain Name). The name MUST be unique in the scope | |||
The name MUST be unique in the scope of management domain for | of management domain for identifying the device that has been | |||
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. This is | - os: The operating system of the host that has the virus. | |||
used when the virus is detected within a host system. | ||||
* file-type: The type of the file where the virus is hidden. This | - file-type: The type of the file where the virus is hidden. | |||
is used when the virus is detected within a host system. | ||||
* file-name: The name of the file where the virus is hidden. This | - file-name: The name of the file where the virus is hidden. | |||
is used when the virus is detected within a host system. | ||||
* 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 | ||||
itself. Thus, the traffic flow information such as the source and | ||||
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 | ||||
specified above. On the other hand, when the virus is detected | ||||
within a traffic flow and not yet attacking a host, the element of | ||||
"host" is not specified above. | ||||
6.3.3. Intrusion Event | 6.3.3. Intrusion Event | |||
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 and 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 | |||
* src-location: The source geographical location (e.g., country and | * protocol: The employed transport layer protocol. e.g., TCP or UDP. | |||
city) of the src-ip field. | ||||
* dst-location: The destination geographical location (e.g., country | ||||
and city) of the dst-ip field. | ||||
* protocol: The employed transport layer protocol. e.g., TCP and | ||||
UDP. | ||||
* app: The employed application layer protocol. e.g., HTTP and 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. | |||
* attack-type: Concrete web attack type. e.g., SQL injection, | * attack-type: Concrete web attack type. e.g., SQL injection, | |||
command injection, XSS, CSRF. | command injection, XSS, or CSRF. | |||
* src-ip: The source IP address of the packet. | * src-ip: The source IP address of the packet. | |||
* dst-ip: The destination IP address of the packet. | * dst-ip: The destination IP address of the packet. | |||
* src-port: The source port number of the packet. | * src-port: The source port number of the packet. | |||
* dst-port: The destination port number of the packet. | * dst-port: The destination port number of the packet. | |||
* src-location: The source geographical location (e.g., country and | ||||
city) of the src-ip field. | ||||
* dst-location: The destination geographical location (e.g., country | ||||
and city) of the dst-ip field. | ||||
* 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. | * 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. | |||
* 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/VoLTE Event | 6.3.5. VoIP/VoCN Event | |||
The following information should be included in a VoIP/VoLTE Event: | The following information should be included in a VoIP (Voice over | |||
Internet Protocol) and VoCN (Voice over Cellular Network, such as | ||||
Voice over LTE or 5G) Event: | ||||
* event-name: detection-voip-volte | * event-name: detection-voip-vocn | |||
* source-voice-id: The detected source voice Call ID for VoIP and | * source-voice-id: The detected source voice Call ID for VoIP and | |||
VoLTE that violates the policy. | VoCN that violates the policy. | |||
* destination-voice-id: The destination voice Call ID for VoIP and | * destination-voice-id: The destination voice Call ID for VoIP and | |||
VoLTE that violates the policy. | VoCN that violates the policy. | |||
* user-agent: The user agent for VoIP and VoLTE that violates the | * user-agent: The user agent for VoIP and VoCN that violates the | |||
policy. | policy. | |||
* src-ip: The source IP address of the VoIP/VoLTE. | * src-ip: The source IP address of the VoIP/VoCN. | |||
* dst-ip: The destination IP address of the VoIP/VoLTE. | ||||
* src-port: The source port number of the VoIP/VoLTE. | ||||
* dst-port: The destination port number of VoIP/VoLTE. | * dst-ip: The destination IP address of the VoIP/VoCN. | |||
* src-location: The source geographical location (e.g., country and | * src-port: The source port number of the VoIP/VoCN. | |||
city) of the src-ip field. | ||||
* dst-location: The destination geographical location (e.g., country | * dst-port: The destination port number of VoIP/VoCN. | |||
and city) of the dst-ip field. | ||||
* 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 | |||
skipping to change at page 20, line 23 ¶ | skipping to change at page 20, line 51 ¶ | |||
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. | |||
3. ip-address: The IP address of the user that triggered the | 3. ip-address: The IP address of the user that triggered the | |||
event. | event. | |||
4. port-number: The port number used by the user. | 4. l4-port-number: The transport layer port number used by the | |||
user. | ||||
* authentication: The method to verify the valid user, i.e., pre- | * authentication: The method to verify the valid user, i.e., pre- | |||
configured-key and certificate-authority. | configured-key and certificate-authority. | |||
* operation-type: The operation type that the administrator execute, | * operation-type: The operation type that the administrator | |||
e.g., login, logout, configuration, and other. | executed, e.g., login, logout, configuration, and other. | |||
* input: The operation performed by a user after login. The | * input: 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. | |||
* 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 | |||
skipping to change at page 20, line 52 ¶ | skipping to change at page 21, line 32 ¶ | |||
* 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. | |||
* memory-usage: Specifies the memory usage. | * memory-usage: Specifies the memory usage. | |||
* 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. | |||
* disk-left: Specifies the available disk space left of disk-id. | * disk-space-left: Specifies the available disk space left of disk- | |||
id. | ||||
* 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 traffic rate in packets per | * in-traffic-rate: The total inbound data plane traffic rate in | |||
second. | packets per second. | |||
* out-traffic-rate: The total outbound traffic rate in packets per | * out-traffic-rate: The total outbound data plane traffic rate in | |||
second. | packets per second. | |||
* in-traffic-speed: The total inbound traffic speed in bytes per | * in-traffic-throughput: The total inbound data plane traffic | |||
second. | throughput in bytes per second. | |||
* out-traffic-speed: The total outbound traffic speed in bytes per | * out-traffic-throughput: The total outbound data plane traffic | |||
second. | throughput in bytes per second. | |||
Note that "traffic" includes only the data plane since the monitoring | ||||
interface focuses on the monitoring of traffic flows for | ||||
applications, rather than the control plane. In the document, | ||||
"packet" includes a layer-2 frame, so "packet" and "frame" are | ||||
interchangeable. | ||||
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: | |||
* 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 is as follows: | |||
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. | |||
3. ip-address: The IP address of the user that triggered the | 3. ip-address: The IP address of the user that triggered the | |||
event. | event. | |||
4. port-number: The port number used by the user. | 4. l4-port-number: The transport layer port number used by the | |||
user. | ||||
* authentication: The method to verify the valid user, i.e., pre- | * authentication: The method to verify the valid user, i.e., pre- | |||
configured-key and certificate-authority. | configured-key and certificate-authority. | |||
* online-duration: The duration of a user's activeness (stays in | * online-duration: The duration of a user's activeness (stays in | |||
login) during a session. | login) during a session. | |||
* logout-duration: The duration of a user's inactiveness (not in | * logout-duration: The duration of a user's inactiveness (not in | |||
login) from the last session. | login) from the last session. | |||
skipping to change at page 22, line 28 ¶ | skipping to change at page 23, line 17 ¶ | |||
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 or on-request | |||
* 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 on uploaded and | Deep Packet Inspection (DPI) Logs provide statistics of transit | |||
downloaded files and data, sent and received emails, and alert and | traffic at an NSF such that the traffic includes uploaded and | |||
blocking records on websites. It is helpful to learn risky user | downloaded files/data, sent/received emails, and blocking/alert | |||
behaviors and why access to some URLs is blocked or allowed with an | records on websites. It is helpful to learn risky user behaviors and | |||
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-user: The I2NSF User's name who generates the policy. | |||
* policy-name: Security policy name that traffic matches. | * policy-name: Security policy name that traffic matches. | |||
* 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. | |||
skipping to change at page 23, line 9 ¶ | skipping to change at page 23, line 47 ¶ | |||
* acquisition-method: subscription or query | * acquisition-method: subscription or query | |||
* emission-type: periodic or on-request | * emission-type: periodic or on-request | |||
* 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. The statistics of the interface counters | |||
should be computed from the start of the service. When the service | should be computed from the start of the service up to the last | |||
is reset, the computation of statistics per counter should restart | measure time instant. When the service is reset, the computation of | |||
from 0. | 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 | ||||
UDP). If this field is empty, then the counter is used for all | ||||
protocols. | ||||
* 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. | * in-drop-traffic-pkts: Total inbound drop packets caused by a | |||
policy or hardware/resource error. | ||||
* out-drop-traffic-pkts: Total outbound drop packets. | * out-drop-traffic-pkts: Total outbound drop packets caused by a | |||
policy or hardware/resource error. | ||||
* in-drop-traffic-bytes: Total inbound drop bytes. | * in-drop-traffic-bytes: Total inbound drop bytes caused by a policy | |||
or hardware/resource error. | ||||
* out-drop-traffic-bytes: Total outbound drop bytes. | * out-drop-traffic-bytes: Total outbound drop bytes caused by a | |||
policy or hardware/resource error. | ||||
* 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-speed: Inbound traffic average speed in bytes | * in-traffic-average-throughput: Inbound traffic average throughput | |||
per second. | in bytes per second. | |||
* in-traffic-peak-speed: Inbound traffic peak speed in bytes per | * in-traffic-peak-throughput: Inbound traffic peak throughput in | |||
second. | bytes per second. | |||
* out-traffic-average-rate: Outbound traffic average rate in packets | * out-traffic-average-rate: Outbound traffic average rate in packets | |||
per second. | per second. | |||
* out-traffic-peak-rate: Outbound traffic peak rate in packets per | * out-traffic-peak-rate: Outbound traffic peak rate in packets per | |||
second. | second. | |||
* out-traffic-average-speed: Outbound traffic average speed in bytes | * out-traffic-average-throughput: Outbound traffic average | |||
per second. | throughput in bytes per second. | |||
* out-traffic-peak-speed: Outbound traffic peak speed in bytes per | * out-traffic-peak-throughput: Outbound traffic peak throughput in | |||
second. | bytes per second. | |||
* discontinuity-time: The time on 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. | |||
6.7. NSF Counters | 6.7. NSF Counters | |||
NSF counters have the following characteristics: | NSF counters have the following characteristics: | |||
skipping to change at page 25, line 13 ¶ | skipping to change at page 26, line 11 ¶ | |||
* out-interface: Outbound interface of traffic. | * out-interface: Outbound interface of traffic. | |||
* total-traffic: Total traffic volume. | * total-traffic: Total traffic volume. | |||
* 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-speed: Inbound traffic average speed in bytes | * in-traffic-average-throughput: Inbound traffic average throughput | |||
per second. | in bytes per second. | |||
* in-traffic-peak-speed: Inbound traffic peak speed in bytes per | * in-traffic-peak-throughput: Inbound traffic peak throughput in | |||
second. | bytes per second. | |||
* out-traffic-average-rate: Outbound traffic average rate in packets | * out-traffic-average-rate: Outbound traffic average rate in packets | |||
per second. | per second. | |||
* out-traffic-peak-rate: Outbound traffic peak rate in packets per | * out-traffic-peak-rate: Outbound traffic peak rate in packets per | |||
second. | second. | |||
* out-traffic-average-speed: Outbound traffic average speed in bytes | * out-traffic-average-throughput: Outbound traffic average | |||
per second. | throughput in bytes per second. | |||
* out-traffic-peak-speed: Outbound traffic peak speed in bytes per | * out-traffic-peak-throughput: Outbound traffic peak throughput in | |||
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. | |||
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. It can check if policy configurations are | and its hit count. That is, when a packet actually matches a policy, | |||
correct. | it should be added to the statistics of a "policy hit counter" of the | |||
policy. The "policy hit counter" provides the "policy-name" that | ||||
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 | ||||
configurations are correct or not. | ||||
* src-ip: Source IP address of traffic. | * src-ip: Source IP address of traffic. | |||
* src-user: The I2NSF User's name who generates the policy. | * src-user: The I2NSF User's name who generates the policy. | |||
* dst-ip: Destination IP address of traffic. | * dst-ip: Destination IP address of traffic. | |||
* src-port: Source port of traffic. | * src-port: Source port of traffic. | |||
* dst-port: Destination port of traffic. | * dst-port: Destination port of traffic. | |||
skipping to change at page 26, line 32 ¶ | skipping to change at page 27, line 34 ¶ | |||
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 language? string | |||
| +--ro system-interface* [interface-name] | | +--ro system-interface* [interface-name] | |||
| | +--ro acquisition-method? identityref | | | +--ro acquisition-method? identityref | |||
| | +--ro emission-type? identityref | | | +--ro emission-type? identityref | |||
| | +--ro dampening-type? identityref | | | +--ro dampening-type? identityref | |||
| | +--ro interface-name if:interface-ref | | | +--ro interface-name if:interface-ref | |||
| | +--ro in-total-traffic-pkts? yang:counter64 | | | +--ro protocol? identityref | |||
| | +--ro out-total-traffic-pkts? yang:counter64 | | | +--ro in-total-traffic-pkts? yang:counter64 | |||
| | +--ro in-total-traffic-bytes? uint64 | | | +--ro out-total-traffic-pkts? yang:counter64 | |||
| | +--ro out-total-traffic-bytes? uint64 | | | +--ro in-total-traffic-bytes? uint64 | |||
| | +--ro in-drop-traffic-pkts? yang:counter64 | | | +--ro out-total-traffic-bytes? uint64 | |||
| | +--ro out-drop-traffic-pkts? yang:counter64 | | | +--ro in-drop-traffic-pkts? yang:counter64 | |||
| | +--ro in-drop-traffic-bytes? uint64 | | | +--ro out-drop-traffic-pkts? yang:counter64 | |||
| | +--ro out-drop-traffic-bytes? uint64 | | | +--ro in-drop-traffic-bytes? uint64 | |||
| | +--ro discontinuity-time yang:date-and-time | | | +--ro out-drop-traffic-bytes? uint64 | |||
| | +--ro total-traffic? yang:counter64 | | | +--ro discontinuity-time yang:date-and-time | |||
| | +--ro in-traffic-average-rate? uint32 | | | +--ro total-traffic? yang:counter64 | |||
| | +--ro in-traffic-peak-rate? uint32 | | | +--ro in-traffic-average-rate? uint32 | |||
| | +--ro in-traffic-average-speed? uint64 | | | +--ro in-traffic-peak-rate? uint32 | |||
| | +--ro in-traffic-peak-speed? uint64 | | | +--ro in-traffic-average-throughput? uint64 | |||
| | +--ro out-traffic-average-rate? uint32 | | | +--ro in-traffic-peak-throughput? uint64 | |||
| | +--ro out-traffic-peak-rate? uint32 | | | +--ro out-traffic-average-rate? uint32 | |||
| | +--ro out-traffic-average-speed? uint64 | | | +--ro out-traffic-peak-rate? uint32 | |||
| | +--ro out-traffic-peak-speed? uint64 | | | +--ro out-traffic-average-throughput? uint64 | |||
| | +--ro message? string | | | +--ro out-traffic-peak-throughput? uint64 | |||
| | +--ro vendor-name? string | | | +--ro message? string | |||
| | +--ro nsf-name? union | | | +--ro vendor-name? string | |||
| | +--ro severity? severity | | | +--ro nsf-name? union | |||
| | +--ro timestamp? yang:date-and-time | | | +--ro severity? severity | |||
| | +--ro timestamp? yang:date-and-time | ||||
| +--ro nsf-firewall* [policy-name] | | +--ro nsf-firewall* [policy-name] | |||
| | +--ro acquisition-method? identityref | | | +--ro acquisition-method? identityref | |||
| | +--ro emission-type? identityref | | | +--ro emission-type? identityref | |||
| | +--ro dampening-type? identityref | | | +--ro dampening-type? identityref | |||
| | +--ro policy-name | | | +--ro policy-name -> /nsfintf:i2nsf-security-policy/name | |||
-> /nsfintf:i2nsf-security-policy/name | | | +--ro src-user? string | |||
| | +--ro src-user? string | | | +--ro discontinuity-time yang:date-and-time | |||
| | +--ro discontinuity-time yang:date-and-time | | | +--ro total-traffic? yang:counter64 | |||
| | +--ro total-traffic? yang:counter64 | | | +--ro in-traffic-average-rate? uint32 | |||
| | +--ro in-traffic-average-rate? uint32 | | | +--ro in-traffic-peak-rate? uint32 | |||
| | +--ro in-traffic-peak-rate? uint32 | | | +--ro in-traffic-average-throughput? uint64 | |||
| | +--ro in-traffic-average-speed? uint64 | | | +--ro in-traffic-peak-throughput? uint64 | |||
| | +--ro in-traffic-peak-speed? uint64 | | | +--ro out-traffic-average-rate? uint32 | |||
| | +--ro out-traffic-average-rate? uint32 | | | +--ro out-traffic-peak-rate? uint32 | |||
| | +--ro out-traffic-peak-rate? uint32 | | | +--ro out-traffic-average-throughput? uint64 | |||
| | +--ro out-traffic-average-speed? uint64 | | | +--ro out-traffic-peak-throughput? uint64 | |||
| | +--ro out-traffic-peak-speed? uint64 | | | +--ro message? string | |||
| | +--ro message? string | | | +--ro vendor-name? string | |||
| | +--ro vendor-name? string | | | +--ro nsf-name? union | |||
| | +--ro nsf-name? union | | | +--ro severity? severity | |||
| | +--ro severity? severity | | | +--ro timestamp? yang:date-and-time | |||
| | +--ro timestamp? yang:date-and-time | ||||
| +--ro nsf-policy-hits* [policy-name] | | +--ro nsf-policy-hits* [policy-name] | |||
| +--ro acquisition-method? identityref | | +--ro acquisition-method? identityref | |||
| +--ro emission-type? identityref | | +--ro emission-type? identityref | |||
| +--ro dampening-type? identityref | | +--ro dampening-type? identityref | |||
| +--ro policy-name | | +--ro policy-name -> /nsfintf:i2nsf-security-policy/name | |||
-> /nsfintf:i2nsf-security-policy/name | ||||
| +--ro src-user? string | | +--ro src-user? string | |||
| +--ro message? string | | +--ro message? string | |||
| +--ro vendor-name? string | | +--ro vendor-name? string | |||
| +--ro nsf-name? union | | +--ro nsf-name? union | |||
| +--ro severity? severity | | +--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 | | +--ro timestamp? yang:date-and-time | |||
+--rw i2nsf-monitoring-configuration | +--rw i2nsf-monitoring-configuration | |||
+--rw i2nsf-system-detection-alarm | +--rw i2nsf-system-detection-alarm | |||
skipping to change at page 29, line 20 ¶ | skipping to change at page 30, line 21 ¶ | |||
| | +--ro severity? severity | | | +--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 acquisition-method? identityref | |||
| | +--ro emission-type? identityref | | | +--ro emission-type? identityref | |||
| | +--ro dampening-type? identityref | | | +--ro dampening-type? identityref | |||
| | +--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 port-number inet:port-number | | | +--ro l4-port-number inet:port-number | |||
| | +--ro authentication? identityref | | | +--ro authentication? identityref | |||
| | +--ro message? string | | | +--ro message? string | |||
| | +--ro vendor-name? string | | | +--ro vendor-name? string | |||
| | +--ro nsf-name? union | | | +--ro nsf-name? union | |||
| | +--ro severity? severity | | | +--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-type? enumeration | ||||
| | +--ro src-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 arrival-rate? uint32 | |||
| | +--ro arrival-speed? uint32 | | | +--ro arrival-throughput? uint32 | |||
| | +--ro acquisition-method? identityref | | | +--ro acquisition-method? identityref | |||
| | +--ro emission-type? identityref | | | +--ro emission-type? identityref | |||
| | +--ro dampening-type? identityref | | | +--ro dampening-type? identityref | |||
| | +--ro message? string | | | +--ro message? string | |||
| | +--ro vendor-name? string | | | +--ro vendor-name? string | |||
| | +--ro nsf-name? union | | | +--ro nsf-name? union | |||
| | +--ro severity? severity | | | +--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 | |||
skipping to change at page 30, line 14 ¶ | skipping to change at page 31, line 19 ¶ | |||
| +--ro nsf-name? union | | +--ro nsf-name? union | |||
| +--ro severity? severity | | +--ro severity? severity | |||
+---n i2nsf-log | +---n i2nsf-log | |||
| +--ro language? string | | +--ro language? string | |||
| +--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 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 acquisition-method? identityref | |||
| | +--ro emission-type? identityref | | | +--ro emission-type? identityref | |||
| | +--ro dampening-type? identityref | | | +--ro dampening-type? identityref | |||
| | +--ro message? string | | | +--ro message? string | |||
| | +--ro vendor-name? string | | | +--ro vendor-name? string | |||
| | +--ro nsf-name? union | | | +--ro nsf-name? union | |||
| | +--ro severity? severity | | | +--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 disk* [disk-id] | |||
| | | +--ro disk-id string | | | | +--ro disk-id string | |||
| | | +--ro disk-usage? uint8 | | | | +--ro disk-usage? uint8 | |||
| | | +--ro disk-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? uint32 | |||
| | | +--ro out-traffic-rate? uint32 | | | | +--ro out-traffic-rate? uint32 | |||
| | | +--ro in-traffic-speed? uint64 | | | | +--ro in-traffic-throughput? uint64 | |||
| | | +--ro out-traffic-speed? uint64 | | | | +--ro out-traffic-throughput? uint64 | |||
| | +--ro acquisition-method? identityref | | | +--ro acquisition-method? identityref | |||
| | +--ro emission-type? identityref | | | +--ro emission-type? identityref | |||
| | +--ro dampening-type? identityref | | | +--ro dampening-type? identityref | |||
| | +--ro message? string | | | +--ro message? string | |||
| | +--ro vendor-name? string | | | +--ro vendor-name? string | |||
| | +--ro nsf-name? union | | | +--ro nsf-name? union | |||
| | +--ro severity? severity | | | +--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 acquisition-method? identityref | |||
| | +--ro emission-type? identityref | | | +--ro emission-type? identityref | |||
| | +--ro dampening-type? identityref | | | +--ro dampening-type? identityref | |||
| | +--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 port-number inet:port-number | | | +--ro l4-port-number inet:port-number | |||
| | +--ro authentication? identityref | | | +--ro authentication? identityref | |||
| | +--ro message? string | | | +--ro message? string | |||
| | +--ro vendor-name? string | | | +--ro vendor-name? string | |||
| | +--ro nsf-name? union | | | +--ro nsf-name? union | |||
| | +--ro severity? severity | | | +--ro severity? severity | |||
| | +--ro online-duration? uint32 | | | +--ro online-duration? uint32 | |||
| | +--ro logout-duration? uint32 | | | +--ro logout-duration? uint32 | |||
| | +--ro additional-info? enumeration | | | +--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? dpi-type | |||
| +--ro acquisition-method? identityref | | +--ro acquisition-method? identityref | |||
| +--ro emission-type? identityref | | +--ro emission-type? identityref | |||
| +--ro dampening-type? identityref | | +--ro dampening-type? identityref | |||
| +--ro policy-name | | +--ro policy-name | |||
-> /nsfintf:i2nsf-security-policy/name | -> /nsfintf:i2nsf-security-policy/name | |||
| +--ro src-user? string | | +--ro src-user? string | |||
| +--ro message? string | | +--ro message? string | |||
| +--ro vendor-name? string | | +--ro vendor-name? string | |||
| +--ro nsf-name? union | | +--ro nsf-name? union | |||
| +--ro severity? severity | | +--ro severity? severity | |||
+---n i2nsf-nsf-event | +---n i2nsf-nsf-event | |||
+--ro language? string | ||||
+--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? uint32 | |||
| +--ro attack-speed? uint64 | | +--ro attack-throughput? uint64 | |||
| +--ro action* log-action | | +--ro action* log-action | |||
| +--ro acquisition-method? identityref | | +--ro acquisition-method? identityref | |||
| +--ro emission-type? identityref | | +--ro emission-type? identityref | |||
| +--ro dampening-type? identityref | | +--ro dampening-type? identityref | |||
| +--ro message? string | | +--ro message? string | |||
| +--ro vendor-name? string | | +--ro vendor-name? string | |||
| +--ro nsf-name? union | | +--ro nsf-name? union | |||
| +--ro severity? severity | | +--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 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-ip? inet:ip-address-no-zone | |||
| +--ro src-port? inet:port-number | | +--ro src-port? inet:port-number | |||
| +--ro src-location? string | ||||
| +--ro dst-location? string | ||||
| +--ro virus-name? string | | +--ro virus-name? string | |||
| +--ro virus-type? identityref | | +--ro virus-type? identityref | |||
| +--ro host? union | | +--ro host? union | |||
| +--ro file-type? string | | +--ro file-type? string | |||
| +--ro file-name? string | | +--ro file-name? string | |||
| +--ro os? string | | +--ro os? string | |||
| +--ro action* log-action | | +--ro action* log-action | |||
| +--ro acquisition-method? identityref | | +--ro acquisition-method? identityref | |||
| +--ro emission-type? identityref | | +--ro emission-type? identityref | |||
| +--ro dampening-type? identityref | | +--ro dampening-type? identityref | |||
| +--ro message? string | | +--ro message? string | |||
| +--ro vendor-name? string | | +--ro vendor-name? string | |||
| +--ro nsf-name? union | | +--ro nsf-name? union | |||
| +--ro severity? severity | | +--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 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-ip? inet:ip-address-no-zone | |||
| +--ro src-port? inet:port-number | | +--ro src-port? inet:port-number | |||
| +--ro src-location? string | ||||
| +--ro dst-location? string | ||||
| +--ro protocol? identityref | | +--ro protocol? identityref | |||
| +--ro app? identityref | | +--ro app? identityref | |||
| +--ro attack-type? identityref | | +--ro attack-type? identityref | |||
| +--ro action* log-action | | +--ro action* log-action | |||
| +--ro attack-rate? uint32 | | +--ro attack-rate? uint32 | |||
| +--ro attack-speed? uint64 | | +--ro attack-throughput? uint64 | |||
| +--ro acquisition-method? identityref | | +--ro acquisition-method? identityref | |||
| +--ro emission-type? identityref | | +--ro emission-type? identityref | |||
| +--ro dampening-type? identityref | | +--ro dampening-type? identityref | |||
| +--ro message? string | | +--ro message? string | |||
| +--ro vendor-name? string | | +--ro vendor-name? string | |||
| +--ro nsf-name? union | | +--ro nsf-name? union | |||
| +--ro severity? severity | | +--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 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-ip? inet:ip-address-no-zone | |||
| +--ro src-port? inet:port-number | | +--ro src-port? inet:port-number | |||
| +--ro src-location? string | ||||
| +--ro dst-location? string | ||||
| +--ro attack-type? identityref | | +--ro attack-type? identityref | |||
| +--ro req-method? identityref | | +--ro req-method? identityref | |||
| +--ro req-target? string | | +--ro req-target? string | |||
| +--ro filtering-type* identityref | | +--ro filtering-type* identityref | |||
| +--ro req-user-agent? string | | +--ro req-user-agent? string | |||
| +--ro cookie? string | | +--ro cookie? string | |||
| +--ro req-host? string | | +--ro req-host? string | |||
| +--ro response-code? string | | +--ro response-code? string | |||
| +--ro acquisition-method? identityref | | +--ro acquisition-method? identityref | |||
| +--ro emission-type? identityref | | +--ro emission-type? identityref | |||
| +--ro dampening-type? identityref | | +--ro dampening-type? identityref | |||
| +--ro action* log-action | | +--ro action* log-action | |||
| +--ro message? string | | +--ro message? string | |||
| +--ro vendor-name? string | | +--ro vendor-name? string | |||
| +--ro nsf-name? union | | +--ro nsf-name? union | |||
| +--ro severity? severity | | +--ro severity? severity | |||
+--:(i2nsf-nsf-detection-voip-volte) | +--:(i2nsf-nsf-detection-voip-vocn) | |||
{i2nsf-nsf-detection-voip-volte}? | {i2nsf-nsf-detection-voip-vocn}? | |||
+--ro i2nsf-nsf-detection-voip-volte | +--ro i2nsf-nsf-detection-voip-vocn | |||
+--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-ip? inet:ip-address-no-zone | |||
+--ro src-port? inet:port-number | +--ro src-port? inet:port-number | |||
+--ro src-location? string | ||||
+--ro dst-location? string | ||||
+--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 message? string | |||
+--ro vendor-name? string | +--ro vendor-name? string | |||
+--ro nsf-name? union | +--ro nsf-name? union | |||
+--ro severity? severity | +--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] | and makes references to [RFC0768] [RFC0791] [RFC0792] [RFC0793] | |||
[RFC0792][RFC0793][RFC0854] [RFC1939][RFC0959][RFC4340] | [RFC0854] [RFC1939] [RFC0959] [RFC2595] [RFC4340] [RFC4443] [RFC5321] | |||
[RFC4443][RFC4960][RFC5321] [RFC5646] [RFC6242][RFC6265][RFC7230] | [RFC5646] [RFC6242] [RFC6265] [RFC8200] [RFC8641] [RFC9051] | |||
[RFC7231][RFC8200] [RFC8641][RFC9051] [I-D.ietf-tcpm-rfc793bis] | [I-D.ietf-httpbis-http2bis] [I-D.ietf-httpbis-messaging] | |||
[IANA-HTTP-Status-Code] [IANA-Media-Types]. | [I-D.ietf-httpbis-semantics] [I-D.ietf-tcpm-rfc793bis] | |||
[I-D.ietf-tsvwg-rfc4960-bis] [IANA-HTTP-Status-Code] | ||||
[IANA-Media-Types]. | ||||
<CODE BEGINS> file "ietf-i2nsf-nsf-monitoring@2022-01-28.yang" | <CODE BEGINS> file "ietf-i2nsf-nsf-monitoring@2022-02-15.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"; | |||
skipping to change at page 35, line 39 ¶ | skipping to change at page 36, line 39 ¶ | |||
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-01-28" { | revision "2022-02-15" { | |||
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 | |||
skipping to change at page 36, line 51 ¶ | skipping to change at page 37, line 49 ¶ | |||
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 log-action { | typedef log-action { | |||
type enumeration { | type enumeration { | |||
enum allow { | enum allow { | |||
description | description | |||
"If action is allowed"; | "If action is allow"; | |||
} | } | |||
enum alert { | enum alert { | |||
description | description | |||
"If action is alert"; | "If action is alert"; | |||
} | } | |||
enum block { | enum block { | |||
description | description | |||
"If action is block"; | "If action is block"; | |||
} | } | |||
enum discard { | enum discard { | |||
description | description | |||
"If action is discarded"; | "If action is discard"; | |||
} | } | |||
enum declare { | enum declare { | |||
description | description | |||
"If action is declared"; | "If action is declare"; | |||
} | } | |||
enum block-ip { | enum block-ip { | |||
description | description | |||
"If action is block-ip"; | "If action is block-ip"; | |||
} | } | |||
enum block-service{ | enum block-service{ | |||
description | description | |||
"If action is block-service"; | "If action is block-service"; | |||
} | } | |||
} | } | |||
description | description | |||
"The type representing action for logging."; | "The type representing action for | |||
logging."; | ||||
} | } | |||
typedef dpi-type{ | typedef dpi-type{ | |||
type enumeration { | type enumeration { | |||
enum file-blocking{ | enum file-blocking{ | |||
description | description | |||
"DPI for preventing the specified file types from flowing | "DPI for preventing the specified file types from flowing | |||
in the network."; | in the network."; | |||
} | } | |||
enum data-filtering{ | enum data-filtering{ | |||
skipping to change at page 46, line 13 ¶ | skipping to change at page 47, line 13 ¶ | |||
identity dns-reply-flood { | identity dns-reply-flood { | |||
base ddos-type; | base ddos-type; | |||
description | description | |||
"A Domain Name System (DNS) reply flood is detected."; | "A Domain Name System (DNS) reply flood is detected."; | |||
} | } | |||
identity sip-flood { | identity sip-flood { | |||
base ddos-type; | base ddos-type; | |||
description | description | |||
"A Session Initiation Protocol (SIP) flood is detected."; | "A Session Initiation Protocol (SIP) flood is detected."; | |||
} | } | |||
identity ssl-flood { | identity tls-flood { | |||
base ddos-type; | base ddos-type; | |||
description | description | |||
"An Secure Sockets Layer (SSL) flood is detected"; | "A Transport Layer Security (TLS) flood is detected"; | |||
} | } | |||
identity ntp-amp-flood { | identity ntp-amp-flood { | |||
base ddos-type; | base ddos-type; | |||
description | description | |||
"A Network Time Protocol (NTP) amplification is detected"; | "A Network Time Protocol (NTP) amplification is detected"; | |||
} | } | |||
identity req-method { | identity req-method { | |||
description | description | |||
"A set of request types in HTTP (if applicable)."; | "A set of request types in HTTP (if applicable)."; | |||
} | } | |||
identity put { | identity put { | |||
base req-method; | base req-method; | |||
description | description | |||
"The detected request type is PUT."; | "The detected request type is PUT."; | |||
reference | reference | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
and Content - Request Method PUT"; | - Request Method PUT"; | |||
} | } | |||
identity post { | identity post { | |||
base req-method; | base req-method; | |||
description | description | |||
"The detected request type is POST."; | "The detected request type is POST."; | |||
reference | reference | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
and Content - Request Method POST"; | - Request Method POST"; | |||
} | } | |||
identity get { | identity get { | |||
base req-method; | base req-method; | |||
description | description | |||
"The detected request type is GET."; | "The detected request type is GET."; | |||
reference | reference | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
and Content - Request Method GET"; | - Request Method GET"; | |||
} | } | |||
identity head { | identity head { | |||
base req-method; | base req-method; | |||
description | description | |||
"The detected request type is HEAD."; | "The detected request type is HEAD."; | |||
reference | reference | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
and Content - Request Method HEAD"; | - Request Method HEAD"; | |||
} | } | |||
identity delete { | identity delete { | |||
base req-method; | base req-method; | |||
description | description | |||
"The detected request type is DELETE."; | "The detected request type is DELETE."; | |||
reference | reference | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
and Content - Request Method DELETE"; | - Request Method DELETE"; | |||
} | } | |||
identity connect { | identity connect { | |||
base req-method; | base req-method; | |||
description | description | |||
"The detected request type is CONNECT."; | "The detected request type is CONNECT."; | |||
reference | reference | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
and Content - Request Method CONNECT"; | - Request Method CONNECT"; | |||
} | } | |||
identity options { | identity options { | |||
base req-method; | base req-method; | |||
description | description | |||
"The detected request type is OPTIONS."; | "The detected request type is OPTIONS."; | |||
reference | reference | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
and Content - Request Method OPTIONS"; | - Request Method OPTIONS"; | |||
} | } | |||
identity trace { | identity trace { | |||
base req-method; | base req-method; | |||
description | description | |||
"The detected request type is TRACE."; | "The detected request type is TRACE."; | |||
reference | reference | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
and Content - Request Method TRACE"; | - Request Method TRACE"; | |||
} | } | |||
identity filter-type { | identity filter-type { | |||
description | description | |||
"The type of filter used to detect an attack, | "The type of filter used to detect an attack, | |||
for example, a web-attack. It can be applicable to | for example, a web-attack. It can be applicable to | |||
more than web-attacks."; | more than web-attacks."; | |||
} | } | |||
identity allow-list { | identity allow-list { | |||
base filter-type; | base filter-type; | |||
skipping to change at page 50, line 8 ¶ | skipping to change at page 51, line 8 ¶ | |||
description | description | |||
"UDP protocol type."; | "UDP protocol type."; | |||
reference | reference | |||
"RFC 768: User Datagram Protocol"; | "RFC 768: User Datagram Protocol"; | |||
} | } | |||
identity sctp { | identity sctp { | |||
base transport-protocol; | base transport-protocol; | |||
description | description | |||
"Identity for SCTP condition capabilities"; | "Identity for SCTP condition capabilities"; | |||
reference | reference | |||
"RFC 4960: Stream Control Transmission Protocol"; | "draft-ietf-tsvwg-rfc4960-bis-18: Stream Control Transmission | |||
Protocol"; | ||||
} | } | |||
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, e.g., HTTP, FTP"; | "Base identity for Application protocol. Note that popular | |||
application protocols (e.g., HTTP, HTTPS, FTP, POP3, and | ||||
IMAP) are handled in this YANG module, rather than all | ||||
the existing application protocols."; | ||||
} | } | |||
identity http { | identity http { | |||
base application-protocol; | base application-protocol; | |||
description | description | |||
"HTTP protocol type."; | "The identity for Hypertext Transfer Protocol version 1.X | |||
(HTTP/1.X)."; | ||||
reference | reference | |||
"RFC7230: Hypertext Transfer Protocol (HTTP/1.1): Message | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
Syntax and Routing | draft-ietf-httpbis-messaging-19: HTTP/1.1"; | |||
RFC7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | ||||
and Content"; | ||||
} | } | |||
identity https { | identity https { | |||
base application-protocol; | base application-protocol; | |||
description | description | |||
"HTTPS protocol type."; | "The identity for Hypertext Transfer Protocol version 1.X | |||
(HTTP/1.X) over TLS."; | ||||
reference | reference | |||
"RFC7230: Hypertext Transfer Protocol (HTTP/1.1): Message | "draft-ietf-httpbis-semantics-19: HTTP Semantics | |||
Syntax and Routing | draft-ietf-httpbis-messaging-19: HTTP/1.1"; | |||
RFC7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics | } | |||
and Content"; | identity http2 { | |||
base application-protocol; | ||||
description | ||||
"The identity for Hypertext Transfer Protocol version 2 | ||||
(HTTP/2)."; | ||||
reference | ||||
"draft-ietf-httpbis-http2bis-07: HTTP/2"; | ||||
} | ||||
identity https2 { | ||||
base application-protocol; | ||||
description | ||||
"The identity for Hypertext Transfer Protocol version 2 | ||||
(HTTP/2) over TLS."; | ||||
reference | ||||
"draft-ietf-httpbis-http2bis-07: HTTP/2"; | ||||
} | } | |||
identity ftp { | identity ftp { | |||
base application-protocol; | base application-protocol; | |||
description | description | |||
"FTP protocol type."; | "FTP protocol type."; | |||
reference | reference | |||
"RFC 959: File Transfer Protocol"; | "RFC 959: File Transfer Protocol"; | |||
} | } | |||
identity ssh { | identity ssh { | |||
base application-protocol; | base application-protocol; | |||
skipping to change at page 51, line 25 ¶ | skipping to change at page 52, line 43 ¶ | |||
identity smtp { | identity smtp { | |||
base application-protocol; | base application-protocol; | |||
description | description | |||
"The identity for smtp."; | "The identity for smtp."; | |||
reference | reference | |||
"RFC 5321: Simple Mail Transfer Protocol (SMTP)"; | "RFC 5321: Simple Mail Transfer Protocol (SMTP)"; | |||
} | } | |||
identity pop3 { | identity pop3 { | |||
base application-protocol; | base application-protocol; | |||
description | description | |||
"The identity for pop3. This includes POP3 over TLS"; | "The identity for Post Office Protocol 3 (POP3)."; | |||
reference | reference | |||
"RFC 1939: Post Office Protocol - Version 3 (POP3)"; | "RFC 1939: Post Office Protocol - Version 3 (POP3)"; | |||
} | } | |||
identity pop3s { | ||||
base application-protocol; | ||||
description | ||||
"The identity for Post Office Protocol 3 (POP3) over TLS"; | ||||
reference | ||||
"RFC 1939: Post Office Protocol - Version 3 (POP3) | ||||
RFC 2595: Using TLS with IMAP, POP3 and ACAP"; | ||||
} | ||||
identity imap { | identity imap { | |||
base application-protocol; | base application-protocol; | |||
description | description | |||
"The identity for Internet Message Access Protocol. This | "The identity for Internet Message Access Protocol (IMAP)."; | |||
includes IMAP over TLS"; | ||||
reference | reference | |||
"RFC 9051: Internet Message Access Protocol (IMAP) - Version | "RFC 9051: Internet Message Access Protocol (IMAP) - Version | |||
4rev2"; | 4rev2"; | |||
} | } | |||
identity imaps { | ||||
base application-protocol; | ||||
description | ||||
"The identity for Internet Message Access Protocol (IMAP) over | ||||
TLS"; | ||||
reference | ||||
"RFC 9051: Internet Message Access Protocol (IMAP) - Version | ||||
4rev2 | ||||
RFC 2595: Using TLS with IMAP, POP3 and ACAP"; | ||||
} | ||||
/* | /* | |||
* Grouping | * Grouping | |||
*/ | */ | |||
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; | |||
skipping to change at page 52, line 27 ¶ | skipping to change at page 54, line 15 ¶ | |||
"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 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; | |||
} | } | |||
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 IP address, the name can be an | If the given nsf-name is not an IP address, the name can be | |||
arbitrary string including 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 { | leaf severity { | |||
type severity; | type severity; | |||
description | description | |||
"The severity of the alarm such as critical, high, | "The severity of the alarm such as critical, high, | |||
middle, and low."; | middle, and low."; | |||
} | } | |||
skipping to change at page 54, line 14 ¶ | skipping to change at page 55, line 51 ¶ | |||
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 port-number { | leaf l4-port-number { | |||
type inet:port-number; | type inet:port-number; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The 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 { | |||
skipping to change at page 55, line 21 ¶ | skipping to change at page 57, line 8 ¶ | |||
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"; | |||
} | } | |||
leaf src-location { | ||||
type string { | ||||
length "1..100"; | ||||
pattern "[0-9a-zA-Z ]*"; | ||||
} | ||||
description | ||||
"The source geographical location (e.g., country and city) | ||||
of the src-ip field."; | ||||
} | ||||
leaf dst-location { | ||||
type string { | ||||
length "1..100"; | ||||
pattern "[0-9a-zA-Z ]*"; | ||||
} | ||||
description | ||||
"The destination geographical location (e.g., country and | ||||
city) of the dst-ip field."; | ||||
} | ||||
} | } | |||
grouping log-action { | grouping log-action { | |||
description | description | |||
"A grouping for logging action."; | "A grouping for logging action."; | |||
leaf-list action { | leaf-list action { | |||
type log-action; | type log-action; | |||
description | description | |||
"Action type: allow, alert, block, discard, declare, | "Action type: allow, alert, block, discard, declare, | |||
block-ip, block-service"; | block-ip, block-service"; | |||
} | } | |||
skipping to change at page 56, line 12 ¶ | skipping to change at page 57, line 30 ¶ | |||
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 uint32; | |||
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-speed { | leaf attack-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"The average bytes per second (Bps) speed of attack traffic"; | "The average bytes per second (Bps) throughput of attack | |||
traffic"; | ||||
} | } | |||
} | } | |||
grouping traffic-rates { | grouping traffic-rates { | |||
description | description | |||
"A set of traffic rates for statistics data"; | "A set of traffic rates for statistics 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 | |||
skipping to change at page 57, line 6 ¶ | skipping to change at page 58, line 25 ¶ | |||
"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 uint32; | |||
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-speed { | leaf in-traffic-average-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"Inbound traffic average speed in bytes per second (Bps). | "Inbound traffic average throughput in bytes per second | |||
The average is calculated from the start of the NSF service | (Bps). The average is calculated from the start of the NSF | |||
until the generation of this record."; | service until the generation of this record."; | |||
} | } | |||
leaf in-traffic-peak-speed { | leaf in-traffic-peak-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"Inbound traffic peak speed 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 uint32; | |||
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 { | |||
skipping to change at page 57, line 33 ¶ | skipping to change at page 59, line 4 ¶ | |||
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 uint32; | |||
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-speed { | leaf out-traffic-average-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"Outbound traffic average speed in bytes per second (Bps). | "Outbound traffic average throughput in bytes per second | |||
The average is calculated from the start of the NSF service | (Bps). The average is calculated from the start of the NSF | |||
until the generation of this record."; | service until the generation of this record."; | |||
} | } | |||
leaf out-traffic-peak-speed { | leaf out-traffic-peak-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"Outbound traffic peak speed in bytes per second (Bps)."; | "Outbound traffic peak throughput in bytes per second | |||
(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 { | ||||
type identityref { | ||||
base protocol; | ||||
} | ||||
description | ||||
"The type of network protocol for the interface counter. | ||||
If this field is empty, then the counter includes all | ||||
protocols (e.g., IPv4, IPv6, TCP, and UDP)"; | ||||
} | ||||
leaf in-total-traffic-pkts { | leaf in-total-traffic-pkts { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Total inbound packets"; | "Total inbound packets"; | |||
} | } | |||
leaf out-total-traffic-pkts { | leaf out-total-traffic-pkts { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Total outbound packets"; | "Total outbound packets"; | |||
} | } | |||
skipping to change at page 60, line 23 ¶ | skipping to change at page 62, line 4 ¶ | |||
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 60, line 49 ¶ | skipping to change at page 63, line 17 ¶ | |||
feature i2nsf-nsf-detection-intrusion { | feature i2nsf-nsf-detection-intrusion { | |||
description | description | |||
"This feature means it supports I2NSF nsf-detection-intrusion | "This feature means it supports I2NSF nsf-detection-intrusion | |||
notification"; | notification"; | |||
} | } | |||
feature i2nsf-nsf-detection-web-attack { | feature i2nsf-nsf-detection-web-attack { | |||
description | description | |||
"This feature means it supports I2NSF nsf-detection-web-attack | "This feature means it supports I2NSF nsf-detection-web-attack | |||
notification"; | notification"; | |||
} | } | |||
feature i2nsf-nsf-detection-voip-volte { | feature i2nsf-nsf-detection-voip-vocn { | |||
description | description | |||
"This feature means it supports I2NSF nsf-detection-voip-volte | "This feature means it supports I2NSF nsf-detection-voip-vocn | |||
notification"; | notification"; | |||
} | } | |||
feature i2nsf-nsf-log-dpi { | feature i2nsf-nsf-log-dpi { | |||
description | description | |||
"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."; | |||
leaf language { | uses 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 not mandatory, but required | ||||
when the implementation provides more than one human | ||||
language for the human-readable string fields, | ||||
e.g., /i2nsf-nsf-event/i2nsf-nsf-detection-ddos/message. | ||||
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"; | ||||
} | ||||
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 62, line 41 ¶ | skipping to change at page 64, line 28 ¶ | |||
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 { | |||
type enumeration { | type enumeration { | |||
enum down { | enum up { | |||
value 1; | ||||
description | description | |||
"The interface state is down."; | "The interface state is up and not congested. | |||
The interface is ready to pass packets."; | ||||
} | } | |||
enum up { | enum down { | |||
value 2; | ||||
description | description | |||
"The interface state is up and not congested."; | "The interface state is down, i.e., does not pass | |||
any packets."; | ||||
} | } | |||
enum congested { | enum congested { | |||
value 3; | ||||
description | description | |||
"The interface state is up but congested."; | "The interface state is up but congested."; | |||
} | ||||
enum testing { | ||||
value 4; | ||||
description | ||||
"In some test mode. No operational packets can | ||||
be passed."; | ||||
} | ||||
enum unknown { | ||||
value 5; | ||||
description | ||||
"Status cannot be determined for some reason."; | ||||
} | ||||
enum dormant { | ||||
value 6; | ||||
description | ||||
"Waiting for some external event."; | ||||
} | ||||
enum not-present { | ||||
value 7; | ||||
description | ||||
"Some component (typically hardware) is missing."; | ||||
} | ||||
enum lower-layer-down { | ||||
value 8; | ||||
description | ||||
"Down due to state of lower-layer interface(s)."; | ||||
} | } | |||
} | } | |||
description | description | |||
"The state of the interface (i.e., up, down, | "The state of the interface. Applicable for Network | |||
congested). Applicable for Network Interface Failure | Interface Failure Alarm."; | |||
Alarm."; | reference | |||
"RFC 8343: A YANG Data Model for Interface Management - | ||||
Operational States"; | ||||
} | } | |||
uses characteristics; | uses characteristics; | |||
uses i2nsf-system-alarm-type-content; | uses i2nsf-system-alarm-type-content; | |||
uses common-monitoring-data; | 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 | |||
skipping to change at page 64, line 15 ¶ | skipping to change at page 66, line 32 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
case i2nsf-traffic-flows { | case i2nsf-traffic-flows { | |||
container i2nsf-traffic-flows { | container i2nsf-traffic-flows { | |||
description | description | |||
"This notification is sent to inform about the traffic | "This notification is sent to inform about the traffic | |||
flows."; | flows."; | |||
leaf interface-name { | ||||
type if:interface-ref; | ||||
description | ||||
"The mnemonic name of the network interface"; | ||||
} | ||||
leaf interface-type { | ||||
type enumeration { | ||||
enum ingress { | ||||
description | ||||
"The corresponding interface-name indicates an | ||||
ingress interface."; | ||||
} | ||||
enum egress { | ||||
description | ||||
"The corresponding interface-name indicates an | ||||
egress interface."; | ||||
} | ||||
} | ||||
description | ||||
"The type of a network interface such as an ingress or | ||||
egress interface."; | ||||
} | ||||
leaf src-mac { | ||||
type yang:mac-address; | ||||
description | ||||
"The source MAC address of the traffic flow."; | ||||
} | ||||
leaf dst-mac { | ||||
type yang:mac-address; | ||||
description | ||||
"The destination MAC address of the traffic flow."; | ||||
} | ||||
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 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 flow"; | |||
} | } | |||
skipping to change at page 64, line 36 ¶ | skipping to change at page 67, line 37 ¶ | |||
type identityref { | type identityref { | |||
base protocol; | base protocol; | |||
} | } | |||
description | description | |||
"The protocol type for nsf-detection-intrusion | "The protocol type for nsf-detection-intrusion | |||
notification"; | notification"; | |||
} | } | |||
leaf src-port { | leaf src-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The source port 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 destination port of the flow"; | "The transport layer destination port number of the | |||
flow"; | ||||
} | } | |||
leaf arrival-rate { | leaf arrival-rate { | |||
type uint32; | type uint32; | |||
units "pps"; | units "pps"; | |||
description | description | |||
"The average arrival rate of the flow in packets per | "The average arrival rate of the flow in packets per | |||
second. The average is calculated from the start of | second. The average is calculated from the start of | |||
the NSF service until the generation of this | the NSF service until the generation of this | |||
record."; | record."; | |||
} | } | |||
leaf arrival-speed { | leaf arrival-throughput { | |||
type uint32; | type uint32; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"The average arrival rate of the flow in bytes per | "The average arrival rate of the flow in bytes per | |||
second. The average is calculated from the start of | second. The average is calculated from the start of | |||
the NSF service until the generation of this | the NSF service until the generation of this | |||
record."; | record."; | |||
} | } | |||
uses characteristics; | uses characteristics; | |||
uses common-monitoring-data; | uses common-monitoring-data; | |||
skipping to change at page 65, line 50 ¶ | skipping to change at page 69, line 5 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
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."; | |||
leaf language { | uses 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 not mandatory, but required | ||||
when the implementation provides more than one human | ||||
language for the human-readable string fields, | ||||
e.g., /i2nsf-nsf-log/i2nsf-system-res-util-log/message. | ||||
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"; | ||||
} | ||||
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 68, line 29 ¶ | skipping to change at page 70, line 48 ¶ | |||
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 | |||
"Specifies the percentage of disk usage"; | "Specifies the percentage of disk usage"; | |||
} | } | |||
leaf disk-left { | leaf disk-space-left { | |||
type uint8; | type uint8; | |||
units "percent"; | units "percent"; | |||
description | description | |||
"Specifies the percentage of disk left"; | "Specifies the percentage of disk space left"; | |||
} | } | |||
} | } | |||
leaf session-num { | leaf session-num { | |||
type uint32; | type uint32; | |||
description | description | |||
"The total number of sessions"; | "The total number of sessions"; | |||
} | } | |||
leaf process-num { | leaf process-num { | |||
type uint32; | type uint32; | |||
description | description | |||
skipping to change at page 69, line 22 ¶ | skipping to change at page 71, line 42 ¶ | |||
"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 uint32; | |||
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-speed { | leaf in-traffic-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"The total inbound traffic speed in bytes per | "The total inbound traffic throughput in bytes per | |||
second"; | second"; | |||
} | } | |||
leaf out-traffic-speed { | leaf out-traffic-throughput { | |||
type uint64; | type uint64; | |||
units "Bps"; | units "Bps"; | |||
description | description | |||
"The total outbound traffic speed in bytes per | "The total outbound traffic throughput in bytes per | |||
second"; | second"; | |||
} | } | |||
} | } | |||
uses characteristics; | uses characteristics; | |||
uses common-monitoring-data; | 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 { | |||
skipping to change at page 71, line 33 ¶ | skipping to change at page 74, line 5 ¶ | |||
uses common-monitoring-data; | 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 is | |||
used for a specific NSF that supported such feature."; | used for a specific NSF that supported such feature."; | |||
uses language; | ||||
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 { | |||
description | description | |||
skipping to change at page 72, line 38 ¶ | skipping to change at page 75, line 13 ¶ | |||
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 source ports of the DDoS attack"; | "The transport layer source ports of the DDoS attack"; | |||
} | } | |||
leaf-list attack-dst-port { | leaf-list attack-dst-port { | |||
type inet:port-number; | type inet:port-number; | |||
description | description | |||
"The destination ports of the DDoS attack"; | "The transport layer destination ports of the DDoS | |||
attack"; | ||||
} | } | |||
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"; | |||
skipping to change at page 73, line 40 ¶ | skipping to change at page 76, line 17 ¶ | |||
"The virus type of the detected virus"; | "The virus type of the detected virus"; | |||
} | } | |||
leaf host { | leaf host { | |||
type union { | type union { | |||
type string; | type string; | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
} | } | |||
description | description | |||
"The name or IP address of the host/device. This is | "The name or IP address of the host/device. This is | |||
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 IP address, the | the virus. If the given name is not an IP address, the | |||
name can be an arbitrary string including 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 file virus code is found in (if | |||
applicable)."; | applicable)."; | |||
reference | reference | |||
skipping to change at page 75, line 31 ¶ | skipping to change at page 78, line 7 ¶ | |||
"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 | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): | "draft-ietf-httpbis-semantics-19: HTTP Semantics - Request | |||
Semantics and Content - Request Methods"; | 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 | |||
"RFC 7230: Hypertext Transfer Protocol (HTTP/1.1): | "draft-ietf-httpbis-messaging-19: HTTP/1.1 - Request | |||
Message Syntax and Routing - 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 req-user-agent { | |||
type string; | type string; | |||
description | description | |||
"The HTTP User-Agent header field of the request"; | "The HTTP User-Agent header field of the request"; | |||
reference | reference | |||
"RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): | "draft-ietf-httpbis-semantics-19: HTTP Semantics - User | |||
Semantics and Content - User Agent"; | Agent"; | |||
} | } | |||
leaf cookie { | leaf cookie { | |||
type string; | type string; | |||
description | description | |||
"The HTTP Cookie header field of the request from | "The HTTP Cookie header field of the request from | |||
the user agent."; | the user agent."; | |||
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 | |||
"RFC 7230: Hypertext Transfer Protocol (HTTP/1.1): | "draft-ietf-httpbis-semantics-19: HTTP Semantics - Host"; | |||
Message Syntax and Routing - 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 characteristics; | |||
uses log-action; | uses log-action; | |||
uses common-monitoring-data; | uses common-monitoring-data; | |||
} | } | |||
} | } | |||
case i2nsf-nsf-detection-voip-volte{ | case i2nsf-nsf-detection-voip-vocn { | |||
if-feature "i2nsf-nsf-detection-voip-volte"; | if-feature "i2nsf-nsf-detection-voip-vocn"; | |||
container i2nsf-nsf-detection-voip-volte { | container i2nsf-nsf-detection-voip-vocn { | |||
description | description | |||
"This notification is sent, when a VoIP/VoLTE 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 { | |||
type string; | type string; | |||
description | description | |||
"The detected source voice ID for VoIP and VoLTE that | "The detected source voice ID for VoIP and VoCN that | |||
violates the security policy."; | violates the security policy."; | |||
} | } | |||
leaf-list destination-voice-id { | leaf-list destination-voice-id { | |||
type string; | type string; | |||
description | description | |||
"The detected destination voice ID for VoIP and VoLTE | "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 VoLTE that | "The detected user-agent for VoIP and VoCN that | |||
violates the security policy."; | violates the security policy."; | |||
} | } | |||
uses common-monitoring-data; | 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."; | |||
leaf language { | uses 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 not mandatory, but required | ||||
when the implementation provides more than one human | ||||
language for the human-readable string fields, | ||||
e.g., /i2nsf-counters/system-interface/message. | ||||
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"; | ||||
} | ||||
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 characteristics; | |||
uses i2nsf-system-counter-type-content; | uses i2nsf-system-counter-type-content; | |||
uses common-monitoring-data; | uses common-monitoring-data; | |||
uses timestamp; | uses timestamp; | |||
skipping to change at page 78, line 43 ¶ | skipping to change at page 80, line 36 ¶ | |||
and bandwidth policies have been applied."; | and bandwidth policies have been applied."; | |||
uses characteristics; | uses characteristics; | |||
uses i2nsf-nsf-counters-type-content; | uses i2nsf-nsf-counters-type-content; | |||
uses traffic-rates; | uses traffic-rates; | |||
uses common-monitoring-data; | uses common-monitoring-data; | |||
uses timestamp; | 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 characteristics; | |||
uses i2nsf-nsf-counters-type-content; | uses i2nsf-nsf-counters-type-content; | |||
uses common-monitoring-data; | 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 | |||
skipping to change at page 82, line 31 ¶ | skipping to change at page 84, line 24 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 2: Data Model of Monitoring | Figure 2: Data Model of Monitoring | |||
9. I2NSF Event Stream | 9. I2NSF Event Stream | |||
This section discusses the NETCONF event stream for I2NSF NSF | This section discusses the NETCONF event stream for an I2NSF NSF | |||
Monitoring subscription. The YANG module in this document supports | Monitoring subscription. The YANG module in this document supports | |||
"ietf-subscribed-notifications" YANG module [RFC8639] for | "ietf-subscribed-notifications" YANG module [RFC8639] for | |||
subscription. The reserved event stream name for this document is | subscription. The reserved event stream name for this document is | |||
"I2NSF-Monitoring". The NETCONF Server (e.g., an NSF) MUST support | "I2NSF-Monitoring". The NETCONF Server (e.g., an NSF) MUST support | |||
"I2NSF-Monitoring" event stream for an NSF data collector (e.g., | "I2NSF-Monitoring" event stream for an NSF data collector (e.g., | |||
Security Controller). The "I2NSF-Monitoring" event stream contains | Security Controller). The "I2NSF-Monitoring" event stream contains | |||
all I2NSF events described in this document. | all I2NSF events described in this document. | |||
The following XML example shows the capabilities of the event streams | The following XML example shows the capabilities of the event streams | |||
generated by an NSF (e.g., "NETCONF" and "I2NSF-Monitoring" event | generated by an NSF (e.g., "NETCONF" and "I2NSF-Monitoring" event | |||
skipping to change at page 83, line 47 ¶ | skipping to change at page 85, line 47 ¶ | |||
the colon or 'nsfmi' in the example) in the content of the element | the colon or 'nsfmi' in the example) in the content of the element | |||
that uses the "identityref" type (e.g., /i2nsf-event/i2nsf-system- | that uses the "identityref" type (e.g., /i2nsf-event/i2nsf-system- | |||
detection-alarm/alarm-category/) in the YANG module described in this | detection-alarm/alarm-category/) in the YANG module described in this | |||
document MUST be the same as the namespace prefix (i.e., 'nsfmi' in | 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- | the example) for urn:ietf:params:xml:ns:yang:ietf-i2nsf-nsf- | |||
monitoring. Therefore, XML software MUST be chosen that makes the | monitoring. Therefore, XML software MUST be chosen that makes the | |||
namespace prefix information available. | 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 of the | The following example shows an alarm triggered by Memory Usage on the | |||
server; note that this example XML file is delivered by an NSF to an | server; this example XML file is delivered by an NSF to an NSF data | |||
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"> | |||
<i2nsf-system-detection-alarm> | <i2nsf-system-detection-alarm> | |||
<alarm-category | <alarm-category | |||
xmlns:nsfmi="urn:ietf:params:xml:ns:yang:\ | xmlns:nsfmi="urn:ietf:params:xml:ns:yang:\ | |||
skipping to change at page 87, line 35 ¶ | skipping to change at page 89, line 35 ¶ | |||
12. Security Considerations | 12. Security Considerations | |||
The YANG module described in this document defines a schema for data | The YANG module described in this document defines a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the required secure transport is | is the secure transport layer, and the required secure transport is | |||
Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, | Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, | |||
and the required secure transport is TLS [RFC8446]. | and the required secure transport is TLS [RFC8446]. | |||
The NETCONF access control model [RFC8341] provides a means of | The NETCONF access control model [RFC8341] provides a means of | |||
restricting access to specific NETCONF or RESTCONF users to a | restricting access by specific NETCONF or RESTCONF users to a | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | preconfigured subset of all available NETCONF or RESTCONF protocol | |||
operations and content. | operations and content. | |||
All data nodes defined in the YANG module which can be created, | All data nodes defined in the YANG module which can be created, | |||
modified and deleted (i.e., config true, which is the default) are | modified and deleted (i.e., config true, which is the default) are | |||
considered sensitive as they all could potentially impact security | considered sensitive as they all could potentially impact security | |||
monitoring and mitigation activities. Write operations (e.g., edit- | monitoring and mitigation activities. Write operations (e.g., edit- | |||
config) applied to these data nodes without proper protection could | config) applied to these data nodes without proper protection could | |||
result in missed alarms or incorrect alarms information being | result in missed alarms or incorrect alarms information being | |||
returned to the NSF data collector. There are threats that need to | returned to the NSF data collector. The following are threats that | |||
be considered and mitigated: | need to be considered and mitigated: | |||
Compromised NSF with valid credentials: It can send falsified | Compromised NSF with valid credentials: It can send falsified | |||
information to the NSF data collector to mislead detection or | information to the NSF data collector to mislead detection or | |||
mitigation activities; and/or to hide activity. Currently, there | mitigation activities; and/or to hide activity. Currently, there | |||
is no in-framework mechanism to mitigate this and an issue for all | is no in-framework mechanism to mitigate this and it is an issue | |||
monitoring infrastructures. It is important to keep the enclosure | for all monitoring infrastructures. It is important to keep | |||
of confidential information to unauthorized persons to mitigate | confidential information from unauthorized persons to mitigate the | |||
the possibility of compromising the NSF with this information. | possibility of compromising the NSF with this information. | |||
Compromised NSF data collector with valid credentials: It has | Compromised NSF data collector with valid credentials: It has | |||
visibility to all collected security alarms; entire detection and | visibility to all collected security alarms; the entire detection | |||
mitigation infrastructure may be suspect. It is important to keep | and mitigation infrastructure may be suspect. It is important to | |||
the enclosure of confidential information to unauthorized persons | keep confidential information from unauthorized persons to | |||
to mitigate the possibility of compromising the NSF with this | mitigate the possibility of compromising the NSF with this | |||
information. | information. | |||
Impersonating NSF: It is a system trying to send false information | Impersonating NSF: This involves a system trying to send false | |||
while imitating an NSF; client authentication would help the NSF | information while imitating an NSF; client authentication would | |||
data collector to identify this invalid NSF in the "push" model | help the NSF data collector to identify this invalid NSF in the | |||
(NSF-to-collector), while the "pull" model (collector-to-NSF) | "push" model (NSF-to-collector), while the "pull" model | |||
should already be addressed with the authentication. | (collector-to-NSF) should already be addressed with the | |||
authentication. | ||||
Impersonating NSF data collector: It is a rogue NSF data collector | Impersonating NSF data collector: This is a rogue NSF data collector | |||
with which a legitimate NSF is tricked into communicating; for | with which a legitimate NSF is tricked into communicating; for | |||
"push" model (NSF-to-collector), it is important to have valid | "push" model (NSF-to-collector), it is important to have valid | |||
credentials, without it it should not work; for "pull" model | credentials, without which it should not work; for "pull" model | |||
(collector-to-NSF), mutual authentication should be used to | (collector-to-NSF), mutual authentication should be used to | |||
mitigate the threat. | mitigate the threat. | |||
In addition, to defend against the DDoS attack caused by a lot of | In addition, to defend against the DDoS attack caused by a lot of | |||
NSFs sending massive notifications to the NSF data collector, the | NSFs sending massive notifications to the NSF data collector, the | |||
rate limiting or similar mechanisms should be considered in both an | rate limiting or similar mechanisms should be considered in both an | |||
NSF and NSF data collector, whether in advance or just in the process | NSF and NSF data collector, whether in advance or just in the process | |||
of DDoS attack. | of DDoS attack. | |||
All of the readable data nodes in this YANG module may be considered | All of the readable data nodes in this YANG module may be considered | |||
skipping to change at page 89, line 7 ¶ | skipping to change at page 91, line 7 ¶ | |||
information consistent with the logging commonly performed in network | information consistent with the logging commonly performed in network | |||
and security operations. They may reveal the specific configuration | and security operations. They may reveal the specific configuration | |||
of a network; vulnerabilities in specific systems; and the deployed | of a network; vulnerabilities in specific systems; and the deployed | |||
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-volte" are privacy sensitive. | event", and "i2nsf-nsf-detection-voip-vocn" are privacy sensitive. | |||
They may describe specific or aggregate user activity to include | 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. | |||
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. We authors sincerely appreciate their sincere efforts | and Tom Petch. The authors sincerely appreciate their sincere | |||
and kind help. | efforts and kind help. | |||
This work was supported by Institute of Information & Communications | This work was supported by Institute of Information & Communications | |||
Technology Planning & Evaluation (IITP) grant funded by the Korea | Technology Planning & Evaluation (IITP) grant funded by the Korea | |||
MSIT (Ministry of Science and ICT) (R-20160222-002755, Cloud based | MSIT (Ministry of Science and ICT) (R-20160222-002755, Cloud based | |||
Security Intelligence Technology Development for the Customized | Security Intelligence Technology Development for the Customized | |||
Security Service Provisioning). This work was supported in part by | Security Service Provisioning). This work was supported in part by | |||
the IITP (2020-0-00395, Standard Development of Blockchain based | the IITP (2020-0-00395, Standard Development of Blockchain based | |||
Network Management Automation Technology). This work was supported | Network Management Automation Technology). This work was supported | |||
in part by the MSIT under the Information Technology Research Center | in part by the MSIT under the Information Technology Research Center | |||
(ITRC) support program (IITP-2021-2017-0-01633) supervised by the | (ITRC) support program (IITP-2021-2017-0-01633) supervised by the | |||
skipping to change at page 90, line 46 ¶ | skipping to change at page 92, line 46 ¶ | |||
[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, | |||
<https://www.rfc-editor.org/info/rfc1939>. | <https://www.rfc-editor.org/info/rfc1939>. | |||
[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", | ||||
RFC 2595, DOI 10.17487/RFC2595, June 1999, | ||||
<https://www.rfc-editor.org/info/rfc2595>. | ||||
[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, | |||
DOI 10.17487/RFC4340, March 2006, | DOI 10.17487/RFC4340, March 2006, | |||
<https://www.rfc-editor.org/info/rfc4340>. | <https://www.rfc-editor.org/info/rfc4340>. | |||
[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | |||
Control Message Protocol (ICMPv6) for the Internet | Control Message Protocol (ICMPv6) for the Internet | |||
Protocol Version 6 (IPv6) Specification", STD 89, | Protocol Version 6 (IPv6) Specification", STD 89, | |||
RFC 4443, DOI 10.17487/RFC4443, March 2006, | RFC 4443, DOI 10.17487/RFC4443, March 2006, | |||
<https://www.rfc-editor.org/info/rfc4443>. | <https://www.rfc-editor.org/info/rfc4443>. | |||
[RFC4960] Stewart, R., Ed., "Stream Control Transmission Protocol", | ||||
RFC 4960, DOI 10.17487/RFC4960, September 2007, | ||||
<https://www.rfc-editor.org/info/rfc4960>. | ||||
[RFC5277] Chisholm, S. and H. Trevino, "NETCONF Event | [RFC5277] Chisholm, S. and H. Trevino, "NETCONF Event | |||
Notifications", RFC 5277, DOI 10.17487/RFC5277, July 2008, | Notifications", RFC 5277, DOI 10.17487/RFC5277, July 2008, | |||
<https://www.rfc-editor.org/info/rfc5277>. | <https://www.rfc-editor.org/info/rfc5277>. | |||
[RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | |||
DOI 10.17487/RFC5321, October 2008, | DOI 10.17487/RFC5321, October 2008, | |||
<https://www.rfc-editor.org/info/rfc5321>. | <https://www.rfc-editor.org/info/rfc5321>. | |||
[RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying | [RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying | |||
Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, | Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, | |||
skipping to change at page 92, line 5 ¶ | skipping to change at page 94, line 5 ¶ | |||
<https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, | [RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, | |||
DOI 10.17487/RFC6265, April 2011, | DOI 10.17487/RFC6265, April 2011, | |||
<https://www.rfc-editor.org/info/rfc6265>. | <https://www.rfc-editor.org/info/rfc6265>. | |||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
<https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, | |||
Protocol (HTTP/1.1): Message Syntax and Routing", | "Specification of the IP Flow Information Export (IPFIX) | |||
RFC 7230, DOI 10.17487/RFC7230, June 2014, | Protocol for the Exchange of Flow Information", STD 77, | |||
<https://www.rfc-editor.org/info/rfc7230>. | RFC 7011, DOI 10.17487/RFC7011, September 2013, | |||
<https://www.rfc-editor.org/info/rfc7011>. | ||||
[RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | ||||
Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | ||||
DOI 10.17487/RFC7231, June 2014, | ||||
<https://www.rfc-editor.org/info/rfc7231>. | ||||
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
skipping to change at page 93, line 37 ¶ | skipping to change at page 95, line 33 ¶ | |||
[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>. | |||
[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] | ||||
Thomson, M. and C. Benfield, "HTTP/2", Work in Progress, | ||||
Internet-Draft, draft-ietf-httpbis-http2bis-07, 24 January | ||||
2022, <https://www.ietf.org/archive/id/draft-ietf-httpbis- | ||||
http2bis-07.txt>. | ||||
[I-D.ietf-httpbis-messaging] | ||||
Fielding, R. T., Nottingham, M., and J. Reschke, | ||||
"HTTP/1.1", Work in Progress, Internet-Draft, draft-ietf- | ||||
httpbis-messaging-19, 12 September 2021, | ||||
<https://www.ietf.org/archive/id/draft-ietf-httpbis- | ||||
messaging-19.txt>. | ||||
[I-D.ietf-httpbis-semantics] | ||||
Fielding, R. T., Nottingham, M., and J. Reschke, "HTTP | ||||
Semantics", Work in Progress, Internet-Draft, draft-ietf- | ||||
httpbis-semantics-19, 12 September 2021, | ||||
<https://www.ietf.org/archive/id/draft-ietf-httpbis- | ||||
semantics-19.txt>. | ||||
[I-D.ietf-i2nsf-capability-data-model] | ||||
Hares, S., Jeong, J. (., Kim, J. (., Moskowitz, R., and Q. | ||||
Lin, "I2NSF Capability YANG Data Model", Work in Progress, | ||||
Internet-Draft, draft-ietf-i2nsf-capability-data-model-26, | ||||
10 February 2022, <https://www.ietf.org/archive/id/draft- | ||||
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-16, 13 November 2021, | i2nsf-nsf-facing-interface-dm-20, 31 January 2022, | |||
<https://www.ietf.org/archive/id/draft-ietf-i2nsf-nsf- | <https://www.ietf.org/archive/id/draft-ietf-i2nsf-nsf- | |||
facing-interface-dm-16.txt>. | facing-interface-dm-20.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-25, 7 September 2021, | ietf-tcpm-rfc793bis-26, 8 February 2022, | |||
<https://www.ietf.org/archive/id/draft-ietf-tcpm- | <https://www.ietf.org/archive/id/draft-ietf-tcpm- | |||
rfc793bis-25.txt>. | rfc793bis-26.txt>. | |||
[I-D.ietf-tsvwg-rfc4960-bis] | ||||
Stewart, R. R., Tüxen, M., and K. E. E. Nielsen, "Stream | ||||
Control Transmission Protocol", Work in Progress, | ||||
Internet-Draft, draft-ietf-tsvwg-rfc4960-bis-18, 16 | ||||
January 2022, <https://www.ietf.org/archive/id/draft-ietf- | ||||
tsvwg-rfc4960-bis-18.txt>. | ||||
15.2. Informative References | 15.2. Informative References | |||
[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] | |||
Jeong, J. (., Chung, C., Ahn, T., Kumar, R., and S. Hares, | Jeong, J. (., Chung, C., Ahn, T., Kumar, R., and S. Hares, | |||
"I2NSF Consumer-Facing Interface YANG Data Model", Work in | "I2NSF Consumer-Facing Interface YANG Data Model", Work in | |||
Progress, Internet-Draft, draft-ietf-i2nsf-consumer- | Progress, Internet-Draft, draft-ietf-i2nsf-consumer- | |||
facing-interface-dm-15, 15 September 2021, | 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-15.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] | [IANA-Media-Types] | |||
Internet Assigned Numbers Authority (IANA), "Media Types", | Internet Assigned Numbers Authority (IANA), "Media Types", | |||
August 2021, <https://www.iana.org/assignments/media- | August 2021, <https://www.iana.org/assignments/media- | |||
types/media-types.xhtml>. | types/media-types.xhtml>. | |||
Appendix A. Changes from draft-ietf-i2nsf-nsf-monitoring-data-model-13 | Appendix A. Changes from draft-ietf-i2nsf-nsf-monitoring-data-model-14 | |||
The following changes are made from draft-ietf-i2nsf-nsf-monitoring- | The following changes are made from draft-ietf-i2nsf-nsf-monitoring- | |||
data-model-13: | data-model-14: | |||
* This version is added to update the references. | * This version is added to update the references. | |||
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 | |||
End of changes. 264 change blocks. | ||||
643 lines changed or deleted | 761 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/ |