<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-li-dyncast-architecture-05" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="Dyncast Architecture">Dynamic-Anycast Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-li-dyncast-architecture-05"/>
    <author initials="Y." surname="Li" fullname="Yizhou Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liyizhou@huawei.com</email>
      </address>
    </author>
    <author initials="L." surname="Iannone" fullname="Luigi Iannone">
      <organization>Huawei Technologies</organization>
      <address>
        <email>Luigi.iannone@huawei.com</email>
      </address>
    </author>
    <author initials="D." surname="Trossen" fullname="Dirk Trossen">
      <organization>Huawei Technologies</organization>
      <address>
        <email>dirk.trossen@huawei.com</email>
      </address>
    </author>
    <author initials="P." surname="Liu" fullname="Peng Liu">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liupengyjy@chinamobile.com</email>
      </address>
    </author>
    <author initials="C." surname="Li" fullname="Cheng Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>c.l@huawei.com</email>
      </address>
    </author>
    <date year="2022" month="December" day="26"/>
    <area>Routing area</area>
    <workgroup>rtgwg</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes a proposal for an architecture for the Dynamic-Anycast (Dyncast). It includes an architecture overview, main components that shall exist, and the workflow. An example of workflow is provided, focusing on the load-balance multi-edge based service use-case, where load is distributed in terms of both computing and networking resources through the dynamic anycast architecture.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Edge computing has been expanding from single edge nodes to multiple networked collaborating edge nodes to solve the issues like response time, resource optimization, and network efficiency.</t>
      <t>The current network architecture in edge computing provides relatively static service dispatching, often to the closest edge from an IGP perspective, or to the server with the most computing resources without considering the network status, and even sometimes just based on static configuration.</t>
      <t>Traffic steering that takes into account computing resource metrics seems to be an interesting paradigm that would benefit several use-cases <xref target="I-D.liu-dyncast-ps-usecases"/>. Yet, more investigation is still needed in key areas for this paradigm and, to this end, this document aims at providing an architectural framework, which will enable compute- and network-aware traffic steering decisions in edge computing.</t>
      <t>The Dyncast architecture presents an anycast based service and access model addressing the problematic aspects of existing network layer edge computing service deployment, including the unawareness of computing resource information of service, static edge selection, isolated network and computing metrics and/or slow refresh of status.</t>
      <t>Dyncast assumes that there are multiple equivalent service instances running on different edge nodes, globally providing (from a logical point of view) one single service. A single edge may have limited computing resources available, and different edges likely have different resources available, such as CPU or GPU. The main principle of Dyncast is that multiple edge nodes are interconnected and collaborate with each other to achieve a holistic objective, namely to dispatch service demands taking into account both service instances status as well as network state (e.g., paths length and their congestion). For this, computing resources available to serve a request is one of the top metrics to be considered. At the same time, the quality of the network path to an edge node may vary over time and may hence be another key attribute to be considered for said dispatching of service demands.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <ul spacing="normal">
        <li>Dyncast: As defined in <xref target="I-D.liu-dyncast-ps-usecases"/>, Dynamic Anycast, taking the dynamic nature of computing resource metrics into account to steer an anycast routing decision.</li>
        <li>Service: As defined in <xref target="I-D.liu-dyncast-ps-usecases"/>, a monolithic functionality that is provided by an endpoint according to the specification for said service. A composite service can be built by orchestrating monolithic services.</li>
        <li>Service instance: As defined in <xref target="I-D.liu-dyncast-ps-usecases"/>, running environment (e.g., a node) that makes the functionality of a service available. One service can have several instances running at different network locations.</li>
        <li>D-Router: A node supporting Dyncast functionalities as described in this document. Namely it is able to understand both network-related and service-instances-related metrics, take forwarding decision based upon and manitain instance affinity, i.e., forwards packets belonging to the same service demand to the same instance.</li>
        <li>D-MA: Dyncast Metric Agent (D-MA): A dyncast specific agent able to gather and send metric updates (from both network and instance prespective) but not performing forwarding decisions. May run on a D-Router, but it can be also implementated as a separate module (e.g., a software library) collocated with a service instance.</li>
        <li>D-SID: Dyncast Service ID, an identifier representing a service, which the clients use to access said service. Such identifier identifies all of the instances of the same service, no matter on where they are actually running. D-SID is independent of which service instance serves the service demand. Usually multiple instances provide a (logically) single service, and service demands are dispatched to the different instance through an anycast model, i.e., choosing one instance among all available instances.</li>
        <li>D-BID: Dyncast Binding ID, an address to reach a service instance for a given D-SID. It is usually a unicast IP where service instances are attached. Different service instances provide the same service identified through D-SID but with different Dyncast Binding IDs.</li>
        <li>Service demand: The demand for a specific service and addressed to a specific D-SID.</li>
        <li>Service request: The request for a specific service and addressed to a specific service instance identified with D-BID.</li>
      </ul>
      <section anchor="requirements-language">
        <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"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="architecture-and-concepts">
      <name>Architecture Main Concepts</name>
      <t>Dyncast assumes that there are multiple equivalent service instances running on different edge sites, globally providing one single service which is represented by D-SID. The network will take forwarding decision for the service demand from the client according to both service instances status as well as network state.</t>
      <t>The architecture of Dyncast has two typical modes, distributed or centralized.</t>
      <ul spacing="normal">
        <li>Distributed mode: The resources and status of the different service instances are propagated from the D-Routers connecting the edge sites where the service is deployed to the D-Routers with clients. In addition D-Routers have the network topology and status. The ingress D-Router which receives the service demand from the client decides independently which service instance to access according to the service instances status and network state and maintains instance affinity.</li>
        <li>Centralized mode: The resources and status of the different service instances are reported to the network controller from the D-Routers connecting the edge sites where the service is deployed. At the same time the controller collects the network topology and status. The controller makes routing decisions for each ingress D-Router according to the service instances status and network state and downloads the decisions to all the ingress D-Routers. When the ingress D-Router receives the service demand from the client, it selects which service instance to access according to the decision made by the controller, and maintains the instance affinity subsequently.</li>
      </ul>
      <t>This document mainly introduces the detailed process of the distributed mode, and the centralized mode will be introduced in detail in the future.</t>
      <t>Edge sites (edges for short) are normally the sites where edge computing is performed. Service instances are initiated at different edge sites. Thus, a single service can actually have a significant number of instances running on different edges. A Dyncast Service ID (D-SID) is used to uniquely identify a service (e.g., a matrix computation for face recognition, or a game server). Service instances can be hosted on servers, virtual machines, access routers or gateway in edge data center.</t>
      <t>Close to (one or more) Service instances is the Dyncast Metric Agent (D-MA). This element has the task to gather information about resources and status of the different instances as well as network-related information. Such element may also run in a dyncast-enable router (named D-Router), while other deployment scenarios may lead to this element running separately on edge nodes.</t>
      <t>A D-Router is actually the main element in a Dyncast network, providing the capability to exchange the information about the computing resources information of service instances which have been gathered through D-MAs. A D-Router can also be a service access point for clients. When a service demand arrives, it will be delivered to the most appropriate service instance. A service demand may be the first packet of a data flow rather than an explicit out of band service request. This architectural document does not make any specific assumption on this matter. This documents only assumes that:</t>
      <ul spacing="normal">
        <li>D-Routers are able to identify new service demands. The Dyncast architecture presented in this document allows then to deliver such a packet to the most appropriate service instance according to information received from D-MAs and other D-Routers.</li>
        <li>D-Routers are able to identify packets belonging to an existing service demand. The Dyncast architecture presented in this document allows to deliver these packets always to the same service instance selected at the initial service demand. We term this capability as 'instance affinity'.</li>
      </ul>
      <t>Note: As described above, D-Router can make decision based on per-service-instance computing-aware information. Actually, the D-Router can make the decison based on per-site computing-aware information. In this case, the egress D-Router can send the packet to the specific instance based on local policy, load balancing, etc. This will be described in the future.</t>
      <t>The element introduced above are depicted in <xref target="fig-Dyncast-arch"/>, which shows the proposed Dyncast architecture. In <xref target="fig-Dyncast-arch"/>, the "infrastructure" indicates the general IP infrastructure that does not necessarily need to support Dyncats, i.e., not all routers of the infrastructure need to be D-Routers.</t>
      <figure anchor="fig-Dyncast-arch">
        <name>Dyncast Architecture.</name>
        <artwork><![CDATA[
    edge site 1          edge site 2            edge site 3

     +------------+                          +------------+
   +------------+ |                        +------------+ | 
   |  service   | |                        |  service   | |
   |  instance  |-+                        |  instance  |-+
   +------------+                          +------------+
         |                                        |
    +----------+                                  |
    |   D-MA   |                                  |
    +----------+                             +----------+
         |           +-----------------+     |   D-MA   |
    +----------+     |                 |     +----------+
    |D-Router 1| ----|  Infrastructure |---- |D-Router 3|
    +----------+     |                 |     +----------+
         |           +-----------------+          |
         |                    |                   |
         |                    |                   |
         |               +----------+             |
         |               |D-Router 2|             |
         |               +----------+             |
         |                    |                   |
         |                    |                   |
      +-----+              +------+           +------+
    +------+|            +------+ |         +------+ |
    |client|+            |client|-+         |client|-+
    +------+             +------+           +------+
]]></artwork>
      </figure>
      <t>The distributed mode has two sub-modes, address translation mode or overlay mode.</t>
      <section anchor="dyncast-address-translation-mode">
        <name>Dyncast Address Translation Mode</name>
        <t>In this mode, ingress D-router acts like a NAT device. Each service instance has a unicast address D-BID. The relationship between the D-BID and D-SID along with the computing metric is transmitted to the ingress D-router. When ingress D-router receives the service demand for a D-SID, it translates the D-SID to D-BID so the demand will arrive at the approporiate instance. When ingress D-router receives the service response from the instance, it translates the D-BID back to D-SID.</t>
        <t><xref target="fig-Dyncast-example-NAT"/> shows an example of Dyncast deployment of address translation mode, with 2 service instantiated twice (2 instances) on two different edges, namely edge site 2 and 3. Those service instances utilize different D-BIDs to serve service demands. D-Router 1 doesn't connect the edge site directly and needn't collect the metric updates by D-MA. But it has client to access and need to take forwarding decision for the client. D-Router 2 gets metric updates by D-MA which runs on it. Edge site 2 has client present, so D-Router 2 need to take forwarding decision. D-Router 3 gets metric updates from D-MA which is a separate software module on edge computing platform in edge site 3. No client is present at edge site 3, so D-Router 3 doesn't need take forwarding decision.</t>
        <figure anchor="fig-Dyncast-example-NAT">
          <name>Dyncast deployment example(Address Translation mode).</name>
          <artwork><![CDATA[
 D-SID: Dyncast Service ID
 D-BID: Dyncast Binding ID

         Service/Metrics Information
         (D-SID 1, D-BID 21, <metrics>)
         (D-SID 2, D-BID 22, <metrics>)
        <----------------->

                              +-------+
                            +-------+ |           D-SID 1
                            |Clients|-+         +--------+ 
                            +-------+        +--|D-BID 21| instance 1
                                |            |  +--------+
                          +----------+----+  |              Edge 2 
                          |D-Router 2|D-MA|--|    D-SID 2
                          +----------+----+  |  +--------+ 
                                |            +--|D-BID 22| instance 2
                        +----------------+      +--------+
                        |                |
                        |                |
+------+  +----------+  |                |
|Client|--|D-Router 1|--| Infrastructure |   
+------+  +----------+  |                |
                        |                |       D-SID 2
                        |                |      +--------+          
                        +----------------+  +---|D-BID 32| instance 3
                                |           |   +--------+
                          +----------+  +------+            Edge 3  
                          |D-Router 3| -| D-MA |  
                          +----------+  +------+  D-SID 1 
                                            |   +--------+ 
                                            +---|D-BID 31| instance 4
                                                +--------+

        <---------------------------------->
           (D-SID 2, D-BID 32, <metrics>)
           (D-SID 1, D-BID 31, <metrics>)
            Service/Metrics Information
]]></artwork>
        </figure>
        <t>In <xref target="fig-Dyncast-example-NAT"/>, the Dyncast Service ID (D-SID) follows an anycast semantic, such as provided through an IP anycast address. It is used to access a specific service no matter which service instance eventually handles the service demand of the client. Clients or other entities which want to access a service need to know about its D-SID in advance. It can be achieved in different ways, for example, using a special range of addresses associated to a certain service or coding of anycast IP address as D-SID, or using DNS.</t>
        <t>The Dyncast Binding ID (D-BID) is a unicast IP address. It is usually the interface IP address through to reach a specific service instance. Mapping and binding a D-SID to a D-BID is dynamic and depends on the computing and network status at the time the service demand first arrives (see <xref target="metric-update"/> for the reporting of such status). To ensure instance affinity, D-Routers are requested to remember the instance that has been selected (e.g., by storing the mapping) for delivering all packets to the same instance (see <xref target="demand-dispatch"/> for discussing this aspect).</t>
        <t>To reach D-BID, an overlay tunnel may be used if the D-BID is within a VPN. For instance, in <xref target="fig-Dyncast-example-NAT"/>, D-Router 2 needs to encapsulate the packet into a tunnel towards to D-Router 3. Such overlay tunnel approach works as usual, so this document does not specify them in great details.</t>
      </section>
      <section anchor="dyncast-overlay-mode">
        <name>Dyncast Overlay Mode</name>
        <t>In this mode, D-router acts like a PE device providing VPN service. Each service instance shares an anycast address D-SID. The route to D-SID along with its computing metric is an overlay VPN route. When the ingress D-router receives the service demand for a D-SID, it encapsulate the service demand packets into the VPN tunnel to the approporiate egress D-router. The egress D-router will route the service demand packets to the associated instance.</t>
        <t><xref target="fig-Dyncast-example-overlay"/> shows an example of Dyncast deployment of overlay mode, with 2 service instantiated twice (2 instances) on two different edges, namely edge site 2 and 3. D-Router 1 doesn't connect the edge site directly and needn't collect the metric updates by D-MA. But it has client to access and need to take forwarding decision for the client. D-Router 2 gets metric updates by D-MA which runs on it. Edge site 2 has client present, so D-Router 2 need to take forwarding decision. D-Router 3 gets metric updates from D-MA which is a separate software module on edge computing platform in edge site 3. No client is present at edge site 3, so D-Router 3 doesn't need take forwarding decision.</t>
        <figure anchor="fig-Dyncast-example-overlay">
          <name>Dyncast deployment example(Overlay mode).</name>
          <artwork><![CDATA[
 D-SID: Dyncast Service ID
                                                       +-------+
                                                     +-------+ |           
                                                     |Clients|-+         +-------+ 
                                                     +-------+        +--|D-SID 1| instance 1
                                                         |            |  +-------+
                                                   +----------+----+  |              Edge 2 
                                                   |D-Router 2|D-MA|--|    
         Dyncast Forwarding Table                  +----------+----+  |  +-------+ 
D-SID 1, <metrics>, Dyncast VPN, to D-router 2           |            +--|D-SID 2| instance 2
D-SID 2, <metrics>, Dyncast VPN, to D-router 2   +----------------+      +-------+
D-SID 1, <metrics>, Dyncast VPN, to D-router 3   |                |
D-SID 2, <metrics>, Dyncast VPN, to D-router 3   |                |
+------+     +----------+                        |                |
|Client|-----|D-Router 1|------------------------| Infrastructure |   
+------+     +----------+                        |                |
                                                 |                |      
                                                 |                |                +-------+          
                                                 +----------------+            +---|D-SID 2| instance 3
                                                         |                     |   +-------+
                                                   +----------+            +------+            Edge 3  
                                                   |D-Router 3|------------| D-MA |  
                                                   +----------+            +------+  
                                                                           |   +-------+ 
                                                                           +---|D-SID 1| instance 4
                                                                               +-------+
                   <------------------------------------  <---------------------
                     (D-SID 1, Dyncast VPN, <metrics>)      (D-SID 1, <metrics>)
                     (D-SID 2, Dyncast VPN, <metrics>)      (D-SID 2, <metrics>)
                     Service/Metrics Information           Service/Metrics Information
]]></artwork>
        </figure>
        <t>In <xref target="fig-Dyncast-example-overlay"/>, there is no translation between D-BID and D-SID. When receiving a service demand for a D-SID, the ingress router will redirect the serivce demand to the dyncast VPN and look up the dyncast forwarding table for an approporiate VPN tunnel. Mapping and binding of the D-SID to which VPN tunnel is dynamic depending on the computing and network status at the time the service demand arrives (see <xref target="metric-update"/> for the reporting of such status). To ensure instance affinity, D-Routers are requested to remember the VPN tunnel that has been selected for delivering all packets to the same instance using the same VPN tunnel(see <xref target="demand-dispatch"/> for discussing this aspect).</t>
      </section>
    </section>
    <section anchor="dyncast-architecture-workflow">
      <name>Dyncast Architecture Workflow</name>
      <t>The following subsections provide an overview of how the architectural elements introduced in the previous section do work together.</t>
      <section anchor="metric-update">
        <name>Service Notification/Metrics Update</name>
        <t>Computing resource information of service instance is key information in Dyncast. Some of them may be relatively static like CPU/GPU capacity, and some may be very dynamic, for example, CPU/GPU utilization, number of sessions associated, number of queuing requests. Changes in service-related relevant information has to be collected by D-MA associated to each service instance. Various ways can be used, for example, via routing protocols like EBGP or via an API of a management system. Conceptually a D-Router collects information coming from D-MA and keeps track of the IDs and computing metrics of all service instances. The rate for metrics update depends on the specific algorithm and is out of scope of this document. The update will be sync up only among related D-routers, and will not affect other routers/devices in the network. When a service instance is instantiated/terminated the service information has to be updated/deleteted as well. An update can also be triggered by a change in relevant metrics (e.g., an instance becomes overloaded).</t>
        <t>There are different ways to represent the computing metrics. A single digitalized value calculated from weighted attributes like CPU/GPU consumption and/or number of sessions associated may be used for simplicity reasons. However, it may not accurately reflect the computing resources of interest. Multi-dimensional values give finer information. This architectural document does not make any specific assumption about metrics and how to encode or even use them. As stated in <xref target="architecture-and-concepts"/>, the only assumption is that a D-Router is able to use such metrics so to take a decision when a service demand arrives in order to map the demand onto a suitable service request.</t>
        <t>As explained in the problem statement document <xref target="I-D.liu-dyncast-ps-usecases"/>, computing metrics may change very frequently, when and how frequent such information should be exchanged among Dyncats elements should be determined also in accordance with the distribution protocol used for such purpose. A spectrum of approaches can be employed,such as interval based updates, threshold triggered updates, policy based updates, etc.</t>
        <section anchor="address-translation-mode">
          <name>Address Translation Mode</name>
          <t><xref target="fig-Dyncast-example-NAT"/> shows an example of information shared by the Dyncast elements in address translation mode. The D-MA which is deployed with D-Router2 shares binding information concerning the two instances of the two services running on edge 2 (upper right hand side of the figure). These information is:</t>
          <ul spacing="normal">
            <li>(D-SID 1, D-BID 21, metrics)</li>
            <li>(D-SID 2, D-BID 22, metrics)</li>
          </ul>
          <t>The D-MA which is deployed as a separate module on edge 3 (lower right hand side of the figure) shares binding information concerning the two instances of the two services running on edge 3. These information is:</t>
          <ul spacing="normal">
            <li>(D-SID 1, D-BID 31, metrics)</li>
            <li>(D-SID 2, D-BID 32, metrics)</li>
          </ul>
          <t>Dyncast nodes share among themselves the service information including the associated computing metrics for the service instances attached to them. As a network node, a D-Router can also monitor the network cost or metrics (e.g., congestion) to reach other D-Routers. This is the focus of Dyncast control plane. Different mechanisms can be used to share such information, for instance distributd routing protocol, or a controller based mechanism. The specific mechanism is beyond the scope of this document. The architecture assumes that the Dyncast elements are able to share relevant information.</t>
          <t>If, for instance, the client on the left hand side of <xref target="fig-Dyncast-example-NAT"/> sends a service demand for D-SID1, D-Router1 has the knowledge of the status of the service instance on both edge 2 and edge 3 and can make a decision toward which D-BID to forward the demand.</t>
          <t>It should be note such metric updates are separate procedures from the reachability distribution. Reachability of binding IP BID is not covered by this section. Conventional overlay tunnel should be used to reach the service instance binding IP in normal way.</t>
        </section>
        <section anchor="overlay-mode">
          <name>Overlay Mode</name>
          <t><xref target="fig-Dyncast-example-overlay"/> shows an example of information shared by the Dyncast elements in overlay mode. The D-MA which is deployed with D-Router2 shares computing metric concerning the two instances of the two services running on edge 2 (upper right hand side of the figure). These information is:</t>
          <ul spacing="normal">
            <li>(D-SID 1, metrics)</li>
            <li>(D-SID 2, metrics)</li>
          </ul>
          <t>The D-MA which is deployed as a separate module on edge 3 (lower right hand side of the figure) shares binding information concerning the two instances of the two services running on edge 3. These information is:</t>
          <ul spacing="normal">
            <li>(D-SID 1, metrics)</li>
            <li>(D-SID 2, metrics)</li>
          </ul>
          <t>Both D-Router2 and D-Router3 add the metric in the VPN route and advertise them to ingress router such as D-Router1. As a network node, a D-Router can also monitor the network cost or metrics (e.g., congestion) to reach other D-Routers. This is the focus of Dyncast control plane. Different mechanisms can be used to share such information, for instance BGP (<xref target="RFC4760"/>), or a controller based mechanism. The specific mechanism is beyond the scope of this document. The architecture assumes that the Dyncast elements are able to share relevant information.</t>
          <t>If, for instance, the client on the left hand side of <xref target="fig-Dyncast-example-overlay"/> sends a service demand for D-SID1, D-Router1 has the knowledge of the status of the service instance on both edge 2 and edge 3 and can make a decision using which VPN tunnel to forward the demand.</t>
        </section>
      </section>
      <section anchor="demand-dispatch">
        <name>Service Demand Dispatch and Instance Affinity</name>
        <t>This is the focus of the Dyncast data plane. When a new flow (representing a service demand) arrives at a Dyncast ingress, such ingress node selects the most appropriate egress according to the network status and the computing resource of the attached service instances.</t>
        <t>Instance affinity is one of the key features that Dyncast should support. It means that packets from the same 'flow' for a service should always be sent to the same egress to be processed by the same service instance. The affinity is determined at the time of newly formulated service demand.</t>
        <t>It is worth noting that different services may have different notions of what constitutes a 'flow' and may thus identify a flow differently. Typically a flow is identified by the 5-tuple value. However, for instance, an RTP video streaming may use different port numbers for video and audio, and it may be identified as two flows if 5-tuple flow identifier is used. However they certainly should be treated by the same service instance. Therefore a 3-tuple based flow identifier is more suitable for this case. Hence, it is desired to provide certain level of flexibility in identifying flows, or from a more general perspective, in identifying the set of packets for which to apply instance affinity. More importantly, the means for identifying a flow for the purpose of ensuring instance affinity must be application-independent to avoid the need for service-specific instance affinity methods.</t>
        <t>Specifically, Instance affinity information should be configurable on a per-service basis. For each service, the information can include the flow/packets identification type and means, affinity timeout value, and etc. For instance, the affinity configuration can indicate what are the values, e.g., 5-tuple or 3-tuple, to be used as the flow identifier.</t>
        <t>When the most appropriate egress and service instance is determined when a new flow for a service demand arrives, a binding table should save this association between new service demand and service instance selection. The information in such binding table may include flow/packets identification, affinity timeout value, etc. The subsequent packets matching the entry are forwarded based on the table. <xref target="fig-binding-table-nat"/> and <xref target="fig-binding-table-overlay"/> shows a possible example of flow binding table at the ingress D-Router when running in address translation mode and overlay mode, respectively.</t>
        <figure anchor="fig-binding-table-nat">
          <name>Example of what a binding table can look like in address translation mode.</name>
          <artwork><![CDATA[
+-----------------------------------------+-----------------+--------+
|       Flow/Packets Identifier           |  D-BID egress   |        |
+------+--------+---------+--------+------+   in address    | timeout|
|src_IP| dst_IP |src_port |dst_port|proto |translation mode |        |
+------+--------+---------+--------+------+-----------------+--------+
| X    | D-SID 2|  50000  |  8888  | tcp  |    D-BID  32    |  xxx   |
+------+--------+---------+--------+------+-----------------+--------+
| Y    | D-SID 2|  60000  |  8888  | tcp  |    D-BID  12    |  xxx   |
+------+--------+---------+--------+------+-----------------+--------+
]]></artwork>
        </figure>
        <figure anchor="fig-binding-table-overlay">
          <name>Example of what a binding table can look like in overlay mode.</name>
          <artwork><![CDATA[
+-----------------------------------------+---------------+--------+
|       Flow/Packets Identifier           |   Egress VPN  |        |
+------+--------+---------+--------+------|   Tunnel in   | timeout|
|src_IP| dst_IP |src_port |dst_port|proto |  overlay mode |        |
+------+--------+---------+--------+------+---------------+--------+
| X    | D-SID 2|  50000  |  8888  | tcp  |  VPN Tunnel1  |  xxx   |
+------+--------+---------+--------+------+---------------+--------+
| Y    | D-SID 2|  60000  |  8888  | tcp  |  VPN Tunnel2  |  xxx   |
+------+--------+---------+--------+------+---------------+--------+
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="dyncast-control-plane-vs-data-plane-operations">
      <name>Dyncast Control-plane vs Data-plane operations</name>
      <t>In summary, Dyncast consists of the following Control-plane and Data-plane operations:</t>
      <section anchor="dyncast-address-translation-mode-1">
        <name>Dyncast Address Translation Mode:</name>
        <ul spacing="normal">
          <li>
            <t>Dyncast Control Plane:
            </t>
            <ul spacing="normal">
              <li>Dyncast Service ID Notification: the D-SID, an anycast IP address, should be available and known. This can be achieved in different ways. For example, use a special range or coding of anycast IP address as service IDs or using the DNS.</li>
              <li>Dyncast Binding ID Notification: the mapping of (D-SID, D-BID), i.e., service ID and the binding address, should be notified to the D-Routers when the service instance starts (or stops). Various ways can be used, for example, EBGP or management system notification.</li>
              <li>Metrics Notification: D-MA have to be able to share the metrics for a service and its binding ID so that D-Routers can select the "best" instance for each new service demand.</li>
            </ul>
          </li>
          <li>
            <t>Dyncast Data Plane:
            </t>
            <ul spacing="normal">
              <li>New service demand: an ingress D-Router selects the most appropriate service instance in terms of the network status and the computing resources of the instances of the requested service.</li>
              <li>Instance Affinity: Make sure the subsequent packets of an existing service demand are always delivered to the same service instance so that they can be served by the same service instance.</li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="dyncast-overlay-mode-1">
        <name>Dyncast Overlay Mode:</name>
        <ul spacing="normal">
          <li>
            <t>Dyncast Control Plane:
            </t>
            <ul spacing="normal">
              <li>Dyncast Service ID Notification: the D-SID, an anycast IP address, should be available and known. This can be achieved in different ways. For example, use a special range or coding of anycast IP address as service IDs or using the DNS.</li>
              <li>Metrics Notification: D-MA have to be able to share the metrics for a D-SID so that D-Routers can select the "best" instance for each new service demand. The metrics notification is sent along the VPN route of D-SID.</li>
            </ul>
          </li>
          <li>
            <t>Dyncast Data Plane:
            </t>
            <ul spacing="normal">
              <li>New service demand: an ingress D-Router selects the most appropriate egress in terms of the network status and the computing resources of the instances of the requested service.</li>
              <li>Instance Affinity: Make sure the subsequent packets of an existing service demand are always delivered to the same service instance so that they can be served by the same service instance.</li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="summary">
      <name>Summary</name>
      <t>This draft introduces a Dyncast architecture that enables the service demand to be sent to an optimal service instance. It can dynamically adapt to the computing resources consumption and network status change. Dyncast is a network based architecture that supports a large number of edges and is independent of the applications or services hosted on the edge.</t>
      <t>More discussion and input on control plane and data plane approach are welcome.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The computing resource information changes over time very frequent with the creation and termination of service instance. When such information is carried in routing protocol, too many updates can make the network fluctuate. Control plane approach should take it into considerations.</t>
      <t>More thorough security analysis to be provided in future revisions.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not make any request to IANA.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <ul spacing="normal">
        <li>Huijuan Yao, yaohuijuan@chinamobile.com, China Mobile</li>
        <li>Xia Chen, jescia.chenxia@huawei.com, Huawei</li>
        <li>Hang Shi, shihang9@huawei.com, Huawei</li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC4760" target="https://www.rfc-editor.org/info/rfc4760" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4760.xml">
          <front>
            <title>Multiprotocol Extensions for BGP-4</title>
            <author fullname="T. Bates" initials="T." surname="Bates"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document defines extensions to BGP-4 to enable it to carry routing information for multiple Network Layer protocols (e.g., IPv6, IPX, L3VPN, etc.).  The extensions are backward compatible - a router that supports the extensions can interoperate with a router that doesn't support the extensions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4760"/>
          <seriesInfo name="DOI" value="10.17487/RFC4760"/>
        </reference>
        <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.liu-dyncast-ps-usecases" target="https://www.ietf.org/archive/id/draft-liu-dyncast-ps-usecases-04.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.liu-dyncast-ps-usecases.xml">
          <front>
            <title>Dynamic-Anycast (Dyncast) Problem Statement and Use Cases</title>
            <author fullname="Peng Liu" initials="P." surname="Liu">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Philip Eardley" initials="P." surname="Eardley">
              <organization>BT</organization>
            </author>
            <author fullname="Dirk Trossen" initials="D." surname="Trossen">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Cheng Li" initials="C." surname="Li">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Yizhou Li" initials="Y." surname="Li">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="8" month="July" year="2022"/>
            <abstract>
              <t>Many service providers have been exploring distributed computing techniques to achieve better service response time and optimized energy consumption. Such techniques rely upon the distribution of computing services and capabilities over many locations in the network, such as its edge, the metro region, virtualized central office, and other locations. In such a distributed computing environment, providing services by utilizing computing resources hosted in various computing facilities (e.g., edges) is being considered, e.g., for computationally intensive and delay sensitive services. Ideally, services should be computationally balanced using service-specific metrics instead of simply dispatching the service requests in a static way or optimizing solely connectivity metrics. For example, systematically directing end user-originated service requests to the geographically closest edge or some small computing units may lead to an unbalanced usage of computing resources, which may then degrade both the user experience and the overall service performance. We have named this kind of network with dynamic sharing of edge compute resources "Computing-Aware Networking" (CAN). This document provides the problem statement and the typical scenarios of CAN, which is to provide the service equivalency by steering traffic dynamically to the appropriate service instance based on the basic edge computing deployment.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-liu-dyncast-ps-usecases-04"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+09aW/bSJbfA+Q/1CYfOkYkdcfuuYzdQbvtdLeBHN7EmZnG
YrGgqJJUHYrUsEg7mjjz2/dddZGUbDmZwQDTAoJYVB2vXr16dz2Ox+OHDxrT
FPpYnW3KbGXy8Um5yTPbqJM6X5pG501b64cPsum01lfUauDXWZVDZxhkVmfz
ZlyY8YzbjbOo3fib30DTrNHHDx/k8N+iqjfHypTz6uED205XxlpTlZebNQx0
/vzyh4cPHj4w6/pYNXVrm8NvvvnDN4cASa2zY/WmahtTLhR+e/jguqrfL+qq
XR+rullcLx4+eK838HAGA5WNrkvdjM8QNBwyr2bQ81i1dpzZ3JiHD9bmWP1P
U+UjZau6qfXcwl+bFf7xv9gja5tlVQPUCtClAGJ7rH6eqBcGv/HCfzZ/W1at
PKrqRVaav2UNLOdY/dRm19qoS50vy6qoFkZbbKRXmSmOVWE21PW7JTWb5NUK
f82rtmwQPadLU2bJzC8m6jwry6rUYfoXrVmY+PE+IFDnieHOKRxh1rOJuqwr
a3UZZj0z9fv46T6TzqDvpOG+2+a8QBy3Yb4LDTsuT9K5CEvqZTU1hU6Q266h
z+aXzXc5tlhRgzvg+DTd3dMlz7zvIvNJccu+PnxQVvUKBrvCU6HUmx9Ov/3d
b785JtqHkxH/dj4+m8CK/Nla23FrNfypLbWfTCb433g8VtnUNnWWE71fLo1V
cELblS4bNdM2r81UW5WpdV2tK5sVCuZRWaniw0rPmqXu8YUnwgIOgAwbwFZe
tDMcrdO9utL1ldHXIwWoKGHdqzVQV9lYGDRrlF1mRaH0B2ObEfSd0VR4jOdF
dT1RJyX8lq3WBQw0988VLARgvjIzPRsBgHlrkQdUJfUuqmw2nmZFVuZardqi
MWM9W2g1BQTNlEVw4AfA2BhRNlLXS11zLxx3BpAAXtoG2gK8wDRWFueeVs2S
oBd+A6ACN0GI8GutbdXWucZVAf9ZLAmSGaMMGjPKYsTQFvEmrcxshuT68MFj
ZFN1NWtzpCp88hwhD9MuM6umWiNW1gACPprX1Urh+gFHtM6ywn1oKl47ok4A
hRXlVVFk06rOaLS0ua2KK01wAwNu4Vlh3mtcGWyYhR/MCpDlFqqqNTwQ8h/F
6FB6Pje50WW+mTDZwQLaukaic00SCgEs63SVsrcWZiuI7IuNsg38lfvtg21a
Zw0e5sUItqcBlMASEPi8qOAgNDwmIQdI8vzHC7XWtV3DnDAedKldexxR1+ra
NLxpqwo6B1jCzmILkDbwW2kBuhp/xQ5uUQhhaxkX+goAstVKI9as+gXkltAf
EKksBcaZm0VbEwoZVSCa5rjIRrvh4Yg02XsYwpQAb5YT3xgAT8FUtcktLEev
aDunGhduUOwBOgitWZ3NzGLFw15XbTGDVqWeGziHAHENHMAdC6s+ftzBZz59
mqifNRzZVUU7eIVTLGgleIjgC5zqUusZnyKQwiShrXATPL8OGEDXiPcCnmr6
kjCqzMB6AF4mCj57MQEh26qBO+Me4GE2+RK2CplKmU0LR1Z6HNPoOLsGcECf
6OB7pnODuoftE6WnZaf5JDS8BhwTU0PY5LSn/AZnh+3T1gLOZrpQ2WwGnayj
IlgeQLsiysiITontEGfENo7KimwD1No5MP5U6HVRbRBtI+HIbvi2pCWXOD8M
O0BAXsrAFkILGXLkqJVmtLrQOZ94A+wiQybpz3Q5i4Z15AhPv4Ytt8i1QY+C
2ZY0Op0VwqnHJzCdlRax0BBPxj3yTEz/tTVXWYEk4ZYLIrpBLg+Moi1LEQEz
M59r4jaBvY3UoqhAJAAfCWT0hJmDQmmdAxWtKzgsCByKqwMYSju2KvOBOEoY
7SrbAEMGnlkAJ2z0bJBrZFegASAhMmNIoWMeW8gw4bfB7rYFyoYjdHrxDtnX
jxfvQBVDhoVydQ30mxuRkw6lRrAZcBgYfkbnFpgDsKESNhXA5x10AkIzS9QZ
zFrhfihiQEsDnAKwtqwKpMxcVdNfHFNFJQkWA+0ce44ocwXDW2RmiJ+Em5Fo
7e8p0wiu+FrDcYb/Y06r1RM9WUxGwEiaJeARFDMYRTQIUyN3XSBTqkpQUH4Q
rjPavUUkBVEcwPpqoDfNOERKAKziMWqqtSdt5rFOGugZkEfDEgXQIOISv/61
zQrTbNwQbhEIN6G0DNtCJHWV1RtSm2gMWhJRmkZ9hrg6bwcx1UaUlR40xGlt
ZmaxqIwOttuRCesdl6DnGNJcN6SWOBo6VifAi0FElMzJb5EKI6cmKlETR27H
Y32ozFg1HORDDr0JieDGIJOO+Wstpp9j2hME+y2vbm+wM+DKsHygeIBv3pbE
5Xjf6AhFGqeabmjTyhlzDISxZkYrGgVwbwNyhXmp34eIi5AWbIFn+N3IYUTY
v2lrigYnqEC6aNTdmZsG2KSDjVfrD83ey3Z8U5dXpq5KErhyrjKiyAPhIKSD
4OJS3MAWZkHEuXM0Ua/LdGnE35yO0WfbMENgfl7SVYxBXurZGE19XcMS+ajY
dr0GKx27O34Xw2Y0sQ5n5rAyHysWE/WK2ZWh3XXnvy3h+CB8M+ZLTmMgVVSY
pKxs7BfifxXiJaon0wmE7iwmUtEKWtCp5WSXpkEG7sZSqJLAsw2I2ImejNwg
qDHl73WD+n8BvC2mN+Q36bFOfnJDCx5fngT3zUuCV50saOPxtwNEsFCLp2SV
UQOHI1D0lnQWERWlWzUsCp06VgRrjD1q6leIypIo4gdA8bDjVYPaOeofZNH0
0WYn6iXwQKAXFPGZp4YR9YcdlPOTFbZSBu1F3GLeMEskivpmg9r9rC10oHEL
tgPpgoWZ1sB4D0gCIuVBVxKAWU80CR7fnp8FRLqTeH42IrV7BtMD5gBLtRbl
kAg96FWsqbLFYkh3bK1mGUtaYsoz3qLwj0b1f8LqQDiKbAknSx7EpAHyGWxC
kBjQHZDIZi80ItUcZm1aUpDkTE54hXg0DByJNeyzZvWIAe8ihQWn9SZVoMWJ
emd5aK+HBDiFqQJinogeVsAepHrXKD50XpNAoJ1o057gAxvxgDmLPBIdpIG7
A5Yvq0r8B9FyMuC5C8JtUA882EIB38cU8L1he1woQNR7hKsmHapPR+xuUQuD
xiJhm10pSAmMsAzYkaHRzy9kw/p6Eu1e02SIBtg1j4B+S4fsHtPw1DTz2OLd
x9NFpyDgtb/eVBbx/hyTairMiNfpmUliEjGaeAOjNoyOeFxRyHhgp53dY+Te
LkSLp6XSvrJa9Fi9QbOjJm5i1YusXLTACp0piBoYepetevTy3dvLRyP+X716
TX+/ef7f787fPD/Dv9/+dPLihf/DtXj70+t3L87CX6Hn6euXL5+/OuPO8FR1
Hr08+fkRn4tHry8uz1+/OnnxqCfiiDRYMSRVHxiRcMRELH5/eqGefQvKwn+8
+eH08NmzP3z6JF9+/+x338IXoDzx8VQlUCV/Zc6xXuusxkHwpOTZGoRZgT4Q
4F/L6hoEvxZX1+MkVADcHPqcVoD/NSD24+MkPgAzjXP57dM/wUZETWzYRuwb
gcL+jA2MnVVCOcCXkYpPboitmoBzrHYkNwnPIBZS9fJ+ppL3XaSe2WAoolsR
2qtmsyZTeMVGc+wLBWBzAAf0N/M34DNiJEQNsI87nN6yQr7NsIlAmu1gTxk5
Uqp1tiDp6xHhhL1VYqs6eyJsXpBmYVwr7pAgHMJAdNBF7gLTJXZtSF0PbUhn
jS02MP7IQIqWxfsN8BCvd32FRmqdazMsE3u7jFQx04mspZM2KGqDktC3PbbS
RuShZfuZ1U9gDPDP9vVPYr6nYcu/0AbDqQGtPeyJgwm2tqlB9QLsfbmN75vk
jPMwF2p75Gu700ZHHdki6tqg7OAked8jis/dqxnwU4xSMKxhRqQG5DMDhAhg
/3mpy8Hf9iHPkSIXMWNqf6L0LG+VgfYx3XQ2YdQhxViT9eQI9t7UotTHgzHp
x7OwOxpzEj/RDkswZAHUBnwlF98nU2nKuELsKe9QPDNxlqA8MslMHpglLhrF
PqTzPJDmE3bxkQNgCUR/QAeA4nwoZQjtEQ13fLrocWCbCOm4a+k7Bx4wLbZy
mkGhhmRLMYmuFEN7yav8xOmwyaIkvwUa4e1qinbC/C4C1KJPo28JoUEJMvGA
NVo+8qDPwh7iRrHWtYn0Ym+UgZFSmw+Ci+BFmWekBubVojTshGb92Wmyuj4Y
QpSYhsvKNhJ/obaAlStTIwZgPvSOocQTCq6F7cD4KIuus40PCICJmxGR6Jr2
+xTDTbiyJ+QmrCkicjAAhrEujLrN8sbNwhgIG68slNHnmNn3kdUd++mzKQak
7saOI8rpqQnefxENLjangwZdkGRdow2O+p5zEowlzsI4U0/QCTzzXOaADF10
SxPwIUChLCAxq01laehCZ7MQBZI5HcE56x3Ipoq8pey7PAkcDd04jqYb5xl3
gxHMDvuy7lGk6tHhz9bZ1LDXr1L6Q74EjV9ioj20MxPru5OHAykR/pmB0qGj
WC5vbGJ7vTzhM+VWRscVsT/VscONqZXdkHhCvEZDXD/rcvWsrpHhEzd3bA0M
YXhWB4FM8U/Q60ERq5G39N0fGAZJB8YdnDKe5qaG/uyrYvcgnRgK29dMwaC9
l+RB/bAuTA6wIDYxxB6b+WLhyZlI430hiaECdKL3CKUxWveRxwpNhTVvgphF
7PuQEd0Ylm2a2LI4FuXWax9kYYvvy/OtUl/3fOnqtgDhgB8ShXd1TUedYtiy
IRLucZi86+akwjcmRRH3ItuJxNikoz0JGsMdlj7oiaQNlWBl1wH0OWgJGAFA
gdW6ybMC2LId9IFGPqlCQluNHGKUl0UPvj9rSvRgCCImABzyq54m8hWxnVdV
49ztzpQGtoBRsOTQEmF2nL/wB0j2cdeLHJiJhKcTZnwijG2UaMZhDq9n9abB
MMPOoc9Lt3ArISvdURVxFvL0UqQ6oUh/4Pwy/OzoRsWwKhxyAJsSbDgth5I2
dJPLUQysKPHVJ2oVUlDg5F4TI5SzK1CD6dq4sMfcLMZnUeohxjpEb13KYZOs
J5RVA5RJWBkeB/s+AgTW8LBuqTW6XmYY8BG1E4Q6RTrOL1TakD0Xnm2BTQN4
BilYbChbguJcHNdgqBrrvJTYHNV8r5o4j28yvBtkqpMT/fDB3//+d0wdU0E3
VM+U/4SHh0oNPT7CMejZ03H0eaq2ftJ21LnT9eZuXaEd9Ybm7tjil629u+1c
Z0+f6mY73N12Q3Dvs2Q/6t0+DGw80I7pOp1wEuTqd5tv35me3r6yZPnRkDFg
W2btA3yzZdYbz5Oe3Sh8Dg3P0zNwg4+jhkefP+ud1xrjdsscWx5+8U5bt3ZX
p4C1w5s7d7rXTFsffl6np0O0/LQPnHuUkMbTm8FeNwOPhBpZ4b5J5nMPo/nC
o3S+u0NJ/PvjsXrclUiK0vb/69FQQv7k0ScnO7sOD+/yte10LO5eH7Kqs9IW
rDVSW7AsMB+lAC0fv0vqKsVH/LTS9zLq+xLaYjOnX7CjJfihaucXayTXNFOv
Ti5BknPI83k25GZaUjzXhcUcyByzEeckT2+XZg1ysLnW4gCjNqTycmwrQ+U1
5H12c9fIYMfVrEwT+Su74Iut1VvVTu8a+S0ICrLFHMKlNYMH8zHE1jnRqC8p
S2zIOa2W7YGKDYJgpe0Bl0/y9X4/N8wwfAjWFNRABvKthMtSdUnytsewpZ8+
idqVJencjnYipwAajFuocMRbddghCfF/NdfkQToMZvYB2X3XVddX5dPUYqUH
MXuE9IPOnL7FDnSBHsE4Coo4sCFhrGcJBjlF6l75VeOc2KkHGy9AwMNiI15f
PeOm5JZmmy/NrqBQ08uTifqeMx/wQEgQIXLBylhEtbcFoLh3BPIhKLBwJocn
dsGNtkTTGSCAkxphMgJHjDu8TROPfRtcESBHg4B4AzbE4qIMD5/RIakeVT+9
HKgKzR/v02MVd6JeVQ50Svci6PGQRY3SxRz5veVFbVtR0MC3po3Qb1sSCrzy
jR/p8vVLyZM7D6Zc1Ipdr+rZSE7rIfz1n5Kd9MeDfsND3/BwuOF/9jSePyZg
DX6cZvB0d0PfLJHtsoLdXW9O2eUVS1uvjzxVd503PLhx+LoJMucWGAiOzpcA
w66+seYkgHS0GzpahzvXEetseCpuSCl2+Dvcf/4746+38Ah/hxH+dsDQU6Sf
dp7vwF9PEbzZr21QuFINdqit0NkNLdBbIIjprvUB7fcb+u4gy/+3buy2ntHG
+s9+W4PPZIeP4h0+2o9QbtR9Tsiw3kwn5GjXQlRiDCrYMxIeN7v7bJtZ2NId
jkYCgdrzXHVBcViP+dK3+w3jhnJY38Xce58/JnN1pcbRFqmh+pLoaJskUrfI
tkETKNIyu5ZQpFZKqydDVgrqlgdiKfV8fokSO0oCeANxznnFPuso09CiPtiY
PFzf8GnkUV7i+UW4I8gghkxASWATva6fxxaSOrcE5vEumg/0lrNi2CYRf6LT
BUWskulHAQJ0/VNStdywylJ9M4Aj2t37srqWQJlprEsmxUSbKzZPzkPSLl8q
4bi617DRuz/idArehJHia56Cg6xQNUXngs1AsU1b5WISYNpfrmtKr3bgYZCs
mslVCIdzRL9QRmadXQYteb6zV297l7+Cboab/70EuZN0zd5GhrgkJeNRNDua
2V8cjRJGt+UsYjb0eu3uoU4FmCxYjpkcNgyo+EuoM8W5RdbdlB28zuqTUNj6
8EkzXRuW4nwSUVRPrNZwdPhYj1lRB6vPWRic9OMuoOBB4Ekw5F0BaVm+B9rL
gE/jUBIS5K3FnExKUUiyRci97i/J+vCPZBZM8Rpp5S9urhiHBwSmBJmMJP26
KNNQHr1bLWNi7JKQZb3wNW/dvT4kCsp1P2AScntLu0N5ws6x0rRgHBYukkrH
3swjc9tw0hpFsf908YrvNEVW+i2cq2N/0cI0tFzbFg37OLDDF28cQE3Ftw+a
2OyR3IAO7OSHwNUhGdFRIqIfsQcjuXzuAiBM4XQqyBxbAHoaSa6Bo9NxMr2W
+YYdS4MOpYvn4k+KIv2AvpBYP+xlsksguISRB0+TT/Ok6bwLJPYnIccb8idF
+41A0ACDKVr3cCJ1d7PT3BE07S7+jgD4Pe77kXTXzXW57D1kZ5SgYfuUbvjA
mqObFNvcRoKnvVxHsZPyn+Eu+tXH86uPZ08fz/0+d/Sj3N4/scLuOdgul8u+
ls3AAOHBjVgO+3litsPd+fJ5SP0irpvtsG7x6USDOfL6IdDiJWXq3BHUeMu8
ieYNs5EfH+TEiIVc7U53BGdnHtmyjvPHG4t3Hf42r9DTPUE+6oJKsO8J2LZB
EqfEXQLqu/1L466Lafhzq+PpM4DZ1nbrZ5vD6QsOFT49VnGvebaRWPh1gJbv
4Oba+hlOyoj9Qp/PiAae7+0r2/qJnWgpJd7FnfYZ8H8G0vufBOFfduiIaD7T
S3eHibYTzB2ceePxtmZbYI2ceDF7DH68brNtHr7uiId3G3G7ezF8djgP79bq
Fhejt3ZvdTO+juyQW12L3tAZyY1Gg6ZxEv52WQydDAaxHNlITG6XD9qIsYWZ
2G+azRNnwpmrXhmBWdgimr6oqvegqie/RTpxQ3qIKyYXW5XB6Bx2YVXO5SF+
LFb+I1M1cmixMysq/PY57qx/EUdWbJQPu7L29VW1vsIUPQ8T3NuJhXd5h7KN
1J+lPJ9zlrI7nPLB8e4WleaIbvyXvjYgIhOMfPYSJJn+kvJrO7evOH1XX5mq
xYpnNDKYaUpu74FBuZTrOeQ/chbYq6rxdVk8A3hHe6w+Pk73nO723LVKVnSZ
3NKt8LgZwCvomqi31crVElo5X1+/yB35rk4v3n3948U7SkfPiYjoegQOIB0B
ext3GjqecteZE1ekSF+402W15buDwScT/wzU2fKqiU7tRJ3SRRgqi+bS1t2V
IfhfX2WUlh3WTNllUpGoEMp1voXURa+H/G8T9Se8GgSbSzn+EidAp2hnnVcm
83cwgbCaCqYT39/z73+8QCc+NoH+JxfnfB0FyD1bcCK53cAhXE3cPXRXcyGk
vbvLofHSgMv4sou8HtiW91qvKWUpf+94GKYHDddEQzCKop9mJF5FpEZcpGvO
BNn13YeLLsUCmGuzXHGRFetu09i8WgutJVVvcA4Z0iXeWyBPZOd8E4YKX7jd
ddaP1DWkHpSKPp+jyODYkDT5mj2t1p1Q4cC920jxYYm9cl83VISKKSO5HztE
WLyGGUxa6MbVNcB7bVQ1VFYY35sCbC4WdNMJCzgpudtlykDBDuPuImJUlWeq
YR+xrgpK6yqb6dkBu6cvfRWCNHTFrN05mIYSDG1UT25mFlg5gW6dXmVFi5AX
eVuEi/DX2iyWfJVFEjlth0/AeXY3nqTq3s4Dn4Qa6I4q1s3B+1gbDFJYKrrz
U3WNRZvIwYztaevzvJXbeLWeexfm0FU4uj7KBShB3lMp1hkI4NJSkSZeqaUC
KAprViWXG7/EzS+OP0a1CFnMUOhDElupUidV3lkiKzjhS9juHsn2shQSDQ6X
x9au+CUJ7oiLxMWlMLsQtQZfrbPyXtIsOG2vd93eQ8Cqesb1+FbZOk4OrTh0
Y1vDKljvMh1dmLR08y5zRcLkLgxWn+S1C4IF07fWEOszOKQUOV4ko+a1u7g9
krXJTrgfGCnxObdLKU/qb2HOhDPJvZigGoSmM80cBNtSIahSrsPREfaZvj4X
GidyUiM6BwjLuq3xchAdUVR96nZFfFtCXOFasV5xqYGRi+8TwQNl+0pf5NBG
asHilxVAGhiR/5EvSXW74BUpVmEe70yw3jfxNkV0JiwxTm6I9K6tCblyrS/x
0fuKG1JJh4/AoYunOTU/laewOXXptFQMwfTKWFGiuhS+i6+ha3axPmnXaxRD
yCEpx0FhEUTXmYrsarpdjfcHE9XMHiu+7DmULynkfBD9nqRJht8lOWAYFYMF
yBzwR1j36vpW4P+hCDzaDzVHEWrUEG6OOrjxl66p8CitRM4y8lywbLoRzlR7
jsvYRuKrz3a6BXWiG+9SHktMJObzmTcRS64AMXDdGqA0jQwbKpXAWiL9TLSF
qOBoyOHoXq5lmSalAKhweRzNlJIYGLwqdVzKa6WRBxq7SnRhyj4nbHbZJ2vJ
XnnxDG/WU5alhkJU2IR5kJ+RT7kXrv45LmKqN5VcCt2lbSY3frslnPosJ75y
zMsbMjFYlp3P06WOomCnrwev552DtZNfkpI96EkhMn8WjPlnvkQDJjsVdJZc
3b2kCENP8UWfDlZyEv5FFcOZG5DF4O70RioBp2EId+FjBugRn0ukApC8OG8i
oQhKUqJ0+BArEY5jS1QfZdbWLvTKzg4gYXcVOhaaE/Um/gmv7rt8qAslySqo
m+XVlfbCxXhLnQwuTEpjLbCTRRIgdzTOR2kQkdG8IKm4tAqq315sdlNG7pNs
sJ+4TG5K7S8ie2kj/2rycVgq/tvJwi0SMMbD91Wywey35W9HqFXFmR+ih/us
IClhCLTUGDFOuKBD4r91OqfnSP9mgg1dPE8+fpSXpXz6dPCrOBviaf+aIo09
0z0P/3axFnlyz3gJZ67MPH45d6CcuJJhHx93vdu+bliXUuOto4I1QqriusJi
L1TC5slwOV8B88Ab6ewCcHX4+dSOHDnzGeYq1jqUn+sVd5F0u149tW5ow5Uu
67urZWVe/x3wOXJwqlttLS17jy7tuaaq7ULqbmkiraVoBSU7r3RWSisXmfAq
BcUgvkJMfuVqtwpEMpBUdUGnpGS7+W6CDfb+ST23IIoHC8DIgY0WFbsIoogQ
rBO2uNggUCtxu3WKxIhihXm4sNIlKjjGvaKlV/TQhpdDRIXNK46AUA3ljF8k
05iGXHmZw4orp9QsYWejImlEfX6sYgNL42Kdhf/V2LiWreDlN+OmRT2GfG2R
Qy9lM3A831xeKAzMYKV94PHk5EZA0GcV1kClSdivyAYXdyFpBWZaxW5i8RZO
k+K6cuF8TlckzNxDxrBHpa351oOHFZexcYn8GCTxCiLC2dyFBGo9x/fUZOpI
5mSpMDAzvc/G+8/822rQ2QUAaXcjmijJGimb5UJa7rIBsHdNNbnnhf5gREs2
vir4huIHiAYSV/IaEprZFY5J3lXU6cnsl3z8/nxV7vYH+v/WayqE2K3nCTow
BidXuIUZO+NYAcmkbGU8iZCUM6nFHUZvpMEgJ+tdXaaxotccUSJxIWG2cVw8
HIG7qsxMmJjzt0lAqV9JKAysm2U1E2b11r1egaohDbCuQTeif9vSlDXOLK7B
hPRgLOfUxwEpFzSPFMzMuSSk3Blg6WufWy2kJG9+aDZrqbKKKB4FCJHloGOa
zqS8MAqrIf3QE/2+S/KyKIGCKw4xL8mkCCq71EeKVTd3xGBcofyRi55YOZHL
3gFkLPuk9K1SqeyLkw6Hve4Iz5Tjd4vSZV6jF+e1iBYuw2tC7CJOiehXYRsG
zL+5yFXsTeKzJJfT2VdU85E3escmb99VqW+lo8Kl/ryu3PtYKE0cXwRIGyh6
D3I0V0OLJBS/U4PVPIFyTA/HZdaAgocrHvq1Z9YC+7bW4PIi85a2Jl28L5fW
q2uM+SZiMu1wDXNhuSQbP7zzQcq3Uq5Nv47Ots9AxR3/x8MHLrnuB9ypC8Hy
eeDs4XOjxH0iZBwl5kW5nP1Zu48wVy3CAI0jFIDpnLbO/+/84kbNbAP/K/pO
svMGn+BfN+SCUzc93N0Tnlvw8xcG0ec0qt98Ax9a/e/hQ+Dna8EGY0gdHQrG
Pnz48KXh+bkLz29vh+fZPwyeJPGrd8Rcytfz6FWUHORLjw2yZUqNosDsrtAJ
54R99iG49xFQz5n60e66J8Fhr0tJyirvT/4q4RNfiPjvTfqID17Usy9FaPcm
+wDL4T8Clh0k38l03JvsExcok3pIGTtl38yYDGx1BdIFzG35VoFOxsWbJGXS
tqtVVm9GsScJNLXG2+whxywdl7wDQwMf37Fw1XH0EjQ3trrAwY4la3g8dBU8
TjE7DrmMo/gqYbj0O4oU1PCaGUooKqtrlwJx6zVpUVzDNWndvyR9+71n61dh
w+VnWgFdgE6XHF2A7i9ZLtbiVE9k+XxJ2hWzDFN554W/xNzHTFm5d9P0XuPg
lNS+vtdkNVDJE7QvmmqNCZp3TClzeWO9PDGBI3fva2WEuDTCFAvk/uYXSHDN
5sQBGPy+tqMTs/EcfNuu/Bd6XMLLEDKXD0ojPZpq2zwKS/dvIOjrxhOVvNyP
TkiXqF/1eh1zJlRHF9zpueobBtGrlPdyYUWVTjt+/JBF6y7zuiX0PIHH6iU6
H23rXhXRV8npWGyrYMxOXHZN9Qpmbyk9XHmf8MZRG5UKu8VdsePK8w6W9G/M
kb7MAWSB/GXP2mU0S8w76A3JXOJakiCiuA9GTXxFvX/CSRUz6Nfzuc/5VG9Z
L1HuLSR1No/qUtvI959Ei2hGfl/C4J1+plXn+cYMeXzLetbPFfblUyT9m93A
s2ztXeZDO9VJEe1uMufZTeLXB4dQInsk+qsRzz82LbIa38zgk0759SeSldx5
iSA5t4KbkM63952HV3WQfwSGIbST/9LdTJAlmHLdUmgsCTFysRMfxgmVKZBO
rnWBubxuJ3Xe1ui+OZVX5zr983I4opI4AyUrPrysN0l3jGqLoqPageyynLdc
IZCYUy8jkthuXRtmt/08nqbCdNBy4/M7ktLwbhvnBV4XxXeCeQnSQZHwf8pJ
NVINJE9wEzajWVZctMY6LILSVGysicI0XOwIQOZq7gqvbVg/zGN1fvLqpIf8
7tt9+um+7g2AMA+OIIPRmjBLpaotM9CfWvNLC5j4OatGapNVS/7+HfrfslU1
NYWewDaP1Ck+ADmLT7DjX0wGz/BNd79oC3JrksOXDyb7btlm19pwp5/ob5oH
SEG9XRoUoAbp4g8DDR/8PxDrtKBphwAA

-->

</rfc>
