<?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.7.1 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-rcr-opsawg-operational-compute-metrics-07" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="TODO - Abbreviation">Joint Exposure of Network and Compute Information for Infrastructure-Aware Service Deployment</title>
    <seriesInfo name="Internet-Draft" value="draft-rcr-opsawg-operational-compute-metrics-07"/>
    <author fullname="S. Randriamasy">
      <organization>Nokia Bell Labs</organization>
      <address>
        <email>sabine.randriamasy@nokia-bell-labs.com</email>
      </address>
    </author>
    <author fullname="L. M. Contreras">
      <organization>Telefonica</organization>
      <address>
        <email>luismiguel.contrerasmurillo@telefonica.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="Roland Schott">
      <organization>Deutsche Telekom</organization>
      <address>
        <email>Roland.Schott@telekom.de</email>
      </address>
    </author>
    <date year="2024" month="October" day="21"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 86?>

<t>Service providers are starting to deploy computing capabilities
across the network for hosting applications such as distributed AI workloads,
AR/VR, vehicle networks, and IoT, among others. In this
network-compute environment, knowing information about
the availability and state of the underlying communication and compute resources is
necessary to determine both the proper deployment location of
the applications and the most suitable servers on which to run them.
Further, this information is used by numerous use cases with different
interpretations. This document proposes an initial approach towards a
common exposure scheme for metrics reflecting compute and communication capabilities.</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-rcr-opsawg-operational-compute-metrics/draft-rcr-opsawg-operational-compute-metrics.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-rcr-opsawg-operational-compute-metrics/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/giralt/draft-rcr-opsawg-operational-compute-metrics"/>.</t>
    </note>
  </front>
  <middle>
    <?line 99?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Operators are starting to deploy distributed computing environments
in different parts of the network that must support a variety of
applications with different performance needs such as latency, bandwidth,
compute power, storage, energy, etc.
This translates in the emergence of distributed compute resources
(both in the cloud and at the edge) with a variety of sizes
(e.g., large, medium, small) characterized by
distinct dimensions of CPUs, memory, and storage capabilities, as well
as bandwidth capacity for forwarding the traffic generated in and out
of the corresponding compute resource.</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 or executed.
On the one hand, this decision should be jointly
influenced by the available resources in a given computing
environment and, on the other, by the capabilities of the network
path connecting the traffic source with the destination.</t>
      <t>Network and compute-aware application placement and service selection has become
of utmost importance in the last decade. The availability of such information
is taken for granted by the numerous service providers and bodies that are specifying them.
However, distributed computational resources often run different
implementations with different understandings and representations of
compute capabilities, which poses a challenge to the application placement
and service selection problems. While standardization
efforts on network capabilities representation and exposure are well advanced,
similar efforts on compute capabilitites are in their infancy.</t>
      <t>This document proposes an initial approach towards  a common understanding
and exposure scheme for metrics reflecting compute capabilities.
It aims at leveraging existing work in the IETF on compute metrics definitions to build synergies.
It also aims at reaching out to working or research groups in the IETF that would consume such information and have particular requirements.</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>
      <?line -18?>

<!-- # Motivations

TODO TEST
ANOTHE CHANGE + COMMENTS
CHANGE 2 -->

</section>
    <section anchor="problem-space-and-needs">
      <name>Problem Space and Needs</name>
      <t>With the emergence of a new generation of applications with stringent
performance requirements (e.g.,  distributed AI training and inference,
driverless vehicles, and virtual/augmented reality) the need for
advanced solutions that can model and manage compute and communication
resources has become essential to manage and optimize the performance
of these applications.  Today's networks connect compute resources
deployed across a continuum, ranging from data centers (cloud
computing) to the edge (edge computing). While the same architecture
principles apply across this continuum, in this draft we focus on
the deployment of services at the edge, involving the cooperation
of different actors---namely, network operators, service providers
and applications---in a heterogeneous environment.</t>
      <t>In what follows, we use the lifecycle of a service to understand
the problem space and guide the analysis of the capabilities that are
lacking in today's protocol interfaces needed to enable these new services.</t>
      <figure anchor="lifecycle">
        <name>Service lifecycle.</name>
        <artwork><![CDATA[
                     +--------------+      +-------------+
         New         |              |      |             |
       Service +----->  (1) Service +------> (2) Service |
                     |  Deployment  |      |  Selection  |
                     |              |      |             |
                     +-----^--------+      +-------^-----+
                           |                       |
                           |                       |
                           |                       |
                           |    +-------------+    |
                           |    |             |    |
                           +----> (3) Service <----+
                                |  Assurance  |
                                |             |
                                +-------------+
]]></artwork>
      </figure>
      <t>At the edge, compute nodes are deployed near
communication nodes (e.g., co-located
in a 5G base station) to provide computing services that are
close to users with the goal to (1) reduce latency, (2) increase
communication bandwidth, (3) increase reliability, (4) enable privacy
and security, (5) enable personalization, and (6) reduce cloud costs and
energy consumption. Services are deployed on the communication and compute
infrastructure through a phased lifecycle that generally involves a
service <em>deployment stage</em>, a <em>service selection</em> stage, and a <em>service assurance</em> stage,
 as shown in <xref target="lifecycle"/>.</t>
      <!--
In this Section, we introduce the lifecycle of a
service as a simple framework to understand the capabilities
that are lacking in today's protocol interfaces and that are necessary for
these new services. -->

<t><strong>(1) Service deployment.</strong> This stage is carried out by the service provider
and involves the deployment of a new service (e.g., a distributed AI
training/inference, an XR/AR service, etc.) on the compute and communication
infrastructure.  The service provider needs to properly size the amount of
compute and communication resources assigned to this new service to meet
the expected user demand.  The decision on where the service is deployed
and how many resources are requested from the infrastructure depends on
the levels of Quality of Experience (QoE) that the provider wants to guarantee
to the users of the service. To make a proper deployment decision, the
provider must have visibility on the resources available within the infrastructure,
including compute (e.g., CPU, GPU, memory and storage capacity) and
communication (e.g., link bandwidth and latency) resources.  For instance,
to run a Large Language Model (LLM) with 175 billion parameters, a total
aggregated memory of 350GB and 5 GPUs may be needed \cite{llm_comp_req}.
The service provider needs an interface to query the infrastructure,
extract the available compute and communication resources, and decide
which subset of resources are needed to run the service.</t>
      <t><strong>(2) Service selection.</strong> This stage is initiated by the user, through a
client application that connects to the deployed service.  There are two
main actions that must be performed in the service selection stage:
(2.a) \textit{compute node selection} and (2.b) \textit{path selection}.
In the compute node selection step, as the service is generally replicated
in N locations (e.g., by leveraging a microservice architecture), the
application must decide which of the service replicas it connects to.
This decision depends on the compute properties (e.g., CPU/GPU
availability) of the compute nodes running the service replicas.
On the other hand, in the path selection decision, the application must
decide which path it chooses to connect to the service.  This decision
depends on the communication properties (e.g., bandwidth and latency) of
the available paths.  Similar to the service deployment case, the application
needs an interface to query the infrastructure and extract the available
compute and communication resources, with the goal to make informed node
and path selection decisions. Note that in some scenarios, the network
or service provider can make node and path selection decisions in lieu
of the application. It is also important to note that, ideally, the node
and path selection decisions should be jointly optimized, since in general
the best end-to-end performance is achieved by jointly taking into account
both factors.  In some cases, however, such decisions may be owned by
different players.  For instance, in some network environments, the path
selection may be decided by the network operator, wheres the compute node
selection may be decided by the application or the service provider.
Even in these cases, it is crucial to have a proper interface (for
both the operators and the application) to query the available compute
and communication resources from the system.</t>
      <t><strong>(3) Service assurance.</strong> Due to the stringent Quality of Experience (QoE)
requirements of edge applications, service assurance (SA) is also essential.
SA continuously monitors service performance to ensure that the distributed
computing and communication system meets the applicable Service Level Objectives (SLOs).
If the SLOs are not met, corrective actions can be taken by the
service provider, the application, or the network provider.
The evaluation of SLO compliance needs to consider both computing metrics (e.g.,
compute latency, memory requirements) and communication metrics (e.g.,
bandwidth, latency). Corrective actions can include both new service placement and
new service selection tasks. For instance, upon detecting that a certain compute
node is overloaded, increasing the compute delay above the corresponding
SLO threshold, the application can reinvoke service node selection (2.a)
to migrate its workload to another less utilized compute node.
Similarly, upon detecting that a certain communication link
is congested, increasing the communication delay above
the corresponding SLO threshold, the application can reinvoke service path
selection (2.b) to move the data flow to another less congested link.
If SA detects that there are not enough compute or communication resources
to guarantee the SLOs, it can also invoke service placement (1) to allocate
additional compute and communication resources.</t>
      <t><xref target="prob_space"/> summarizes the problem space, the information that needs to be exposed,
and the stakeholders that need this information.</t>
      <table anchor="prob_space">
        <name>Problem space, needs, and stakeholders.</name>
        <thead>
          <tr>
            <th align="right">Action to take</th>
            <th align="center">Information needed</th>
            <th align="left">Who needs it</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">(1) Service placement</td>
            <td align="center">Compute and communication</td>
            <td align="left">Service provider</td>
          </tr>
          <tr>
            <td align="right">(2.a) Service selection: compute node selection</td>
            <td align="center">Compute and communication</td>
            <td align="left">Network provider, service provider or application</td>
          </tr>
          <tr>
            <td align="right">(2.b) Service selection: path selection</td>
            <td align="center">Communication</td>
            <td align="left">Network provider or application</td>
          </tr>
          <tr>
            <td align="right">(3) Service assurance</td>
            <td align="center">Compute and communication</td>
            <td align="left">Network provider, service provider or application</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <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, GPUs, and NPUs) are deployed to build the edge cloud leveraging
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>
            <t>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.</t>
          </li>
          <li>
            <t>Latency: For applications such as driverless vehicles which require real-time
inference at very low latency, running at the edge is necessary.</t>
          </li>
          <li>
            <t>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.
Further, limited or no connectivity generally requires running the workloads at the edge.</t>
          </li>
          <li>
            <t>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.</t>
          </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 a set of characters forming words or fractions of words.
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 accuracy 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.</t>
      </section>
      <section anchor="open-abstraction-for-edge-computing">
        <name>Open Abstraction for Edge Computing</name>
        <t>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.</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).</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 Service Level Objectives (SLOs) that impose
constraints not only in terms of the required computational resources
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
constraints, 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>
      </section>
    </section>
    <section anchor="production-and-consumption-scenarios-of-compute-related-information">
      <name>Production and Consumption Scenarios of Compute-related Information</name>
      <t>From the standpoint of the network operator and the service provider,
understanding the scenarios of production and consumption of compute and
communication-related information is essential. By leveraging this combination,
it becomes possible to optimize resource and workload placement, leading to
significant operational cost reductions for operators and service providers,
as well as enhanced service levels for end users.</t>
      <section anchor="producers-of-compute-related-information">
        <name>Producers of Compute-Related Information</name>
        <t>The information relative to compute (e.g., processing capabilities, memory,
storage capacity, etc.) can be structured in two ways. On one hand, the
information corresponding to the raw compute resources; on the other hand,
the information of resources allocated or utilized by a specific
application or service function.</t>
        <t>The former is typically provided by the management systems enabling the
virtualization of the physical resources for a later assignment to the
processes running on top. Cloud Managers or Virtual Infrastructure Managers
are usually the entities that manage these resources. These management
systems offer APIs to access the available resources in the computing
facility. Thus, it can be expected that these APIs can also be used for
consuming such information. Once the raw resources are retrieved from
the various compute facilities, it is possible to generate topological
network views including such resources, as proposed in <xref target="I-D.llc-teas-dc-aware-topo-model"/>.</t>
        <t>Regarding the resources allocated or utilized by a specific application
or service function, two situations apply: (1) The total allocation of resources, and
(2) the allocation per service or application. In the first case, the
information can be supplied by the virtualization management systems described
before. For the specific per-service allocation, it can be expected
that the specific management systems of the service or application are
capable of providing the resources being used at run time,
typically as part of the allocated ones. In this last scenario,
it is also reasonable to expect the availability of APIs offering this
information, even though they can be specific to the service or application.</t>
      </section>
      <section anchor="consumers-of-compute-related-information">
        <name>Consumers of Compute-Related Information</name>
        <t>The consumption of compute-related information is relative to the
different phases of the service lifecycle (<xref target="lifecycle"/>). This means
that this information can be consumed in different points of time
and for different purposes.</t>
        <t>The expected consumers can be both external or internal to the network.
As external consumers, it is possible to consider external application
management systems requiring resource availability information for
service function placement decision, workload migration in the case
of consuming raw resources, or requiring information on the usage
of resources for service assurance or service scaling, among others.</t>
        <t>As internal consumers, it is possible to consider network
management entities requiring information on the level of
resource utilization for traffic steering (e.g., as done by the
Path Selector in <xref target="I-D.ldbc-cats-framework"/>), load balance,
or analytics, among others.</t>
      </section>
    </section>
    <section anchor="metrics-selection-and-exposure">
      <name>Metrics Selection and Exposure</name>
      <t>Regarding metrics exposure one can distinguish the topics of (1)
how the metrics are exposed and (2) which kind of metrics need to be exposed.
The infrastructure resources can be divided into (1) network and (2) compute related
resources. This section intends to give a brief outlook regarding these resources
for stimulating additional discussion with related work going on in
other IETF working groups or standardization bodies.</t>
      <!-- Network based resources can roughly be subdivided according to the -->
<!-- network structure into edge, backbone, and cloud resources. -->

<section anchor="considerations-about-metrics">
        <name>Considerations about Metrics</name>
        <t>The metrics considered in this document should be used to support
decisions for selection and deployment of services and applications.
Further iterations of this document may consider additional
lifecycle operations such as assurance and relevant metrics.</t>
        <t>The network metrics listed above are specified in a number of
IETF documents such as RFC 9439 <xref target="I-D.ietf-alto-performance-metrics"/>,
which itself leverages on RFC 7679. The work on compute metrics
at the IETF, on the other hand, is in its first stages and merely
relates to low-level infrastructure metrics such as in <xref target="RFC7666"/>.
However:</t>
        <ul spacing="normal">
          <li>
            <t>Decisions for service deployment and selection also involve
decisions that require an aggregated view, for instance, at the
service level.</t>
          </li>
          <li>
            <t>Deciding entities may only have partial access to the compute
information and actually do not need to have all the details.</t>
          </li>
        </ul>
        <t>A number of public tools and methods to test compute facility
performances are made available by cloud service providers or
service management businesses (e.g., see <xref target="UPCLOUD"/> and <xref target="IR"/>).
However, for the proposed performance metrics, their definition and
acquisition method may differ from one provider to the other,
making it thus challenging to compare performances across different
providers. The latter aspect is particularly problematic for
applications running at the edge where a complex ecosystem of
operators, vendors, and application providers is involved
and calls for a common standardized definition.
<!--  REFS
UPCLOUD https://upcloud.com/resources/tutorials/how-to-benchmark-cloud-servers
IR https://www.ir.com/guides/cloud-performance-testing-->
        </t>
      </section>
      <section anchor="metric-dimensions">
        <name>Metric Dimensions</name>
        <t>Upon exploring existing work, this draft
proposes to consider a number of dimensions before identifying
the compute metrics needed to take a service operation decision.
This list is initial and is to be updated upon further discussion.</t>
        <t>Dimensions helping to identify needed compute metrics:</t>
        <table anchor="comp_dimensions">
          <name>Dimensions to consider when identifying the needed compute metrics.</name>
          <thead>
            <tr>
              <th align="left">Dimension</th>
              <th align="left">Definition of dimension</th>
              <th align="left">Examples</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Target operation</td>
              <td align="left">What operation the metric is used for</td>
              <td align="left">Monitoring, benchmarking, service placement and selection</td>
            </tr>
            <tr>
              <td align="left">Driving KPI(s)</td>
              <td align="left">KPI(s) assessed with the metrics</td>
              <td align="left">Speed, scalability, cost, stability</td>
            </tr>
            <tr>
              <td align="left">Decision scope</td>
              <td align="left">Granularity of metric definition</td>
              <td align="left">Infrastructure node/cluster, compute service, end-to-end application</td>
            </tr>
            <tr>
              <td align="left">Receiving entity</td>
              <td align="left">Function receiving the metrics</td>
              <td align="left">Router, centralized controller, application management</td>
            </tr>
            <tr>
              <td align="left">Deciding entity</td>
              <td align="left">Function using the metrics to compute decisions</td>
              <td align="left">Router, centralized controller, application management</td>
            </tr>
          </tbody>
        </table>
        <t>The "value" of a dimension has an impact on the characteristic of the metric to consider. In particular:</t>
        <ul spacing="normal">
          <li>
            <t>The target operation: determines the specific use case for the metric, such as monitoring, benchmarking, service placement, or selection, guiding the selection of relevant metrics.</t>
          </li>
          <li>
            <t>The driving KPI(s): leads to selecting metrics that are relevant from a performance standpoint.</t>
          </li>
          <li>
            <t>The decision scope: leads to selecting metrics at a relevant granularity or aggregation level.</t>
          </li>
          <li>
            <t>The receiving entity: impacts the dynamicity of the received metric values. While a router likely receives static information to moderate overhead, a centralized control function may receive more dynamic information that it may additionally process on its own.</t>
          </li>
          <li>
            <t>The deciding entity: computes the decisions to take upon metric values and needs information that is synchronized at an appropriate frequency.</t>
          </li>
        </ul>
        <t>Metric values undergo various lifecycle actions, primarily acquisition, processing, and exposure. These actions can be executed through different methodologies. Documenting these methodologies enhances the reliability and informed utilization of the metrics. Additionally, detailing the specific methods used for each approach further increases their reliability. The table below provides some examples:</t>
        <table anchor="metric_action">
          <name>Examples of lifecycle actions documented on metrics.</name>
          <thead>
            <tr>
              <th align="left">Lifecycle action</th>
              <th align="left">Example</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Acquisition method</td>
              <td align="left">telemetry, estimation</td>
            </tr>
            <tr>
              <td align="left">Value processing</td>
              <td align="left">aggregation, abstraction</td>
            </tr>
            <tr>
              <td align="left">Exposure</td>
              <td align="left">in-path distribution, off-path distribution</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="abstraction-level-and-information-access">
        <name>Abstraction Level and Information Access</name>
        <t>One important aspect to consider is that receiving entities that need to consume metrics to take selection or placement decisions do not always have access to computing information. In particular, several scenarios may need to be considered, among which:</t>
        <ul spacing="normal">
          <li>
            <t>The consumer is an ISP that does not own the compute infrastructure or has no access to full information. In this case, the compute metrics will likely be estimated.</t>
          </li>
          <li>
            <t>The consumer is an application that has no direct access to full information while the ISP has access to both network and compute information. However the ISP is willing to provide guidance to the application with abstract information.</t>
          </li>
          <li>
            <t>The consumer has access to full network and compute information and wants to use it for fine-grained decision making, e.g., at the node/cluster level.</t>
          </li>
          <li>
            <t>The consumer has access to full information but essentially needs guidance with abstracted information.</t>
          </li>
          <li>
            <t>The consumer has access to information that is abstracted or detailed depending on the metrics.</t>
          </li>
        </ul>
        <t>These scenarios further drive the selection of metrics upon the above mentioned dimensions.</t>
      </section>
      <section anchor="distribution-and-exposure-mechanisms">
        <name>Distribution and Exposure Mechanisms</name>
        <section anchor="metric-distribution-in-computing-aware-traffic-steering-cats">
          <name>Metric Distribution in Computing-Aware Traffic Steering (CATS)</name>
          <t>The IETF CATS WG has explored the collection and distribution of computing metrics in <xref target="I-D.ldbc-cats-framework"/>. In their deployment considerations, the authors consider three deployment models for the location of the service selection function: distributed, centralized and hybrid. For these three models, the compute metrics are, respectively:</t>
          <ul spacing="normal">
            <li>
              <t>Distributed among network devices directly.</t>
            </li>
            <li>
              <t>Dollected by a centralized control plane.</t>
            </li>
            <li>
              <t>Hybrid where some compute metrics are distributed among involved network devices,
and others are collected by a centralized control plane.</t>
            </li>
          </ul>
          <t>In the hybrid mode, the draft says that some static information (e.g., capabilities information) can be distributed among network devices since they are quite stable. Frequent changing information (e.g., resource utilization) can be collected by a centralized control plane to avoid frequent flooding in the distributed control plane.</t>
          <t>The hybrid mode thus stresses the impact of the dynamicity of the distributed metrics and the need to carefully sort out the metric exposure mode with respect to their dynamicity.</t>
          <t>The section on Metrics Distribution also indicates the need for required extensions to the routing protocols, in order to distribute additional information such as link latency and other information not standardized in these protocols, such as compute metrics.</t>
        </section>
        <section anchor="metric-exposure-with-extensions-of-alto">
          <name>Metric Exposure with Extensions of ALTO</name>
          <t>The ALTO protocol has been defined to expose an abstract network topology and related path costs in <xref target="RFC7285"/>. ALTO is a client-server protocol exposing information to clients that can be associated to applications as well as orchestrators. Its extension RFC 9240 allows to define entities on which properties can be defined, while <xref target="I-D.contreras-alto-service-edge"/> introduces a proposed entity property that allows to consider an entity as both a network element with network related costs and properties and a element of a data center with compute related properties. Such an exposure mechanism is particularly useful for decision making entities which are centralized and located off the network paths.</t>
        </section>
        <section anchor="exposure-of-abstracted-generic-metrics">
          <name>Exposure of Abstracted Generic Metrics</name>
          <t>In some cases, whether due to unavailable information details or for the sake of simplicity, a consumer may need reliable but simple guidance to select a service. To this end, abstracted generic metrics may be useful.</t>
          <t>One can consider a generic metric that can be named 'computingcost' and is applied to a contact point to one or more edge servers such as a load balancer, for short  an edge server, to reflect the network operator policy and preferences.  The metric “computingcost” results from an abstraction method that is hidden from users, similarly to the metric “routingcost” defined in <xref target="RFC7285"/>.  For instance, “computingcost” may be higher for an edge server located far away, or in disliked geographical areas, or owned by a provider who does not share information with the Internet Service Provider (ISP) or with which the ISP has a poorer commercial agreement.  'computingcost' may also reflect environmental preferences in terms, for instance, of energy source, average consumption vs. local climate, location adequacy vs. climate.</t>
          <t>One may also consider a generic metric named 'computingperf', applied to an edge server, that reflects its performance based on measurements or estimations by the ISP or combination thereof.  An edge server with a higher “computingperf” value will be preferred.  “computingperf” can be based on a vector of one or more metrics reflecting, for instance, responsiveness, reliability of cloud services based on metrics such as latency, packet loss, jitter, time to first and/or last byte, or a single value reflecting a global performance score.</t>
        </section>
      </section>
      <section anchor="examples-of-resources">
        <name>Examples of Resources</name>
        <section anchor="network-resources">
          <name>Network Resources</name>
          <t>Network resources relate to the traditional network
infrastructure. The next table provides examples of some of the
commonly used metrics:</t>
          <table anchor="net_res">
            <name>Examples of network resource metrics.</name>
            <thead>
              <tr>
                <th align="left">Kind of Resource</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">QoS</td>
              </tr>
              <tr>
                <td align="left">Latency</td>
              </tr>
              <tr>
                <td align="left">Bandwidth</td>
              </tr>
              <tr>
                <td align="left">RTT</td>
              </tr>
              <tr>
                <td align="left">Packet Loss</td>
              </tr>
              <tr>
                <td align="left">Jitter</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="cloud-resources">
          <name>Cloud Resources</name>
          <t>Cloud resources relate to the compute infrastructure
infrastructure. The next table provides examples of some of the
commonly used metrics:</t>
          <table anchor="cloud_res">
            <name>Examples of cloud resource parameters.</name>
            <thead>
              <tr>
                <th align="left">Resource</th>
                <th align="left">Type</th>
                <th align="left">Example</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">CPU</td>
                <td align="left">Compute</td>
                <td align="left">Available CPU resources in GHz</td>
              </tr>
              <tr>
                <td align="left">Memory</td>
                <td align="left">Compute</td>
                <td align="left">Available memory in GB</td>
              </tr>
              <tr>
                <td align="left">Storage</td>
                <td align="left">Storage</td>
                <td align="left">Available storage in GB</td>
              </tr>
              <tr>
                <td align="left">Configmaps</td>
                <td align="left">Object</td>
                <td align="left">Configuration and topology maps</td>
              </tr>
              <tr>
                <td align="left">Pods</td>
                <td align="left">Object</td>
                <td align="left">Current list of active pods</td>
              </tr>
              <tr>
                <td align="left">Jobs</td>
                <td align="left">Object</td>
                <td align="left">current list of active jobs</td>
              </tr>
              <tr>
                <td align="left">Services</td>
                <td align="left">Object</td>
                <td align="left">Concurrent services</td>
              </tr>
            </tbody>
          </table>
          <!-- | Secrets     |    Object        |   Possible secrets           | -->

</section>
      </section>
    </section>
    <section anchor="study-of-the-kubernetes-metrics-api-and-exposure-mechanism">
      <name>Study of the Kubernetes Metrics API and Exposure Mechanism</name>
      <t>An approach to develop IETF specifications for the definition of compute and
communication metrics is to leverage existing and mature solutions, whether based on
open standards or de facto standards. On one hand, this approach avoids
reinventing the wheel; on the other, it ensures the specifications are based
on significant industry experience and stable running code.</t>
      <t>For communication metrics, the IETF has already developed detailed and mature
specifications. An example is the ALTO Protocol <xref target="RFC7285"/>, which provides RFCs standardizing
communication metrics and a detailed exposure mechanism protocol.</t>
      <t>Compute metrics, however, have not been thoroughly studied within the IETF.
With the goal to avoid reinventing the wheel and to ensure significant industry
experience is taken into account, in this section we study the Kubernetes
Metric API. Kubernetes is not only a de facto standard to manage containerized
software in data centers, but it is also increasingly being used by telecommunication operators
to manage compute resources at the edge.</t>
      <section anchor="understanding-the-kubernetes-metrics-api-and-its-exposure-mechanism">
        <name>Understanding the Kubernetes Metrics API and its Exposure Mechanism</name>
        <t><xref target="kubernetes_metrics"/> shows the Kubernetes Metric API architecture.
It consists of the following components:</t>
        <t><strong>Pod</strong>. A collection of one or more containers.</t>
        <t><strong>Cluster</strong>. A collection of one or more pods.</t>
        <t><strong>HPA, VPA and 'kubectl stop'</strong>. Three different applications that
serve as examples of consumers of the Metrics API.
The HorizontalPodAutoscaler (HPA) and VerticalPodAutoscaler
(VPA) use data from the metrics
API to adjust workload replicas and resources to meet
customer demand. 'kubectl stop' can
be used to show all the metrics.</t>
        <t><strong>cAdvisor</strong>. Daemon for collecting metrics (CPU, memory, GPU, etc.) from all the containers
in a pod. It is responsible for aggregating and exposing these metrics to kubelet.</t>
        <t><strong>Kubelet</strong>. Node agent responsible for managing container resources. It includes the
ability to collect the metrics from the cAdvisor and making them accessible
using the /metrics/resource and /stats kubelet API endpoints.</t>
        <t><strong>Metrics server</strong>. Cluster agent responsible for collecting and aggregating resource metrics
from each kubelet.</t>
        <t><strong>API Server</strong>. General server providing API access to kubernetes services.
One of them corresponds to the Metrics API service. HPA, VPA, and
'kubectl top' query the API server to retrieve the metrics.</t>
        <figure anchor="kubernetes_metrics">
          <name>Collection and exposure of metrics using the Kubernetes Metrics API.</name>
          <artwork><![CDATA[
            +---------------------------------------------------------------------------------+
            |                                                                                 |
            |  Cluster                      +-----------------------------------------------+ |
            |                               |                                               | |
            |                               |  Node                           +-----------+ | |
            |                               |                                 | Container | | |
            |                               |                               +-+           | | |
            |                               |                               | |  runtime  | | |
            |                               |                 +----------+  | +-----------+ | |
+-------+   |                               |                 |          |  |               | |
|  HPA  <-+ |                               |               +-+ cAdvisor |<-+               | |
+-------+ | |                               |               | |          |  | +-----------+ | |
          | | +----------+    +-----------+ | +----------+  | +----------+  | | Container | | |
+-------+ | | |  API     |    |  Metrics  | | |          |  |               +-+           | | |
|  VPA  <-+-+-+          <--+-+           <-+-+ Kubelet  <--+                 |  runtime  | | |
+-------+ | | | server   |  | |   server  | | |          |  |                 +-----------+ | |
          | | +----------+  | +-----------+ | +----------+  |                               | |
+-------+ | |               |               |               |                               | |
|kubectl| | |               |               |               | +----------+                  | |
| top   <-+ |               | +-----------+ |               | |  Other   |                  | |
+-------+   |               | |  Other    | |               +-+   pod    |                  | |
            |               +-+           | |                 |   data   |                  | |
            |                 |  data     | |                 +----------+                  | |
            |                 +-----------+ |                                               | |
            |                               +-----------------------------------------------+ |
            |                                                                                 |
            +---------------------------------------------------------------------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="example-of-how-to-map-the-kubernetes-metrics-api-with-the-ietf-cats-metrics-distribution">
        <name>Example of How to Map the Kubernetes Metrics API with the IETF CATS METRICS Distribution</name>
        <t>In this section, we describe a mapping between
the Kubernetes Metrics API and the IETF CATS metric dissemination
architecture, illustrating and example of how a de facto standard widely
used in production systems can be adapted to support the CATS metrics
framework.</t>
        <t>To describe the mapping, we take the centralized model
of the CATS metrics dissemination framework introduced in
<xref target="I-D.ldbc-cats-framework"/>, which we include in <xref target="cats_framework"/>
for ease of reading. (Similar mappings can be created with the
distributed and hybrid models also introduced in this <xref target="cats_framework"/>)</t>
        <figure anchor="cats_framework">
          <name>Collection and exposure of metrics using the CATS Centralized Model. (Taken from [I-D.ldbc-cats-framework])</name>
          <artwork><![CDATA[
            :       +------+
            :<------| C-PS |<----------------------------------+
            :       +------+ <------+              +--------+  |
            :          ^            |           +--|CS-ID 1 |  |
            :          |            |           |  |CIS-ID 1|  |
            :          |   +----------------+   |  +--------+  |
            :          |   |    C-SMA       |---|Service Site 2|
            :          |   +----------------+   |  +--------+  |
            :          |   |CATS-Forwarder 2|   +--|CS-ID 1 |  |
            :          |   +----------------+      |CIS-ID 2|  |
+--------+  :          |             |             +--------+  |
| Client |  :  Network |   +----------------------+            |
+--------+  :  metrics |   | +-------+            |            |
     |      :          +-----| C-NMA |            |      +-----+
     |      :          |   | +-------+            |      |C-SMA|<-+
+----------------+ <---+   |                      |      +-----+  |
|CATS-Forwarder 1|---------|                      |          ^    |
+----------------+         |       Underlay       |          |    |
            :              |     Infrastructure   |     +--------+|
            :              |                      |     |CS-ID 1 ||
            :              +----------------------+  +--|CIS-ID 3||
            :                        |               |  +--------+|
            :          +----------------+------------+            |
            :          |CATS-Forwarder 3|         Service Site 3  |
            :          +----------------+                         |
            :                        |       :      +-------+     |
            :                        +-------:------|CS-ID 2|-----+
            :                                :      +-------+
            :<-------------------------------:
]]></artwork>
        </figure>
        <t>The following table provides the mapping:</t>
        <table anchor="kub_cats_map">
          <name>Example of how to map the Kubernetes Metrics API with the IETF CATS Architecture.</name>
          <thead>
            <tr>
              <th align="left">IETF CATS component</th>
              <th align="left">Kubernetes Metrics API component</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CIS-ID</td>
              <td align="left">Container runtime</td>
            </tr>
            <tr>
              <td align="left">C-SMA</td>
              <td align="left">cAdvisor</td>
            </tr>
            <tr>
              <td align="left">C-NMA</td>
              <td align="left">Other data</td>
            </tr>
            <tr>
              <td align="left">C-PS</td>
              <td align="left">HPA, VPA</td>
            </tr>
            <tr>
              <td align="left">CATS Service Site</td>
              <td align="left">Node</td>
            </tr>
            <tr>
              <td align="left">CATS Service</td>
              <td align="left">Cluster</td>
            </tr>
          </tbody>
        </table>
        <t>Note that while in Kubernetes there are multiple levels of abstraction
to reach the Metrics API (cAdvisor -&gt; kubelet -&gt; metrics  server -&gt; API server),
they can all be co-located in the cAdvisor, which can then be mapped to the
C-SMA module in CATS.</t>
      </section>
      <section anchor="available-metrics-from-the-kubernetes-metrics-api">
        <name>Available Metrics from the Kubernetes Metrics API</name>
        <t>The Kubernetes Metrics API implementation
can be found in staging/src/k8s.io/kubelet/pkg/apis/stats/v1alpha1/types.go
as part of the Kubernetes repository (https://github.com/kubernetes/kubernetes):</t>
        <t>In this section we provide a summary of the metrics offered by the API:</t>
        <table anchor="kub_metrics_node">
          <name>Summary of the Kubernetes Metric API: Node-level metrics.</name>
          <thead>
            <tr>
              <th align="left">Nodel-level metric</th>
              <th align="left">Decription</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">nodeName</td>
              <td align="left">Name of the node</td>
            </tr>
            <tr>
              <td align="left">ContainerStats</td>
              <td align="left">Stats of the containers within this node</td>
            </tr>
            <tr>
              <td align="left">CPUStats</td>
              <td align="left">Stats pertaining to CPU resources</td>
            </tr>
            <tr>
              <td align="left">MemoryStats</td>
              <td align="left">Stats pertaining to memory (RAM) resources</td>
            </tr>
            <tr>
              <td align="left">NetworkStats</td>
              <td align="left">Stats pertaining to network resources</td>
            </tr>
            <tr>
              <td align="left">FsStats</td>
              <td align="left">Stats pertaining to the filesystem resources</td>
            </tr>
            <tr>
              <td align="left">RuntimeStats</td>
              <td align="left">Stats about the underlying containers runtime</td>
            </tr>
            <tr>
              <td align="left">RlimitStats</td>
              <td align="left">Stats about the rlimits of system</td>
            </tr>
          </tbody>
        </table>
        <table anchor="kub_metrics_pod">
          <name>Summary of the Kubernetes Metric API: Pod-level metrics.</name>
          <thead>
            <tr>
              <th align="left">Pod-level metric</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">PodReference</td>
              <td align="left">Reference to the measured Pod</td>
            </tr>
            <tr>
              <td align="left">CPU</td>
              <td align="left">Stats pertaining to CPU resources consumed by pod cgroup</td>
            </tr>
            <tr>
              <td align="left">Memory</td>
              <td align="left">Stats pertaining to memory (RAM) resources consumed by pod cgroup</td>
            </tr>
            <tr>
              <td align="left">NetworkStats</td>
              <td align="left">Stats pertaining to network resources</td>
            </tr>
            <tr>
              <td align="left">VolumeStats</td>
              <td align="left">Stats pertaining to volume usage of filesystem resources</td>
            </tr>
            <tr>
              <td align="left">FsStats</td>
              <td align="left">Total filesystem usage for the containers</td>
            </tr>
            <tr>
              <td align="left">ProcessStats</td>
              <td align="left">Stats pertaining to processes</td>
            </tr>
          </tbody>
        </table>
        <table anchor="kub_metrics_container">
          <name>Summary of the Kubernetes Metric API: Container-level metrics.</name>
          <thead>
            <tr>
              <th align="left">Container-level metric</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">name</td>
              <td align="left">Name of the container</td>
            </tr>
            <tr>
              <td align="left">CPUStats</td>
              <td align="left">Stats pertaining to CPU resources</td>
            </tr>
            <tr>
              <td align="left">MemoryStats</td>
              <td align="left">Stats pertaining to memory (RAM) resources</td>
            </tr>
            <tr>
              <td align="left">AcceleratorStats</td>
              <td align="left">Metrics for Accelerators (e.g., GPU, NPU, etc.)</td>
            </tr>
            <tr>
              <td align="left">FsStats</td>
              <td align="left">Stats pertaining to the container's filesystem resources</td>
            </tr>
            <tr>
              <td align="left">UserDefinedMetrics</td>
              <td align="left">User defined metrics that are exposed by containers in the pod</td>
            </tr>
          </tbody>
        </table>
        <t>For more details, refer to https://github.com/kubernetes/kubernetes under the path
staging/src/k8s.io/kubelet/pkg/apis/stats/v1alpha1/types.go.</t>
      </section>
    </section>
    <section anchor="related-work">
      <name>Related Work</name>
      <t>Some existing work has explored compute-related metrics. It can be categorized as follows:</t>
      <ul spacing="normal">
        <li>
          <t><strong>References providing raw compute infrastructure metrics</strong>:  </t>
          <ul spacing="normal">
            <li>
              <t><xref target="I-D.contreras-alto-service-edge"/> includes references to cloud management solutions (e.g., OpenStack, Kubernetes) that administer the virtualization infrastructure, providing information about raw compute infrastructure metrics.</t>
            </li>
            <li>
              <t><xref target="NFV-TST"/> describes metrics related to processor, memory, and network interface usage.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>References providing compute virtualization metrics</strong>:
          </t>
          <ul spacing="normal">
            <li>
              <t><xref target="RFC7666"/> defines several metrics as part of the Management Information Base (MIB) for managing virtual machines controlled by a hypervisor. These objects reference the resources consumed by a particular virtual machine serving as a host for services or applications.</t>
            </li>
            <li>
              <t><xref target="NFV-INF"/> provides metrics associated with virtualized network functions.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>References providing service metrics including compute-related information</strong>:
          </t>
          <ul spacing="normal">
            <li>
              <t><xref target="I-D.dunbar-cats-edge-service-metrics"/> proposes metrics associated with services running in compute infrastructures. Some of these metrics do not depend on the infrastructure behavior itself but on the topological location of the compute infrastructure.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>Other existing work at the IETF CATS WG</strong>:
          </t>
          <ul spacing="normal">
            <li>
              <t><xref target="I-D.ldbc-cats-framework"/> explores the collection and distribution of computing metrics. In their deployment considerations, they consider three models: distributed, centralized, and hybrid.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="guiding-principles">
      <name>Guiding Principles</name>
      <t>The driving principles for designing an interface to jointly extract network and compute information are as follows:</t>
      <ul spacing="normal">
        <li>
          <t><strong>P1. Leverage existing metrics across working groups to avoid reinventing the wheel.</strong> For instance:
          </t>
          <ul spacing="normal">
            <li>
              <t>RFC 9439 (<xref target="I-D.ietf-alto-performance-metrics"/>) leverages IPPM metrics from RFC 7679.</t>
            </li>
            <li>
              <t>Section 5.2 of <xref target="I-D.du-cats-computing-modeling-description"/> considers delay as a good metric, since it is easy to use in both compute and communication domains. RFC 9439 also defines delay as part of the performance metrics.</t>
            </li>
            <li>
              <t>Section 6 of <xref target="I-D.du-cats-computing-modeling-description"/> proposes representing the network structure as graphs, similar to the ALTO map services in RFC 7285.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>P2. Aim for simplicity, while ensuring the combined efforts don’t leave technical gaps in supporting the full lifecycle of service deployment and selection.</strong> For instance:
          </t>
          <ul spacing="normal">
            <li>
              <t>The CATS working group covers path selection from a network standpoint, while ALTO (e.g., RFC 7285) covers exposing network information to the service provider and the client application. However, there is currently no effort being pursued to expose compute information to the service provider and the client application for service placement or selection.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="gap-analysis">
      <name>GAP Analysis</name>
      <t>From this related work it is evident that compute-related metrics can serve several purposes, ranging from service instance instantiation to service instance behavior, and then to service instance selection. Some of the metrics could refer to the same object (e.g., CPU) but with a particular usage and scope.</t>
      <t>In contrast, the network metrics are more uniform and straightforward. It is then necessary to consistently define a set of metrics that could assist to the operation in the different concerns identified so far, so that networks and systems could have a common understanding of the perceived compute performance. When combined with network metrics, the combined network plus compute performance behavior will assist informed decisions particular to each of the operational concerns related to the different parts of a service lifecycle.</t>
    </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>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7285">
          <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="I-D.ietf-alto-performance-metrics">
          <front>
            <title>Application-Layer Traffic Optimization (ALTO) Performance Cost Metrics</title>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Y. Richard Yang" initials="Y. R." surname="Yang">
              <organization>Yale University</organization>
            </author>
            <author fullname="Young Lee" initials="Y." surname="Lee">
              <organization>Samsung</organization>
            </author>
            <author fullname="Dhruv Dhody" initials="D." surname="Dhody">
              <organization>Huawei</organization>
            </author>
            <author fullname="Sabine Randriamasy" initials="S." surname="Randriamasy">
              <organization>Nokia Bell Labs</organization>
            </author>
            <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras">
              <organization>Telefonica</organization>
            </author>
            <date day="21" month="March" year="2022"/>
            <abstract>
              <t>The cost metric is a basic concept in Application-Layer Traffic
Optimization (ALTO), and different applications may use different
types of cost metrics. Since the ALTO base protocol (RFC 7285)
defines only a single cost metric (namely, the generic "routingcost"
metric), if an application wants to issue a cost map or an endpoint
cost request in order to identify a resource provider that offers
better performance metrics (e.g., lower delay or loss rate), the base
protocol does not define the cost metric to be used.

 This document addresses this issue by extending the specification to
provide a variety of network performance metrics, including network
delay, delay variation (a.k.a. jitter), packet loss rate, hop count,
and bandwidth.

 There are multiple sources (e.g., estimations based on measurements
or a Service Level Agreement) available for deriving a performance
metric. This document introduces an additional "cost-context" field
to the ALTO "cost-type" field to convey the source of a performance
metric.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-alto-performance-metrics-28"/>
        </reference>
        <reference anchor="I-D.du-cats-computing-modeling-description">
          <front>
            <title>Computing Information Description in Computing-Aware Traffic Steering</title>
            <author fullname="Zongpeng Du" initials="Z." surname="Du">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Kehan Yao" initials="K." surname="Yao">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Cheng Li" initials="C." surname="Li">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Daniel Huang" initials="D." surname="Huang">
              <organization>ZTE</organization>
            </author>
            <author fullname="Zhihua Fu" initials="Z." surname="Fu">
              <organization>New H3C Technologies</organization>
            </author>
            <date day="6" month="July" year="2024"/>
            <abstract>
              <t>   This document describes the considerations and requirements of the
   computing information that needs to be notified into the network in
   Computing-Aware Traffic Steering (CATS).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-du-cats-computing-modeling-description-03"/>
        </reference>
        <reference anchor="I-D.ldbc-cats-framework">
          <front>
            <title>A Framework for Computing-Aware Traffic Steering (CATS)</title>
            <author fullname="Cheng Li" initials="C." surname="Li">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Zongpeng Du" initials="Z." surname="Du">
              <organization>China Mobile</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="John Drake" initials="J." surname="Drake">
              <organization>Juniper Networks, Inc.</organization>
            </author>
            <date day="8" month="February" year="2024"/>
            <abstract>
              <t>   This document describes a framework for Computing-Aware Traffic
   Steering (CATS).  Particularly, the document identifies a set of CATS
   components, describes their interactions, and exemplifies the
   workflow of the control and data planes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ldbc-cats-framework-06"/>
        </reference>
        <reference anchor="RFC2119">
          <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">
          <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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="NFV-TST" target="https://www.etsi.org/deliver/etsi_gs/NFV-TST/001_099/008/03.03.01_60/gs_NFV-TST008v030301p.pdf">
          <front>
            <title>ETSI GS NFV-TST 008 V3.3.1, NFVI Compute and Network Metrics Specification</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="June" day="01"/>
          </front>
        </reference>
        <reference anchor="NFV-INF" target="https://www.etsi.org/deliver/etsi_gs/NFV-INF/001_099/010/01.01.01_60/gs_NFV-INF010v010101p.pdf">
          <front>
            <title>ETSI GS NFV-INF 010, v1.1.1, Service Quality Metrics</title>
            <author>
              <organization/>
            </author>
            <date year="2014" month="December" day="01"/>
          </front>
        </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>
        <reference anchor="UPCLOUD" target="https://upcloud.com/resources/tutorials/how-to-benchmark-cloud-servers">
          <front>
            <title>How to benchmark Cloud Servers</title>
            <author>
              <organization/>
            </author>
            <date year="2023" month="May"/>
          </front>
        </reference>
        <reference anchor="IR" target="https://www.ir.com/guides/cloud-performance-testing">
          <front>
            <title>Cloud Performance Testing Best Tips and Tricks</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="LLM_COMP_REQ" target="https://alpa.ai/tutorials/opt_serving.html">
          <front>
            <title>Serving OPT-175B, BLOOM-176B and CodeGen-16B using Alpa</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.llc-teas-dc-aware-topo-model">
          <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>Alef Edge</organization>
            </author>
            <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras">
              <organization>Telefonica</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <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-03"/>
        </reference>
        <reference anchor="RFC7666">
          <front>
            <title>Management Information Base for Virtual Machines Controlled by a Hypervisor</title>
            <author fullname="H. Asai" initials="H." surname="Asai"/>
            <author fullname="M. MacFaden" initials="M." surname="MacFaden"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="K. Shima" initials="K." surname="Shima"/>
            <author fullname="T. Tsou" initials="T." surname="Tsou"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, this specifies objects for managing virtual machines controlled by a hypervisor (a.k.a. virtual machine monitor).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7666"/>
          <seriesInfo name="DOI" value="10.17487/RFC7666"/>
        </reference>
        <reference anchor="I-D.contreras-alto-service-edge">
          <front>
            <title>Use of ALTO for Determining Service Edge</title>
            <author fullname="Luis M. Contreras" initials="L. M." surname="Contreras">
              <organization>Telefonica</organization>
            </author>
            <author fullname="Sabine Randriamasy" initials="S." surname="Randriamasy">
              <organization>Nokia Bell Labs</organization>
            </author>
            <author fullname="Jordi Ros-Giralt" initials="J." surname="Ros-Giralt">
              <organization>Qualcomm Europe</organization>
            </author>
            <author fullname="Danny Alex Lachos Perez" initials="D. A. L." surname="Perez">
              <organization>Benocs</organization>
            </author>
            <author fullname="Christian Esteve Rothenberg" initials="C. E." surname="Rothenberg">
              <organization>Unicamp</organization>
            </author>
            <date day="13" month="October" year="2023"/>
            <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-contreras-alto-service-edge-10"/>
        </reference>
        <reference anchor="I-D.dunbar-cats-edge-service-metrics">
          <front>
            <title>5G Edge Services Use Cases</title>
            <author fullname="Linda Dunbar" initials="L." surname="Dunbar">
              <organization>Futurewei</organization>
            </author>
            <author fullname="Kausik Majumdar" initials="K." surname="Majumdar">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Gyan Mishra" initials="G. S." surname="Mishra">
              <organization>Huawei</organization>
            </author>
            <author fullname="Haibo Wang" initials="H." surname="Wang">
              <organization>Huawei</organization>
            </author>
            <author fullname="Haoyu Song" initials="H." surname="Song">
              <organization>Futurewei</organization>
            </author>
            <date day="6" month="July" year="2023"/>
            <abstract>
              <t>   This draft describes the 5G Edge computing use cases for CATS
   and how BGP can be used to propagate additional IP layer
   detectable information about the 5G edge data centers so that
   the ingress routers in the 5G Local Data Network can make
   path selections based on not only the routing distance but
   also the IP Layer relevant metrics of the destinations. The
   goal is to improve latency and performance for 5G Edge
   Computing (EC) services even when the detailed servers
   running status are unavailable.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dunbar-cats-edge-service-metrics-01"/>
        </reference>
      </references>
    </references>
    <?line 883?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The work from Luis M. Contreras has been partially funded by the European Union under Horizon Europe projects NEMO (NExt generation Meta Operating system) grant number 101070118, and CODECO (COgnitive, Decentralised Edge-Cloud Orchestration), grant number 101092696.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
