| < draft-muenz-ipfix-configuration-03.txt | draft-muenz-ipfix-configuration-04.txt > | |||
|---|---|---|---|---|
| IP Flow Information Export WG G. Muenz | IP Flow Information Export WG G. Muenz | |||
| Internet-Draft University of Tuebingen | Internet-Draft University of Tuebingen | |||
| Intended status: Standards Track B. Claise | Intended status: Standards Track B. Claise | |||
| Expires: May 22, 2008 Cisco Systems, Inc. | Expires: August 23, 2008 Cisco Systems, Inc. | |||
| November 19, 2007 | February 20, 2008 | |||
| Configuration Data Model for IPFIX and PSAMP | Configuration Data Model for IPFIX and PSAMP | |||
| <draft-muenz-ipfix-configuration-03> | <draft-muenz-ipfix-configuration-04> | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
| applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
| have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| skipping to change at page 1, line 35 ¶ | skipping to change at page 1, line 35 ¶ | |||
| 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." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on May 22, 2008. | This Internet-Draft will expire on August 23, 2008. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2008). | |||
| Abstract | Abstract | |||
| This document specifies a data model for the configuration of | This document specifies a data model for the configuration of | |||
| metering processes, exporting processes, and collecting processes for | metering processes, exporting processes, and collecting processes for | |||
| IPFIX and PSAMP compliant monitoring devices. The configuration data | IPFIX and PSAMP compliant monitoring devices. The configuration data | |||
| model is encoded in Extensible Markup Language (XML), according to an | model is encoded in Extensible Markup Language (XML). The structure | |||
| XML Schema Definition presented in this document. | of the data model is specified as a YANG module to ensure | |||
| compatibility with the Netconf protocol. A YANG-to-XSD converter is | ||||
| available which allows generating an XML Schema Definition of the | ||||
| data model. | ||||
| Table of Contents | Table of Contents | |||
| 1. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. IPFIX Documents Overview . . . . . . . . . . . . . . . . . 4 | 2.1. IPFIX Documents Overview . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. PSAMP Documents Overview . . . . . . . . . . . . . . . . . 5 | 2.2. PSAMP Documents Overview . . . . . . . . . . . . . . . . . 4 | |||
| 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. Structure of the Configuration Data Model . . . . . . . . . . 5 | 4. Structure of the Configuration Data Model . . . . . . . . . . 5 | |||
| 5. Configuration Parameters . . . . . . . . . . . . . . . . . . . 9 | 5. Configuration Parameters . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.1. ObservationPoint Class . . . . . . . . . . . . . . . . . . 10 | 5.1. ObservationPoint Class . . . . . . . . . . . . . . . . . . 10 | |||
| 5.2. MeteringProcess Class . . . . . . . . . . . . . . . . . . 11 | 5.2. MeteringProcess Class . . . . . . . . . . . . . . . . . . 11 | |||
| 5.3. SelectionProcess Class . . . . . . . . . . . . . . . . . . 12 | 5.3. SelectionProcess Class . . . . . . . . . . . . . . . . . . 11 | |||
| 5.3.1. Sampler Classes . . . . . . . . . . . . . . . . . . . 13 | 5.3.1. Sampler Classes . . . . . . . . . . . . . . . . . . . 12 | |||
| 5.3.2. Filter Classes . . . . . . . . . . . . . . . . . . . . 13 | 5.3.2. Filter Classes . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5.4. CacheParameters Class . . . . . . . . . . . . . . . . . . 14 | 5.4. Cache Class . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.4.1. Template Class . . . . . . . . . . . . . . . . . . . . 15 | 5.4.1. Template Class . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.5. ExportingProcess Class . . . . . . . . . . . . . . . . . . 16 | 5.5. ExportingProcess Class . . . . . . . . . . . . . . . . . . 14 | |||
| 5.5.1. Destination Class . . . . . . . . . . . . . . . . . . 16 | 5.5.1. Destination Class . . . . . . . . . . . . . . . . . . 15 | |||
| 5.5.2. Export Parameters Classes . . . . . . . . . . . . . . 17 | 5.5.2. Export Parameters Classes . . . . . . . . . . . . . . 15 | |||
| 5.5.3. Option Class . . . . . . . . . . . . . . . . . . . . . 18 | 5.5.3. Option Class . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 5.5.4. OptionTemplate Class . . . . . . . . . . . . . . . . . 19 | 5.5.4. OptionTemplate Class . . . . . . . . . . . . . . . . . 18 | |||
| 5.6. CollectingProcess Class and Receiver Class . . . . . . . . 19 | 5.6. CollectingProcess Class and Receiver Class . . . . . . . . 19 | |||
| 6. XML Schema Specification . . . . . . . . . . . . . . . . . . . 20 | 6. YANG Module of the IPFIX/PSAMP Configuration Data Model . . . 20 | |||
| 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 7.1. PSAMP Monitoring Device . . . . . . . . . . . . . . . . . 33 | 7.1. PSAMP Monitoring Device . . . . . . . . . . . . . . . . . 32 | |||
| 7.2. IPFIX Monitoring Device . . . . . . . . . . . . . . . . . 35 | 7.2. IPFIX Monitoring Device . . . . . . . . . . . . . . . . . 35 | |||
| 7.3. Collector Monitoring Device . . . . . . . . . . . . . . . 38 | 7.3. Collector Monitoring Device . . . . . . . . . . . . . . . 38 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 38 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 38 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 39 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . . 38 | ||||
| 9.2. Informative References . . . . . . . . . . . . . . . . . . 39 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 41 | ||||
| Intellectual Property and Copyright Statements . . . . . . . . . . 42 | ||||
| 1. Open Issues | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . . 39 | ||||
| 9.2. Informative References . . . . . . . . . . . . . . . . . . 40 | ||||
| General issues: | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| o Find a consensus of common configuration parameters. | Intellectual Property and Copyright Statements . . . . . . . . . . 43 | |||
| o What is the relationship to the Netconf protocol? Recommend | ||||
| Netconf as preferred configuration protocol? Make it mandatory? | ||||
| Netconf related issues: | 1. Open Issues | |||
| o Netconf compliance? | ||||
| o Extend model for reporting device capabilities, error messages | ||||
| etc.? | ||||
| Specific issues: | All open issues have been addressed. | |||
| o Which are the common SCTP specific export parameters? | ||||
| o Allow only "ingress" and "egress" for direction attribute of | ||||
| linecard and interface? | ||||
| o Check if current configuration data model is inline with PSAMP | ||||
| view of Selection Process, Selection Sequence, Selector etc. | ||||
| Solved issues and answers to reviewer comments: | Solved issues and answers to reviewer comments: | |||
| o SCTP timed reliability parameter configures lifetime before an | ||||
| IPFIX Message is "abandoned". | ||||
| o Netconf compliance: ensured by using YANG instead of XSD. | ||||
| o Direction attribute of interface/linecard can be on of "ingress", | ||||
| "egress", or "both". | ||||
| o observationPointId, meteringProcessId, exportingProcessId, and | o observationPointId, meteringProcessId, exportingProcessId, and | |||
| selectorId have been added as optional configuration parameters, | selectorId have been added as optional configuration parameters, | |||
| setting the values of the corresponding Information Elements. | setting the values of the corresponding Information Elements. | |||
| Note that monitoring device implementations are not obliged to | Note that monitoring device implementations are not obliged to | |||
| support the configuration of these ids, but may set them | support the configuration of these ids, but may set them | |||
| dynamically. Currently not included is selectionSequenceId. | dynamically. Currently not included is selectionSequenceId. | |||
| o Request for additional parameters concerning the composition of | o Request for additional parameters concerning the composition of | |||
| IPFIX messages at the exporter, e.g. how long may the exporter | IPFIX Messages at the exporter, e.g. how long may the exporter | |||
| wait until an expired record is exported? Waiting may be useful | wait until an expired record is exported? Waiting may be useful | |||
| in order to fill up IPFIX messages. | in order to fill up IPFIX Messages. | |||
| We (the authors) decided not to add such parameters for the | We (the authors) decided not to add such parameters for the | |||
| following reasons: 1) the composition of IPFIX messages has not | following reasons: 1) the composition of IPFIX Messages has not | |||
| been described as configurable or managable in any other IPFIX | been described as configurable or managable in any other IPFIX | |||
| document, and 2) today's configuration possibilities depend very | document, and 2) today's configuration possibilities depend very | |||
| much on the device or manufacturer. We propose to use device or | much on the device or manufacturer. We propose to use device or | |||
| manufacturer-dependent extensions of the configuration data model. | manufacturer-dependent extensions of the configuration data model. | |||
| 2. Introduction | 2. Introduction | |||
| IPFIX and PSAMP compliant monitoring devices (routers, switches, | IPFIX and PSAMP compliant monitoring devices (routers, switches, | |||
| monitoring probes, mediators, collectors etc.) offer various | monitoring probes, mediators, collectors etc.) offer various | |||
| configuration possibilities that allow adapting network monitoring to | configuration possibilities that allow adapting network monitoring to | |||
| skipping to change at page 4, line 18 ¶ | skipping to change at page 4, line 8 ¶ | |||
| hand, it can also be used for local and remote configuration of | hand, it can also be used for local and remote configuration of | |||
| monitoring devices. However, this requires that monitoring devices | monitoring devices. However, this requires that monitoring devices | |||
| natively support the configuration data model, or that a mapping | natively support the configuration data model, or that a mapping | |||
| between the configuration data model and the device-specific | between the configuration data model and the device-specific | |||
| representation of configuration data is provided. An appropriate | representation of configuration data is provided. An appropriate | |||
| transport protocol is needed in the case of remote configuration. | transport protocol is needed in the case of remote configuration. | |||
| The purpose of this document is the specification of a device- | The purpose of this document is the specification of a device- | |||
| independent configuration data model that covers the commonly | independent configuration data model that covers the commonly | |||
| available configuration parameters of Metering Processes, Exporting | available configuration parameters of Metering Processes, Exporting | |||
| Processes, and Collecting Processes. The data model is specified in | Processes, and Collecting Processes. The data model is encoded in | |||
| Extensible Markup Language (XML) [W3C.REC-xml-20040204] using XML | Extensible Markup Language (XML) [W3C.REC-xml-20040204]. An XML | |||
| Schema language [W3C.REC-xmlschema-0-20041028]. An XML document | document conforming to the configuration data model contains the | |||
| conforming to this XML Schema Definition contains the configuration | configuration data of one monitoring device. In order to ensure | |||
| data of one or multiple monitoring devices. The usage of XML enables | compatibility with the Netconf protocol [RFC4741], YANG | |||
| easy extension of the configuration data model with additional | [I-D.bjorklund-netconf-yang] is used as modeling language. If | |||
| device-specific parameters. Furthermore, optional parameters not | required, the YANG specification of the configuration data model can | |||
| supported by a particular monitoring device implementation can be | be converted into using XML Schema language | |||
| simply omitted in the XML document. However, for the creation and | [W3C.REC-xmlschema-0-20041028] using the pyang tool [YANG-WEB]. YANG | |||
| manipulation of configuration data for a specific monitoring device, | provides mechanisms to augment the configuration data model with | |||
| any restrictions and extensions of the data model should be known. | additional device-specific or vendor-specific parameters. | |||
| This is to avoid the generation of unsupported configuration data and | ||||
| to profit from extended device capabilities. Note that the | ||||
| description of monitoring device capabilities is currently out of | ||||
| scope of this document. | ||||
| For the configuration of remote monitoring devices, an appropriate | For the configuration of remote monitoring devices, an appropriate | |||
| protocol is needed to transfer the XML encoded configuration data. | protocol is needed to transfer the XML encoded configuration data. | |||
| There are various candidate protocols, like the Network Configuration | The configuration data model is compatible with the Netconf protocol | |||
| Protocol (Netconf) [RFC4741] or the Simple Object Access Protocol | [RFC4741]. However, alternative protocols, such as the Simple Object | |||
| (SOAP) [W3C.REC-soap12-part1-20070427], that are suitable for | Access Protocol (SOAP) [W3C.REC-soap12-part1-20070427], are also | |||
| transferring XML data from a network management system to a | suitable for transferring XML data from a network management system | |||
| monitoring device. However, the current specification of the | to a monitoring device. | |||
| configuration data model is not specific to any of these. | ||||
| 2.1. IPFIX Documents Overview | 2.1. IPFIX Documents Overview | |||
| The IPFIX protocol [I-D.ietf-ipfix-protocol] provides network | The IPFIX protocol [RFC5101] provides network administrators with | |||
| administrators with access to IP flow information. The architecture | access to IP flow information. The architecture for the export of | |||
| for the export of measured IP flow information out of an IPFIX | measured IP flow information out of an IPFIX exporting process to a | |||
| exporting process to a collecting process is defined in | collecting process is defined in [I-D.ietf-ipfix-architecture], per | |||
| [I-D.ietf-ipfix-architecture], per the requirements defined in | the requirements defined in [RFC3917]. This document specifies how | |||
| [RFC3917]. This document specifies how IPFIX data records and | IPFIX data records and templates are carried via a number of | |||
| templates are carried via a number of transport protocols from IPFIX | transport protocols from IPFIX exporting processes to IPFIX | |||
| exporting processes to IPFIX collecting process. IPFIX has a formal | collecting process. IPFIX has a formal description of IPFIX | |||
| description of IPFIX information elements, their name, type and | information elements, their name, type and additional semantic | |||
| additional semantic information, as specified in | information, as specified in [RFC5102]. [I-D.ietf-ipfix-mib] | |||
| [I-D.ietf-ipfix-info]. [I-D.ietf-ipfix-mib] specifies the IPFIX | specifies the IPFIX Management Information Base. Finally | |||
| Management Information Base. Finally [I-D.ietf-ipfix-as] describes | [I-D.ietf-ipfix-as] describes what type of applications can use the | |||
| what type of applications can use the IPFIX protocol and how they can | IPFIX protocol and how they can use the information provided. It | |||
| use the information provided. It furthermore shows how the IPFIX | furthermore shows how the IPFIX framework relates to other | |||
| framework relates to other architectures and frameworks. | architectures and frameworks. | |||
| 2.2. PSAMP Documents Overview | 2.2. PSAMP Documents Overview | |||
| The document "A Framework for Packet Selection and Reporting" | The document "A Framework for Packet Selection and Reporting" | |||
| [I-D.ietf-psamp-framework] describes the PSAMP framework for network | [I-D.ietf-psamp-framework] describes the PSAMP framework for network | |||
| elements to select subsets of packets by statistical and other | elements to select subsets of packets by statistical and other | |||
| methods, and to export a stream of reports on the selected packets to | methods, and to export a stream of reports on the selected packets to | |||
| a collector. The set of packet selection techniques (sampling, | a collector. The set of packet selection techniques (sampling, | |||
| filtering, and hashing) supported by PSAMP are described in "Sampling | filtering, and hashing) supported by PSAMP are described in "Sampling | |||
| and Filtering Techniques for IP Packet Selection" | and Filtering Techniques for IP Packet Selection" | |||
| [I-D.ietf-psamp-sample-tech]. The PSAMP protocol | [I-D.ietf-psamp-sample-tech]. The PSAMP protocol | |||
| [I-D.ietf-psamp-protocol] specifies the export of packet information | [I-D.ietf-psamp-protocol] specifies the export of packet information | |||
| from a PSAMP exporting process to a PSAMP collecting process. Like | from a PSAMP exporting process to a PSAMP collecting process. Like | |||
| IPFIX, PSAMP has a formal description of its information elements, | IPFIX, PSAMP has a formal description of its information elements, | |||
| their name, type and additional semantic information. The PSAMP | their name, type and additional semantic information. The PSAMP | |||
| information model is defined in [I-D.ietf-psamp-info]. Finally | information model is defined in [I-D.ietf-psamp-info]. Finally | |||
| [I-D.ietf-psamp-mib] describes the PSAMP Management Information Base. | [I-D.ietf-psamp-mib] describes the PSAMP Management Information Base. | |||
| 3. Terminology | 3. Terminology | |||
| This document adopts the terminologies used in | This document adopts the terminologies used in [RFC5101] and | |||
| [I-D.ietf-ipfix-protocol] and [I-D.ietf-psamp-protocol]. As in | [I-D.ietf-psamp-protocol]. As in [RFC5101], these specific terms | |||
| [I-D.ietf-ipfix-protocol], these specific terms have the first letter | have the first letter of a word capitalized when used in this | |||
| of a word capitalized when used in this document. | document. | |||
| [TODO: copy terminology section] | ||||
| 4. Structure of the Configuration Data Model | 4. Structure of the Configuration Data Model | |||
| The IPFIX reference model in [I-D.ietf-ipfix-architecture] specifies | The IPFIX reference model in [I-D.ietf-ipfix-architecture] specifies | |||
| the role and function of Metering Processes, Exporting Processes, and | the role and function of Metering Processes, Exporting Processes, and | |||
| Collecting Processes. In [I-D.ietf-psamp-framework], the | Collecting Processes. In [I-D.ietf-psamp-framework], the | |||
| corresponding information is specified for the PSAMP architecture. | corresponding information is specified for the PSAMP architecture. | |||
| IPFIX and PSAMP compliant monitoring device implementations usually | IPFIX and PSAMP compliant monitoring device implementations usually | |||
| maintain the separation of Metering Processes, Exporting Processes, | maintain the separation of Metering Processes, Exporting Processes, | |||
| and Collecting Processes (although they do not necessarily implement | and Collecting Processes (although they do not necessarily implement | |||
| all of them). Furthermore, they provide various configuration | all of them). Furthermore, they provide various configuration | |||
| possibilities; some of them are required by the IPFIX protocol | possibilities; some of them are specified as mandatory by the IPFIX | |||
| [I-D.ietf-ipfix-protocol]. The configuration data model enables the | protocol [RFC5101]. The configuration data model enables the setting | |||
| setting of commonly available configuration parameters for Metering | of commonly available configuration parameters for Metering | |||
| Processes, Exporting Processes, and Collecting Processes. In | Processes, Exporting Processes, and Collecting Processes. In | |||
| addition, it allows specifying the composition of Metering Processes, | addition, it allows specifying the composition of Metering Processes, | |||
| Exporting Processes, and Collecting Processes within a monitoring | Exporting Processes, and Collecting Processes within a monitoring | |||
| device configuration. | device configuration. | |||
| The selection of commonly available configuration parameters is based | The selection of commonly available configuration parameters is based | |||
| on configuration issues discussed in the IPFIX and PSAMP documents | on configuration issues discussed in the IPFIX and PSAMP documents | |||
| [RFC3917], [I-D.ietf-ipfix-protocol], [I-D.ietf-ipfix-architecture], | [RFC3917], [RFC5101], [I-D.ietf-ipfix-architecture], | |||
| [I-D.ietf-psamp-framework], and [I-D.ietf-psamp-sample-tech]. | [I-D.ietf-psamp-protocol], [I-D.ietf-psamp-framework], and | |||
| Furthermore, the structure and content of the IPFIX MIB module | [I-D.ietf-psamp-sample-tech]. Furthermore, the structure and content | |||
| [I-D.ietf-ipfix-mib] and the PSAMP MIB module [I-D.ietf-psamp-mib] | of the IPFIX MIB module [I-D.ietf-ipfix-mib] and the PSAMP MIB module | |||
| were taken into consideration. Consistency between the configuration | [I-D.ietf-psamp-mib] were taken into consideration. Consistency | |||
| data model and the IPFIX and PSAMP MIB modules is an intended goal. | between the configuration data model and the IPFIX and PSAMP MIB | |||
| Therefore, parameters in the configuration data model are named | modules is an intended goal. Therefore, parameters in the | |||
| according to corresponding managed objects. | configuration data model are named according to corresponding managed | |||
| objects. | ||||
| In the following, we use Unified Modeling Language (UML) class | In the following, we use Unified Modeling Language (UML) class | |||
| diagrams to explain the structure of the configuration data model. | diagrams to explain the structure of the configuration data model. | |||
| According to UML, different arrow types are used to distinguish two | According to UML, different arrow types are used to distinguish two | |||
| different types of relationship between UML classes: aggregation and | different types of relationship between UML classes: aggregation and | |||
| association. | association. | |||
| +---+ 0..* +---+ +---+ 0..* +---+ | +---+ 0..* +---+ +---+ 0..* +---+ | |||
| | A |<>------| B | | A |------->| B | | | A |<>------| B | | A |------->| B | | |||
| +---+ +---+ +---+ +---+ | +---+ +---+ +---+ +---+ | |||
| (a) Aggregation (b) Unidirectional association | (a) Aggregation (b) Unidirectional association | |||
| Aggregation means that one class is part of the other, e.g. class B | Aggregation means that one class is part of the other. As an | |||
| is part of class A in example (a). An association is a reference to | example, class B is part of class A in example (a). An association | |||
| an instance of another class. In example (b), class A contains a | is a reference to an instance of another class. In example (b), | |||
| reference to an instance of class B. The indicated numbers define the | class A contains a reference to an instance of class B. The indicated | |||
| multiplicity: | numbers define the multiplicity: | |||
| "1": one only | "1": one only | |||
| "0..*": zero or more | "0..*": zero or more | |||
| "1..*": one or more | "1..*": one or more | |||
| In order to identify a specific instance, a class must be | In UML class diagrams, all classes that occur with multiplicity | |||
| identifiable by an identifier, i.e. class B in example (b) must be | greater than one in an aggregation relationship, and all classes that | |||
| identifiable. In the configuration data model, identifiers are | are referenced in associations must have a key which allows | |||
| string attributes named "id". These "id" attributes are not | distinguishing different instances of the class. This key must be | |||
| displayed in the UML class diagrams. Arbitrary annotations can be | unique within the given scope. Regarding example (a), all instances | |||
| assigned to the main classes of the data model using string | of class B belonging to the same instance of class A must have keys; | |||
| attributes named "description". Values of this attribute have no | the scope is local to the given instance of class A. In example (b), | |||
| effect on the configuration and purely serve to provide some context | all instance of class B must have unique keys as they can be | |||
| information to the (human) reader. | referenced by multiple instances of class A (i.e., the scope is | |||
| global). In YANG, there exists a corresponding rule which mandates | ||||
| the existence of a key for all elements which appear in lists | ||||
| [I-D.bjorklund-netconf-yang]. In the configuration data model, the | ||||
| key is a string parameter called "name" for all classes. | ||||
| Figure 1 shows the main classes the configuration data model. The | Figure 1 shows the main classes the configuration data model. The | |||
| role of the classes can be briefly summarized as follows: | role of the classes can be briefly summarized as follows: | |||
| o The ObservationPoint class identifies an Observation Point (e.g. | o The ObservationPoint class specifies an Observation Point (e.g. | |||
| interface) of the monitoring device which is used for traffic | interface) of the monitoring device which is used for traffic | |||
| monitoring. Furthermore, it specifies Metering Processes that | monitoring. Furthermore, it configures Metering Processes that | |||
| process the observed packets. | process the observed packets. | |||
| o The MeteringProcess class represents a Metering Process. A | o The MeteringProcess class represents a Metering Process. A | |||
| Metering Process requires a record cache which is represented by | Metering Process requires a record cache which is represented by | |||
| an instance of the CacheParameters class. In order to enable the | an instance of the Cache class. In order to enable the usage of | |||
| usage of a record cache within multiple Metering Processes, the | the same record cache in multiple Metering Processes, the | |||
| MeteringProcess class contains only a reference to an instance of | MeteringProcess class contains only a reference to an instance of | |||
| the CacheParameters class. Note that the usage of the same record | the Cache class. Note that the usage of the same cache implies | |||
| cache implies that the Template defining the record format is | that the Template defining the record format is identical for the | |||
| identical for the corresponding Metering Processes. Similarly, | corresponding Metering Processes. Additionally, the | |||
| the MeteringProcess class contains optional references to | MeteringProcess class contains optional references to instances of | |||
| instances of the SelectionProcess class forming a Selection | the SelectionProcess class forming a Selection Sequence. Only | |||
| Sequence. Only those packets passing the sequence of Selection | those packets passing the sequence of Selection Processes enter | |||
| Processes enter the record cache. If no references to instances | the record cache. If no references to instances of the | |||
| of the SelectionProcess class are specified, all observed packets | SelectionProcess class are specified, all observed packets enter | |||
| enter the record cache. | the record cache. | |||
| o The SelectionProcess class contains the configuration parameters | o The SelectionProcess class contains the configuration parameters | |||
| of a Selection Process, i.e. sampling and filtering parameters. | of a Selection Process, which is a Primitive Selector (i.e., | |||
| An instance of the SelectionProcess class can be referred from | sampler or filter). An instance of the SelectionProcess class can | |||
| multiple Metering Processes, which allows the usage of the same | be referred from multiple Metering Processes, which allows the | |||
| Selection Process in different Metering Processes. | application of the same Selection Process in different Metering | |||
| o The CacheParameters class contains configuration parameters of a | Processes. | |||
| cache which stores the records in the monitoring device. | o The Cache class contains configuration parameters of a cache which | |||
| Configuration parameters of the CacheParameters class specify the | stores the records in the monitoring device. Configuration | |||
| record format (Template), expiration parameters, and cache size. | parameters of the Cache class specify the record format | |||
| In addition, references to one or multiple Exporting Processes can | (Template), expiration parameters, and cache size. In addition, | |||
| be included. An instance of the CacheParameters class can be | references to one or multiple Exporting Processes can be included. | |||
| referred from multiple Metering Processes, enabling the shared | An instance of the Cache class can be referred from multiple | |||
| usage of the same record cache in different Metering Processes. | Metering Processes, enabling the shared usage of the same record | |||
| As the Template is defined in the CacheParameters class, using the | cache in different Metering Processes. As the Template is defined | |||
| same record cache implies that the record format is identical. | in the Cache class, using the same record cache implies that the | |||
| Also, the same Exporting Processes will be used, as these are | record format is identical. Also, the same Exporting Processes | |||
| linked to the record cache. | will be used, as these are linked to the record cache. | |||
| o The ExportingProcess class contains configuration parameters of an | o The ExportingProcess class contains configuration parameters of an | |||
| Exporting Process. It defines the export parameters and | Exporting Process. It defines the export parameters and | |||
| destinations. An instance of the ExportingProcess class can be | destinations. An instance of the ExportingProcess class can be | |||
| referred from multiple instances of the CacheParameters class. | referred from multiple instances of the Cache class. | |||
| +------------------+ 0..* +-----------------+ | +------------------+ 0..* +-----------------+ | |||
| | ObservationPoint |<>------| MeteringProcess | | | ObservationPoint |<>------| MeteringProcess | | |||
| +------------------+ +-----------------+ | +------------------+ +-----------------+ | |||
| | | | | | | |||
| | | | | | | |||
| | | 0..* | | | 0..* | |||
| | V | | V | |||
| | +------------------+ | | +------------------+ | |||
| | | SelectionProcess | | | | SelectionProcess | | |||
| | +------------------+ | | +------------------+ | |||
| | | | | |||
| | | | | |||
| | 1 +------------------+ | | 1 +------------------+ | |||
| +-->| CacheParameters | | +-->| Cache | | |||
| +------------------+ | +------------------+ | |||
| | | | | |||
| | | | | |||
| | 0..* | | 0..* | |||
| V | V | |||
| +------------------+ | +------------------+ | |||
| | ExportingProcess | | | ExportingProcess | | |||
| +------------------+ | +------------------+ | |||
| Figure 1: Main classes of the configuration data model | Figure 1: Main classes of the configuration data model | |||
| As can be seen in Figure 1, the MeteringProcess class defines | As can be seen in Figure 1, the MeteringProcess class defines | |||
| references to instances of the SelectionProcess class and the | references to instances of the SelectionProcess class and the Cache | |||
| CacheParameters class. It acts as an envelope element specifying a | class. It acts as an envelope element specifying a series of | |||
| series of Selection Processes, forming a Selection Sequence, and a | Selection Processes, forming a Selection Sequence, and a record | |||
| record cache. The order in which the Selection Processes are | cache. The order in which the user specifies Selection Processes in | |||
| specified in the XML document corresponds to the order in which they | the XML document corresponds to the order in which they are applied. | |||
| are applied. Thus, the same Selection Processes and record caches | Hence, by using UML associations instead of aggregation | |||
| can be deployed in different Metering Processes. An example is given | relationships, the same Selection Processes and record caches can be | |||
| in Section 7.1. The MeteringProcess class itself is not | deployed in different Metering Processes. An example is given in | |||
| instantiated, but specified as part of the ObservationPoint class. | Section 7.1. The MeteringProcess class itself is not instantiated, | |||
| Using the same Metering Process with different Observation Points is | but specified as part of the ObservationPoint class. Using the same | |||
| achieved by referring to the same instances of the SelectionProcess | Metering Process with different Observation Points is achieved by | |||
| class and the CacheParameters class. Considering Selection Processes | referring to the same instances of the SelectionProcess class and the | |||
| and Cache Parameters as instances (and not the complete Metering | Cache class. Considering Selection Processes and Cache Parameters as | |||
| Process) corresponds to the common practice to implement Selection | instances (and not the complete Metering Process) corresponds to the | |||
| Processes and record caches as independent modules. | common practice to implement Selection Processes and record caches as | |||
| independent modules. | ||||
| The CacheParameters class refers to instances of the ExportingProcess | The Cache class refers to instances of the ExportingProcess class, | |||
| class, which enables using the same Exporting Process for different | which enables using the same Exporting Process for different Metering | |||
| Metering Processes. | Processes. | |||
| The CollectingProcess class is depicted in Figure 2. It defines one | The CollectingProcess class is depicted in Figure 2. It configures | |||
| or multiple receiving ports using the Receiver class. If the | one or multiple listening ports or input files using the Receiver | |||
| monitoring device acts as a concentrator, the MeteringProcess class | class. If the monitoring device acts as a mediator or concentrator, | |||
| is specified as part of the CollectingProcess. | the MeteringProcess class is specified as part of the | |||
| CollectingProcess class. However, the CollectingProcess class also | ||||
| allows referring to instances of the ExportingProcess class to export | ||||
| the received records without modifications to a file or another | ||||
| collector. | ||||
| +-------------------+ 1..* +---------------+ | +-------------------+ 1..* +---------------+ | |||
| | |<>------| Receiver | | | |<>------| Receiver | | |||
| | CollectingProcess | +---------------+ | | CollectingProcess | +---------------+ | |||
| | | | | | | |||
| | | 0..* +-----------------+ | | | 0..* +-----------------+ | |||
| | |<>------| MeteringProcess | | | |<>------| MeteringProcess | | |||
| +-------------------+ +-----------------+ | | | +-----------------+ | |||
| | | | | | | | | |||
| | | | | | | | | |||
| | | 0..* | | | | | 0..* | |||
| | V | | | | V | |||
| | +------------------+ | | | | +------------------+ | |||
| | | SelectionProcess | | | | | | SelectionProcess | | |||
| | +------------------+ | | | | +------------------+ | |||
| | | | | | | |||
| | | | | | | |||
| | 1 +------------------+ | | | | 1 +------------------+ | |||
| +-->| CacheParameters | | | | +-->| Cache | | |||
| +------------------+ | | | +------------------+ | |||
| | | | | | | |||
| | | | | | | |||
| | 0..* | | | | 0..* | |||
| V | | | V | |||
| +------------------+ | | | 0..* +------------------+ | |||
| | ExportingProcess | | | |------->| ExportingProcess | | |||
| +------------------+ | +-------------------+ +------------------+ | |||
| Figure 2: CollectingProcess class | Figure 2: CollectingProcess class | |||
| Each of the presented classes contains specific configuration | Each of the presented classes contains specific configuration | |||
| parameters which are specified in the next section. The | parameters which are specified in the next section. The formal | |||
| implementation of the configuration data model in XML is specified in | definition of the configuration data model in YANG is given in | |||
| XML Schema language [W3C.REC-xmlschema-0-20041028] in Section 6 and | Section 6. Section 7 illustrates the usage of the model with example | |||
| illustrated with examples in Section 7. | configurations in XML. | |||
| 5. Configuration Parameters | 5. Configuration Parameters | |||
| This section specifies the configuration parameters of the | This section specifies the configuration parameters of the | |||
| configuration data model separately for each class. | configuration data model separately for each class. Parameters | |||
| serving as keys are depicted in brackets. | ||||
| 5.1. ObservationPoint Class | 5.1. ObservationPoint Class | |||
| +---------------------+ | +---------------------+ | |||
| | ObservationPoint | | | ObservationPoint | | |||
| +---------------------+ 1 +--------------------+ | +---------------------+ 1 +--------------------+ | |||
| | observationPointId |<>--------| Interface/Linecard | | | [name] |<>--------| Interface/Linecard | | |||
| | observationDomainId | +--------------------+ | | observationPointId | +--------------------+ | |||
| | | | | observationDomainId | | |||
| | | 0..* +--------------------+ | | | 0..* +--------------------+ | |||
| | |<>--------| MeteringProcess | | | |<>--------| MeteringProcess | | |||
| +---------------------+ +--------------------+ | +---------------------+ +--------------------+ | |||
| +------------------+ +------------------+ | +------------------+ +----------------------------------+ | |||
| | Interface | | Linecard | | | Interface | | Linecard | | |||
| +------------------+ +------------------+ | +------------------+ +----------------------------------+ | |||
| | ifIndex | | entPhysicalIndex | | | ifIndex/ifName | | entPhysicalIndex/entPhysicalName | | |||
| | ifName | | entPhysicalName | | | direction | | direction | | |||
| | direction | | direction | | +------------------+ +----------------------------------+ | |||
| +------------------+ +------------------+ | ||||
| Figure 3: ObservationPoint class | Figure 3: ObservationPoint class | |||
| The ObservationPoint class identifies an Observation Point of the | The ObservationPoint class identifies an Observation Point of the | |||
| monitoring device, i.e. an interface or a linecard. The | monitoring device, which is either an interface or a linecard. The | |||
| ObservationPoint class may specify the Observation Domain ID if the | ObservationPoint class may specify the Observation Domain ID if the | |||
| monitoring device implementation supports this configuration. If | monitoring device implementation supports this configuration. If | |||
| supported, the ObservationPoint class may also set the value of the | supported, the ObservationPoint class may also set the value of the | |||
| Information Element observationPointId [I-D.ietf-ipfix-info]. | Information Element observationPointId [RFC5102]. | |||
| The configuration parameters to identify an interface or a linecard | The configuration parameters to identify an interface or a linecard | |||
| are as follows: | are as follows: | |||
| o ifIndex, ifName: Index and name of the interface according to | o ifIndex/ifName: Either the index or name of the interface must be | |||
| corresponding objects in the IF-MIB. Only one of them must be | specified according to corresponding objects in the IF-MIB | |||
| specified to identify the interface. | [RFC2863]. | |||
| o entPhysicalIndex, entPhysicalName: Index and name of the linecard | o entPhysicalIndex/entPhysicalName: Either the index or name of the | |||
| according to the corresponding objects in the ENTITY-MIB. | linecard must be specified according to corresponding objects in | |||
| o direction: Specifies if ingress traffic, egress traffic, or both, | the ENTITY-MIB [RFC4133]. | |||
| ingress and egress traffic is captured. [DISCUSS: Allow only | o direction: This parameter specifies if ingress traffic, egress | |||
| "ingress" and "egress"?] | traffic, or both, ingress and egress traffic is captured. If not | |||
| applicable (e.g., in the case of a sniffing interface in | ||||
| promiscuous mode), this parameter is omitted. | ||||
| The ObservationPoint class may specify one or multiple Metering | The ObservationPoint class may configure one or multiple Metering | |||
| Processes. | Processes which process the observed packets in parallel. | |||
| 5.2. MeteringProcess Class | 5.2. MeteringProcess Class | |||
| +-------------------+ | +-------------------+ | |||
| | MeteringProcess | | | MeteringProcess | | |||
| +-------------------+ 0..* +------------------+ | +-------------------+ 0..* +------------------+ | |||
| | meteringProcessId |------>| SelectionProcess | | | [name] |------>| SelectionProcess | | |||
| | | +------------------+ | | meteringProcessId | +------------------+ | |||
| | | | | | | |||
| | | 1 +------------------+ | | | 1 +------------------+ | |||
| | |------>| CacheParameters | | | |------>| Cache | | |||
| +-------------------+ +------------------+ | +-------------------+ +------------------+ | |||
| Figure 4: MeteringProcess class | Figure 4: MeteringProcess class | |||
| The MeteringProcess class represents a Metering Process. It refers | The MeteringProcess class represents a Metering Process. It refers | |||
| to one instance of the CacheParameters class that specifies a record | to one instance of the Cache class that specifies a record cache in | |||
| cache in the monitoring device. In addition, the MeteringProcess | the monitoring device. In addition, the MeteringProcess class may | |||
| class may refer to one or multiple instances of the SelectionProcess | refer to one or multiple instances of the SelectionProcess class | |||
| class which specify sampling and filtering methods applied to the | which specify sampling and filtering methods applied to the packets | |||
| packets before entering the record cache. The order of the Selection | before entering the record cache. The order of the Selection | |||
| Processes references in the XML document corresponds to the sequence | Processes references in the XML document corresponds to the sequence | |||
| in which they are applied. If no SelectionProcess is specified, all | in which they are applied. If no SelectionProcess is specified, all | |||
| observed packets are selected. If supported by the monitoring device | observed packets are selected. If supported by the monitoring device | |||
| implementation, the MeteringProcess class may set the value of the | implementation, the MeteringProcess class may set the value of the | |||
| Information Element meteringProcessId [I-D.ietf-ipfix-info]. | Information Element meteringProcessId [RFC5102]. | |||
| 5.3. SelectionProcess Class | 5.3. SelectionProcess Class | |||
| +------------------+ | +------------------+ | |||
| | SelectionProcess | | | SelectionProcess | | |||
| +------------------+ 0..* +----------------+ | +------------------+ 1 +-----------------+ | |||
| | selectorId |<>------+ SampCountBased | | | [name] |<>------+ SampCountBased/ | | |||
| | | +----------------+ | | selectorId | | SampTimeBased/ | | |||
| | | 0..* +----------------+ | | | | SampRandOutOfN/ | | |||
| | |<>------| SampTimeBased | | | | | SampUniProb/ | | |||
| | | +----------------+ | | | | SampNonUniProb/ | | |||
| | | 0..* +----------------+ | | | | SampFlowState/ | | |||
| | |<>------| SampRandOutOfN | | | | | FilterMatch/ | | |||
| | | +----------------+ | | | | FilterHash/ | | |||
| | | 0..* +----------------+ | | | | FilterRState | | |||
| | |<>------| SampUniProb | | +------------------+ +-----------------+ | |||
| | | +----------------+ | ||||
| | | 0..* +----------------+ | ||||
| | |<>------| SampNonUniProb | | ||||
| | | +----------------+ | ||||
| | | 0..* +----------------+ | ||||
| | |<>------| SampFlowState | | ||||
| | | +----------------+ | ||||
| | | 0..* +----------------+ | ||||
| | |<>------| FilterMatch | | ||||
| | | +----------------+ | ||||
| | | 0..* +----------------+ | ||||
| | |<>------| FilterHash | | ||||
| +------------------+ +----------------+ | ||||
| Figure 5: SelectionProcess class | Figure 5: SelectionProcess class | |||
| The SelectionProcess class contains the configuration parameters of a | The SelectionProcess class contains the configuration parameters of a | |||
| Selection Process. A Selection Process is composed of sampling | Selection Process. In the configuration data model, a Selection | |||
| and/or filtering methods as described in | Process implements a Primitive Selector according to | |||
| [I-D.ietf-psamp-sample-tech]. The configuration parameters of an | [I-D.ietf-psamp-protocol]. Standardized PSAMP sampling and filtering | |||
| individual sampling or filtering method are specified in a | methods are described in [I-D.ietf-psamp-sample-tech]. The | |||
| corresponding sampler (Samp*) or filter (Filter*) class. If more | configuration parameters of each method are specified in a | |||
| than one method is specified, the order in the XML document | corresponding sampler (Samp*) or filter (Filter*) class. The | |||
| corresponds to the sequence in which they are applied. If supported | SelectionProcess class contains exactly one of these classes, | |||
| by the monitoring device implementation, the SelectionProcess class | depending on the applied method. If supported by the monitoring | |||
| may set the value of the Information Element selectorId | device implementation, the SelectionProcess class may set the value | |||
| [I-D.ietf-ipfix-info]. In the XML document, each instance of the | of the Information Element selectorId [RFC5102]. | |||
| SelectionProcess class must be assigned a unique value of the "id" | ||||
| attribute, which allows deploying the Selection Process in different | ||||
| Metering Processes. | ||||
| 5.3.1. Sampler Classes | 5.3.1. Sampler Classes | |||
| +----------------+ +----------------+ +----------------+ | +----------------+ +----------------+ +----------------+ | |||
| | SampCountBased | | SampTimeBased | | SampRandOutOfN | | | SampCountBased | | SampTimeBased | | SampRandOutOfN | | |||
| +----------------+ +----------------+ +----------------+ | +----------------+ +----------------+ +----------------+ | |||
| | interval | | interval | | population | | | interval | | interval | | population | | |||
| | spacing | | spacing | | sample | | | spacing | | spacing | | sample | | |||
| +----------------+ +----------------+ +----------------+ | +----------------+ +----------------+ +----------------+ | |||
| skipping to change at page 13, line 31 ¶ | skipping to change at page 12, line 38 ¶ | |||
| Figure 6: Sampler classes | Figure 6: Sampler classes | |||
| The names and semantic of the configuration parameters correspond to | The names and semantic of the configuration parameters correspond to | |||
| the managed objects in the PSAMP MIB module [I-D.ietf-psamp-mib]. | the managed objects in the PSAMP MIB module [I-D.ietf-psamp-mib]. | |||
| 5.3.2. Filter Classes | 5.3.2. Filter Classes | |||
| +----------------+ +----------------+ +----------------+ | +----------------+ +----------------+ +----------------+ | |||
| | FilterMatch | | FilterHash | | FilterRState | | | FilterMatch | | FilterHash | | FilterRState | | |||
| +----------------+ +----------------+ +----------------+ | +----------------+ +----------------+ +----------------+ | |||
| | infoElementId | | addrType | | function | | | fieldId | | addrType | | function | | |||
| | startValue | | headerBits | | negate | | | startValue | | headerBits | | negate | | |||
| | stopValue | | payloadBytes | | ifIndex | | | stopValue | | payloadBytes | | ifIndex | | |||
| | mask | | payloadBits | | startAS | | | mask | | payloadBits | | startAS | | |||
| | | | function | | stopAS | | | | | function | | stopAS | | |||
| | | | inputBits | | vendorFunc | | | | | inputBits | | vendorFunc | | |||
| | | | outputBits | | | | | | | outputBits | | | | |||
| | | | outputMask | | | | | | | outputMask | | | | |||
| | | | selection | | | | | | | selection | | | | |||
| +----------------+ +----------------+ +----------------+ | +----------------+ +----------------+ +----------------+ | |||
| Figure 7: Filter classes | Figure 7: Filter classes | |||
| The names and semantic of the configuration parameters correspond to | The names and semantic of the configuration parameters correspond to | |||
| the managed objects in the PSAMP MIB module [I-D.ietf-psamp-mib]. | the managed objects in the PSAMP MIB module [I-D.ietf-psamp-mib]. | |||
| 5.4. CacheParameters Class | 5.4. Cache Class | |||
| +-----------------+ | +-----------------+ | |||
| | CacheParameters | | | Cache | | |||
| +-----------------+ 1 +------------------+ | +-----------------+ 1 +------------------+ | |||
| | cacheType |<>------| Template | | | [name] |<>------| Template | | |||
| | cacheSize | +------------------+ | | cacheType | +------------------+ | |||
| | activeTimeout | | | cacheSize | | |||
| | idleTimeout | 0..* +------------------+ | | activeTimeout | 0..* +------------------+ | |||
| | |------->| ExportingProcess | | | idleTimeout |------->| ExportingProcess | | |||
| +-----------------+ +------------------+ | +-----------------+ +------------------+ | |||
| Figure 8: CacheParameters class | Figure 8: Cache class | |||
| The CacheParameters class contains the configuration parameters of a | The Cache class contains the configuration parameters of a record | |||
| record cache. The configuration parameters of the CacheParameters | cache. The configuration parameters of the Cache class are as | |||
| class are as follows: | follows: | |||
| o cacheType: "normal", "immediate", or "permanent". | o cacheType: "normal", "immediate", or "permanent". | |||
| o cacheSize: Maximum number of records in the cache. | o cacheSize: maximum number of records in the cache. | |||
| o activeTimeout: Timeout after which an active Flow is timed out | o activeTimeout: timeout after which an active Flow is timed out | |||
| anyway, even if there is still a continuous flow of packets. | anyway even if there is still a continuous flow of packets. | |||
| o idleTimeout: A Flow is considered to be timed out if no packets | o idleTimeout: A Flow is considered to be timed out if no packets | |||
| belonging to the Flow have been observed for the amount of time | belonging to the Flow have been observed for the amount of time | |||
| specified by this parameter. | specified by this parameter. | |||
| The CacheParameters class contains a Template definition which | The Cache class contains a Template definition which specifies the | |||
| specifies the record format. Furthermore, it may refer to one or | record format. Furthermore, it may refer to one or multiple | |||
| multiple instances of the ExportingProcess class, specifying the | instances of the ExportingProcess class, specifying the export | |||
| export parameters and destinations. In the XML document, each | parameters and destinations. | |||
| instance of the CacheParameters class must be assigned a unique value | ||||
| of the "id" attribute, which allows using the same record cache in | ||||
| different Metering Processes. | ||||
| 5.4.1. Template Class | 5.4.1. Template Class | |||
| +------------+ | +------------+ | |||
| | Template | | | Template | | |||
| +------------+ 0..* +------------------+ | +------------+ 0..* +------------------+ | |||
| | templateId |<>------| FlowKeyField | | | templateId |<>------| Field | | |||
| | | +------------------+ | ||||
| | | | ieId | | ||||
| | | | ieName | | ||||
| | | | length | | ||||
| | | | enterpriseNumber | | ||||
| | | +------------------+ | ||||
| | | | ||||
| | | 0..* +------------------+ | ||||
| | |<>------| NonFlowKeyField | | ||||
| | | +------------------+ | | | +------------------+ | |||
| | | | ieId | | | | | [name] | | |||
| | | | ieName | | | | | ieId/ieName | | |||
| | | | length | | | | | ieLength | | |||
| | | | enterpriseNumber | | | | | enterpriseNumber | | |||
| | | | isFlowKey | | ||||
| +------------+ +------------------+ | +------------+ +------------------+ | |||
| Figure 9: Template class | Figure 9: Template class | |||
| The Template class specifies the Flow Key fields and non-Flow Key | The Template class specifies the fields of a Template using the Field | |||
| fields of a Template using the FlowKeyField class and the | class. The configuration parameters of the Template class and the | |||
| NonFlowKeyField class respectively. The configuration parameters of | Field class are as follows: | |||
| the Template class, the FlowKeyField class, and the NonFlowKeyField | ||||
| class are as follows: | ||||
| o templateId: Optional parameter which allows specifying a Template | o templateId: This is an optional parameter which allows specifying | |||
| ID value for the Template. As specified in the IPFIX protocol | a Template ID value for the Template. As specified in the IPFIX | |||
| [I-D.ietf-ipfix-protocol], the Template ID must be locally unique | protocol [RFC5101], the Template ID must be locally unique per | |||
| per Observation Domain and Transport Session, which restricts the | Observation Domain and Transport Session, which restricts the | |||
| usage of identical values for multiple Template definitions within | usage of identical values for multiple Template definitions within | |||
| the same monitoring device configuration. If this parameter is | the same monitoring device configuration. If this parameter is | |||
| omitted, the Template ID will be assigned automatically by the | omitted, the Template ID will be assigned automatically by the | |||
| monitoring device. | monitoring device. | |||
| o ieId, ieName, length, enterpriseNumber: Identifier, name, length, | o ieId, ieName, ieLength, enterpriseNumber: These parameters specify | |||
| and enterprise number of an Information Element. At least, ieId | a template field by identifier, name, length, and enterprise | |||
| or IeName must be specified. If length is not specified, the | number of an Information Element. Either ieId or ieName must be | |||
| default length for the Information Element is used. | specified. ieLength can be omitted if a default length exists of | |||
| enterpriseNumber must only be inserted for enterprise-specific | the specified Information Element. enterpriseNumber must only be | |||
| Information Elements. | inserted for enterprise-specific Information Elements. | |||
| o isFlowKey: If present, this field is a Flow Key. | ||||
| The order of the fields in the XML document corresponds to the order | ||||
| in the Template. | ||||
| 5.5. ExportingProcess Class | 5.5. ExportingProcess Class | |||
| +--------------------+ | +--------------------+ | |||
| | ExportingProcess | | | ExportingProcess | | |||
| +--------------------+ 0..* +-------------+ | +--------------------+ 0..* +-------------+ | |||
| | exportingProcessId |<>------| Destination | | | [name] |<>------| Destination | | |||
| +--------------------+ +-------------+ | | exportingProcessId | +-------------+ | |||
| +--------------------+ | ||||
| Figure 10: ExportingProcess class | Figure 10: ExportingProcess class | |||
| The ExportingProcess class specifies a list of destinations to which | The ExportingProcess class specifies a list of destinations to which | |||
| the measurement data are exported. If supported by the monitoring | the measurement data are exported. If supported by the monitoring | |||
| device implementation, the ExportingProcess class may set the value | device implementation, the ExportingProcess class may set the value | |||
| of the Information Element exportingProcessId [I-D.ietf-ipfix-info]. | of the Information Element exportingProcessId [RFC5102]. | |||
| In the XML document, each instance of the ExportingProcess class must | ||||
| be assigned a unique value of the "id" attribute, which allows | ||||
| referring to the same Exporting Process from different instances of | ||||
| the CacheParameters class. | ||||
| 5.5.1. Destination Class | 5.5.1. Destination Class | |||
| +-----------------+ | +-----------------+ | |||
| | Destination | | | Destination | | |||
| +-----------------+ 1 +-----------------------+ | +-----------------+ 1 +-----------------------+ | |||
| | type |<>------| SctpExport/UdpExport/ | | | [name] |<>------| SctpExport/UdpExport/ | | |||
| | | | TcpExport/FileExport | | | type | | TcpExport/FileExport | | |||
| | | +-----------------------+ | | | +-----------------------+ | |||
| | | | | | | |||
| | | 0..* +-----------------------+ | | | 0..* +-----------------------+ | |||
| | |<>------| Option | | | |<>------| Option | | |||
| +-----------------+ +-----------------------+ | +-----------------+ +-----------------------+ | |||
| Figure 11: Destination class | Figure 11: Destination class | |||
| The Destination class specifies one export destination of an | The Destination class specifies one export destination of an | |||
| Exporting Process. The type parameter determines the Transport | Exporting Process. The type parameter determines the Transport | |||
| Session type (primary, secondary, or load balancing) and corresponds | Session type (primary, secondary, duplicate, load balancing, or | |||
| to the ipfixTransportSessionGroupMemberType object in | unused) and corresponds to the ipfixTransportSessionGroupMemberType | |||
| [I-D.ietf-ipfix-mib]. The Destination class contains further | object in [I-D.ietf-ipfix-mib]. The Destination class contains | |||
| configuration parameters that are specific to the transport protocol | further configuration parameters that are specific to the transport | |||
| used (SCTP, UDP, or TCP). It is also possible to export the | protocol used (SCTP, UDP, or TCP). It is also possible to export the | |||
| measurement data to a file as proposed in [I-D.trammell-ipfix-file]. | measurement data to a file as proposed in [I-D.ietf-ipfix-file]. | |||
| Optionally, the ExportingProcess class specifies the report of | Optionally, the ExportingProcess class specifies the report of | |||
| additional information with Option Templates, using the Option class. | additional information with Option Templates, using the Option class. | |||
| 5.5.2. Export Parameters Classes | 5.5.2. Export Parameters Classes | |||
| +--------------------------+ +--------------------------+ | +--------------------------+ +--------------------------+ | |||
| | SctpExport | | TcpExport | | | SctpExport | | TcpExport | | |||
| +--------------------------+ +--------------------------+ | +--------------------------+ +--------------------------+ | |||
| | ipAddressType | | ipAddressType | | ||||
| | destinationIpAddress | | destinationIpAddress | | | destinationIpAddress | | destinationIpAddress | | |||
| | destinationTransportPort | | destinationTransportPort | | | destinationTransportPort | | destinationTransportPort | | |||
| | reliability | | | | | sourceIpAddress* | | | | |||
| | timedReliability | | | | ||||
| +--------------------------+ +--------------------------+ | +--------------------------+ +--------------------------+ | |||
| +------------------------------+ +-------------+ | +------------------------------+ +-------------+ | |||
| | UdpExport | | FileExport | | | UdpExport | | FileExport | | |||
| +------------------------------+ +-------------+ | +------------------------------+ +-------------+ | |||
| | ipAddressType | | uri | | | destinationIpAddress | | uri | | |||
| | destinationIpAddress | +-------------+ | | destinationTransportPort | +-------------+ | |||
| | destinationTransportPort | | ||||
| | sourceIpAddress | | | sourceIpAddress | | |||
| | templateRefreshTimeout | | | templateRefreshTimeout | | |||
| | templateRefreshPacket | | | templateRefreshPacket | | |||
| | optionTemplateRefreshTimeout | | | optionTemplateRefreshTimeout | | |||
| | optionTemplateRefreshPacket | | | optionTemplateRefreshPacket | | |||
| +------------------------------+ | +------------------------------+ | |||
| Figure 12: Export parameters classes | Figure 12: Export parameters classes | |||
| The configuration parameters of the export parameters classes are: | The configuration parameters of the export parameters classes are: | |||
| o ipAddressType, destinationIpAddress, destinationTransportPort: IP | o destinationIpAddress, destinationTransportPort: destination IP | |||
| address type, destination IP address, and destination transport to | address and destination transport to be used for export with SCTP, | |||
| be used for export with SCTP, UDP, or TCP. | UDP, or TCP. | |||
| o reliability: Reliability level when using SCTP as transport | o timedReliability: lifetime until an IPFIX Message is "abandoned" | |||
| protocol. | due to the timed reliability mechanism of PR-SCTP [RFC3758]. | |||
| o sourceIpAddress: Source IP address when using UDP as transport | o sourceIpAddress: In the case of UdpExport, this optional parameter | |||
| protocol. If this parameter is omitted, the address assigned to | may appear once to set the source IP address. If this parameter | |||
| the outgoing interface is used. | is omitted, the address assigned to the outgoing interface is | |||
| used. | ||||
| In the case of SctpExport, this optional parameter may appear | ||||
| multiple times to specify the list of eligible local IP addresses | ||||
| of the SCTP association [RFC4960]. If omitted, all locally | ||||
| assigned IP addresses are used by the SCTP endpoint. | ||||
| o templateRefreshTimeout, templateRefreshPacket, | o templateRefreshTimeout, templateRefreshPacket, | |||
| optionTemplateRefreshTimeout, optionTemplateRefreshPacket: | optionTemplateRefreshTimeout, optionTemplateRefreshPacket: | |||
| Template refresh parameters when using UDP as transport protocol. | Template refresh parameters when using UDP as transport protocol. | |||
| o uri: File name and location encoded as URI if the measurement data | o uri: file name and location encoded as URI if the measurement data | |||
| is exported to a file. | is exported to a file. | |||
| 5.5.3. Option Class | 5.5.3. Option Class | |||
| +-----------+ | +-----------+ | |||
| | Option | | | Option | | |||
| +-----------+ 0..1 +----------------+ | +-----------+ 0..1 +----------------+ | |||
| | type |<>------| OptionTemplate | | | [name] |<>------| OptionTemplate | | |||
| | timeout | +----------------+ | | type | +----------------+ | |||
| | timeout | | ||||
| +-----------+ | +-----------+ | |||
| Figure 13: Option class | Figure 13: Option class | |||
| The Option class defines the type of additional information to be | The Option class defines the type of additional information to be | |||
| reported, such as statistics, flow keys, sampling and filtering | reported, such as statistics, flow keys, sampling and filtering | |||
| parameters etc. [I-D.ietf-ipfix-protocol] and | parameters etc. [RFC5101] and [I-D.ietf-psamp-protocol] specify | |||
| [I-D.ietf-psamp-protocol] specify several types of reporting | several types of reporting information which may be exported. The | |||
| information which may be exported. The type can be one of the | type can be one of the following: | |||
| following: | meteringStatistics: export of Metering Process statistics using | |||
| metering-statistics: Export of Metering Process statistics using | the Metering Process Statistics Option Template [RFC5101]. | |||
| the Metering Process Statistics Option Template | meteringReliability: export of Metering Process reliability | |||
| [I-D.ietf-ipfix-protocol]. | ||||
| metering-reliability: Export of Metering Process reliability | ||||
| statistics using the Metering Process Reliability Statistics | statistics using the Metering Process Reliability Statistics | |||
| Option Template [I-D.ietf-ipfix-protocol]. | Option Template [RFC5101]. | |||
| exporting-reliability: Export of Exporting Process reliability | exportingReliability: export of Exporting Process reliability | |||
| statistics using the Exporting Process Reliability Statistics | statistics using the Exporting Process Reliability Statistics | |||
| Option Template [I-D.ietf-ipfix-protocol]. | Option Template [RFC5101]. | |||
| flow-keys: Export of the Flow Key specification using the Flow | flowKeys: export of the Flow Key specification using the Flow Keys | |||
| Keys Option Template [I-D.ietf-ipfix-protocol]. | Option Template [RFC5101]. | |||
| selection-sequence: Export of the Selection Sequence Report | selectionSequence: export of Selection Sequence and Selector | |||
| Interpretation [I-D.ietf-psamp-protocol]. | Report Interpretation [I-D.ietf-psamp-protocol]. | |||
| selector-reports: Export of the Selector Report Interpretation | selectionStatistics: export of Selection Sequence Statistics | |||
| Report Interpretation [I-D.ietf-psamp-protocol]. | ||||
| accuracy: export of Accuracy Report Interpretation | ||||
| [I-D.ietf-psamp-protocol]. | [I-D.ietf-psamp-protocol]. | |||
| reducing-redundancy: Export of common properties according to | reducingRedundancy: export of common properties according to | |||
| [I-D.ietf-ipfix-reducing-redundancy]. | [I-D.ietf-ipfix-reducing-redundancy]. | |||
| The Option Template can be specified manually, using the | The Option Template can be specified manually, using the | |||
| OptionTemplate class. If no Option Template is specified, the | OptionTemplate class. If no Option Template is specified, the | |||
| Exporter chooses a template definition automatically according to the | Exporter chooses a template definition automatically according to the | |||
| available information. | option type and available option data. | |||
| The timeout parameter specifies the reporting interval. If the | The timeout parameter specifies the reporting interval. If the | |||
| reporting timeout is zero, the corresponding reporting information | reporting timeout is zero, the corresponding reporting information | |||
| will be exported only once. Otherwise, the information is exported | will be exported only once. Otherwise, the information is exported | |||
| periodically. | periodically. | |||
| 5.5.4. OptionTemplate Class | 5.5.4. OptionTemplate Class | |||
| +----------------+ | +----------------+ | |||
| | OptionTemplate | | | OptionTemplate | | |||
| +----------------+ 0..* +------------------+ | +----------------+ 0..* +------------------+ | |||
| | templateId |<>------| ScopeField | | | templateId |<>------| OptionField | | |||
| | | +------------------+ | ||||
| | | | ieId | | ||||
| | | | ieName | | ||||
| | | | length | | ||||
| | | | enterpriseNumber | | ||||
| | | +------------------+ | ||||
| | | | ||||
| | | 0..* +------------------+ | ||||
| | |<>------| NonScopeField | | ||||
| | | +------------------+ | | | +------------------+ | |||
| | | | [name] | | ||||
| | | | ieId | | | | | ieId | | |||
| | | | ieName | | | | | ieName | | |||
| | | | length | | | | | ieLength | | |||
| | | | enterpriseNumber | | | | | enterpriseNumber | | |||
| | | | isScope | | ||||
| +----------------+ +------------------+ | +----------------+ +------------------+ | |||
| Figure 14: OptionTemplate class | Figure 14: OptionTemplate class | |||
| The Option Template class specifies the scope fields and non-scope | The Option Template class specifies the fields of an Option Template | |||
| fields of an Option Template using the ScopeField class and the | using the OptionField class. The configuration parameters are the | |||
| NonScopeField class respectively. The configuration parameters are | same as for the Template and Field classes (see Section 5.4.1). If | |||
| the same as for the Template, FlowKeyField, and NonFlowKeyField | the parameter isScope is present, the field is a scope field. | |||
| classes (see Section 5.4.1). | ||||
| 5.6. CollectingProcess Class and Receiver Class | 5.6. CollectingProcess Class and Receiver Class | |||
| +---------------------+ | ||||
| | CollectingProcess | | +-------------------+ | |||
| +---------------------+ | | CollectingProcess | | |||
| | | 1..* +-------------------------+ | +-------------------+ | |||
| | |<>--------| Receiver | | | [name] | 1..* +------------------+ | |||
| | | +-------------------------+ | | |<>-------| Receiver | | |||
| | | | ipAddressType | | | | +------------------+ 1 +---------------+ | |||
| | | | ipAddress | | | | | [name] |<>----| SctpReceiver/ | | |||
| | | | transportProtocol | | | | +------------------+ | UdpReceiver/ | | |||
| | | | transportPort | | | | | TcpReceiver/ | | |||
| | | | defaultTemplateLifetime | | | | 0..* +------------------+ | FileImport | | |||
| | | +-------------------------+ | | |<>-------| MeteringProcess | +---------------+ | |||
| | | | | | +------------------+ | |||
| | | 0..* +-----------------+ | | | | |||
| | |<>--------| MeteringProcess | | | | 0..* +------------------+ | |||
| +---------------------+ +-----------------+ | | |-------->| ExportingProcess | | |||
| +-------------------+ +------------------+ | ||||
| +----------------+ +----------------+ | ||||
| | SctpReceiver | | TcpReceiver | | ||||
| +----------------+ +----------------+ | ||||
| | ipAddress* | | ipAddress | | ||||
| | transportPort | | transportPort | | ||||
| +----------------+ +----------------+ | ||||
| +-------------------------+ +------------+ | ||||
| | UdpReceiver | | FileImport | | ||||
| +-------------------------+ +------------+ | ||||
| | ipAddress | | uri | | ||||
| | transportPort | +------------+ | ||||
| | defaultTemplateLifetime | | ||||
| +-------------------------+ | ||||
| Figure 15: CollectingProcess class and Receiver Class | Figure 15: CollectingProcess class and Receiver Class | |||
| The CollectingProcess class contains one or multiple receivers | The CollectingProcess class contains one or multiple receivers | |||
| specified with the Receiver class. Each receiver configures a port | specified with the Receiver class. The Receiver class contains | |||
| on the monitoring device to receive measurement data exported by | further configuration parameters that are specific to the transport | |||
| other monitoring devices using the IPFIX Protocol and/or PSAMP | protocol used (SCTP, UDP, or TCP). Instead of receiving data from | |||
| Protocol. The CollectingProcess class and the Receiver class contain | the network, it is possible to import it from a file to which it as | |||
| the following parameters: | been exported as proposed in [I-D.ietf-ipfix-file]. The | |||
| CollectingProcess class and the SctpReceiver, UdpReceiver, | ||||
| TcpReceiver, and FileImport classes contain the following parameters: | ||||
| o ipAddressType, ipAddress, transportProtocol, transportPort: IP | o ipAddress, transportPort: IP address and port number of the | |||
| address type, IP address, transport protocol and port number of | receiving port. If ipAddress is omitted, the Collecting Process | |||
| the receiving port. | receives data sent to any local IP address. In the case of | |||
| o defaultTemplateLifetime: Default template lifetime if UDP is used | SctpReceiver, multiple IP addresses can be specified as a list of | |||
| eligible local IP addresses to be used for the local SCTP endpoint | ||||
| [RFC4960]. | ||||
| o defaultTemplateLifetime: default template lifetime if UDP is used | ||||
| as transport protocol, ignored otherwise. | as transport protocol, ignored otherwise. | |||
| o uri: file name and location encoded as URI if the measurement data | ||||
| is imported from a file. | ||||
| If the monitoring device is a concentrator as described in | If the monitoring device is an IPFIX mediator or concentrator as | |||
| described in [I-D.kobayashi-ipfix-mediator-model] and | ||||
| [I-D.dressler-ipfix-aggregation], the CollectingProcess class | [I-D.dressler-ipfix-aggregation], the CollectingProcess class | |||
| specifies one or multiple Metering Processes. | specifies one or multiple Metering Processes. | |||
| 6. XML Schema Specification | The CollectingProcess class may refer to one or multiple instances of | |||
| the ExportingProcess class in order to export received records | ||||
| without modifications to a file or another collector. | ||||
| XML Schema Definition of the configuration data model is specified as | 6. YANG Module of the IPFIX/PSAMP Configuration Data Model | |||
| follows: | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | The YANG module specification of the configuration data model is | |||
| <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" | specified as follows: | |||
| targetNamespace="urn:ietf:params:xml:ns:ipfix-psamp-config" | ||||
| xmlns="urn:ietf:params:xml:ns:ipfix-psamp-config" | ||||
| elementFormDefault="qualified" | ||||
| version="3.0"> | ||||
| <xsd:annotation> | module ipfix-psamp { | |||
| <xsd:documentation xml:lang="en"> | namespace "urn:ietf:params:xml:ns:ipfix-psamp-config"; | |||
| IPFIX/PSAMP Configuration Data Model Version 3.0 | prefix ipfix; | |||
| Changes in version 3.0: | ||||
| - Linecard and Interface classes now have direction element | ||||
| - sec => s (SI unit) | ||||
| - optional description attribute for annotations | ||||
| - simplifications in ExportingProcess class | ||||
| - new parameters: observationPointId, meteringProcessId, | ||||
| selectorId, exportingProcessId (note that devices do not | ||||
| have to support the configuration of these parameters) | ||||
| - new FileExport class for exporting into a file | ||||
| - Reporting class renamed Option Class | ||||
| Changes in version 2.0: | ||||
| - new structure without next pointers | ||||
| - packet reporting and flow metering replaced by record cache | ||||
| - added reporting with options | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <!-- Generic Type: Information Element --> | import yang-types { prefix yang; } | |||
| <xsd:complexType name="infoElement_type"> | import inet-types { prefix inet; } | |||
| <xsd:annotation> | import IF-MIB { prefix if; } | |||
| <xsd:documentation xml:lang="en"> | import ENTITY-MIB { prefix ent; } | |||
| This type is used to specify an Information Element in | ||||
| filters and templates. | ||||
| - Instead of ieId, ieName can be used as specified | ||||
| ipfix-info. | ||||
| - If length is omitted, the default length is used. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="enterpriseNumber" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="ieName" type="xsd:string" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="ieId" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="length" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <!-- Generic Type: Reference --> | organization "IPFIX WG"; | |||
| <xsd:complexType name="reference_type"> | contact "muenz@informatik.uni-tuebingen.de"; | |||
| <xsd:annotation> | ||||
| <xsd:documentation xml:lang="en"> | ||||
| This type is used to specify a reference to a Selection Process, | ||||
| record cache, or Exporting Process identified by the id attribute. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:attribute name="id" type="xsd:IDREF" use="required" /> | ||||
| </xsd:complexType> | ||||
| <!-- Generic Type: Time --> | description "IPFIX/PSAMP Configuration Data Model"; | |||
| <xsd:complexType name="time_type"> | ||||
| <xsd:annotation> | ||||
| <xsd:documentation xml:lang="en"> | ||||
| This type is used for defaultTemplateLifetime, activeTimeout | ||||
| idleTimeout, templateRefreshTimemout, and | ||||
| optionTemplateRefreshTimeout. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:simpleContent> | ||||
| <xsd:extension base="xsd:unsignedInt"> | ||||
| <xsd:attribute name="unit" use="optional" default="s"> | ||||
| <xsd:simpleType> | ||||
| <xsd:restriction base="xsd:string"> | ||||
| <xsd:enumeration value="min" /> | ||||
| <xsd:enumeration value="s" /> | ||||
| <xsd:enumeration value="ms" /> | ||||
| <xsd:enumeration value="us" /> | ||||
| </xsd:restriction> | ||||
| </xsd:simpleType> | ||||
| </xsd:attribute> | ||||
| </xsd:extension> | ||||
| </xsd:simpleContent> | ||||
| </xsd:complexType> | ||||
| <!-- Generic Type: Direction --> | revision 2008-02-20 { | |||
| <xsd:simpleType name="direction_type"> | description "Version of draft-muenz-ipfix-configuration-04 | |||
| <xsd:annotation> | Changes in -04: | |||
| <xsd:documentation xml:lang="en"> | - first version in yang | |||
| This type is used in Interface class and Linecard class. | - Collecting Process can be configured for file import | |||
| </xsd:documentation> | - Collecting Process can be configured to export received | |||
| </xsd:annotation> | records without modifications (e.g., to file or other collectors) | |||
| <xsd:restriction base="xsd:string"> | - SCTP export parameter timedReliability | |||
| <xsd:enumeration value="ingress" /> | - parameter for eligible local IP addresses for SCTP endpoint | |||
| <xsd:enumeration value="egress" /> | - all tags names uncapitalized, types names etc. capitalized | |||
| <xsd:enumeration value="both" /> | - CacheParameters renamed as Cache | |||
| </xsd:restriction> | - description attribute removed | |||
| </xsd:simpleType> | Changes in -03: | |||
| <!-- Generic Type: Description --> | - Linecard and Interface classes now have direction element | |||
| <xsd:complexType name="description_type"> | - sec => s (SI unit) | |||
| <xsd:annotation> | - optional description attribute for annotations | |||
| <xsd:documentation xml:lang="en"> | - simplifications in ExportingProcess class | |||
| This type provides an description attribute for optional | - new parameters: observationPointId, meteringProcessId, | |||
| annotations for Observation Points, Selection Processes, | selectorId, exportingProcessId (note that devices do not | |||
| Cache Parameters, Exporting Processes, and Collecting Processes. | have to support the configuration of these parameters) | |||
| The value of this attribute has no effect on the device | - new FileExport class for exporting into a file | |||
| configuration. | - Reporting class renamed Option Class | |||
| </xsd:documentation> | Changes in -02: | |||
| </xsd:annotation> | - new structure without next pointers | |||
| <xsd:attribute name="description" type="xsd:string" use="optional" /> | - packet reporting and flow metering replaced by record cache | |||
| </xsd:complexType> | - added reporting with options"; | |||
| } | ||||
| <!-- Observation Point --> | grouping InformationElement { | |||
| <xsd:complexType name="observationPoint_type"> | description "Parameters of an Information Element."; | |||
| <xsd:annotation> | ||||
| <xsd:documentation xml:lang="en"> | ||||
| This type identifies an Observation Point. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:complexContent> | ||||
| <xsd:extension base="description_type"> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="observationPointId" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="observationDomainId" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:choice> | ||||
| <xsd:element name="Interface" type="interface_type" /> | ||||
| <xsd:element name="Linecard" type="linecard_type" /> | ||||
| </xsd:choice> | ||||
| <xsd:element name="MeteringProcess" type="meteringProcess_type" | ||||
| minOccurs="0" maxOccurs="unbounded" /> | ||||
| </xsd:sequence> | ||||
| </xsd:extension> | ||||
| </xsd:complexContent> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="interface_type"> | leaf ieEnterpriseNumber { | |||
| <xsd:sequence> | description "Omitted in the case of an IETF specified Information | |||
| <xsd:choice> | Elements."; | |||
| <xsd:element name="ifIndex" type="xsd:unsignedInt" | type uint32; | |||
| minOccurs="0" /> | } | |||
| <xsd:element name="ifName" type="xsd:string" | ||||
| minOccurs="0" /> | ||||
| </xsd:choice> | ||||
| <xsd:element name="direction" type="direction_type" | ||||
| minOccurs="0" default="both" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="linecard_type"> | choice NameOrId { | |||
| <xsd:sequence> | mandatory true; | |||
| <xsd:choice> | leaf ieName { | |||
| <xsd:element name="entPhysicalIndex" type="xsd:unsignedInt" | type string; | |||
| minOccurs="0" /> | } | |||
| <xsd:element name="entPhysicalName" type="xsd:string" | leaf ieId { | |||
| minOccurs="0" /> | type uint16; | |||
| </xsd:choice> | } | |||
| <xsd:element name="direction" type="direction_type" | } | |||
| minOccurs="0" default="both" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <!-- Metering Process --> | leaf ieLength { | |||
| <xsd:complexType name="meteringProcess_type"> | description "Length can be omitted if a default length exists for | |||
| <xsd:annotation> | the specified Information Element."; | |||
| <xsd:documentation xml:lang="en"> | type uint16; | |||
| This type is used to specify a Metering Process. | } | |||
| There must be at least a reference to a record cache. | } | |||
| If specified, Selection Processes are applied in the order of | ||||
| their appearance. If no Selection Processes are specified, all | ||||
| observed packets are selected. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="meteringProcessId" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="SelectionProcess" type="reference_type" | ||||
| minOccurs="0" maxOccurs="unbounded" /> | ||||
| <xsd:element name="CacheParameters" type="reference_type" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <!-- Selection Process --> | typedef Direction { | |||
| <xsd:complexType name="selectionProcess_type"> | description "Direction of packets going through an interface or | |||
| <xsd:annotation> | linecard."; | |||
| <xsd:documentation xml:lang="en"> | ||||
| This type is used to specify a Selection Process. | ||||
| If more than one selection method is specified, they are | ||||
| applied in the order of their appearance. | ||||
| See PSAMP-MIB for details about the selection methods and their | ||||
| parameters. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:complexContent> | ||||
| <xsd:extension base="description_type"> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="selectorId" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:choice minOccurs="0" maxOccurs="unbounded"> | ||||
| <xsd:element name="SampCountBased" type="sampCountBased_type" /> | ||||
| <xsd:element name="SampTimeBased" type="sampTimeBased_type" /> | ||||
| <xsd:element name="SampRandOutOfN" type="sampRandOutOfN_type" /> | ||||
| <xsd:element name="SampUniProb" type="sampUniProb_type" /> | ||||
| <xsd:element name="SampNonUniProb" type="sampNonUniProb_type" /> | ||||
| <xsd:element name="SampFlowState" type="sampFlowState_type" /> | ||||
| <xsd:element name="FilterMatch" type="filterMatch_type" /> | ||||
| <xsd:element name="FilterHash" type="filterHash_type" /> | ||||
| <xsd:element name="FilterRState" type="filterRState_type" /> | ||||
| </xsd:choice> | ||||
| </xsd:sequence> | ||||
| <xsd:attribute name="id" type="xsd:ID" use="required" /> | ||||
| </xsd:extension> | ||||
| </xsd:complexContent> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="sampCountBased_type"> | type enumeration { | |||
| <xsd:sequence> | enum ingress; | |||
| <xsd:element name="interval" type="xsd:unsignedInt" /> | enum egress; | |||
| <xsd:element name="spacing" type="xsd:unsignedInt" /> | enum both; | |||
| </xsd:sequence> | } | |||
| </xsd:complexType> | } | |||
| <xsd:complexType name="sampTimeBased_type"> | grouping Interface { | |||
| <xsd:sequence> | description "Interface as input to Observation Point."; | |||
| <xsd:element name="interval" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="spacing" type="xsd:unsignedInt" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="sampRandOutOfN_type"> | choice IndexOrName { | |||
| <xsd:sequence> | description "Index or name of the interface as stored in the | |||
| <xsd:element name="population" type="xsd:unsignedInt" /> | ifTable of IF-MIB."; | |||
| <xsd:element name="sample" type="xsd:unsignedInt" /> | reference "RFC 1229."; | |||
| </xsd:sequence> | mandatory true; | |||
| </xsd:complexType> | leaf ifIndex { type uint32; } | |||
| leaf ifName { type string; } | ||||
| } | ||||
| <xsd:complexType name="sampUniProb_type"> | leaf direction { | |||
| <xsd:sequence> | description "Direction of packets. If not applicable (e.g., in the | |||
| <xsd:element name="probability" type="xsd:unsignedInt"> | case of a sniffing interface in promiscuous mode), this parameter | |||
| <xsd:annotation> | is omitted"; | |||
| <xsd:documentation xml:lang="en"> | type Direction; | |||
| The given value must be divided by 4294967295 | } | |||
| </xsd:documentation> | } | |||
| </xsd:annotation> | ||||
| </xsd:element> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="sampNonUniProb_type" mixed="true"> | grouping Linecard { | |||
| <xsd:sequence> | description "Linecard as input to Observation Point."; | |||
| <xsd:element name="function" type="xsd:string" /> | ||||
| <xsd:element name="funcParam" type="xsd:string" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="sampFlowState_type" mixed="true"> | choice IndexOrName { | |||
| <xsd:sequence> | description "Index or name of the linecard as stored in the | |||
| <xsd:element name="function" type="xsd:string" /> | entPhysicalTable of ENTITY-MIB."; | |||
| <xsd:element name="funcParam" type="xsd:string" /> | reference "RFC 4133."; | |||
| </xsd:sequence> | mandatory true; | |||
| </xsd:complexType> | leaf entPhysicalIndex { type uint32; } | |||
| leaf entPhysicalName { type string; } | ||||
| } | ||||
| <xsd:complexType name="filterMatch_type"> | leaf direction { | |||
| <xsd:sequence> | description "Direction of packets. If not applicable (e.g., in the | |||
| <xsd:element name="infoElementId" type="xsd:unsignedInt" /> | case of a sniffing interface in promiscuous mode), this parameter | |||
| <xsd:element name="startValue" type="xsd:unsignedInt" /> | is omitted"; | |||
| <xsd:element name="stopValue" type="xsd:unsignedInt" /> | type Direction; | |||
| <xsd:element name="mask" type="xsd:unsignedInt" | } | |||
| minOccurs="0" /> | } | |||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="filterHash_type"> | grouping MeteringProcess { | |||
| <xsd:sequence> | description "Selection Processes and Record Cache of a Metering | |||
| <xsd:element name="addrType" type="xsd:unsignedInt" /> | Process."; | |||
| <xsd:element name="headerBits" type="xsd:string" /> | ||||
| <xsd:element name="payloadBytes" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="payloadBits" type="xsd:string" /> | ||||
| <xsd:element name="function" type="xsd:string" /> | ||||
| <xsd:element name="funcParam" type="xsd:string" /> | ||||
| <xsd:element name="inputBits" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="outputBits" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="outputMask" type="xsd:string" /> | ||||
| <xsd:element name="selection" type="xsd:string" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="filterRState_type"> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="function" type="xsd:string" /> | ||||
| <xsd:element name="negate" type="xsd:boolean" /> | ||||
| <xsd:element name="ifIndex" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="startAS" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="endAS" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="vendorFunc" type="xsd:string" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <!-- Cache Parameters --> | leaf meteringProcessId { | |||
| <xsd:complexType name="cacheParameters_type"> | description "If omitted, the Metering Process ID is assigned by the | |||
| <xsd:annotation> | monitoring device."; | |||
| <xsd:documentation xml:lang="en"> | type uint32; | |||
| This type specifies the parameters of a record cache. | } | |||
| At least, a Template must be specified. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:complexContent> | ||||
| <xsd:extension base="description_type"> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="cacheType" type="cacheType_type" | ||||
| minOccurs="0" default="normal" /> | ||||
| <xsd:element name="cacheSize" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="activeTimeout" type="time_type" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="idleTimeout" type="time_type" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="Template" type="template_type" /> | ||||
| <xsd:element name="ExportingProcess" type="reference_type" | ||||
| minOccurs="0" maxOccurs="unbounded" /> | ||||
| </xsd:sequence> | ||||
| <xsd:attribute name="id" type="xsd:ID" use="required" /> | ||||
| </xsd:extension> | ||||
| </xsd:complexContent> | ||||
| </xsd:complexType> | ||||
| <xsd:simpleType name="cacheType_type"> | leaf-list selectionProcess { | |||
| <xsd:annotation> | description "Selection Processes are applied in the order of | |||
| <xsd:documentation xml:lang="en"> | their appearance. If no Selection Process is specified, all | |||
| Cache types: | packets are selected."; | |||
| - normal: flow expiration after active and idle timeout | ordered-by user; | |||
| - immediate: expiration after the first packet (PSAMP export) | type keyref { path "/ipfix/selectionProcess/name"; } | |||
| - permanent: flows never expire, periodical export after active timeout | } | |||
| </xsd:documentation> | ||||
| </xsd:annotation> | leaf cache { | |||
| <xsd:restriction base="xsd:string"> | mandatory true; | |||
| <xsd:enumeration value="normal" /> | type keyref { path "/ipfix/cache/name"; } | |||
| <xsd:enumeration value="immediate" /> | } | |||
| <xsd:enumeration value="permanent" /> | } | |||
| </xsd:restriction> | ||||
| </xsd:simpleType> | ||||
| <xsd:complexType name="template_type"> | container ipfix { | |||
| <xsd:annotation> | ||||
| <xsd:documentation xml:lang="en"> | ||||
| This type is used to specify a Template. | ||||
| If templateId is omitted, the Template ID is assigned by the | ||||
| monitoring device. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="templateId" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:choice minOccurs="0" maxOccurs="unbounded" > | ||||
| <xsd:element name="FlowKeyField" type="infoElement_type" /> | ||||
| <xsd:element name="NonFlowKeyField" type="infoElement_type" /> | ||||
| </xsd:choice> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <!-- Exporting Process --> | list collectingProcess { | |||
| <xsd:complexType name="exportingProcess_type"> | description "Parameters of a Collecting Process."; | |||
| <xsd:annotation> | key name; | |||
| <xsd:documentation xml:lang="en"> | ||||
| This type specifies the parameters of an Exporting Process. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:complexContent> | ||||
| <xsd:extension base="description_type"> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="exportingProcessId" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="Destination" type="destination_type" | ||||
| minOccurs="0" maxOccurs="unbounded" /> | ||||
| </xsd:sequence> | ||||
| <xsd:attribute name="id" type="xsd:ID" use="required" /> | ||||
| </xsd:extension> | ||||
| </xsd:complexContent> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="destination_type"> | ||||
| <xsd:annotation> | ||||
| <xsd:documentation xml:lang="en"> | ||||
| This type specifies one destination of an Exporting Process. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="type" type="transportSessionType_type" | ||||
| minOccurs="0" default="primary" /> | ||||
| <xsd:choice> | ||||
| <xsd:element name="SctpExport" type="sctpExport_type" /> | ||||
| <xsd:element name="UdpExport" type="udpExport_type" /> | ||||
| <xsd:element name="TcpExport" type="tcpExport_type" /> | ||||
| <xsd:element name="FileExport" type="fileExport_type" /> | ||||
| </xsd:choice> | ||||
| <xsd:element name="Option" type="option_type" | ||||
| minOccurs="0" maxOccurs="unbounded" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:simpleType name="transportSessionType_type"> | leaf name { | |||
| <xsd:annotation> | description "Arbitrary but unique name of the Collecting Process."; | |||
| <xsd:documentation xml:lang="en"> | type string; | |||
| Transport Session types according to IPFIX-MIB. | } | |||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:restriction base="xsd:string"> | ||||
| <xsd:enumeration value="primary" /> | ||||
| <xsd:enumeration value="secondary" /> | ||||
| <xsd:enumeration value="loadBalancing" /> | ||||
| <xsd:enumeration value="unused" /> | ||||
| </xsd:restriction> | ||||
| </xsd:simpleType> | ||||
| <xsd:complexType name="sctpExport_type"> | list receiver { | |||
| <xsd:annotation> | description "Receiver parameters."; | |||
| <xsd:documentation xml:lang="en"> | key name; | |||
| This type comprises parameters for SCTP export. | ||||
| [TODO: which are SCTP specific parameters?] | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="ipAddressType" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="destinationIpAddress" type="xsd:string" /> | ||||
| <xsd:element name="destinationTransportPort" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="reliability" type="xsd:string" | ||||
| minOccurs="0" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | leaf name { type string; } | |||
| <xsd:complexType name="udpExport_type"> | choice TransportProtocol { | |||
| <xsd:annotation> | mandatory true; | |||
| <xsd:documentation xml:lang="en"> | container sctpReceiver { | |||
| This type comprises parameters for UDP export. | description "SCTP receiver parameters."; | |||
| </xsd:documentation> | reference "RFC 4960."; | |||
| </xsd:annotation> | leaf-list ipAddress { | |||
| <xsd:sequence> | description "List of eligible local IP addresses to be used by | |||
| <xsd:element name="ipAddressType" type="xsd:unsignedInt" /> | the SCTP endpoint. If omitted, all locally assigned IP | |||
| <xsd:element name="destinationIpAddress" type="xsd:string" /> | addresses are used by the SCTP endpoint."; | |||
| <xsd:element name="destinationTransportPort" type="xsd:unsignedInt" /> | type inet:ip-address; | |||
| <xsd:element name="sourceIpAddress" type="xsd:string" | } | |||
| minOccurs="0" /> | leaf transportPort { | |||
| <xsd:element name="templateRefreshTimeout" type="time_type" | mandatory true; | |||
| minOccurs="0" /> | type inet:port-number; | |||
| <xsd:element name="templateRefreshPacket" type="xsd:unsignedInt" | } | |||
| minOccurs="0" /> | } | |||
| <xsd:element name="optionTemplateRefreshTimeout" type="time_type" | container udpReceiver { | |||
| minOccurs="0" /> | description "UDP receiver parameters."; | |||
| <xsd:element name="optionTemplateRefreshPacket" type="xsd:unsignedInt" | leaf ipAddress { | |||
| minOccurs="0" /> | description "If omitted, all locally assigned IP addresses are | |||
| </xsd:sequence> | used by the UDP endpoint."; | |||
| </xsd:complexType> | type inet:ip-address; | |||
| } | ||||
| leaf transportPort { | ||||
| mandatory true; | ||||
| type inet:port-number; | ||||
| } | ||||
| leaf defaultTemplateLifetime { type uint32; } | ||||
| } | ||||
| container tcpReceiver { | ||||
| description "TCP receiver parameters."; | ||||
| leaf ipAddress { | ||||
| description "If omitted, all locally assigned IP addresses are | ||||
| used by the TCP endpoint."; | ||||
| type inet:ip-address; | ||||
| } | ||||
| leaf transportPort { | ||||
| mandatory true; | ||||
| type inet:port-number; | ||||
| } | ||||
| } | ||||
| container fileImport { | ||||
| description "File import parameters."; | ||||
| leaf uri { | ||||
| mandatory true; | ||||
| type yang:uri; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| <xsd:complexType name="tcpExport_type"> | list meteringProcess { | |||
| <xsd:annotation> | description "Metering Processes process received records in parallel. | |||
| <xsd:documentation xml:lang="en"> | Monitoring device acts as IPFIX mediator/concentrator."; | |||
| This type comprises parameters for TCP export. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="ipAddressType" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="destinationIpAddress" type="xsd:string" /> | ||||
| <xsd:element name="destinationTransportPort" type="xsd:unsignedInt" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="fileExport_type"> | key name; | |||
| <xsd:annotation> | ||||
| <xsd:documentation xml:lang="en"> | ||||
| This type comprises parameters for file export. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="uri" type="xsd:string" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="option_type"> | ||||
| <xsd:annotation> | ||||
| <xsd:documentation xml:lang="en"> | ||||
| This type is used to activate reporting option data. | ||||
| The type determines the reported information. The timeout specifies | ||||
| the time interval for exporting the option data. The | ||||
| specification of the Option Template is optional. If no Option | ||||
| Template is defined, the Exporter chooses a template definition | ||||
| according to the available information. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="type" type="optionType_type" /> | ||||
| <xsd:element name="timeout" type="time_type" | ||||
| minOccurs="0" /> | ||||
| <xsd:element name="OptionTemplate" type="optionTemplate_type" | ||||
| minOccurs="0" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <xsd:simpleType name="optionType_type"> | leaf name { | |||
| <xsd:annotation> | description "Arbitrary but unique name of the Monitoring | |||
| <xsd:documentation xml:lang="en"> | Process."; | |||
| Types of optional information to be exported. | type string; | |||
| </xsd:documentation> | } | |||
| </xsd:annotation> | ||||
| <xsd:restriction base="xsd:string"> | ||||
| <xsd:enumeration value="metering-statistics" /> | ||||
| <xsd:enumeration value="metering-reliability" /> | ||||
| <xsd:enumeration value="exporting-reliability" /> | ||||
| <xsd:enumeration value="flow-keys" /> | ||||
| <xsd:enumeration value="selection-sequence" /> | ||||
| <xsd:enumeration value="selector-reports" /> | ||||
| <xsd:enumeration value="reducing-redundancy" /> | ||||
| </xsd:restriction> | ||||
| </xsd:simpleType> | ||||
| <xsd:complexType name="optionTemplate_type"> | uses MeteringProcess; | |||
| <xsd:annotation> | } | |||
| <xsd:documentation xml:lang="en"> | ||||
| This type is used to specify an Option Template. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="templateId" type="xsd:unsignedInt" | ||||
| minOccurs="0" /> | ||||
| <xsd:choice minOccurs="0" maxOccurs="unbounded" > | ||||
| <xsd:element name="ScopeField" type="infoElement_type" /> | ||||
| <xsd:element name="NonScopeField" type="infoElement_type" /> | ||||
| </xsd:choice> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <!-- Collecting Process --> | leaf-list exportingProcess { | |||
| <xsd:complexType name="collectingProcess_type"> | description "Export of received records without any modifications. | |||
| <xsd:annotation> | Records are exported by all Exporting Processes in the list."; | |||
| <xsd:documentation xml:lang="en"> | type keyref { path "/ipfix/exportingProcess/name"; } | |||
| This type comprises the parameter of a Collecting Process. | } | |||
| </xsd:documentation> | } | |||
| </xsd:annotation> | ||||
| <xsd:complexContent> | ||||
| <xsd:extension base="description_type"> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="Receiver" type="receiver_type" | ||||
| minOccurs="1" maxOccurs="unbounded" /> | ||||
| <xsd:element name="MeteringProcess" type="reference_type" | ||||
| minOccurs="0" maxOccurs="unbounded" /> | ||||
| </xsd:sequence> | ||||
| </xsd:extension> | ||||
| </xsd:complexContent> | ||||
| </xsd:complexType> | ||||
| <xsd:complexType name="receiver_type"> | list observationPoint { | |||
| <xsd:annotation> | description "Parameters of an Observation Point."; | |||
| <xsd:documentation xml:lang="en"> | key name; | |||
| This type contains IP address, transport protocol, and port number | ||||
| of an IPFIX collector. defaultTemplateLifetime is only used for UDP. | ||||
| </xsd:documentation> | ||||
| </xsd:annotation> | ||||
| <xsd:sequence> | ||||
| <xsd:element name="ipAddressType" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="ipAddress" type="xsd:string" /> | ||||
| <xsd:element name="transportProtocol" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="transportPort" type="xsd:unsignedInt" /> | ||||
| <xsd:element name="defaultTemplateLifetime" type="time_type" | ||||
| minOccurs="0" /> | ||||
| </xsd:sequence> | ||||
| </xsd:complexType> | ||||
| <!-- Root Element --> | leaf name { | |||
| <xsd:element name="ConfigData"> | description "Arbitrary but unique name of the Observation Point."; | |||
| <xsd:annotation> | type string; | |||
| <xsd:documentation xml:lang="en"> | } | |||
| Root element of the IPFIX/PSAMP configuration data model | ||||
| </xsd:documentation> | leaf observationPointId { | |||
| </xsd:annotation> | description "If omitted, the Observation Point ID is assigned by the | |||
| <xsd:complexType> | monitoring device."; | |||
| <xsd:choice minOccurs="0" maxOccurs="unbounded" > | type uint32; | |||
| <xsd:element name="CollectingProcess" type="collectingProcess_type" /> | } | |||
| <xsd:element name="ObservationPoint" type="observationPoint_type" /> | ||||
| <xsd:element name="SelectionProcess" type="selectionProcess_type" /> | ||||
| <xsd:element name="CacheParameters" type="cacheParameters_type" /> | ||||
| <xsd:element name="ExportingProcess" type="exportingProcess_type" /> | ||||
| </xsd:choice> | ||||
| </xsd:complexType> | ||||
| </xsd:element> | ||||
| </xsd:schema> | leaf observationDomainId { | |||
| description "If omitted, the Observation Domain ID is assigned by the | ||||
| monitoring device."; | ||||
| type uint32; | ||||
| } | ||||
| choice OPType { | ||||
| mandatory true; | ||||
| container interface { uses Interface; } | ||||
| container linecard { uses Linecard; } | ||||
| } | ||||
| list meteringProcess { | ||||
| description "Metering Processes process packets in parallel."; | ||||
| key name; | ||||
| leaf name { | ||||
| description "Arbitrary but unique name of the Monitoring | ||||
| Process."; | ||||
| type string; | ||||
| } | ||||
| uses MeteringProcess; | ||||
| } | ||||
| } | ||||
| list selectionProcess { | ||||
| description "Parameters of a Selection Process (i.e., Primitive | ||||
| Selector)."; | ||||
| key name; | ||||
| leaf name { | ||||
| description "Arbitrary but unique name of the Selection Process."; | ||||
| type string; | ||||
| } | ||||
| leaf selectorId { | ||||
| description "If omitted, the Selector ID is assigned by the | ||||
| monitoring device."; | ||||
| type uint32; | ||||
| } | ||||
| choice Method { | ||||
| description "See PSAMP-MIB for details about the selection methods | ||||
| and their parameters."; | ||||
| reference "draft-ietf-psamp-mib-06."; | ||||
| mandatory true; | ||||
| container sampCountBased { | ||||
| leaf interval { type uint32; } | ||||
| leaf spacing { type uint32; } | ||||
| } | ||||
| container sampTimeBased { | ||||
| leaf interval { type uint32; } | ||||
| leaf spacing { type uint32; } | ||||
| } | ||||
| container sampRandOutOfN { | ||||
| leaf population { type uint32; } | ||||
| leaf sample { type uint32; } | ||||
| } | ||||
| container sampUniProb { | ||||
| leaf probability { | ||||
| description "The given value must be divided by 4294967295."; | ||||
| type uint32; | ||||
| } | ||||
| } | ||||
| container sampNonUniProb { | ||||
| description "In PSAMP-MIB, these are OIDs."; | ||||
| leaf function { type string; } | ||||
| leaf funcParam { type string; } | ||||
| } | ||||
| container sampFlowState { | ||||
| description "In PSAMP-MIB, these are OIDs."; | ||||
| leaf function { type string; } | ||||
| leaf funcParam { type string; } | ||||
| } | ||||
| container filterMatch { | ||||
| leaf fieldId { type uint32; } | ||||
| leaf startValue { type string; } | ||||
| leaf stopValue { type string; } | ||||
| leaf mask { type string; } | ||||
| } | ||||
| container filterHash { | ||||
| description "In PSAMP-MIB, function and funcParam are OIDs."; | ||||
| leaf addrType { type inet:ip-version; } | ||||
| leaf headerBits { type string; } | ||||
| leaf payloadBytes { type uint32; } | ||||
| leaf payloadBits { type string; } | ||||
| leaf function { type string; } | ||||
| leaf funcParam { type string; } | ||||
| leaf inputBits { type uint32; } | ||||
| leaf outputBits { type uint32; } | ||||
| leaf outputMask { type string; } | ||||
| leaf selection { type string; } | ||||
| } | ||||
| container filterRState { | ||||
| description "In PSAMP-MIB, vendorFunc is OID."; | ||||
| leaf function { type int32; } | ||||
| leaf negate { type boolean; } | ||||
| leaf ifIndex { | ||||
| description "Index of the interface as stored in the ifTable | ||||
| of IF-MIB."; | ||||
| reference "RFC 2863."; | ||||
| type uint32; | ||||
| } | ||||
| leaf startAS { type inet:asn; } | ||||
| leaf stopAS { type inet:asn; } | ||||
| leaf vendorFunc { type string; } | ||||
| } | ||||
| } | ||||
| } | ||||
| list cache { | ||||
| description "Parameters of a cache."; | ||||
| key name; | ||||
| leaf name { | ||||
| description "Arbitrary but unique name of the cache."; | ||||
| type string; | ||||
| } | ||||
| leaf cacheType { | ||||
| type enumeration { | ||||
| enum normal { | ||||
| description "Flow expiration after active and idle timeout."; | ||||
| } | ||||
| enum immediate { | ||||
| description "Flow expiration after the first packet (PSAMP export)."; | ||||
| } | ||||
| enum permanent { | ||||
| description "No flow expiration, periodical export after active timeout."; | ||||
| } | ||||
| } | ||||
| } | ||||
| leaf cacheSize { type uint32; } | ||||
| leaf activeTimeout { type yang:timeticks; } | ||||
| leaf idleTimeout { type yang:timeticks; } | ||||
| container template { | ||||
| leaf templateId { | ||||
| description "If omitted, the Template ID is assigned by the | ||||
| monitoring device."; | ||||
| type uint16; | ||||
| } | ||||
| list field { | ||||
| key name; | ||||
| ordered-by user; | ||||
| leaf name { type string; } | ||||
| uses InformationElement; | ||||
| leaf isFlowKey { type empty; } | ||||
| } | ||||
| } | ||||
| leaf-list exportingProcess { | ||||
| description "Records are exported by all Exporting Processes in the list."; | ||||
| type keyref { path "/ipfix/exportingProcess/name"; } | ||||
| } | ||||
| } | ||||
| list exportingProcess { | ||||
| description "Parameters of an Exporting Process."; | ||||
| key name; | ||||
| leaf name { | ||||
| description "Arbitrary but unique name of the Exporting Process."; | ||||
| type string; | ||||
| } | ||||
| leaf exportingProcessId { | ||||
| description "If omitted, the Exporting Process ID is assigned by the | ||||
| monitoring device."; | ||||
| type uint32; | ||||
| } | ||||
| list destination { | ||||
| key name; | ||||
| leaf name { type string; } | ||||
| leaf type { | ||||
| description "Transport Session type according to IPFIX-MIB"; | ||||
| reference "draft-ietf-ipfix-mib-02."; | ||||
| type enumeration { | ||||
| enum primary; | ||||
| enum secondary; | ||||
| enum duplicate; | ||||
| enum loadBalancing; | ||||
| enum unused; | ||||
| } | ||||
| } | ||||
| choice TransportProtocol { | ||||
| mandatory true; | ||||
| container sctpExport { | ||||
| description "SCTP export parameters."; | ||||
| reference "RFC 3758, RFC 4960."; | ||||
| leaf destinationIpAddress { | ||||
| mandatory true; | ||||
| type inet:ip-address; | ||||
| } | ||||
| leaf destinationTransportPort { | ||||
| mandatory true; | ||||
| type inet:port-number; | ||||
| } | ||||
| leaf-list sourceIpAddress { | ||||
| description "List of eligible local IP addresses to be used by | ||||
| the SCTP endpoint. If omitted, all locally assigned IP | ||||
| addresses are used by the local endpoint."; | ||||
| type inet:ip-address; | ||||
| } | ||||
| leaf timedReliability { type yang:timeticks; } | ||||
| } | ||||
| container udpExport { | ||||
| description "UDP export parameters."; | ||||
| leaf destinationIpAddress { | ||||
| mandatory true; | ||||
| type inet:ip-address; | ||||
| } | ||||
| leaf destinationTransportPort { | ||||
| mandatory true; | ||||
| type inet:port-number; | ||||
| } | ||||
| leaf sourceIpAddress { | ||||
| description "Source IP address. If omitted, the address | ||||
| assigned to the outgoing interface is used."; | ||||
| type inet:ip-address; | ||||
| } | ||||
| leaf templateRefreshTimeout { type yang:timeticks; } | ||||
| leaf templateRefreshPacket { type uint32; } | ||||
| leaf optionTemplateRefreshTimeout { type yang:timeticks; } | ||||
| leaf optionTemplateRefreshPacket { type uint32; } | ||||
| } | ||||
| container tcpExport { | ||||
| description "TCP export parameters."; | ||||
| leaf destinationIpAddress { | ||||
| mandatory true; | ||||
| type inet:ip-address; | ||||
| } | ||||
| leaf destinationTransportPort { | ||||
| mandatory true; | ||||
| type inet:port-number; | ||||
| } | ||||
| } | ||||
| container fileExport { | ||||
| description "File export parameters."; | ||||
| leaf uri { | ||||
| mandatory true; | ||||
| type yang:uri; | ||||
| } | ||||
| } | ||||
| } | ||||
| list option { | ||||
| key name; | ||||
| leaf name { type string; } | ||||
| leaf type { | ||||
| mandatory true; | ||||
| type enumeration { | ||||
| enum "meteringStatistics" { | ||||
| description "Metering Process Statistics."; | ||||
| reference "RFC 5101, section 4.1."; | ||||
| } | ||||
| enum "meteringReliability" { | ||||
| description "Metering Process Reliability Statistics."; | ||||
| reference "RFC 5101, section 4.2."; | ||||
| } | ||||
| enum "exportingReliability" { | ||||
| description "Exporting Process Reliability Statistics."; | ||||
| reference "RFC 5101, section 4.3."; | ||||
| } | ||||
| enum "flowKeys" { | ||||
| description "Flow Keys."; | ||||
| reference "RFC 5101, section 4.4."; | ||||
| } | ||||
| enum "selectionSequence" { | ||||
| description "Selection Sequence and Selector Reports."; | ||||
| reference "draft-ietf-psamp-protocol-09, section 6.5.1 and | ||||
| 6.5.2."; | ||||
| } | ||||
| enum "selectionStatistics" { | ||||
| description "Selection Sequence Statistics Report."; | ||||
| reference "draft-ietf-psamp-protocol-09, section 6.5.3."; | ||||
| } | ||||
| enum "accuracy" { | ||||
| description "Accuracy Report."; | ||||
| reference "draft-ietf-psamp-protocol-09, section 6.5.4."; | ||||
| } | ||||
| enum "reducingRedundancy" { | ||||
| description "Application of ipfix-reducing-redundancy."; | ||||
| } | ||||
| } | ||||
| } | ||||
| leaf timeout { | ||||
| description "Time interval for exporting option data."; | ||||
| type yang:timeticks; | ||||
| } | ||||
| container optionTemplate { | ||||
| description "If no Option Template is specified, the Exporter | ||||
| defines a template according to option type and available | ||||
| option data."; | ||||
| leaf templateId { | ||||
| description "If omitted, the Template ID is assigned by the | ||||
| monitoring device."; | ||||
| type uint16; | ||||
| } | ||||
| list optionField { | ||||
| key name; | ||||
| ordered-by user; | ||||
| leaf name { type string; } | ||||
| uses InformationElement; | ||||
| leaf isScope { type empty; } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| 7. Examples | 7. Examples | |||
| This section shows example configurations conforming to the XML | This section shows example configurations conforming to the YANG | |||
| Schema specified in Section 6. | module specified in Section 6. | |||
| 7.1. PSAMP Monitoring Device | 7.1. PSAMP Monitoring Device | |||
| This example demonstrates the configuration of a Selection Sequence | This example shows two PSAMP Metering Processes configured for the | |||
| out of two Selection Processes, a random sampler and a filter. The | same Observation Point. The first Metering Process consists of a | |||
| configuration assumes that the monitoring device supports the | Selection Sequence out of two Selection Processes, a filter for UDP | |||
| configuration of values for observationPointId, meteringProcessId, | packets and a random sampler, the second is just an ICMP filter. The | |||
| selectorId, and exportingProcessId. Exporter statistics are reported | two Metering Processes deploy the same cache. The configuration | |||
| using a manually specified Option Template. | assumes that the monitoring device supports the configuration of | |||
| values for observationPointId, meteringProcessId, selectorId, and | ||||
| exportingProcessId. Exporter statistics are reported using a | ||||
| manually specified Option Template. | ||||
| <ConfigData xmlns="urn:ietf:params:xml:ns:ipfix-psamp-config"> | <ipfix xmlns="urn:ietf:params:xml:ns:ipfix-psamp-config"> | |||
| <ObservationPoint description="Traffic at linecard 3"> | <observationPoint> | |||
| <name>OP at linecard 3</name> | ||||
| <observationPointId>1</observationPointId> | <observationPointId>1</observationPointId> | |||
| <observationDomainId>12345</observationDomainId> | <observationDomainId>12345</observationDomainId> | |||
| <Linecard> | <linecard> | |||
| <entPhysicalIndex>3</entPhysicalIndex> | <entPhysicalIndex>3</entPhysicalIndex> | |||
| </Linecard> | ||||
| <MeteringProcess> | </linecard> | |||
| <meteringProcess> | ||||
| <name>Reports of sampled UDP packets</name> | ||||
| <meteringProcessId>1</meteringProcessId> | <meteringProcessId>1</meteringProcessId> | |||
| <SelectionProcess id="my_sampler" /> | <selectionProcess>UDP filter</selectionProcess> | |||
| <SelectionProcess id="my_filter" /> | <selectionProcess>10-out-of-100 sampler</selectionProcess> | |||
| <CacheParameters id="my_cache" /> | <cache>PSAMP cache</cache> | |||
| </MeteringProcess> | </meteringProcess> | |||
| </ObservationPoint> | <meteringProcess> | |||
| <name>Reports of ICMP packets</name> | ||||
| <meteringProcessId>2</meteringProcessId> | ||||
| <selectionProcess>ICMP filter</selectionProcess> | ||||
| <cache>PSAMP cache</cache> | ||||
| </meteringProcess> | ||||
| </observationPoint> | ||||
| <SelectionProcess id="my_sampler" | <selectionProcess> | |||
| description="10-out-of-100 random packet sampler"> | <name>UDP filter</name> | |||
| <selectorId>1</selectorId> | <selectorId>1</selectorId> | |||
| <SampRandOutOfN> | <filterMatch> | |||
| <population>100</population> | <fieldId>4</fieldId> | |||
| <sample>10</sample> | ||||
| </SampRandOutOfN> | ||||
| </SelectionProcess> | ||||
| <SelectionProcess id="my_filter" | ||||
| description="UDP filter"> | ||||
| <selectorId>2</selectorId> | ||||
| <FilterMatch> | ||||
| <infoElementId>4</infoElementId> | ||||
| <startValue>17</startValue> | <startValue>17</startValue> | |||
| <stopValue>17</stopValue> | <stopValue>17</stopValue> | |||
| </FilterMatch> | </filterMatch> | |||
| </SelectionProcess> | </selectionProcess> | |||
| <CacheParameters id="my_cache" | <selectionProcess> | |||
| description="Packet cache with immediate expiration"> | <name>ICMP filter</name> | |||
| <selectorId>2</selectorId> | ||||
| <filterMatch> | ||||
| <fieldId>4</fieldId> | ||||
| <startValue>1</startValue> | ||||
| <stopValue>1</stopValue> | ||||
| </filterMatch> | ||||
| </selectionProcess> | ||||
| <selectionProcess> | ||||
| <name>10-out-of-100 sampler</name> | ||||
| <selectorId>3</selectorId> | ||||
| <sampRandOutOfN> | ||||
| <population>100</population> | ||||
| <sample>10</sample> | ||||
| </sampRandOutOfN> | ||||
| </selectionProcess> | ||||
| <cache> | ||||
| <name>PSAMP cache</name> | ||||
| <cacheType>immediate</cacheType> | <cacheType>immediate</cacheType> | |||
| <cacheSize>512</cacheSize> | <cacheSize>512</cacheSize> | |||
| <Template> | <template> | |||
| <FlowKeyField> | <field> | |||
| <name>Field 1</name> | ||||
| <ieId>313</ieId> | <ieId>313</ieId> | |||
| <length>64</length> | <ieLength>64</ieLength> | |||
| </FlowKeyField> | </field> | |||
| <NonFlowKeyField> | <field> | |||
| <name>Field 2</name> | ||||
| <ieName>154</ieName> | <ieName>154</ieName> | |||
| </NonFlowKeyField> | </field> | |||
| </Template> | </template> | |||
| <ExportingProcess id="my_exporter" /> | <exportingProcess>The only exporter</exportingProcess> | |||
| </CacheParameters> | </cache> | |||
| <ExportingProcess id="my_exporter" | <exportingProcess> | |||
| description="PR-SCTP exporter"> | <name>The only exporter</name> | |||
| <exportingProcessId>1</exportingProcessId> | <exportingProcessId>1</exportingProcessId> | |||
| <Destination> | <destination> | |||
| <name>PR-SCTP collector</name> | ||||
| <type>primary</type> | <type>primary</type> | |||
| <SctpExport> | <sctpExport> | |||
| <ipAddressType>4</ipAddressType> | ||||
| <destinationIpAddress>192.0.2.1</destinationIpAddress> | <destinationIpAddress>192.0.2.1</destinationIpAddress> | |||
| <destinationTransportPort>4739</destinationTransportPort> | <destinationTransportPort>4739</destinationTransportPort> | |||
| <reliability>partially-reliable</reliability> | <timedReliability>200</timedReliability> | |||
| </SctpExport> | </sctpExport> | |||
| <Option> | <option> | |||
| <type>exporting-reliability</type> | <name>Option 1</name> | |||
| <timeout unit="min">5</timeout> | <type>exportingReliability</type> | |||
| <OptionTemplate> | <timeout>30000</timeout> | |||
| <ScopeField> | <optionTemplate> | |||
| <ieName>exportingProcessId</ieName> | <optionField> | |||
| </ScopeField> | <name>Field 1</name> | |||
| <NonScopeField> | <ieName>exportingProcessId</ieName> | |||
| <ieName>notSentPacketTotalCount</ieName> | <isScope/> | |||
| </NonScopeField> | </optionField> | |||
| </OptionTemplate> | <optionField> | |||
| </Option> | <name>Field 2</name> | |||
| </Destination> | <ieName>notSentPacketTotalCount</ieName> | |||
| </ExportingProcess> | </optionField> | |||
| </optionTemplate> | ||||
| </option> | ||||
| </destination> | ||||
| </exportingProcess> | ||||
| </ConfigData> | </ipfix> | |||
| 7.2. IPFIX Monitoring Device | 7.2. IPFIX Monitoring Device | |||
| This example demonstrates the shared usage of a record cache in two | This example demonstrates the shared usage of a record cache in two | |||
| different Metering Processes. Packets observed at two different | different Metering Processes. Packets observed at two different | |||
| Observation Points are selected using different sampling techniques. | Observation Points are selected using different sampling techniques. | |||
| Selected packets from both Observation Points enter the same record | Selected packets from both Observation Points enter the same record | |||
| cache. The Exporting Process sends the records to a primary | cache. The Exporting Process sends the records to a primary | |||
| destination using SCTP. A UDP Collector is specified as secondary, | destination using SCTP. A UDP Collector is specified as secondary, | |||
| i.e. backup destination. | i.e. backup destination. | |||
| <ConfigData xmlns="urn:ietf:params:xml:ns:ipfix-psamp-config"> | <ipfix xmlns="urn:ietf:params:xml:ns:ipfix-psamp-config"> | |||
| <ObservationPoint description="Ingress traffic at eth0"> | ||||
| <observationDomainId>12345</observationDomainId> | ||||
| <Interface> | ||||
| <ifName>eth0</ifName> | ||||
| <direction>ingress</direction> | ||||
| </Interface> | ||||
| <MeteringProcess> | ||||
| <SelectionProcess id="my_first_sampler" /> | ||||
| <CacheParameters id="my_cache" /> | ||||
| </MeteringProcess> | ||||
| </ObservationPoint> | ||||
| <ObservationPoint description="All traffic at eth1"> | <observationPoint> | |||
| <observationDomainId>12346</observationDomainId> | <name>OP at eth0 (ingress)</name> | |||
| <Interface> | <observationDomainId>12345</observationDomainId> | |||
| <ifName>eth1</ifName> | <interface> | |||
| </Interface> | <ifName>eth0</ifName> | |||
| <MeteringProcess> | <direction>ingress</direction> | |||
| <SelectionProcess id="my_second_sampler" /> | </interface> | |||
| <CacheParameters id="my_cache" /> | <meteringProcess> | |||
| </MeteringProcess> | <name>Flows of sampled packets</name> | |||
| <selectionProcess>Count-based sampler</selectionProcess> | ||||
| <cache>Flow cache</cache> | ||||
| </meteringProcess> | ||||
| </observationPoint> | ||||
| </ObservationPoint> | <observationPoint> | |||
| <name>OP at eth1</name> | ||||
| <observationDomainId>12346</observationDomainId> | ||||
| <interface> | ||||
| <ifName>eth1</ifName> | ||||
| </interface> | ||||
| <meteringProcess> | ||||
| <name>Flows of sampled packets</name> | ||||
| <selectionProcess>Time-based sampler</selectionProcess> | ||||
| <cache>Flow Cache</cache> | ||||
| </meteringProcess> | ||||
| </observationPoint> | ||||
| <SelectionProcess id="my_first_sampler" | <selectionProcess> | |||
| description="Count-based packet sampler"> | <name>Count-based sampler</name> | |||
| <SampCountBased> | <sampCountBased> | |||
| <interval>1</interval> | <interval>1</interval> | |||
| <spacing>99</spacing> | <spacing>99</spacing> | |||
| </SampCountBased> | </sampCountBased> | |||
| </SelectionProcess> | </selectionProcess> | |||
| <SelectionProcess id="my_second_sampler" | <selectionProcess> | |||
| description="Time-based packet sampler"> | <name>Time-based sampler</name> | |||
| <SampCountBased> | <sampCountBased> | |||
| <interval>20</interval> | <interval>20</interval> | |||
| <spacing>980</spacing> | <spacing>980</spacing> | |||
| </SampCountBased> | </sampCountBased> | |||
| </SelectionProcess> | </selectionProcess> | |||
| <CacheParameters id="my_cache" description="Flow cache"> | <cache> | |||
| <cacheType>normal</cacheType> | <name>Flow cache</name> | |||
| <cacheSize>4096</cacheSize> | <cacheType>normal</cacheType> | |||
| <activeTimeout unit="s">5</activeTimeout> | <cacheSize>4096</cacheSize> | |||
| <idleTimeout unit="s">10</idleTimeout> | <activeTimeout>5</activeTimeout> | |||
| <Template> | <idleTimeout>10</idleTimeout> | |||
| <FlowKeyField> | <template> | |||
| <ieName>sourceIPv4Address</ieName> | <field> | |||
| </FlowKeyField> | <name>Field 1</name> | |||
| <FlowKeyField> | <ieName>sourceIPv4Address</ieName> | |||
| <ieName>destinationIPv4Address</ieName> | <isFlowKey/> | |||
| </FlowKeyField> | </field> | |||
| <FlowKeyField> | <field> | |||
| <ieName>transportProtocol</ieName> | <name>Field 2</name> | |||
| </FlowKeyField> | <ieName>destinationIPv4Address</ieName> | |||
| <FlowKeyField> | <isFlowKey/> | |||
| <ieName>sourceTransportPort</ieName> | </field> | |||
| </FlowKeyField> | <field> | |||
| <FlowKeyField> | <name>Field 3</name> | |||
| <ieName>destinationTransportPort</ieName> | <ieName>transportProtocol</ieName> | |||
| </FlowKeyField> | <isFlowKey/> | |||
| <NonFlowKeyField> | </field> | |||
| <ieName>flowStartMilliSeconds</ieName> | <field> | |||
| </NonFlowKeyField> | <name>Field 4</name> | |||
| <NonFlowKeyField> | <ieName>sourceTransportPort</ieName> | |||
| <ieName>flowEndSeconds</ieName> | <isFlowKey/> | |||
| </NonFlowKeyField> | </field> | |||
| <NonFlowKeyField> | <field> | |||
| <ieName>octetDeltaCount</ieName> | <name>Field 5</name> | |||
| </NonFlowKeyField> | <ieName>destinationTransportPort</ieName> | |||
| <NonFlowKeyField> | <isFlowKey/> | |||
| <ieName>packetDeltaCount</ieName> | </field> | |||
| </NonFlowKeyField> | <field> | |||
| </Template> | <name>Field 6</name> | |||
| <ExportingProcess id="my_exporter" /> | <ieName>flowStartMilliSeconds</ieName> | |||
| </CacheParameters> | </field> | |||
| <field> | ||||
| <name>Field 7</name> | ||||
| <ieName>flowEndSeconds</ieName> | ||||
| </field> | ||||
| <field> | ||||
| <name>Field 8</name> | ||||
| <ieName>octetDeltaCount</ieName> | ||||
| </field> | ||||
| <field> | ||||
| <name>Field 9</name> | ||||
| <ieName>packetDeltaCount</ieName> | ||||
| </field> | ||||
| </template> | ||||
| <exportingProcess>SCTP export with UDP backup</exportingProcess> | ||||
| </cache> | ||||
| <ExportingProcess id="my_exporter" | <exportingProcess> | |||
| description="SCTP Exporter with UDP backup destination"> | <name>SCTP export with UDP backup</name> | |||
| <Destination> | <destination> | |||
| <type>primary</type> | <name>SCTP destination</name> | |||
| <SctpExport> | <type>primary</type> | |||
| <ipAddressType>4</ipAddressType> | <sctpExport> | |||
| <destinationIpAddress>192.0.2.1</destinationIpAddress> | <destinationIpAddress>192.0.2.1</destinationIpAddress> | |||
| <destinationTransportPort>4739</destinationTransportPort> | <destinationTransportPort>4739</destinationTransportPort> | |||
| <reliability>fully-reliable</reliability> | </sctpExport> | |||
| </SctpExport> | <option> | |||
| <Option> | <name>Option 1</name> | |||
| <type>selection-sequence</type> | <type>selectionSequence</type> | |||
| <timeout unit="s">0</timeout> | <timeout>0</timeout> | |||
| </Option> | </option> | |||
| <Option> | <option> | |||
| <type>exporting-reliability</type> | <name>Option 2</name> | |||
| <timeout unit="min">5</timeout> | <type>exportingReliability</type> | |||
| </Option> | <timeout>6000</timeout> | |||
| </Destination> | </option> | |||
| <Destination> | </destination> | |||
| <type>secondary</type> | <destination> | |||
| <UdpExport> | <name>UDP destination</name> | |||
| <ipAddressType>4</ipAddressType> | <type>secondary</type> | |||
| <destinationIpAddress>192.0.2.2</destinationIpAddress> | <udpExport> | |||
| <destinationTransportPort>4739</destinationTransportPort> | <destinationIpAddress>192.0.2.2</destinationIpAddress> | |||
| <sourceIpAddress>127.0.0.1</sourceIpAddress> | <destinationTransportPort>4739</destinationTransportPort> | |||
| <templateRefreshTimeout unit="s">60</templateRefreshTimeout> | <sourceIpAddress>127.0.0.1</sourceIpAddress> | |||
| <optionTemplateRefreshTimeout unit="s">60 | <templateRefreshTimeout>6000</templateRefreshTimeout> | |||
| </optionTemplateRefreshTimeout> | <optionTemplateRefreshTimeout>6000</optionTemplateRefreshTimeout> | |||
| </UdpExport> | </udpExport> | |||
| <Option> | <option> | |||
| <type>selection-sequence</type> | <name>Option 1</name> | |||
| <timeout unit="min">5</timeout> | <type>selectionSequence</type> | |||
| </Option> | <timeout>30000</timeout> | |||
| </Destination> | </option> | |||
| </ExportingProcess> | </destination> | |||
| </exportingProcess> | ||||
| </ConfigData> | </ipfix> | |||
| 7.3. Collector Monitoring Device | 7.3. Collector Monitoring Device | |||
| <ConfigData xmlns="urn:ietf:params:xml:ns:ipfix-psamp-config"> | This example configures a collector which writes the received records | |||
| to a file. | ||||
| <CollectingProcess description="SCTP collector"> | <ipfix xmlns="urn:ietf:params:xml:ns:ipfix-psamp-config"> | |||
| <Receiver> | ||||
| <ipAddressType>4</ipAddressType> | ||||
| <ipAddress>192.0.2.1</ipAddress> | ||||
| <transportProtocol>132</transportProtocol> | ||||
| <transportPort>4739</transportPort> | ||||
| </Receiver> | ||||
| </CollectingProcess> | ||||
| </ConfigData> | <collectingProcess> | |||
| <name>SCTP collector</name> | ||||
| <receiver> | ||||
| <name>Listening port 4739</name> | ||||
| <sctpReceiver> | ||||
| <ipAddress>192.0.2.1</ipAddress> | ||||
| <transportPort>4739</transportPort> | ||||
| </sctpReceiver> | ||||
| </receiver> | ||||
| <exportingProcess>File writer</exportingProcess> | ||||
| </collectingProcess> | ||||
| <exportingProcess> | ||||
| <name>File writer</name> | ||||
| <destination> | ||||
| <name>File destination</name> | ||||
| <type>primary</type> | ||||
| <fileExport> | ||||
| <uri>file://tmp/collected-records.ipfix</uri> | ||||
| </fileExport> | ||||
| </destination> | ||||
| </exportingProcess> | ||||
| </ipfix> | ||||
| 8. Security Considerations | 8. Security Considerations | |||
| The XML Schema Definition of the configuration data model has been | The XML Schema Definition of the configuration data model has been | |||
| conceived to enable its usage with different device implementations. | conceived to enable its usage with different device implementations. | |||
| In order to keep the XML Schema Definition simple and flexible, no | In order to keep the XML Schema Definition simple and flexible, no | |||
| precautions have been made to ensure that only complete and | precautions have been made to ensure that only complete and | |||
| meaningful configurations can be specified. For example, most of the | meaningful configurations can be specified. For example, most of the | |||
| elements are declared optional. Furthermore, the necessary | elements are declared optional. Furthermore, the necessary | |||
| communication of device capabilities to the network management system | communication of device capabilities to the network management system | |||
| skipping to change at page 38, line 41 ¶ | skipping to change at page 39, line 14 ¶ | |||
| the XML Schema Definition does not ensure that conforming XML | the XML Schema Definition does not ensure that conforming XML | |||
| documents describe configurations that are both complete and | documents describe configurations that are both complete and | |||
| supported by a given device. Users should make sure that | supported by a given device. Users should make sure that | |||
| configuration data is validated and checked against the capabilities | configuration data is validated and checked against the capabilities | |||
| of the device before configuring it. If configuration data is | of the device before configuring it. If configuration data is | |||
| incomplete, invalid or unsupported, it must be rejected by the device | incomplete, invalid or unsupported, it must be rejected by the device | |||
| and the previous configuration should remain active. In addition, an | and the previous configuration should remain active. In addition, an | |||
| error message should be returned specifying the reason for the error | error message should be returned specifying the reason for the error | |||
| of any failed configuration attempt. | of any failed configuration attempt. | |||
| Appendix A. Acknowledgements | ||||
| The authors thank Martin Bjorklund for helping specifying the | ||||
| configuration data model in YANG. | ||||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [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, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [I-D.ietf-ipfix-protocol] | [RFC5101] Claise, B., "Specification of the IP Flow Information | |||
| Claise, B., "Specification of the IPFIX Protocol for the | Export (IPFIX) Protocol for the Exchange of IP Traffic | |||
| Exchange of IP Traffic Flow Information", | Flow Information", RFC 5101, January 2008. | |||
| draft-ietf-ipfix-protocol-26 (work in progress), | ||||
| September 2007. | ||||
| [I-D.ietf-ipfix-info] | [RFC5102] Quittek, J., Bryant, S., Claise, B., Aitken, P., and J. | |||
| Quittek, J., "Information Model for IP Flow Information | Meyer, "Information Model for IP Flow Information Export", | |||
| Export", draft-ietf-ipfix-info-15 (work in progress), | RFC 5102, January 2008. | |||
| February 2007. | ||||
| [I-D.ietf-psamp-protocol] | [I-D.ietf-psamp-protocol] | |||
| Claise, B., "Packet Sampling (PSAMP) Protocol | Claise, B., "Packet Sampling (PSAMP) Protocol | |||
| Specifications", draft-ietf-psamp-protocol-08 (work in | Specifications", draft-ietf-psamp-protocol-09 (work in | |||
| progress), June 2007. | progress), December 2007. | |||
| [I-D.ietf-psamp-info] | [I-D.ietf-psamp-info] | |||
| Dietz, T., Dressler, F., Carle, G., Claise, B., and P. | Dietz, T., Dressler, F., Carle, G., Claise, B., and P. | |||
| Aitken, "Information Model for Packet Sampling Exports", | Aitken, "Information Model for Packet Sampling Exports", | |||
| draft-ietf-psamp-info-07 (work in progress), October 2007. | draft-ietf-psamp-info-07 (work in progress), October 2007. | |||
| 9.2. Informative References | ||||
| [W3C.REC-xml-20040204] | [W3C.REC-xml-20040204] | |||
| Maler, E., Bray, T., Paoli, J., Sperberg-McQueen, C., and | Bray, T., Maler, E., Yergeau, F., Sperberg-McQueen, C., | |||
| F. Yergeau, "Extensible Markup Language (XML) 1.0 (Third | and J. Paoli, "Extensible Markup Language (XML) 1.0 (Third | |||
| Edition)", World Wide Web Consortium FirstEdition REC-xml- | Edition)", World Wide Web Consortium FirstEdition REC-xml- | |||
| 20040204, February 2004, | 20040204, February 2004, | |||
| <http://www.w3.org/TR/2004/REC-xml-20040204>. | <http://www.w3.org/TR/2004/REC-xml-20040204>. | |||
| [I-D.bjorklund-netconf-yang] | ||||
| Bjorklund, M., "YANG - A data modeling language for | ||||
| NETCONF", draft-bjorklund-netconf-yang-02 (work in | ||||
| progress), February 2008. | ||||
| 9.2. Informative References | ||||
| [W3C.REC-xmlschema-0-20041028] | [W3C.REC-xmlschema-0-20041028] | |||
| Walmsley, P. and D. Fallside, "XML Schema Part 0: Primer | Fallside, D. and P. Walmsley, "XML Schema Part 0: Primer | |||
| Second Edition", World Wide Web Consortium | Second Edition", World Wide Web Consortium | |||
| Recommendation REC-xmlschema-0-20041028, October 2004, | Recommendation REC-xmlschema-0-20041028, October 2004, | |||
| <http://www.w3.org/TR/2004/REC-xmlschema-0-20041028>. | <http://www.w3.org/TR/2004/REC-xmlschema-0-20041028>. | |||
| [RFC4741] Enns, R., "NETCONF Configuration Protocol", RFC 4741, | [RFC4741] Enns, R., "NETCONF Configuration Protocol", RFC 4741, | |||
| December 2006. | December 2006. | |||
| [W3C.REC-soap12-part1-20070427] | [W3C.REC-soap12-part1-20070427] | |||
| Mendelsohn, N., Karmarkar, A., Moreau, J., Nielsen, H., | Nielsen, H., Lafon, Y., Hadley, M., Mendelsohn, N., | |||
| Lafon, Y., Hadley, M., and M. Gudgin, "SOAP Version 1.2 | Moreau, J., Gudgin, M., and A. Karmarkar, "SOAP Version | |||
| Part 1: Messaging Framework (Second Edition)", World Wide | 1.2 Part 1: Messaging Framework (Second Edition)", World | |||
| Web Consortium Recommendation REC-soap12-part1-20070427, | Wide Web Consortium Recommendation REC-soap12-part1- | |||
| April 2007, | 20070427, April 2007, | |||
| <http://www.w3.org/TR/2007/REC-soap12-part1-20070427>. | <http://www.w3.org/TR/2007/REC-soap12-part1-20070427>. | |||
| [I-D.ietf-ipfix-as] | [I-D.ietf-ipfix-as] | |||
| Zseby, T., "IPFIX Applicability", draft-ietf-ipfix-as-12 | Zseby, T., "IPFIX Applicability", draft-ietf-ipfix-as-12 | |||
| (work in progress), July 2007. | (work in progress), July 2007. | |||
| [I-D.ietf-ipfix-architecture] | [I-D.ietf-ipfix-architecture] | |||
| Sadasivan, G., "Architecture for IP Flow Information | Sadasivan, G., "Architecture for IP Flow Information | |||
| Export", draft-ietf-ipfix-architecture-12 (work in | Export", draft-ietf-ipfix-architecture-12 (work in | |||
| progress), September 2006. | progress), September 2006. | |||
| [I-D.ietf-ipfix-mib] | [I-D.ietf-ipfix-mib] | |||
| Dietz, T., "Definitions of Managed Objects for IP Flow | Dietz, T., Kobayashi, A., and B. Claise, "Definitions of | |||
| Information Export", draft-ietf-ipfix-mib-01 (work in | Managed Objects for IP Flow Information Export", | |||
| progress), July 2007. | draft-ietf-ipfix-mib-02 (work in progress), December 2007. | |||
| [I-D.trammell-ipfix-file] | [I-D.ietf-ipfix-file] | |||
| Trammell, B., "An IPFIX-Based File Format", | Trammell, B., Boschi, E., Mark, L., Zseby, T., and A. | |||
| draft-trammell-ipfix-file-05 (work in progress), | Wagner, "An IPFIX-Based File Format", | |||
| November 2007. | draft-ietf-ipfix-file-00 (work in progress), January 2008. | |||
| [I-D.ietf-ipfix-reducing-redundancy] | [I-D.ietf-ipfix-reducing-redundancy] | |||
| Boschi, E., "Reducing Redundancy in IP Flow Information | Boschi, E., "Reducing Redundancy in IP Flow Information | |||
| Export (IPFIX) and Packet Sampling (PSAMP) Reports", | Export (IPFIX) and Packet Sampling (PSAMP) Reports", | |||
| draft-ietf-ipfix-reducing-redundancy-04 (work in | draft-ietf-ipfix-reducing-redundancy-04 (work in | |||
| progress), May 2007. | progress), May 2007. | |||
| [RFC3917] Quittek, J., Zseby, T., Claise, B., and S. Zander, | [RFC3917] Quittek, J., Zseby, T., Claise, B., and S. Zander, | |||
| "Requirements for IP Flow Information Export (IPFIX)", | "Requirements for IP Flow Information Export (IPFIX)", | |||
| RFC 3917, October 2004. | RFC 3917, October 2004. | |||
| [RFC3758] Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P. | ||||
| Conrad, "Stream Control Transmission Protocol (SCTP) | ||||
| Partial Reliability Extension", RFC 3758, May 2004. | ||||
| [RFC4960] Stewart, R., "Stream Control Transmission Protocol", | ||||
| RFC 4960, September 2007. | ||||
| [I-D.dressler-ipfix-aggregation] | [I-D.dressler-ipfix-aggregation] | |||
| Dressler, F., Sommer, C., Muenz, G., and A. Kobayashi, | Dressler, F., Sommer, C., Muenz, G., and A. Kobayashi, | |||
| "IPFIX Flow Aggregation", | "IPFIX Flow Aggregation", | |||
| draft-dressler-ipfix-aggregation-04 (work in progress), | draft-dressler-ipfix-aggregation-04 (work in progress), | |||
| November 2007. | November 2007. | |||
| [I-D.kobayashi-ipfix-mediator-model] | ||||
| Kobayashi, A., Ishibashi, K., Tsuyoshi, K., and D. | ||||
| Matsubara, "Reference Model for IPFIX Mediators", | ||||
| draft-kobayashi-ipfix-mediator-model-01 (work in | ||||
| progress), November 2007. | ||||
| [I-D.ietf-psamp-framework] | [I-D.ietf-psamp-framework] | |||
| Duffield, N., "A Framework for Packet Selection and | Duffield, N., "A Framework for Packet Selection and | |||
| Reporting", draft-ietf-psamp-framework-12 (work in | Reporting", draft-ietf-psamp-framework-12 (work in | |||
| progress), June 2007. | progress), June 2007. | |||
| [I-D.ietf-psamp-mib] | [I-D.ietf-psamp-mib] | |||
| Dietz, T. and B. Claise, "Definitions of Managed Objects | Dietz, T. and B. Claise, "Definitions of Managed Objects | |||
| for Packet Sampling", draft-ietf-psamp-mib-06 (work in | for Packet Sampling", draft-ietf-psamp-mib-06 (work in | |||
| progress), June 2006. | progress), June 2006. | |||
| [I-D.ietf-psamp-sample-tech] | [I-D.ietf-psamp-sample-tech] | |||
| Zseby, T., "Sampling and Filtering Techniques for IP | Zseby, T., "Sampling and Filtering Techniques for IP | |||
| Packet Selection", draft-ietf-psamp-sample-tech-10 (work | Packet Selection", draft-ietf-psamp-sample-tech-10 (work | |||
| in progress), June 2007. | in progress), June 2007. | |||
| [RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group | ||||
| MIB", RFC 2863, June 2000. | ||||
| [RFC4133] Bierman, A. and K. McCloghrie, "Entity MIB (Version 3)", | ||||
| RFC 4133, August 2005. | ||||
| [YANG-WEB] | ||||
| Bjoerklund, M., "YANG WebHome", | ||||
| Homepage http://www.yang-central.org, February 2008. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Gerhard Muenz | Gerhard Muenz | |||
| University of Tuebingen | University of Tuebingen | |||
| Computer Networks and Internet | Computer Networks and Internet | |||
| Sand 13 | Sand 13 | |||
| Tuebingen D-72076 | Tuebingen D-72076 | |||
| DE | DE | |||
| Phone: +49 7071 29-70534 | Phone: +49 7071 29-70534 | |||
| skipping to change at page 42, line 7 ¶ | skipping to change at page 43, line 7 ¶ | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| De Kleetlaan 6a b1 | De Kleetlaan 6a b1 | |||
| Diegem 1831 | Diegem 1831 | |||
| BE | BE | |||
| Phone: +32 2 704 5622 | Phone: +32 2 704 5622 | |||
| Email: bclaise@cisco.com | Email: bclaise@cisco.com | |||
| Full Copyright Statement | Full Copyright Statement | |||
| Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2008). | |||
| This document is subject to the rights, licenses and restrictions | This document is subject to the rights, licenses and restrictions | |||
| contained in BCP 78, and except as set forth therein, the authors | contained in BCP 78, and except as set forth therein, the authors | |||
| retain all their rights. | retain all their rights. | |||
| This document and the information contained herein are provided on an | This document and the information contained herein are provided on an | |||
| "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |||
| OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | |||
| THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | |||
| OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | |||
| End of changes. 175 change blocks. | ||||
| 1168 lines changed or deleted | 1245 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/ | ||||