<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-liu-sfc-nesting-use-case-01"
     ipr="trust200902">
  <front>
    <title abbrev="Hierarchical SFC">Use Case of Hierarchical Service Function Chaining </title>

    <author fullname="Dapeng Liu" initials="D." surname="Liu">
      <organization>Alibaba Group</organization>

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <code/>

          <region/>

          <country>China</country>
        </postal>

        <phone>+86-13911788933</phone>

        <email>maxpassion@gmail.com</email>
      </address>
    </author>

    <author fullname="Jie Cao" initials="J." surname="Cao">
      <organization>Alibaba Group</organization>

      <address>
        <postal>
          <street/>

          <city>Hangzhou</city>

          <region/>

          <code/>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email/>

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

    <date day="05" month="July" year="2015"/>

    <area>Routing Area</area>

    <workgroup>Service Function Chaining Working Group</workgroup>

    <abstract>
      <t>This document proposes use case and requirement of hierarchical service 
        function chaining.</t>
    </abstract>

    <note 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>
    </note>
  </front>

  <middle>
  <section title="Use case of Hierarchical SFC">
    <t>
    The advantage of hierarchical service function chaining compared with 
    normal or flat service function chaining is that it can reduce the 
    management complexity significantly. This section discusses the use 
    cases that shows the advantage of hierarchical service chaining. 
    </t>

    <t>
      Use case 1: Traffic Identificaiton
   </t>
      <t>The scenario discussed in this section is called hierarchical service
      function chaining. As shown in figure 1, there are two types of
      service function chains. The first type is SFC1. There are two sub-type
      service function chains of SFC1, SFC1_1 and SFC1_2. SFC1_1 and SFC1_2
      belongs to the same type of service function chain type SFC1. The second
      type of service function chain is SFC2. There are two sub-type service
      function chains of SFC2, namely SFC2_1 and SFC2_2. There are two more
      types of service function chain of sub-type SFC2_1, namely SFC2_1_1 and
      SFC2_1_2. For service function chain SFC2, there is one sub-type of
      service function chain called SFC2_2.</t>

      <t><list style="symbols">
          <t>As figure 1 shows, there are two tenants in a public cloud. All of the first
          tenant's traffic is identified as SFC1 and all of the second
          tenant's traffic is identified as SFC2. A more concrete example is
          that the first tenant is social networking service and the second
          tenant is online gaming service.</t>

          <t>For the social networking service traffic SFC1, the first
          sub-type of SFC1 is the traffic between users and it is identified
          as SFC1_1. The second sub-type of SFC1 is the traffic for
          advertisement and it is identified as SFC1_2. The traffic of both
          SFC1_1 and SFC1_2 belong to the same social networking service
          tenant but it may have different policies. For example, the traffic
          between users may have higher priority compared with the traffic for
          advertisement.</t>

          <t>For the online gaming service SFC2, the first sub-type of SFC2 is
          the traffic of gaming interaction and it is identified as SFC2_1.
          There two more sub-type of SFC2_1, the first sub-type is the traffic
          that belongs to VIP users and it is identified as SFC2_2_1. The
          other sub-type is the traffic that belongs to normal user and it is
          identified as SFC2_1_2. Both the traffic of SFC2_1_1 and SFC2_1_2
          belong to online gaming interaction traffic but it may have
          different policy. For example, the traffic of SFC2_1_1 may have
          higher priority compared with the traffic of SFC2_1_2.</t>

          <t>The second sub-type of online gaming service is user payment
          traffic and it is identified as SFC2_2. Both of traffic SFC2_1 and
          SFC2_2 belong to the online gaming service tenant but it may have
          different policies. For example, the online gaming interaction
          traffic may have higher priority compared with the payment
          traffic.</t>
        </list></t>
        <t>
          Data center operator can use hierachical
          service function chaining to identify user tarffic in
          different granularity. For example, data center
          operator could manage all the social networking 
          traffic using SFC1. They can also manage the 
          advertisement traffic within the social networking
          traffic as SFC1_1. The management complexity
          could be reduced compared with normal SFC.
        </t>


      <t><figure>
          <preamble/>

          <artwork align="center"><![CDATA[


+----------------+       +-----------------+
|   +--------+   |       |    +--------+   |
|   |  VM1   |<--|-------|----|   VM1  |---|----> SFC1/SFC1_1
|   +--------+   |   +-- |----+--------+---|----> SFC1/SFC1_2 
|   +--------+   |   |   |    +--------+   |
|   |  VM2   |<--|---+ +-|----|   VM2  |---|----> SFC2/SFC2_1/SFC2_1_1  
|   +--------+   |     | |    +--------+   |
|   +--------+<--|-----+ |    +--------+   |
|   |  VM3   |<--|-------|----|   VM3  |---|----> SFC2/SFC2_1/SFC2_1_2
|   +--------+   |       |    +--------+   |
|   +--------+   |       |    +--------+   |
|   |  VM4   |<--|-------|----|   VM4  |---|----> SFC2/SFC2_2
|   +--------+   |       |    +--------+   |
|      ...       |       |                 |
+----------------+       +-----------------+
      DB                        Web


]]></artwork>

          <postamble>Figure 1: Hierarchical Service Function Chaining
          Scenario</postamble>
        </figure></t>


 

    <t>
    Use case 2: Inter-Datacenter SFC
    </t>

    <t>
    Hierarchical service chaining could be used to simplify inter-datacenter
    SFC management. [draft-ietf-sfc-dc-use-cases-02] has discussed the 
    inter-datacenter SFC use case. One concrete example of inter-datacenter
    SFC is shown in figure 3. Multiple local data-centers are deployed in a 
    geographically distributed manner. A central datacenter which contains 
    service functions that can not be virtualized and have low usage rate is 
    deployed centrally. Deploying those service function in every local 
    datacenter will increase the CAPEX/OPEX. So the datacenter operator 
    prefer to deploy those service functions in a central datacenter.
    </t>

    <t>
    When we use "Flat(Normal) SFC", the number of SFPs managed in central datacenter
    may increase and the change of SFP configuration in the central datacenter will affect
    other data-centers. For example, as shown in figure 4, when we put a new SF 
    in the central datacenter and set a new SFP, change of SFP configuration would be 
    required for each datacenter. On the other hand, if we use hierarchical SFC 
    approach, we can manage each datacenter independently, and the management complexity 
    can be reduced.
    </t>


      <t><figure>
          <preamble/>

          <artwork align="center"><![CDATA[

             .--.__.--.__.--.
             (                )-.
            .'                   )
           (       Internet      )
            (                  -'
              '-(           __)
             ^   '---'~'---'   ^
             |        ^        |
     +-------+        |        +-------+
     |           +----+----+           |
     |           | Central | <=========|====== Central DC:
     |           |   DC    |           |       Some HW APL
     |           ++---+---++           |       which have
     |            |   |   |            |       low usage 
     |   +--------+   |   +--------+   |       rate are
     |   |            v            |   |       deployed in
     |   |         [ UEs ]         |   |       central DC.
   +-+---+-+       Area#x        +-+---+-+
   | Local |                     | Local | <== Local DCs
   | DC#1  |         ...         | DC#n  |     are deployed
   +---+---+                     +---+---+     geographically
       |                             |         distributed.
       |                             |
       v                             v
    [ UEs ]                       [ UEs ]
    Area#a                        Area#n

          ]]></artwork>

          <postamble>Figure 2:Inter-DC SFC in distributed DCs network</postamble>
        </figure></t>


         <t><figure>
          <preamble/>

          <artwork align="center"><![CDATA[

   ---> : Existing Path
   ===> : New Path


        .---------.                .---------.
       /   LDC#1   \              /    CDC    \
     +--+          |             |             |    -+
     |CF|----------------------------------------->  |
     |  |----------------------------------------->  |  
     |  |=========================================>  | 
     +--+          |      +----------------------->  |   
       \          /       |  +-------------------->  |
        '--------'        |  |  #=================>  |
                          |  |  # \           /     -+
        .---------.       |  |  #  '---------'
       /   LDC#2   \      |  |  #
     +--+          |      |  |  #
     |CF|-----------------+  |  #
     |  |--------------------+  #
     |  |=======================#
     +--+          |
       \          /
        '--------'
     |             |
     +------v------+


          ]]></artwork>

          <postamble>Figure 3: Issues of inter-DC SFC as flat SFC </postamble>
        </figure></t>

   <t>
      Use case 3: Simplify SFC management
   </t>

   <t>
     In this use case, hierarchical service chaining is used to simplify 
    service function chaining management by reducing the number of SFP.
   </t>

   <t>
    As shown in figure 4, there are two types of user traffic: HTTP and 
    video. There are five security functions deployed in the security
    domain. The datacenter operator want to enforce the five different 
    security policies to these two types of traffic separately. If we use
    flat SFC (normal branching), 10 SFPs is needed in each domain. On the
    other hand, if we use hierarchical SFC, only 5 SFPs in domain#1 and 
    2 SFPs in domain#2 will be required as shown in figure 5.
   </t>


         <t><figure>
          <preamble/>

          <artwork align="center"><![CDATA[

           . . . . . . . . . . ..   . . . . . . . . . . . . . . ..
           .   Domain#1         .   .        Domain#2            .
           .   Security Domain  .   .      HTTP with WAF         .
           .                    .   .  +->[  HHE  ]----->[ NAT ] : 
           .                    .   .  |                         :
           .                    .   .  |   Video Traffic with WAF.
           . +---->[ WAF ]------.------+->[Video Opt.]-->[ NAT ] :
           . |                  .   .                            : 
           . |                  .   .    HTTP with Anti-Virus    .
           . |                  .   .  +->[  HHE  ]----->[ NAT ] :
           . |                  .   .  |                         : 
           . |                  .   .  | Video with Anti-Virus   .
           . +---->[Anti-Virus]--------+->[Video Opt.]-->[ NAT ] :
           . |                  .   .                            : 
           . |                  .   .    HTTP with IPS           .
           . |                  .   .  +->[  HHE  ]----->[ NAT ] :
           . |                  .   .  |                         : 
[CF]->[DPI]------->[ IPS ]-------------+ Video Traffic with IPS  .
           . |                  .   .  +->[Video Opt.]-->[ NAT ] :
           . |                  .   .                            : 
           . |                  .   .    HTTP with IDS           .
           . +---->[ IDS ]-------------+->[  HHE  ]----->[ NAT ] :
           . |                  .   .  |                         : 
           . |                  .   .  | Video Traffic with IDS  .
           . |                  .   .  +->[Video Opt.]-->[ NAT ] :
           . |                  .   .                            : 
           . |                  .   .   HTTP with Traffic Monitor.
           . +---->[Traffic]-----------+->[  HHE  ]----->[ NAT ] : 
           .        Monitor     .   .  |                         :
           .                    .   .  |Video with Traffic Monitor
           .                    .   .  +->[Video Opt.]-->[ NAT ] : 
           . . . . . . .. . . . .   . . . . . . ... . . . . . . ..


          ]]></artwork>

          <postamble>Figure 4: Flat SFC in separated domains network</postamble>
        </figure></t>


         <t><figure>
          <preamble/>

          <artwork align="center"><![CDATA[

      . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . .. 
      .  Domain#1(Security Domain)  .  .           Domain#2           .
      .                             .  .                              .
[CF]---->[  DPI(Sub-domain GW)   ]------>[Sub-domain GW ]------------->
      .    |                  ^     .  .  |                         ^ .
      .    +----->[ WAF ]-----+     .  .  +-->[ HHE ]------>[ NAT ]-+ .
      .    |                  |     .  .  |                         | .
      .    +-->[Anti-Virus]---+     .  .  +-->[Video Opt.]->[ NAT ]-+ .
      .    |                  |     .  .                              .
      .    +----->[ IPS ]-----+     .  . . . . . . . . . . . . .. . . .
      .    |                  |     .
      .    +----->[ IDS ]-----+     .
      .    |                  |     .
      .    +-->[ Monitor ]----+     .
      . . . . . . . . . . . . . . . .            

          ]]></artwork>

          <postamble>Figure 5: Hierarchical in separated domains network</postamble>
        </figure></t>



  </section>
    
  

    <section title="Requirement of Hierarchical Service Function Chaining">
      

      <t>The requirement of hierarchical service function chaining is:</t>

      <t><list style="symbols">
          <t>The service function chain solution should allow hierarchical structure.</t>

          <t>One service function chain may have multiple sub-domain of
          service function chain.</t>

          <t>The number of levels of the hierarchical structure of a service
          function chain should not be limited.</t>

          <t>
            Increase of the number of SFP by SFC across multiple DCs could be limited
          </t>

          <t>
            The control and configuration in each domain should be independent
          </t>

          <t>
            metadata could be maintaind between some domains
          </t>

          <t>
            The paths in bi-direction could be symmetry in each domain
          </t>
        </list></t>
    </section>

    <section title="contributors">
      <t>
        Shunsuke Homma: NTT
        Email: homma.shunsuke@lab.ntt.co.jp
      </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document makes no request of IANA.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>TBD</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>
        The authors would like to thank Shunsuke Homma for the
        useful comments and suggestions.
      </t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
    </references>

    <references title="Informative References">
      <reference anchor="draft-ietf-sfc-architecture-07">
        <front>
          <title>Service Function Chaining (SFC) Architecture</title>

          <author fullname="J. Halpern">
            <organization/>
          </author>

          <date day="17" month="February" year="2015"/>
        </front>
      </reference>

      <reference anchor="draft-ietf-sfc-dc-use-cases">
        <front>
          <title>Service Function Chaining Use Cases In Data Centers</title>

          <author fullname="S. Kumar">
            <organization/>
          </author>

          <date day="19" month="January" year="2015"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
