| < draft-ietf-ipfix-testing-04.txt | draft-ietf-ipfix-testing-05.txt > | |||
|---|---|---|---|---|
| IPFIX Working Group C. Schmoll | IPFIX Working Group C. Schmoll | |||
| Internet-Draft Fraunhofer FOKUS | Internet-Draft Fraunhofer FOKUS | |||
| Intended status: Informational P. Aitken | Intended status: Informational P. Aitken | |||
| Expires: August 14, 2008 B. Claise | Expires: October 16, 2008 B. Claise | |||
| Cisco Systems | Cisco Systems | |||
| February 11, 2008 | April 14, 2008 | |||
| Guidelines for IP Flow Information eXport (IPFIX) Testing | Guidelines for IP Flow Information eXport (IPFIX) Testing | |||
| draft-ietf-ipfix-testing-04.txt | draft-ietf-ipfix-testing-05.txt | |||
| 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 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
| 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 August 14, 2008. | This Internet-Draft will expire on October 16, 2008. | |||
| Copyright Notice | ||||
| Copyright (C) The IETF Trust (2008). | ||||
| Abstract | Abstract | |||
| This document presents a list of tests that implementers of IP Flow | This document presents a list of tests for implementers of IP Flow | |||
| Information Export (IPFIX) compliant Exporting Processes and | Information Export (IPFIX) compliant Exporting Processes and | |||
| Collecting Processes should perform on their IPFIX Exporting Process | Collecting Processes. This document specifies guidelines for a | |||
| and/or Collecting Process. This document has been created to help | series of tests that can be run on the IPFIX Exporting Process and | |||
| implementers test the functionality of their IPFIX Exporting Process | Collecting Process in order to probe the conformity and robustness of | |||
| and/or Collecting Process. The goal of these tests is to ensure that | the IPFIX protocol implementations. These tests cover all important | |||
| all important functions are covered by tests and thereby to gain a | functions, in order to gain a level of confidence in the IPFIX | |||
| level of confidence in the Exporting Process and Collecting Process | implementation. Therefore they allow the implementer to perform | |||
| that allows the implementer to perform interoperability or plug tests | interoperability or plug tests with other IPFIX Exporting Processes | |||
| with other IPFIX Exporting Processes and Collecting Processes. | and Collecting Processes. | |||
| Conventions used in this document | Conventions used in this document | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.1. Document Scope . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1.2. Document Scope . . . . . . . . . . . . . . . . . . . . . . 5 | 1.2. IPFIX Documents Overview . . . . . . . . . . . . . . . . . 5 | |||
| 1.3. IPFIX Documents Overview . . . . . . . . . . . . . . . . . 5 | ||||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3. Test Specifications . . . . . . . . . . . . . . . . . . . . . 12 | 3. Test Specifications . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.1. Exporting Process / Collecting Process connectivity | 3.1. Exporting Process / Collecting Process connectivity | |||
| tests . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | tests . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.1.1. Connectivity tests between Exporting Process and | 3.1.1. Connectivity tests between Exporting Process and | |||
| Collecting Process . . . . . . . . . . . . . . . . . . 12 | Collecting Process . . . . . . . . . . . . . . . . . . 8 | |||
| 3.2. Template and Data Record tests . . . . . . . . . . . . . . 13 | 3.2. Template and Data Record tests . . . . . . . . . . . . . . 9 | |||
| 3.2.1. Transmission of Template with fixed size | 3.2.1. Transmission of Template with fixed size | |||
| Information Elements . . . . . . . . . . . . . . . . . 13 | Information Elements . . . . . . . . . . . . . . . . . 9 | |||
| 3.2.2. Transmission of Template with variable length | 3.2.2. Transmission of Template with variable length | |||
| Information Elements . . . . . . . . . . . . . . . . . 13 | Information Elements . . . . . . . . . . . . . . . . . 9 | |||
| 3.2.3. Set Padding . . . . . . . . . . . . . . . . . . . . . 13 | 3.2.3. Set Padding . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.2.4. Record Padding . . . . . . . . . . . . . . . . . . . . 14 | 3.2.4. Record Padding . . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.2.5. Template Withdrawal Message . . . . . . . . . . . . . 15 | 3.2.5. Template Withdrawal Message . . . . . . . . . . . . . 11 | |||
| 3.3. Information Element tests . . . . . . . . . . . . . . . . 17 | 3.3. Information Element tests . . . . . . . . . . . . . . . . 13 | |||
| 3.3.1. Enterprise-specific Information Elements . . . . . . . 17 | 3.3.1. Enterprise-specific Information Elements . . . . . . . 13 | |||
| 3.3.2. Reduced Size Encoding of Information Elements . . . . 17 | 3.3.2. Reduced Size Encoding of Information Elements . . . . 13 | |||
| 3.3.3. Multiple instances of the same Information Element | 3.3.3. Multiple instances of the same Information Element | |||
| in one Template . . . . . . . . . . . . . . . . . . . 17 | in one Template . . . . . . . . . . . . . . . . . . . 13 | |||
| 3.4. Options Template tests . . . . . . . . . . . . . . . . . . 18 | 3.4. Options Template tests . . . . . . . . . . . . . . . . . . 14 | |||
| 3.4.1. Using any Information Elements as Scope . . . . . . . 18 | 3.4.1. Using any Information Elements as Scope . . . . . . . 14 | |||
| 3.4.2. Using multiple Scopes . . . . . . . . . . . . . . . . 19 | 3.4.2. Using multiple Scopes . . . . . . . . . . . . . . . . 15 | |||
| 3.4.3. Metering Process Statistics Option Template . . . . . 19 | 3.4.3. Metering Process Statistics Option Template . . . . . 15 | |||
| 3.4.4. Metering Process Reliability Statistics Option | 3.4.4. Metering Process Reliability Statistics Option | |||
| Template . . . . . . . . . . . . . . . . . . . . . . . 19 | Template . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 3.4.5. Exporting Process Reliability Statistics Option | 3.4.5. Exporting Process Reliability Statistics Option | |||
| Template . . . . . . . . . . . . . . . . . . . . . . . 20 | Template . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 3.4.6. Flow Keys Option Template . . . . . . . . . . . . . . 20 | 3.4.6. Flow Keys Option Template . . . . . . . . . . . . . . 16 | |||
| 3.5. Stress/Load tests . . . . . . . . . . . . . . . . . . . . 21 | 3.5. Stress/Load tests . . . . . . . . . . . . . . . . . . . . 17 | |||
| 3.5.1. Large number of Records for one Template . . . . . . . 21 | 3.5.1. Large number of Records for one Template . . . . . . . 17 | |||
| 3.5.2. Excessive rate of incoming Data Records . . . . . . . 21 | 3.5.2. Excessive rate of incoming Data Records . . . . . . . 17 | |||
| 3.5.3. Large Templates . . . . . . . . . . . . . . . . . . . 22 | 3.5.3. Large Templates . . . . . . . . . . . . . . . . . . . 18 | |||
| 3.5.4. Many new Templates within Data Template timeout | 3.5.4. Many new Templates within Data Template timeout | |||
| interval . . . . . . . . . . . . . . . . . . . . . . . 22 | interval . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 3.5.5. Multiple Exporting Processes exporting to one | 3.5.5. Multiple Exporting Processes exporting to one | |||
| Collecting Process . . . . . . . . . . . . . . . . . . 22 | Collecting Process . . . . . . . . . . . . . . . . . . 18 | |||
| 3.5.6. Export from one Exporting Process to multiple | 3.5.6. Export from one Exporting Process to multiple | |||
| Collecting Processes . . . . . . . . . . . . . . . . . 23 | Collecting Processes . . . . . . . . . . . . . . . . . 19 | |||
| 3.6. Error handling . . . . . . . . . . . . . . . . . . . . . . 23 | 3.6. Error handling . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 3.6.1. Temporary network disconnect . . . . . . . . . . . . . 23 | 3.6.1. Temporary network disconnect . . . . . . . . . . . . . 19 | |||
| 3.6.2. Exporting Process termination and restart during | 3.6.2. Exporting Process termination and restart during | |||
| data transmission . . . . . . . . . . . . . . . . . . 24 | data transmission . . . . . . . . . . . . . . . . . . 20 | |||
| 3.6.3. Collecting Process termination and restart during | 3.6.3. Collecting Process termination and restart during | |||
| data transmission . . . . . . . . . . . . . . . . . . 24 | data transmission . . . . . . . . . . . . . . . . . . 20 | |||
| 3.6.4. Incorrect Template Records and Options Template | 3.6.4. Incorrect Template Records and Options Template | |||
| Records . . . . . . . . . . . . . . . . . . . . . . . 25 | Records . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 3.6.5. Incorrect Data Record . . . . . . . . . . . . . . . . 28 | 3.6.5. Incorrect Data Record . . . . . . . . . . . . . . . . 24 | |||
| 3.6.6. Export of non-matching Template and Data Records . . . 28 | 3.6.6. Export of non-matching Template and Data Records . . . 24 | |||
| 3.6.7. Incorrect Set IDs . . . . . . . . . . . . . . . . . . 29 | 3.6.7. Incorrect Set IDs . . . . . . . . . . . . . . . . . . 25 | |||
| 3.6.8. Re-using Template IDs . . . . . . . . . . . . . . . . 29 | 3.6.8. Re-using Template IDs . . . . . . . . . . . . . . . . 25 | |||
| 3.7. TLS connectivity and policy selection . . . . . . . . . . 33 | 3.7. TLS connectivity and policy selection . . . . . . . . . . 29 | |||
| 3.7.1. TLS test setup . . . . . . . . . . . . . . . . . . . . 33 | 3.7.1. TLS test setup . . . . . . . . . . . . . . . . . . . . 29 | |||
| 3.7.2. TLS over TCP connectivity test . . . . . . . . . . . . 34 | 3.7.2. TLS over TCP connectivity test . . . . . . . . . . . . 30 | |||
| 3.7.3. DTLS over UDP connectivity test . . . . . . . . . . . 34 | 3.7.3. DTLS over UDP connectivity test . . . . . . . . . . . 30 | |||
| 3.7.4. DTLS over PR-SCTP connectivity test . . . . . . . . . 34 | 3.7.4. DTLS over PR-SCTP connectivity test . . . . . . . . . 30 | |||
| 3.7.5. TLS bidirectional authentication policy test . . . . . 35 | 3.7.5. TLS bidirectional authentication policy test . . . . . 31 | |||
| 3.7.6. Exporting Process Identity Mismatch TLS Policy test . 35 | 3.7.6. Exporting Process Identity Mismatch TLS Policy test . 31 | |||
| 3.7.7. Collecting Process Identity Mismatch TLS Policy | 3.7.7. Collecting Process Identity Mismatch TLS Policy | |||
| test . . . . . . . . . . . . . . . . . . . . . . . . . 35 | test . . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 4. Security considerations . . . . . . . . . . . . . . . . . . . 37 | 4. Security considerations . . . . . . . . . . . . . . . . . . . 33 | |||
| 5. IANA considerations . . . . . . . . . . . . . . . . . . . . . 38 | 5. IANA considerations . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 39 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 40 | 7. Normative references . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 7.1. Normative references . . . . . . . . . . . . . . . . . . . 40 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 7.2. Informative references . . . . . . . . . . . . . . . . . . 40 | Intellectual Property and Copyright Statements . . . . . . . . . . 38 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 41 | ||||
| Intellectual Property and Copyright Statements . . . . . . . . . . 42 | ||||
| 1. Introduction | 1. Introduction | |||
| An IPFIX implementation, whether in software, firmware, or hardware, | An IPFIX implementation, whether in software, firmware, or hardware, | |||
| needs to be tested thoroughly in order to check its robustness and | needs to be tested thoroughly in order to check its robustness, gain | |||
| the conformity to the IPFIX documents it is based on. | confidence in the conformity to the IPFIX documents it is based on. | |||
| For a testable IPFIX software toolkit one needs at least one IPFIX | For a testable IPFIX software toolkit one needs at least one IPFIX | |||
| Exporting Process and one IPFIX Collecting Process. | Exporting Process and one IPFIX Collecting Process. However when one | |||
| has for example only implemented a collector then it can be | ||||
| complemented with a 3rd party exporter for these tests. | ||||
| This document specifies guidelines for a series of tests that can be | This document specifies guidelines for a series of tests that can be | |||
| run on the IPFIX Exporting Process and Collecting Process in order to | run on the IPFIX Exporting Process and Collecting Process in order to | |||
| verify the conformity and robustness of the IPFIX protocol | probe the conformity and robustness of the IPFIX protocol | |||
| implementations. | implementations. | |||
| 1.1. Motivation | The tests listed here can form a valuable common basis for | |||
| implementers involved in interoperability testing when all of them | ||||
| The main driving force for preparing this document is the observation | use these tests to check their own Exporting Process and Collecting | |||
| that protocols for data exchange often fail to work properly when | Process implementation first. | |||
| implementations from different companies or organizations are in use | ||||
| together. This happens even more often when testing binary | ||||
| protocols. In many cases this even holds true when tests had | ||||
| previously been performed successfully using an Exporting Process and | ||||
| Collecting Process from a single implementer. The tests listed here | ||||
| can form a valuable common basis for implementers involved in | ||||
| interoperability testing when all of them use these tests to check | ||||
| their own Exporting Process and Collecting Process implementation | ||||
| first. | ||||
| 1.2. Document Scope | 1.1. Document Scope | |||
| This document lists tests intended to be performed between an | This document lists tests intended to be performed between an | |||
| implementation of an IPFIX Exporting Process and an IPFIX Collecting | implementation of an IPFIX Exporting Process and an IPFIX Collecting | |||
| Process. For some tests multiple instances of each of those | Process. For some tests multiple instances of each of those | |||
| components (Observation Points, Metering Process, Exporting Process, | components (Observation Points, Metering Process, Exporting Process, | |||
| Collecting Process) are involved. The tests range from basic | Collecting Process) are involved. The testing of those different | |||
| transport connectivity to export of Template and associated Data | IPFIX components complicates the testing as usually one tests his | |||
| Records, high load on the Collecting Process, and error condition | software agains an existing implementation, which is proven to be | |||
| situations. | compliant. In some cases, two unproven implementations of the | |||
| Exporting Process and Collecting Process must be tested against each | ||||
| others. The tests range from basic transport connectivity to export | ||||
| of Template and associated Data Records, high load on the Collecting | ||||
| Process, and error condition situations. This document is not | ||||
| intended as as replacement for formal testing software procedures | ||||
| based e.g. on TTCN3 (http://www.ttcn-3.org/) but as a best-practices | ||||
| approach to an informal testing of a developer's IPFIX | ||||
| implementation. | ||||
| 1.3. IPFIX Documents Overview | 1.2. IPFIX Documents Overview | |||
| The IPFIX protocol [RFC5101] provides network administrators with | The IPFIX protocol [RFC5101] provides network administrators with | |||
| access to IP Flow information. The architecture for the export of | access to IP Flow information. The architecture for the export of | |||
| measured IP Flow information out of an IPFIX Exporting Process to a | measured IP Flow information out of an IPFIX Exporting Process to a | |||
| Collecting Process is defined in [I-D.ietf-ipfix-architecture], per | Collecting Process is defined in [I-D.ietf-ipfix-architecture], per | |||
| the requirements specified in [RFC3917]. | the requirements specified in [RFC3917]. | |||
| [I-D.ietf-ipfix-architecture] specifies how IPFIX data records and | [I-D.ietf-ipfix-architecture] specifies how IPFIX data records and | |||
| Templates are carried via a congestion-aware transport protocol from | Templates are carried via a congestion-aware transport protocol from | |||
| IPFIX Exporting Processes to IPFIX Collecting Process. IPFIX has a | IPFIX Exporting Processes to IPFIX Collecting Process. IPFIX has a | |||
| formal description of IPFIX Information Elements, their name, type | formal description of IPFIX Information Elements, their name, type | |||
| and additional semantic information, as specified in [RFC5102]. | and additional semantic information, as specified in [RFC5102]. | |||
| Finally [I-D.ietf-ipfix-as] describes what type of applications can | Finally [I-D.ietf-ipfix-as] describes what type of applications can | |||
| use the IPFIX protocol and how they can use the information provided. | use the IPFIX protocol and how they can use the information provided. | |||
| It furthermore shows how the IPFIX framework relates to other | It furthermore shows how the IPFIX framework relates to other | |||
| architectures and frameworks. | architectures and frameworks. | |||
| 2. Terminology | 2. Terminology | |||
| The terminology used in this document is fully aligned with the | IPFIX-specific terminology used in this document is defined in | |||
| terminology specified in [RFC5101] which is reproduced here for | Section 2 of [RFC5101]. As in [RFC5101] , these IPFIX-specific terms | |||
| reference. | have the first letter of a word capitalized when used in this | |||
| document. | ||||
| Observation Point | ||||
| An Observation Point is a location in the network where IP packets | ||||
| can be observed. Examples include: a line to which a probe is | ||||
| attached, a shared medium, such as an Ethernet-based LAN, a single | ||||
| port of a router, or a set of interfaces (physical or logical) of | ||||
| a router. | ||||
| Note that every Observation Point is associated with an | ||||
| Observation Domain (defined below), and that one Observation Point | ||||
| may be a superset of several other Observation Points. For | ||||
| example one Observation Point can be an entire line card. That | ||||
| would be the superset of the individual Observation Points at the | ||||
| line card's interfaces. | ||||
| Observation Domain | ||||
| An Observation Domain is the largest set of Observation Points for | ||||
| which Flow information can be aggregated by a Metering Process. | ||||
| For example, a router line card may be an Observation Domain if it | ||||
| is composed of several interfaces, each of which is an Observation | ||||
| Point. In the IPFIX Message it generates, the Observation Domain | ||||
| includes its Observation Domain ID, which is unique per Exporting | ||||
| Process. That way, the Collecting Process can identify the | ||||
| specific Observation Domain from the Exporter that sends the IPFIX | ||||
| Messages. Every Observation Point is associated with an | ||||
| Observation Domain. | ||||
| It is RECOMMENDED that Observation Domain IDs are also unique per | ||||
| IPFIX Device. | ||||
| IP Traffic Flow or Flow | ||||
| There are several definitions of the term 'flow' being used by the | ||||
| Internet community. Within the context of IPFIX we use the | ||||
| following definition: | ||||
| A Flow is defined as a set of IP packets passing an Observation | ||||
| Point in the network during a certain time interval. All packets | ||||
| belonging to a particular Flow have a set of common properties. | ||||
| Each property is defined as the result of applying a function to | ||||
| the values of: | ||||
| 1. one or more packet header fields (e.g. destination IP | ||||
| address), transport header fields (e.g. destination port | ||||
| number), or application header fields (e.g. RTP header fields | ||||
| [RFC3550].) | ||||
| 2. one or more characteristics of the packet itself (e.g. number | ||||
| of MPLS labels, etc...) | ||||
| 3. one or more of fields derived from packet treatment (e.g. next | ||||
| hop IP address, the output interface, etc...) | ||||
| A packet is defined to belong to a Flow if it completely satisfies | ||||
| all the defined properties of the Flow. | ||||
| This definition covers the range from a Flow containing all | ||||
| packets observed at a network interface to a Flow consisting of | ||||
| just a single packet between two applications. It includes | ||||
| packets selected by a sampling mechanism. | ||||
| Flow Key | ||||
| Each of the fields which | ||||
| 1. Belong to the packet header (e.g. destination IP address) | ||||
| 2. Are a property of the packet itself (e.g. packet length) | ||||
| 3. Are derived from packet treatment (e.g. AS number) | ||||
| and which are used to define a Flow are termed Flow Keys. | ||||
| Flow Record | ||||
| A Flow Record contains information about a specific Flow that was | ||||
| observed at an Observation Point. A Flow Record contains measured | ||||
| properties of the Flow (e.g. the total number of bytes for all the | ||||
| Flow's packets) and usually characteristic properties of the Flow | ||||
| (e.g. source IP address). | ||||
| Metering Process | ||||
| The Metering Process generates Flow Records. Inputs to the | ||||
| process are packet headers and characteristics observed at an | ||||
| Observation Point, and packet treatment at the Observation Point | ||||
| (for example the selected output interface). | ||||
| The Metering Process consists of a set of functions that includes | ||||
| packet header capturing, timestamping, sampling, classifying, and | ||||
| maintaining Flow Records. | ||||
| The maintenance of Flow Records may include creating new records, | ||||
| updating existing ones, computing Flow statistics, deriving | ||||
| further Flow properties, detecting Flow expiration, passing Flow | ||||
| Records to the Exporting Process, and deleting Flow Records. | ||||
| Exporting Process | ||||
| The Exporting Process sends Flow Records to one or more Collecting | ||||
| Processes. The Flow Records are generated by one or more Metering | ||||
| Processes. | ||||
| Exporter | ||||
| A device which hosts one or more Exporting Processes is termed an | ||||
| Exporter. | ||||
| IPFIX Device | ||||
| An IPFIX Device hosts at least one Exporting Process. It may host | ||||
| further Exporting processes and arbitrary numbers of Observation | ||||
| Points and Metering Process. | ||||
| Collecting Process | ||||
| A Collecting Process receives Flow Records from one or more | ||||
| Exporting Processes. The Collecting Process might process or | ||||
| store received Flow Records, but such actions are out of scope for | ||||
| this document. | ||||
| Collector | ||||
| A device which hosts one or more Collecting Processes is termed a | ||||
| Collector. | ||||
| Template | ||||
| Template is a ordered sequence of {type, length} pairs, used to | ||||
| completely specify the structure and semantics of a particular set | ||||
| of information that needs to be communicated from an IPFIX Device | ||||
| to a Collector. Each Template is uniquely identifiable by means | ||||
| of a Template ID. | ||||
| IPFIX Message | ||||
| An IPFIX Message is a message originating at the Exporting Process | ||||
| that carries the IPFIX records of this Exporting Process and whose | ||||
| destination is a Collecting Process. An IPFIX Message is | ||||
| encapsulated at the transport layer. | ||||
| Message Header | ||||
| The Message Header is the first part of an IPFIX Message, which | ||||
| provides basic information about the message such as the IPFIX | ||||
| version, length of the message, message sequence number, etc. | ||||
| Template Record | ||||
| A Template Record defines the structure and interpretation of | ||||
| fields in a Data Record. | ||||
| Data Record | ||||
| A Data Record is a record that contains values of the parameters | ||||
| corresponding to a Template Record. | ||||
| Options Template Record | ||||
| An Options Template Record is a Template Record that defines the | ||||
| structure and interpretation of fields in a Data Record, including | ||||
| defining how to scope the applicability of the Data Record. | ||||
| Set | ||||
| Set is a generic term for a collection of records that have a | ||||
| similar structure. In an IPFIX Message, one or more Sets follow | ||||
| the Message Header. | ||||
| There are three different types of Sets: Template Set, Options | ||||
| Template Set, and Data Set. | ||||
| Template Set | ||||
| A Template Set is a collection of one or more Template Records | ||||
| that have been grouped together in an IPFIX Message. | ||||
| Options Template Set | ||||
| An Options Template Set is a collection of one or more Options | ||||
| Template Records that have been grouped together in an IPFIX | ||||
| Message. | ||||
| Data Set | ||||
| A Data Set is one or more Data Records, of the same type, that are | ||||
| grouped together in an IPFIX Message. Each Data Record is | ||||
| previously defined by a Template Record or an Options Template | ||||
| Record. | ||||
| Information Element | ||||
| An Information Element is a protocol and encoding independent | ||||
| description of an attribute which may appear in an IPFIX Record. | ||||
| The IPFIX information model [RFC5102] defines the base set of | ||||
| Information Elements for IPFIX. The type associated with an | ||||
| Information Element indicates constraints on what it may contain | ||||
| and also determines the valid encoding mechanisms for use in | ||||
| IPFIX. | ||||
| Transport Session | ||||
| In SCTP, the transport session is known as the SCTP association, | ||||
| which is uniquely identified by the SCTP endpoints [RFC2960]; in | ||||
| TCP, the transport session is known as the TCP connection, which | ||||
| is uniquely identified by the combination of IP addresses and TCP | ||||
| ports used; In UDP, the transport session is known as the UDP | ||||
| session, which is uniquely identified by the combination of IP | ||||
| addresses and UDP ports used. | ||||
| 3. Test Specifications | 3. Test Specifications | |||
| The tests described in this section MAY be performed using an IPFIX | The tests described in this section MAY be performed using an IPFIX | |||
| Exporting Process on one host and an IPFIX Collecting Process on a | Exporting Process on one host and an IPFIX Collecting Process on a | |||
| different host. The configuration of the Observation Point, Metering | different host. The configuration of the Observation Point, Metering | |||
| Process, Exporting Process, and Collection Process SHOULD be recorded | Process, Exporting Process, and Collection Process SHOULD be recorded | |||
| for every test along with the test results. | for every test along with the test results. | |||
| The successful execution of all tests described in this section | The successful execution of all tests described in this section will | |||
| ensures that the tested implementation is conformant with the IPFIX | give the tester a high confidence that the tested implementation is | |||
| architecture and protocol. | conformant with the IPFIX architecture and protocol. It does however | |||
| not provide a 100% comprehensive coverage or formal proof of | ||||
| conformance. | ||||
| 3.1. Exporting Process / Collecting Process connectivity tests | 3.1. Exporting Process / Collecting Process connectivity tests | |||
| This section lists the basic tests that MUST succeed as a | This section lists the basic tests that are preconditions for the | |||
| precondition for the more complex tests specified in later sections | more complex tests specified in later sections of this document. | |||
| of this document. | ||||
| 3.1.1. Connectivity tests between Exporting Process and Collecting | 3.1.1. Connectivity tests between Exporting Process and Collecting | |||
| Process | Process | |||
| The tester MUST create one Exporting Process and one Collecting | The tester must create one Exporting Process and one Collecting | |||
| Process, MUST configure the Exporting Process to export at least one | Process, must configure the Exporting Process to export at least one | |||
| Template Set and associated Data Records to the Collecting Process, | Template Set and associated Data Records to the Collecting Process, | |||
| and MUST cause the Exporting Process to initiate the export. | and must cause the Exporting Process to initiate the export. | |||
| When the Exporting Process and Collecting Process are to be connected | When the Exporting Process and Collecting Process are to be connected | |||
| by an SCTP transport, the tester MUST ensure that an SCTP association | by an SCTP transport, the tester must ensure that an SCTP association | |||
| is established. | is established. | |||
| When the Exporting Process and Collecting Process are to be connected | When the Exporting Process and Collecting Process are to be connected | |||
| by an TCP transport, the tester MUST ensure that a TCP connection is | by an TCP transport, the tester must ensure that a TCP connection is | |||
| established. | established. | |||
| The tester MUST ensure that the Transport Session parameters (IP | The tester must ensure that the Transport Session parameters (IP | |||
| addresses and ports) are correct. | addresses and ports) are correct. | |||
| The tester MUST ensure that the Data Records are actually exported. | Note that specifying instructions and tools on how to ensure that a | |||
| Transport Session is correctly established and that the parameters | ||||
| are correct is out of the scope of this document. | ||||
| The tester must ensure that the Data Records are actually exported. | ||||
| The transmitted data might be observed on-line with an appropriate | The transmitted data might be observed on-line with an appropriate | |||
| packet sniffing tool, such as Wireshark (www.wireshark.org). | packet sniffing tool, such as Wireshark (www.wireshark.org). Such | |||
| tool is also a viable help to check if the initial connection (SCTP, | ||||
| TCP) has been sucessfully established. | ||||
| The tester MUST record which combinations of IPv4 and IPv6 | The tester must record which combinations of IPv4 and IPv6 | |||
| transports, and UDP, SCTP, and TCP transmission protocols are | transports, and UDP, SCTP, and TCP transmission protocols are | |||
| supported, and MUST perform the test for all the supported | supported, and should perform the test for all the supported | |||
| combinations. | combinations. | |||
| 3.2. Template and Data Record tests | 3.2. Template and Data Record tests | |||
| This section lists tests for checking the correct transmission of | This section lists tests for checking the correct transmission of | |||
| IPFIX Template Sets and associated Data Sets. | IPFIX Template Sets and associated Data Sets. | |||
| 3.2.1. Transmission of Template with fixed size Information Elements | 3.2.1. Transmission of Template with fixed size Information Elements | |||
| The tester MUST create a Template with a few fixed-size Information | The tester must create a Template with a few fixed-size Information | |||
| Elements where each data type specified in section 6.1 of [RFC5101] | Elements where each data type specified in section 6.1 of [RFC5101] | |||
| (octet, unsigned16, unsigned32 ...) is used at least once, and cause | (octet, unsigned16, unsigned32 ...) is used at least once, and cause | |||
| the Template and associated Data Records to be exported over all | the Template and associated Data Records to be exported over all | |||
| applicable combinations of transports and protocols in Section 3.1. | applicable combinations of transports and protocols in Section 3.1. | |||
| The tester MUST ensure that the Template and associated Data Records | The tester must ensure that the Template and associated Data Records | |||
| were correctly received and decoded by the Collecting Process. | were correctly received and decoded by the Collecting Process. For | |||
| this process the use of verbose debugging output is suggested in | ||||
| order to allow a detailed comparison with the sent (and therefore | ||||
| expected) data. | ||||
| 3.2.2. Transmission of Template with variable length Information | 3.2.2. Transmission of Template with variable length Information | |||
| Elements | Elements | |||
| The tester MUST create a Template with a mixture of fixed-sized and | The tester must create a Template with a mixture of fixed-sized and | |||
| variable length Information Elements, as specified in section 7 of | variable length Information Elements, as specified in section 7 of | |||
| [RFC5101] and cause the Template and associated Data Records to be | [RFC5101] and cause the Template and associated Data Records to be | |||
| exported over all applicable combinations of transports and protocols | exported over all applicable combinations of transports and protocols | |||
| in Section 3.1. | in Section 3.1. | |||
| The tester MUST ensure that the Template contains: | The tester must ensure that the Template contains at least: | |||
| o a single variable length Information Element | o a single variable length Information Element | |||
| o a single variable length Information Element followed by a fixed | o a single variable length Information Element followed by a fixed | |||
| length Information Element | length Information Element | |||
| o a fixed length Information Element followed by a variable length | o a fixed length Information Element followed by a variable length | |||
| Information Element | Information Element | |||
| o multiple variable length Information Elements | o multiple variable length Information Elements | |||
| The tester MUST ensure that the Template and associated Data Records | The tester must ensure that the Template and associated Data Records | |||
| were correctly received and decoded by the Collecting Process. | were correctly received and decoded by the Collecting Process. | |||
| 3.2.3. Set Padding | 3.2.3. Set Padding | |||
| Section 3.3.1 of [RFC5101] specifies IPFIX Set alignment using | Section 3.3.1 of [RFC5101] specifies IPFIX Set alignment using | |||
| padding. | padding. | |||
| The tester MUST create two Data Sets with padding in between | The tester must configure a packet generator to generate two Data | |||
| consisting of zero valued octets, as shown in Figure 1, MUST cause | Sets with padding in between consisting of zero valued octets, as | |||
| them to be exported to the Collecting Process, and MUST ensure that | shown in Figure 1. They must be exported to the Collecting Process, | |||
| both Data Sets and all the Data Records were correctly received and | which must correctly decode the Data Sets and all the Data Records. | |||
| decoded by the Collecting Process. | ||||
| +--------------------------------------------------+ | +--------------------------------------------------+ | |||
| | Set Header #1 | | | Set Header #1 | | |||
| +--------------------------------------------------+ | +--------------------------------------------------+ | |||
| | Data Record | | | Data Record | | |||
| +--------------------------------------------------+ | +--------------------------------------------------+ | |||
| | Data Record | | | Data Record | | |||
| +--------------------------------------------------+ | +--------------------------------------------------+ | |||
| ... | ... | |||
| +--------------------------------------------------+ | +--------------------------------------------------+ | |||
| skipping to change at page 14, line 29 ¶ | skipping to change at page 10, line 37 ¶ | |||
| +--------------------------------------------------+ | +--------------------------------------------------+ | |||
| | Set Header #2 | | | Set Header #2 | | |||
| +--------------------------------------------------+ | +--------------------------------------------------+ | |||
| | Data Record | | | Data Record | | |||
| +--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Figure 1 | Figure 1 | |||
| 3.2.4. Record Padding | 3.2.4. Record Padding | |||
| The tester MUST create a Template that contains the padding | The tester must configure a packet generator to generate a Template | |||
| Information Element (i.e. paddingOctets), and cause the Template and | that contains the padding Information Element (i.e. paddingOctets). | |||
| associated Data Records to be exported over all applicable | The Template and associated Data Records must be exported to the | |||
| combinations of transports and protocols in Section 3.1. | Collecting Process, over all applicable combinations of transports | |||
| and protocols in Section 3.1. | ||||
| The tester MUST repeat the test with various padding sizes, including | The tester must repeat the test with various padding sizes, including | |||
| padding to boundaries other than 4 or 8 octets. | padding to boundaries other than 4 or 8 octets. | |||
| The tester MUST ensure the Collecting Process correctly interprets | The tester must ensure the Collecting Process correctly interprets | |||
| case where the Data Records are so short that the padding is equal to | case where the Data Records are so short that the padding is equal to | |||
| or longer than the length of the record, so the padding might | or longer than the length of the record, so the padding might | |||
| otherwise be interpreted as another record (e.g. 1 bytes TOS plus 3 | otherwise be interpreted as another record (e.g. 1 bytes TOS plus 3 | |||
| bytes of padding). Refer to the specifications in section 3.3.1 of | bytes of padding). Refer to the specifications in section 3.3.1 of | |||
| [RFC5101]. Figure 2 depicts such a Template, while Figure 3 depicts | [RFC5101]. Figure 2 depicts such a Template, while Figure 3 depicts | |||
| a Data Record conforming to that Template. | a Data Record conforming to that Template. | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 15, line 29 ¶ | skipping to change at page 11, line 29 ¶ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Set ID = 256 | Length = 64 | | | Set ID = 256 | Length = 64 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 1 | 0 | | | 1 | 0 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 3 | Figure 3 | |||
| The tester MUST test fixed-size padding (e.g. 12 bytes of data plus 2 | The tester must test fixed-size padding (e.g. 12 bytes of data plus 2 | |||
| bytes of padding) and variable length padding (e.g. export a string | bytes of padding) and variable length padding (e.g. export a string | |||
| and a variable number of padding bytes afterwards to align the next | and a variable number of padding bytes afterwards to align the next | |||
| Information Element to a 4 byte boundary). | Information Element to a 4 byte boundary). | |||
| 3.2.5. Template Withdrawal Message | 3.2.5. Template Withdrawal Message | |||
| IPFIX Template management and Template Withdrawal are specified in | IPFIX Template management and Template Withdrawal are specified in | |||
| chapter 8 of [RFC5101]. | chapter 8 of [RFC5101]. | |||
| 3.2.5.1. Withdrawal of a previously sent Template | 3.2.5.1. Withdrawal of a previously sent Template | |||
| The tester MUST create an IPFIX Template and cause that Template to | The tester must create an IPFIX Template and cause that Template to | |||
| be exported to an IPFIX Collector over a reliable transport. | be exported to an IPFIX Collector over a reliable transport. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must check that the Template will be correctly received | |||
| decoded by the Collecting Process. | and decoded by the Collecting Process. | |||
| The tester MUST cause the Exporting Process to send an IPFIX Template | The tester must cause the Exporting Process to send an IPFIX Template | |||
| Withdrawal Message to the Collector in respect of the Template. The | Withdrawal Message to the Collector in respect of the Template. The | |||
| Template Withdrawal Message must be sent over the same Transport | Template Withdrawal Message must be sent over the same Transport | |||
| Session as the Template. | Session as the Template. | |||
| The tester MUST ensure that the Template Withdrawal Message was | The tester must ensure that the Template Withdrawal Message was | |||
| correctly received and decoded by the Collecting Process, and that | correctly received and decoded by the Collecting Process, and that | |||
| the previously sent Template was discarded by the Collecting Process. | the previously sent Template was discarded by the Collecting Process. | |||
| 3.2.5.2. Withdrawal of a previously withdrawn Template | 3.2.5.2. Withdrawal of a previously withdrawn Template | |||
| The tester MUST create, export and withdraw an IPFIX Template as | The tester must create, export and withdraw an IPFIX Template as | |||
| described in Section 3.2.5.1. | described in Section 3.2.5.1. | |||
| The tester MUST cause the Exporting Process to send a second IPFIX | The tester must cause the Exporting Process to send a second IPFIX | |||
| Template Withdrawal Message to the Collector in respect of the same | Template Withdrawal Message to the Collector in respect of the same | |||
| Template. The Template Withdrawal Message must be sent over the same | Template. The Template Withdrawal Message must be sent over the same | |||
| Transport Session as the Template. | Transport Session as the Template. | |||
| The tester MUST ensure that the Collecting Process discards the IPFIX | The tester must ensure that the Collecting Process discards the IPFIX | |||
| Message and shuts down the SCTP association or closes the TCP | Message and shuts down the SCTP association or closes the TCP | |||
| connection. The tester MUST check that the Collecting Process logged | connection. The tester must check that the Collecting Process logged | |||
| the error. | the error. | |||
| 3.2.5.3. Withdrawal of a previously unsent Template | 3.2.5.3. Withdrawal of a previously unsent Template | |||
| The tester MUST cause the Exporting Process to send an IPFIX Template | The tester must cause the Exporting Process to send an IPFIX Template | |||
| Withdrawal Message to the Collector in respect of a Template which | Withdrawal Message to the Collector in respect of a Template which | |||
| has not yet been exported. The Template Withdrawal Message must be | has not yet been exported. The Template Withdrawal Message must be | |||
| sent over a reliable transport. | sent over a reliable transport. | |||
| The tester MUST ensure that the Collecting Process discards the IPFIX | The tester must ensure that the Collecting Process discards the IPFIX | |||
| Message and shuts down the SCTP association or closes the TCP | Message and shuts down the SCTP association or closes the TCP | |||
| connection. The tester MUST check that the Collecting Process logged | connection. The tester must check that the Collecting Process logged | |||
| the error. | the error. | |||
| 3.2.5.4. Withdrawing all Data Templates | 3.2.5.4. Withdrawing all Data Templates | |||
| The tester MUST create several IPFIX Templates and cause them to be | The tester must create several IPFIX Templates and cause them to be | |||
| exported to an IPFIX Collector over a reliable transport. | exported to an IPFIX Collector over a reliable transport. | |||
| The tester MUST ensure that the Templates were correctly received and | The tester must ensure that the Templates were correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST cause the Exporting Process to send an IPFIX All Data | The tester must cause the Exporting Process to send an IPFIX All Data | |||
| Templates Withdrawal Message to the Collector over the same Transport | Templates Withdrawal Message to the Collector over the same Transport | |||
| Session as the Templates. | Session as the Templates. | |||
| The tester MUST ensure that the All Data Templates Withdrawal Message | The tester must ensure that the All Data Templates Withdrawal Message | |||
| was correctly received and decoded by the Collecting Process, and | was correctly received and decoded by the Collecting Process, and | |||
| that all the previously sent Templates were discarded by the | that all the previously sent Templates were discarded by the | |||
| Collecting Process. | Collecting Process. | |||
| 3.2.5.5. Withdrawing all Option Templates | 3.2.5.5. Withdrawing all Option Templates | |||
| The tester MUST create several IPFIX Option Templates and cause them | The tester must create several IPFIX Option Templates and cause them | |||
| to be exported to an IPFIX Collector over a reliable transport. | to be exported to an IPFIX Collector over a reliable transport. | |||
| The tester MUST ensure that the Option Templates were correctly | The tester must ensure that the Option Templates were correctly | |||
| received and decoded by the Collecting Process. | received and decoded by the Collecting Process. | |||
| The tester MUST cause the Exporting Process to send an IPFIX All | The tester must cause the Exporting Process to send an IPFIX All | |||
| Option Templates Withdrawal Message to the Collector over the same | Option Templates Withdrawal Message to the Collector over the same | |||
| Transport Session as the Templates. | Transport Session as the Templates. | |||
| The tester MUST ensure that the All Option Templates Withdrawal | The tester must ensure that the All Option Templates Withdrawal | |||
| Message was correctly received and decoded by the Collecting Process, | Message was correctly received and decoded by the Collecting Process, | |||
| and that all the previously sent Option Templates were discarded by | and that all the previously sent Option Templates were discarded by | |||
| the Collecting Process. | the Collecting Process. | |||
| 3.3. Information Element tests | 3.3. Information Element tests | |||
| This section lists the tests that cover the use of Information | This section lists the tests that cover the use of Information | |||
| Elements. | Elements. | |||
| 3.3.1. Enterprise-specific Information Elements | 3.3.1. Enterprise-specific Information Elements | |||
| The tester MUST cause the export of a Template and associated Data | The tester must cause the export of a Template and associated Data | |||
| Record that makes use of Enterprise-specific Information Elements as | Record that makes use of Enterprise-specific Information Elements as | |||
| specified in section 3.2 of [RFC5101]. | specified in section 3.2 of [RFC5101]. | |||
| The tester MUST ensure that the Template and associated Data Record | The tester must ensure that the Template and associated Data Record | |||
| are correctly received and decoded by the Collecting Process, and | are correctly received and decoded by the Collecting Process, and | |||
| that Information Elements that are unknown to the Collecting Process | that Information Elements that are unknown to the Collecting Process | |||
| are not silently discarded. | are not silently discarded. | |||
| 3.3.2. Reduced Size Encoding of Information Elements | 3.3.2. Reduced Size Encoding of Information Elements | |||
| The tester MUST cause the export of a Template and associated Data | The tester must cause the export of a Template and associated Data | |||
| Record containing Information Elements using reduced-size encoding as | Record containing Information Elements using reduced-size encoding as | |||
| specified in section 6.2 of [RFC5101]. | specified in section 6.2 of [RFC5101]. | |||
| The tester MUST ensure that in the case of Information Elements | The tester must ensure that in the case of Information Elements | |||
| transmitted using Reduced Size Encoding, the Collecting Process is | transmitted using Reduced Size Encoding, the Collecting Process is | |||
| aware of the real size of each Information Element and not only the | aware of the real size of each Information Element and not only the | |||
| reduced size used for its transmission. | reduced size used for its transmission. | |||
| 3.3.3. Multiple instances of the same Information Element in one | 3.3.3. Multiple instances of the same Information Element in one | |||
| Template | Template | |||
| The tester MUST cause the export of a Template and associated Data | The tester must cause the export of a Template and associated Data | |||
| Record containing multiple instances of the same Information Element | Record containing multiple instances of the same Information Element | |||
| consecutively. | consecutively. | |||
| The tester MUST ensure that the Collecting Process is able to parse | The tester must ensure that the Collecting Process is able to parse | |||
| the IPFIX Message, and stores all values received for all the | the IPFIX Message, and stores all values received for all the | |||
| Information Elements that appeared multiple times in the Template | Information Elements that appeared multiple times in the Template | |||
| definition. | definition. | |||
| The tester MUST ensure that the Collecting Process reports the | The tester must ensure that the Collecting Process reports the | |||
| Information Elements in the same order as they were specified in the | Information Elements in the same order as they were specified in the | |||
| Template Record, as specified in section 8 of [RFC5101]. | Template Record, as specified in section 8 of [RFC5101]. | |||
| The tester MUST cause the export of another Template and associated | The tester must cause the export of another Template and associated | |||
| Data Record containing multiple instances of the same Information | Data Record containing multiple instances of the same Information | |||
| Element with other Information Elements in between. | Element with other Information Elements in between. | |||
| The tester MUST ensure that the Collecting Process is able to parse | The tester must ensure that the Collecting Process is able to parse | |||
| the IPFIX Message, and stores all values received for all the | the IPFIX Message, and stores all values received for all the | |||
| Information Elements that appeared multiple times in the Template | Information Elements that appeared multiple times in the Template | |||
| definition. | definition. | |||
| The tester MUST ensure that the Collecting Process reports the | The tester must ensure that the Collecting Process reports the | |||
| Information Elements in the same order as they were specified in the | Information Elements in the same order as they were specified in the | |||
| Template Record, as specified in section 8 of [RFC5101]. | Template Record, as specified in section 8 of [RFC5101]. | |||
| 3.4. Options Template tests | 3.4. Options Template tests | |||
| This section lists the tests that cover the correct transfer of IPFIX | This section lists the tests that cover the correct transfer of IPFIX | |||
| Options Templates. | Options Templates. | |||
| 3.4.1. Using any Information Elements as Scope | 3.4.1. Using any Information Elements as Scope | |||
| Options Templates contain scope fields that give the context of the | Options Templates contain scope fields that give the context of the | |||
| reported Information Elements in the corresponding Data Records. | reported Information Elements in the corresponding Data Records. | |||
| Scope fields are an Information Elements specified in [RFC5102]. | Scope fields are an Information Elements specified in [RFC5102]. | |||
| The tester MUST cause the export of Options Template Records | The tester SHOULD perform the export of Options Template Records | |||
| containing various different Information Elements of each of the | containing various different Information Elements of each of the | |||
| abstract data types specified in section 6.1 of [RFC5101] (octet, | abstract data types specified in section 6.1 of [RFC5101] (octet, | |||
| unsigned16, unsigned32 ...) in their scope fields, and MUST export a | unsigned16, unsigned32 ...) in their scope fields, and must export a | |||
| Data Record using each Template. | Data Record using each Template. | |||
| The tester MUST ensure that the Templates and the associated Data | The tester must check and if necessary improve the software so that | |||
| Records are correctly received and decoded by the Collecting Process. | the Templates and the associated Data Records are correctly received | |||
| and decoded by the Collecting Process. | ||||
| The tester MUST ensure that the Collecting Process accepts | The tester must ensure that the Collecting Process accepts | |||
| Information Elements in the scope field other than IPFIX Information | Information Elements in the scope field other than IPFIX Information | |||
| Elements which have been recorded by IANA. | Elements which have been recorded by IANA. | |||
| The tester MUST ensure that the Collecting Process accepts an | The tester must ensure that the Collecting Process accepts an | |||
| Enterprise specific Information Element in the scope field. | Enterprise specific Information Element in the scope field. | |||
| As specified in section 3.4.2.1 of [RFC5101], the Scope Field Count | As specified in section 3.4.2.1 of [RFC5101], the Scope Field Count | |||
| MUST NOT be zero. The tester MUST cause the export of an Options | must NOT be zero. The tester must cause the export of an Options | |||
| Template Record containing a Scope Field Count of zero. | Template Record containing a Scope Field Count of zero. | |||
| The tester MUST ensure that the Collecting Process shuts down the | The tester must ensure that the Collecting Process shuts down the | |||
| SCTP association and discards the IPFIX Message. The tester MUST | SCTP association and discards the IPFIX Message. The tester should | |||
| check that the Collecting Process logged the error. | check that the Collecting Process logged the error. | |||
| 3.4.2. Using multiple Scopes | 3.4.2. Using multiple Scopes | |||
| The tester MUST cause the export of an Options Template Record | The tester must cause the export of an Options Template Record | |||
| containing multiple scope fields, and a Data Record conforming to | containing multiple scope fields, and a Data Record conforming to | |||
| that Template. | that Template. | |||
| The tester MUST ensure that the Collecting Process reports the | The tester must ensure that the Collecting Process reports the | |||
| Information Elements in the same order as they were specified in the | Information Elements in the same order as they were specified in the | |||
| Options Template Record, as specified in section 3.4.2.1 of | Options Template Record, as specified in section 3.4.2.1 of | |||
| [RFC5101]. | [RFC5101]. | |||
| 3.4.3. Metering Process Statistics Option Template | 3.4.3. Metering Process Statistics Option Template | |||
| The tester MUST create a Metering Process Statistics Option Templates | The tester must create a Metering Process Statistics Option Templates | |||
| as specified in section 4.1 of [RFC5101], and MUST cause the Option | as specified in section 4.1 of [RFC5101], and cause the Option | |||
| Template and an associated Data Record to be exported. | Template and an associated Data Record to be exported. | |||
| The tester MUST ensure that the Collecting Process correctly receives | The tester must ensure that the Collecting Process correctly receives | |||
| and decodes the Option Template and associated Data Record. | and decodes the Option Template and associated Data Record. | |||
| The tester MUST also check that the optional meteringProcessId Scope | The tester must also check that the optional meteringProcessId Scope | |||
| Field is supported by the Collecting Process implementation. | Field is supported by the Collecting Process implementation. | |||
| If several Metering Processes are available on the Exporter | If several Metering Processes are available on the Exporter | |||
| Observation Domain, the tester MUST create a Metering Process | Observation Domain, the tester must create a Metering Process | |||
| Statistics Option Template containing multiple scopes and an | Statistics Option Template containing multiple scopes and an | |||
| associated Data Record, MUST cause the Option Template and associated | associated Data Record, must cause the Option Template and associated | |||
| Data Record to be exported, and MUST ensure that the Collecting | Data Record to be exported, and must ensure that the Collecting | |||
| Process correctly receives and decodes the Option Template and | Process correctly receives and decodes the Option Template and | |||
| associated Data Record. | associated Data Record. | |||
| 3.4.4. Metering Process Reliability Statistics Option Template | 3.4.4. Metering Process Reliability Statistics Option Template | |||
| The tester MUST create a Metering Process Reliability Statistics | The tester must create a Metering Process Reliability Statistics | |||
| Option Template as specified in section 4.2 of [RFC5101], and MUST | Option Template as specified in section 4.2 of [RFC5101], and must | |||
| cause the Option Template and an associated Data Record to be | cause the Option Template and an associated Data Record to be | |||
| exported. | exported. | |||
| The tester MUST ensure that the Collecting Process correctly receives | The tester must ensure that the Collecting Process correctly receives | |||
| and decodes the Option Template and associated Data Record. | and decodes the Option Template and associated Data Record. | |||
| The tester MUST also check that the optional meteringProcessId Scope | The tester must also check that the optional meteringProcessId Scope | |||
| Field is supported by the Collecting Process implementation. | Field is supported by the Collecting Process implementation. | |||
| 3.4.5. Exporting Process Reliability Statistics Option Template | 3.4.5. Exporting Process Reliability Statistics Option Template | |||
| The tester MUST create an Exporting Process Reliability Statistics | The tester must create an Exporting Process Reliability Statistics | |||
| Option Template as specified in section 4.3 of [RFC5101], and MUST | Option Template as specified in section 4.3 of [RFC5101], and must | |||
| cause the Option Template and an associated Data Record to be | cause the Option Template and an associated Data Record to be | |||
| exported. | exported. | |||
| The tester MUST ensure that the Collecting Process correctly receives | The tester must ensure that the Collecting Process correctly receives | |||
| and decodes the Option Template and associated Data Record. | and decodes the Option Template and associated Data Record. | |||
| 3.4.6. Flow Keys Option Template | 3.4.6. Flow Keys Option Template | |||
| The tester MUST create a Flow Keys Option Template, as specified in | The tester must create a Flow Keys Option Template, as specified in | |||
| section 4.4 of [RFC5101], where the templateId refers to an existing | section 4.4 of [RFC5101], where the templateId refers to an existing | |||
| Template, and MUST cause the Option Template and an associated Data | Template, and must cause the Option Template and an associated Data | |||
| Record to be exported. | Record to be exported. | |||
| The tester MUST ensure that the Collecting Process correctly receives | The tester must ensure that the Collecting Process correctly receives | |||
| and decodes the Option Template and associated Data Record, and that | and decodes the Option Template and associated Data Record, and that | |||
| the Collecting Process associates the Flow Keys with the right Data | the Collecting Process associates the Flow Keys with the right Data | |||
| Record Information Elements. | Record Information Elements. | |||
| The tester MUST create another Flow Keys Data Record to be exported | The tester must create another Flow Keys Data Record to be exported | |||
| where the associated templateId has insufficient fields to satisfy | where the associated templateId has insufficient fields to satisfy | |||
| the flowKeyIndicator. | the flowKeyIndicator. | |||
| The tester MUST ensure that the Collecting Process discards the IPFIX | The tester must ensure that the Collecting Process discards the IPFIX | |||
| Message and shuts down the SCTP association or closes the TCP | Message and shuts down the SCTP association or closes the TCP | |||
| connection. The tester MUST check that the Collecting Process logged | connection. The tester must check that the Collecting Process logged | |||
| the error. | the error. | |||
| The tester MUST create another Flow Keys Option Template, where the | The tester must create another Flow Keys Option Template, where the | |||
| templateId refers to a non-existing Template, and MUST cause the | templateId refers to a non-existing Template, and must cause the | |||
| Option Template and an associated Data Record to be exported. | Option Template and an associated Data Record to be exported. | |||
| The tester MUST ensure that the Collecting Process shuts down the | The tester must ensure that the Collecting Process shuts down the | |||
| SCTP association and discards the IPFIX Message. The tester MUST | SCTP association and discards the IPFIX Message. The tester should | |||
| check that the Collecting Process logged the error. | check that the Collecting Process logged the error. | |||
| 3.5. Stress/Load tests | 3.5. Stress/Load tests | |||
| Stress tests are used to check correct behavior and robustness of an | Stress tests are used to check correct behavior and robustness of an | |||
| IPFIX Collecting Process implementation when a number of Data Records | IPFIX Collecting Process implementation when a number of Data Records | |||
| arrive very quickly. This is especially important when IPFIX over | arrive very quickly. This is especially important when IPFIX over | |||
| UDP is used, since in that case a slow Collecting Process cannot | UDP is used, since in that case a slow Collecting Process cannot | |||
| block the IPFIX Exporting Processes from exporting, since UDP is not | block the IPFIX Exporting Processes from exporting, since UDP is not | |||
| congestion aware. | congestion aware. | |||
| The tests may be dependent upon the hardware and transports | The tests may be dependent upon the hardware and transports | |||
| technology in use. Therefore the tests may need to be scaled up or | technology in use. Therefore the tests may need to be scaled up or | |||
| down to meet the needs of the particular implementation. However, | down to meet the needs of the particular implementation. However, | |||
| the implementer MUST ensure that the implementation is stable under | the implementer must ensure that the implementation is stable under | |||
| excessive traffic conditions, for whatever definition of "excessive" | excessive traffic conditions, for whatever definition of "excessive" | |||
| applies at their intended installation. | applies at their intended installation. | |||
| The implementer MUST ensure the correct operation of the Exporting | The implementer must ensure the correct operation of the Exporting | |||
| Process and/or Collecting Process when the Collecting Process is | Process and/or Collecting Process when the Collecting Process is | |||
| incapable of processing records at the rate that they are received. | incapable of processing records at the rate that they are received. | |||
| 3.5.1. Large number of Records for one Template | 3.5.1. Large number of Records for one Template | |||
| The tester MUST export many Data Records to the Collecting Process, | The tester should export many Data Records to the Collecting Process, | |||
| all conforming to the same Template, in order to put the Collecting | all conforming to the same Template, in order to put the Collecting | |||
| Process under stress. | Process under stress. | |||
| Depending on what that the Collecting Process does (save to file, | Depending on what that the Collecting Process does (save to file, | |||
| store to database, analyze the data) the Collecting Process may use | store to database, analyze the data) the Collecting Process may use | |||
| up a lot of memory. | up a lot of memory. | |||
| The tester MUST ensure that if the Collecting Process runs out of | The tester must ensure that, if the Collecting Process runs out of | |||
| memory, it shuts down the specific SCTP association or closes the TCP | memory, it shuts down the specific SCTP association or closes the TCP | |||
| connection but remains available to receive data on other open | connection but remains available to receive data on other open | |||
| Transport Sessions and stays available for future Transport Sessions. | Transport Sessions and also stays available for future Transport | |||
| Sessions. | ||||
| 3.5.2. Excessive rate of incoming Data Records | 3.5.2. Excessive rate of incoming Data Records | |||
| The tester MUST cause Data Records to be exported to the Collecting | The tester should perform a test where Data Records are exported to | |||
| Process with an increasing export rate. | the Collecting Process with an increasing export rate. | |||
| For TCP or SCTP in reliable mode, the tester MUST ensure that export | For TCP or SCTP in reliable mode, the tester must ensure that export | |||
| stalls the Exporting Process once the Collecting Process becomes | stalls the Exporting Process once the Collecting Process becomes | |||
| fully loaded. | fully loaded. | |||
| For UDP export, the tester MUST ensure that the Collecting Process | For UDP export, the tester must ensure that the Collecting Process | |||
| drops records as it becomes overloaded, and MUST check that the | drops records as it becomes overloaded, and must check that the | |||
| Collecting Process logs a warning. | Collecting Process logs a warning. | |||
| 3.5.3. Large Templates | 3.5.3. Large Templates | |||
| The tester MUST create Templates with the maximum possible number of | The tester must create Templates with the maximum possible number of | |||
| Information Elements, and cause these to be exported to the | Information Elements, and cause these to be exported to the | |||
| Collecting Process. | Collecting Process. | |||
| The total length field in the IP header is 16 bits, allowing a length | The total length field in the IP header is 16 bits, allowing a length | |||
| up to 65535 octets. 20 octets are required for a minimal IPv4 header, | up to 65535 octets. 20 octets are required for a minimal IPv4 header, | |||
| 16 octets for the IPFIX header, 4 octets for the Set header and 4 | 16 octets for the IPFIX header, 4 octets for the Set header and 4 | |||
| octets for the Template header, so the Template definition may be up | octets for the Template header, so the Template definition may be up | |||
| to (65535 - 20 - 16 - 4 - 4) = 65491 octets long. The minimum IPFIX | to (65535 - 20 - 16 - 4 - 4) = 65491 octets long. The minimum IPFIX | |||
| Information Element specification requires 4 octets: two for the | Information Element specification requires 4 octets: two for the | |||
| Information Element ID and two for the field length. Therefore, the | Information Element ID and two for the field length. Therefore, the | |||
| maximum number of IPFIX Information Elements in a single Template is | maximum number of IPFIX Information Elements in a single Template is | |||
| 65491 / 4 = 16372. With this many Information Elements, the Template | 65491 / 4 = 16372. With this many Information Elements, the Template | |||
| will be 65488 octets long while the entire packet will be 65532 | will be 65488 octets long while the entire packet will be 65532 | |||
| octets long. | octets long. | |||
| The tester MUST create Data Records conforming to this Template, and | The tester must create Data Records conforming to this Template, and | |||
| cause them to be exported. Note that, for the implementation, the | cause them to be exported. Note that, for the implementation, the | |||
| associated Data Records might be smaller or larger than the Template | associated Data Records might be smaller or larger than the Template | |||
| Records depending on the length of the Information Elements defined | Records depending on the length of the Information Elements defined | |||
| by the Template and on the presence of variable length Information | by the Template and on the presence of variable length Information | |||
| Elements. | Elements. | |||
| The tester MUST ensure that the Collecting Process correctly receives | The tester must ensure that the Collecting Process correctly receives | |||
| and decodes the Template and associated Data Records. | and decodes the Template and associated Data Records. | |||
| 3.5.4. Many new Templates within Data Template timeout interval | 3.5.4. Many new Templates within Data Template timeout interval | |||
| The tester MUST create a large number of different Templates and | The tester should create a large number of different Templates and | |||
| cause them to be exported to the Collecting Process to stress test | cause them to be exported to the Collecting Process to stress test | |||
| the Collecting Process's memory consumption. | the Collecting Process's memory consumption. | |||
| The tester MUST ensure that the Collecting Process gracefully | The tester must ensure that the Collecting Process gracefully | |||
| discards Templates if it's running out of memory resources, and MUST | discards Templates if it's running out of memory resources, and | |||
| check that warnings are logged. | should check that warnings are logged. | |||
| 3.5.5. Multiple Exporting Processes exporting to one Collecting Process | 3.5.5. Multiple Exporting Processes exporting to one Collecting Process | |||
| The tester MUST configure multiple Exporting Processes to export | The tester must configure multiple Exporting Processes to export | |||
| Templates and associated Data Records to the same Collecting Process | Templates and associated Data Records to the same Collecting Process | |||
| at the same time. | at the same time. | |||
| The tester MUST ensure that all the Templates and associated Data | The tester must ensure that all the Templates and associated Data | |||
| Records are correctly received and decoded at the Collecting Process, | Records are correctly received and decoded at the Collecting Process, | |||
| and that no Exporting Process stalls or disconnects completely unless | and that no Exporting Process stalls or disconnects completely unless | |||
| the Collecting Process runs out of memory. | the Collecting Process runs out of memory. | |||
| 3.5.6. Export from one Exporting Process to multiple Collecting | 3.5.6. Export from one Exporting Process to multiple Collecting | |||
| Processes | Processes | |||
| If the Exporting Process supports multiple simultaneous export | If the Exporting Process supports multiple simultaneous export | |||
| destinations, the tester MUST configure the Exporting Process to | destinations, the tester must configure the Exporting Process to | |||
| export Data Records in parallel to different Collecting Processes. | export Data Records in parallel to different Collecting Processes. | |||
| The tester MUST configure the use of a mixture of simple and complex | The tester must configure the use of a mixture of simple and complex | |||
| Templates and ensure they are all correctly received and decoded by | Templates and ensure they are all correctly received and decoded by | |||
| all the Collecting Processes. | all the Collecting Processes. | |||
| 3.6. Error handling | 3.6. Error handling | |||
| This section lists and describes a number of problems that might | This section lists and describes a number of problems that might | |||
| occur in either the network or data transmission or related to wrong | occur in either the network or data transmission or related to wrong | |||
| information encoding, and which the IPFIX Exporting Process and | information encoding, and which the IPFIX Exporting Process and | |||
| Collecting Process must be capable of handling in a graceful way. It | Collecting Process must be capable of handling in a graceful way. It | |||
| is intended to test the robustness and fault tolerance of the IPFIX | is intended to test the robustness and fault tolerance of the IPFIX | |||
| Processes. | Processes. | |||
| 3.6.1. Temporary network disconnect | 3.6.1. Temporary network disconnect | |||
| The IPFIX Exporting Process and Collecting Process behavior MUST be | The IPFIX Exporting Process and Collecting Process behavior must be | |||
| checked upon interruptions of data transmission due to network | checked upon interruptions of data transmission due to network | |||
| failures (whether physical or logical, e.g. defective routing). | failures (whether physical or logical, e.g. defective routing). | |||
| The tester MUST configure continuous export over all applicable | The tester must configure continuous export over all applicable | |||
| combinations of transports and protocols in Section 3.1 in turn. | combinations of transports and protocols in Section 3.1 in turn. | |||
| For SCTP-based associations and TCP-based connections, the tester | For SCTP-based associations and TCP-based connections, the tester | |||
| MUST create a short disconnect between the Exporting Process and the | should create a short disconnect between the Exporting Process and | |||
| Collecting Process (e.g. by momentarily interrupting the network | the Collecting Process (e.g. by momentarily interrupting the network | |||
| connection) and MUST ensure that export continues after the | connection) and must ensure that export continues after the | |||
| connection is repaired. The tester MUST then create a longer | connection is repaired. The tester must then create a longer | |||
| disconnection between the Exporting Process and Collecting Process, | disconnection between the Exporting Process and Collecting Process, | |||
| and MUST ensure that export continues after the connection is | and must ensure that export continues after the connection is | |||
| repaired. | repaired. | |||
| For UDP-based data export there is no noticeable connection loss, but | For UDP-based data export there is no noticeable connection loss, but | |||
| data received with non-consecutive sequence numbers indicates data | data received with non-consecutive sequence numbers indicates data | |||
| loss. Refer to the sequence number specifications in section 3.1 of | loss. Refer to the sequence number specifications in section 3.1 of | |||
| [RFC5101]. The tester MUST create a short disconnect between the | [RFC5101]. The tester should create a short disconnect between the | |||
| Exporting Process and Collecting Process, and MUST ensure that this | Exporting Process and Collecting Process, and must ensure that this | |||
| is recognized and reported by the Collecting Process per section 3.1 | is recognized and reported by the Collecting Process per section 3.1 | |||
| of [RFC5101]. | of [RFC5101]. | |||
| 3.6.2. Exporting Process termination and restart during data | 3.6.2. Exporting Process termination and restart during data | |||
| transmission | transmission | |||
| An IPFIX Collecting Process might be confronted with a faulty | An IPFIX Collecting Process might be confronted with a faulty | |||
| Exporting Process implementation that suddenly crashes, dropping any | Exporting Process implementation that suddenly crashes, dropping any | |||
| open connections. The Exporting Process may be restarted again soon | open connections. The Exporting Process may be restarted again soon | |||
| after the crash. | after the crash. | |||
| Such an event will only be visible to the Collecting Process when the | Such an event will only be visible to the Collecting Process when the | |||
| IPFIX Messages (Templates and associated Data Records) are carried | IPFIX Messages (Templates and associated Data Records) are carried | |||
| over TCP or SCTP. For export via UDP no such test is available due | over TCP or SCTP. For export via UDP no such test is available due | |||
| to the connection-less nature of the transport. | to the connection-less nature of the transport. | |||
| The tester MUST configure continuous export over all applicable | The tester must configure continuous export over all applicable | |||
| combinations of SCTP and TCP transports and protocols in Section 3.1 | combinations of SCTP and TCP transports and protocols in Section 3.1 | |||
| in turn. For each combination, the tester MUST establish export, | in turn. For each combination, the tester must establish export, | |||
| then kill the active Exporting Process. | then kill the active Exporting Process. | |||
| The tester MUST ensure that the associated Collecting Process shuts | The tester must ensure that the associated Collecting Process shuts | |||
| down SCTP associations and closes TCP connections associated with | down SCTP associations and closes TCP connections associated with | |||
| that export after a suitable timeout period. | that export after a suitable timeout period. | |||
| The tester MUST Ensure that the Collecting Process discards the | The tester must Ensure that the Collecting Process discards the | |||
| Template(s) received on the killed transport session. | Template(s) received on the killed transport session. | |||
| The tester MUST restart the Exporting Process again, and MUST ensure | The tester must restart the Exporting Process again, and must ensure | |||
| that the Exporting Process exports the Templates again. | that the Exporting Process exports the Templates again. | |||
| The tester MUST ensure that the Collecting Process receives and | The tester must ensure that the Collecting Process receives and | |||
| accepts both Templates and associated Data Records from the new | accepts both Templates and associated Data Records from the new | |||
| Exporting Process running at the same source host. | Exporting Process running at the same source host. | |||
| 3.6.3. Collecting Process termination and restart during data | 3.6.3. Collecting Process termination and restart during data | |||
| transmission | transmission | |||
| An IPFIX Exporting Process might be confronted with a faulty | An IPFIX Exporting Process might be confronted with a faulty | |||
| Collecting Process implementation that suddenly crashes, dropping any | Collecting Process implementation that suddenly crashes, dropping any | |||
| open Transport Sessions. The Collecting Process may be restarted | open Transport Sessions. The Collecting Process may be restarted | |||
| again soon after the crash. | again soon after the crash. | |||
| The tester MUST set up an Exporting Process and Collecting Process | The tester must set up an Exporting Process and Collecting Process | |||
| and cause IPFIX Templates and associated Data Records to be exported | and cause IPFIX Templates and associated Data Records to be exported | |||
| over all applicable combinations of SCTP and TCP transports and | over all applicable combinations of SCTP and TCP transports and | |||
| protocols in Section 3.1 in turn. Via UDP the restart of the | protocols in Section 3.1 in turn. Via UDP the restart of the | |||
| Collecting Process will be invisible to the Exporting Process and | Collecting Process will be invisible to the Exporting Process and | |||
| have no effect. | have no effect. | |||
| The tester MUST terminate the Collecting Process while the export is | The tester must terminate the Collecting Process while the export is | |||
| in progress, and MUST ensure that the Exporting Process shuts down | in progress, and must ensure that the Exporting Process shuts down | |||
| SCTP associations and closes TCP connections associated with that | SCTP associations and closes TCP connections associated with that | |||
| Collecting Process. | Collecting Process. | |||
| The tester MUST restart the Collecting Process and ensure that the | The tester must restart the Collecting Process and ensure that the | |||
| Exporting Process connects to the Collecting Process again and that | Exporting Process connects to the Collecting Process again and that | |||
| it exports the IPFIX Templates again. | it exports the IPFIX Templates again. | |||
| The tester MUST ensure that the new Collecting Process correctly | The tester must ensure that the new Collecting Process correctly | |||
| receives and decodes the IPFIX Data Records again. | receives and decodes the IPFIX Data Records again. | |||
| 3.6.4. Incorrect Template Records and Options Template Records | 3.6.4. Incorrect Template Records and Options Template Records | |||
| These tests verify the Collecting Process's operation when it | These tests verify the Collecting Process's operation when it | |||
| receives a Template Record or Options Template Record with an invalid | receives a Template Record or Options Template Record with an invalid | |||
| message length. Refer to the specifications in section 3.4.1 and | message length. Refer to the specifications in section 3.4.1 and | |||
| 3.4.2 of [RFC5101], respectively. | 3.4.2 of [RFC5101], respectively. | |||
| Consider the example Template Record shown in Figure 4. This | Consider the example Template Record shown in Figure 4. This | |||
| skipping to change at page 25, line 48 ¶ | skipping to change at page 21, line 48 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Set ID = 2 | Set Length = 12 | | | Set ID = 2 | Set Length = 12 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Template ID = 257 | Field Count = 2 | | | Template ID = 257 | Field Count = 2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |0| Info Element Identifier = 8 | Field Length = 4 | | |0| Info Element Identifier = 8 | Field Length = 4 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4 | Figure 4 | |||
| The tester MUST create and cause the Exporting Process to export the | The tester must create and cause the Exporting Process to export the | |||
| following IPFIX Templates, and MUST ensure the correct Collecting | following IPFIX Templates, and must ensure the correct Collecting | |||
| Process behaviour for each of the transports and protocols in | Process behaviour for each of the transports and protocols in | |||
| Section 3.1. | Section 3.1. | |||
| o For SCTP transport, ensure that the Collecting Process discards | o For SCTP transport, ensure that the Collecting Process discards | |||
| the IPFIX Message and shuts down the SCTP association, and check | the IPFIX Message and shuts down the SCTP association, and check | |||
| that it logs the error. | that it logs the error. | |||
| o For TCP transport, ensure that the Collecting Process discards the | o For TCP transport, ensure that the Collecting Process discards the | |||
| IPFIX Message, closes the TCP connection, and check that it logs | IPFIX Message, closes the TCP connection, and check that it logs | |||
| the error. Note that since TCP is a streaming (rather than | the error. Note that since TCP is a streaming (rather than | |||
| record-based) protocol, template length errors cannot be detected | record-based) protocol, template length errors cannot be detected | |||
| and may cause framing to be lost, potentially rendering the | and may cause framing to be lost, potentially rendering the | |||
| remainder of the IPFIX stream unintelligible. Therefore some of | remainder of the IPFIX stream unintelligible. Therefore some of | |||
| these tests are not applicable for TCP transport, as indicated. | these tests are not applicable for TCP transport, as indicated. | |||
| o For UDP transport, ensure that the Collecting Process discards the | o For UDP transport, ensure that the Collecting Process discards the | |||
| IPFIX Message, and check that it logs the error. | IPFIX Message, and check that it logs the error. | |||
| (a) The tester MUST create the IPFIX Template shown in Figure 4 and | (a) The tester must create the IPFIX Template shown in Figure 4 and | |||
| cause the Exporting Process to export it. The tester MUST ensure | cause the Exporting Process to export it. The tester must ensure | |||
| that the Collecting Process's behaviour is as specified above for | that the Collecting Process's behaviour is as specified above for | |||
| each transport type except for TCP, for which this test is not | each transport type except for TCP, for which this test is not | |||
| applicable. | applicable. | |||
| (b) Consider the IPFIX Template shown in Figure 4, modified with | (b) Consider the IPFIX Template shown in Figure 4, modified with | |||
| total length = 28. In this case the IPFIX Message has to be rejected | total length = 28. In this case the IPFIX Message has to be rejected | |||
| because field count = 2 and there is no second Information Element | because field count = 2 and there is no second Information Element | |||
| record present in the Set. The available data is exhausted after | record present in the Set. The available data is exhausted after | |||
| reading the first Information Element record. | reading the first Information Element record. | |||
| The tester MUST create the modified Template and cause the Exporting | The tester must create the modified Template and cause the Exporting | |||
| Process to export it. The tester MUST ensure that the Collecting | Process to export it. The tester must ensure that the Collecting | |||
| Process's behaviour is as specified above for each transport type. | Process's behaviour is as specified above for each transport type. | |||
| (c) Consider the IPFIX Template shown in Figure 4, modified with | (c) Consider the IPFIX Template shown in Figure 4, modified with | |||
| total length = 26. In this case the IPFIX Message has to be rejected | total length = 26. In this case the IPFIX Message has to be rejected | |||
| because the IPFIX Message length is too short. After the first | because the IPFIX Message length is too short. After the first | |||
| Information Element the IPFIX Message data is exhausted according to | Information Element the IPFIX Message data is exhausted according to | |||
| the total length information. | the total length information. | |||
| The tester MUST create the modified Template and cause the Exporting | The tester must create the modified Template and cause the Exporting | |||
| Process to export it. The tester MUST ensure that the Collecting | Process to export it. The tester must ensure that the Collecting | |||
| Process's behaviour is as specified above for each transport type. | Process's behaviour is as specified above for each transport type. | |||
| The TCP connection used for this test must be manually reset after | The TCP connection used for this test must be manually reset after | |||
| the test. | the test. | |||
| (d) Consider the IPFIX Template shown in Figure 4, modified with | (d) Consider the IPFIX Template shown in Figure 4, modified with | |||
| field count = 1. In this case the IPFIX Message must be rejected | field count = 1. In this case the IPFIX Message must be rejected | |||
| because total length is too large and does not match the amount of | because total length is too large and does not match the amount of | |||
| data available. | data available. | |||
| The tester MUST create the modified Template and cause the Exporting | The tester must create the modified Template and cause the Exporting | |||
| Process to export it. The tester MUST ensure that the Collecting | Process to export it. The tester must ensure that the Collecting | |||
| Process's behaviour is as specified above for each transport type. | Process's behaviour is as specified above for each transport type. | |||
| This test is not applicable for TCP transport. | This test is not applicable for TCP transport. | |||
| (e) Finally when the IPFIX Template shown in Figure 4 is extended | (e) Finally when the IPFIX Template shown in Figure 4 is extended | |||
| with the data shown in Figure 5, it becomes a correct IPFIX Template. | with the data shown in Figure 5, it becomes a correct IPFIX Template. | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |0| Info Element Identifier = 12| Field Length = 4 | | |0| Info Element Identifier = 12| Field Length = 4 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 5 | Figure 5 | |||
| The tester MUST create the modified Template and cause the Exporting | The tester must create the modified Template and cause the Exporting | |||
| Process to export it. The tester MUST ensure that the Template is | Process to export it. The tester must ensure that the Template is | |||
| accepted by the Collecting Process for each transport type. | accepted by the Collecting Process for each transport type. | |||
| The example Template record shown in Figure 6 must be dropped because | The example Template record shown in Figure 6 must be dropped because | |||
| the scope field count = 0. | the scope field count = 0. | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Version = 10 | Total Length = 30 | | | Version = 10 | Total Length = 30 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 27, line 48 ¶ | skipping to change at page 23, line 48 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Template ID = 257 | Field Count = 1 | | | Template ID = 257 | Field Count = 1 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Scope Field Count = 0 |0| Info Element Identifier = 8 | | | Scope Field Count = 0 |0| Info Element Identifier = 8 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Field Length = 4 | | | Field Length = 4 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 6 | Figure 6 | |||
| The tester MUST create the Template shown in Figure 6 and cause the | The tester must create the Template shown in Figure 6 and cause the | |||
| Exporting Process to export it. The tester MUST ensure that the | Exporting Process to export it. The tester must ensure that the | |||
| IPFIX Message is discarded by the Collecting Process for each | IPFIX Message is discarded by the Collecting Process for each | |||
| transport type, and MUST check that the Collecting Process logs an | transport type, and must check that the Collecting Process logs an | |||
| error. The tester MUST ensure that the Collecting Process also shuts | error. The tester must ensure that the Collecting Process also shuts | |||
| down the SCTP association or closes the TCP connection. | down the SCTP association or closes the TCP connection. | |||
| The tester MUST create an IPFIX Options Template where the field | The tester must create an IPFIX Options Template where the field | |||
| count is less than the scope field count, and cause the Exporting | count is less than the scope field count, and cause the Exporting | |||
| Process to export it. Use the above IPFIX Options Template with | Process to export it. Use the above IPFIX Options Template with | |||
| scope field count = 2. The tester MUST ensure that the Template is | scope field count = 2. The tester must ensure that the Template is | |||
| discarded by the Collecting Process for each transport type, and MUST | discarded by the Collecting Process for each transport type, and must | |||
| check that the Collecting Process logs an error. The tester MUST | check that the Collecting Process logs an error. The tester must | |||
| ensure that the Collecting Process shuts down the SCTP association or | ensure that the Collecting Process shuts down the SCTP association or | |||
| closes the TCP connection. | closes the TCP connection. | |||
| 3.6.5. Incorrect Data Record | 3.6.5. Incorrect Data Record | |||
| The tester MUST create the following invalid Data Records and cause | The tester must create the following invalid Data Records and cause | |||
| them to be exported to the Collecting Process over all applicable | them to be exported to the Collecting Process over all applicable | |||
| combinations of transports and protocols in Section 3.1. | combinations of transports and protocols in Section 3.1. | |||
| o IPFIX Message too short. | o IPFIX Message too short. | |||
| o Illegal use of reduced size encoding. | o Illegal use of reduced size encoding. | |||
| o Invalid length specification in case of variable length | o Invalid length specification in case of variable length | |||
| Information Elements. | Information Elements. | |||
| The tester MUST ensure that the Collecting Process discards the IPFIX | The tester must ensure that the Collecting Process discards the IPFIX | |||
| Message and shuts down the SCTP association or closes the TCP | Message and shuts down the SCTP association or closes the TCP | |||
| connection. | connection. | |||
| 3.6.6. Export of non-matching Template and Data Records | 3.6.6. Export of non-matching Template and Data Records | |||
| The tester MUST create Templates and associated Data Records that | The tester must create Templates and associated Data Records that | |||
| fail to conform to those Templates in the following ways: | fail to conform to those Templates in the following ways: | |||
| o too few Information Elements in Data Record | o too few Information Elements in Data Record | |||
| o too many Information Elements in Data Record | o too many Information Elements in Data Record | |||
| The tester MUST cause the Templates and associated Data Records to be | The tester must cause the Templates and associated Data Records to be | |||
| exported to the Collecting Process over all applicable combinations | exported to the Collecting Process over all applicable combinations | |||
| of transports and protocols in Section 3.1. | of transports and protocols in Section 3.1. | |||
| The tester MUST ensure that the Collecting Process discards the IPFIX | The tester must ensure that the Collecting Process discards the IPFIX | |||
| Message and shuts down the SCTP association or closes the TCP | Message and shuts down the SCTP association or closes the TCP | |||
| connection. | connection. | |||
| 3.6.7. Incorrect Set IDs | 3.6.7. Incorrect Set IDs | |||
| The tester MUST create Template Sets, Option Template Sets, and | The tester must create Template Sets, Option Template Sets, and | |||
| associated Data Sets with an incorrect Set ID, and cause these to be | associated Data Sets with an incorrect Set ID, and cause these to be | |||
| exported to the Collecting Process over all applicable combinations | exported to the Collecting Process over all applicable combinations | |||
| of transports and protocols in Section 3.1. | of transports and protocols in Section 3.1. | |||
| Per [RFC5101] section 3.3.2, only the Set ID values 2 and 3 denote | Per [RFC5101] section 3.3.2, only the Set ID values 2 and 3 denote | |||
| valid Sets. | valid Sets. | |||
| The tester MUST ensure that the Collecting Process discards the IPFIX | The tester must ensure that the Collecting Process discards the IPFIX | |||
| Message and shuts down the SCTP association or closes the TCP | Message and shuts down the SCTP association or closes the TCP | |||
| connection. | connection. | |||
| 3.6.8. Re-using Template IDs | 3.6.8. Re-using Template IDs | |||
| 3.6.8.1. Using SCTP transport. | 3.6.8.1. Using SCTP transport. | |||
| Refer to section 9 of [RFC5101] for the Collecting Process's SCTP | Refer to section 9 of [RFC5101] for the Collecting Process's SCTP | |||
| Template management specifications. | Template management specifications. | |||
| The tester MUST create an IPFIX Template and cause it to be exported | The tester must create an IPFIX Template and cause it to be exported | |||
| to a Collecting Process over SCTP transport. | to a Collecting Process over SCTP transport. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST cause the same Template to be exported to the same | The tester must cause the same Template to be exported to the same | |||
| Collecting Process over the same SCTP association, and MUST ensure | Collecting Process over the same SCTP association, and must ensure | |||
| that the Collecting Process resets the SCTP association and discards | that the Collecting Process resets the SCTP association and discards | |||
| the IPFIX Message. | the IPFIX Message. | |||
| The tester MUST create another IPFIX template and cause it to be | The tester must create another IPFIX template and cause it to be | |||
| exported to the Collecting Process over SCTP transport. | exported to the Collecting Process over SCTP transport. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST modify the Template contents while retaining the same | The tester must modify the Template contents while retaining the same | |||
| Template ID. | Template ID. | |||
| The tester MUST cause the modified Template to be exported to the | The tester must cause the modified Template to be exported to the | |||
| same Collecting Process over the SCTP same association, and MUST | same Collecting Process over the SCTP same association, and must | |||
| ensure that the Collecting Process resets the SCTP association and | ensure that the Collecting Process resets the SCTP association and | |||
| discards the IPFIX Message. | discards the IPFIX Message. | |||
| The tester MUST check that an error was logged. | The tester must check that an error was logged. | |||
| The tester MUST create another IPFIX Template and cause it to be | The tester must create another IPFIX Template and cause it to be | |||
| exported to the Collecting Process over SCTP transport. | exported to the Collecting Process over SCTP transport. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST cause a Template Withdrawal Message for the Template | The tester must cause a Template Withdrawal Message for the Template | |||
| to be sent to the Collecting Process over the same SCTP association, | to be sent to the Collecting Process over the same SCTP association, | |||
| and MUST ensure that the Template has been discarded by the | and must ensure that the Template has been discarded by the | |||
| Collecting Process. | Collecting Process. | |||
| The tester MUST create Data Records conforming to the Template and | The tester must create Data Records conforming to the Template and | |||
| cause them to be exported to the Collecting Process over the same | cause them to be exported to the Collecting Process over the same | |||
| SCTP association. | SCTP association. | |||
| The tester MUST ensure that the Collecting Process discards the Data | The tester must ensure that the Collecting Process discards the Data | |||
| Records and logs a warning. | Records and logs a warning. | |||
| The tester MUST cause the same Template to be exported to the same | The tester must cause the same Template to be exported to the same | |||
| Collecting Process over the same SCTP association. | Collecting Process over the same SCTP association. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST create Data Records conforming to the Template and | The tester must create Data Records conforming to the Template and | |||
| cause them to be exported to the Collecting Process over the same | cause them to be exported to the Collecting Process over the same | |||
| SCTP association. | SCTP association. | |||
| The tester MUST ensure that the Collecting Process correctly receives | The tester must ensure that the Collecting Process correctly receives | |||
| and decodes the Data Records. | and decodes the Data Records. | |||
| 3.6.8.2. Using TCP transport. | 3.6.8.2. Using TCP transport. | |||
| Refer to section 10.4.3 of [RFC5101] for the Collecting Process's TCP | Refer to section 10.4.3 of [RFC5101] for the Collecting Process's TCP | |||
| Template management specifications. | Template management specifications. | |||
| The tester MUST create an IPFIX Template and cause it to be exported | The tester must create an IPFIX Template and cause it to be exported | |||
| to a Collecting Process over TCP transport. | to a Collecting Process over TCP transport. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST cause the same Template to be exported to the same | The tester must cause the same Template to be exported to the same | |||
| Collecting Process over the same TCP connection, and MUST ensure that | Collecting Process over the same TCP connection, and must ensure that | |||
| the Collecting Process resets the TCP connection and discards the | the Collecting Process resets the TCP connection and discards the | |||
| IPFIX Message. | IPFIX Message. | |||
| The tester MUST create an IPFIX Template and cause it to be exported | The tester must create an IPFIX Template and cause it to be exported | |||
| to the Collecting Process over TCP transport. | to the Collecting Process over TCP transport. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST modify the Template contents while retaining the same | The tester must modify the Template contents while retaining the same | |||
| Template ID. | Template ID. | |||
| The tester MUST cause the modified Template to be exported to the | The tester must cause the modified Template to be exported to the | |||
| same Collecting Process over the same TCP connection, and MUST ensure | same Collecting Process over the same TCP connection, and must ensure | |||
| that the Collecting Process resets the TCP connection and discards | that the Collecting Process resets the TCP connection and discards | |||
| the IPFIX Message. | the IPFIX Message. | |||
| The tester MUST check that an error was logged. | The tester must check that an error was logged. | |||
| The tester MUST create another IPFIX Template and cause it to be | The tester must create another IPFIX Template and cause it to be | |||
| exported to the Collecting Process over TCP transport. | exported to the Collecting Process over TCP transport. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST cause a Template Withdrawal Message for the Template | The tester must cause a Template Withdrawal Message for the Template | |||
| to be sent to the Collecting Process over the same TCP connection, | to be sent to the Collecting Process over the same TCP connection, | |||
| and MUST ensure that the Template has been discarded by the | and must ensure that the Template has been discarded by the | |||
| Collecting Process. | Collecting Process. | |||
| The tester MUST create Data Records conforming to the same Template | The tester must create Data Records conforming to the same Template | |||
| and cause them to be exported to the same Collecting Process over the | and cause them to be exported to the same Collecting Process over the | |||
| same TCP connection. | same TCP connection. | |||
| The tester MUST ensure that the Collecting Process discards the Data | The tester must ensure that the Collecting Process discards the Data | |||
| Records and logs a warning. | Records and logs a warning. | |||
| The tester MUST cause the same Template to be exported to the same | The tester must cause the same Template to be exported to the same | |||
| Collecting Process over the same TCP connection. | Collecting Process over the same TCP connection. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST create Data Records conforming to the Template and | The tester must create Data Records conforming to the Template and | |||
| cause them to be exported to the same Collecting Process over the | cause them to be exported to the same Collecting Process over the | |||
| same TCP connection. | same TCP connection. | |||
| The tester MUST ensure that the Collecting Process correctly receives | The tester must ensure that the Collecting Process correctly receives | |||
| and decodes the Data Records. | and decodes the Data Records. | |||
| 3.6.8.3. Using UDP transport. | 3.6.8.3. Using UDP transport. | |||
| Refer to sections 10.3.6 and 10.3.7 of [RFC5101] for the UDP Template | Refer to sections 10.3.6 and 10.3.7 of [RFC5101] for the UDP Template | |||
| management specifications. | management specifications. | |||
| 3.6.8.3.1. Re-using the same Template ID inside the Template lifetime | 3.6.8.3.1. Re-using the same Template ID inside the Template lifetime | |||
| The tester MUST create an IPFIX Template and cause it to be exported | The tester must create an IPFIX Template and cause it to be exported | |||
| to a Collecting Process over UDP transport. | to a Collecting Process over UDP transport. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| Before the Template lifetime expires on the Collecting Process, the | Before the Template lifetime expires on the Collecting Process, the | |||
| tester MUST cause the same Template to be exported over the same UDP | tester must cause the same Template to be exported over the same UDP | |||
| connection to the same Collecting Process and MUST ensure that the | connection to the same Collecting Process and must ensure that the | |||
| Collecting Process accepts the Template. | Collecting Process accepts the Template. | |||
| The tester MUST create a different Template with the same ID and MUST | The tester must create a different Template with the same ID and must | |||
| cause this to be exported to the same Collecting Process over the | cause this to be exported to the same Collecting Process over the | |||
| same UDP connection before the original Template lifetime expires. | same UDP connection before the original Template lifetime expires. | |||
| The tester MUST ensure that the Collecting Process does not reject | The tester must ensure that the Collecting Process does not reject | |||
| the new Template. | the new Template. | |||
| The tester MUST create Data Records conforming to the new Template | The tester must create Data Records conforming to the new Template | |||
| and cause them to be exported to the same Collecting Process over the | and cause them to be exported to the same Collecting Process over the | |||
| same UDP connection. | same UDP connection. | |||
| The tester MUST ensure that the Collecting Process correctly receives | The tester must ensure that the Collecting Process correctly receives | |||
| and decodes the Data Records. | and decodes the Data Records. | |||
| 3.6.8.3.2. Re-using the same Template ID after the Template lifetime | 3.6.8.3.2. Re-using the same Template ID after the Template lifetime | |||
| The tester MUST create an IPFIX Template and cause it to be exported | The tester must create an IPFIX Template and cause it to be exported | |||
| to a Collecting Process over UDP transport. | to a Collecting Process over UDP transport. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST allow the received Template lifetime to expire on the | The tester must allow the received Template lifetime to expire on the | |||
| Collecting Process. | Collecting Process. | |||
| The tester MUST create Data Records conforming to the Template and | The tester must create Data Records conforming to the Template and | |||
| cause them to be exported to the same Collecting Process over the | cause them to be exported to the same Collecting Process over the | |||
| same UDP connection. | same UDP connection. | |||
| The tester MUST ensure that the Collecting Process discards the Data | The tester must ensure that the Collecting Process discards the Data | |||
| Records. | Records. | |||
| The tester MUST check that the Collecting Process logs a warning. | The tester must check that the Collecting Process logs a warning. | |||
| The tester MUST cause the same Template to be exported to the same | The tester must cause the same Template to be exported to the same | |||
| Collecting Process over the same UDP connection. | Collecting Process over the same UDP connection. | |||
| The tester MUST ensure that the Template was correctly received and | The tester must ensure that the Template was correctly received and | |||
| decoded by the Collecting Process. | decoded by the Collecting Process. | |||
| The tester MUST create Data Records conforming to the Template and | The tester must create Data Records conforming to the Template and | |||
| cause them to be exported to the same Collecting Process over the | cause them to be exported to the same Collecting Process over the | |||
| same UDP connection. | same UDP connection. | |||
| The tester MUST ensure that the Collecting Process correctly receives | The tester must ensure that the Collecting Process correctly receives | |||
| and decodes the Data Records. | and decodes the Data Records. | |||
| 3.7. TLS connectivity and policy selection | 3.7. TLS connectivity and policy selection | |||
| This section lists tests that verify connectivity over TLS and DTLS, | This section lists tests that verify connectivity over TLS and DTLS, | |||
| and proper selection of TLS policies as specified in the IPFIX | and proper selection of TLS policies as specified in the IPFIX | |||
| Protocol. It specifically does NOT purport to test the security of | Protocol. It specifically does NOT purport to test the security of | |||
| IPFIX Message transport over TLS or DTLS, as evaluating the security | IPFIX Message transport over TLS or DTLS, as evaluating the security | |||
| of a transport session is really a test of the TLS or DTLS | of a transport session is really a test of the TLS or DTLS | |||
| implementation over which a given IPFIX implementation runs, and as | implementation over which a given IPFIX implementation runs, and as | |||
| skipping to change at page 33, line 40 ¶ | skipping to change at page 29, line 40 ¶ | |||
| Refer to section 11 of [RFC5101] for the security specifications. | Refer to section 11 of [RFC5101] for the security specifications. | |||
| 3.7.1. TLS test setup | 3.7.1. TLS test setup | |||
| Setting up for TLS connectivity and policy testing requires the | Setting up for TLS connectivity and policy testing requires the | |||
| creation of appropriate X.509 certificates and private keys for a | creation of appropriate X.509 certificates and private keys for a | |||
| test environment, and the configuration of a DNS server to answer | test environment, and the configuration of a DNS server to answer | |||
| with consistent information for the hosts used in the test. | with consistent information for the hosts used in the test. | |||
| The tester MUST configure the following certificates: | The tester must configure the following certificates: | |||
| 1. A Certificate Authority (CA) certificate and associated | 1. A Certificate Authority (CA) certificate and associated | |||
| private key for signing the following certificates. | private key for signing the following certificates. | |||
| 2. One certificate and associated private key, with a CN (Common | 2. One certificate and associated private key, with a CN (Common | |||
| Name) or subjectAltName extension of type dNSName containing the | Name) or subjectAltName extension of type dNSName containing the | |||
| fully qualified domain name of the host, signed by the CA | fully qualified domain name of the host, signed by the CA | |||
| certificate in 1, for each IPFIX Exporting Process in the test. | certificate in 1, for each IPFIX Exporting Process in the test. | |||
| 3. One certificate and associated private key, with a CN (common | 3. One certificate and associated private key, with a CN (common | |||
| name) or subjectAltName extension of type dNSName containing the | name) or subjectAltName extension of type dNSName containing the | |||
| fully qualified domain name of the host, signed by the CA | fully qualified domain name of the host, signed by the CA | |||
| certificate in 1, for each IPFIX Collecting Process in the test. | certificate in 1, for each IPFIX Collecting Process in the test. | |||
| The tester MUST configure consistent forward (A, AAAA) and reverse | The tester must configure consistent forward (A, AAAA) and reverse | |||
| (PTR) DNS records for each host in the test on a DNS server used by | (PTR) DNS records for each host in the test on a DNS server used by | |||
| the hosts for name resolution. | the hosts for name resolution. | |||
| The tester MUST ensure that the Exporting Process and Collecting | The tester must ensure that the Exporting Process and Collecting | |||
| Process are on different hosts. | Process are on different hosts. | |||
| 3.7.2. TLS over TCP connectivity test | 3.7.2. TLS over TCP connectivity test | |||
| The tester MUST set up certificates and DNS as in Section 3.7.1. | The tester must set up certificates and DNS as in Section 3.7.1. | |||
| The tester MUST configure one Exporting Process and one Collecting | The tester must configure one Exporting Process and one Collecting | |||
| Process with their appropriate certificates to transfer IPFIX | Process with their appropriate certificates to transfer IPFIX | |||
| Messages over TLS over TCP. | Messages over TLS over TCP. | |||
| The tester MUST create an IPFIX Template and associated Data Record, | The tester must create an IPFIX Template and associated Data Record, | |||
| and cause them to be exported over the TCP connection. | and cause them to be exported over the TCP connection. | |||
| The tester MUST ensure that a TCP connection and a TLS connection | The tester must ensure that a TCP connection and a TLS connection | |||
| were established, MUST ensure that data was exchanged, and MUST | were established, must ensure that data was exchanged, and must | |||
| ensure that the data received at the Collecting Process is correct. | ensure that the data received at the Collecting Process is correct. | |||
| 3.7.3. DTLS over UDP connectivity test | 3.7.3. DTLS over UDP connectivity test | |||
| The tester MUST set up certificates and DNS as in Section 3.7.1. | The tester must set up certificates and DNS as in Section 3.7.1. | |||
| The tester MUST configure one Exporting Process and one Collecting | The tester must configure one Exporting Process and one Collecting | |||
| Process with their appropriate certificates to transfer IPFIX | Process with their appropriate certificates to transfer IPFIX | |||
| Messages over DTLS over UDP. | Messages over DTLS over UDP. | |||
| The tester MUST create an IPFIX Template and associated Data Record, | The tester must create an IPFIX Template and associated Data Record, | |||
| and cause them to be exported over the UDP connection. | and cause them to be exported over the UDP connection. | |||
| The tester MUST ensure that UDP packets were sent and a DTLS | The tester must ensure that UDP packets were sent and a DTLS | |||
| connection was established, MUST ensure that data was exchanged, and | connection was established, must ensure that data was exchanged, and | |||
| MUST ensure that the data received at the Collecting Process is | must ensure that the data received at the Collecting Process is | |||
| correct. | correct. | |||
| 3.7.4. DTLS over PR-SCTP connectivity test | 3.7.4. DTLS over PR-SCTP connectivity test | |||
| The tester MUST set up certificates and DNS as in Section 3.7.1. | The tester must set up certificates and DNS as in Section 3.7.1. | |||
| The tester MUST configure one Exporting Process and one Collecting | The tester must configure one Exporting Process and one Collecting | |||
| Process with their appropriate certificates to transfer IPFIX | Process with their appropriate certificates to transfer IPFIX | |||
| Messages over DTLS over PR-SCTP. | Messages over DTLS over PR-SCTP. | |||
| The tester MUST create an IPFIX Template and associated Data Record, | The tester must create an IPFIX Template and associated Data Record, | |||
| and cause them to be exported over the SCTP association. | and cause them to be exported over the SCTP association. | |||
| The tester MUST ensure that an SCTP association and a DTLS connection | The tester must ensure that an SCTP association and a DTLS connection | |||
| were established, MUST ensure that data was exchanged, and MUST | were established, must ensure that data was exchanged, and must | |||
| ensure that the data received at the Collecting Process is correct. | ensure that the data received at the Collecting Process is correct. | |||
| 3.7.5. TLS bidirectional authentication policy test | 3.7.5. TLS bidirectional authentication policy test | |||
| This is an optional test for Collecting Processes only; it requires | This is an optional test for Collecting Processes only; it requires | |||
| the modification of an Exporting Process to NOT present a | the modification of an Exporting Process to NOT present a | |||
| certificate. | certificate. | |||
| The tester MUST modify an Exporting Process to NOT present a | The tester must modify an Exporting Process to NOT present a | |||
| certificate. | certificate. | |||
| The tester MUST perform the connectivity tests in Section 3.7.2, | The tester must perform the connectivity tests in Section 3.7.2, | |||
| Section 3.7.3, and Section 3.7.4. | Section 3.7.3, and Section 3.7.4. | |||
| The tester MUST ensure that the Collecting Process rejects the TLS or | The tester must ensure that the Collecting Process rejects the TLS or | |||
| DTLS connection establishment. | DTLS connection establishment. | |||
| 3.7.6. Exporting Process Identity Mismatch TLS Policy test | 3.7.6. Exporting Process Identity Mismatch TLS Policy test | |||
| The tester MUST set up certificates and DNS as in Section 3.7.1. | The tester must set up certificates and DNS as in Section 3.7.1. | |||
| The tester MUST use a certificate for the Exporting Process that does | The tester must use a certificate for the Exporting Process that does | |||
| NOT match the fully qualified domain name of the host on which the | NOT match the fully qualified domain name of the host on which the | |||
| Exporting Process runs. | Exporting Process runs. | |||
| The tester MUST Perform the connectivity tests in Section 3.7.2, | The tester must Perform the connectivity tests in Section 3.7.2, | |||
| Section 3.7.3, and Section 3.7.4. | Section 3.7.3, and Section 3.7.4. | |||
| The tester MUST ensure that the Collecting Process rejects the TLS or | The tester must ensure that the Collecting Process rejects the TLS or | |||
| DTLS connection establishment. | DTLS connection establishment. | |||
| 3.7.7. Collecting Process Identity Mismatch TLS Policy test | 3.7.7. Collecting Process Identity Mismatch TLS Policy test | |||
| The tester MUST set up certificates and DNS as in Section 3.7.1. | The tester must set up certificates and DNS as in Section 3.7.1. | |||
| The tester MUST use a certificate for the Collecting Process that | The tester must use a certificate for the Collecting Process that | |||
| does NOT match the fully qualified domain name of the host on which | does NOT match the fully qualified domain name of the host on which | |||
| the Collecting Process runs. | the Collecting Process runs. | |||
| The tester MUST perform the connectivity tests in Section 3.7.2, | The tester must perform the connectivity tests in Section 3.7.2, | |||
| Section 3.7.3, and Section 3.7.4. | Section 3.7.3, and Section 3.7.4. | |||
| The tester MUST ensure that the Exporting Process rejects the TLS or | The tester must ensure that the Exporting Process rejects the TLS or | |||
| DTLS connection establishment. | DTLS connection establishment. | |||
| 4. Security considerations | 4. Security considerations | |||
| This memo raises no security issues. | This memo raises no security issues. | |||
| 5. IANA considerations | 5. IANA considerations | |||
| This memo raises no IANA considerations. | This memo raises no IANA considerations. | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| The authors wish to thank Brian Trammell for contributing the initial | The authors wish to thank Brian Trammell for contributing the initial | |||
| text for Section 3.7. | text for Section 3.7. | |||
| 7. References | 7. Normative references | |||
| 7.1. Normative references | ||||
| [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-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. | |||
| skipping to change at page 40, line 33 ¶ | skipping to change at page 37, line 5 ¶ | |||
| RFC 3917, October 2004. | RFC 3917, October 2004. | |||
| [RFC5101] Claise, B., "Specification of the IP Flow Information | [RFC5101] Claise, B., "Specification of the IP Flow Information | |||
| Export (IPFIX) Protocol for the Exchange of IP Traffic | Export (IPFIX) Protocol for the Exchange of IP Traffic | |||
| Flow Information", RFC 5101, January 2008. | Flow Information", RFC 5101, January 2008. | |||
| [RFC5102] Quittek, J., Bryant, S., Claise, B., Aitken, P., and J. | [RFC5102] Quittek, J., Bryant, S., Claise, B., Aitken, P., and J. | |||
| Meyer, "Information Model for IP Flow Information Export", | Meyer, "Information Model for IP Flow Information Export", | |||
| RFC 5102, January 2008. | RFC 5102, January 2008. | |||
| 7.2. Informative references | ||||
| [RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C., | ||||
| Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M., | ||||
| Zhang, L., and V. Paxson, "Stream Control Transmission | ||||
| Protocol", RFC 2960, October 2000. | ||||
| [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | ||||
| Jacobson, "RTP: A Transport Protocol for Real-Time | ||||
| Applications", STD 64, RFC 3550, July 2003. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Carsten Schmoll | Carsten Schmoll | |||
| Fraunhofer FOKUS | Fraunhofer FOKUS | |||
| Kaiserin-Augusta-Allee 31 | Kaiserin-Augusta-Allee 31 | |||
| Berlin D-10589 | Berlin D-10589 | |||
| Germany | Germany | |||
| Phone: +49 30 3463 7136 | Phone: +49 30 3463 7136 | |||
| Email: carsten.schmoll@fokus.fraunhofer.de | Email: carsten.schmoll@fokus.fraunhofer.de | |||
| skipping to change at page 42, line 44 ¶ | skipping to change at line 1453 ¶ | |||
| attempt made to obtain a general license or permission for the use of | attempt made to obtain a general license or permission for the use of | |||
| such proprietary rights by implementers or users of this | such proprietary rights by implementers or users of this | |||
| specification can be obtained from the IETF on-line IPR repository at | specification can be obtained from the IETF on-line IPR repository at | |||
| http://www.ietf.org/ipr. | http://www.ietf.org/ipr. | |||
| The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
| copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
| rights that may cover technology that may be required to implement | rights that may cover technology that may be required to implement | |||
| this standard. Please address the information to the IETF at | this standard. Please address the information to the IETF at | |||
| ietf-ipr@ietf.org. | ietf-ipr@ietf.org. | |||
| Acknowledgment | ||||
| Funding for the RFC Editor function is provided by the IETF | ||||
| Administrative Support Activity (IASA). | ||||
| End of changes. 238 change blocks. | ||||
| 577 lines changed or deleted | 362 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/ | ||||