<?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="info"
     docName="draft-du-dyncast-service-info-updating-in-cnc-00"
     ipr="trust200902">
  <front>
    <title abbrev="Service Information Updating in CNC">Service Information
    Updating in Computing and Network Convergence</title>

    <author fullname="Zongpeng Du" initials=" Z." surname="Du">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street>No.32 XuanWuMen West Street</street>

          <city>Beijing</city>

          <code>100053</code>

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

        <email>duzongpeng@foxmail.com</email>
      </address>
    </author>

    <date month="December" year="2021"/>

    <area>Routing Area</area>

    <workgroup>Network Working Group</workgroup>

    <keyword>CNC, CFN</keyword>

    <abstract>
      <t>This document introduces a service information updating method in the
      scenario of computing and network convergence.</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="Introduction">
      <t>One of the evolvement directions of the network is to converge with
      the service. In the scenarios of Computing and Network Convergence (CNC)
      or Computing Force Network (CFN), the network is aware of the service
      information, and can make a better choice in the traffic steering. In
      this situation, both the network metric and the service-specific metric
      are considered instead of only the network metric. Thus, the network
      resource and the computing resource can be utilized more
      efficiently.</t>

      <t>In fact, the scheduling mechanism in the cloud scenarios can also
      support load balance according to the load of different servers for the
      same service. However, the decision point for the traffic steering is
      relatively high. The mechanism described in <xref
      target="I-D.li-dyncast-architecture"/> can support that the decision
      point is on the network node. One of the advantages of this mechanism is
      that the network node is on the data path, and can respond more quickly
      than the centralized mechanism.</t>

      <t>However, this cross-layer designation may cause some problems as
      mentioned in <xref target="I-D.liu-dyncast-ps-usecases"/>. One of the
      problems is that the service-specific metric is more dynamic. It is hard
      to refresh the status on the network nodes frequently.</t>

      <t>In this document, we introduce a mechanism that can update service
      information on the network nodes more efficiently. In the mechanism, we
      notify the service information on the control plane, and for some
      parameters that change frequently, we refresh them on the data
      plane.</t>

      <t/>
    </section>

    <section title=" General Procedure">
      <t>As described in Figure1, the MEC1/2/3 can all support Service1, and
      announce the anycast IP address &lt;ServiceID1&gt;. In the network, the
      ingress node will have the route for &lt;ServiceID1&gt;. According to
      the current anycast mechanism, one of the egress nodes will be the next
      hop for the &lt;ServiceID1&gt; on the ingress. For example, Egress2 is
      the next hop on the ingress node for the &lt;ServiceID1&gt;.</t>

      <t><figure>
          <artwork><![CDATA[
                                           _______       _______ 
                 _________________________|       |     |       |
                |                         |Egress1| --- |  MEC1 |
                |                         |       |     |       |
                |                          -------       -------
                |                               |         Service1
    ______     _______                     _______       _______ 
   |      |   |       |                   |       |     |       |
   |Client|---|Ingress|                   |Egress2| --- |  MEC2 |
   |      |   |       |                   |       |     |       |
    ------     -------                     -------       -------
                |                               |         Service1
                |                          _______       _______ 
                |                         |       |     |       |
                |                         |Egress3| --- |  MEC3 |
                |                         |       |     |       |
                |                          -------       -------
                |              Network          |        Service1
                 -------------------------------

   Figure 1: Load balance among MECs in CNC or CFN

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

      <t>In the first step, the client which wants to access Service1 will
      send a packet with the &lt;source, destination&gt; pairs as
      &lt;ClientIP, ServiceID1&gt;.</t>

      <t>In the second step, the Ingress node receives the packet, and
      encapsulates the packet in a tunnel as &lt;IngressIP,
      EgressIP2&gt;&lt;ClientIP, ServiceID1&gt;.</t>

      <t>In the third step, the Egress2 decapsulates the packet and send it to
      the MEC2.</t>

      <t>In the fourth step, the server in the MEC2 will response a packet
      with the &lt;source, destination&gt; pairs as &lt;ServerIP2,
      ClientIP&gt;. Here, the source address is a normal IP address, and is
      not the anycast address.</t>

      <t>In the fifth step, the Egress2 encapsulates the packet in a tunnel as
      &lt;EgressIP2, IngressIP&gt;&lt;ServerIP2, ClientIP&gt;.</t>

      <t>In the sixth step, the Ingress decapsulates the packet and send it to
      the MEC2, with the &lt;source, destination&gt; pairs as &lt;ServerIP2,
      ClientIP&gt;.</t>

      <t>In the seventh step, the client receives the packet, correlates with
      the packet &lt;ClientIP, ServiceID1&gt;, and then uses &lt;ServerIP2&gt;
      as the destination address to continue the communication.</t>

      <t>The main point of the CNC is in Step 2. In the current mechanism, the
      target for &lt;ServiceID1&gt; is relatively static. In the CNC, the
      Ingress should support dynamic load balance according to the computing
      load in MEC1/2/3, and the latency to the Egress1/2/3.</t>

      <t>For example in the CNC, if the MEC2 has a heavy load, the Ingress may
      steer the traffic with the destination address &lt;ServiceID1&gt; to
      Egress1/3.</t>
    </section>

    <section title="Service Information Informing on the Control Plane">
      <t>In the CNC mechanism, the Egress1/2/3 should be able to collect the
      load information for ServiceID1, and inform the service information to
      the Ingress on the control plane. For example, the service information
      can be carried in the BGP message that announces the anycast IP address
      &lt;ServiceID1&gt;.</t>

      <t>However, if the load information for ServiceID1 changes frequently,
      we should not send too many BGP messages into the network.</t>
    </section>

    <section title="Service Information Updating on the Data Plane">
      <t>In this document, we suggest updating the service information that
      changes frequently based on the data plane programming. The reason is
      that it is more efficient to do this kind of simple and repeated actions
      on the data plane.</t>

      <t>For example, the Egress 1/2/3 can monitor the packets targeting to
      the Ingress, and add the service information in the DoH of the packets
      <xref target="RFC4291"/>. Then, the Ingress can monitor the changes of
      the load of Service1 in the MECs. Other insertion methods can also be
      considered here. The information can also be inserted by the server into
      some place of the IPv6 extension headers.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>TBD.</t>
    </section>

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

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD.</t>
    </section>
  </middle>

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

      <?rfc include="reference.RFC.4291"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.li-dyncast-architecture"?>

      <?rfc include="reference.I-D.liu-dyncast-ps-usecases"?>
    </references>
  </back>
</rfc>
