<?xml version="1.0" encoding="utf-8"?>
<!-- 
     draft-rfcxml-general-template-standard-00
  
     This template includes examples of the most commonly used features of RFCXML with comments 
     explaining how to customise them. This template can be quickly turned into an I-D by editing 
     the examples provided. Look for [REPLACE], [REPLACE/DELETE], [CHECK] and edit accordingly.
     Note - 'DELETE' means delete the element or attribute, not just the contents.
     
     Documentation is at https://authors.ietf.org/en/templates-and-schemas
-->
<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-wang-dyncast-centralized-service-routing-00"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="3">
<!-- [REPLACE] 
       * docName with name of your draft
     [CHECK] 
       * category should be one of std, bcp, info, exp, historic
       * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
       * updates can be an RFC number as NNNN
       * obsoletes can be an RFC number as NNNN 
-->

  <front>
    <title abbrev="Abbreviated Title">Centralized service routing solution for dyncast</title>
   

    <seriesInfo name="Internet-Draft" value="draft-wang-dyncast-centralized-service-routing-00"/>
   
    <author fullname="Xuewei Wang" initials="X"  surname="WANG">
      <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->
    <!-- Can have more than one author -->
      
    <!-- all of the following elements are optional -->
      <organization>Ruijie Networks</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
          <city>Beijing</city>
          <country>China</country>
          <!-- Uses two letter country code -->
        </postal>       
        <email>wangxuewei1@ruijie.com.cn</email>  
        <!-- Can have more than one <email> element -->
      </address>
    </author>
   
    <date year="2023"/>
    <!-- On draft subbmission:
         * If only the current year is specified, the current day and month will be used.
         * If the month and year are both specified and are the current ones, the current day will
           be used
         * If the year is not the current one, it is necessary to specify at least a month and day="1" will be used.
    -->

    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <!-- "Internet Engineering Task Force" 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 RFC Series. -->

    <keyword>keyword</keyword>
    <!-- [REPLACE/DELETE]. Multiple allowed.  Keywords are incorporated into HTML output files for 
         use by search engines. -->

    <abstract>
      <t>This document introduces a centralized service routing solution for dyncast architecture, which will improve the network scability and avoid the traffic loop problem.
</t>
 
  </abstract>
 
  </front>

  <middle>
    
    <section>
      <name>Introduction</name>
      <t> <xref target="I-D.li-dyncast-architecture"/>provides a easy-deployed architecture to do optimal service traffic steering through a combination of networking and computing related metrics, to improve service performance of the edge services. Dyncast locates on an overlay layer above IP, in this layer the service routing is based on the service ID(D-SID), which indicates the ingress D-Router to lookup some kind of service forwarding table indexed by D-SID, and encapsulate the service packets into an overlay path towards to the best Egress D-Router, then the Egress D-Router decapsulate the overlay header and also need to lookup service forwarding table based on the D-SID to get the best service instance, for the Egress D-router always attached more than one service instance. Summing up the Dyncast architecture indicates a distributed service routing decision. The Ingress and Egress D-Router both require to do service routing decisions based on D-SID. The distributed decision architecture will incur some problems described below.</t>
      
      <section>
        <name>Session scale and scalbility problems</name>
        <t>Just as described by 4.4. section of [I-D.li-dyncast-architecture], the instance affinity is one of key features that Dyncast should support. In order not to affect the line-rate forwarding of services instance affinity approach should be some kind of “on-path”ones. An generic approach is make service routing device to creat and maintain an instance affinity table, in which each item is a corresponding relation between the service request from a user and the nexthop destinated to the service instance to serve it. So the instance affinity table is in the scale of user numbers multiplied by service numbers. The requirement for scale of the instance affinity table would be a very important evaluation parameters of different CAN [I-D.liu-can-ps-usecases] routing architectures.
      </t>
       <t>As a distributed routing decision architecture Dyncast requires both the Ingress and Egress D-Router to do service routing decision based on D-SID, corresponding both of them also require to maintain the instance affinity table. The Ingress D-Router normally only attaches local users, the instance affinity table also refers to the local users’ services, the scale of the table should be under-controlled. Whereas the Egress D-Router needs to serve all the remote users who are assigned to the service instances attached to the Egress, and the instance affinity table scale would be huge, so making the Egress D-Router maintaining the instance affinity table is not a good choice.
</t>
       <t>In addition, as the further deployment of edge services and the increase of the attach users, we need to consider the scalibility of  the instance affinity table. E.g.,if the Ingress D-Router(e.g.,PE router) is overloaded by the increased users, it could distribute its instance affinity table to some of its lower routers(e.g., CPE router), because the CPE and the Egress are located at different AS, the CPE is hard to get the direct routing to the Egress, still requires to first route to Ingress, then to Egress. So the Ingress still requires to maintain the instance affinity table, which can not be sunk.
 </t>
      </section>
      <!-- [CHECK] The 'Requirements Language' section is optional -->
      <section>
        <name>Service traffic loop problem</name>
        <t>A common problem of the distributed routing algorithms is the traffic loop problem incurred by inconsistent status among different routing devices on the moment of network failure. After the control plane convergence is finished, the loop problem is solved automatically. Although the duration of the loop is not very long, the bad efforts can’t be ignored and some  algorithms(e.g., Ti-LFA) are defined to address the loop issue.
</t>
        <t>In Dyncast environment, because of presence of instance affinity,the loop can’t be eliminated even after the control plane has converged. Therefore, the traffic loop will always be there, which will introduce huge waste of network resources and the failure of service request. 
</t>
       <t>Indeed we could also define some rules to avoid the traffic loop issue. If a practical technology of Dyncast overlay is VPN, e.g., EVPN, we can intrdoce the horizontal splitting mechanism of EVPN VPLS into the EVPN L3VPN, and avoid forwarding from overlay tunnel to another overlay tunnel. Whereas this will introduce signficant complexity to L3VPN and also do not comply with the principle of L3 routing.
</t>
      </section>
    </section>
    <section>   
       <name>Centralized service routing solution for Dyncast</name>
        <t>Dyncast is a very nice and easy-deployed architecture based on anycast routing algorithms. Compared with the distributed routing decision, we recommend a centralized service routing decision solution for Dyncast.
</t>
        <t>The ingress D-Router acts as the sole node to do the service routing decision based on D-SID, and translates the service packets destination address from D-SID to D-BID, then encapsulates into an overlay path to an Egress D-Router. The Egress D-Router does the routing decision directly based on D-BID. 
</t>
        <t>Therefore, the D-BID also needs to be distributed to the overlay network.
</t>
        <t>The reverse service workflow is symmetric, corresponding the same D-Router required to do the service packets source address translated from D-BID to D-SID, for the consistency of traffic to/from a D-Router.
</t>
        <t>For the service routing decision based on D-SID is performed solely centralized on the Ingress D-Router, only the Ingress D-Router needs to maintain the instance affinity table. After the service instance has been affinitied at the Ingress D-Router and carried on the service packets(destination address), the Egress D-Router does not need to maintain the affinity table and could directly get the instance affinity relation from the packets. 
</t>
        <t>Also due to the solely Ingress decision characteristics, the instance affinity table scalibility just as described at 1.1. section could be easily achieved by sinking it to the CPE devices. 
</t>
        <t>Again, for the single node decision characteristics, the service traffic loop problem is naturally non-existance. Indeedly during the control plane convergence period, the service rouing decision perhaps is not “best”if the ingress have no the newest network or computing status information.
</t>
    </section>
 
    <section anchor="IANA">
    <!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.-->
      <name>IANA Considerations</name>
      <t>This memo includes no request to IANA. </t>
    </section>
    
    <section anchor="Security">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
      <name>Security Considerations</name>
      <t>This document should not affect the security of the Internet.</t>
    </section>
    
    <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
  </middle>

  <back>
    <references>
      <name>References</name>

      <references>
        <name>Informative References</name>
       
        <reference anchor="I-D.liu-can-ps-usecases" target="https://www.ietf.org/archive/id/draft-liu-can-ps-usecases-00.txt">  
          <front>
            <title>Computing-Aware Networking (CAN) Problem Statement and Use Cases</title>
            <author initials="P" surname="Liu">  </author>
            <author initials="P" surname="Eardley">  </author>
            <author initials="D" surname="Trossen"> </author>
            <author initials="M" surname="Boucadair"> </author>
            <author initials="LM" surname="Contreras"> </author>
            <author initials="C" surname="Li"> </author>
            <author initials="Y" surname="Li"> 
            </author>
            <date year="2022" />
            <!-- [CHECK] -->
          </front>
        </reference>

        <reference anchor="I-D.li-dyncast-architecture" target="https://www.ietf.org/archive/id/draft-li-dyncast-architecture-08.txt">
          <front>
            <title>Dynamic-Anycast Architecture</title>
            <author initials="Y" surname="Li">  </author>
            <author initials="L" surname="Iannone">  </author>
            <author initials="D" surname="Trossen"> </author>
            <author initials="P" surname="Liu"> </author>
            <author initials="C" surname="Li "> </author>

            <date year="2023"/>
            <!-- [CHECK] -->
          </front>
        </reference>       
       
      </references>
    </references>
    

    

    
 </back>
</rfc>
