< 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/