<?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.26 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-contreras-alto-service-edge-08" category="info" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title>Use of ALTO for Determining Service Edge</title>
    <seriesInfo name="Internet-Draft" value="draft-contreras-alto-service-edge-08"/>
    <author fullname="Luis M. Contreras">
      <organization>Telefonica</organization>
      <address>
        <email>luismiguel.conterasmurillo@telefonica.com</email>
      </address>
    </author>
    <author fullname="Sabine Randriamasy">
      <organization>Nokia Bell Labs</organization>
      <address>
        <email>sabine.randriamasy@nokia-bell-labs.com</email>
      </address>
    </author>
    <author fullname="Jordi Ros-Giralt">
      <organization>Qualcomm Europe, Inc.</organization>
      <address>
        <email>jros@qti.qualcomm.com</email>
      </address>
    </author>
    <author fullname="Danny Lachos">
      <organization>Benocs</organization>
      <address>
        <email>dlachos@benocs.com</email>
      </address>
    </author>
    <author fullname="Christian Rothenberg">
      <organization>Unicamp</organization>
      <address>
        <email>chesteve@dca.fee.unicamp.br</email>
      </address>
    </author>
    <date year="2023" month="July" day="10"/>
    <area>AREA</area>
    <workgroup>ALTO</workgroup>
    <keyword>ALTO</keyword>
    <keyword>compute</keyword>
    <keyword>edge computing</keyword>
    <abstract>
      <t>Service providers are starting to deploy computing capabilities
across the network for hosting applications such as AR/VR, vehicle
networks, IoT, and AI training, among others.
In these distributed computing
environments, knowledge about computing and communication resources
is necessary to determine the proper deployment location of
each application. This document proposes an initial approach
towards the use of ALTO to expose such information to the
applications and assist the selection of their deployment
locations.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://giralt.github.io/draft-contreras-alto-service-edge/#go.draft-contreras-alto-service-edge.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-contreras-alto-service-edge/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:alto@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/alto/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/alto/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/giralt/draft-contreras-alto-service-edge"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>With the advent of network virtualization, operators
can make use of dynamic instantiation of network functions and
applications by using different techniques on top of
commoditized computation infrastructures, permitting
a flexible and on-demand deployment of services, aligned
with the actual needs as demanded by the users.</t>
      <t>Operators are starting to deploy distributed computing
environments in different parts of the network with the
objective of addressing different service needs including
latency, bandwidth, processing capabilities, storage, etc.
This is translated in the emergence of a number of data
centers (both in the cloud and at the edge)
of different sizes (e.g., large, medium, small)
characterized by distinct dimension of CPUs, memory, and
storage capabilities, as well as bandwidth capacity for
forwarding the traffic generated in and out of the
corresponding data center.</t>
      <t>The proliferation of the edge computing paradigm
further increases the potential footprint
and heterogeneity of the environments where a function
or application can be deployed, resulting in different
unitary cost per CPU, memory,
and storage. This increases the complexity of deciding
the location where a given function or application should
be best deployed, as this decision should be
influenced not only by the available resources
in a given computing
environment, but also by the network capacity of the
path connecting the traffic source with the destination.</t>
      <t>It is then essential for a network operator to have
mechanisms assisting this decision by considering
a number of constraints related to the function or
application to be deployed, understanding how a
given decision on the computing environment
for the service edge affects the transport network
substrate. This would enable the integration of network
capabilities in the function placement decision
and further optimize performance of the deployed
application.</t>
      <t>This document proposes the use of ALTO <xref target="RFC7285"/>
for assisting such a decision.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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 anchor="computing-needs">
      <name>Computing Needs</name>
      <t>The compute needs for an application or service function are typically set in terms of certain requirements in terms of processing capabilities (i.e., CPU), as well as volatile memory (i.e., RAM) and storage capacity. There are two ways of considering those needs: either as individual values for each of the resources, or as a pre-defined bundle of them in the form of instance or compute flavor.</t>
      <section anchor="working-with-compute-resource-values">
        <name>Working with compute resource values</name>
        <t>Compute resource values can be obtained from cloud manager systems able to provide information about compute resources in a given compute node. These cloud manager systems typically provide information about total resources in the compute node and either the used or the allocatable resources. This information can be leveraged for taking application or service function placement decisions from the compute capability perspective.
Each cloud management system has their own schema of information to be provided. In general terms, information about CPU, memory and storage can be provided, together with the identifiers of the compute node and some other system information. Examples of these cloud management systems are Kubernetes, OpenStack and OpenNebula.
The following table summarizes some of the obtainable information from these cloud management systems.</t>
        <figure anchor="table_CloudMngrs">
          <name>Compute resource information from well known cloud managers</name>
          <artwork><![CDATA[
+-------------------------+---------------------------+----------------------------------+
| Cloud Management System | Basic compute information | Additional information (example) |
+-------------------------+---------------------------+----------------------------------+
| Kubernetes              | CPU, memory (total and    | Node name, machine ID, operating |
|                         | allocatable)              | system, etc                      |
+-------------------------+---------------------------+----------------------------------+
| OpenStack               | CPU, memory, storage      | Compute node ID, node name,      |
|                         | (total and used)          | hypervisor type, etc             |
+-------------------------+---------------------------+----------------------------------+
| OpenNebula              | CPU, memory, storage      | Compute node name, cluster ID    |
|                         | (max and used)            | hypervisor type, etc             |
+-------------------------+---------------------------+----------------------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="working-with-compute-flavors">
        <name>Working with compute flavors</name>
        <t>Cloud computing providers such as Amazon Web Services
Microsoft Azure, or Google Cloud Platform, typically structure their offerings
of computing capabilities by bundling CPU, RAM and
storage units as quotas, instances, and flavors that
can be consumed in an ephemeral fashion,
during the actual lifetime of the required function
or application. In the case of Amazon Web Services such grouping of compute resources is denominated instance type, being the same concept named as virtual machine size in Microsoft Azure and machine type in Google Cloud Platform.</t>
        <t>This same approach is being taken for
characterizing bundles of resources on the
so-called Network Function Virtualization
Infrastructure Points of Presence (NFVI-PoPs)
being deployed by the telco operators.
For instance, the Common Network Function
Virtualization Infrastructure Telecom Taskforce
(CNTT) <xref target="CNTT"/>, jointly hosted by GSMA
<xref target="GSMA"/> and the Linux Foundation, intends to harmonize
the definition of
instances and flavors for abstracting capabilities
of the underlying NFVI, facilitating a
more efficient utilization of the infrastructure
and simplifying the integration and certification
of functions. (Here certification means the assessment
of the expected behavior for a given function
according to the level of resources determined by
a given flavor.) An evolution of this initiative is
Anuket <xref target="Anuket"/>, which works to consolidate
different architectures for well-known tools
such as OpenStack and Kubernetes.</t>
        <t>Taking CNTT as an example, the flavors or instances
can be characterized according to:</t>
        <ul spacing="normal">
          <li>
            <em>Type of instance (T):</em> Used to specify the type of instances,
which are characterized as B (Basic), or N (Network Intensive).
The latter includes network acceleration extensions
for offloading network intensive operations to hardware.</li>
          <li>
            <em>Interface Option (I):</em> Used to specify the associated
bandwidth of the network interface.</li>
          <li>
            <em>Compute flavor (F):</em> Used to specify a given predefined
combination of resources in terms of virtual CPU, RAM,
disk, and bandwidth for the management interface.</li>
          <li>
            <em>Optional storage extension (S):</em> Used to specify additional storage capacity.</li>
          <li>
            <em>Optional hardware acceleration characteristics (A):</em>
Used to specify acceleration capabilities for
improving the performance of the application.</li>
        </ul>
        <t>The naming convention of an instance is thus encoded as TIFSA.</t>
      </section>
    </section>
    <section anchor="usage-of-alto-for-service-placement">
      <name>Usage of ALTO for Service Placement</name>
      <t>ALTO can assist the deployment of a service on a
specific flavor or instance of
the computing substrate by taking into consideration
network cost metrics.
A generic and primary approach is to take into
account metrics related to the computing environment,
such as availability of resources, unitary cost
of those resources, etc.
Nevertheless, the function or application to be
deployed on top of a given flavor must also be
interconnected outside the computing
environment where it is deployed,
therefore requiring the necessary network
resources to satisfy application performance
requirements such as bandwidth or latency.</t>
      <t>The objective then is to leverage ALTO to
provide information about the more convenient
execution environments to deploy virtualized
network functions or applications, allowing
the operator to get a coordinated service edge
and transport network recommendation.</t>
      <section anchor="integrating-compute-information-in-alto">
        <name>Integrating Compute Information in ALTO</name>
        <t>CNTT proposes the existence of a catalogue
of compute infrastructure profiles collecting
the computing capability instances available
to be consumed. Such a catalogue could be
communicated to ALTO or even incorporated to it.</t>
        <t>ALTO server queries could support
TIFSA encoding in order to retrieve proper
maps from ALTO. Additionally, filtered queries
for particular characteristics of a flavor
could also be supported.</t>
      </section>
      <section anchor="association-of-compute-capabilities-to-network-topology">
        <name>Association of Compute Capabilities to Network Topology</name>
        <t>It is required to associate the location of the
available instances with topological information
to allow ALTO construct the overall map. The
expectation is that the management of the network and
cloud capabilities will be performed by the same entity,
producing an integrated map to handle both network and
compute abstractions jointly. While this can be
straightforward when an ISP owns both the network
and the cloud infrastructure, it can in general require
collaboration between multiple administrative domains.
Details on potential scenarios will be provided
in future versions of this document.</t>
        <t>At this stage, four potential solutions could be
considered:</t>
        <ul spacing="normal">
          <li>To leverage (and possibly extend)
<xref target="I-D.ietf-teas-sf-aware-topo-model"/> for
disseminating topology information together
with the notion of function location (that would
require to be adapted to the existence of available
compute capabilities). A recent effort in this
direction can be found in
<xref target="I-D.llc-teas-dc-aware-topo-model"/>.</li>
          <li>To extend BGP-LS <xref target="RFC7752"/>,
which is already considered as a mechanism for
feeding topology information in ALTO, in order
to also advertise computing capabilities
as well.</li>
          <li>To combine information from the infrastructure
profiles catalogue with topological information
by leveraging the IP prefixes allocated to
the gateway providing connectivity to the NFVI PoP.</li>
          <li>To integrate with Cloud Infrastructure
Managers that could expose cloud infrastructure
capabilities as in <xref target="CNTT"/> and <xref target="GSMA"/>.</li>
        </ul>
        <t>The viability of these options will be explored
in future versions of this document.</t>
      </section>
      <section anchor="alto-architecture-for-determining-serve-edge">
        <name>ALTO Architecture for Determining Serve Edge</name>
        <t>The following logical architecture defines the
usage of ALTO for determining service edges.</t>
        <figure anchor="EdgeArchitecture">
          <name>Service Edge Information Exchange.</name>
          <artwork><![CDATA[
                         +--------+   Topological   +---------+
                         |        |   Information   |         |
                         |        |<--------------->| e.g.BGP |
                ALTO     |        |                 |         |
  +--------+  protocol   |        |                 +---------+
  | Client |<----------->|  ALTO  |
  +--------+             | Server |
                         |        |    Computing    +---------+
                         |        |   Information   |  e.g.,  |
                         |        |<--------------->|  Infra. |
                         |        |                 |Catalogue|
                         +--------+                 +---------+
]]></artwork>
        </figure>
        <t>In order to select the optimal edge server
from both the network (e.g.,
the path with lower latency and/or higher bandwidth)
and the cloud perspectives (e.g., number of CPUs/GPUs,
available RAM and storage capacity),
there is a need to see the edge server as
both an IP entity (as in <xref target="RFC7285"/>)
and an Abstract Network Element (ANE)
entity (as in <xref target="RFC9275"/>).</t>
        <t>Currently there is no mechanism (neither in <xref target="RFC9275"/> nor
<xref target="RFC9240"/>) to see the same edge server as an entity
in both domains. The design of ALTO, however,
allows extensions that could be used to identify
that an entity can be defined in several domains.
These different domains and their related properties
can be specified in extended ALTO property maps,
as proposed in the next sections.</t>
      </section>
    </section>
    <section anchor="alto-design-considerations-for-determining-service-edge">
      <name>ALTO Design Considerations for Determining Service Edge</name>
      <t>This section is in progress and gathers the
ALTO features that are needed to support the
exposure of both networking capabilities and
compute capabilities in ALTO Maps.</t>
      <t>In particular, ALTO Entity Property Maps defined in
<xref target="RFC9240"/> can be extended. <xref target="RFC9240"/> generalizes
the concept of endpoint properties to domains of other
entities through property maps. Entities can be
defined in a wider set of entity domains such as IPv4,
IPv6, PID, AS, ISO3166-1 country codes or ANE.
In addition, RFC 9240 specifies how properties can be
defined on entities of each of these domains.</t>
      <section anchor="example-of-entity-definition-in-different-domains">
        <name>Example of Entity Definition in Different Domains</name>
        <t>As there can be applications that do not
necessarily need both compute and networking information,
it is fine to keep the entity domains separate, each with
their own native properties.
However, some applications need information
on both topics, and a scalable and flexible
solution consists in defining an ALTO property
type, that:</t>
        <ul spacing="normal">
          <li>Indicates that an entity can be defined in
several domains;</li>
          <li>Specifies, for an entity, the other domains
where this entity is defined.</li>
        </ul>
        <t>For instance, one possible approach is to
introduce entity properties that
list other entity domains where an
edge server is identified. This property
type should be usable in all entity
domains types. The following provides an
example where the property "entity domain mapping"
lists the other domains in which an entity is defined.</t>
        <t>Suppose an edge server is identified as follows:</t>
        <ul spacing="normal">
          <li>In the IPV4 domain, with an IP address, e.g., ipv4:1.2.3.4;</li>
          <li>In the ANE domain, with an identifier, e.g., ane:DC10-HOST1.</li>
        </ul>
        <t>To get information on this edge server as an
entity in the "ipv4" entity domain, an ALTO
client can query the properties "pid" and
"entity-domain-mappings" and obtain a response as follows:</t>
        <artwork><![CDATA[
POST /propmap/lookup/dc-ip HTTP/1.1
Host: alto.example.com
Accept: application/alto-propmap+json,application/alto-error+json
Content-Length: TBC
Content-Type: application/alto-propmapparams+json
{
"entities" : ["ipv4:1.2.3.4"],
"properties" : [ "pid", "entity-domain-mappings"]
}


HTTP/1.1 200 OK
Content-Length: TBC
Content-Type: application/alto-propmap+json
{
"meta" : {},

"property-map":  {
    "ipv4:1.2.3.4" :
      {"pid" : DC10,
        "entity-domain-mappings" : ["ane"]}
    }
}
]]></artwork>
        <t>To get information on this edge server as an
  entity in the "ane" entity domain, an ALTO
  client can query the properties "entity-domain-mappings"
  and "network-address" and obtain a response as follows:</t>
        <artwork><![CDATA[
POST /propmap/lookup/dc-ane HTTP/1.1
Host: alto.example.com
Accept: application/alto-propmap+json,application/alto-error+json
Content-Length: TBC
Content-Type: application/alto-propmapparams+json
{
"entities" : ["ane:DC10-HOST1"],
"properties" : [ "entity-domain-mappings", "network-address"]
}

HTTP/1.1 200 OK
Content-Length: TBC
Content-Type: application/alto-propmap+json
{
"meta" : {},

"property-map":  {
  "ane:DC10-HOST1"
      {"entity domain mappings :  ["ipv4"]",
        "network-address" :  ipv4:1.2.3.4}
      }
}
]]></artwork>
        <t>Thus, if the ALTO Client sees the edge server
as an entity with a network address, it knows
that it can see the server as an ANE on which
it can query relevant properties.</t>
        <t>Further elaboration will be provided in future
versions of this document.</t>
      </section>
      <section anchor="definition-of-flavors-in-alto-property-map">
        <name>Definition of Flavors in ALTO Property Map</name>
        <t>The ALTO Entity Property Maps <xref target="RFC9240"/>
generalize the concept of endpoint properties
to domains of other entities through
property maps. The term "flavor" or "instance"
refers to an abstracted set of computing
resources, with well-specified properties such as
CPU, RAM and Storage. Thus, a flavor can be
seen as an ANE with properties defined in terms
of TIFSA. A flavor or instance
is a group of 1 or more elements that can be
reached via one or more network addresses. So
an instance can also be seen as a PID that
groups one or more IP addresses. In a context
such as the one defined in CNTT, an ALTO
property map could be used to expose TIFSA
information of potential candidate flavors, i.e.,
potential NFVI-PoPs where an application or
service can be deployed.</t>
        <t><xref target="example_edge"/> below depicts an example of a typical edge-cloud scenario
<xref target="RFC9275"/> where each ANE represents a flavor/instance that resides on
different cloud servers.  Flavors on the "on-premise" edge nodes have
limited resources (but are closer to the end hosts), and flavors on
the site-radio edge node and access central office (CO) have more
available resources.</t>
        <figure anchor="example_edge">
          <name>Example Use Case for Service Edge.</name>
          <artwork><![CDATA[
   A                B
   |                |         Access CO    Cloud DC
+--|-------+  +-----|-----+  +---------+  +---------+
|          |  |           |  |         |  |         |
|+--------+|  |+---------+|  |+-------+|  |+-------+|
||small-1 ||--||medium-1 ||--||large-1||--||large-2||
|+--------+|  |+---------+|  |+-------+|  |+-------+|
|   ANE    |  |    ANE    |  |   ANE   |  |   ANE   |
+----------+  +-----------+  +----|----+  +---------+
 On premise    site-radio         |
               edge node          |
+----------+                      |
|          |                      |
|+--------+|                      |
||small-2 ||----------------------+
|+--------+|
|   ANE    |
+--|-------+
   |On premise
   |
   C
]]></artwork>
        </figure>
        <t>Based on the reference scenario (<xref target="example_edge"/>), <xref target="table_PropertyMap"/> shows fictitious
TIFSA property types for entities of domain type "ane":</t>
        <figure anchor="table_PropertyMap">
          <name>ALTO Property Map.</name>
          <artwork><![CDATA[
  +--------+------------+-------+-----+------+------+-----+---+---+
  | flavor |  type (T)  | inter | f-c | f-ra | f-di | f-b | S | A |
  | -name  |            |  face |  pu |  m   |  sk  |  w  |   |   |
  |        |            |  (I)  | (F) | (F)  | (F)  | (F) |   |   |
  +--------+------------+-------+-----+------+------+-----+---+---+
  | small- |   basic    |   1   |  1  | 512  | 1 GB | 1 G |   |   |
  |   1    |            |  Gbps |     |  MB  |      | bps |   |   |
  .................................................................
  | small- |  network-  |   9   |  1  | 512  | 1 GB | 1 G |   |   |
  |   2    | intensive  |  Gbps |     |  MB  |      | bps |   |   |
  .................................................................
  | medium |  network-  |   25  |  2  | 4 GB |  40  | 1 G |   |   |
  |   -1   | intensive  |  Gbps |     |      |  GB  | bps |   |   |
  .................................................................
  | large- |  compute-  |   50  |  4  | 8 GB |  80  | 1 G |   |   |
  |   1    | intensive  |  Gbps |     |      |  GB  | bps |   |   |
  .................................................................
  | large- |  compute-  |  100  |  8  |  16  | 160  | 1 G |   |   |
  |   2    | intensive  |  Gbps |     |  GB  |  GB  | bps |   |   |
  +--------+------------+-------+-----+------+------+-----+---+---+
]]></artwork>
        </figure>
        <t>Subsequently, an ALTO client may request flavor(s) information from
source [A] to destinations [B,C].  The following is a simplified
example of an ALTO client request and the corresponding response.
Note that the response consists of two parts: (i) ANE array for each
source and destination pair (out of the scope of this document), and
(ii) the requested properties of ANEs.</t>
        <artwork><![CDATA[
POST /costmap/pv HTTP/1.1
Host: alto.example.com
Accept: multipart/related;type=application/alto-costmap+json,
        application/alto-error+json
Content-Length: 163
Content-Type: application/alto-costmapfilter+json

{
  "cost-type": {
    "cost-mode": "array",
    "cost-metric": "ane-path"
  },
  "pids": {
    "srcs": [ "A" ],
    "dsts": [ "B", "C" ]
  },
  "ane-property-names": [
    "type",
    "cpu",
    "ram",
    "disk"
  ]
}

HTTP/1.1 200 OK
Content-Length: 952
Content-Type: multipart/related; boundary=example-1;
              type=application/alto-costmap+json

Content-ID: <costmap@alto.example.com>
Content-Type: application/alto-costmap+json

{
  "meta": {
    "vtag": {
      "resource-id": "filtered-cost-map-pv.costmap",
      "tag": "d827f484cb66ce6df6b5077cb8562b0a"
    },
    "dependent-vtags": [
      {
        "resource-id": "my-default-networkmap",
        "tag": "c04bc5da49534274a6daeee8ea1dec62"
      }
    ],
    "cost-type": {
      "cost-mode": "array",
      "cost-metric": "ane-path"
    }
  },
  "cost-map": {
    "A": {
      "B": [ "small-1", "medium-1"],
      "C": [ "small-1", "medium-1", "large-1", "small-2" ]
    }
  }
}

Content-ID: <propmap@alto.example.com>
Content-Type: application/alto-propmap+json

{
    "meta" : {
    },
    "property-map": {
      ".ane:small-1":
        {"type" : "basic", "cpu" : 1,
          "ram" : "512MB", "disk" : 1GB},
      ".ane:small-2":
        {"type" : "network-intensive", "cpu" : 1,
          "ram" : "512MB", "disk" : 1GB},
      ".ane:medium-1":
        {"type" : "compute-intensive", "cpu" : 2,
          "ram" : "4GB", "disk" : 40GB},
      ".ane:large-1":
       {"type" : "compute-intensive", "cpu" : 4,
         "ram" : "8GB", "disk" : 80GB}
   }    }
]]></artwork>
      </section>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <section anchor="open-abstraction-for-edge-computing">
        <name>Open Abstraction for Edge Computing</name>
        <t>As shown in this document, modern applications such as AR/VR,
V2X, or IoT, require bringing compute
closer to the edge in order to meet
strict bandwidth, latency, and jitter requirements.  While this
deployment process resembles the path taken
by the main cloud providers
(notably, AWS, Facebook, Google and Microsoft) to deploy
their large-scale datacenters, the edge presents a
key difference: datacenter clouds (both in terms of their infrastructure
and the applications run by them) are owned and managed by a
single organization,
whereas edge clouds involve a complex ecosystem of operators,
vendors, and application providers, all striving to provide
a quality end-to-end solution to the user. This implies that,
while the traditional cloud has been implemented for the most part
by using vertically optimized and closed architectures, the edge will
necessarily need to rely on a complete ecosystem of carefully
designed open standards to enable horizontal interoperability
across all the involved parties.
This document envisions ALTO playing a role as part of the
ecosystem of open standards that are necessary to deploy and
operate the edge cloud.</t>
        <t>As an example, consider a user of an XR
application who arrives at his/her home by car. The application
runs by leveraging compute capabilities from both the
car and the public 5G edge cloud. As the user parks the
car, 5G coverage may diminish (due to building interference)
making the home local Wi-Fi connectivity a better choice.
Further, instead of relying on computational resources from
the car and the 5G edge cloud, latency can be reduced by leveraging
computing devices (PCs, laptops, tablets) available from the home
edge cloud.
The application's decision to switch from one
domain to another, however,
demands knowledge about the compute
and communication resources available both in the 5G and the Wi-Fi
domains, therefore requiring interoperability across multiple
industry standards (for instance, IETF and 3GPP on the public side,
and IETF and LF Edge <xref target="LF-EDGE"/> on the private home side). ALTO
can be positioned to act as an abstraction layer supporting
the exposure of communication and compute information independently
of the type of domain the application is currently residing in.</t>
        <t>Future versions of this document will elaborate further on this
use case.</t>
      </section>
      <section anchor="optimized-placement-of-microservice-components">
        <name>Optimized placement of microservice components</name>
        <t>Current applications are transitioning from a monolithic service architecture
towards the composition of microservice components, following cloud-native
trends. The set of microservices can have associated SLOs which impose
constraints not only in terms of required compute resources (CPU, storage, ...)
dependent on the compute facilities available, but also in terms of performance
indicators such as latency, bandwidth, etc, which impose restrictions in the
networking capabilities connecting the computing facilities. Even more complex
constrains, such as affinity among certain microservices components could
require complex calculations for selecting the most appropriate compute nodes
taken into consideration both network and compute information.</t>
        <t>Thus, service/application orchestrators can benefit from the information exposed
by ALTO at the time of deciding the placement of the microservices in the network.</t>
      </section>
      <section anchor="distributed-ai-workloads">
        <name>Distributed AI Workloads</name>
        <t>Generative AI is a technological feat that opens up many applications such as holding
conversations, generating art, developing a research paper, or writing software, among
many others. Yet this innovation comes with a high cost in terms of processing and power
consumption. While data centers are already running at capacity, it is projected
that transitioning current search engine queries to leverage generative AI will
increase costs by 10 times compared to traditional search methods <xref target="DC-AI-COST"/>. As (1) computing
nodes (CPUs and GPUs) are deployed to build the edge cloud through
technologies like 5G and (2) with billions of mobile user devices globally providing a large
untapped computational platform, shifting part of the processing from the cloud to the
edge becomes a viable and necessary step towards enabling the AI-transition.
There are at least four drivers supporting this trend:</t>
        <ul spacing="normal">
          <li>Computational and energy savings: Due to savings from not needing
large-scale cooling systems and the high performance-per-watt
efficiency of the edge devices, some workloads can run at the edge
at a lower computational and energy cost <xref target="EDGE-ENERGY"/>, especially when
considering not only processing but also data transport.</li>
          <li>Latency: For applications such as driverless vehicles which require real-time
inference at very low latency, running at the edge is necessary.</li>
          <li>Reliability and performance: Peaks in cloud demand for generative AI queries can
create large queues and latency, and in some cases even lead to denial of service.
In some cases, limited or no connectivity requires running the workloads at the edge.</li>
          <li>Privacy, security, and personalization: A "private mode" allows users to strictly
utilize on-device (or near-the-device) AI to enter sensitive prompts to chatbots,
such as health questions or confidential ideas.</li>
        </ul>
        <t>These drivers lead to a distributed computational model that is hybrid: Some AI workloads
will fully run in the cloud, some will fully run in the edge, and some will run both in the
edge and in the cloud. Being able to efficiently run these workloads in this hybrid,
distributed, cloud-edge environment is necessary given the aforementioned massive energy
and computational costs. To make optimized service and workload placement decisions, information
about both the compute and communication resources available in the network is necessary too.</t>
        <t>Consider as an example a large language model (LLM) used to generate text and hold intelligent
conversations. LLMs produce a single token per inference, where a token is almost equivalent
to a word. Pipelining and parallelization techniques are used to optimize inference, but
this means that a model like GPT-3 could potentially go through all 175 billion parameters
that are part of it to generate a single word. To efficiently run these computational-intensive
workloads, it is necessary to know the availability of compute resources in the distributed
system. Suppose that a user is driving a car while conversing with an AI model. The model
can run inference on a variety of compute nodes, ordered from lower to higher compute power
as follows: (1) the user's phone, (2) the computer in the car, (3) the 5G edge cloud,
and (4) the datacenter cloud. Correspondingly, the system can deploy four different models
with different levels of precision and compute requirements. The simplest model with the
least parameters can run in the phone, requiring less compute power but yielding lower
accuracy. Three other models ordered in increasing value of accuracy and computational
complexity can run in the car, the edge, and the cloud. The application can identify the
right trade-off between accuracy and computational cost, combined with metrics of
communication bandwidth and latency, to make the right decision on which of the four
models to use for every inference request. Note that this is similar to the
resolution/bandwidth trade-off commonly found in the image encoding problem, where an
image can be encoded and transmitted at different levels of resolution depending on the
available bandwidth in the communication channel. In the case of AI inference, however,
not only bandwidth is a scarce resource, but also compute. ALTO extensions to support
the exposure of compute resources would allow applications to make optimized decisions
on selecting the right computational resource, supporting the efficient execution of hybrid
AI workloads.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="conclusions">
      <name>Conclusions</name>
      <t>Telco networks will increasingly contain a number
of interconnected data centers and edge
clouds of different sizes
and characteristics, allowing flexibility in the
dynamic deployment of functions and applications
for advanced services. The overall objective of
this document is to begin a discussion in the
ALTO WG regarding the suitability of the ALTO
protocol for determining where to deploy a
function or application in these distributed computing
environments. The result of these discussions
will be reflected in future versions of this draft.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC7285" target="https://www.rfc-editor.org/info/rfc7285" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7285.xml">
          <front>
            <title>Application-Layer Traffic Optimization (ALTO) Protocol</title>
            <author fullname="R. Alimi" initials="R." role="editor" surname="Alimi"/>
            <author fullname="R. Penno" initials="R." role="editor" surname="Penno"/>
            <author fullname="Y. Yang" initials="Y." role="editor" surname="Yang"/>
            <author fullname="S. Kiesel" initials="S." surname="Kiesel"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="W. Roome" initials="W." surname="Roome"/>
            <author fullname="S. Shalunov" initials="S." surname="Shalunov"/>
            <author fullname="R. Woundy" initials="R." surname="Woundy"/>
            <date month="September" year="2014"/>
            <abstract>
              <t>Applications using the Internet already have access to some topology information of Internet Service Provider (ISP) networks. For example, views to Internet routing tables at Looking Glass servers are available and can be practically downloaded to many network application clients. What is missing is knowledge of the underlying network topologies from the point of view of ISPs. In other words, what an ISP prefers in terms of traffic optimization -- and a way to distribute it.</t>
              <t>The Application-Layer Traffic Optimization (ALTO) services defined in this document provide network information (e.g., basic network location structure and preferences of network paths) with the goal of modifying network resource consumption patterns while maintaining or improving application performance. The basic information of ALTO is based on abstract maps of a network. These maps provide a simplified view, yet enough information about a network for applications to effectively utilize them. Additional services are built on top of the maps.</t>
              <t>This document describes a protocol implementing the ALTO services. Although the ALTO services would primarily be provided by ISPs, other entities, such as content service providers, could also provide ALTO services. Applications that could use the ALTO services are those that have a choice to which end points to connect. Examples of such applications are peer-to-peer (P2P) and content delivery networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7285"/>
          <seriesInfo name="DOI" value="10.17487/RFC7285"/>
        </reference>
        <reference anchor="RFC7752" target="https://www.rfc-editor.org/info/rfc7752" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7752.xml">
          <front>
            <title>North-Bound Distribution of Link-State and Traffic Engineering (TE) Information Using BGP</title>
            <author fullname="H. Gredler" initials="H." role="editor" surname="Gredler"/>
            <author fullname="J. Medved" initials="J." surname="Medved"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="S. Ray" initials="S." surname="Ray"/>
            <date month="March" year="2016"/>
            <abstract>
              <t>In a number of environments, a component external to a network is called upon to perform computations based on the network topology and current state of the connections within the network, including Traffic Engineering (TE) information. This is information typically distributed by IGP routing protocols within the network.</t>
              <t>This document describes a mechanism by which link-state and TE information can be collected from networks and shared with external components using the BGP routing protocol. This is achieved using a new BGP Network Layer Reachability Information (NLRI) encoding format. The mechanism is applicable to physical and virtual IGP links. The mechanism described is subject to policy control.</t>
              <t>Applications of this technique include Application-Layer Traffic Optimization (ALTO) servers and Path Computation Elements (PCEs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7752"/>
          <seriesInfo name="DOI" value="10.17487/RFC7752"/>
        </reference>
        <reference anchor="RFC9275" target="https://www.rfc-editor.org/info/rfc9275" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9275.xml">
          <front>
            <title>An Extension for Application-Layer Traffic Optimization (ALTO): Path Vector</title>
            <author fullname="K. Gao" initials="K." surname="Gao"/>
            <author fullname="Y. Lee" initials="Y." surname="Lee"/>
            <author fullname="S. Randriamasy" initials="S." surname="Randriamasy"/>
            <author fullname="Y. Yang" initials="Y." surname="Yang"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document is an extension to the base Application-Layer Traffic Optimization (ALTO) protocol. It extends the ALTO cost map and ALTO property map services so that an application can decide to which endpoint(s) to connect based not only on numerical/ordinal cost values but also on fine-grained abstract information regarding the paths. This is useful for applications whose performance is impacted by specific components of a network on the end-to-end paths, e.g., they may infer that several paths share common links and prevent traffic bottlenecks by avoiding such paths. This extension introduces a new abstraction called the "Abstract Network Element" (ANE) to represent these components and encodes a network path as a vector of ANEs. Thus, it provides a more complete but still abstract graph representation of the underlying network(s) for informed traffic optimization among endpoints.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9275"/>
          <seriesInfo name="DOI" value="10.17487/RFC9275"/>
        </reference>
        <reference anchor="RFC9240" target="https://www.rfc-editor.org/info/rfc9240" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9240.xml">
          <front>
            <title>An Extension for Application-Layer Traffic Optimization (ALTO): Entity Property Maps</title>
            <author fullname="W. Roome" initials="W." surname="Roome"/>
            <author fullname="S. Randriamasy" initials="S." surname="Randriamasy"/>
            <author fullname="Y. Yang" initials="Y." surname="Yang"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <author fullname="K. Gao" initials="K." surname="Gao"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document specifies an extension to the base Application-Layer Traffic Optimization (ALTO) Protocol that generalizes the concept of "endpoint properties", which have been tied to IP addresses so far, to entities defined by a wide set of objects. Further, these properties are presented as maps, similar to the network and cost maps in the base ALTO Protocol. While supporting the endpoints and related Endpoint Property Service defined in RFC 7285, the ALTO Protocol is extended in two major directions. First, from endpoints restricted to IP addresses to entities covering a wider and extensible set of objects; second, from properties for specific endpoints to entire entity property maps. These extensions introduce additional features that allow entities and property values to be specific to a given information resource. This is made possible by a generic and flexible design of entity and property types.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9240"/>
          <seriesInfo name="DOI" value="10.17487/RFC9240"/>
        </reference>
        <reference anchor="I-D.ietf-teas-sf-aware-topo-model" target="https://datatracker.ietf.org/doc/html/draft-ietf-teas-sf-aware-topo-model-11" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-teas-sf-aware-topo-model.xml">
          <front>
            <title>SF Aware TE Topology YANG Model</title>
            <author fullname="Igor Bryskin" initials="I." surname="Bryskin">
              <organization>Individual</organization>
            </author>
            <author fullname="Xufeng Liu" initials="X." surname="Liu">
              <organization>IBM Corporation</organization>
            </author>
            <author fullname="Young Lee" initials="Y." surname="Lee">
              <organization>Samsung Electronics</organization>
            </author>
            <author fullname="Jim Guichard" initials="J." surname="Guichard">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Daniele Ceccarelli" initials="D." surname="Ceccarelli">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Dmytro Shytyi" initials="D." surname="Shytyi"/>
            <date day="12" month="March" year="2023"/>
            <abstract>
              <t>This document describes a YANG data model for TE network topologies that are network service and function aware.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teas-sf-aware-topo-model-11"/>
        </reference>
        <reference anchor="I-D.llc-teas-dc-aware-topo-model" target="https://datatracker.ietf.org/doc/html/draft-llc-teas-dc-aware-topo-model-02" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.llc-teas-dc-aware-topo-model.xml">
          <front>
            <title>DC aware TE topology model</title>
            <author fullname="Young Lee" initials="Y." surname="Lee">
              <organization>Samsung Electronics</organization>
            </author>
            <author fullname="Xufeng Liu" initials="X." surname="Liu">
              <organization>IBM Corporation</organization>
            </author>
            <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras">
              <organization>Telefonica</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>This document proposes the extension of the TE topology model for including information related to data center resource capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-llc-teas-dc-aware-topo-model-02"/>
        </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="CNTT">
          <front>
            <title>Cloud Infrastructure Telco Taskforce Reference Model</title>
            <author>
              <organization/>
            </author>
            <date year="2022" month="June"/>
          </front>
          <seriesInfo name="https://github.com/cntt-n/CNTT/wiki" value=""/>
        </reference>
        <reference anchor="GSMA">
          <front>
            <title>Cloud Infrastructure Reference Model, Version 2.0</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="October"/>
          </front>
          <seriesInfo name="https://www.gsma.com/newsroom/wp-content/uploads//NG.126-v2.0-1.pdf" value=""/>
        </reference>
        <reference anchor="Anuket">
          <front>
            <title>Anuket Project</title>
            <author>
              <organization/>
            </author>
            <date year="2022" month="October"/>
          </front>
          <seriesInfo name="https://wiki.anuket.io/" value=""/>
        </reference>
        <reference anchor="LF-EDGE">
          <front>
            <title>Linux Foundation Edge</title>
            <author>
              <organization/>
            </author>
            <date year="2023" month="March"/>
          </front>
          <seriesInfo name="https://www.lfedge.org/" value=""/>
        </reference>
        <reference anchor="EDGE-ENERGY">
          <front>
            <title>Estimating energy consumption of cloud, fog, and edge computing infrastructures</title>
            <author>
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="IEEE Transactions on Sustainable Computing" value=""/>
        </reference>
        <reference anchor="DC-AI-COST">
          <front>
            <title>Generative AI Breaks The Data Center - Data Center Infrastructure And Operating Costs Projected To Increase To Over $76 Billion By 2028</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="Forbes, Tirias Research Report" value=""/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The work of Luis M. Contreras has been partially funded by the European Union under the Horizon Europe project CODECO (COgnitive, Decentralised Edge-  Cloud Orchestration), grant number 101092696.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
qTSF2tvd2/1m/+k3T8fq/wIp9EKDMYYAAA==

-->

</rfc>
