<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC7498 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7498.xml">
<!ENTITY I-D.draft-ietf-sfc-nsh SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-sfc-nsh-02.xml">
<!ENTITY RFC7665 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7665.xml">
<!ENTITY I-D.draft-wang-sfc-ns-use-cases SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-wang-sfc-ns-use-cases-01.xml">
<!ENTITY I-D.draft-ietf-sfc-control-plane SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-sfc-control-plane-03.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="info" docName="draft-wang-sfc-receive-only-00"
     ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="SFC Receive-only">Receive-Only Service Function and
    External Service in SFC</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Eric Wang" initials="E." surname="Wang">
      <organization>Cisco Systems Inc.</organization>

      <address>
        <postal>
          <street>170 W Tasman Dr</street>

          <city>San Jose</city>

          <region>CA</region>

          <code>95134</code>

          <country>U.S.A.</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>ejwang@cisco.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Kent Leung" initials="K." surname="Leung">
      <organization>Cisco Systems Inc.</organization>

      <address>
        <postal>
          <street>170 W Tasman Dr</street>

          <city>San Jose</city>

          <region>CA</region>

          <code>95134</code>

          <country>U.S.A.</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>kleung@cisco.com</email>

        <uri/>
      </address>
    </author>

    <date month="March" year="2016"/>

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>Service Function Chaining</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>template</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
      <t>A category of services such as Intrusion Detection Service and Packet
      Capture operates in "receive-only" mode. They are "packet sinks" which
      consume all packets sent to them. This document describes the proposals
      for such service to be part of the Service Function Chaining
      framework.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>Services in Service Function Chaining (SFC) usually operate in
      "inline" mode, where they process the received packets and return the
      packets to the Service Function Forwarder (SFF). Some services
      especially in the network security domain can buffer, inject or block
      certain packets, as well as proxy entire connections (<xref
      target="I-D.wang-sfc-ns-use-cases"/>). However, in general they still
      forward packets.</t>

      <t><xref target="I-D.wang-sfc-ns-use-cases"/> also describes a special
      set of services that consume all packets sent to them. We refer to such
      behavior as "receive-only". A receive-only service could be a Service
      Function (SF) participating in SFC (<xref target="RFC7665"/>), or it
      could be an External Service (ES) receiving packets from the SFF or
      another regular SF. This document describes proposals for designing SFC
      packet plane and control plane to incorporate receive-only services.</t>

      <section title="Requirements Language">
        <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>

    <section title="Definition Of Terms">
      <t>This document uses the terms as defined in <xref target="RFC7498">RFC
      7498</xref>, <xref target="RFC7665"/> and <xref
      target="I-D.ietf-sfc-nsh"/>.</t>

      <t>In addition the following terms are defined.</t>

      <t><list hangIndent="4" style="hanging">
          <t hangText="Receive-Only (RO):">A service operational mode where
          the service does not forward on packets that it receives. It is
          often known as "packet sink" as well.</t>

          <t hangText="RO SF:">A Receive-Only Service Function participating
          in SFC as defined in <xref target="RFC7665"/>, except that the SF
          operates in Receive-Only mode.</t>

          <t hangText="RO ES:">A Receive-Only External Service not
          participating in SFC. Specifically, an RO ES is not an SF. It is not
          allocated with a Service Index (SI) in the Service Function Path
          (SFP). However, it receives packets from the SFF or an SF.</t>

          <t hangText="Extended SFC Proxy:">An SFC Proxy (<xref
          target="RFC7665"/>) with extended capability to support Receive-Only
          SF. The SFC Proxy replicates and sends packets to the RO SF. The SFC
          encapsulation may be preserved if the RO SF is SFC aware. The Proxy
          forwards the original packets back to the SFF in the same way as a
          regular SF (e.g., with Service Index (SI) decremented in NSH).</t>

          <t hangText="Flow:">A unidirectional traffic stream identified by
          network layer attributes, specifically IP addresses and TCP/UDP
          ports for TCP/UDP traffic.</t>

          <t hangText="Connection:">A bidirectional traffic stream composed of
          two flows sharing the same network layer attributes.</t>
        </list></t>
    </section>

    <section title="Receive-Only Service Function vs. External Service">
      <t>A receive-only service may be a Service Function (SF) or External
      Service (ES) depending on whether the SFC administrator designs the
      service to be part of the SFC or not.</t>

      <t>In the following example, the IDS service is located between "DDoS
      Mitigator" and "Firewall" as part of an integrated security solution to
      protect the server (S). Packets from the client (C) must be examined by
      a chain of services before they reach the server. The three service
      functions, DDoS, IDS and Firewall, compose an SFC. Each SF including the
      IDS SF is allocated with a Service Index (SI) in the SFP. The IDS SF is
      a fundamental part of the service chain with the only exception that it
      does not egress packets. We refer to the IDS service as a Receive-Only
      SF (RO SF).</t>

      <t>There are other attributes for an RO SF. There is a limited number of
      location options for "IDS" to be deployed in an SFC. Once deployed, the
      location of "IDS" does not change usually unless the SFs are added to or
      removed from the SFC.</t>

      <t>Extending the SFC framework to RO SF enables a unified SFC policy
      model for SFC administrators. The administrator only needs to manage one
      set of policy that covers both RO and regular SFs, no matter how they
      handle packets.</t>

      <figure align="center"
              title="Figure 1: Receive-Only Service Function (RO SF) example">
        <artwork align="center"><![CDATA[           .---.       .---.       .-------.
          /     \     /     \     /         \
         (  DDoS )   ( [IDS] )   (  Firewall )
          \     /     \     /     \         /
           `-+-'       `-+-'       `---+---'
            /|\         /|\           /|\
             |           | copy        |
+---+       \|/          |            \|/         +---+ 
|   |     ,--+-----------+-------------+----.     |   | 
| C +----(                SFF                )----+ S | 
|   |     `---------------------------------'     |   | 
+---+                                             +---+ 
          SFC - DDoS : [IDS] : Firewall


[ ] denotes receive-only]]></artwork>
      </figure>

      <t>"Packet Capture" for troubleshooting represents the other type of
      receive-only services that do not participate in SFC.</t>

      <t>The administrator may insert "Packet Capture" at any stage of an SFP.
      Packets may be captured before and/or after one or multiple SFs, which
      means there are many possible invocation points for "Packet Capture" in
      an SFP. The administrator may want to dynamically insert or remove
      "Packet Capture" based on the need for troubleshooting and threat
      analysis. When doing so, it is desired that the construction of the SFP
      is not affected. That is, the Service Path ID (SPID) and SI for each of
      the SFs in the SFP remain unchanged.</t>

      <t>Services with the above attributes receive SFC packets but are not
      listed in an SFC. They do not consume an SI in the SFP. We refer to such
      a service as a Receive-Only External Service (RO ES).</t>

      <t>An RO ES still requires support from SFC elements including SFF and
      SF for receiving packets. Because an RO ES does not send back packets,
      it must receive replication of the packets. Depending on the use cases
      and performance requirements, an SFF or SF may perform the packet
      replication for the RO ES. For example, a Packet Capture for
      troubleshooting purpose may tap on the SFF at one or more locations
      along the SFP (Figure 2).</t>

      <t>This document describes the necessary enhancements to the SFC
      framework for supporting RO ES.</t>

      <figure align="center"
              title="Figure 2: Receive-Only External Service (RO ES) examples">
        <artwork align="center"><![CDATA[                           +------+
                 copy      |      |     copy
                   ...\....| [PC] |.../.......
                  .   /    |      |   \       .
                 .       _.+------+            .
                .        .|                     .
               .        .  copy     +------+     .
              .        .            |      |      .
             .         .            | [FC] |       .
            .          .            |      |       .
           .           .          _.+------+       .
           .           .          .|               .
           .           .         .  copy           .
           .           .        .                  .
           .   .---.   .   .----+--.       .---.   .
           .  /     \  .  /         \     /     \  .
           . (  DDoS ) . (  Firewall )   (  WAF  ) .
           .  \     /  .  \         /     \     /  .
           .   `-+-'   .   `---+---'       `-+-'   .
           .    /|\    .      /|\           /|\    .
           .     |     .       |             |     .
+---+      .    \|/    .      \|/           \|/    .        +---+
|   |     ,+-----+-----+-------+-------------+-----+--.     |   |
| C +----(                      SFF                    )----+ S |
|   |     `-------------------------------------------'     |   |
+---+                                                       +---+
          SFC - DDoS : Firewall : WAF


[ ] denotes receive-only

PC: Packet Capture
FC: File Capture]]></artwork>
      </figure>
    </section>

    <section title="SFC Packet Plane">
      <section title="Receive-Only Service Function">
        <t>A Receive-Only SF behaves the same way as a regular SF except that
        it does not forward packets. As a result, it must receive a copy of
        the packets while the original packets travel through the rest of the
        SFs in the SFP. Because an RO SF occupies an SI in the SFP, the SI of
        the original packet must be decremented after the packet passes the RO
        SF.</t>

        <t>Considering the fact that an RO SF does not forward packets and SFF
        is not designed to decrement SI, an Extended SFC Proxy is leveraged to
        perform the packet replication and SI decrement tasks on behalf of the
        RO SF. As shown in the Figure below, the Extended SFC Proxy makes a
        copy of the packet including the NSH and sends the copy to the RO
        SF-2. It decrements the SI of original packet and forwards that packet
        back to the SFF. This capability is an extension to the current SFC
        Proxy as defined in (<xref target="RFC7665"/>).</t>

        <t>From the SFF's perspective, the combination of the Extended SFC
        Proxy and the RO SF behaves as a regular SF that processes and
        forwards packets with SI decremented. From the RO SF's perspective,
        the Extended SFC Proxy may be a logical component in the specific SFF
        implementation for efficiency.</t>

        <figure align="center"
                title="Figure 3: Packet Replication and SI Decrement by Extended SFC Proxy for RO SF">
          <artwork align="center"><![CDATA[     .---.        .---.         .---.
    /     \      /     \       /     \
   (  SF-1 )    ( [SF-2])     (  SF-3 )
    \     /      \     /       \     /
     `-+-'        `-+-'         `-+-'
       |           /.\           /|\
       |            . (3)         |
       |            . SPID:10     |
       |            . SI:254      |
       |            .             |
       |            . [copy]      |
(1)    |            .             |(5)
SPID:10|      ,-----+-----.       |SPID:10
SI:254 |     (   Extended  )      |SI:253
       |     (  SFC Proxy  )      |
       |     (             )      |
       |     (  Replicator )      |
       |      `---+---+---'       |
       |         /|\  |(4)        |
       |   (2)    |   |SPID:10    |
       |   SPID:10|   |SI:253     |
      \|/  SI:254 |  \|/          |
  ,----+----------+---+-----------+------.
 (     :          :   :           :       )
 (     :  +---+   :   :   +---+   :       )
 (     :  |   |   :   :   |   |   :       )
 (     :..+FWD+...:   :...+FWD+...:       )
 (        |   |           |   |           )
 (        +---+           +---+           )
 (                                  SFF   )
  `--------------------------------------'

   FWD: Forwarding Table Lookup]]></artwork>
        </figure>

        <t>A packet goes through the following steps in the above example:</t>

        <t><list hangIndent="4" style="numbers">
            <t>SFF receives the packet from SF-1 with SPID=10 and SI=254</t>

            <t>SFF looks up in its forwarding table and finds Extended SFC
            Proxy for SF-2 to be the next hop. SFF sends the packet to SF-2's
            Proxy.</t>

            <t>Extended SFC Proxy replicates the packet and sends the copy to
            SF-2 which is an RO SF. The copy has SI=254</t>

            <t>Extended SFC Proxy decrements the SI of the original packet and
            sends the packet back to SFF. The packet now has SI=253</t>

            <t>SFF looks up the next service function, SF-3, in its forwarding
            table based on the SPID and SI from Extended SFC Proxy. SFF sends
            the packet to SF-3.</t>
          </list></t>
      </section>

      <section title="Receive-Only External Service">
        <t>A Receive-Only External Service still receives a copy of the
        packets designated to it even if it is not listed in the SFP.</t>

        <t>For some use cases such as capturing a file content for sandbox
        analysis, packet data replication may be conducted by an SF capable of
        identifying file boundary in the packet stream. The RO ES would be
        associated with the SF and receives packet data from the SF
        directly.</t>

        <t>Alternatively, for use cases such as generic packet capture for
        troubleshooting, the SFF may carry out the packet replication and
        forwarding work. Higher performance may be achieved with hardware
        based SFF.</t>

        <figure align="center"
                title="Figure 4: Packet replication options for RO ES">
          <artwork align="center"><![CDATA[             +-------+                            +-------+
             |       |                            |       |
             | [ES-1]|                           .| [ES-1]|.
             |       |                          . |       | .
             +---+---+                        _.  +---+---+  ._
               .   .                          .|     /.\     |.copy
              .     .                        . copy   .copy    .
            _.       ._                     .         .         .
            .|       |.copy                .          .          .
           . copy      .                  .           .           .
          .             .                .            .            .
        .---.          .---.             .   .---.    .    .---.   .
       /     \        /     \            .  /     \   .   /     \  .
      (  SF-1 )      (  SF-2 )           . (  SF-1 )  .  (  SF-2 ) .
       \     /        \     /            .  \     /   .   \     /  .
        `-+-'          `-+-'             .   `-+-'    .    `-+-'   .
         /|\            /|\              .    /|\     .     /|\    .
          |              |               .     |      .      |     .
         \|/            \|/              .    \|/     .     \|/    .
  ,-------+--------------+-------.     ,-+-----+------+------+-----+-.
 (              SFF               )   (              SFF              )
  `------------------------------'     `-----------------------------'

          (a) Copy by SF                       (b) Copy by SFF]]></artwork>
        </figure>

        <t>When an RO ES receives packets from the SFF, it may be attached to
        the SFF at multiple locations along the SFP. The location may be
        indicated by a (SPID, SI) pair and programmed into the SFF's
        forwarding table.</t>

        <t>The SFF performs packet replication when the packet needs to be
        sent to the RO ES (SFC Proxy cannot be used because RO ES is not an
        SF). The SI of the original packet MUST NOT be affected by the fact
        that a copy is being sent to the RO ES. The following figure
        illustrates an example with SFF performing packet replication.</t>

        <figure align="center"
                title="Figure 5: Packet Replication by SFF for RO ES">
          <artwork align="center"><![CDATA[               +-------+                    
               |       |                    
               | [ES-1]|                    
               |       |                    
               +---+---+                    
                  /.\                       
     .---.         .         .---.          
    /     \        .        /     \         
   (  SF-1 )       .       (  SF-2 )        
    \     /        .        \     /         
     `-+-'         .         `-+-'          
       |           .          /|\           
       |           .(2)        |            
       |(1)        .SPID:10    |(3)         
       |SPID:10    .SI:254     |SPID:10     
       |SI:254     .           |SI:254      
       |           .[copy]     |            
      \|/          .           |            
  ,----+-----------+-----------+------.     
 (     :           :           :       )    
 (     :        +--+--+        :       )    
 (     :        | REP |        :       )    
 (     : +---+  +--+--+        :       )    
 (     : |   |     :           :       )    
 (     :.+FWD+.....:...........:       )    
 (       |   |                         )    
 (       +---+                         )    
 (                               SFF   )    
  `-----------------------------------'     
                                            
   FWD: Forwarding Table Lookup             
   REP: Packet Replication]]></artwork>
        </figure>

        <t>Here is a sample packet flow involving an Receive-Only External
        Service:</t>

        <t><list hangIndent="4" style="numbers">
            <t>SFF receives the packet from SF-1 with SPID=10 and SI=254</t>

            <t>SFF looks up the next service function, SF-2, in its forwarding
            table. The forwarding entry also indicates an RO ES at this
            location. SFF replicates the packet and sends a copy of the packet
            including NSH to ES-1. The original packet is not changed.</t>

            <t>SFF sends the original packet to SF-2.</t>
          </list></t>
      </section>
    </section>

    <section title="SFC Control Plane">
      <section title="Receive-Only Service Function">
        <t>An RO SF such as IDS is specified the same way as a regular SF in
        the SFC Classification Policy. For example, the SFC in Figure 1
        contains the following SFs:</t>

        <t>SFC - DDoS : [IDS] : Firewall</t>

        <t>When the SFC is converted to an SFP, the combination of Extended
        SFC Proxy and the IDS RO SF presents as a regular SF in the SFP as
        depicted in Figure 3. The SFP comprises of the following:</t>

        <t>SFP - DDoS : SFC Proxy for [IDS] : Firewall</t>

        <t>The SFC Control Plane also provisions the Extended SFC Proxy to
        send the replicated packet to the [IDS] SF. The provisioning message
        is outside the scope of this document.</t>
      </section>

      <section title="Receive-Only External Service">
        <t>An RO ES is not provisioned by SFC Classification Policy.
        Implementation may choose to use a dedicated policy for an RO ES such
        as "Packet Capture Policy".</t>

        <t>The policy for RO ES may be configured into a regular SF when the
        SF performs replication for the RO ES.</t>

        <t>In the scenario where SFF performs packet replication, the RO ES
        policy may be evaluated by the SFC Control Plane. The SFC Control
        Plane programs the replication locations into the SFF, as indicated by
        (SPID, SI) pairs. Figure 6 below illustrates a control plane flow for
        setting packet replication in the SFF for an RO ES.</t>

        <figure align="center"
                title="Figure 6: Control flow for SFF replication for RO ES">
          <artwork align="center"><![CDATA[  +-------------------+  
  |                   |  
  | SFC Control Plane |  
  |                   |  
  |           .--.    |  
  |    (1)   :    :   |  
  |          |'--'|   |  
  |    RO-ES |    |   |  
  |    Policy|    |   |  
  |    Eval   '--'    |  
  |                   |                     
  +------+------------+     Control Plane       
.........|................................      
         |                                      
         |        +-------+  Packet Plane       
         |        |       |                     
         |        | RO ES |                     
         |(2)     |       |                     
         |        +---+---+                     
         |C2         /:\                        
         |            :packet                   
         |            :copy                     
         v            :                         
      ,--+---------+--+--+--.                   
     (             | REP |   )                  
     (     SFF     +-----+   )                  
     (                       )                  
      `---------------------' ]]></artwork>
        </figure>

        <t><list hangIndent="4" style="numbers">
            <t>SFC Control Plane evaluates the RO ES policy and determines the
            location(s) for SFF to perform packet replication and send packets
            to RO ES.</t>

            <t>SFC Control Plane uses C2 Control Plane-SFF interface (<xref
            target="I-D.ietf-sfc-control-plane"/>) to update the SFF
            forwarding table with replication entries to RO ES.</t>
          </list></t>
      </section>
    </section>

    <section title="SFC Element Considerations">
      <section title="Receive-Only Service Function">
        <t>An RO SF MUST NOT send received packets back to the Extended SFC
        Proxy.</t>
      </section>

      <section title="Extended SFC Proxy">
        <t>The Extended SFC Proxy for an RO SF carries the following
        additional capabilities compared with a regular SFC Proxy:</t>

        <t><list hangIndent="4" style="numbers">
            <t>Packet replication</t>

            <t>Preserving the SFC encapsulation in the copy of the packet when
            the RO SF is SFC aware</t>
          </list></t>

        <t>The Extended SFC Proxy MUST discard any packets from the RO SF to
        prevent duplicated packets to the SFF. When preserved, the NSH SPID/SI
        in the packet copy sent to RO SF MUST not change. The NSH SI in the
        original packet forwarded back to the SFF MUST be decremented.</t>
      </section>

      <section title="Receive-Only External Service">
        <t>An RO ES should have proper transport with the data source, either
        the SF or SFF. If it receives replicated packets from the SFF, the RO
        ES should comply with the transport as specified for the SFC, similar
        to that between a regular SF and the SFF.</t>

        <t>An RO ES MUST NOT send received packets back to the data
        source.</t>
      </section>

      <section title="Service Function Forwarder">
        <section title="Receive-Only Service Function">
          <t>There is not any special requirement for the SFF to support an RO
          SF. The Extended SFC Proxy performs packet replication and other
          regular SF tasks on behalf of the RO SF.</t>
        </section>

        <section title="Receive-Only External Service">
          <t>The following figure illustrates a sample SFF forwarding table
          when the SFF carries out the packet replication task for RO ES. The
          "copy" column in the forwarding table is used to decide whether a
          copy or the original packet should be sent to the next hop (SF or
          ES). Entries for the RO ES have the "copy" field set.</t>

          <figure align="center"
                  title="Figure 7: Sample SFF forwarding table with RO ES entries">
            <artwork align="left"><![CDATA[       SFF Forwarding Entries               
      +------+------+------+------+
      | SPID | SI   | Next | Copy |
      |      |      | Hop  |      |
      +------+------+------+------+
      |  ... |      |      |      |
      +------+------+------+------+
      |      |      | SF-1 |      |
      |  10  | 254  +------+------+
      |      |      | ES-1 |  x   |
      +------+------+------+------+
      |  10  | 253  | SF-2 |      |
      +------+------+------+------+
      |  20  | 254  | SF-1 |      |
      +------+------+------+------+
      |      |      | SF-3 |      |
      |  20  | 253  +------+------+
      |      |      | ES-2 |  x   |
      +------+------+------+------+
      |  20  | 252  | SF-4 |      |
      +------+------+------+------+
      |  ... |      |      |      |
      +------+------+------+------+]]></artwork>
          </figure>

          <t/>
        </section>

        <section title="SFF Capabilities Considerations">
          <t>In order to support RO ES, implementation of an SFF SHOULD
          support the following capabilities:</t>

          <t><list hangIndent="4" style="numbers">
              <t>Packer replication</t>

              <t>Discarding any packets returned by an RO ES</t>
            </list>Additional capabilities for receive-only support include
          the following:</t>

          <t><list hangIndent="4" style="numbers">
              <t>Replicating a portion of the packet (e.g. headers only)</t>

              <t>Filtering selected packets to be replicated to receive-only
              service</t>

              <t>Sending collective statistics in place of raw packet data</t>

              <t>Producing Netflow/IPFIX and other events</t>
            </list>Those capabilities are beyond the scope of this
          document.</t>
        </section>
      </section>
    </section>

    <section title="Security Considerations">
      <t>Even if an RO SF is required not to send packets back to the Extended
      SFC Proxy, the implementation of Extended SFC Proxy SHOULD handle
      packets from an RO SF gracefully without causing exceptions or
      duplicated packets in the SFP.</t>
    </section>

    <section title="Acknowledgments">
      <t>Authors would like to thank Jeremy Felix and Jay Iyer for their
      contributions, and Jim Guichard, Paul Quinn and Joel Halpern for their
      review and comments.</t>
    </section>

    <section title="IANA Considerations">
      <t>This document includes no request to IANA.</t>
    </section>

    <!-- -->
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.7498.xml"?-->

      &RFC7498;

      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml3/reference.RFC.7665.xml"?-->

      &RFC7665;

      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-sfc-nsh-02.xml"?-->

      &I-D.draft-ietf-sfc-nsh;

      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-sfc-control-plane-03.xml"?-->

      &I-D.draft-ietf-sfc-control-plane;

      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->

      &RFC2119;
    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->

      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-wang-sfc-ns-use-cases-01.xml"?-->

      &I-D.draft-wang-sfc-ns-use-cases;

      <!-- A reference written by by an organization not a person. -->
    </references>

    <!-- Change Log

v00 2006-03-15  EBD   Initial version

v01 2006-04-03  EBD   Moved PI location back to position 1 -
                      v3.1 of XMLmind is better with them at this location.
v02 2007-03-07  AH    removed extraneous nested_list attribute,
                      other minor corrections
v03 2007-03-09  EBD   Added comments on null IANA sections and fixed heading capitalization.
                      Modified comments around figure to reflect non-implementation of
                      figure indent control.  Put in reference using anchor="DOMINATION".
                      Fixed up the date specification comments to reflect current truth.
v04 2007-03-09 AH     Major changes: shortened discussion of PIs,
                      added discussion of rfc include.
v05 2007-03-10 EBD    Added preamble to C program example to tell about ABNF and alternative 
                      images. Removed meta-characters from comments (causes problems).  -->
  </back>
</rfc>
