<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902" submissionType="IETF" docName="draft-bernardos-cats-anchoring-service-mobility-01">
  <front>
      <title abbrev="CATS Service mobility IP addr anchoring">
Service Mobility-Enabled Computing Aware Traffic Steering using IP address anchoring
      </title>

    <!-- AUTHORS -->
    <author fullname="Carlos J. Bernardos"
            initials="CJ."
            surname="Bernardos">
      <organization abbrev="UC3M">
        Universidad Carlos III de Madrid
      </organization>
      <address>
        <postal>
          <street>Av. Universidad, 30</street>
          <city>Leganes, Madrid</city>
          <code>28911</code>
          <country>Spain</country>
        </postal>
        <phone>+34 91624 6236</phone>
        <email>cjbc@it.uc3m.es</email>
        <uri>http://www.it.uc3m.es/cjbc/</uri>
      </address>
    </author>

    <author fullname="Alain Mourad"
            initials="A."
            surname="Mourad">
      <organization abbrev="InterDigital">
        InterDigital Europe
      </organization>
      <address>
        <email>Alain.Mourad@InterDigital.com</email>
        <uri>http://www.InterDigital.com/</uri>
      </address>
    </author>

    <area>Routing</area>

    <workgroup>CATS WG</workgroup>

    <abstract>

      <t>
The IETF CATS WG addresses the problem of how the network infrastructure can steer traffic between clients of a service and sites offering the service, considering both network metrics (such as bandwidth and latency), and compute metrics (such as processing, storage capabilities, and capacity). 
      </t>
      
      <t>
This document defines new extensions and procedures for a terminal connected to
a network infrastructure, to benefit from transparent service migration adapting
to specific connectivity and computing requirements, so traffic is always
steered to an instance meeting both requirements. Both CATS-aware and -unaware
terminals are considered. Exemplary signaling control messages and operation
extending the well-known Proxy Mobile IPv6 protocol are also defined.
      </t>

    </abstract>

  </front>

  <middle>

    <section anchor="sec:introduction" title="Introduction and Problem Statement">

      <section anchor="sec:use_case_scenario" title="Use case scenario">
      
      <t>
Let's consider a possible use case scenario, just for the sake of illustrating
the scenario. A terminal is running an AR/VR/XR application (note that this is
just an example, other services would also benefit from compute and connectivity
traffic steering). Part of this service is executed in the network
infrastructure, posing some requirements on the connectivity (e.g., delay
between the terminal and the node where the service is executed on the network
infrastructure) and computing resources (e.g., capabilities to render the XR
video within a certain latency budget). Within the network domain where the
terminal is connected to there are multiple sites capable of hosting the
service, each with potentially different connectivity and computing
characteristics. <xref target="fig:ps_scenario" /> shows an exemplary scenario.
Considering the connectivity and computing latencies (just as an example of
metrics), the best service site is #n-1 in the example used in the Figure.
      </t>

<figure anchor="fig:ps_scenario" title="Exemplary scenario" >
<artwork><![CDATA[
                             ________________ 
                            (     ---------- )
                           (      |        |  ) 
                         (     ---------- |   )
   ________________     (     |        | |    )     ________________
  (     ---------- )    (   ---------- | |    )    (    ---------- )
 (      |        |  )   (   |service | |-     )   (     |        |  )
(     ---------- |   )  (   |contact | |      )  (    ---------- |  )
(     |        | |   )  (   |instance|--      )  (    |        | |  )
(   ---------- | |   )   (  ----------       )   (  ---------- | |  ) 
(   |service | |-    )    ( Serv. site #N-1 )    (  |service | |-   )
(   |contact | |     )     -------+----------     (  |contact | |   )
(   |instance|--    )   Computing  \              (  |instance|--   ) 
 (  ----------     )    delay:4ms   \              ( ----------     ) 
  ( Serv. site #1 )           --------+--           ( Serv. site #N )
   -------+--------       ----| ECR#N-1 |----        ---------+-----
           \  Computing --     -----------    --  Computing  /
            \ delay:10ms      Networking          delay:5ms /
          ---+-----           delay:7ms              ------+--
        ( | ECR#1 |            //                    | ECR#N | )
       (  ---------           //                     ---------  )
      ( Networking           //                       Networking )
     (  delay:5ms           //                         delay:15ms )
    (                      //                                      )
    (                     //                                       )
     (                   //                                       )
      (                 //                                       )
       (               //                                       )
        (       ---------                     ---------        )
         -------| ICR#1 |---------------------| ICR#2 |--------
                ---------                     --------- 
                  (·)
                 (·)
               ------
               | UE |
               ------  
]]></artwork>
</figure>

      </section>

      <section anchor="sec:ps" title="Problem statement">
      
      <t>
The main problem that this document tries to address is the following.
Networking systems do not have mechanisms yet to service mobility mechanisms
optimized for connectivity and computing-aware traffic steering, which consider
both connectivity and computing status to dynamically select where a service
runs for a given terminal.
      </t>
      
      <t>
Based on the former, this document proposes solutions to enable the network to
react and adapt to connectivity and computing conditions, triggering optimal
service migration based on service-specific IP anchor mobility. In particular,
this document addresses the following questions: (i) what mechanisms does the
network need to implement to facilitate the migration of a service so its
requirements in terms of computing and networking are maintained?; and, (ii) how
to steer traffic to a new service instance location after moving the service, in
a transparent manner to the terminal, by using IP anchor mobility?
      </t>

      </section>

    </section>

    <section anchor="sec:terminology" title="Terminology">

<!--
      <t>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in <xref target="RFC2119" />.
      </t>
-->

      <t>
The following terms used in this document are defined by the IETF:

        <list style="empty">

          <t>
ECR. Egress CATS router.
          </t>

          <t>
ICR. Ingress CATS router.
          </t>

        </list>

      </t>

    </section>

    <section anchor="sec:solution" title="Enabling service continuity with IP anchor mobility for CATS">

      <t>
We describe next an example of operation and signaling for the network to perform service mobility. Three different embodiments are described next, for variations (OPTIONS) of the procedures: terminal initiated, ECR-initiated and CATS-controller initiated. In addition to the functionality defined in <xref target="I-D.bernardos-cats-ip-address-anchoring" />, this documents defines a new functionality:
      </t>

      <ul>

        <li>
Service mobility: it deals with the procedures required to (i) detect or predict a change of the current conditions, jointly considering computing and networking, requiring of a service mobility operation; (ii) selecting the best target service instance location, and (iii) triggering the service mobility by orchestrating the service anchor mobility and requesting service migration to a new site. For example, a terminal or ECR might use this functionality to perform active monitoring of a service with CATS agents running at the current ICR, ECR and or service site. It is also used to perform the actual service anchor mobility.
        </li>

      </ul>     

      <section anchor="sec:solution_option_a" title="OPTION A: terminal-initiated">

      <t>
Next, we assume service mobility is triggered by a CATS-aware terminal. By
having a CATS agent running on the terminal, it can perform different monitoring
actions to predict or detect the need to migrate a service from one site to
another. This CATS agent might, for example, interact with other CATS agents
deployed on ICRs, ECRs and service sites.
      </t>
      
      <t>
In the following we describe a service anchor mobility procedure for CATS,
initiated by a CATS-aware terminal. Following the terminal initiation, the
network infrastructure is capable to select a target service instance meeting
the connectivity and computing requirements of the service, with signaling
procedures defined to perform a transparent anchor migration to a new site,
facilitating the service migration in a transparent way for the terminal.
Extensions and new behavior are highlighted. Note that variations are possible
over this exemplary signaling diagram.
      </t>

<figure anchor="fig:signaling_a" title="Exemplary signaling" >
<artwork><![CDATA[
+----+ +-----+ +-------------+ +---------------+ +-------------+ +----+
|    | |     | |   site #1   | |   site #N-1   | |   site #N   | |CATS|          
|term| |ICR#1| |ECR#1 ag. SCI| |ECR#N-1 ag. SCI| |ECR#N ag. SCI| |ctrl|
+----+ +-----+ +--+----+---+-+ +----+----+---+-+ +--+----+---+-+ +----+
   |      |       |    |   |        |    |   |      |    |   |      |
   |      |  O. Service instance running at site #n-1.   |   |      |
   |      |     Tunnel established between ICR#1 and ECR#N-1 |      |
   |      |       |    |   |        |    |   |      |    |   |      |
   |   1. An external or internal trigger is received regarding     |
   |       a change in the compute or networking conditions         |
   |      |       |    |   |        |    |   |      |    |   |      |
   |1a. CATS agent at terminal reports a perceived change on service|
   |·····>|       |    |   |        |    |   |      |    |   |      |
   |      |       |    |   |        |    |   |      |    |   |      |
   |      |2a.CATS query(service ID, terminal ID, ICR ID, CATS reqs.)
   |      |······>|<··>|   |        |    |   |      |    |   |      |
   |      |········································>|<··>|   |      |
   |     3a.CATS response(service ID, terminal ID, ECR ID, CATS cond.)
   |      |<······|    |   |        |    |   |      |    |   |      |
   |      |<········································|    |   |      |
   |      |       |    |   |        |    |   |      |    |   |      |
   |      4a. Service anchor/ECR@site#n is selected as best  |      |
   |      |       |    |   |        |    |   |      |    |   |      |
5a.CATS request(service ID, terminal ID, ICR ID, CATS reqs., IP pref.)
   |···············································>|    |   |      |
   |      |       |    |   |        |    |   |      |    |   |      |
   |6.CATS ACK(service ID, terminal ID, ECR ID, CATS cond., IP prefix)
   |<···············································|    |   |      |
   |      |       |    |   |        |    |   |      |    |   |      |
   | 7.New tunnel for IP pref. established beetween ICR#1 and ECR#N |
   |      |       |    |   |        |    |   |      |    |   |      |
   |      | 8.Service migration from site#N-1 to site#N  |   |      |
   |      |       |    |   |        |    |   |      |    |   |      |
   |     9. Service specific traffic|    |   |      |    |   |      |
   |<---->|<--------------------------------------->|<------>|      |
   |      |       |    |   |        |    |   |      |    |   |      |
]]></artwork>
</figure>

      <t>
<xref target="fig:signaling_a" /> shows the message sequence chart of the IP anchor mobility for CATS, initiated by a CATS-aware terminal (OPTION A), which is explained next: 
      </t>

      <ol start="0">

        <li>      
A service/app has been already instantiated on a service site (for example, by
using the mechanisms specified in <xref
target="I-D.bernardos-cats-ip-address-anchoring" />). In this example, the site
where the service/app consumed by the terminal is currently instantiated is site
#n-1. The terminal is connected to ICR #1 and there is a service tunnel between
ICR#1 and ECR#N-1. This service/app requires some functionality to be run on the
network infrastructure (e.g., an AR/VR/XR service). This service has specific
requirements in terms of both connectivity and computing (CATS requirements).
        </li>

        <li>      
An internal or external trigger is generated regarding a change in the computing
of networking conditions, making the current selected service site not feasible
for the running service (i.e., CATS requirements cannot be met). In this OPTION
A, the terminal is CATS-aware, and it the node that detects the change in the
conditions (how this is made is outside the scope of this document, but
possible mechanisms include: monitoring at service/app level, in-situ monitoring
by the terminal, etc.) and sends a trigger to the ICR.
        </li>

              
        <li>
The ICR sends a query to all (but currently used) ECRs of the domain, or a subset selected based on the location of the ICR. This query may include the following parameters:       
          <ol type="i">

            <li>
Service ID: an identifier of the service requested by the terminal. This allows to check if the service can be instantiated or it is already instantiated.
            </li>

            <li>
Terminal ID: an identifier of the terminal requesting the service. This is useful for example for affinity purposes. It might not include information that can be used to identify the user.
            </li>

            <li>
ICR ID: identifier of the requesting ICR.
            </li>

            <li>
CATS requirements: list of requirements, e.g., connectivity and computing requirements.
            </li>

          </ol>
 
        </li>

        <li>
Each ECR, possibly after checking with the CATS agent of the site(s) it provides connectivity, responds, including the following information:

          <ol type="i">

            <li>
The ICR sends a query to all ECRs of the domain, or a subset selected based on the location of the ICR. This query may include the following parameters:

              <ol type="i">
              
                <li>
Service ID.
                </li>

                <li>
Terminal ID.
                </li>

                <li>
ECR ID: identifier of the ECR sending the response.
                </li>

                <li>
CATS conditions: how the site meets each of the requirements included in the request.
                </li>

                <li>
(Optional): URI to get to the service instance.
                </li>

              </ol>

A CATS agent at a site might be collocated with the ECR. Examples of a CATS agent at a site are network controllers or orchestrators at the site. Note that the way a CATS agent at an ECR may interact with the CATS agent of the site is out of the scope of this document. Examples include using monitoring and telemetry interfaces with an orchestrator managing the site.
            </li>

            <li>
Based on the received responses, and considering both networking and computing metrics and policies, the ICR selects an ECR (#n).
            </li>

            <li>
The ICR requests the proposed/selected ECR to establish a traffic steering session with it, sending a CATS request. This request includes the same information that was included in the CATS query (to facilitate stateless operation of the ECRs while being queried), plus the following additional parameters:

              <ul>
              
                <li>
ECR prefix: currently in use IP prefix IP to the terminal to reach the service instance.
                </li>

                <li>
Lifetime: requested duration for the association between the ICR and the ECR.
                </li>

              </ul>

            </li>

            
            <li>
The selected ECR responds back with an acknowledgement, including the following information:

              <ol type="i">
              
                <li>
Service ID. 

                </li>

                <li>
Terminal ID. 
                </li>

                <li>
ECR ID: identifier of the ECR sending the response. 
                </li>

                <li>
CATS conditions: how the site meets each of the requirements included in the request. 
                </li>

                <li>
IP prefix assigned for the terminal to use to reach the service instance. It should match the one included in the request.
                </li>

                <li>
Lifetime: granted duration of the association between the ICR and the ECR.
                </li>
        
              </ol>

            </li>

            <li>
An IP tunnel is established between the ICR and the new ECR. Optionally (not shown in the figure), the ICR might send a CATS request with cero lifetime to the old ECR to remove the old tunnel.
            </li>

            <li>
The previous message triggers the service migration (from site #n to site #n-1). The specific mechanism is out of the scope of this document. Note that some preparation/migration steps might be conducted in parallel (e.g., after messages #1 and #3) to accelerate the process, making this step just the final trigger for the service migration.
At site #n, the prefix used by the terminal for accessing the service is configured to be used by migrated instance. This might requires routing updates to be perfomed in the site, potentially controlled by a CATS agent running in the site.
            </li>

            <li>
Traffic of the service for this terminal is steered using the IP tunnel.
            </li>
           
          </ol>

        </li>

      </ol>

      </section>

      <section anchor="sec:solution_option_b" title="OPTION B: ECR-initiated">

        <t>
TBD.
        </t>

      </section>

      <section anchor="sec:solution_option_c" title="OPTION C: CATS controller-initiated">

        <t>
TBD.
        </t>

      </section>

    </section>

    <section anchor="sec:pmipv6_extensions" title="Proxy Mobile IPv6 signaling extensions to enable service mobility with IP address service-specific anchoring for CATS">

      <t>
The control plane extensions introduced in the previous section can be implemented over different protocols. This section specifies extensions to Proxy Mobile IPv6. Only new options additional to what is defined in <xref target="I-D.bernardos-cats-ip-address-anchoring" /> are included.
      </t>

      <section anchor="sec:ecr_mobility" title="New ECR mobility option">

        <t>
The new ECR option has the following format:
        </t>

<figure>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Type     |   Length      |   Reserved    | Addr. Length  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                     New ECR IP address                        +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>

        <t>
Message fields:

          <ul>

            <li>
Option Type: TBA by IANA.
            </li>

            <li>
Option Length: 8-bit unsigned integer. Length of the option, in octets,
excluding the Option Type and Option Length fields.
            </li>

            <li>
Addr. Length: 8-bit unsigned integer. Length of the New ECR IP address field, in octets.
            </li>

            <li>
New ECR IP address: variable length field that includes IP address of the new ECR.
            </li>

          </ul>
    
        </t>

      </section>

    </section>

    <section anchor="IANA" title="IANA Considerations">

      <t>
TBD.
      </t>

    </section>


    <section anchor="Security" title="Security Considerations">

      <t>
TBD.
      </t>

    </section>

    <section anchor="Acknowledgments" title="Acknowledgments">

      <t>
The work of Carlos J. Bernardos in this document has been partially supported by
the Horizon Europe PREDICT-6G (Grant 101095890), DESIRE6G (Grant 101096466) and UNICO I+D 6G-DATADRIVEN project.
      </t>

    </section>

  </middle>

  <back>

<!--
    <references title="Normative References">
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
    </references>
-->

    <references title="Informative References">

      <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-bernardos-cats-ip-address-anchoring.xml"/>

    </references>

  </back>

</rfc>
