<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc3234 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3234.xml">
<!ENTITY rfc3917 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3917.xml">
]>
<rfc number="5103" category="std">
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
  <front>
    <title abbrev="IPFIX Biflow Export">
      Bidirectional Flow Export Using IP Flow Information Export (IPFIX)
    </title>
    <author initials="B." surname="Trammell" fullname="Brian H. Trammell">
      <organization abbrev="CERT/NetSA">
      CERT Network Situational Awareness
      </organization>
      <address>
        <postal>
          <street>Software Engineering Institute</street>
          <street>4500 Fifth Avenue</street>
          <city>Pittsburgh</city>
          <region>PA</region>
          <code>15213</code>
          <country>US</country>
        </postal>
        <phone>+1 412 268 9748</phone>
        <email>bht@cert.org</email>
      </address>
    </author>
    <author initials="E." surname="Boschi" fullname="Elisa Boschi">
      <organization abbrev="Hitachi Europe">
      Hitachi Europe SAS
      </organization>
      <address>
        <postal>
          <street>Immeuble Le Theleme</street>
          <street>1503 Route les Dolines</street>
          <city>06560 Valbonne</city>
          <country>France</country>
        </postal>
        <phone>+33 4 89874100</phone>
        <email>elisa.boschi@hitachi-eu.com</email>
      </address>
    </author>
    <date month="December" year="2007"/>

    <area>Operations</area>
    <workgroup>IPFIX Working Group</workgroup>

  <!-- [rfced] Please insert any keywords (beyond those that appear in
    the title) for use on http://www.rfc-editor.org/rfcsearch.html. -->

    <abstract>
      <t>This document describes an efficient method for exporting
      bidirectional flow (Biflow) information using the IP Flow Information
      Export (IPFIX) protocol, representing each Biflow using a single Flow
      Record.</t>
    </abstract>
  </front>

 <!-- [rfced] Please note the discrepency between flow and Flow.  The 
  authors of draft-ietf-ipfix-info-15 used both: Flow when
  referring to the definition given, lowercase when used as a unit,
  and lowercased  when used in the IPv6 flow label.  Please consider
  whether your use of flow/Flow needs to be updated.  Ideally, they
  would be used in the same manner. -->

  <middle>
    
    <section title="Introduction">

      <t>Many flow analysis tasks benefit from association of the upstream and
      downstream flows of a bidirectional communication, e.g., separating
      answered and unanswered TCP requests, calculating round trip times, etc.
      Metering processes that are not part of an asymmetric routing
      infrastructure, especially those deployed at a single point through
      which bidirectional traffic flows, are well positioned to observe
      bidirectional flows (Biflows). In such topologies, the total resource
      requirements for Biflow assembly are often lower if the Biflows are
      assembled at the measurement interface as opposed to the Collector. The
      IPFIX Protocol requires only information model extensions to be complete
      as a solution for exporting Biflow data.</t>

<!-- [rfced] Please note the change from collector to Collector in the 
  Paragraph above to be consistent with the use in companion docs. -->

      <t>To that end, we propose a Biflow export method using a single Flow
      Record per Biflow in this document. We explore the semantics of
      bidirectional flow data in Section 4, "Biflow Semantics"; examine the
      various possibilities for determining the direction of Biflows
      in 
      Section 5, "Direction Assignment"; then define the Biflow export method
      in Section 6, "Record Representation".</t>

      <t>This export method requires additional Information Elements to
      represent data values for the reverse direction of each Biflow, and a
      single additional Information Element to represent direction assignment
      information, as described in Sections 6.1 through 6.3. The selection of
      this method was motivated by an exploration of other possible methods of
      Biflow export using IPFIX; however, these methods have important
      drawbacks, as discussed in Section 3, "Rationale and History".</t>

      <section title="IPFIX Documents Overview">

        <t><xref target="RFC5101">"Specification of the IPFIX
        Protocol for the Exchange of IP Traffic Flow Information"</xref>
        (informally, the IPFIX Protocol document) and its associated documents
        define the IPFIX Protocol, which provides network engineers and
        administrators with access to IP traffic flow information.</t>

        <t><xref target="IPFIX-ARCH">"Architecture for IP
        Flow Information Export"</xref> (the IPFIX Architecture document)
        defines the architecture for the export of measured IP flow
        information out of an IPFIX Exporting Process to an IPFIX Collecting
        Process, and the basic terminology used to describe the elements of
        this architecture, per the requirements defined in <xref
        target="RFC3917">"Requirements for IP Flow Information Export"</xref>.
        The IPFIX Protocol
        document <xref target="RFC5101" /> then covers the details of the method for transporting IPFIX data records and templates via a congestion-aware
        transport protocol from an IPFIX Exporting Process to an IPFIX
        Collecting Process.</t>

 <!-- [rfced] Note IPFIX data records above, but IPFIX Data Records in
 the Biflow Semantics section.  Should these be made uniform? -->
 
       <t><xref target="RFC5102">"Information Model for IP Flow
        Information Export"</xref> (informally, the IPFIX Information Model
        document) describes the Information Elements used by IPFIX, including
        details on Information Element naming, numbering, and data type
        encoding. Finally, <xref target="IPFIX-AS">"IPFIX
        Applicability"</xref> describes the various applications of the IPFIX
        protocol and their use of information exported via IPFIX, and relates
        the IPFIX architecture to other measurement architectures and
        frameworks.</t>

        <t>This document references the Protocol and Architecture documents
        for terminology, uses the IPFIX Protocol to define a bidirectional
        flow export method, and proposes additions to the information model
        defined in the IPFIX Information Model document.</t>

      </section>
    
    </section>
    
    <section title="Terminology">

      <t>Capitalized terms used in this document that are defined in the
      Terminology section of the <xref target="RFC5101">IPFIX
      Protocol document</xref> are to be interpreted as defined there. The
      following additional terms are defined in terms of the IPFIX Protocol document
      terminology.</t>

      <list style="hanging">

        <t hangText="Directional Key Field:">A Directional Key Field is a
        single field in a Flow Key as defined in the <xref
        target="RFC5101">IPFIX Protocol document</xref> that
        is specifically associated with a single endpoint of the Flow.
        sourceIPv4Address and destinationTransportPort are example common
        directional key fields.</t>

<!-- [rfced] Please note that the authors of draft-ietf-ipfix-info-15 
  chose to use lowercase the word field.  Should that decision carry over into
  this document?  Also, please note that the second use of the
  fields' names are all lowercase (i.e., A Directional Key Field vs. example common dirctional key
  fields) throughout this section. -->

        <t hangText="Non-directional Key Field:"> A Non-directional Key Field
        is a single field within a Flow Key as defined in the <xref
        target="RFC5101">IPFIX Protocol document</xref> that
        is not specifically associated with either endpoint of the Flow.
        protocolIdentifier is an example common non-directional key
        field.</t>

        <t hangText="Uniflow (Unidirectional Flow):">A Uniflow is a Flow as
        defined in the <xref target="RFC5101">IPFIX Protocol
        document</xref>, restricted such that the Flow is composed only of
        packets sent from a single endpoint to another single endpoint.</t>

        <t hangText="Biflow (Bidirectional Flow):">A Biflow is a Flow as
        defined in the <xref target="RFC5101">IPFIX Protocol
        document</xref>, composed of packets sent in both directions between
        two endpoints. A Biflow is composed from two Uniflows such that:

          <list style="numbers">

            <t>the value of each Non-directional Key Field of each Uniflow is
            identical to its counterpart in the other, and </t>

<!-- [rfced] Please note the inconsistency between Non-directional and
 non-directional. -->

            <t>the value of each Directional Key Field of each Uniflow is
            identical to its reverse direction counterpart in the other.</t>

          </list>
<!--[rfced] Please note the inconsistency throughout the document between non-key field and Non-Key Field.  Should these be made uniform? -->
          A Biflow contains two Non-Key Fields for each value it represents
          associated with a single direction or endpoint: one for the forward
          direction and one for the reverse direction, as defined below.</t>

        <t hangText="Biflow Source:">The source of a Biflow is the endpoint
        identified by the source Directional Key Fields in the Biflow.</t>

<!-- [rfced] Please address the discrepency between source/Source/"source" 
      throughout the document.-->

        <t hangText="Biflow Destination:">The destination of a Biflow is the
        endpoint identified by the destination Directional Key Fields in the
        Biflow.</t>

        <t hangText="Forward direction (of a Biflow):">The direction of a
        Biflow composed of packets sent by the Biflow Source. Values
        associated with the forward direction of a Biflow are represented
        using normal Information Elements. In other words, a Uniflow may be
        defined as a Biflow having only a forward direction.</t>

        <t hangText="Reverse direction (of a Biflow):">The direction of a
        Biflow composed of packets sent by the Biflow Destination. Values
        associated with the reverse direction of a Biflow are represented
        using reverse Information Elements, as defined below.</t>

<!-- [rfced] Please note the discrepency between Reverse Information
      Element, reverse Information Element, and "reverse" Information
      Element throughout the document.  Please confirm if these
      differences are intentional, or if they should be made
      uniform. Please note the same for forward and other names of
      Information. -->


        <t hangText="Reverse Information Element:">An Information Element
        defined as corresponding to a normal Information Element, but
        associated with the reverse direction of a Biflow.</t>

      </list>

      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>

    </section>
    
    <section title="Rationale and History">

      <t>In selecting the Single Record Biflow export method described in this
      document as the recommendation for bidirectional flow export using
      IPFIX, we considered several other possible methods.</t>

      <t>The first and most obvious would be simply to export Biflows as two
      Uniflows adjacent in the record stream; a Collecting Process could then
      reassemble them with minimal state requirements. However, this has the
      drawbacks that it is merely an informal arrangement the Collecting
      Process cannot rely upon, and that it is not bandwidth-efficient,
      duplicating the export of Flow Key data in each Uniflow record.</t>

      <t>We then considered the method outlined in <xref
      target="IPFIX-REDUCING">Reducing Redundancy in IPFIX
      and Packet Sampling (PSAMP) Reports</xref> for reducing this bandwidth inefficiency. This
      would also formally link the two Uniflows into a single construct, by
      exporting the Flow Key as Common Properties then exporting each
      direction's information as Specific Properties. However, it would do so
      at the expense of additional overhead to transmit the
      commonPropertiesId, and additional state management requirements at both
      the Collecting and Exporting Process.</t>

      <t>A proposal was made on the IPFIX mailing list to use the Multiple
      Information Element feature of the protocol to export forward and
      reverse counters using identical Information Element in the same Flow
      Record. 
<!-- [rfced] In the sentence above, should "identical Information
Element" be plural or singluar?  That is, should it be "an identical
Information Element", or "identical Information Elements"? -->
In this approach, the first instance of a counter would
      represent the forward direction, and the second instance of the same
      counter would represent the reverse. This had the disadvantage of
      conflicting with the presently defined semantics for these counters,
      and, as such, was abandoned.</t>

    </section>

    <section title="Biflow Semantics">

      <t>As stated in the Terminology section above, a Biflow is simply a Flow
      representing packets flowing in both directions between two endpoints on
      a network. There are compelling reasons to treat Biflows as single
      entities (as opposed to merely ad-hoc combinations of Uniflows) within
      IPFIX. First, as most application-layer network protocols are inherently
      bidirectional, a Biflow-based data model more accurately represents the
      behavior of the network, and enables easier application of flow data to
      answering interesting questions about network behavior. Second,
      exporting Biflow data can result in improved export efficiency by
      eliminating the duplication of Flow Key data in an IPFIX message stream,
      and improve collection efficiency by removing the burden of Biflow
      matching from the Collecting Process where possible.</t>

      <t>Biflows are somewhat more semantically complicated than Uniflows.
      First, when handling Uniflows, the semantics of "source" and
      "destination" Information Elements are clearly defined by the semantics
      of the underlying packet header data: the source Information Elements
      represent the source header fields, and the destination Information
      Elements represent the destination header fields. When representing
      Biflows with single IPFIX Data Records, the definitions of source and
      destination must be chosen more carefully.</t>

      <t>As in the Terminology section above, we define the Source of a Biflow
      to be that identified by the source Directional Key Field(s), and the
      Destination of the Biflow to be that identified by the destination
      Directional Key Field(s). Note that, for IANA-registered Information
      Elements, or those defined by the <xref
      target="RFC5102">IPFIX Information Model</xref>, Directional
      Key Fields associated with the Biflow Source are represented by
      Information Elements whose names begin with "source", and Directional
      Key Fields associated with the Biflow Destination are represented by
      Information Elements whose names begin with "destination"; it is
      recommended that vendor-specific Information Elements follow these
      conventions, as well.</t>

      <t>Methods for assignment of Source and Destination by the Metering and
      Exporting Processes are described in the following section.</t>

      <t>As the Source and Destination of a Biflow are defined in terms of its
      Directional Keys, Biflow values are also split info "forward" and
      "reverse" directions. As in the Terminology section above, the Forward
      direction of a Biflow is composed of packets sent by the Biflow Source,
      and the Reverse direction of a Biflow is composed of packets sent by the
      Destination. In other words, the two directions of a Biflow may be
      roughly thought of as the two Uniflows that were matched to compose the
      Biflow. A Biflow record, then, contains each Flow Key record once, and
      both forward and reverse direction Information Elements for each non-key
      field. See Figure 1 for an illustration of the composition of Biflows
      from Uniflows.</t>

<!-- [rfced] Please note "Biflow record" in paragraph above, but "Biflow
 Record" in the  paragraph below the table.  Should these be made
  uniform throughout the document? Also, we see "Uniflow record" in the
  Rationale and History section. -->

      <figure title="Bidirectional Flow Conceptual Diagram" anchor="biflow-concept">
        <artwork><![CDATA[

             Uniflow                             Uniflow
+-------+-------+-----------------+ +-------+-------+-----------------+
| src A | dst B | counters/values | | src B | dst A | counters/values |
+-------+-------+-----------------+ +-------+-------+-----------------+
       |       |          |                                   |
       V       V          V                                   V
      +-------+-------+---------------------+---------------------+
      | src A | dst B | fwd counters/values | rev counters/values |
      +-------+-------+---------------------+---------------------+
                                Biflow
            ]]></artwork>
      </figure>

      <t>The Reverse direction values are represented by Reverse Information
      Elements. The representation of these Reverse Information Elements
      within Templates is detailed in Section 5. A Flow Record may be
      considered to be a Biflow Record by the Collecting Process if it
      contains at least one Reverse Information Element AND at least one
      Directional Key Field. Flow Records containing Reverse Information
      Elements but no Directional Key Fields are illegal, MUST NOT be sent by
      the Exporting Process, and SHOULD be dropped by the Collecting Process.
      The Collecting Process SHOULD log the receipt of illegal Biflow Flow
      Records.</t>

<!-- [rfced] Please note the inconsistency between template and
   Template. Please note their usages in [IPFIX-INFO] and
  [IPFIX-PROTOCOL] to check for uniformity. -->

      <t>When exporting Uniflows, Exporting Processes SHOULD use a Template
      containing no Reverse Information Elements. Note that a Template whose
      only Reverse Information Elements are counters MAY be used to export
      Uniflows, as counters with values of 0 are semantically equivalent to no
      reverse direction. However, this approach is not possible for reverse
      Information Elements whose zero values have a distinct meaning (e.g.,
      tcpControlBits).</t>

      <t>Note that a Biflow traversing a <xref
      target="RFC3234">middlebox</xref> may show different Flow properties on
      each side of the middlebox due to changes to the packet header or
      payload performed by the middlebox itself. Therefore, it MUST be clear at
      a Collecting Process whether packets were observed and metered before or
      after modification. The Observation Process SHOULD be located on one
      side of a middlebox, and the Exporting Process SHOULD communicate to the
      Collecting Process both the incoming value of the Flow property changed
      within the middlebox and the changed value on the "other side". The
      <xref target="RFC5102">IPFIX Information Model</xref>
      provides Information Elements with prefix "post" for this purpose. The
      location of the Observation Point(s) with respect to the middlebox can
      be communicated using Options with Observation Point as Scope and
      elements such as lineCardID or samplerID.</t>

      <t>For further information on the effect of middleboxes within the IPFIX
      architecture, refer to Section 7 of the <xref
      target="IPFIX-IMPLEMENTATION">IPFIX Implementation
      Guidelines</xref>.</t>

      <t>By the definition of Observation Domain in Section 2 of the <xref
      target="RFC5101">IPFIX Protocol document</xref>, Biflows
      may be composed only of packets observed within the same Observation
      Domain. This implies that Metering Processes that build Biflows out of
      Uniflows must ensure that the two Uniflows were observed within the same
      Observation Domain.</t>

    </section>

    <section title="Direction Assignment">

      <t>Due to the variety of flow measurement applications and restrictions
      on Metering Process deployment, one single method of assigning the
      directions of a Biflow will not apply in all cases. This section
      describes three methods of direction assignment, and recommends them
      based upon Metering Process position and measurement application
      requirements. In each of the figures in this section, the "MP" box
      represents the Metering Process.</t>

      <t>As the method selection is dependent on Metering Process position, it
      is sufficient to configure the direction assignment method at the
      Collecting and/or the Exporting Process out-of-band. For example, a
      Collecting Process might be configured that a specific Exporting Process
      identified by exporterIPv4Address is assigning direction by initiator;
      or both a Collecting Process and an Exporting Process could be
      simultaneously configured with a specific direction assignment
      perimeter. However, for Exporting Processes that use multiple direction
      selection methods, or for Collecting Processes accepting data from
      Exporting Processes using a variety of methods, a biflowDirection
      Information Element is provided for optional representation of direction
      assignment information.</t>

      <section title="Direction by Initiator">

        <t>If the measurement application requires the determination of the
        initiator and responder of a given communication, the Metering Process
        SHOULD define the Biflow Source to be the initiator of the Biflow,
        where possible. This can be roughly approximated by a Metering Process
        observing packets in both directions simply assuming that the first packet
        seen in a given Biflow is the packet initiating the Biflow. A Metering
        Process may improve upon this method by using knowledge of the
        transport or application protocols (e.g., TCP flags, DNS
        question/answer counts) to better approximate the flow-initiating
        packet.</t>

        <t>Note that direction assignment by initiator is most easily done by
        a single Metering Process positioned on a local link layer, as in
        Figure 2, or a single Metering Process observing bidirectional packet
        flows at a symmetric perimeter routing point, as in Figure 3.</t>

        <t>Note also that many Metering Processes have an "active" timeout,
        such that any Flow with a duration longer than the active timeout is
        expired and any further packets belonging to that Flow are accounted
        for as part of a new Flow. This mechanism may cause issues with the
        assumption that a first packet seen is from the flow initiator, if the
        "first" packet is a middle packet in a long-duration Flow.</t>

        <figure title="Local Link Metering Process Position" anchor="pos-link">
          <artwork><![CDATA[
+-------+   +-------+
| node  |   | node  |
+---+---+   +---+---+
    |           |       +---------+
<===+=====+=====+======>+         +<===> Internet
          |             | router  |
      +---+---+         +---------+
      |   MP  |
      +---+---+
        ]]></artwork>
        </figure>

        <figure title="Symmetric Routing Point Metering Process Position" anchor="pos-symmetric">
          <artwork><![CDATA[
+-------+   +-------+
| node  |   | node  |
+---+---+   +---+---+
    |           |       +---------+
<===+===========+======>+         +<===> Internet
                        | router  |
                        |    +----+--+
                        +----+  MP   |
                             +-------+
        ]]></artwork>
        </figure>

      </section>

      <section title="Direction by Perimeter">

        <t>If the measurement application is deployed at a network perimeter,
        as illustrated in Figure 4, such that there is a stable set of
        addresses that can be defined as "inside" that perimeter, and there is
        no measurement application requirement to determine the initiator and
        responder of a given communication, then the Metering Process SHOULD
        assign the Biflow Source to be the endpoint outside the perimeter.</t>

        <t>No facility is provided for exporting the address set defining the
        interior of a perimeter; this set may be deduced by the Collecting
        Process observing the set of Biflow source or destination addresses,
        or configured out-of-band.</t>

        <figure title="Perimeter Metering Process Position" anchor="pos-perimeter">
          <artwork><![CDATA[
              +---------+               +---------+
         ====>+ access  +====>     ====>+ access  +====>
Internet      | router  |   Local Net   | router  |      Internet
(link A) <====+    A    +<====     <====+    B    +<==== (link B)
              +----+----+               +---------+
                   |
               +---+---+
               |  MP   |
               +-------+
        ]]></artwork>
        </figure>

      </section>

      <section title="Arbitrary Direction">

        <t>If the measurement application is deployed in a network core, such
        that there is no stable set of addresses defining a perimeter (e.g.,
        due to BGP updates), as in Figure 5, and no requirement or ability to
        determine the initiator or responder of a given communication, then
        the Metering Process MAY assign the Biflow Source and Biflow
        Destination endpoints arbitrarily.</t>

        <t>In this case, the Metering Process SHOULD be consistent in its
        choice of direction. Once assigned, direction SHOULD be maintained for
        the lifetime of the Biflow, even in the case of active timeout of a
        long-lived Biflow.</t>

        <figure title="Transit/Core Metering Process Position" anchor="pos-transit">
          <artwork><![CDATA[
         |
         V
    +----+----+          +---------+
<===+ core    |          | core    +===>
    | router  +<========>+ router  |
===>+         |          |         +<===
    +----+----+          +----+----+
         |                    |
     +---+---+                V
     |  MP   |
     +-------+
        ]]></artwork>
        </figure>

      </section>

    </section>

    <section title="Record Representation">

      <t>As noted above, Biflows are exported using a single Flow Record, each
      of which contains the Flow Key fields once, and both forward and reverse
      direction Information Elements for each non-key field. The IPFIX
      Information Model is extended to provide a "reverse" Information Element
      counterpart to each presently defined "forward" Information Element, as
      required by any Information Element that may be a non-key field in a
      Biflow.</t>

      <section title="Reverse Information Element Private Enterprise Number">

        <t>Reverse Information Elements are specified as a separate
        "dimension" in the Information Element space, by having IANA assign a
        single Private Enterprise Number (PEN) to this document, and to define
        that PEN to signify "IPFIX Reverse Information Element" (the Reverse
        PEN). This reverse PEN would serve as a "reverse direction flag" in
        the template; each Information Element number within this PEN space
        would be assigned to the reverse counterpart of the corresponding
        IANA-assigned public Information Element number. In other words, to
        generate a reverse Information Element in a template corresponding to
        a given forward Information Element, simply set the enterprise bit and
        define the Information Element within the Reverse PEN space, as in
        Figure 6 below.</t>

<!-- [rfced] Please address the discrepency between Reverse 
   PEN/reverse PEN.  Should these be made uniform? -->

<!-- [rfced] Note that the lowercased forms of information element
  throughout the document have been capitalized
  for consistency.  Please let us know if this is incorrect.-->

        <figure title="Example Mapping between Forward and Reverse IEs" anchor="pen-example-ie">
          <artwork><![CDATA[
 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |0| flowStartSeconds        150 |       Field Length =  4       |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  

               forward           |
                                 |
               reverse           V

 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |1| (rev) flowStartSeconds  150 |       Field Length =  4       |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |   reverse PEN                                      29305      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
        ]]></artwork>
        </figure>

        <t>As the Reverse Information Element dimension is treated explicitly
        as such, new Information Elements can be added freely to the
        IANA-managed space without concern for whether a reverse element
        should also be added. Aside from the initial allocation of an
        enterprise number for this purpose, there is no additional maintenance
        overhead for supporting Reverse Information Elements in the
        IPFIX Information Model.</t>

<!-- [rfced] Please note that this document uses enterprise number,
  but draft-ietf-ipfix-protocol uses Enterprise Number.  Should this
  be changed to the capitalized version for consistency?  -->

        <t>Note that certain Information Elements in the <xref
        target="RFC5102">IPFIX Information Model</xref> are not
        reversible; that is, they are semantically meaningless as reverse
        Information Elements. An Exporting Process MUST NOT export a Template
        containing the reverse counterpart of a non-reversible Information
        Element. A Collecting Process receiving the reverse counterpart of a
        non-reversible Information Element MAY discard that Information
        Element from the Flow Record. Non-reversible Information Elements
        represent properties of the Biflow record as a whole, or are intended
        for internal the use of the IPFIX Protocol itself. Therefore, by
        definition, they cannot be associated with a single direction or
        endpoint of the Flow.</t>

        <t>The following specific Information Elements are not reversible:</t>

        <list style="numbers">

          <t>Identifiers defined in Section 5.1
          of <xref target="RFC5102" />
          that cannot be associated with a single direction of Uniflow collection:
          flowId (5.1.7), templateId (5.1.8), observationDomainId (5.1.9), and
          commonPropertiesId (5.1.11).</t>

          <t>Process configuration elements defined in Section 5.2 of
          <xref target="RFC5102" />.</t>

          <t>Process statistics elements defined in Section 5.3 of
          <xref target="RFC5102" />.</t>

          <t>paddingOctets defined in Section 5.12.1
          of <xref target="RFC5102" />.</t>

<!-- [rfced] Please note the added references to the list above for --
  -- clarity.  Please let us know if these are incorrect.-->

          <t>biflowDirection (defined in Section 6.3 of this document).</t>

        </list>

        <t>Any future addition to the Information Element Registry by IANA
        that meets the criteria defined above SHOULD also be considered to be
        non-reversible by the Collecting Process.</t>

        <t>Note that Information Elements commonly used as Flow Keys (e.g.,
        header fields defined in Sections 5.4 and 5.5 of the Information
        Model) are reversible, as they may be used as value fields in certain
        contexts, as when associating ICMP error messages with the flows that
        caused them.</t>

      </section>

      <section title="Enterprise-Specific Reverse Information Elements">

        <t>Note that the Reverse PEN defined above is only available for
        allocating reverse counterparts of IANA-registered IPFIX Information
        Elements. No facility is provided for allocating reverse counterparts
        of enterprise-specific Information Elements. </t>

        <t>The allocation of enterprise-specific Information Elements for
        IPFIX is left to the discretion of the enterprise allocating them.
        Note that, as enterprise-specific Information Elements are designed
        for the internal use of private enterprises, the lack of any guidance
        or standard on Information Element allocation policies poses no
        interoperability issues. However, if a private enterprise's own
        Information Element registry anticipates the allocation of reversible
        Information Elements, and the use of this specification for the export
        of Biflow data, that registry MAY reserve one of the fifteen available
        bits in the Information Element ID to signify the reverse direction.
        For example, if the most significant bit were selected, this would
        reserve Information Element IDs 0x4000 to 0x7FFF for the reverse
        direction of Information Element IDs 0x0000 to 0x3FFF.</t>

      </section>

      <section title="biflowDirection Information Element">

        <list style="hanging">

          <t hangText="Description: "> A description of the direction
          assignment method used to assign source and destination to this
          Biflow. This Information Element MAY be present in a Flow Data
          Record, or applied to all flows exported from an Exporting Process
          or Observation Domain using IPFIX Options. If this Information
          Element is not present in a Flow Record or associated with a Biflow
          via scope, it is assumed that the configuration of the direction
          assignment method is done out-of-band. Note that when using IPFIX
          Options to apply this Information Element to all flows within an
          Observation Domain or from an Exporting Process, the Option SHOULD
          be sent reliably. If reliable transport is not available (i.e., when
          using UDP), this Information Element SHOULD appear in each Flow
          Record. This field may take the following values:

	        <texttable>
	          <ttcol align="left">Value</ttcol>
	          <ttcol align="left">Name</ttcol>
	          <ttcol align="left">Description</ttcol>

	          <c>0x00</c><c>arbitrary</c><c>Direction was assigned
            arbitrarily.</c>

	          <c>0x01</c><c>initiator</c><c>The Biflow Source is the flow
            initiator, as determined by the Metering Process' best effort to
            detect the initiator.</c>

	          <c>0x02</c><c>reverseInitiator</c><c>The Biflow Destination is the
            flow initiator, as determined by the Metering Process' best effort
            to detect the initiator. This value is provided for the
            convenience of Exporting Processes to revise an initiator estimate
            without re-encoding the Biflow Record.</c>

            <c>0x03</c><c>perimeter</c><c>The Biflow Source is the endpoint
            outside of a defined perimeter. The perimeter's definition is
            implicit in the set of Biflow Source and Biflow Destination
            addresses exported in the Biflow Records.</c>

          </texttable></t>
          <t hangText="Abstract Data Type: ">octet</t>
          <t hangText="Data Type Semantics: ">identifier</t>
          <t hangText="ElementId: ">239</t>
          <t hangText="Status: ">current</t>

        </list>

      </section>

    </section>

    <section title="IANA Considerations">

      <t>This document specifies the creation of a new dimension in the
      Information Element space defined by the <xref
      target="RFC5102">IPFIX Information Model</xref>. This new
      dimension is defined by the allocation of a new Private Enterprise
      Number (PEN). The Internet Assigned Numbers Authority (IANA) has
      assigned private enterprise number 29305 to this document as the "IPFIX
      Reverse Information Element Private Enterprise", with this document's
      authors as point of contact.</t>
    
      <t>This document specifies the creation of a new IPFIX Information
      Element, biflowDirection, as defined in Section 6.3. IANA has assigned
      Information Element number 239 in the IPFIX Information Element
      registry for the biflowDirection Information Element. The values defined
      for this Information Element are static, and as such do not need to be
      maintained by IANA in a sub-registry.</t>

    </section>

    <section title="Security Considerations">

      <t>The same security considerations as for the <xref
      target="RFC5101">IPFIX Protocol</xref> apply.</t>

    </section>

    <section title="Acknowledgments">

      <t>We would like to thank Lutz Mark, Juergen Quittek, Andrew Johnson,
      Paul Aitken, Benoit Claise, and Carsten Schmoll for their contributions
      and comments. Special thanks to Michelle Cotton for her assistance in
      navigating the IANA process for enterprise number assignment, and for
      the IANA pre-review of the document.</t>

    </section>

  </middle>

  <back>

    <references title="Normative References">
<!--
      &draftIpfixProtocol;
      &draftIpfixInfo; -->

<reference anchor='RFC5101'>
<front>
<title>Specification of the IP Flow Information Export (IPFIX)
Protocol for the Exchange of IP Traffic Flow Information</title>

<author initials='B' surname='Claise' fullname='Benoit Claise' role='editor'>
    <organization />
</author>

<date month='December' year='2007' />

</front>

<seriesInfo name='RFC' value='5101' />

</reference>


<reference anchor='RFC5102'>
<front>
<title>Information Model for IP Flow Information Export</title>

<author initials='J' surname='Quittek' fullname='Juergen Quittek'>
    <organization />
</author>

<author initials='S' surname='Bryant' fullname='Stewart Bryant'>
    <organization />
</author>
<author initials='B' surname='Claise' fullname='Benoit Claise'>
    <organization />
</author>
<author initials='P' surname='Aitken' fullname='Paul Aitken'>
    <organization />
</author>
<author initials='J' surname='Meyer' fullname='Jeff Meyer'>
    <organization />
</author>

<date month='December' year='2007' />

<abstract><t>This memo defines an information model for the IP Flow Information eXport (IPFIX) protocol. It is used by the IPFIX protocol for encoding measured traffic information and information related to the traffic Observation Point, the traffic Metering Process and the Exporting Process. Although developed for the IPFIX protocol, the model is defined in an open way that easily allows using it in other protocols, interfaces, and applications.</t></abstract>

</front>

<seriesInfo name='RFC' value='5102' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ipfix-info-15.txt' />
</reference>


    </references>

    <references title="Informative References">
      &rfc2119;
      &rfc3234;
      &rfc3917;

<!--  &draftIpfixArch;
      &draftIpfixAs;
      &draftIpfixImpl;
      &draftIpfixRR; -->

<reference anchor='IPFIX-ARCH'>
<front>
<title>Architecture for IP Flow Information Export</title>

<author initials='G' surname='Sadasivan' fullname='Ganesh Sadasivan'>
    <organization />
</author>

<author initials='N' surname='Brownlee' >
    <organization />
</author>

<author initials='B' surname='Claise' >
    <organization />
</author>

<author initials='J' surname='Quittek' >
    <organization />
</author>

<date month='September' day='10' year='2006' />

<abstract><t>This memo defines the IP Flow Information eXport (IPFIX) architecture for the selective monitoring of IP flows, and for the export of measured IP flow information from an IPFIX device to a collector.</t></abstract>

</front>

<seriesInfo name='Work in' value='Progress' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ipfix-architecture-12.txt' />
</reference>


<reference anchor='IPFIX-AS'>
<front>
<title>IPFIX Applicability</title>

<author initials='T' surname='Zseby' fullname='Tanja Zseby'>
    <organization />
</author>

<author initials='E' surname='Boschi' fullname='Elisa Boschi '>
    <organization />
</author>

<author initials='N' surname='Brownlee' fullname='Nevil Brownlee '>
     <organization />
</author>

<author initials='B' surname='Claise' fullname='Benoit Claise '>
      <organization />
</author>

<date month='July' day='3' year='2007' />

<abstract><t>In this document we describe the applicability of the IP Flow Information Export (IPFIX) protocol for a variety of applications. We show how applications can use IPFIX, describe the relevant information elements (IEs) for those applications and present opportunities and limitations of the protocol. We furthermore describe relations of the IPFIX framework to other architectures and frameworks.</t></abstract>

</front>

<seriesInfo name='Work in' value='Progress' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ipfix-as-12.txt' />
</reference>


<reference anchor='IPFIX-IMPLEMENTATION'>
<front>
<title>IPFIX Implementation Guidelines</title>

<author initials='E' surname='Boschi' fullname='Elisa Boschi'>
    <organization />
</author>

<author initials='L' surname='Mark' fullname='Lutz Mark ' >
     <organization />
</author>

<author initials='j' surname='Quittek' fullname='Juergen Quittek'>
     <organization />
</author>

<author initials='M' surname='Stiemerling' fullname='Martin Stiemerling' >
      <organization />
</author>

<author initials='P' surname='Aitken' fullname='Paul Aitken' >
       <organization />
</author>

<date month='September' day='24' year='2007' />

<abstract><t>The IP Flow Information eXport (IPFIX) protocol defines how IP Flow information can be exported from routers, measurement probes or other devices. This document provides guidelines for the implementation and use of the IPFIX protocol. Several sets of guidelines address template management, transport-specific issues, implementation of exporting and collecting processes and IPFIX implementation on middleboxes (such as firewalls, network address translators, tunnel endpoints, packet classifiers, etc.).</t></abstract>

</front>

<seriesInfo name='Work in' value='Progress' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ipfix-implementation-guidelines-07.txt' />
</reference>

<reference anchor='IPFIX-REDUCING'>
<front>
<title>Reducing Redundancy in IP Flow Information Export (IPFIX) and Packet  Sampling (PSAMP) Reports</title>

<author initials='E' surname='Boschi' fullname='Elisa Boschi'>
    <organization />
</author>

<author initials='L' surname='Mark' fullname='Lutz Mark'>
    <organization />
</author>

<author initials='B' surname='Claise' fullname='Benoit Claise '>
    <organization />
</author>

<date month='May' day='21' year='2007' />

<abstract><t>This document describes a bandwidth saving method for exporting flow or packet information using the IP Flow Information Export (IPFIX) protocol. As the Packet Sampling (PSAMP) protocol is based on IPFIX, these considerations are valid for PSAMP exports as well. This method works by separating information common to several flow records from information specific to an individual flow record. Common flow information is exported only once in a data record defined by an option template, while the rest of the specific flow information is associated with the common information via a unique identifier.</t></abstract>

</front>

<seriesInfo name='Work in' value='Progress' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ipfix-reducing-redundancy-04.txt' />
</reference>


    </references>

    <section title="Examples">

      <t>The following example describes a Biflow record as specified in
      Section 6, above. The "IPFIX Reverse Information Element" PEN is
      assigned for the purpose of differentiating forward from reverse
      information elements. </t>

      <t>The information exported in this case is:

	      <list style="symbols">

	        <t>The start time of the flow: flowStartSeconds in the <xref
          target="RFC5102">IPFIX Information Model</xref>, with a
          length of 4 octets.</t>

	        <t>The reverse start time of the flow: flowStartSeconds in the <xref
          target="RFC5102">IPFIX Information Model</xref>, with a
          length of 4 octets, and the enterprise bit set to 1. The following
          PEN is the Reverse PEN.</t>

	        <t>The IPv4 source IP address: sourceIPv4Address in the <xref
          target="RFC5102">IPFIX Information Model</xref>, with a
          length of 4 octets.</t>

          <t>The IPv4 destination IP address:destinationIPv4Address in the
          <xref target="RFC5102">IPFIX Information Model</xref>,
          with a length of 4 octets.</t>

	        <t>The source port: sourceTransportPort in
          the <xref target="RFC5102">IPFIX Information
          Model</xref>, with a length of 2 octets.</t>

          <t>The destination port: destinationTransportPort in
          the <xref target="RFC5102">IPFIX Information
          Model</xref>, with a length of 2 octets.</t>

          <t>The protocol identifier: protocolIdentifier in the <xref
          target="RFC5102">IPFIX Information Model</xref>, with a
          length of 1 octet.</t>

          <t>The number of octets of the Flow: octetTotalCount in the <xref
          target="RFC5102">IPFIX Information Model</xref>, with a
          length of 4 octets.</t>

          <t>The reverse number of octets of the Flow: octetTotalCount in the
          <xref target="RFC5102">IPFIX Information Model</xref>,
          with a length of 4 octets, and the enterprise bit set to 1. The
          following PEN is the Reverse PEN.</t>

          <t>The number of packets of the Flow: packetTotalCount in the <xref
          target="RFC5102">IPFIX Information Model</xref>, with a
          length of 4 octets.</t>

          <t>The reverse number of packets of the Flow: packetTotalCount in
          the <xref target="RFC5102">IPFIX Information
          Model</xref>, with a length of 4 octets, and the enterprise bit set
          to 1. The following PEN is the Reverse PEN.</t>

        </list>

	    and the resulting template would look like the diagram below:</t>
	      
      <figure title="Single Record Biflow Template Set" anchor="sr-example-template">
        <artwork><![CDATA[
                      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 =  64         |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |      Template ID >= 256       |        Field Count = 11       |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |0| flowStartSeconds        150 |       Field Length =  4       |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |1| flowStartSeconds        150 |       Field Length =  4       |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |   reverse PEN                                      29305      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
 |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| octetTotalCount          85 |       Field Length =  4       |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |1| octetTotalCount          85 |       Field Length =  4       |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
 |   reverse PEN                                     29305       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
 |0| packetTotalCount         86 |       Field Length =  4       |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |1| packetTotalCount         86 |       Field Length =  4       |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
 |   reverse PEN                                     29305       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
        ]]></artwork>
      </figure>

      <t>The following example data record represents a typical HTTP
      transaction. Its format is defined by the example template, above.</t>

      <figure title="Single Record Biflow Data Set" anchor="sr-example-record">
        <artwork><![CDATA[
                      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 =  41         |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |                     2006-02-01  17:00:00                      |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |                     2006-02-01  17:00:01                      |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |                           192.0.2.2                           |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |                           192.0.2.3                           |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |          32770                |               80              |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |       6       |                 18000                     . . .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 . . .           |                128000                     . . .  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 . . .           |                  65                       . . .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 . . .           |                 110                       . . .  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 . . .           |  
 +-+-+-+-+-+-+-+-+            
        ]]></artwork>
      </figure>

      <t>The following example demonstrates the use of the biflowDirection
      Information Element, as specified in Section 6.2, using the IPFIX
      Options mechanism to specify that perimeter direction selection is in
      effect for a given Observation Domain.</t>

      <t>The information exported in this case is:

	      <list style="symbols">

	        <t>The Observation Domain: observationDomainId in the <xref
          target="RFC5102">IPFIX Information Model</xref>, with a
          length of 4 octets.</t>

	        <t>The direction assignment method: biflowDirection as
          defined in Section 6.2, above, with a length of 1 octet.</t>

        </list>

      and the resulting template would look like the diagram below:</t>
      
      <figure title="Biflow Direction Options Template Set" anchor="bd-example-template">
        <artwork><![CDATA[
                      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 =  18         |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |      Template ID >= 256       |        Field Count = 2        |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |       Scope Count = 1         |0| observationDomainId     149 |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |       Field Length = 4        |0| biflowDirection         239 |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |       Field Length = 1        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
        ]]></artwork>
      </figure>

      <t>The following example data record would specify that perimeter
      direction selection is in effect for the Observation Domain with ID 33.
      Its format is defined by the example template, above. Note that this
      example data set would be sent reliably, as specified in the description
      of the biflowDirection Information Element.</t>

      <figure title="Biflow Direction Options Data Set" anchor="bd-example-record">
        <artwork><![CDATA[
                      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 =  9          |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |                              33                               |  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
 |       3       |  
 +-+-+-+-+-+-+-+-+
        ]]></artwork>
      </figure>

    </section>

    <section title="XML Specification of biflowDirection Information Element">

      <t>This appendix contains a machine-readable description of the
      biflowDirection information element defined in this document, coded in
      XML. Note that this appendix is of informational nature, while the text
      in Section 6.3 is normative.</t>

      <t>The format in which this specification is given is described by the
      XML Schema in Appendix B of the <xref target="RFC5102">IPFIX
      Information Model</xref>.</t>

      <figure>
        <artwork><![CDATA[
   <?xml version="1.0" encoding="UTF-8"?>

   <fieldDefinitions xmlns="urn:ietf:params:xml:ns:ipfix-info"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="urn:ietf:params:xml:ns:ipfix-info
                ipfix-info.xsd">

     <field name="biflowDirection" dataType="unsigned8"
            dataTypeSemantics="identifier" group="misc"
            elementId="239" applicability="all" status="current">
       <description>
         <paragraph>
          A description of the direction assignment method used to
          assign source and destination to this Biflow. This
          Information Element MAY be present in a Flow Data Record, or
          applied to all flows exported from an Exporting Process or
          Observation Domain using IPFIX Options.  If this Information
          Element is not present in a Flow Record or associated with a
          Biflow via scope, it is assumed that the configuration of
          the direction assignment method is done out-of-band. Note
          that when using IPFIX Options to apply this Information
          Element to all flows within an Observation Domain or from an
          Exporting Process, the Option SHOULD be sent reliably. If
          reliable transport is not available (i.e., when using UDP),
          this Information Element SHOULD appear in each Flow
          Record. This field may take the following values:
	      </paragraph>
	      <artwork>
   +-------+------------------+----------------------------------------+
   | Value | Name             | Description                            |
   +-------+------------------+----------------------------------------+
   | 0x00  | arbitrary        | Direction was assigned arbitrarily.    |
   | 0x01  | initiator        | The Biflow Source is the flow          |
   |       |                  | initiator, as determined by the        |
   |       |                  | Metering Process' best effort to       |
   |       |                  | detect the initiator.                  |
   | 0x02  | reverseInitiator | The Biflow Destination is the flow     |
   |       |                  | initiator, as determined by the        |
   |       |                  | Metering Process' best effort to       |
   |       |                  | detect the initiator.  This value is   |
   |       |                  | provided for the convenience of        |
   |       |                  | Exporting Processes to revise an       |
   |       |                  | initiator estimate without re-encoding |
   |       |                  | the Biflow Record.                     |
   | 0x03  | perimeter        | The Biflow Source is the endpoint      |
   |       |                  | outside of a defined perimeter.  The   |
   |       |                  | perimeter's definition is implicit in  |
   |       |                  | the set of Biflow Source and Biflow    |
   |       |                  | Destination addresses exported in the  |
   |       |                  | Biflow Records.                        |
   +-------+------------------+----------------------------------------+
	      </artwork>
       </description>
     </field>
   </fieldDefinitions>
]]></artwork>
      </figure>

    </section>

  </back>

</rfc>
