<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc compact="yes"?>
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc strict="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<rfc category="info" docName="draft-liu-sfc-use-cases-02" ipr="trust200902">
  <front>
    <title abbrev="Service Function Chaining Use Cases">Service Function
    Chaining (SFC) Use Cases</title>

    <author fullname="Will(Shucheng) Liu" initials="W." role="editor"
            surname="Liu">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Bantian, Longgang District</street>

          <city>Shenzhen</city>

          <code>518129</code>

          <country>P.R. China</country>
        </postal>

        <email>liushucheng@huawei.com</email>
      </address>
    </author>

    <author fullname="Hongyu Li" initials="H." surname="Li">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Bantian, Longgang District</street>

          <city>Shenzhen</city>

          <code>518129</code>

          <country>P.R. China</country>
        </postal>

        <email>hongyu.li@huawei.com</email>
      </address>
    </author>

    <author fullname="Oliver Huang" initials="O." surname="Huang">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Bantian, Longgang District</street>

          <city>Shenzhen</city>

          <code>518129</code>

          <country>P.R. China</country>
        </postal>

        <email>oliver.huang@huawei.com</email>
      </address>
    </author>

    <author fullname="Mohamed Boucadair" initials="M." role="editor"
            surname="Boucadair">
      <organization>France Telecom</organization>

      <address>
        <postal>
          <street></street>

          <city>Rennes</city>

          <region></region>

          <code>35000</code>

          <country>France</country>
        </postal>

        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>

    <author fullname="Nicolai Leymann" initials="N." surname="Leymann">
      <organization>Deutsche Telekom AG</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region></region>

          <code></code>

          <country></country>
        </postal>

        <phone></phone>

        <facsimile></facsimile>

        <email>n.leymann@telekom.de</email>

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

    <author fullname="Zhen Cao" initials="Z." surname="Cao">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region></region>

          <code></code>

          <country></country>
        </postal>

        <phone></phone>

        <facsimile></facsimile>

        <email>caozhen@chinamobile.com</email>

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

    <author fullname="Jie Hu" initials="J." surname="Hu">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>No.118 Xizhimennei street, Xicheng District</street>

          <city>Beijing</city>

          <code>100035</code>

          <country>P.R. China</country>
        </postal>

        <email>huj@ctbri.com.cn</email>
      </address>
    </author>

    <author fullname="Chuong Pham" initials="C." surname="Pham">
      <organization>Telstra Corporation</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region></region>

          <code></code>

          <country></country>
        </postal>

        <phone></phone>

        <email>Pham, Chuong D &lt;Chuong.D.Pham@team.telstra.com&gt;</email>
      </address>
    </author>

    <date />

    <abstract>
      <t>The delivery of value-added services relies on the invocation of
      advanced Service Functions in a sequential order. This mechanism is
      called Service Function Chaining (SFC). The set of involved Service
      Functions and their order depends on the service context. </t>

      <t>This document presents a set of use cases of Service Function
      Chaining (SFC).</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>The delivery of Value-Added Services (VAS) relies on the invocation
      of various Service Functions (SFs). Indeed, the traffic is forwarded
      through a set of Network Elements embedding Service Functions, e.g.:
      <list style="letters">
          <t>Direct a portion of the traffic to a Network Element for
          monitoring and charging purposes.</t>

          <t>Before sending traffic to DC servers, steer the traffic to cross
          a load balancer to distribute the traffic load among several links,
          Network Elements, etc.</t>

          <t>Mobile network operators split mobile broadband traffic and steer
          them along an offloading path.</t>

          <t>Use a firewall to filter the traffic for IDS (Intrusion Detection
          System)/IPS (Intrusion Protection System).</t>

          <t>Use a security gateway to encrypt/decrypt the traffic. SSL
          offloading function can also be enabled.</t>

          <t>If the traffic has to traverse different networks supporting
          distinct address families, for example IPv4/IPv6, direct the traffic
          to a CGN (Carrier Grade NAT, <xref target="RFC6888"></xref><xref
          target="RFC6674"></xref>) or NAT64 <xref
          target="RFC6146"></xref>.</t>

          <t>Some internal service platforms rely on implicit service
          identification. Dedicated Service Functions are enabled to enrich
          packets (e.g., HTTP header enrichment) with the identity of the
          subscriber or the UE (User Equipment).</t>

          <t>Operators offer VAS on a per subscription basis. It is desirable
          to steer traffic only from the subscribers, who have subscribed to
          VAS, to the relevant service platforms. </t>
        </list></t>

      <!-- <t>Cloud computing techniques are becoming more mature in recent years and
      triggers an idea that moves above Service Functions from
      purpose-designed hardware box into general computing servers. This idea
      can greatly save operators' cost for buying/maintaining the network
      middle boxes and give a big chance to operators on value added
      services.</t>

      <t>We call the mechanism of steering traffic to service       functions before the traffic is forwarded to their ultimate destination.</t>
-->

      <t>This document describes some use cases of Service Function Chaining
      (SFC).</t>

      <t>For most of the use cases presented in this document, <list
          style="symbols">
          <t>Instantiated SFC are driven by business and engineering
          needs.</t>

          <t>The amount of instantiated SFCs can vary in time, service
          engineering objectives and service engineering choices.</t>

          <t>The amount of instantiated SFCs are policy-driven and are local
          to each administrative entity.</t>

          <t>The technical characterization of each Service Function is not
          frozen in time. A Service Function can be upgraded to support new
          features or disable an existing feature, etc.</t>

          <t>Some stateful SFs (e.g., NAT or firewall) may need to treat both
          outgoing and incoming packets. The design of SF Maps must take into
          account such constraints, otherwise, the service may be disturbed.
          The set of SFs that need to be invoked for both direction is up to
          the responsibility of each administrative entity operating an
          SFC-enabled domain.</t>

          <t>For subscription-based traffic steering, subscriber-awareness
          capability is required. A UE is allocated a dynamic IPv4 address
          and/or IPv6 prefix when attaching to a network. This IPv4 address
          and/or IPv6 prefix can change from time to time. The requirement is
          to be able to correlate an IPv4 address and/or IPv6 prefix to a
          subscriber identity from that will be used to trigger the invocation
          of some Service Functions.</t>

          <t>Some Service Functions may be in the same subnet; while others
          may not. Service Functions are deployed directly on physical
          hardware, as one or more Virtual Machines, or any combination
          thereof.</t>
        </list></t>
    </section>

    <section title="Terminology">
      <!--> <t>The following terms are used in this document:</t>

      <t>Service Classifier: functionality inside the network which identifies and classifies traffic into different service flows based on their service characteristics or some policies, in order to send it through the corresponding Service Function Chaining.</t>
	  <t>Service Processing Function: a logical entity which can provide one
      or more Service Functions for packets/frames such as
      firewall, DPI (Deep Packet Inspection), LI (Lawful Intercept) and etc.
      Usually these processing functions are computation intensive. </t>
   
      <t>Service Function Chaining: one or more Service Functions in a specific
      order which are chained to provide a composite service, and packets/
      frames from one or more service flow should follow.</t>

      <t>Service Path: a path that traffic flows are forwarded through in a
      Service Function Chaining. There might be multiple paths in a Service Function Chaining. </t>
-->

      <t>This document makes use of the terms defined in <xref
      target="I-D.boucadair-sfc-framework"></xref>.</t>

      <t>Service Flow: packets/frames with specific service characteristics
      (e.g., packets matching a specific tuple of fields in the packet header
      and/or data) or determined by some service-inferred policies (such as
      access port and etc.).</t>
    </section>

    <section title="Service Function Chaining Deployment Scenarios">
      <t>Service Function Chains can be deployed in a diversity of scenarios
      such as broadband networks, mobile networks, and DC center. This section
      describes a set of scenarios for Service Function Chaining
      deployment.</t>

      <section title="Use Case of Service Function Chain in Broadband Network">
        <t>In broadband networks, an operator may deploy value-added service
        nodes on POP (Point of Presence) site. These service nodes compose
        different Service Function Chains to deliver added-value services.</t>

        <t><figure anchor="deployment"
            title="An example of Service Function Chain in Broadband Networks">
            <artwork><![CDATA[
               ------                                       ------
            //        \\  ********************           //        \\
 +----+    |            | * +---+            * +---+    |            |
 |CPE |--->+  Metro     +-->+BNG+>+-------+--->|CR +--->+ Internet   |
 +----+    |            | * +---+ |       ^  * +---+    |            |
            \\        //  *       v       |  *           \\        //
               ------     *      ++-------++ *              ------
                          *      | Service | *
                          *      | Chain   | *
                          *      +---------+ *
                          ********************
                   Service Function Chain deployment position

]]></artwork>
          </figure></t>

        <t><xref target="deployment"></xref> illustrates a possible deployment
        position for Service Function Chaining: between BNG and CR (Core
        Router). The Service Function Chain shown in <xref
        target="deployment"></xref> may include several Service Functions to
        perform services such as DPI, NAT44, DS-Lite, NPTv6, Parental control,
        Firewall, load balancer, Cache, etc.</t>
      </section>

      <section title="Use Case of Service Function Chain in Mobile Core Network (a.k.a., Gi-LAN)">
        <t>3GPP defines the Gi interface as the reference point between the
        GGSN (Gateway GPRS Support Node) and an external PDN (Packet Domain
        Network) <xref target="RFC6459"></xref>. This interface reference
        point is called SGi in 4G networks (i.e., between the PDN Gateway and
        an external PDN) <xref target="RFC6459"></xref>. Note, there is no
        standard specification of such reference points (i.e., Gi and SGi) in
        terms of functions to be located in that segment.</t>

        <t>Traffic is directed to/from Internet traversing one or more Service
        Functions. Note, these Service Functions are called "enablers" by some
        operators. One example of enabler function is a HTTP Header Enrichment
        Function. There are also other VAS function such as Parental Control
        or network-based Firewall. Subscribers can opt-in and opt-out to these
        services anytime using a self-served portal or by calling the
        Operator&rsquo;s customer service. </t>

        <t>In light of current deployments, plenty of Service Functions are
        enabled in the Gi Interface (e.g., DPI, billing and charging, TCP
        optimization, web optimization, video optimization, header enrichment,
        etc.). Some of these Service Functions are co-located on the same
        device while others are enabled in standalone boxes. In order to
        fulfill new business needs, especially to offer innovative added-value
        services, the number of enabled Service Functions in the Gi Interface
        is still growing. Some of these functions are not needed to be invoked
        for all services/UEs, e.g.,: <list style="symbols">
            <t>TCP optimization function only for TCP flows</t>

            <t>HTTP header enrichment only of HTTP traffic</t>

            <t>Video optimization function for video flows</t>

            <t>IPv6 firewall + NAT64 function for outgoing IPv6 packets</t>

            <t>IPv4 firewall + NAT64 function for incoming IPv4 packets</t>

            <t>Etc.</t>
          </list></t>

        <t>3GPP has defined Traffic Detection Function (TDF) which implements
        DPI (detection) functionality along with enforcement and charging of
        the corresponding detected applications <xref
        target="TS.23203"></xref>. </t>

        <t>Several (S)Gi Interfaces can be deployed within the same PLMN
        (Public Land Mobile Network). This depends mainly on the number of
        PDNs and other factors. Each of these interfaces may involve a
        differentiated set of Service Functions to be involved.</t>

        <t>The current model that consists of adding new "boxes" to fulfill
        new business guidelines has shown its limit. Concretely, current
        deployments suffer from the following problems:<list style="symbols">
            <t>Complexity (and long time-to-market) to introduce new Service
            Functions because of the constraint on the underlying topology.
            <list style="symbols">
                <t>The quick time-to-market would allow innovative service
                launch strategy such as: subscribers are offered a new service
                feature for a limited period in time for test purposes before
                massive and industrial deployment of the service feature. The
                subscription can be managed through a dedicated portal to
                activate the service feature and trial it. The current
                constraint of the underlying topology makes such an approach
                prohibitively expensive and impractical.</t>
              </list></t>

            <t>Lack of visibility on dependency between Service Functions.</t>

            <t>Lack of automated and flexible means to assess the impact of
            withdrawing a Service Function or a feature offered by a Service
            Function from the traffic forwarding path.</t>

            <t>The connectivity service logic may be stalled because of the
            dependency on the physical topology.</t>

            <t>Sending all traffic through all Service Functions placed in
            series degrade the user experience, i.e., increased latency and
            unavailability risk for those subscribers who do not require all
            or some of the Service Functions to be invoked.</t>

            <t>Sending all traffic through all Service Functions placed in
            series increases the capacity required in each Service Function
            unnecessarily. This would impact the CAPEX (Capital
            Expenditure).</t>

            <t>Lack of deterministic means to:<list style="symbols">
                <t>Improve service provisioning and delivery.</t>

                <t>Ease the manageability of the SGi/Gi Interface.</t>
              </list></t>
          </list></t>

        <t><xref target="Gi-LAN"></xref> illustrates a use case of Gi
        Interface scenario. <xref target="Gi-LAN"></xref> involves many
        Service Functions that are enabled in the Gi Interface: WAP GW, TCP
        Optimizer, Video Optimizer, Content Caching, FW, NAT (44, 64), etc.
        This list is not exhaustive but it is provided for illustration
        purposes.</t>

        <t><figure anchor="Gi-LAN"
            title="An example of Service Function Chain scenario in the Gi Interface">
            <artwork><![CDATA[
            ***********************************                  
            *       1     +------+            *                  
            *  +--------->+WAP GW+----------+ *        ------    
            *  |          +------+          | *     //        \\ 
+----+    +---+| +---------+  +-----+       v *    |            |
|GGSN+--->|DPI|+>+Optimizer+->|Cache+       +----->+  Internet  |
+----+    +---+| +---------+  +--+--+       ^ *    |            |
            *  |                 |2         | *     \\        // 
            *  |                 v          | *        ------    
            *  |     3      +-----+  +----+ | *                  
            *  +----------->+Gi FW+->|NAT +-+ *                  
            *               +-----+  +----+   *                  
            ***********************************                  
]]></artwork>
          </figure></t>

        <t></t>

        <t>For example, the traffic from GGSN/PGW to Internet can be
        categorized and directed into the following Service Function Chains by
        DPI:<!--The nodes here are all transparent to the network.--> <list
            style="symbols">
            <t>Chain 1: WAP GW. DPI performs traffic classification function,
            recognizes WAP protocol traffic, and directs these traffic to the
            WAP GW through Service Function Chain 1.</t>

            <t>Chain 2: Optimizer + cache + Firewall + NAT. DPI recognizes and
            directs the HTTP traffic to the Optimizer, Cache, Firewall and NAT
            in order, to perform HTTP video optimization, HTTP content cache,
            firewall and NAT function, respectively.</t>

            <t>Chain 3: Firewall +NAT. For other traffic to the Internet, DPI
            directs these traffic by Service Function Chain 3, the traffic
            would travel the firewall and NAT in order.</t>

            <!--There are one chain in direction from internet to GGSN.
		All traffic from Internet first reach NAT by IP routing mechanism, then traffic will go through firewall, Cache, Optimizer in sequence according  Service Function Chaining 4.-->
          </list></t>

        <t>It is worth mentioning that customers (via their UEs) access to
        some services through the configuration of various APNs on terminals
        and GGSN (PDN-GW). In current deployments, a GGSN may be configured
        with up to hundreds of different APNs. These various APNs can be
        considered as a classification parameter; as such a GGSN (PDN-GW) can
        forward the traffic relying the APN name information.</t>

        <t>SFC allows for example some specific treatment for a given APN
        traffic, but still current APN-based forwarding is not challenged by
        SFC.</t>

        <t>SFC does not require new features in terminals or in GGSNs besides
        those already proposed (except if a SF Classifier function is
        instantiated in the GGSN).</t>

        <t>Other deployment use cases other than the one illustrated in Figure
        2 can be considered in mobile networks. As shown in Figure 2, the DPI
        Service Function is set up once just after GGSN, but it can also be
        enabled in GGSN (PCEF function) or it can be enabled in various
        devices on the Gi Interface.</t>

        <t>Access to internal services is subject to dedicated policies. For
        example, a dedicated function to update HTTP flow with a UE identifier
        may be needed to avoid explicit identification when accessing some
        service platforms operated by the mobile operator. <!--[A figure will be added to capture this use case] --></t>

        <t><figure anchor="HHE" title="HTTP Header Enrichment">
            <artwork><![CDATA[
                                              ------    
                                           //        \\ 
 +----+    +-----------------------+      |  Internal  |
 |GGSN+--->|HTTP Header Enrichment |----->+  Service   |
 +----+    +-----------------------+      |  Network   |
                                           \\        // 
                                              ------    
]]></artwork>
          </figure></t>

        <t><xref target="HHE"></xref> illustrates a use case of HHE (HTTP
        Header Enrichment). The HHE SF is able to inject the UE identifier to
        Internal Service Network for identification purpose. <!--ask Med about whether the name of "Internal Service Network" is correct--></t>

        <t>Note, some mobile networks rely on regional-based service platforms
        (including interconnection links); while some of Service Functions are
        serviced in a centralized fashion. <!--[A figure will be added to capture this use case] --></t>

        <t><figure anchor="regaional" title="Cross-region services">
            <artwork><![CDATA[
+----+  +---+|  +---------+                                                  
|GGSN+->|DPI|+->+Optimizer+-+                                                
+----+  +---+|  +---------+ |      ------                          ------    
                            |   //        \\                    //        \\ 
+----+  +---+|  +---------+ |  |            |  +-----+  +---+  |            |
|GGSN+->|DPI|+->+Optimizer+-+->+  Regional  |->+Gi FW+->+NAT+->+  Internet  |
+----+  +---+|  +---------+ |  |  Network   |  +-----+  +---+  |            |
                            |   \\        //                    \\        // 
                            |      ------                          ------    
        ...       ...      -+                                                

 ]]></artwork>
          </figure></t>

        <t><xref target="regaional"></xref> illustrates a use case of
        cross-region services, in which the functions that consist of the SFC
        are located at different regions and flows cross a regional network to
        go through the Service Function Chains. <!--ask Med about whether the name of "Regional Network" is correct--></t>
      </section>

      <!--<section title="Use case for DC center">
	  TBD
      </section>
	  -->

      <section title="Use Case for Distributed Service Function Chain">
        <t>Besides the deployment use cases listed above, a Service Function
        Chain is not necessarily implemented in a single location <!--(e.g. data center) -->
        but can also be distributed crossing several portions of the network
        (e.g., data centers) or even using a Service Function that is located
        at an network element close to the customer (e.g. certain security
        functions).</t>

        <t>Multiple SFC-enabled domains can be enabled in the same
        administrative domain.</t>

        <t>For steering traffic to subscription-based Service Functions, the
        SFC Classifier needs to understand which subscriber a flow belong to
        in order to retrieve the service profile to apply to this flow. In
        some contexts, it is not possible to identify in a permanent manner
        the subscriber by the source IP address because that IP address may be
        assigned dynamically. Out-of-band methods to correlate the source IP
        address and a subscriber identifier may be needed in a given
        administrative domain. The SFC Classifier can rely on pull or push
        methods to correlate an IP address and/or IPv6 prefix to a subscriber
        identity. Examples are querying the PCRF or receiving RADIUS
        Accounting messages respectively. </t>

        <t>For steering traffic to traffic management Service Functions such
        as video optimisation platform, in mobile network, it is desirable to
        perform optimisation on when required. That is when there is
        congestion in the Radio cells. One option for the SFC Classifier to
        have this congestion-awareness is for the network to provide this
        information to the SFC Classifier, directly, or via an intermediate
        actionable-intelligence function, which can combine other inputs or
        policies. How those policies and feedback data are configured to the
        SFC Classifier may be specific to each administrative domain.</t>
      </section>

      <section title="Use Case of Service Function Chain in Data Center">
        <t>In DC (Data Center), like in broadband and mobile networks, Service
        Function Chains may also be deployed to provide added-value
        services.</t>

        <t><xref target="DC"></xref> illustrates a possible scenario for
        Service Function Chain in Data Center: SFs are located between the DC
        Router (access router) and the Servers. From Servers to Internet,
        there are multiple Service Functions such as IDS/IPS, FW, NAT lined up
        and a monolithic SFC created for all incoming traffic.</t>

        <t><figure anchor="DC" title="Service Function Chain in Data Center">
            <artwork><![CDATA[
***********************************************                      
* +------+                                    *                      
* |Server+-+                                  *                      
* +------+ |                                  *            ------    
*          |                                  *         //        \\ 
* +------+ |  +-------+   +--+   +---+   +---------+   |            |
* |Server+-+->|IDS/IPS+-->|FW+-->|NAT+-->|DC Router|-->+  Internet  |
* +------+ |  +-------+   +--+   +---+   +---------+   |            |
*          |                                  *         \\        // 
*          |                                  *            ------    
*   ...   -+                                  *                      
*                                             *                      
*   ...                                       *                      
*                                             *                      
*                     DC                      *                      
***********************************************                      
 ]]></artwork>
          </figure></t>

        <t></t>
      </section>
    </section>

    <section title="Use Cases of Service Function Chaining Technical Scenario">
      <t>There are several possible cases for the steering of traffic
      according to service characteristics due to specific requirements from
      operators and service providers.</t>

      <section title="General Use Case for Service Function Chaining">
        <t>The traffic in a network is usually forwarded based on destination
        IP or MAC addresses. In an operator's network, some Service Functions
        are implemented, where traffic is steered through these Service
        Functions in a certain sequence according to service characteristics
        and objectives.</t>

        <t><figure anchor="classifier" title="General Service Function Chain">
            <artwork><![CDATA[
                                        +-------------------------+
                                        |Service Function Chaining|
                           +----------->|           A             |
                           |            +-------------------------+
         +------------+    |
         |Service     |    |
 ------->|Classifier  |--->|
         +------------+    |
                           |            +-------------------------+
                           |            |Service Function Chaining|
                           +----------->|           B             |
                                        +-------------------------+
]]></artwork>
          </figure></t>

        <t>Traffic enters a SFC-enabled domain in a service classifier, which
        identifies traffic and classifies it into service flows. Service flows
        are forwarded on a per SF Map basis.</t>
      </section>

      <section title="Use Case for Service Function Chain with NAT Function">
        <t>Due to IPv4 address exhaustion, more and more operators have
        deployed or are about to deploy IPv6 transition technologies such as
        NAT64 <xref target="RFC6146"></xref>. The traffic traversing a NAT64
        function may go through different types of IP address domains. One key
        feature of this scenario is that characteristics of packets before and
        after processed by the service processing function are different,
        e.g., from IPv6 to IPv4. The unpredictability of processed packets,
        due to the algorithm in the Service Function, brings difficulties in
        steering the traffic.</t>

        <t>A variety of hosts can be connected to the same network: IPv4-only,
        dual-stack, and IPv6-only. A differentiated forwarding path can be
        envisaged for each of these hosts. In particular, DS hosts should not
        be provided with a DNS64, and as such there traffic should not be
        delivered to a NAT64 device. Means to guide such differentiated path
        can be implemented at the host side; but may also be enabled in the
        network side as well.</t>

        <figure anchor="NAT"
                title="Service Function Chain with NAT64 function">
          <artwork><![CDATA[
     +---------+        +----------+        +----------+
     |         |        |          |        |          |
---->+ SF C    +------->+ SF NAT   +------->+ SF E     +-->
     |         |        |          |        |          |
     +---------+        +----------+        +----------+
                     ]]></artwork>
        </figure>

        <t><xref target="NAT"></xref> shows a specific example of Service
        Function Chain with NAT function. Service flow1 is processed by
        SF(Service Function) C, NAT and E sequentially. In this example, the
        SF NAT performs NAT64. As a result, packets after processing by the SF
        NAT are in IPv4, which is a different version of IP header from the
        packets before processing. Service Function Chaining in this scenario
        should be able to identify the flow even if it is changed after
        processed by Service Functions.</t>
      </section>

      <section title="Use Case for Multiple Underlay Networks">
        <t>Operators may need to deploy their networks with various types of
        underlay technologies. Therefore, Service Function Chaining needs to
        support different types of underlay networks.</t>

        <figure anchor="underlay"
                title="multiple underlay networks: Ethernet and IP">
          <artwork><![CDATA[ 
   +---------+         +----------+       +----------+
   |         |         |          |       |          |
-->+ SF A    |         | SF B     |       | SF C     +-->
   |         |         |          |       |          |
   +----+----+         +---+-+----+       +-----+----+
        |                  ^ |                  ^
        |      ------      | |      ------      |
        |   //        \\   | |   //        \\   |
        |  |  Ethernet  |  | v  |            |  |
        +->+  network   +->+ +->+ IP network +->+
           |            |       |            |
            \\        //         \\        //
               ------               ------
                    ]]></artwork>
        </figure>

        <t><xref target="underlay"></xref> illustrates an example of Ethernet
        and IP network, very common and easy for deployment based on existing
        network status, as underlay networks. SF(Service Functions) A, B and C
        locate in Ethernet and IP networks respectively. To build a Service
        Function Chain of SF A, B and C, Service Function Chaining needs to
        support steering traffic across Ethernet and IP underlay networks.</t>
      </section>

      <section title="Use Case of Service Path Forking">
        <t>To enable service or content awareness, operators need DPI
        functions to look into packets. When a DPI function is part of a
        Service Function Chain, packets processed by the DPI function may be
        directed to different paths according to result of DPI processing.
        That means a forking service path.</t>

        <figure anchor="fork" title="a forking service path">
          <artwork><![CDATA[
     +---------+        +----------+        +----------+
     |         |        |          |        |          |
---->| Firewall+------->+  DPI     +------->+anti-virus|--->
     |         |        |          |        |          |
     +---------+        +-----+----+        +----------+
                              |
                              |
                              V
                        +-----+----+
                        |          |
                        | Parental |
                        | control  |
                        +-----+----+
                              |
                              |
                              V

                   ]]></artwork>
        </figure>

        <t><xref target="fork"></xref> shows the use case of a forking service
        path. Traffic first goes through a firewall and then arrives at DPI
        function which discerns virus risk. If a certain pre-configured
        pattern is matched, the traffic is directed to an anti-virus
        function.</t>

        <t>Such DPI function may fork out more than one path.</t>
      </section>

      <section title="Use Case of Multiple Service Paths Share one Service Function">
        <t>Some carrier grade hardware box or Service Functions running on
        high performance servers can be shared to support multiple Service
        Function Chains. Following is an example.</t>

        <figure anchor="share"
                title="Two Service Function Chains share one Service Function">
          <artwork><![CDATA[
    SFC1    +---------+        +--------+
    ------->+---------+------->+--------+--->
    SFC2    |Firewall |        |Video   |
    ------->+-->+     |        |Opt     |
            +---|-----+        +--------+
                |
                v
            +---+-----+
            |   |     |
            |Parental |
            |Control  |
            +---+-----+
                |
                v

                   ]]></artwork>
        </figure>

        <t>In <xref target="share"></xref>, there are three Service Functions,
        firewall, VideoOpt and Parental Control, and two Service Functions
        Chains SFC1 and SFC2. SFC1 serves broadband user group1 which
        subscribes to secure web surfing and Internet video optimization,
        while SFC2 serves broadband user group2 which subscribes to secure web
        surfing with parental control. SF Firewall is shared by both Service
        Function Chains.</t>
      </section>

      <section title="Use Case of Service Layer Traffic Optimization">
        <t>In <xref target="optimize"></xref>, one SF has two instances SF_A1
        and SF_A2 on different networking paths. When data traffic hits the
        first SF_0, it will be forwarded to SF_A1 or SF_A2 depending on the
        traffic load on different paths. Such service layer traffic
        optimization is the essential requirement for many computing-intensive
        service process functions.</t>

        <t><figure anchor="optimize"
            title="service layer traffic optimization">
            <artwork><![CDATA[
                      +----------+
                      |          |
                +-----+  SF_A1   +---------+
               /      |          |          \
+-------+     /       +----------+           \
| SF0   |____/                                \______
|       |    \                                /
+-------+     \       +----------+           /
               \      |          |          /
                +-----+  SF_A2   +---------+
                      |          |
                      +----------+]]></artwork>
          </figure></t>
      </section>
    </section>

    <section title="Security Considerations">
      <t>This document does not define an architecture nor a protocol. It
      focuses on listing use cases and typical Service Function examples. Some
      of these functions are security-related.</t>

      <t>SFC-related security considerations are discussed in <xref
      target="I-D.boucadair-sfc-framework"></xref>.</t>
    </section>

    <section title="Acknowledgements">
      <t>Many thanks to the A. Goldner, R. Parker, and D. Binet for their
      comments.</t>
    </section>
  </middle>

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

    <references title="Informative References">
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6674"?>

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

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

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

      <?rfc include="reference.I-D.boucadair-sfc-framework" ?>

      <reference anchor="TS.23203">
        <front>
          <title>Policy and charging control architecture</title>

          <author fullname="" surname="">
            <organization>3GPP</organization>
          </author>

          <date day="0" month="September" year="2012" />
        </front>
      </reference>
    </references>
  </back>
</rfc>
