idnits 2.17.1 draft-muenz-ipfix-configuration-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 16. -- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on line 1915. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 1926. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 1933. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 1939. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** There are 35 instances of too long lines in the document, the longest one being 14 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust Copyright Line does not match the current year -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (February 20, 2008) is 5910 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC2119' is defined on line 1754, but no explicit reference was found in the text ** Obsolete normative reference: RFC 5101 (Obsoleted by RFC 7011) ** Obsolete normative reference: RFC 5102 (Obsoleted by RFC 7012) == Outdated reference: A later version (-11) exists of draft-ietf-psamp-info-07 -- Obsolete informational reference (is this intentional?): RFC 4741 (Obsoleted by RFC 6241) == Outdated reference: A later version (-10) exists of draft-ietf-ipfix-mib-02 == Outdated reference: A later version (-05) exists of draft-ietf-ipfix-file-00 -- Obsolete informational reference (is this intentional?): RFC 4960 (Obsoleted by RFC 9260) == Outdated reference: A later version (-05) exists of draft-dressler-ipfix-aggregation-04 == Outdated reference: A later version (-02) exists of draft-kobayashi-ipfix-mediator-model-01 == Outdated reference: A later version (-13) exists of draft-ietf-psamp-framework-12 == Outdated reference: A later version (-11) exists of draft-ietf-psamp-sample-tech-10 -- Obsolete informational reference (is this intentional?): RFC 4133 (Obsoleted by RFC 6933) Summary: 5 errors (**), 0 flaws (~~), 9 warnings (==), 10 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IP Flow Information Export WG G. Muenz 3 Internet-Draft University of Tuebingen 4 Intended status: Standards Track B. Claise 5 Expires: August 23, 2008 Cisco Systems, Inc. 6 February 20, 2008 8 Configuration Data Model for IPFIX and PSAMP 9 11 Status of this Memo 13 By submitting this Internet-Draft, each author represents that any 14 applicable patent or other IPR claims of which he or she is aware 15 have been or will be disclosed, and any of which he or she becomes 16 aware will be disclosed, in accordance with Section 6 of BCP 79. 18 Internet-Drafts are working documents of the Internet Engineering 19 Task Force (IETF), its areas, and its working groups. Note that 20 other groups may also distribute working documents as Internet- 21 Drafts. 23 Internet-Drafts are draft documents valid for a maximum of six months 24 and may be updated, replaced, or obsoleted by other documents at any 25 time. It is inappropriate to use Internet-Drafts as reference 26 material or to cite them other than as "work in progress." 28 The list of current Internet-Drafts can be accessed at 29 http://www.ietf.org/ietf/1id-abstracts.txt. 31 The list of Internet-Draft Shadow Directories can be accessed at 32 http://www.ietf.org/shadow.html. 34 This Internet-Draft will expire on August 23, 2008. 36 Copyright Notice 38 Copyright (C) The IETF Trust (2008). 40 Abstract 42 This document specifies a data model for the configuration of 43 metering processes, exporting processes, and collecting processes for 44 IPFIX and PSAMP compliant monitoring devices. The configuration data 45 model is encoded in Extensible Markup Language (XML). The structure 46 of the data model is specified as a YANG module to ensure 47 compatibility with the Netconf protocol. A YANG-to-XSD converter is 48 available which allows generating an XML Schema Definition of the 49 data model. 51 Table of Contents 53 1. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 3 55 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 56 2.1. IPFIX Documents Overview . . . . . . . . . . . . . . . . . 4 57 2.2. PSAMP Documents Overview . . . . . . . . . . . . . . . . . 4 59 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 61 4. Structure of the Configuration Data Model . . . . . . . . . . 5 63 5. Configuration Parameters . . . . . . . . . . . . . . . . . . . 9 64 5.1. ObservationPoint Class . . . . . . . . . . . . . . . . . . 10 65 5.2. MeteringProcess Class . . . . . . . . . . . . . . . . . . 11 66 5.3. SelectionProcess Class . . . . . . . . . . . . . . . . . . 11 67 5.3.1. Sampler Classes . . . . . . . . . . . . . . . . . . . 12 68 5.3.2. Filter Classes . . . . . . . . . . . . . . . . . . . . 12 69 5.4. Cache Class . . . . . . . . . . . . . . . . . . . . . . . 13 70 5.4.1. Template Class . . . . . . . . . . . . . . . . . . . . 13 71 5.5. ExportingProcess Class . . . . . . . . . . . . . . . . . . 14 72 5.5.1. Destination Class . . . . . . . . . . . . . . . . . . 15 73 5.5.2. Export Parameters Classes . . . . . . . . . . . . . . 15 74 5.5.3. Option Class . . . . . . . . . . . . . . . . . . . . . 17 75 5.5.4. OptionTemplate Class . . . . . . . . . . . . . . . . . 18 76 5.6. CollectingProcess Class and Receiver Class . . . . . . . . 19 78 6. YANG Module of the IPFIX/PSAMP Configuration Data Model . . . 20 80 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 81 7.1. PSAMP Monitoring Device . . . . . . . . . . . . . . . . . 32 82 7.2. IPFIX Monitoring Device . . . . . . . . . . . . . . . . . 35 83 7.3. Collector Monitoring Device . . . . . . . . . . . . . . . 38 85 8. Security Considerations . . . . . . . . . . . . . . . . . . . 38 87 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 39 89 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 39 90 9.1. Normative References . . . . . . . . . . . . . . . . . . . 39 91 9.2. Informative References . . . . . . . . . . . . . . . . . . 40 93 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 42 94 Intellectual Property and Copyright Statements . . . . . . . . . . 43 96 1. Open Issues 98 All open issues have been addressed. 100 Solved issues and answers to reviewer comments: 101 o SCTP timed reliability parameter configures lifetime before an 102 IPFIX Message is "abandoned". 103 o Netconf compliance: ensured by using YANG instead of XSD. 104 o Direction attribute of interface/linecard can be on of "ingress", 105 "egress", or "both". 106 o observationPointId, meteringProcessId, exportingProcessId, and 107 selectorId have been added as optional configuration parameters, 108 setting the values of the corresponding Information Elements. 109 Note that monitoring device implementations are not obliged to 110 support the configuration of these ids, but may set them 111 dynamically. Currently not included is selectionSequenceId. 112 o Request for additional parameters concerning the composition of 113 IPFIX Messages at the exporter, e.g. how long may the exporter 114 wait until an expired record is exported? Waiting may be useful 115 in order to fill up IPFIX Messages. 116 We (the authors) decided not to add such parameters for the 117 following reasons: 1) the composition of IPFIX Messages has not 118 been described as configurable or managable in any other IPFIX 119 document, and 2) today's configuration possibilities depend very 120 much on the device or manufacturer. We propose to use device or 121 manufacturer-dependent extensions of the configuration data model. 123 2. Introduction 125 IPFIX and PSAMP compliant monitoring devices (routers, switches, 126 monitoring probes, mediators, collectors etc.) offer various 127 configuration possibilities that allow adapting network monitoring to 128 the goals and purposes of the application, e.g. accounting and 129 charging, traffic analysis, performance monitoring, security 130 monitoring etc. The use of a common device-independent configuration 131 data model for IPFIX and PSAMP compliant monitoring devices 132 facilitates network management and configuration, especially if 133 monitoring devices of different implementers and/or manufacturers are 134 deployed simultaneously. On the one hand, a device-independent 135 configuration data model helps storing and managing the configuration 136 data of monitoring devices in a consistent format. On the other 137 hand, it can also be used for local and remote configuration of 138 monitoring devices. However, this requires that monitoring devices 139 natively support the configuration data model, or that a mapping 140 between the configuration data model and the device-specific 141 representation of configuration data is provided. An appropriate 142 transport protocol is needed in the case of remote configuration. 144 The purpose of this document is the specification of a device- 145 independent configuration data model that covers the commonly 146 available configuration parameters of Metering Processes, Exporting 147 Processes, and Collecting Processes. The data model is encoded in 148 Extensible Markup Language (XML) [W3C.REC-xml-20040204]. An XML 149 document conforming to the configuration data model contains the 150 configuration data of one monitoring device. In order to ensure 151 compatibility with the Netconf protocol [RFC4741], YANG 152 [I-D.bjorklund-netconf-yang] is used as modeling language. If 153 required, the YANG specification of the configuration data model can 154 be converted into using XML Schema language 155 [W3C.REC-xmlschema-0-20041028] using the pyang tool [YANG-WEB]. YANG 156 provides mechanisms to augment the configuration data model with 157 additional device-specific or vendor-specific parameters. 159 For the configuration of remote monitoring devices, an appropriate 160 protocol is needed to transfer the XML encoded configuration data. 161 The configuration data model is compatible with the Netconf protocol 162 [RFC4741]. However, alternative protocols, such as the Simple Object 163 Access Protocol (SOAP) [W3C.REC-soap12-part1-20070427], are also 164 suitable for transferring XML data from a network management system 165 to a monitoring device. 167 2.1. IPFIX Documents Overview 169 The IPFIX protocol [RFC5101] provides network administrators with 170 access to IP flow information. The architecture for the export of 171 measured IP flow information out of an IPFIX exporting process to a 172 collecting process is defined in [I-D.ietf-ipfix-architecture], per 173 the requirements defined in [RFC3917]. This document specifies how 174 IPFIX data records and templates are carried via a number of 175 transport protocols from IPFIX exporting processes to IPFIX 176 collecting process. IPFIX has a formal description of IPFIX 177 information elements, their name, type and additional semantic 178 information, as specified in [RFC5102]. [I-D.ietf-ipfix-mib] 179 specifies the IPFIX Management Information Base. Finally 180 [I-D.ietf-ipfix-as] describes what type of applications can use the 181 IPFIX protocol and how they can use the information provided. It 182 furthermore shows how the IPFIX framework relates to other 183 architectures and frameworks. 185 2.2. PSAMP Documents Overview 187 The document "A Framework for Packet Selection and Reporting" 188 [I-D.ietf-psamp-framework] describes the PSAMP framework for network 189 elements to select subsets of packets by statistical and other 190 methods, and to export a stream of reports on the selected packets to 191 a collector. The set of packet selection techniques (sampling, 192 filtering, and hashing) supported by PSAMP are described in "Sampling 193 and Filtering Techniques for IP Packet Selection" 194 [I-D.ietf-psamp-sample-tech]. The PSAMP protocol 195 [I-D.ietf-psamp-protocol] specifies the export of packet information 196 from a PSAMP exporting process to a PSAMP collecting process. Like 197 IPFIX, PSAMP has a formal description of its information elements, 198 their name, type and additional semantic information. The PSAMP 199 information model is defined in [I-D.ietf-psamp-info]. Finally 200 [I-D.ietf-psamp-mib] describes the PSAMP Management Information Base. 202 3. Terminology 204 This document adopts the terminologies used in [RFC5101] and 205 [I-D.ietf-psamp-protocol]. As in [RFC5101], these specific terms 206 have the first letter of a word capitalized when used in this 207 document. 209 4. Structure of the Configuration Data Model 211 The IPFIX reference model in [I-D.ietf-ipfix-architecture] specifies 212 the role and function of Metering Processes, Exporting Processes, and 213 Collecting Processes. In [I-D.ietf-psamp-framework], the 214 corresponding information is specified for the PSAMP architecture. 215 IPFIX and PSAMP compliant monitoring device implementations usually 216 maintain the separation of Metering Processes, Exporting Processes, 217 and Collecting Processes (although they do not necessarily implement 218 all of them). Furthermore, they provide various configuration 219 possibilities; some of them are specified as mandatory by the IPFIX 220 protocol [RFC5101]. The configuration data model enables the setting 221 of commonly available configuration parameters for Metering 222 Processes, Exporting Processes, and Collecting Processes. In 223 addition, it allows specifying the composition of Metering Processes, 224 Exporting Processes, and Collecting Processes within a monitoring 225 device configuration. 227 The selection of commonly available configuration parameters is based 228 on configuration issues discussed in the IPFIX and PSAMP documents 229 [RFC3917], [RFC5101], [I-D.ietf-ipfix-architecture], 230 [I-D.ietf-psamp-protocol], [I-D.ietf-psamp-framework], and 231 [I-D.ietf-psamp-sample-tech]. Furthermore, the structure and content 232 of the IPFIX MIB module [I-D.ietf-ipfix-mib] and the PSAMP MIB module 233 [I-D.ietf-psamp-mib] were taken into consideration. Consistency 234 between the configuration data model and the IPFIX and PSAMP MIB 235 modules is an intended goal. Therefore, parameters in the 236 configuration data model are named according to corresponding managed 237 objects. 239 In the following, we use Unified Modeling Language (UML) class 240 diagrams to explain the structure of the configuration data model. 241 According to UML, different arrow types are used to distinguish two 242 different types of relationship between UML classes: aggregation and 243 association. 245 +---+ 0..* +---+ +---+ 0..* +---+ 246 | A |<>------| B | | A |------->| B | 247 +---+ +---+ +---+ +---+ 249 (a) Aggregation (b) Unidirectional association 251 Aggregation means that one class is part of the other. As an 252 example, class B is part of class A in example (a). An association 253 is a reference to an instance of another class. In example (b), 254 class A contains a reference to an instance of class B. The indicated 255 numbers define the multiplicity: 257 "1": one only 258 "0..*": zero or more 259 "1..*": one or more 261 In UML class diagrams, all classes that occur with multiplicity 262 greater than one in an aggregation relationship, and all classes that 263 are referenced in associations must have a key which allows 264 distinguishing different instances of the class. This key must be 265 unique within the given scope. Regarding example (a), all instances 266 of class B belonging to the same instance of class A must have keys; 267 the scope is local to the given instance of class A. In example (b), 268 all instance of class B must have unique keys as they can be 269 referenced by multiple instances of class A (i.e., the scope is 270 global). In YANG, there exists a corresponding rule which mandates 271 the existence of a key for all elements which appear in lists 272 [I-D.bjorklund-netconf-yang]. In the configuration data model, the 273 key is a string parameter called "name" for all classes. 275 Figure 1 shows the main classes the configuration data model. The 276 role of the classes can be briefly summarized as follows: 277 o The ObservationPoint class specifies an Observation Point (e.g. 278 interface) of the monitoring device which is used for traffic 279 monitoring. Furthermore, it configures Metering Processes that 280 process the observed packets. 281 o The MeteringProcess class represents a Metering Process. A 282 Metering Process requires a record cache which is represented by 283 an instance of the Cache class. In order to enable the usage of 284 the same record cache in multiple Metering Processes, the 285 MeteringProcess class contains only a reference to an instance of 286 the Cache class. Note that the usage of the same cache implies 287 that the Template defining the record format is identical for the 288 corresponding Metering Processes. Additionally, the 289 MeteringProcess class contains optional references to instances of 290 the SelectionProcess class forming a Selection Sequence. Only 291 those packets passing the sequence of Selection Processes enter 292 the record cache. If no references to instances of the 293 SelectionProcess class are specified, all observed packets enter 294 the record cache. 295 o The SelectionProcess class contains the configuration parameters 296 of a Selection Process, which is a Primitive Selector (i.e., 297 sampler or filter). An instance of the SelectionProcess class can 298 be referred from multiple Metering Processes, which allows the 299 application of the same Selection Process in different Metering 300 Processes. 301 o The Cache class contains configuration parameters of a cache which 302 stores the records in the monitoring device. Configuration 303 parameters of the Cache class specify the record format 304 (Template), expiration parameters, and cache size. In addition, 305 references to one or multiple Exporting Processes can be included. 306 An instance of the Cache class can be referred from multiple 307 Metering Processes, enabling the shared usage of the same record 308 cache in different Metering Processes. As the Template is defined 309 in the Cache class, using the same record cache implies that the 310 record format is identical. Also, the same Exporting Processes 311 will be used, as these are linked to the record cache. 312 o The ExportingProcess class contains configuration parameters of an 313 Exporting Process. It defines the export parameters and 314 destinations. An instance of the ExportingProcess class can be 315 referred from multiple instances of the Cache class. 317 +------------------+ 0..* +-----------------+ 318 | ObservationPoint |<>------| MeteringProcess | 319 +------------------+ +-----------------+ 320 | | 321 | | 322 | | 0..* 323 | V 324 | +------------------+ 325 | | SelectionProcess | 326 | +------------------+ 327 | 328 | 329 | 1 +------------------+ 330 +-->| Cache | 331 +------------------+ 332 | 333 | 334 | 0..* 335 V 336 +------------------+ 337 | ExportingProcess | 338 +------------------+ 340 Figure 1: Main classes of the configuration data model 342 As can be seen in Figure 1, the MeteringProcess class defines 343 references to instances of the SelectionProcess class and the Cache 344 class. It acts as an envelope element specifying a series of 345 Selection Processes, forming a Selection Sequence, and a record 346 cache. The order in which the user specifies Selection Processes in 347 the XML document corresponds to the order in which they are applied. 348 Hence, by using UML associations instead of aggregation 349 relationships, the same Selection Processes and record caches can be 350 deployed in different Metering Processes. An example is given in 351 Section 7.1. The MeteringProcess class itself is not instantiated, 352 but specified as part of the ObservationPoint class. Using the same 353 Metering Process with different Observation Points is achieved by 354 referring to the same instances of the SelectionProcess class and the 355 Cache class. Considering Selection Processes and Cache Parameters as 356 instances (and not the complete Metering Process) corresponds to the 357 common practice to implement Selection Processes and record caches as 358 independent modules. 360 The Cache class refers to instances of the ExportingProcess class, 361 which enables using the same Exporting Process for different Metering 362 Processes. 364 The CollectingProcess class is depicted in Figure 2. It configures 365 one or multiple listening ports or input files using the Receiver 366 class. If the monitoring device acts as a mediator or concentrator, 367 the MeteringProcess class is specified as part of the 368 CollectingProcess class. However, the CollectingProcess class also 369 allows referring to instances of the ExportingProcess class to export 370 the received records without modifications to a file or another 371 collector. 373 +-------------------+ 1..* +---------------+ 374 | |<>------| Receiver | 375 | CollectingProcess | +---------------+ 376 | | 377 | | 0..* +-----------------+ 378 | |<>------| MeteringProcess | 379 | | +-----------------+ 380 | | | | 381 | | | | 382 | | | | 0..* 383 | | | V 384 | | | +------------------+ 385 | | | | SelectionProcess | 386 | | | +------------------+ 387 | | | 388 | | | 389 | | | 1 +------------------+ 390 | | +-->| Cache | 391 | | +------------------+ 392 | | | 393 | | | 394 | | | 0..* 395 | | V 396 | | 0..* +------------------+ 397 | |------->| ExportingProcess | 398 +-------------------+ +------------------+ 400 Figure 2: CollectingProcess class 402 Each of the presented classes contains specific configuration 403 parameters which are specified in the next section. The formal 404 definition of the configuration data model in YANG is given in 405 Section 6. Section 7 illustrates the usage of the model with example 406 configurations in XML. 408 5. Configuration Parameters 410 This section specifies the configuration parameters of the 411 configuration data model separately for each class. Parameters 412 serving as keys are depicted in brackets. 414 5.1. ObservationPoint Class 416 +---------------------+ 417 | ObservationPoint | 418 +---------------------+ 1 +--------------------+ 419 | [name] |<>--------| Interface/Linecard | 420 | observationPointId | +--------------------+ 421 | observationDomainId | 422 | | 0..* +--------------------+ 423 | |<>--------| MeteringProcess | 424 +---------------------+ +--------------------+ 426 +------------------+ +----------------------------------+ 427 | Interface | | Linecard | 428 +------------------+ +----------------------------------+ 429 | ifIndex/ifName | | entPhysicalIndex/entPhysicalName | 430 | direction | | direction | 431 +------------------+ +----------------------------------+ 433 Figure 3: ObservationPoint class 435 The ObservationPoint class identifies an Observation Point of the 436 monitoring device, which is either an interface or a linecard. The 437 ObservationPoint class may specify the Observation Domain ID if the 438 monitoring device implementation supports this configuration. If 439 supported, the ObservationPoint class may also set the value of the 440 Information Element observationPointId [RFC5102]. 442 The configuration parameters to identify an interface or a linecard 443 are as follows: 445 o ifIndex/ifName: Either the index or name of the interface must be 446 specified according to corresponding objects in the IF-MIB 447 [RFC2863]. 448 o entPhysicalIndex/entPhysicalName: Either the index or name of the 449 linecard must be specified according to corresponding objects in 450 the ENTITY-MIB [RFC4133]. 451 o direction: This parameter specifies if ingress traffic, egress 452 traffic, or both, ingress and egress traffic is captured. If not 453 applicable (e.g., in the case of a sniffing interface in 454 promiscuous mode), this parameter is omitted. 456 The ObservationPoint class may configure one or multiple Metering 457 Processes which process the observed packets in parallel. 459 5.2. MeteringProcess Class 461 +-------------------+ 462 | MeteringProcess | 463 +-------------------+ 0..* +------------------+ 464 | [name] |------>| SelectionProcess | 465 | meteringProcessId | +------------------+ 466 | | 467 | | 1 +------------------+ 468 | |------>| Cache | 469 +-------------------+ +------------------+ 471 Figure 4: MeteringProcess class 473 The MeteringProcess class represents a Metering Process. It refers 474 to one instance of the Cache class that specifies a record cache in 475 the monitoring device. In addition, the MeteringProcess class may 476 refer to one or multiple instances of the SelectionProcess class 477 which specify sampling and filtering methods applied to the packets 478 before entering the record cache. The order of the Selection 479 Processes references in the XML document corresponds to the sequence 480 in which they are applied. If no SelectionProcess is specified, all 481 observed packets are selected. If supported by the monitoring device 482 implementation, the MeteringProcess class may set the value of the 483 Information Element meteringProcessId [RFC5102]. 485 5.3. SelectionProcess Class 487 +------------------+ 488 | SelectionProcess | 489 +------------------+ 1 +-----------------+ 490 | [name] |<>------+ SampCountBased/ | 491 | selectorId | | SampTimeBased/ | 492 | | | SampRandOutOfN/ | 493 | | | SampUniProb/ | 494 | | | SampNonUniProb/ | 495 | | | SampFlowState/ | 496 | | | FilterMatch/ | 497 | | | FilterHash/ | 498 | | | FilterRState | 499 +------------------+ +-----------------+ 501 Figure 5: SelectionProcess class 503 The SelectionProcess class contains the configuration parameters of a 504 Selection Process. In the configuration data model, a Selection 505 Process implements a Primitive Selector according to 506 [I-D.ietf-psamp-protocol]. Standardized PSAMP sampling and filtering 507 methods are described in [I-D.ietf-psamp-sample-tech]. The 508 configuration parameters of each method are specified in a 509 corresponding sampler (Samp*) or filter (Filter*) class. The 510 SelectionProcess class contains exactly one of these classes, 511 depending on the applied method. If supported by the monitoring 512 device implementation, the SelectionProcess class may set the value 513 of the Information Element selectorId [RFC5102]. 515 5.3.1. Sampler Classes 517 +----------------+ +----------------+ +----------------+ 518 | SampCountBased | | SampTimeBased | | SampRandOutOfN | 519 +----------------+ +----------------+ +----------------+ 520 | interval | | interval | | population | 521 | spacing | | spacing | | sample | 522 +----------------+ +----------------+ +----------------+ 524 +----------------+ +----------------+ +----------------+ 525 | SampUniProb | | SampNonUniProb | | SampFlowState | 526 +----------------+ +----------------+ +----------------+ 527 | probability | | function | | func | 528 | | | funcParam | | funcParam | 529 +----------------+ +----------------+ +----------------+ 531 Figure 6: Sampler classes 533 The names and semantic of the configuration parameters correspond to 534 the managed objects in the PSAMP MIB module [I-D.ietf-psamp-mib]. 536 5.3.2. Filter Classes 538 +----------------+ +----------------+ +----------------+ 539 | FilterMatch | | FilterHash | | FilterRState | 540 +----------------+ +----------------+ +----------------+ 541 | fieldId | | addrType | | function | 542 | startValue | | headerBits | | negate | 543 | stopValue | | payloadBytes | | ifIndex | 544 | mask | | payloadBits | | startAS | 545 | | | function | | stopAS | 546 | | | inputBits | | vendorFunc | 547 | | | outputBits | | | 548 | | | outputMask | | | 549 | | | selection | | | 550 +----------------+ +----------------+ +----------------+ 552 Figure 7: Filter classes 554 The names and semantic of the configuration parameters correspond to 555 the managed objects in the PSAMP MIB module [I-D.ietf-psamp-mib]. 557 5.4. Cache Class 559 +-----------------+ 560 | Cache | 561 +-----------------+ 1 +------------------+ 562 | [name] |<>------| Template | 563 | cacheType | +------------------+ 564 | cacheSize | 565 | activeTimeout | 0..* +------------------+ 566 | idleTimeout |------->| ExportingProcess | 567 +-----------------+ +------------------+ 569 Figure 8: Cache class 571 The Cache class contains the configuration parameters of a record 572 cache. The configuration parameters of the Cache class are as 573 follows: 575 o cacheType: "normal", "immediate", or "permanent". 576 o cacheSize: maximum number of records in the cache. 577 o activeTimeout: timeout after which an active Flow is timed out 578 anyway even if there is still a continuous flow of packets. 579 o idleTimeout: A Flow is considered to be timed out if no packets 580 belonging to the Flow have been observed for the amount of time 581 specified by this parameter. 583 The Cache class contains a Template definition which specifies the 584 record format. Furthermore, it may refer to one or multiple 585 instances of the ExportingProcess class, specifying the export 586 parameters and destinations. 588 5.4.1. Template Class 590 +------------+ 591 | Template | 592 +------------+ 0..* +------------------+ 593 | templateId |<>------| Field | 594 | | +------------------+ 595 | | | [name] | 596 | | | ieId/ieName | 597 | | | ieLength | 598 | | | enterpriseNumber | 599 | | | isFlowKey | 600 +------------+ +------------------+ 602 Figure 9: Template class 604 The Template class specifies the fields of a Template using the Field 605 class. The configuration parameters of the Template class and the 606 Field class are as follows: 608 o templateId: This is an optional parameter which allows specifying 609 a Template ID value for the Template. As specified in the IPFIX 610 protocol [RFC5101], the Template ID must be locally unique per 611 Observation Domain and Transport Session, which restricts the 612 usage of identical values for multiple Template definitions within 613 the same monitoring device configuration. If this parameter is 614 omitted, the Template ID will be assigned automatically by the 615 monitoring device. 616 o ieId, ieName, ieLength, enterpriseNumber: These parameters specify 617 a template field by identifier, name, length, and enterprise 618 number of an Information Element. Either ieId or ieName must be 619 specified. ieLength can be omitted if a default length exists of 620 the specified Information Element. enterpriseNumber must only be 621 inserted for enterprise-specific Information Elements. 622 o isFlowKey: If present, this field is a Flow Key. 624 The order of the fields in the XML document corresponds to the order 625 in the Template. 627 5.5. ExportingProcess Class 629 +--------------------+ 630 | ExportingProcess | 631 +--------------------+ 0..* +-------------+ 632 | [name] |<>------| Destination | 633 | exportingProcessId | +-------------+ 634 +--------------------+ 636 Figure 10: ExportingProcess class 638 The ExportingProcess class specifies a list of destinations to which 639 the measurement data are exported. If supported by the monitoring 640 device implementation, the ExportingProcess class may set the value 641 of the Information Element exportingProcessId [RFC5102]. 643 5.5.1. Destination Class 645 +-----------------+ 646 | Destination | 647 +-----------------+ 1 +-----------------------+ 648 | [name] |<>------| SctpExport/UdpExport/ | 649 | type | | TcpExport/FileExport | 650 | | +-----------------------+ 651 | | 652 | | 0..* +-----------------------+ 653 | |<>------| Option | 654 +-----------------+ +-----------------------+ 656 Figure 11: Destination class 658 The Destination class specifies one export destination of an 659 Exporting Process. The type parameter determines the Transport 660 Session type (primary, secondary, duplicate, load balancing, or 661 unused) and corresponds to the ipfixTransportSessionGroupMemberType 662 object in [I-D.ietf-ipfix-mib]. The Destination class contains 663 further configuration parameters that are specific to the transport 664 protocol used (SCTP, UDP, or TCP). It is also possible to export the 665 measurement data to a file as proposed in [I-D.ietf-ipfix-file]. 666 Optionally, the ExportingProcess class specifies the report of 667 additional information with Option Templates, using the Option class. 669 5.5.2. Export Parameters Classes 670 +--------------------------+ +--------------------------+ 671 | SctpExport | | TcpExport | 672 +--------------------------+ +--------------------------+ 673 | destinationIpAddress | | destinationIpAddress | 674 | destinationTransportPort | | destinationTransportPort | 675 | sourceIpAddress* | | | 676 | timedReliability | | | 677 +--------------------------+ +--------------------------+ 679 +------------------------------+ +-------------+ 680 | UdpExport | | FileExport | 681 +------------------------------+ +-------------+ 682 | destinationIpAddress | | uri | 683 | destinationTransportPort | +-------------+ 684 | sourceIpAddress | 685 | templateRefreshTimeout | 686 | templateRefreshPacket | 687 | optionTemplateRefreshTimeout | 688 | optionTemplateRefreshPacket | 689 +------------------------------+ 691 Figure 12: Export parameters classes 693 The configuration parameters of the export parameters classes are: 694 o destinationIpAddress, destinationTransportPort: destination IP 695 address and destination transport to be used for export with SCTP, 696 UDP, or TCP. 697 o timedReliability: lifetime until an IPFIX Message is "abandoned" 698 due to the timed reliability mechanism of PR-SCTP [RFC3758]. 699 o sourceIpAddress: In the case of UdpExport, this optional parameter 700 may appear once to set the source IP address. If this parameter 701 is omitted, the address assigned to the outgoing interface is 702 used. 703 In the case of SctpExport, this optional parameter may appear 704 multiple times to specify the list of eligible local IP addresses 705 of the SCTP association [RFC4960]. If omitted, all locally 706 assigned IP addresses are used by the SCTP endpoint. 707 o templateRefreshTimeout, templateRefreshPacket, 708 optionTemplateRefreshTimeout, optionTemplateRefreshPacket: 709 Template refresh parameters when using UDP as transport protocol. 710 o uri: file name and location encoded as URI if the measurement data 711 is exported to a file. 713 5.5.3. Option Class 715 +-----------+ 716 | Option | 717 +-----------+ 0..1 +----------------+ 718 | [name] |<>------| OptionTemplate | 719 | type | +----------------+ 720 | timeout | 721 +-----------+ 723 Figure 13: Option class 725 The Option class defines the type of additional information to be 726 reported, such as statistics, flow keys, sampling and filtering 727 parameters etc. [RFC5101] and [I-D.ietf-psamp-protocol] specify 728 several types of reporting information which may be exported. The 729 type can be one of the following: 730 meteringStatistics: export of Metering Process statistics using 731 the Metering Process Statistics Option Template [RFC5101]. 732 meteringReliability: export of Metering Process reliability 733 statistics using the Metering Process Reliability Statistics 734 Option Template [RFC5101]. 735 exportingReliability: export of Exporting Process reliability 736 statistics using the Exporting Process Reliability Statistics 737 Option Template [RFC5101]. 738 flowKeys: export of the Flow Key specification using the Flow Keys 739 Option Template [RFC5101]. 740 selectionSequence: export of Selection Sequence and Selector 741 Report Interpretation [I-D.ietf-psamp-protocol]. 742 selectionStatistics: export of Selection Sequence Statistics 743 Report Interpretation [I-D.ietf-psamp-protocol]. 744 accuracy: export of Accuracy Report Interpretation 745 [I-D.ietf-psamp-protocol]. 746 reducingRedundancy: export of common properties according to 747 [I-D.ietf-ipfix-reducing-redundancy]. 748 The Option Template can be specified manually, using the 749 OptionTemplate class. If no Option Template is specified, the 750 Exporter chooses a template definition automatically according to the 751 option type and available option data. 753 The timeout parameter specifies the reporting interval. If the 754 reporting timeout is zero, the corresponding reporting information 755 will be exported only once. Otherwise, the information is exported 756 periodically. 758 5.5.4. OptionTemplate Class 760 +----------------+ 761 | OptionTemplate | 762 +----------------+ 0..* +------------------+ 763 | templateId |<>------| OptionField | 764 | | +------------------+ 765 | | | [name] | 766 | | | ieId | 767 | | | ieName | 768 | | | ieLength | 769 | | | enterpriseNumber | 770 | | | isScope | 771 +----------------+ +------------------+ 773 Figure 14: OptionTemplate class 775 The Option Template class specifies the fields of an Option Template 776 using the OptionField class. The configuration parameters are the 777 same as for the Template and Field classes (see Section 5.4.1). If 778 the parameter isScope is present, the field is a scope field. 780 5.6. CollectingProcess Class and Receiver Class 782 +-------------------+ 783 | CollectingProcess | 784 +-------------------+ 785 | [name] | 1..* +------------------+ 786 | |<>-------| Receiver | 787 | | +------------------+ 1 +---------------+ 788 | | | [name] |<>----| SctpReceiver/ | 789 | | +------------------+ | UdpReceiver/ | 790 | | | TcpReceiver/ | 791 | | 0..* +------------------+ | FileImport | 792 | |<>-------| MeteringProcess | +---------------+ 793 | | +------------------+ 794 | | 795 | | 0..* +------------------+ 796 | |-------->| ExportingProcess | 797 +-------------------+ +------------------+ 799 +----------------+ +----------------+ 800 | SctpReceiver | | TcpReceiver | 801 +----------------+ +----------------+ 802 | ipAddress* | | ipAddress | 803 | transportPort | | transportPort | 804 +----------------+ +----------------+ 806 +-------------------------+ +------------+ 807 | UdpReceiver | | FileImport | 808 +-------------------------+ +------------+ 809 | ipAddress | | uri | 810 | transportPort | +------------+ 811 | defaultTemplateLifetime | 812 +-------------------------+ 814 Figure 15: CollectingProcess class and Receiver Class 816 The CollectingProcess class contains one or multiple receivers 817 specified with the Receiver class. The Receiver class contains 818 further configuration parameters that are specific to the transport 819 protocol used (SCTP, UDP, or TCP). Instead of receiving data from 820 the network, it is possible to import it from a file to which it as 821 been exported as proposed in [I-D.ietf-ipfix-file]. The 822 CollectingProcess class and the SctpReceiver, UdpReceiver, 823 TcpReceiver, and FileImport classes contain the following parameters: 825 o ipAddress, transportPort: IP address and port number of the 826 receiving port. If ipAddress is omitted, the Collecting Process 827 receives data sent to any local IP address. In the case of 828 SctpReceiver, multiple IP addresses can be specified as a list of 829 eligible local IP addresses to be used for the local SCTP endpoint 830 [RFC4960]. 831 o defaultTemplateLifetime: default template lifetime if UDP is used 832 as transport protocol, ignored otherwise. 833 o uri: file name and location encoded as URI if the measurement data 834 is imported from a file. 836 If the monitoring device is an IPFIX mediator or concentrator as 837 described in [I-D.kobayashi-ipfix-mediator-model] and 838 [I-D.dressler-ipfix-aggregation], the CollectingProcess class 839 specifies one or multiple Metering Processes. 841 The CollectingProcess class may refer to one or multiple instances of 842 the ExportingProcess class in order to export received records 843 without modifications to a file or another collector. 845 6. YANG Module of the IPFIX/PSAMP Configuration Data Model 847 The YANG module specification of the configuration data model is 848 specified as follows: 850 module ipfix-psamp { 851 namespace "urn:ietf:params:xml:ns:ipfix-psamp-config"; 852 prefix ipfix; 854 import yang-types { prefix yang; } 855 import inet-types { prefix inet; } 856 import IF-MIB { prefix if; } 857 import ENTITY-MIB { prefix ent; } 859 organization "IPFIX WG"; 860 contact "muenz@informatik.uni-tuebingen.de"; 862 description "IPFIX/PSAMP Configuration Data Model"; 864 revision 2008-02-20 { 865 description "Version of draft-muenz-ipfix-configuration-04 866 Changes in -04: 867 - first version in yang 868 - Collecting Process can be configured for file import 869 - Collecting Process can be configured to export received 870 records without modifications (e.g., to file or other collectors) 871 - SCTP export parameter timedReliability 872 - parameter for eligible local IP addresses for SCTP endpoint 873 - all tags names uncapitalized, types names etc. capitalized 874 - CacheParameters renamed as Cache 875 - description attribute removed 876 Changes in -03: 877 - Linecard and Interface classes now have direction element 878 - sec => s (SI unit) 879 - optional description attribute for annotations 880 - simplifications in ExportingProcess class 881 - new parameters: observationPointId, meteringProcessId, 882 selectorId, exportingProcessId (note that devices do not 883 have to support the configuration of these parameters) 884 - new FileExport class for exporting into a file 885 - Reporting class renamed Option Class 886 Changes in -02: 887 - new structure without next pointers 888 - packet reporting and flow metering replaced by record cache 889 - added reporting with options"; 890 } 892 grouping InformationElement { 893 description "Parameters of an Information Element."; 895 leaf ieEnterpriseNumber { 896 description "Omitted in the case of an IETF specified Information 897 Elements."; 898 type uint32; 899 } 901 choice NameOrId { 902 mandatory true; 903 leaf ieName { 904 type string; 905 } 906 leaf ieId { 907 type uint16; 908 } 909 } 911 leaf ieLength { 912 description "Length can be omitted if a default length exists for 913 the specified Information Element."; 914 type uint16; 915 } 916 } 918 typedef Direction { 919 description "Direction of packets going through an interface or 920 linecard."; 922 type enumeration { 923 enum ingress; 924 enum egress; 925 enum both; 926 } 927 } 929 grouping Interface { 930 description "Interface as input to Observation Point."; 932 choice IndexOrName { 933 description "Index or name of the interface as stored in the 934 ifTable of IF-MIB."; 935 reference "RFC 1229."; 936 mandatory true; 937 leaf ifIndex { type uint32; } 938 leaf ifName { type string; } 939 } 941 leaf direction { 942 description "Direction of packets. If not applicable (e.g., in the 943 case of a sniffing interface in promiscuous mode), this parameter 944 is omitted"; 945 type Direction; 946 } 947 } 949 grouping Linecard { 950 description "Linecard as input to Observation Point."; 952 choice IndexOrName { 953 description "Index or name of the linecard as stored in the 954 entPhysicalTable of ENTITY-MIB."; 955 reference "RFC 4133."; 956 mandatory true; 957 leaf entPhysicalIndex { type uint32; } 958 leaf entPhysicalName { type string; } 959 } 961 leaf direction { 962 description "Direction of packets. If not applicable (e.g., in the 963 case of a sniffing interface in promiscuous mode), this parameter 964 is omitted"; 965 type Direction; 966 } 967 } 969 grouping MeteringProcess { 970 description "Selection Processes and Record Cache of a Metering 971 Process."; 973 leaf meteringProcessId { 974 description "If omitted, the Metering Process ID is assigned by the 975 monitoring device."; 976 type uint32; 977 } 979 leaf-list selectionProcess { 980 description "Selection Processes are applied in the order of 981 their appearance. If no Selection Process is specified, all 982 packets are selected."; 983 ordered-by user; 984 type keyref { path "/ipfix/selectionProcess/name"; } 985 } 987 leaf cache { 988 mandatory true; 989 type keyref { path "/ipfix/cache/name"; } 990 } 991 } 993 container ipfix { 995 list collectingProcess { 996 description "Parameters of a Collecting Process."; 997 key name; 999 leaf name { 1000 description "Arbitrary but unique name of the Collecting Process."; 1001 type string; 1002 } 1004 list receiver { 1005 description "Receiver parameters."; 1006 key name; 1008 leaf name { type string; } 1010 choice TransportProtocol { 1011 mandatory true; 1012 container sctpReceiver { 1013 description "SCTP receiver parameters."; 1014 reference "RFC 4960."; 1015 leaf-list ipAddress { 1016 description "List of eligible local IP addresses to be used by 1017 the SCTP endpoint. If omitted, all locally assigned IP 1018 addresses are used by the SCTP endpoint."; 1019 type inet:ip-address; 1020 } 1021 leaf transportPort { 1022 mandatory true; 1023 type inet:port-number; 1024 } 1025 } 1026 container udpReceiver { 1027 description "UDP receiver parameters."; 1028 leaf ipAddress { 1029 description "If omitted, all locally assigned IP addresses are 1030 used by the UDP endpoint."; 1031 type inet:ip-address; 1032 } 1033 leaf transportPort { 1034 mandatory true; 1035 type inet:port-number; 1036 } 1037 leaf defaultTemplateLifetime { type uint32; } 1038 } 1039 container tcpReceiver { 1040 description "TCP receiver parameters."; 1041 leaf ipAddress { 1042 description "If omitted, all locally assigned IP addresses are 1043 used by the TCP endpoint."; 1044 type inet:ip-address; 1045 } 1046 leaf transportPort { 1047 mandatory true; 1048 type inet:port-number; 1049 } 1050 } 1051 container fileImport { 1052 description "File import parameters."; 1053 leaf uri { 1054 mandatory true; 1055 type yang:uri; 1056 } 1057 } 1058 } 1059 } 1061 list meteringProcess { 1062 description "Metering Processes process received records in parallel. 1063 Monitoring device acts as IPFIX mediator/concentrator."; 1065 key name; 1067 leaf name { 1068 description "Arbitrary but unique name of the Monitoring 1069 Process."; 1070 type string; 1071 } 1073 uses MeteringProcess; 1074 } 1076 leaf-list exportingProcess { 1077 description "Export of received records without any modifications. 1078 Records are exported by all Exporting Processes in the list."; 1079 type keyref { path "/ipfix/exportingProcess/name"; } 1080 } 1081 } 1083 list observationPoint { 1084 description "Parameters of an Observation Point."; 1085 key name; 1087 leaf name { 1088 description "Arbitrary but unique name of the Observation Point."; 1089 type string; 1090 } 1092 leaf observationPointId { 1093 description "If omitted, the Observation Point ID is assigned by the 1094 monitoring device."; 1095 type uint32; 1096 } 1098 leaf observationDomainId { 1099 description "If omitted, the Observation Domain ID is assigned by the 1100 monitoring device."; 1101 type uint32; 1102 } 1104 choice OPType { 1105 mandatory true; 1106 container interface { uses Interface; } 1107 container linecard { uses Linecard; } 1108 } 1110 list meteringProcess { 1111 description "Metering Processes process packets in parallel."; 1112 key name; 1113 leaf name { 1114 description "Arbitrary but unique name of the Monitoring 1115 Process."; 1116 type string; 1117 } 1119 uses MeteringProcess; 1120 } 1121 } 1123 list selectionProcess { 1124 description "Parameters of a Selection Process (i.e., Primitive 1125 Selector)."; 1126 key name; 1128 leaf name { 1129 description "Arbitrary but unique name of the Selection Process."; 1130 type string; 1131 } 1133 leaf selectorId { 1134 description "If omitted, the Selector ID is assigned by the 1135 monitoring device."; 1136 type uint32; 1137 } 1139 choice Method { 1140 description "See PSAMP-MIB for details about the selection methods 1141 and their parameters."; 1142 reference "draft-ietf-psamp-mib-06."; 1143 mandatory true; 1144 container sampCountBased { 1145 leaf interval { type uint32; } 1146 leaf spacing { type uint32; } 1147 } 1148 container sampTimeBased { 1149 leaf interval { type uint32; } 1150 leaf spacing { type uint32; } 1151 } 1152 container sampRandOutOfN { 1153 leaf population { type uint32; } 1154 leaf sample { type uint32; } 1155 } 1156 container sampUniProb { 1157 leaf probability { 1158 description "The given value must be divided by 4294967295."; 1159 type uint32; 1160 } 1162 } 1163 container sampNonUniProb { 1164 description "In PSAMP-MIB, these are OIDs."; 1165 leaf function { type string; } 1166 leaf funcParam { type string; } 1167 } 1168 container sampFlowState { 1169 description "In PSAMP-MIB, these are OIDs."; 1170 leaf function { type string; } 1171 leaf funcParam { type string; } 1172 } 1173 container filterMatch { 1174 leaf fieldId { type uint32; } 1175 leaf startValue { type string; } 1176 leaf stopValue { type string; } 1177 leaf mask { type string; } 1178 } 1179 container filterHash { 1180 description "In PSAMP-MIB, function and funcParam are OIDs."; 1181 leaf addrType { type inet:ip-version; } 1182 leaf headerBits { type string; } 1183 leaf payloadBytes { type uint32; } 1184 leaf payloadBits { type string; } 1185 leaf function { type string; } 1186 leaf funcParam { type string; } 1187 leaf inputBits { type uint32; } 1188 leaf outputBits { type uint32; } 1189 leaf outputMask { type string; } 1190 leaf selection { type string; } 1191 } 1192 container filterRState { 1193 description "In PSAMP-MIB, vendorFunc is OID."; 1194 leaf function { type int32; } 1195 leaf negate { type boolean; } 1196 leaf ifIndex { 1197 description "Index of the interface as stored in the ifTable 1198 of IF-MIB."; 1199 reference "RFC 2863."; 1200 type uint32; 1201 } 1202 leaf startAS { type inet:asn; } 1203 leaf stopAS { type inet:asn; } 1204 leaf vendorFunc { type string; } 1205 } 1206 } 1207 } 1209 list cache { 1210 description "Parameters of a cache."; 1211 key name; 1213 leaf name { 1214 description "Arbitrary but unique name of the cache."; 1215 type string; 1216 } 1218 leaf cacheType { 1219 type enumeration { 1220 enum normal { 1221 description "Flow expiration after active and idle timeout."; 1222 } 1223 enum immediate { 1224 description "Flow expiration after the first packet (PSAMP export)."; 1225 } 1226 enum permanent { 1227 description "No flow expiration, periodical export after active timeout."; 1228 } 1229 } 1230 } 1232 leaf cacheSize { type uint32; } 1234 leaf activeTimeout { type yang:timeticks; } 1236 leaf idleTimeout { type yang:timeticks; } 1238 container template { 1239 leaf templateId { 1240 description "If omitted, the Template ID is assigned by the 1241 monitoring device."; 1242 type uint16; 1243 } 1245 list field { 1246 key name; 1247 ordered-by user; 1249 leaf name { type string; } 1251 uses InformationElement; 1253 leaf isFlowKey { type empty; } 1254 } 1255 } 1257 leaf-list exportingProcess { 1258 description "Records are exported by all Exporting Processes in the list."; 1259 type keyref { path "/ipfix/exportingProcess/name"; } 1260 } 1261 } 1263 list exportingProcess { 1264 description "Parameters of an Exporting Process."; 1265 key name; 1267 leaf name { 1268 description "Arbitrary but unique name of the Exporting Process."; 1269 type string; 1270 } 1272 leaf exportingProcessId { 1273 description "If omitted, the Exporting Process ID is assigned by the 1274 monitoring device."; 1275 type uint32; 1276 } 1278 list destination { 1279 key name; 1281 leaf name { type string; } 1283 leaf type { 1284 description "Transport Session type according to IPFIX-MIB"; 1285 reference "draft-ietf-ipfix-mib-02."; 1286 type enumeration { 1287 enum primary; 1288 enum secondary; 1289 enum duplicate; 1290 enum loadBalancing; 1291 enum unused; 1292 } 1293 } 1295 choice TransportProtocol { 1296 mandatory true; 1297 container sctpExport { 1298 description "SCTP export parameters."; 1299 reference "RFC 3758, RFC 4960."; 1300 leaf destinationIpAddress { 1301 mandatory true; 1302 type inet:ip-address; 1303 } 1304 leaf destinationTransportPort { 1305 mandatory true; 1306 type inet:port-number; 1307 } 1308 leaf-list sourceIpAddress { 1309 description "List of eligible local IP addresses to be used by 1310 the SCTP endpoint. If omitted, all locally assigned IP 1311 addresses are used by the local endpoint."; 1312 type inet:ip-address; 1313 } 1314 leaf timedReliability { type yang:timeticks; } 1315 } 1316 container udpExport { 1317 description "UDP export parameters."; 1318 leaf destinationIpAddress { 1319 mandatory true; 1320 type inet:ip-address; 1321 } 1322 leaf destinationTransportPort { 1323 mandatory true; 1324 type inet:port-number; 1325 } 1326 leaf sourceIpAddress { 1327 description "Source IP address. If omitted, the address 1328 assigned to the outgoing interface is used."; 1329 type inet:ip-address; 1330 } 1331 leaf templateRefreshTimeout { type yang:timeticks; } 1332 leaf templateRefreshPacket { type uint32; } 1333 leaf optionTemplateRefreshTimeout { type yang:timeticks; } 1334 leaf optionTemplateRefreshPacket { type uint32; } 1335 } 1336 container tcpExport { 1337 description "TCP export parameters."; 1338 leaf destinationIpAddress { 1339 mandatory true; 1340 type inet:ip-address; 1341 } 1342 leaf destinationTransportPort { 1343 mandatory true; 1344 type inet:port-number; 1345 } 1346 } 1347 container fileExport { 1348 description "File export parameters."; 1349 leaf uri { 1350 mandatory true; 1351 type yang:uri; 1352 } 1353 } 1355 } 1357 list option { 1358 key name; 1359 leaf name { type string; } 1360 leaf type { 1361 mandatory true; 1362 type enumeration { 1363 enum "meteringStatistics" { 1364 description "Metering Process Statistics."; 1365 reference "RFC 5101, section 4.1."; 1366 } 1367 enum "meteringReliability" { 1368 description "Metering Process Reliability Statistics."; 1369 reference "RFC 5101, section 4.2."; 1370 } 1371 enum "exportingReliability" { 1372 description "Exporting Process Reliability Statistics."; 1373 reference "RFC 5101, section 4.3."; 1374 } 1375 enum "flowKeys" { 1376 description "Flow Keys."; 1377 reference "RFC 5101, section 4.4."; 1378 } 1379 enum "selectionSequence" { 1380 description "Selection Sequence and Selector Reports."; 1381 reference "draft-ietf-psamp-protocol-09, section 6.5.1 and 1382 6.5.2."; 1383 } 1384 enum "selectionStatistics" { 1385 description "Selection Sequence Statistics Report."; 1386 reference "draft-ietf-psamp-protocol-09, section 6.5.3."; 1387 } 1388 enum "accuracy" { 1389 description "Accuracy Report."; 1390 reference "draft-ietf-psamp-protocol-09, section 6.5.4."; 1391 } 1392 enum "reducingRedundancy" { 1393 description "Application of ipfix-reducing-redundancy."; 1394 } 1395 } 1396 } 1397 leaf timeout { 1398 description "Time interval for exporting option data."; 1399 type yang:timeticks; 1400 } 1401 container optionTemplate { 1402 description "If no Option Template is specified, the Exporter 1403 defines a template according to option type and available 1404 option data."; 1405 leaf templateId { 1406 description "If omitted, the Template ID is assigned by the 1407 monitoring device."; 1408 type uint16; 1409 } 1410 list optionField { 1411 key name; 1412 ordered-by user; 1413 leaf name { type string; } 1414 uses InformationElement; 1415 leaf isScope { type empty; } 1416 } 1417 } 1418 } 1419 } 1420 } 1421 } 1422 } 1424 7. Examples 1426 This section shows example configurations conforming to the YANG 1427 module specified in Section 6. 1429 7.1. PSAMP Monitoring Device 1431 This example shows two PSAMP Metering Processes configured for the 1432 same Observation Point. The first Metering Process consists of a 1433 Selection Sequence out of two Selection Processes, a filter for UDP 1434 packets and a random sampler, the second is just an ICMP filter. The 1435 two Metering Processes deploy the same cache. The configuration 1436 assumes that the monitoring device supports the configuration of 1437 values for observationPointId, meteringProcessId, selectorId, and 1438 exportingProcessId. Exporter statistics are reported using a 1439 manually specified Option Template. 1441 1443 1444 OP at linecard 3 1445 1 1446 12345 1447 1448 3 1450 1451 1452 Reports of sampled UDP packets 1453 1 1454 UDP filter 1455 10-out-of-100 sampler 1456 PSAMP cache 1457 1458 1459 Reports of ICMP packets 1460 2 1461 ICMP filter 1462 PSAMP cache 1463 1464 1466 1467 UDP filter 1468 1 1469 1470 4 1471 17 1472 17 1473 1474 1476 1477 ICMP filter 1478 2 1479 1480 4 1481 1 1482 1 1483 1484 1486 1487 10-out-of-100 sampler 1488 3 1489 1490 100 1491 10 1492 1493 1495 1496 PSAMP cache 1497 immediate 1498 512 1499 1510 The only exporter 1511 1513 1514 The only exporter 1515 1 1516 1517 PR-SCTP collector 1518 primary 1519 1520 192.0.2.1 1521 4739 1522 200 1523 1524 1540 1541 1543 1545 7.2. IPFIX Monitoring Device 1547 This example demonstrates the shared usage of a record cache in two 1548 different Metering Processes. Packets observed at two different 1549 Observation Points are selected using different sampling techniques. 1550 Selected packets from both Observation Points enter the same record 1551 cache. The Exporting Process sends the records to a primary 1552 destination using SCTP. A UDP Collector is specified as secondary, 1553 i.e. backup destination. 1555 1557 1558 OP at eth0 (ingress) 1559 12345 1560 1561 eth0 1562 ingress 1563 1564 1565 Flows of sampled packets 1566 Count-based sampler 1567 Flow cache 1568 1569 1571 1572 OP at eth1 1573 12346 1574 1575 eth1 1576 1577 1578 Flows of sampled packets 1579 Time-based sampler 1580 Flow Cache 1581 1582 1584 1585 Count-based sampler 1586 1587 1 1588 99 1589 1590 1592 1593 Time-based sampler 1594 1595 20 1596 980 1597 1598 1600 1601 Flow cache 1602 normal 1603 4096 1604 5 1605 10 1606 1649 SCTP export with UDP backup 1650 1652 1653 SCTP export with UDP backup 1654 1655 SCTP destination 1656 primary 1657 1658 192.0.2.1 1659 4739 1660 1661 1666 1671 1672 1673 UDP destination 1674 secondary 1675 1676 192.0.2.2 1677 4739 1678 127.0.0.1 1679 6000 1680 6000 1681 1682 1687 1688 1690 1692 7.3. Collector Monitoring Device 1694 This example configures a collector which writes the received records 1695 to a file. 1697 1699 1700 SCTP collector 1701 1702 Listening port 4739 1703 1704 192.0.2.1 1705 4739 1706 1707 1708 File writer 1709 1711 1712 File writer 1713 1714 File destination 1715 primary 1716 1717 file://tmp/collected-records.ipfix 1718 1719 1720 1722 1724 8. Security Considerations 1726 The XML Schema Definition of the configuration data model has been 1727 conceived to enable its usage with different device implementations. 1728 In order to keep the XML Schema Definition simple and flexible, no 1729 precautions have been made to ensure that only complete and 1730 meaningful configurations can be specified. For example, most of the 1731 elements are declared optional. Furthermore, the necessary 1732 communication of device capabilities to the network management system 1733 and the corresponding limitations and adaptations of the 1734 configuration data model are not specified in this document. Hence, 1735 the XML Schema Definition does not ensure that conforming XML 1736 documents describe configurations that are both complete and 1737 supported by a given device. Users should make sure that 1738 configuration data is validated and checked against the capabilities 1739 of the device before configuring it. If configuration data is 1740 incomplete, invalid or unsupported, it must be rejected by the device 1741 and the previous configuration should remain active. In addition, an 1742 error message should be returned specifying the reason for the error 1743 of any failed configuration attempt. 1745 Appendix A. Acknowledgements 1747 The authors thank Martin Bjorklund for helping specifying the 1748 configuration data model in YANG. 1750 9. References 1752 9.1. Normative References 1754 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1755 Requirement Levels", BCP 14, RFC 2119, March 1997. 1757 [RFC5101] Claise, B., "Specification of the IP Flow Information 1758 Export (IPFIX) Protocol for the Exchange of IP Traffic 1759 Flow Information", RFC 5101, January 2008. 1761 [RFC5102] Quittek, J., Bryant, S., Claise, B., Aitken, P., and J. 1762 Meyer, "Information Model for IP Flow Information Export", 1763 RFC 5102, January 2008. 1765 [I-D.ietf-psamp-protocol] 1766 Claise, B., "Packet Sampling (PSAMP) Protocol 1767 Specifications", draft-ietf-psamp-protocol-09 (work in 1768 progress), December 2007. 1770 [I-D.ietf-psamp-info] 1771 Dietz, T., Dressler, F., Carle, G., Claise, B., and P. 1772 Aitken, "Information Model for Packet Sampling Exports", 1773 draft-ietf-psamp-info-07 (work in progress), October 2007. 1775 [W3C.REC-xml-20040204] 1776 Bray, T., Maler, E., Yergeau, F., Sperberg-McQueen, C., 1777 and J. Paoli, "Extensible Markup Language (XML) 1.0 (Third 1778 Edition)", World Wide Web Consortium FirstEdition REC-xml- 1779 20040204, February 2004, 1780 . 1782 [I-D.bjorklund-netconf-yang] 1783 Bjorklund, M., "YANG - A data modeling language for 1784 NETCONF", draft-bjorklund-netconf-yang-02 (work in 1785 progress), February 2008. 1787 9.2. Informative References 1789 [W3C.REC-xmlschema-0-20041028] 1790 Fallside, D. and P. Walmsley, "XML Schema Part 0: Primer 1791 Second Edition", World Wide Web Consortium 1792 Recommendation REC-xmlschema-0-20041028, October 2004, 1793 . 1795 [RFC4741] Enns, R., "NETCONF Configuration Protocol", RFC 4741, 1796 December 2006. 1798 [W3C.REC-soap12-part1-20070427] 1799 Nielsen, H., Lafon, Y., Hadley, M., Mendelsohn, N., 1800 Moreau, J., Gudgin, M., and A. Karmarkar, "SOAP Version 1801 1.2 Part 1: Messaging Framework (Second Edition)", World 1802 Wide Web Consortium Recommendation REC-soap12-part1- 1803 20070427, April 2007, 1804 . 1806 [I-D.ietf-ipfix-as] 1807 Zseby, T., "IPFIX Applicability", draft-ietf-ipfix-as-12 1808 (work in progress), July 2007. 1810 [I-D.ietf-ipfix-architecture] 1811 Sadasivan, G., "Architecture for IP Flow Information 1812 Export", draft-ietf-ipfix-architecture-12 (work in 1813 progress), September 2006. 1815 [I-D.ietf-ipfix-mib] 1816 Dietz, T., Kobayashi, A., and B. Claise, "Definitions of 1817 Managed Objects for IP Flow Information Export", 1818 draft-ietf-ipfix-mib-02 (work in progress), December 2007. 1820 [I-D.ietf-ipfix-file] 1821 Trammell, B., Boschi, E., Mark, L., Zseby, T., and A. 1822 Wagner, "An IPFIX-Based File Format", 1823 draft-ietf-ipfix-file-00 (work in progress), January 2008. 1825 [I-D.ietf-ipfix-reducing-redundancy] 1826 Boschi, E., "Reducing Redundancy in IP Flow Information 1827 Export (IPFIX) and Packet Sampling (PSAMP) Reports", 1828 draft-ietf-ipfix-reducing-redundancy-04 (work in 1829 progress), May 2007. 1831 [RFC3917] Quittek, J., Zseby, T., Claise, B., and S. Zander, 1832 "Requirements for IP Flow Information Export (IPFIX)", 1833 RFC 3917, October 2004. 1835 [RFC3758] Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P. 1836 Conrad, "Stream Control Transmission Protocol (SCTP) 1837 Partial Reliability Extension", RFC 3758, May 2004. 1839 [RFC4960] Stewart, R., "Stream Control Transmission Protocol", 1840 RFC 4960, September 2007. 1842 [I-D.dressler-ipfix-aggregation] 1843 Dressler, F., Sommer, C., Muenz, G., and A. Kobayashi, 1844 "IPFIX Flow Aggregation", 1845 draft-dressler-ipfix-aggregation-04 (work in progress), 1846 November 2007. 1848 [I-D.kobayashi-ipfix-mediator-model] 1849 Kobayashi, A., Ishibashi, K., Tsuyoshi, K., and D. 1850 Matsubara, "Reference Model for IPFIX Mediators", 1851 draft-kobayashi-ipfix-mediator-model-01 (work in 1852 progress), November 2007. 1854 [I-D.ietf-psamp-framework] 1855 Duffield, N., "A Framework for Packet Selection and 1856 Reporting", draft-ietf-psamp-framework-12 (work in 1857 progress), June 2007. 1859 [I-D.ietf-psamp-mib] 1860 Dietz, T. and B. Claise, "Definitions of Managed Objects 1861 for Packet Sampling", draft-ietf-psamp-mib-06 (work in 1862 progress), June 2006. 1864 [I-D.ietf-psamp-sample-tech] 1865 Zseby, T., "Sampling and Filtering Techniques for IP 1866 Packet Selection", draft-ietf-psamp-sample-tech-10 (work 1867 in progress), June 2007. 1869 [RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group 1870 MIB", RFC 2863, June 2000. 1872 [RFC4133] Bierman, A. and K. McCloghrie, "Entity MIB (Version 3)", 1873 RFC 4133, August 2005. 1875 [YANG-WEB] 1876 Bjoerklund, M., "YANG WebHome", 1877 Homepage http://www.yang-central.org, February 2008. 1879 Authors' Addresses 1881 Gerhard Muenz 1882 University of Tuebingen 1883 Computer Networks and Internet 1884 Sand 13 1885 Tuebingen D-72076 1886 DE 1888 Phone: +49 7071 29-70534 1889 Email: muenz@informatik.uni-tuebingen.de 1890 URI: http://net.informatik.uni-tuebingen.de/~muenz 1892 Benoit Claise 1893 Cisco Systems, Inc. 1894 De Kleetlaan 6a b1 1895 Diegem 1831 1896 BE 1898 Phone: +32 2 704 5622 1899 Email: bclaise@cisco.com 1901 Full Copyright Statement 1903 Copyright (C) The IETF Trust (2008). 1905 This document is subject to the rights, licenses and restrictions 1906 contained in BCP 78, and except as set forth therein, the authors 1907 retain all their rights. 1909 This document and the information contained herein are provided on an 1910 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 1911 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 1912 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 1913 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 1914 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 1915 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 1917 Intellectual Property 1919 The IETF takes no position regarding the validity or scope of any 1920 Intellectual Property Rights or other rights that might be claimed to 1921 pertain to the implementation or use of the technology described in 1922 this document or the extent to which any license under such rights 1923 might or might not be available; nor does it represent that it has 1924 made any independent effort to identify any such rights. Information 1925 on the procedures with respect to rights in RFC documents can be 1926 found in BCP 78 and BCP 79. 1928 Copies of IPR disclosures made to the IETF Secretariat and any 1929 assurances of licenses to be made available, or the result of an 1930 attempt made to obtain a general license or permission for the use of 1931 such proprietary rights by implementers or users of this 1932 specification can be obtained from the IETF on-line IPR repository at 1933 http://www.ietf.org/ipr. 1935 The IETF invites any interested party to bring to its attention any 1936 copyrights, patents or patent applications, or other proprietary 1937 rights that may cover technology that may be required to implement 1938 this standard. Please address the information to the IETF at 1939 ietf-ipr@ietf.org. 1941 Acknowledgment 1943 Funding for the RFC Editor function is provided by the IETF 1944 Administrative Support Activity (IASA).