<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?rfc strict="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-compute-aware-advertise-route-san-database-00" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.0 -->
  <!-- ***** FRONT MATTER ***** -->

    <front>
    <title abbrev="Service Routing Based on Databases">Computing Status Awareness, Advertisement and Service Routing methods of SAN Based on Databases</title>
    <seriesInfo name="Internet-Draft" value="draft-compute-aware-advertise-route-san-database-00"/>
    <author fullname="Fenlin Zhou" initials="F" surname="Zhou">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street>No.50 Software Avenue</street>
          <city>Nanjing</city>
          <region>Jiangsu</region>
          <code>210012</code>
          <country>China</country>
        </postal>
        <phone/>
        <email>zhou.fenlin@zte.com.cn</email>
      </address>
    </author>
    <author fullname="Dongyu Yuan" initials="D" surname="Yuan">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street>No.50 Software Avenue</street>
          <city>Nanjing</city>
          <region>Jiangsu</region>
          <code>210012</code>
          <country>China</country>
        </postal>
        <phone/>
        <email>yuan.dongyu@zte.com.cn</email>
      </address>
    </author>
    <date day="10" month="October" year="2022"/>
    <area>INT</area>
    <workgroup>INTAREA</workgroup>
    <keyword>Computing Status Awareness, Advertisement and Service Routing methods of SAN Based on Databases</keyword>
    <abstract>
      <t>This draft proposes a unified method to perceive and advertise the running status of computing resources in a Service Awareness Network by introducing a distributed database. The forwarding operation in a fine-grained service routing policy is correspondingly defined which is completely decoupled from conventional IP routing. In the scheme proposed, the impact of high frequency changes of computing resources is avoided and the compatibility of the network is enhanced.</t>
    </abstract>
  </front>
  <!-- ***** MIDDLE MATTER ***** -->

    <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>
      <t>With computing resource continuously migrating to edges, services residing distributedly turns to be delivered in a dynamic way. More fine-grained networking policies awaring of service SLA requirements are urgently required.</t>
      <t>As illustrated in <xref target="I-D.huang-service-aware-network-framework" format="default"/>, a typical SAN framework consists of service client, service server, SAN ingress, SAN relay and SAN egress. A fine-grained networking policy can be achieved through successive procedures:</t>
      <ul spacing="normal">
        <li>The perception of the status of computing resources: Changes and variations in the current status of computing resources should be notified and reflected. Static configurations together with the dynamic changes comprise a thorough and overall view as a reference to select a proper resource pool.</li>
        <li>The advertisement of the status of computing resources: A group of nodes in the network domain should further be aware of the current distributions and conditions among various resource pools so that the networking and routing policies can be adjusted or formulated. The advertisement of the running status is also a learning procedure for the network domain.</li>
        <li>The formulation of a specific service routing policy: With the knowledge of the running status and network conditions, an appropriate resource pool can be selected to satisfy the service SLA requirements. A specific fine-grained service routing policy can further be formulated to forward the packets.</li>
      </ul>
      <t>The mentioned procedures are shown in Figure 1:</t>
      <figure>
        <name>Computing Resource Perception and Advertisement in SAN</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
 
                            (1)Perception<---------------------+
                                   |                           |
                                   v                           |
                           (2)Advertisement                    |
                                   |                  Status of|
                   +---------------+--------------+   Computing|
                   |               |              |   Resources|
                   v               v              v            |
                                                               |
      (3)Service Routing                                       |
+-------+ -------->                                        +-------+
|Service|    +-----------+   +----------+   +----------+   |Service|
|       +----+SAN Ingress+---+SAN  Relay+---+SAN egress+---+       |
|Client |    +-----------+   +----------+   +----------+   |Server |
+-------+          |                                       +-------+
    |              |                                           |
    |              |                                           |
    |              |<-----SAN Fowarding and Routing Domain---->|
    |                                                          |
    |                                                          |
    |<---------------Service Identification Domain------------>|	
	
	                   ]]></artwork>
      </figure>
      <t keepWithPrevious="true"/>
      <t>Since the perception and advertisement procedures are the premises to achieve service routing, enabling the network to be aware of the running status timely is regarded to be a significant problem. </t>
      <t>Currently, the perception of computing resources can be commonly achieved by application protocols, FTP for instance. With the connection between clients and the server establishd, the cloud side is required to spontaneously upload the running status of computing resources. The process of advertising computing resource information is commonly fulfilled by extending IGP or BGP. Packets with a designated format carrying information of computing resources flood in the network to complete the learning process.</t>
      <t>In current schemes, service routing is strongly coupled with traditional IP routing which results in the following deficiencies:</t>
      <ul spacing="normal">
        <li>The status of computing resources is updated with delay attributed to a relatively long authentication duration and the usage of multiple protocols.</li>
        <li>Responses in the network to the highly dynamic computing resources is relatively slow by using IGP or BGP.</li>
        <li>Compared to conventional IP routing, service routing is comprehensively designated by both network metrics and service SLA requirements in which the status of computing resources is highly dynamic. Thus, advertising the dynamic status emerge a large amount of extra packets and exert relatively severe impact on the traffic bearer in the current network. Furthermore, conventional network services are not concerned about the status of computing resource.</li>
      </ul>
      <t>According to the analysis above, the following problems are required to be solved:</t>
      <ul spacing="normal">
        <li>Reduce the overwhelmed utilization of L3 protocols and improve the compatibility of the network.</li>
        <li>Simplify the perception and advertisement process and optimize the learning procedure of updated status.</li>
      </ul>
      <t>This draft proposes computing resources perception and advertisement method by introducing a distributed database to fulfill service routing decoupled from conventional IP routing.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Requirements Language</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
    "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
    "OPTIONAL" in this document are to be interpreted as described in BCP
    14 <xref target="RFC2119" format="default"/>
        <xref target="RFC8174" format="default"/> when,
    and only when, they appear in all capitals, as shown here.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Terminology</name>
      <ul spacing="normal">
        <li>LB: Load Balancer</li>
        <li>FTP: File Transfer Protocol</li>
        <li>IGP: Interior Gateway Protocol</li>
        <li>BGP: Border Gateway Protocol</li>
        <li>DB-Agent: Agent of a database</li>
        <li>GW: Gateway</li>
        <li>SLA: Service Level Agreements</li>
        <li>SID: Segment ID</li>
        <li>SAN: Service Awareness Network</li>
        <li>SAN ID: Service Awareness Network Identification, an identification designed to indicate the fundamental and common service types</li>
      </ul>
    </section>
    <section numbered="true" toc="default">
      <name>The Perception of the Status of Computing Resources</name>
      <t>The computing resources information of the cloud-side server is used to reflect the performance and a running status of resource pools. It is obtained to facilitate unified collaborative invocation of computing power resources.</t>
      <t>It is noted that identical services can be provided by multiple resource pools which connects to different gateways and status of resource pools varies from each other. Thus, the description of computing resource may include the following attributes as shown in Figure 2:</t>
      <figure>
        <name>Status Table of Computing Resources</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
  
+------------+-----------------+-----------------------------------+
|   SAN ID   | Service Gateway |  Service Descriptions Index(1-n)  |
+------------+-----------------+-----------+-----------+-----------+
| Service  1 |       GW1       |   CPU 1   | Memory  1 |   O/I 1   |
+------------+-----------------+-----------+-----------+-----------+
| Service  2 |       GW2       |   CPU 2   | Memory  2 |   O/I 2   |
+------------+-----------------+-----------+-----------+-----------+
| Service  3 |       GW2       |   CPU 3   | Memory  3 |   O/I 3   |
+------------+-----------------+-----------+-----------+-----------+
| Service  3 |       GW3       |   CPU 4   | Memory  4 |   O/I 4   |
+------------+-----------------+-----------+-----------+-----------+
| Service  1 |       GW3       |   CPU 5   | Memory  5 |   O/I 5   |
+------------+-----------------+-----------+-----------+-----------+
    
                       ]]></artwork>
      </figure>
      <t keepWithPrevious="true"/>
      <t>Since the status of computing resources can be modeled as a collection of key-value pairs with keys as unique identifiers, this draft introduced a distributed database to store and update the running status.  As shown in Figure 2, a service identification defined as a SAN ID(Service ID) in <xref target="I-D.service-identification-header-of-san" format="default"/> to represent a globally unique service semantic identification and its connected gateway should be configured as the key for the extracted data model.</t>
      <t>A distributed system has the advantages of advanced performance, high availability and simple extensibility. It is highly partitionable and allows horizontal scaling which satisfies the practical scenarios of large scale of service instances. Also, both keys and values can be anything from simple objects to complex compound objects, and thus heterogeneous computing resources can be described and stored.</t>
      <t>After the key-value pairs are extracted and further written into the database by the cloud side as multiple DB-Agents, the perception of the status of computing resources is fulfilled.</t>
    </section>
    <section numbered="true" toc="default">
      <name>The Advertisement of the Status of Computing Resources</name>
      <figure>
        <name>The status of computing resources learning procedures</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
  
+-------------+
|   +--------+|                      +-----------------------------+
|VM |Database||<---------------------|           DB-Agent          |
|   +--------+|        Write         |                             |
+-------------+                      |                 +---------+ |
       | Read                        |        +--------+Service 1| |
       v                             |        |        +---------+ |
+----------------------+             | +------+------+             |
|       DB-Agent       |             | |Load Balancer|   ......    |
|                      |             | +------+------+             |
| +----+        +----+ |             |        |        +---------+ |
| |PE 1| ...... |PE n| |             |        +--------+Service n| |
| +----+        +----+ |             |                 +---------+ |
|                      |             |                             |
| Network Edge Devices |             |             Cloud           |
+----------------------+             +-----------------------------+
    
                       ]]></artwork>
      </figure>
      <t keepWithPrevious="true"/>
      <t>With the introduction of a distributed database, the data of the computing resources can be stored in hierarchically organized directories. A typical form is described as below:</t>
      <ul spacing="normal">
        <li>/service instances/GW</li>
        <li>/service instances/SAN ID</li>
        <li>/service instances/SAN ID/CPU Load</li>
        <li>/service instances/SAN ID/Memory Remains</li>
      </ul>
      <t>As shown in Figure 3, a group of edge devices in the network domain observes the key value information through a publish-subscribe mechanism. Specific keys or directories can be watched for changes and multiple clients can react to changes in values. Since multiple edge devices simultaneously observe the variations, the running status is advertised to all edge devices. It is concluded that, by introducing a database, functions of perception and advertisement are unified.</t>
      <t>It can be understood that in the mentioned writing and reading process, there is no necessity to perform additional authentication on a management protocol and network layer protocols, thereby simplifying the overall procedure.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Service Routing Decoupled from IP Routing</name>
      <figure>
        <name>Service Routing Decoupled from IP Routing</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
  
+-----------------------------+
|           DB-Agent          |
|+---------------------------+|
||    Computing Resource &   ||
||    Network  Information   ||
||     Perception  Module    ||
|+---------------------------+|
+-----------------------------+
              |                    +-------------------------+
              |<-------------------|    Networking Policy    |
              |                    +-------------------------+
              |                    +-------------------------+
              |<-------------------|Service Addressing Policy|
              |                    +-------------------------+
              v
  +-----------------------+                    +------------------+
  | Service Routing Table +<------------------>+ IP Routing Table |
  +-----------------------+                    +------------------+
    
                       ]]></artwork>
      </figure>
      <t keepWithPrevious="true"/>
      <t>As shown in Figure 4, after the current computing status is obtained, a proper resource pool can be selected to satisfy the service SLA requirements, so as to quickly and accurately guide data forwarding. Together with path metrics in the network, a specific service routing table is formulated.</t>
      <t>Since the service routing table is generated additionally, it is completely decoupled from the conventional IP routing table. As shown in Figure 5, for services with requirements for computing resources, the service routing table maps to the IP routing table to complete a forwarding operation. With the service gateway determined, an Interface IP or an SRv6 policy can be indexed. For conventional services which are not sensitive to computing resources, a forwarding operation can be implemented simply in the original way.</t>
      <figure>
        <name>Service Routing Table Maps to IP Routing Table</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
  
      Service Routing Table                 IP Routing Table
+------------+-----------------+    +---------------+--------------+
| Service ID | Service Gateway |    |Prefix(Gateway)|   Next Hop   |
+------------+-----------------+    +---------------+--------------+
| Service  1 | GW1 (Node SID1) |<-->|      GW1      | Interface IP |
+------------+-----------------+    +---------------+--------------+
| Service  2 | GW2 (Node SID2) |    |               | SRv6  Policy |
+------------+-----------------+<-->|      GW2      |  (Endpoint+  |
| Service  3 | GW2 (Node SID2) |    |               |    Color)    |
+------------+-----------------+    +---------------+--------------+
    
                       ]]></artwork>
      </figure>
      <t keepWithPrevious="true"/>
      <t>With the introduction of a distributed database, the service routing procedure is decoupled from traditonal IP routing which enhances the compatibility of different services carried in the network.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Use Case</name>
      <t>As shown in Figure 6, suppose CPU load is a sample attribute and 70% is configured to be a threshold. If the CPU load beyonds 70%, the traffic needs to be steered to another satisfied resource pool .</t>
      <t>The procedure of learning and processing updated computing resource status is described as follows:</t>
      <ul spacing="normal">
        <li>The CPU load of the container or VM where the service instance is located reaches the threshold 70% and the updated status is then written into the database in a key-value model.</li>
        <li>Edge devices in the network domain subscribe the information by watching the prefix of the key-value pair.</li>
        <li>Any variations in the subscribed information can be perceived and further learned by the edge devices.</li>
        <li>Learning the CPU load reaches 70%, the service routing table is updated or regenerated.</li>
      </ul>
      <figure>
        <name>An Example of Database-Based Computing Resource Perception Procedure</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
  
      Network Domain                             Cloud Domain
+-------------------------+                +-----------------------+
|+------------+ +--------+|   +--------+   |+--------+ +----------+|
||Edge Devices| |DB-Agent||   |Database|   ||DB-Agent| |Cloud Side||
|+------------+ +--------+|   +--------+   |+--------+ +----------+|
+-------------------------+                +-----------------------+
        |            |             |<-------------|           |
        |            |             |              |           |
        |            |  watch      | (/Service    |           |
        |            |  (/Service  | Instances/   |           |
        |            |  Instances  | CPU Load 70) |           |
        |            |  prefix/)   |              |           |
        |            |------------>|              |           |
        |            |             |              |           |
        |            |<------------|              |           |
        |            |  notify     |              |           |
        |notify      |  (/Service  |              |           |
        |(/Service   |  Instances  |              |           |
        |Instances/  |  prefix/)   |              |           |
        |SAN ID/     |             |              |           |
        |CPU Load 70)|             |              |           |
        |<-----------|             |              |           |
        |            |             |              |           |
    
                       ]]></artwork>
      </figure>
      <t keepWithPrevious="true"/>
    </section>
    <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>TBA</t>
    </section>
    <section anchor="Acknowledgements" numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>TBA</t>
    </section>
    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>TBA</t>
    </section>
  </middle>
  <!--  *****BACK MATTER ***** -->

    <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="I-D.huang-service-aware-network-framework" target="https://www.ietf.org/archive/id/draft-huang-service-aware-network-framework-00.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.huang-service-aware-network-framework.xml">
        <front>
          <title>Service Aware Network Framework</title>
          <author fullname="Daniel Huang">
            <organization>ZTE Corporation</organization>
          </author>
          <author fullname="Bin Tan">
            <organization>ZTE Corporation</organization>
          </author>
          <date day="24" month="May" year="2022"/>
          <abstract>
            <t>Cloud has been migrating from concentrated center sites to edge nodes with responsive and agile services to the subscribers. This industry-wide trend would be reasonably expected to continue into the future which would enjoy geographically ubiquitous services. Rather than transmitting service data streams to the stable and limited service locations such as centered cloud sites, routing and forwarding network will have to adapt to the emerging scenarios where the service instances would be highly dynamic and distributed, and further more, demand more fine-grained networking policies than the current routing and forwarding scheme unaware of service SLA requirements. This proposal is to demonstrate a framework under which the above-mentioned requirements would be satisfied.</t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-huang-service-aware-network-framework-00"/>
      </reference>
      <reference anchor="I-D.service-identification-header-of-san" target="https://www.ietf.org/archive/id/draft-service-identification-header-of-san-00.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.service-identification-header-of-san.xml">
        <front>
          <title>Service Identification Header of Service Aware Network</title>
          <author fullname="Liwei Ma">
            <organization>ZTE Corporation</organization>
          </author>
          <author fullname="Fenlin Zhou">
            <organization>ZTE Corporation</organization>
          </author>
          <author fullname="Hesong Li">
            <organization>ZTE Corporation</organization>
          </author>
          <date day="18" month="August" year="2022"/>
          <abstract>
            <t>As the cloud and computing migrates to edges further away from the traditional centered cloud, the services residing at the distributed cloud start to be delivered in such a ubiquitous and dynamic way. That it is challenging to the ongoing routing and interconnecting scheme under which host address is the global networking identification. This draft proposes a service identification which is designed to be treated both as a service routable ID and an interface to the service requirements as well as service-associated cloud resources. Service Aware Network header is illustrated and specified.</t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-service-identification-header-of-san-00"/>
      </reference>
    </references>
  </back>
</rfc>
