tech-invite   World Map     

IETF     RFCs     Groups     SIP     ABNFs    |    3GPP     Specs     Glossaries     Architecture     IMS     UICC    |    search     info

RFC 6313

 
 
 

Export of Structured Data in IP Flow Information Export (IPFIX)

Part 3 of 4, p. 33 to 50
Prev RFC Part       Next RFC Part

 


prevText      Top      Up      ToC       Page 33 
6.  Template Management

   This section introduces some more specific Template management and
   Template Withdrawal Message-related specifications compared to the
   IPFIX protocol specification [RFC5101].

   First of all, the Template ID uniqueness is unchanged compared to
   [RFC5101]; the uniqueness is local to the Transport Session and
   Observation Domain that generated the Template ID.  In other words,
   the Set ID used to export the Template Record does not influence the
   Template ID uniqueness.

   While [RFC5101] mentions that "if an Information Element is required
   more than once in a Template, the different occurrences of this
   Information Element SHOULD follow the logical order of their
   treatments by the Metering Process", this rule MAY be ignored within
   Structured Data Information Elements.

   As specified in [RFC5101], Templates that are not used anymore SHOULD
   be deleted.  Deleting a Template implies that it MUST NOT be used
   within subTemplateList and subTemplateMultiList anymore.  Before
   reusing a Template ID, the Template MUST be deleted.  In order to
   delete an allocated Template, the Template is withdrawn through the
   use of a Template Withdrawal Message.

7.  The Collecting Process's Side

   This section introduces some more specific specifications to the
   Collection Process compared to Section 9 in the IPFIX protocol
   [RFC5101].

   As opposed to the IPFIX specification in [RFC5101], IPFIX Messages
   with IPFIX Structured Data Information Elements change the IPFIX

Top      Up      ToC       Page 34 
   concept from the Collector's point of view as the data types are
   present in the Data Records rather than in the Template Records.  For
   example, a basicList Information Element in a Template Record doesn't
   specify the list element data type; this information is contained in
   the Data Record.  For example, in case of a subTemplateMultiList, the
   Collecting Process must refer to the included Template Records in the
   middle of the Data Record decode.

   As described in [RFC5101], a Collecting Process MUST note the
   Information Element identifier of any Information Element that it
   does not understand and MAY discard that Information Element from the
   Flow Record.  Therefore, a Collection Process that does not support
   the extension specified in this document can ignore the Structured
   Data Information Elements in a Data Record, or it can ignore Data
   Records containing these new Structured Data Information Elements
   while continuing to process other Data Records.

   If the structured data contains the "undefined" structured data type
   semantic, the Collecting Process MAY attempt to draw its own
   conclusion in terms of the semantic contained in the Data Record.

8.  Defining New Information Elements Based on the New Abstract Data
    Types

   This document specifies three new abstract data types: basicList,
   subTemplateList, and subTemplateMultiList.  As specified in
   [RFC5102], the specification of new IPFIX Information Elements uses
   the Template specified in Section 2.1 of [RFC5102].  This Template
   mentioned existing and future the data types: "One of the types
   listed in Section 3.1 of this document or in a future extension of
   the information model".  So new Information Elements can be specified
   based on the three new abstract data types.

   The authors anticipate the creation of both enterprise-specific and
   IANA Information Elements based on the IPFIX structured data types.
   For example, bgpPathList, bgpSequenceList, and bgpSetList, of
   abstract types and semantics basicList/ordered, basicList/ordered,
   and basicList/exactlyOneOf respectively, would define the complete
   semantic of the list.  This specification doesn't specify any new
   Information Elements beyond the ones in Section 4.3.

9.  Structured Data Encoding Examples

   The following examples are created solely for the purpose of
   illustrating how the extensions proposed in this document are
   encoded.

Top      Up      ToC       Page 35 
9.1.  Encoding a Multicast Data Record with basicList

   Consider encoding a multicast Data Record containing the following
   data:

   ---------------------------------------------------------------
    Ingress If | Source IP   | Destination IP  | Egress Interfaces
   ---------------------------------------------------------------
         9       192.0.2.201      233.252.0.1         1, 4, 8
   ---------------------------------------------------------------

   Template Record for the multicast Flows, with the Template ID 256:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Set ID = 2            |      Length = 24 octets       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Template ID = 256       |       Field Count = 4         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|    ingressInterface = 10    |       Field Length = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   sourceIPv4Address = 8     |       Field Length = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| DestinationIPv4Address = 12 |       Field Length = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|       basicList = 291       |     Field Length = 0xFFFF     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

              Figure 11: Encoding basicList, Template Record

   The list of outgoing interfaces is represented as a basicList with
   semantic allOf, and the Length of the list is chosen to be encoded in
   three bytes even though it may be less than 255 octets.

Top      Up      ToC       Page 36 
   The Data Set is represented as follows:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 256         |          Length = 36          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     ingressInterface = 9                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               sourceIPv4Address = 192.0.2.201                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             DestinationIPv4Address = 233.252.0.1              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      255      |        List Length = 17       | semantic=allOf|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | egressInterface FieldId = 14  |egressInterface Field Length=4 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                egressInterface value 1 = 1                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                egressInterface value 2 = 4                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                egressInterface value 3 = 8                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

        Figure 12: Encoding basicList, Data Record, Semantic allOf

   In the example above, the basicList contains fixed-length elements.
   To illustrate how variable-length elements would be encoded, the same
   example is shown below with variable-length interface names in the
   basicList instead:

Top      Up      ToC       Page 37 
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 256         |          Length = 44          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     ingressInterface = 9                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               sourceIPv4Address = 192.0.2.201                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             DestinationIPv4Address = 233.252.0.1              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      255      |        List Length = 25       | semantic=allOf|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| InterfaceName FieldId = 82  | InterfaceName Field Len=0xFFFF|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Length = 5   |      'F'      |      'E'      |      '0'      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     '/'       |      '0'      |  Length = 7   |      'F'      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     'E'       |      '1'      |      '0'      |      '/'      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     '1'       |      '0'      |  Length = 5   |      'F'      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     'E'       |      '2'      |     '/'       |      '2'      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Figure 13: Encoding basicList, Data Record with Variable-Length
                       Elements, Semantic allOf

9.2.  Encoding a Load-Balanced Data Record with a basicList

   Consider encoding a load-balanced Data Record containing the
   following data:

   ---------------------------------------------------------------
    Ingress If | Source IP   | Destination IP  | Egress Interfaces
   ---------------------------------------------------------------
         9       192.0.2.201      233.252.0.1         1, 4, 8
   ---------------------------------------------------------------

Top      Up      ToC       Page 38 
   So the Data Record egressed from either interface 1, 4, or 8.  The
   Data Set is represented as follows:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 256         |          Length = 36          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     ingressInterface = 9                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               sourceIPv4Address = 192.0.2.201                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             DestinationIPv4Address = 233.252.0.1              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      255      |        List Length = 17       |sem=exactlyOne |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | egressInterface FieldId = 14  |egressInterface Field Length=4 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                egressInterface value 1 = 1                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                egressInterface value 2 = 4                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                egressInterface value 3 = 8                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         Note: sem=exactlyOne represents semantic=exactlyOneOf

     Figure 14: Encoding basicList, Data Record, Semantic exactlyOneOf

9.3.  Encoding subTemplateList

   As explained in Section 2.2, multiple pairs of
   (observationTimeMicroseconds, digestHashValue) must be collected from
   two different Observation Points to passively compute the one-way
   delay across the network.  This data can be exported with an
   optimized Data Record that consists of the following attributes:

       5-tuple
                 { observationTimeMicroseconds 1, digestHashValue 1 }
                 { observationTimeMicroseconds 2, digestHashValue 2 }
                 { observationTimeMicroseconds 3, digestHashValue 3 }
                 { ...  , ... }

   A subTemplateList is best suited for exporting the list of
   (observationTimeMicroseconds, digestHashValue).  For illustration
   purposes, the number of elements in the list is 5; in practice, it
   could be more.

Top      Up      ToC       Page 39 
   ------------------------------------------------------------------
   srcIP     | dstIP      | src   | dst  |proto| one-way delay
             |            | Port  | Port |     |   metrics
   ------------------------------------------------------------------
   192.0.2.1  192.0.2.105   1025     80     6    Time1, 0x0x91230613
                                                 Time2, 0x0x91230650
                                                 Time3, 0x0x91230725
                                                 Time4, 0x0x91230844
                                                 Time5, 0x0x91230978
   ------------------------------------------------------------------

   The following Template is defined for exporting the one-way delay
   metrics:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Set ID = 2             |      Length = 16 octets       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Template ID = 257       |       Field Count = 2         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| observationTimeMicroSec=324 |       Field Length = 8        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   digestHashValue = 326     |       Field Length = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Figure 15: Encoding subTemplateList, Template for One-Way Delay
                                 Metrics

Top      Up      ToC       Page 40 
   The Template Record for the Optimized Data Record is as follows:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Set ID = 2            |      Length = 32 octets       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Template ID = 258       |       Field Count = 6         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   sourceIPv4Address = 8     |       Field Length = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| destinationIPv4Address = 12 |       Field Length = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|  sourceTransportPort = 7    |       Field Length = 2        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| destinationTransportPort= 11|       Field Length = 2        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| protocolIdentifier = 4      |       Field Length = 1        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|  subTemplateList = 292      |     Field Length = 0xFFFF     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

           Figure 16: Encoding subTemplateList, Template Record

   The list of (observationTimeMicroseconds, digestHashValue) is
   exported as a subTemplateList with semantic allOf.  The Length of the
   subTemplateList is chosen to be encoded in three bytes even though it
   may be less than 255 octets.

   The Data Record is represented as follows:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Set ID = 258          |      Length = 83 octets       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                sourceIPv4Address = 192.0.2.1                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |              destinationIPv4Address = 192.0.2.105             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | sourceTransportPort = 1025    | destinationTransportPort = 80 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Protocol = 6  |      255      | one-way metrics list len = 63 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | semantic=allOf|       TemplateID = 257        | TimeValue1    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 ... octets 2-5 of TimeValue1                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Top      Up      ToC       Page 41 
   |          ... octets 6-8 of TimeValue1         |digestHashVal1=|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                ... 0x0x91230613               | TimeValue2    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 ... octets 2-5 of TimeValue2                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          ... octets 6-8 of TimeValue2         |digestHashVal2=|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                ... 0x0x91230650               | TimeValue3    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 ... octets 2-5 of TimeValue3                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          ... octets 6-8 of TimeValue3         |digestHashVal3=|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                ... 0x0x91230725               | TimeValue4    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 ... octets 2-5 of TimeValue4                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          ... octets 6-8 of TimeValue4         |digestHashVal4=|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                ... 0x0x91230844               | TimeValue5    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 ... octets 2-5 of TimeValue5                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          ... octets 6-8 of TimeValue5         |digestHashVal5=|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                ... 0x0x91230978               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                Figure 17: Encoding subTemplateList, Data Set

9.4.  Encoding subTemplateMultiList

   As explained in Section 4.5.3, a subTemplateMultiList is used to
   export a list of mixed-type content where each top-level element
   corresponds to a different Template Record.

   To illustrate this, consider the Data Record with the following
   attributes:

Top      Up      ToC       Page 42 
        5-tuple (Flow Keys), octetCount, packetCount
                  attributes for filtering
                       selectorId,
                       selectorAlgorithm
                  attributes for sampling
                       selectorId,
                       selectorAlgorithm,
                       samplingPacketInterval,
                       samplingPacketSpace

   This example demonstrates that the Selector Report Interpretation
   [RFC5476] can be encoded with the subTemplateMultiList.  More
   specifically, the example describes Property Match Filtering Selector
   Report Interpretation [RFC5476] used for filtering purposes, and the
   Systemic Count-Based Sampling as described in Section 6.5.2.1 of
   [RFC5476].  Some traffic will be filtered according to match
   properties configured, some will be sampled, some will be filtered
   and sampled, and some will not be filtered or sampled.

   A subTemplateMultiList is best suited for exporting this variable
   data.  A Template is defined for filtering attributes and another
   Template is defined for sampling attributes.  A Data Record can
   contain data corresponding to either of the Templates, both of them,
   or neither of them.

   Consider the example below where the following Data Record contains
   both filtering and sampling attributes.

   Key attributes of the Data Record:

   ------------------------------------------------------------------
   srcIP      | dstIP     | src  | dst  | proto | octetCount | packet
              |           | Port | Port |       |            | Count
   ------------------------------------------------------------------
   2001:DB8::1 2001:DB8::2  1025    80      6       108000      120
   ------------------------------------------------------------------

   Filtering attributes:

   -------------------------------------------
   selectorId  | selectorAlgorithm
   -------------------------------------------
      100         5 (Property Match Filtering)
   -------------------------------------------

Top      Up      ToC       Page 43 
   Sampling attributes:

   For Systemic Count-Based Sampling as defined in Section 6.5.2.1 of
   [RFC5476] the required algorithm-specific Information Elements are:

         samplingPacketInterval: number of packets selected in a row
         samplingPacketSpace:    number of packets between selections

   Example of a simple 1-out-of-100 systematic count-based Selector
   definition, where the samplingPacketInterval is 1 and the
   samplingPacketSpace is 99.

   --------------------------------------------------------------
   selectorId | selectorAlgorithm        | sampling | sampling
              |                          | Packet   | Packet
              |                          | Interval | Space
   --------------------------------------------------------------
      15        1 (Count-Based Sampling)      1         99
   --------------------------------------------------------------

   To represent the Data Record, the following Template Records are
   defined:

       Template for filtering attributes: 259
        Template for sampling attributes: 260
        Template for Flow Record: 261

        Flow record (261)
            |  (sourceIPv6Address)
            |  (destinationIPv6Address)
            |  (sourceTransportPort)
            |  (destinationTransportPort)
            |  (protocolIdentifier)
            |  (octetTotalCount)
            |  (packetTotalCount)
            |
            +------ filtering attributes (259)
            |          (selectorId)
            |          (selectorAlgorithm)
            |
            +------ sampling attributes (260)
            |          (selectorId)
            |          (selectorAlgorithm)
            |          (samplingPacketInterval)
            |          (samplingPacketSpace)

Top      Up      ToC       Page 44 
   The following Template Record is defined for filtering attributes:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 2           |          Length = 16          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Template ID = 259        |        Field Count = 2        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|    selectorId = 302         |        Field Length = 4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| selectorAlgorithm = 304     |        Field Length = 1       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Figure 18: Encoding subTemplateMultiList, Template for Filtering
                               Attributes

   The Template for sampling attributes is defined as follows:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 2           |          Length = 24          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Template ID = 260        |        Field Count = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|    selectorId = 302         |        Field Length = 4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|  selectorAlgorithm = 304    |        Field Length = 1       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| samplingPacketInterval = 305|        Field Length = 1       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| samplingPacketSpace = 306   |        Field Length = 1       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 19: Encoding subTemplateMultiList, Template for Sampling
                               Attributes

   Note that while selectorAlgorithm is defined as unsigned16, and
   samplingPacketInterval and samplingPacketSpace are defined as
   unsigned32, they are compressed down to 1 octet here as allowed by
   Reduced Size Encoding in Section 6.2 of the IPFIX protocol
   specifications [RFC5101].

Top      Up      ToC       Page 45 
   Template for the Flow Record is defined as shown below:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 2           |          Length = 40          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Template ID = 261        |        Field Count = 8        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   sourceIPv6Address = 27    |       Field Length = 16       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| destinationIPv6Address = 28 |       Field Length = 16       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| sourceTransportPort = 7     |       Field Length = 2        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| destinationTransportPort=11 |       Field Length = 2        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| protocolIdentifier = 4      |       Field Length = 1        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   octetTotalCount = 85      |       Field Length = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   packetTotalCount = 86     |       Field Length = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0| subTemplateMultiList = 293  |     Field Length = 0XFFFF     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Figure 20: Encoding subTemplateMultiList, Template for Flow Record

   A subTemplateMultiList with semantic allOf is used to export the
   filtering and sampling attributes.  The Length field of the
   subTemplateMultiList is chosen to be encoded in three bytes even
   though it may be less than 255 octets.

   The Data Record is encoded as follows:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Set ID = 261            |          Length = 73          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      sourceIPv6Address =        ...           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              ...                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              ...                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          2001:DB8::1                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Top      Up      ToC       Page 46 
   |                   destinationIPv6Address =      ...           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              ...                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              ...                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          2001:DB8::2                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  sourceTransportPort = 1025   | destinationTransportPort = 80 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | protocol = 6  |        octetTotalCount = 108000               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     ...       |        packetTotalCount = 120                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     ...       |      255      | Attributes List Length = 21   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |semantic=allOf | Filtering Template ID = 259   |Filtering Attr |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | ...Length = 9 |              selectorId = ...                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | ...  100      |selectorAlg = 5|  Sampling Template ID = 260   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Sampling Attributes Length=11 |         selectorId = ...      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  ...         15               |selectorAlg = 1|  Interval = 1 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Space = 99    |
   +-+-+-+-+-+-+-+-+

           Figure 21: Encoding subTemplateMultiList, Data Set

9.5.  Encoding an Options Template Set Using Structured Data

   As described in Section 5.3, consider a mediation function that must
   aggregate Data Records from different Observation Points.

   Say Observation Point 1 consists of one or more interfaces,
   Observation Points 2 and 3 consist of one or more linecards, and
   Observation Point 4 consists of one or more interfaces and one or
   more linecards.  Without structured data, a Template would have to be
   defined for every possible combination to interpret the data
   corresponding to each of the Observation Points.  However, with
   structured data, a basicList can be used to encode the list of
   interfaces and another basicList can be used to encode the list of
   linecards.

Top      Up      ToC       Page 47 
   For the sake of simplicity, each Observation Point shown below has
   the IP address corresponding to the Router and an <interface> or
   <linecard> or <linecard and interface>.  This can very well be
   extended to include a list of interfaces and a list of linecards
   using basicLists as explained above.

      Observation Point 1: Router 1, (interface 1)
      Observation Point 2: Router 2, (linecard A)
      Observation Point 3: Router 3, (linecard B)
      Observation Point 4: Router 4, (linecard C, interface 2)

   The mediation function wishes to express this as a single Observation
   Point, in order to encode the PSAMP Selection Sequence Report
   Interpretation (SSRI).  Recall from [RFC5476] that the PSAMP
   Selection Sequence Report Interpretation consists of the following
   fields:

     Scope:     selectionSequenceId
     Non-Scope: one Information Element mapping the
                Observation Point
                selectorId (one or more)

   For example, the Observation Point detailed above may be encoded in a
   PSAMP Selection Sequence Report Interpretation as shown below:

    Selection Sequence 7 (Filter->Sampling):
     Observation Point: subTemplateMultiList.
      Router 1 (IP address = 192.0.2.11), (interface 1)
      Router 2 (IP address = 192.0.2.12), (linecard A)
      Router 3 (IP address = 192.0.2.13), (linecard B)
      Router 4 (IP address = 192.0.2.14), (linecard C, interface 2)
      selectorId: 5 (Filter, match IPv4SourceAddress 192.0.2.1)
      selectorId: 10 (Sampler, Random 1 out-of ten)

   The following Templates are defined to represent the PSAMP SSRI:
   Template for representing PSAMP SSRI: 262
   Template for representing interface: 263
   Template for representing linecard: 264
   Template for representing linecard and interface: 265

Top      Up      ToC       Page 48 
       PSAMP SSRI (262)
           | (SelectionSequenceId)
           |
           +--- Observation Point 1 (263)
           |      (exporterIPv4Address)
           |      (Interface Id)
           |
           +--- Observation Point 2 and 3 (264)
           |      (exporterIPv4Address)
           |      (linecard)
           |
           +--- Observation Point 4 (265)
           |      (exporterIPv4Address)
           |      (linecard)
           |      (Interface Id)
           |
           | (selectorId 1)
           | (selectorId 2)

   Note that the example could further be improved with a basicList
   of selectorId if many Selector IDs have to be reported.

                    Figure 22: PSAMP SSRI to Be Encoded

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 3           |          Length = 26          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Template ID = 262      |         Field Count = 4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Scope Field Count =  1    |0|  selectionSequenceId = 301  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Scope 1 Length = 4      |0| subTemplateMultiList =  293 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Field Length = 0xFFFF     |0|      selectorId = 302       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Field Length = 4       |0|      selectorId = 302       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Field Length = 4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         Figure 23: Options Template Record for PSAMP SSRI Using
                          subTemplateMultiList

   A subTemplateMultiList with semantic allOf is used to encode the
   list of Observation Points.

Top      Up      ToC       Page 49 
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 2           |          Length = 16          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Template ID = 263      |         Field Count = 2       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   exporterIPv4Address = 8   |        Field Length = 4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   ingressInterface = 10     |        Field Length = 4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         Figure 24: PSAMP SSRI, Template Record for interface


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 2           |          Length = 16          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Template ID = 264      |         Field Count = 2       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   exporterIPv4Address = 8   |         Field Length = 4      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|      lineCardId = 141       |         Field Length = 4      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

          Figure 25: PSAMP SSRI, Template Record for linecard


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 2           |          Length = 20          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Template ID = 265      |         Field Count = 3       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|   exporterIPv4Address = 8   |       Field Length = 4        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|      lineCardId = 141       |        Field Length = 4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0|    ingressInterface = 10    |        Field Length = 4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Figure 26: PSAMP SSRI, Template Record for linecard and interface

Top      Up      ToC       Page 50 
   The PSAMP SSRI Data Set is represented as follows:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Set ID = 262         |           Length = 68         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    selectionSequenceId = 7                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      255      | Observation Point List Len=49 |semantic=allOf |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     OP1 Template ID = 263     |        OP1 Length = 12        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Router 1 exporterIPv4Address = 192.0.2.11             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  OP1 ingressInterface = 1                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   OP2&OP3 Template ID = 264   |    OP2 & OP3 Length = 20      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Router 2 exporterIPv4Address = 192.0.2.12             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      OP2 lineCardId = A                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Router 3 exporterIPv4Address = 192.0.2.13             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      OP3 lineCardId = B                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     OP4 Template ID = 265     |         OP4 Length = 16       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Router 4 exporterIPv4Address = 192.0.2.14             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      OP4 lineCardId = C                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                   OP4 ingressInterface = 2                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         selectorId = 5                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         selectorId = 10                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Figure 27: Example of a PSAMP SSRI Data Record, Encoded Using a
                         subTemplateMultiList

   Note that the Data Record above contains multiple instances of
   Template 264 to represent Observation Point 2 (Router2, linecard A)
   and Observation Point 3 (Router3, linecard B).  Instead, if a single
   Observation Point had both linecard A and linecard B, a basicList
   would be used to represent the list of linecards.


Next RFC Part