Skip to main content

Rank, a Resource Management Protocol for Allocation
draft-lopes-rank-00

Document Type Active Internet-Draft (individual)
Authors Rui Eduardo Lopes , Duarte Raposo , Susana Sargento
Last updated 2026-06-29
RFC stream (None)
Intended RFC status (None)
Formats
Additional resources ID of Duarte Raposo
ID of Rui Eduardo Lopes
ID of Susana Sargento
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-lopes-rank-00
Network Working Group                                   R. E. Lopes, Ed.
Internet-Draft  Universidade de Aveiro and Instituto de Telecomunicações
Intended status: Informational                                 D. Raposo
Expires: 31 December 2026                  Instituto de Telecomunicações
                                                             S. Sargento
                Universidade de Aveiro and Instituto de Telecomunicações
                                                            29 June 2026

          Rank, a Resource Management Protocol for Allocation
                          draft-lopes-rank-00

Abstract

   This document specifies Rank, a comprehensive resource management
   protocol designed for modern edge-to-cloud computing infrastructures.
   While traditional network protocols focus primarily on managing link
   bandwidth and router buffer space, the shift toward decentralized
   services demands a broader approach to resource allocation.  Rank
   addresses this gap by simultaneously managing computing capabilities
   (such as CPU, memory, and storage), network capacity, and time-
   sensitive constraints (such as clock synchronization and task
   scheduling) within a unified framework.

   Operating primarily as a fully distributed protocol, Rank enables
   dynamic resource discovery, estimation, allocation, and sharing.  It
   works by establishing a path between a source ("talker") and a
   destination ("listener") node, actively negotiating resource
   requirements across all intermediate nodes.  Because it is fully
   distributed, all participating nodes carry equal responsibility in
   handling a session, such as processing requests, evaluating their own
   capacity to meet the resource demands, and strategically forwarding
   messages to ensure an optimized, end-to-end connection without
   relying on a centralized controller.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

Lopes, et al.           Expires 31 December 2026                [Page 1]
Internet-Draft                Rank Protocol                    June 2026

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 31 December 2026.

Copyright Notice

   Copyright (c) 2026 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   4
   2.  Protocol Overview . . . . . . . . . . . . . . . . . . . . . .   4
     2.1.  Definitions of Commonly Used Terms  . . . . . . . . . . .   4
     2.2.  Related Work  . . . . . . . . . . . . . . . . . . . . . .   5
     2.3.  Organization of this Document . . . . . . . . . . . . . .   7
     2.4.  Acknowledgements  . . . . . . . . . . . . . . . . . . . .   7
   3.  Functional Summary  . . . . . . . . . . . . . . . . . . . . .   7
   4.  Protocol Data Structures  . . . . . . . . . . . . . . . . . .   9
   5.  Protocol Packet Processing  . . . . . . . . . . . . . . . . .  12
     5.1.  Sending Protocol Packets  . . . . . . . . . . . . . . . .  12
     5.2.  Receiving Protocol Packets  . . . . . . . . . . . . . . .  13
     5.3.  Enabling a Handler for a Session  . . . . . . . . . . . .  14
     5.4.  Events Causing Handler State Changes  . . . . . . . . . .  16
     5.5.  The Handler State Machine . . . . . . . . . . . . . . . .  16
     5.6.  Handler Process on EAR Message Received . . . . . . . . .  19
     5.7.  Handler Process on MAR Message Received . . . . . . . . .  21
     5.8.  Handler Process on BID Message Received . . . . . . . . .  22
     5.9.  Handler Process on ACC Message Received . . . . . . . . .  23
     5.10. Handler Process on REF Message Received . . . . . . . . .  24
     5.11. Handler Process on REP Message Received . . . . . . . . .  25
     5.12. Lifecycle of a Reservation  . . . . . . . . . . . . . . .  26
     5.13. The Reservation State Machine . . . . . . . . . . . . . .  27
     5.14. Heartbeat (HBT) Message Exchange  . . . . . . . . . . . .  29
   6.  List of Requirements Specification  . . . . . . . . . . . . .  31
     6.1.  The Composition of a Document . . . . . . . . . . . . . .  31
     6.2.  Marshalling of Requirements . . . . . . . . . . . . . . .  32
   7.  Suitability Value Estimation  . . . . . . . . . . . . . . . .  35

Lopes, et al.           Expires 31 December 2026                [Page 2]
Internet-Draft                Rank Protocol                    June 2026

     7.1.  Contextualization of Resource Estimation  . . . . . . . .  35
     7.2.  Bare-metal Node Resources for Suitability . . . . . . . .  38
     7.3.  Current Node Resources for Suitability  . . . . . . . . .  39
     7.4.  Priority for Suitability  . . . . . . . . . . . . . . . .  41
     7.5.  Proximity for Suitability . . . . . . . . . . . . . . . .  42
     7.6.  Historical Performance for Suitability  . . . . . . . . .  43
     7.7.  The Final Value, the Suitability Value  . . . . . . . . .  44
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .  44
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  44
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  44
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  44
     10.2.  Informative References . . . . . . . . . . . . . . . . .  45
   Appendix A.  Rank Data Formats  . . . . . . . . . . . . . . . . .  47
     A.1.  Encapsulation of Rank Packets . . . . . . . . . . . . . .  47
     A.2.  Rank Packet Formats . . . . . . . . . . . . . . . . . . .  48
       A.2.1.  The Rank Packet Header  . . . . . . . . . . . . . . .  48
       A.2.2.  The EAR Packet  . . . . . . . . . . . . . . . . . . .  49
       A.2.3.  The MAR Packet  . . . . . . . . . . . . . . . . . . .  51
       A.2.4.  The BID Packet  . . . . . . . . . . . . . . . . . . .  53
       A.2.5.  The ACC Packet  . . . . . . . . . . . . . . . . . . .  54
       A.2.6.  The REF Packet  . . . . . . . . . . . . . . . . . . .  55
       A.2.7.  The REP Packet  . . . . . . . . . . . . . . . . . . .  55
       A.2.8.  The HBT Packet  . . . . . . . . . . . . . . . . . . .  56
   Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .  57
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  57

1.  Introduction

   The Internet’s evolution has consistently faced challenges related to
   network congestion, initially recognized in 1984 [RFC0879].  Early
   solutions, such as TCP retransmissions, paradoxically exacerbated
   these issues by increasing data rates at intermediate routers.  This
   led to the development of resource management protocols, primarily
   focused on network resources such as link bandwidth and buffer space
   within routers and switches, often employing quality-of-services
   (QoS) mechanisms.

   However, modern network infrastructures, driven by the migration of
   services to edge, fog, and cloud computing layers, demand a broader
   scope of resource allocation.  Beyond traditional network resources,
   computational capabilities of intermediate nodes (such as CPU,
   memory, storage, among others) and timely aspects (clock
   synchronization, task scheduling) have become critical.  This
   expansion requires a protocol capable of, as a single package,
   managing diverse resource types in heterogeneous environments, in
   both number and quality of network nodes.

Lopes, et al.           Expires 31 December 2026                [Page 3]
Internet-Draft                Rank Protocol                    June 2026

1.1.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

2.  Protocol Overview

   Rank is a network protocol that is able to discover a path in which
   it negotiates a list of requirements for computing, network, and time
   resources, connecting a service between a talker and a listener.
   This resource management is made in a fully distributed way and this
   document strictly defines its behavior as a distributed protocol.
   Nonetheless, Rank may be modified and implemented as a centralized
   protocol.

   As a fully distributed protocol, all nodes carry the same level of
   responsibility in handling a session.  No node gathers more
   information than other during a Rank session being established, nor a
   node save information regarding other nodes.  Each node has the sole
   responsibility of receiving a Rank packet, process it and send it to
   a new node, registering such a connection in its internal data
   structures.

   All nodes run the exact same algorithm, in parallel.  From the
   reception of a requesting message, each node maintains a database of
   all the session IDs that have passed, with all the last known status
   of them.  Each participating node has an identical database content
   related to a same session.

   In terms of communication, each node transmits a message towards its
   targeted listener through a non-greedy routing, in which intermediate
   nodes are first selected according to their capability of reaching
   the target, and then, if there are multiple nodes to choose from, a
   proper message is sent to get more data on which of the nodes is more
   capable of supporting the requested resources.  Worst-case scenario,
   in case there are no difference between the capabilities of the
   requested nodes, all of these already selected nodes are appropriate
   candidates to proceed with the message selected flooding towards the
   listener.

2.1.  Definitions of Commonly Used Terms

   This section provides definitions for terms that have a specific
   meaning to the Rank protocol and that are used throughout the text.

Lopes, et al.           Expires 31 December 2026                [Page 4]
Internet-Draft                Rank Protocol                    June 2026

   Rank Session  Control messages and data transactions between two or
      more nodes, covering the connection between Rank end-points.

   Rank Process  Execution instance of the Rank protocol in a node,
      possibly having zero or more sessions.  Along the document this
      concept might be also mentioned as a Rank Instance.

   Talker Node  A source end-point node for a Rank process to occur.
      This node type exists in both distributed and centralized
      environments, and it is responsible for starting a Rank session.

   Listener Node  A destination end-point node for a Rank process to
      occur, to whom a talker intends to handle a data connection.

   Intermediate Node  A node type that interconnects the talker to a the
      listeners (and other intermediate nodes if such a scenario
      applies), being also part of the resource admission request
      evaluation to some of the specified stated requirements.

   Controller Node  An exclusive node type for a centralized network
      architecture, that can get information of all the featured nodes
      in a network (or in a network of networks), estimate paths, and
      delegate reservations within surrogate nodes (that can be
      intermediate or listener nodes).

   Admission Request  Request made by a talker to listeners, initiating
      a Rank session with discovery and estimation features.  It
      contains a list of requirements with variables for each requested
      resource, and a priority.

   Suitability Value  A single precision floating point value that
      reflects the capability of a Rank node performing an admission
      request.  This value is in range [0, 1]: if 0 then the node is not
      capable of accepting the admission request and rejects it;
      otherwise the node is capable of guaranteeing to perform the
      admission request.

2.2.  Related Work

   The fundamental basis for this work is the Resource ReSerVation
   Protocol (RSVP) [RFC2205], established in 1997, which enabled network
   nodes to flood PATH messages to discover and verify node capacity for
   quality-of-service (QoS) guarantees.  Since that time, several new
   solutions were developed by the scientific community, but one cannot
   simply assess them through a unique time axis: as Rank is a resource
   management protocol supported by discovery, estimation, allocation,
   and sharing features, the related work must be assessed in these four
   axes.

Lopes, et al.           Expires 31 December 2026                [Page 5]
Internet-Draft                Rank Protocol                    June 2026

   Starting with resource discovery, RSVP used basic flooding techniques
   to discover network nodes, constantly sending messages that created
   heavy network overhead.  More recent protocols, such as the Stream
   Reservation Protocol (SRP) [_802.1Q] improved upon this by using
   admission controls and allowing for path cancellations, reducing
   overhead.  Nonetheless, other works can also be found using location-
   aware matching (client requests are matched with the geographically-
   closest available edge nodes with DNS [Horvath25]), semantic and
   context-aware discovery (architectures may use semantic layers to
   match resources based on user intent, time constraints, or historical
   patterns [Farhoudi25]), or other approaches differing on
   decentralized/centralized architectures (there are solutions with
   decentralized Named Data Networking (NDN) that enables dropping
   resource breadcrumbs to advertise availability without overloading
   nodes [Kondo24], and other more popular solutions rely on a
   centralized entity to monitor active resources [Kubernetes]).

   On resource estimation, SRP [_802.1Q] is also considered as related
   work, since it uses admission control procedures to check the local
   capabilities, per node, of performing what is being requested in
   terms of network and time resources.  Analytically, there are other
   solutions that dwell beyond linear admission requests such as by
   using probabilistic models [Li18], dynamic optimizations [Abou21], or
   reinforcement learning [Zhang20].  Outside academic environments,
   Kubernetes [Kubernetes] also apply tools like estimation via auto-
   scaling that automatically adjusts the number of workload replicas.

   Looking now to resource allocation, over the years researchers have
   tried numerous mathematical and predictive methods to solve the
   allocation feature with limited resources.  From early deterministic
   models to current solutions using deep reinforcement learning
   approaches there are still plenty of difficulties on this execution,
   be it from requirements of knowing everything about a network’s state
   in advance, or requiring massive computational overhead and long
   training times, respectively.  Other solutions developed apply game
   theory [Yu25] and market models [Nguyen18], as these problems often
   involve multiple tenants and competing service providers.  Moreover,
   other solutions can also be found using joint optimization in hybrid
   edge-cloud systems, in which research mainly focus on computation
   offloading with the help of dynamic partitioning to minimize latency
   and energy use by deciding which parts of a task should be processed
   locally versus sent to the cloud [Yi20].

   Finally we must address resource sharing.  Early studies introduced
   opportunistic and voluntary resource-sharing models, in which end-
   users or third-party devices temporarily contribute idle computing or
   storage resources to nearby tasks [Wang25].  Other approaches could
   also be found with game-theoretic models [Zafari21] to create

Lopes, et al.           Expires 31 December 2026                [Page 6]
Internet-Draft                Rank Protocol                    June 2026

   structured sharing, auctions to negotiate different types of
   heterogeneous resources simultaneously [Liu24], or blockchain and
   smart contracts to also enforce trust on these transactions
   [Olaniyan18].

   Despite significant advancements across edge computing, a unified set
   of open challenges continues to restrict the efficient discovery,
   estimation, allocation, and sharing of resources.  Scalability and
   adaptability remain the most persistent hurdles, as current models
   struggle to perform in highly dynamic, mobile, and dense networks
   without introducing crippling computational or energy overheads.
   Furthermore, modern systems frequently fail at multi-objective
   optimization, finding it difficult to balance conflicting constraints
   like latency, computational power, bandwidth, and battery life
   simultaneously.  Finally, in open, multi-tenant edge environments,
   establishing interoperability, trust, and security is a critical
   unresolved issue; the field lacks cohesive, vendor-neutral
   standardization and continues to grapple with how to enforce secure,
   fair, and verifiable resource transactions without triggering the
   heavy latency penalties associated with mechanisms such as
   blockchain.

2.3.  Organization of this Document

   The first two sections of this specification give a general view of
   the protocol and a clear description of the most critical concepts to
   retain during the reading of this document.  From Section 3 to 6
   explain the protocol’s mechanisms in detail.  Packet formats are
   specified in the appendices.

   The detailed specification of the protocol is presented in terms of
   data structures.  This is done in order to make the explanation more
   precise.

2.4.  Acknowledgements

   The authors would like to thank Pedro Veloso Teixeira for the large
   discussion sessions and main alignment of contents in this document.
   This work was supported by Fundação para a Ciência e Tecnologia
   within grant FCT.2021.06223.BD, and by European Union Programa FEDER,
   Operação n.º 14795 - COMPETE2030-FEDER-00929900.

3.  Functional Summary

   A unique instance of a Rank runs in each node.  No node is able to
   run more than a single process.  A brief summary of the resource
   management algorithm follows.

Lopes, et al.           Expires 31 December 2026                [Page 7]
Internet-Draft                Rank Protocol                    June 2026

   When a Rank process starts, it first initializes the protocol data
   structures.  The node then waits for any Rank message incoming
   through one of the ingress network interfaces or an internal API for
   application-level interface.

   There is no indication that the Rank instance is running besides
   checking the state of the assigned port for the process execution.
   If a running application, in parallel to the Rank process, intends to
   request a given list of computing, network, or time resources to be
   allocated throughout a path towards another remote Rank node, the
   service use the local and designated Rank API to trigger the process.

   As soon as the request is dropped through the API at the local Rank
   process, a unit responsible for external interactions with the
   process itself will enqueue the request at a depositing queue that
   will be directly parsed by the main entity of the Rank instance,
   called the Process.  The Process, as it has direct access to the
   depositing queue, will dequeue the request and assess its validity,
   by verifying if all fields match with the expected formats.

   Passing the first validation, the request is now analyzed regarding
   the session identification.  As this is a new session, locally
   created when the API was used, a new session identifier can be found,
   that the Process will not parse as one that it already knows: at this
   stage the Process will check if that the received message contains an
   already known session identifier; if it already knows, then the last
   known state of that session will be checked and, if it is not
   invalid, then the session is resumed; otherwise, a new session will
   be locally registered in a specific data structure called Store, and
   a Handler structure will be created to handle this new session.

   A Handler is an entity that represents the current state of a session
   at a given Rank node.  There is no Handler instantiation without a
   session assignment and all Handler entities are saved in the Store
   data structure, which matches a Handler with an associated session
   identifier.  Moreover, a Handler entity, as it resides within the
   Store, has its proper threading mechanism that may suspend execution
   when no further processing is required for a session, at a given
   time.

   As a message is received by the Process and then passed to a specific
   Handler, depending on the type of message received, a message parser
   and exchange algorithm will be in place (thoroughly described in
   Section 5) and the designated listener will be searched along the
   node operating system’s tables: if there is a single path towards the
   listener, a new EAR message is sent through the network interface
   leading to it; if there is no connection towards the listener, then a
   refusal message is sent back to the requester (REF packet or an error

Lopes, et al.           Expires 31 December 2026                [Page 8]
Internet-Draft                Rank Protocol                    June 2026

   code, if this is the first request made by an API), describing that
   the request could not be performed; otherwise, if there are more than
   a single path towards, a MAR message must be sent to each one of
   these neighbor nodes, requesting them to self-assess their own
   capability of performing the request and then tell it back, so that,
   preferably a best single path is chosen.  During this procedure each
   requested node will tell back a suitability value, encapsulated
   within a BID message that is estimated according an algorithm that is
   described in Section 7.

   As soon as an EAR message is received in the listener node and this
   self-assess as able to perform the list of requirements that are set
   in the admission request, a new message of acceptation (ACC) is sent
   back to the talker, via the same path.  When the ACC reaches the
   talker, then the Rank session is said to be effective.

   A session may also be terminated and that action must be propagated
   throughout all the participating nodes.  There are two possible ways
   to terminate a Rank session: by request (REP message) or by link
   failure.  If a request for replenishing is placed in a given node of
   a session, REP messages are flooded in the session’s nodes towards
   the listener and, as they reach the listener, a REF message is sent
   back in direction of the talker, closing the session.

   During the execution of a session, heartbeat (HBT) messages are
   periodically sent from a node to its next in line to the listener.
   If a HBT takes a long time being received by a node, this one must
   start suspecting that the connection might be unstable or even
   broken.  In case a connection is broken, then the nodes should start
   a timeout and then sending REF messages so to take the session down.

4.  Protocol Data Structures

   The Rank protocol is described herein in terms of its operation on
   various protocol data structures.  The following list comprises the
   top-level Rank data structures.  Any initialization that needs to be
   done is noted.

   Session Identifier  A 128-bit number that uniquely identifies a

Lopes, et al.           Expires 31 December 2026                [Page 9]
Internet-Draft                Rank Protocol                    June 2026

      session.  This identifier is represented by a ULID [ULIDCan] that
      is a data structure comprised by an entropy value and a timestamp,
      that allows this records to be lexicographically sortable.  As
      soon as a session is created, a ULID is created, independently of
      the location.  It is recommended that clocks are synchronized
      along Rank nodes (at least those candidates for same sessions),
      but in case there is no synchronization and ULIDs are sent with
      equal timestamps, the entropy value that is conisdered in their
      content is sufficiently large so that 1.21e+24 unique values are
      possible per millisecond.

   Process  Top-level entity that is responsible for handling all data
      from a Rank process.  In a Rank node it can only exist a single
      instance of a Process running.  From this entity, every other data
      structure and mechanism are instantiated, initialized, and
      managed.

   Store  Data structure responsible for keeping record of known
      sessions by means of their Handler structures.  This structure is
      a set of key-value pairs, in which each key corresponds to a
      session identifier (as a ULID), and each value is a reference for
      the responsible Handler for that session.

   Translation Table  Data structure responsible for saving matches
      between original and replicas of sessions.  When discovering paths
      towards the listener, the Rank algorithm may find alternative/
      disjoint paths to which it the current session identifier will be
      unrolled into a set of newer and related ones.  These matches are
      saved within the local (to the transitioning node) data structure
      of the Translation Table.

   Handler  Entity that is created to manage a given session.  There is
      only one Handler per session.  This entity is created at a Rank
      node, by a Process, when a new session is created.  Each Handler
      has a state (ready, assessing, presenting, auction waiting,
      auction bidding, pre-reserved, reserved, replenishing, closed) and
      it starts by being ready.  A Handler has a threading mechanism
      integrated, so that it can have its own data structure and be
      suspended and resumed by request.  When a given session is being
      processed in a Rank node the respective Handler must be awaken
      from the Store and its state and status must be saved before
      suspending again.  When a session is closed, the handler is saved
      in a minimal storage footprint condition, for auditing purposes,
      with a closed state.  Multiple Handler entities may run
      simultaneously.

   Dispatcher  Attached and controlled by a Process, the Dispatcher is

Lopes, et al.           Expires 31 December 2026               [Page 10]
Internet-Draft                Rank Protocol                    June 2026

      the only component of a Rank system that manages the communication
      to and from a Rank node (and the hosting system, if using an API).
      The Dispatcher has three main components: a set of receivers, a
      sender, and an API.  The set of receivers are a collection of
      receivers per communication layer, that are able to get and parse
      Rank messages on ingress network interfaces.  The sender component
      works similarly in the opposite direction: creates a structure to
      encapsulate the message and send it through a given egress network
      interface.  The API is the third component whose mission is to
      create a communication channel with other parallel services
      running in the local machine.

   Resources  This entity is an internal representation within the Rank
      instance of the local machine resources, so that they can be
      estimated by the process and requested, for allocation and
      sharing, to the host’s operative system.  This entity has the
      concept of current capabilities and it also knows how to hold a
      reservation.  This entity is also the component responsible to
      provide means to a node self-assess its own capabilities of
      performing the requested in the admission request.

   Reservation  A Reservation is a component in a Rank instance that
      carries an internal representation of the received admission
      requests.  A reservation has the same fields as the admission
      requests (list of requirements and priority), but using internal
      representations different from those used in the Rank packets.

   Timeout Handler  As Rank is a distributed resource management
      protocol, all actions performed before and after requesting
      resources to the operative system must be bound to time instants
      in which the instance knows, effectively, that those resources are
      being used well and that there is a constant connection between
      all the participant nodes.  To failsafe, timeouts are considered
      on actions that enable reservations of resources (such as the
      reservation and the replenishing of resources).  To manage these
      timeouts, a Timeout Handler is an entity that is managed by the
      Process and is able to asynchronously start timers that are able
      to rollback and sets of changes in case a timeout has been
      achieved.

   API  The communications to and from Rank instances are not

Lopes, et al.           Expires 31 December 2026               [Page 11]
Internet-Draft                Rank Protocol                    June 2026

      exclusively horizontal (between nodes).  The starting point for a
      resource reservation (the launch of an admission request) is any
      service that might require a list of requirements to a listener,
      so that a connection between such service and its local Rank
      instance.  This way, an API exists that is able to establish a
      two-way inter-process communication allowing requests to be sent
      to the Rank instance, and error codes to be sent to the requesting
      service.  This component is managed by the Dispatcher component.

5.  Protocol Packet Processing

   This section discusses the general processing of Rank protocol
   packets.  It is very important to recall that each node has its own
   database of sessions (Store) that are not synchronized between them
   besides the first communication of the session request.

   All Rank protocol packets begin with a standard header.  The sections
   below provide details on how to fill in and verify this standard
   header.  Then, for each packet type, the section giving more details
   on that particular packet type’s processing is listed.

5.1.  Sending Protocol Packets

   When a Rank node sends a Rank protocol packet, it fills in the fields
   of the standard Rank protocol header as follows.  For more details on
   the header format consult Appendix A.2.1.

   Version (V)  Set to 0, the version number decremented by a unit of
      the protocol as documented in this specification.

   Packet type  The type of the Rank packet, such as EAR, MAR, among
      others.

   Reserved (R)  Set to 0.  This field is reserved for future usages and
      other values will leave this packet to be parsed as invalid.

   Session Identifier  Generated as a new ULID value.  In the case the
      session being created is a replica of another that exists until
      the current Rank node, then a new ULID value must be created with
      a new timestamp, but with the same entropy value.

   For more information on the format of the specific Rank protocol
   packet types, consult the sections listed in Table 1.

Lopes, et al.           Expires 31 December 2026               [Page 12]
Internet-Draft                Rank Protocol                    June 2026

       +======+=====================+=============================+
       | Type | Packet name         | detailed section (transmit) |
       +======+=====================+=============================+
       | 0    | Exclusive Admission | Section 5.6                 |
       |      | Request (EAR)       |                             |
       +------+---------------------+-----------------------------+
       | 1    | Multiple Admission  | Section 5.7                 |
       |      | Request (MAR)       |                             |
       +------+---------------------+-----------------------------+
       | 2    | Bid (BID)           | Section 5.8                 |
       +------+---------------------+-----------------------------+
       | 3    | Acceptation (ACC)   | Section 5.9                 |
       +------+---------------------+-----------------------------+
       | 4    | Refusal (REF)       | Section 5.10                |
       +------+---------------------+-----------------------------+
       | 5    | Replenishing (REP)  | Section 5.11                |
       +------+---------------------+-----------------------------+
       | 6    | Heartbeat (HBT)     | Section 5.14                |
       +------+---------------------+-----------------------------+

            Table 1: Sections describing Rank protocol packet
                              transmission.

5.2.  Receiving Protocol Packets

   Whenever a protocol packet is received by the Rank node it is
   inserted in a specific depositing queue from the communication layer
   it was captured from.  Depending on the communication level, several
   header considerations will be taken into consideration before
   reaching Rank validation.  For instance, in order for the packet to
   be accepted at IP level, it must pass a number of tests, such as
   verifying if the IP checksum is correct; and verifying if the
   packet’s IP destination address is the IP address of the receiving
   interface.  Nonetheless, Rank must have an extension so to prevent
   current operative systems to discard ingress packets for not having a
   IANA-valid IP protocol identifier (0x9B).

   Next, the Rank packet header is verified.  The fields specified in
   the header must match those configured for the receiving interface.
   If they do not, the packet should be discarded:

   *  The version number field must specify protocol version 1 (value 0,
      since this value is written as decremented by one unit).

   *  The type field must match with one of the types detailed in
      Table 1.

   *  The reserved field must specify 0.

Lopes, et al.           Expires 31 December 2026               [Page 13]
Internet-Draft                Rank Protocol                    June 2026

   *  The session identifier must not have a timestamp for before or
      after 10 minutes than the current system clock.

5.3.  Enabling a Handler for a Session

   When a message is received by a Dispatcher in a Rank instance, if it
   passes the first validation steps as described in Section 5.2, then
   the packet will be enqueued in a depoisiting queue that is managed
   then by the Process entity.  On such a reception, a proper algorithm
   will sort the type of packet but first will check if the session
   identifier is known and, in case it is, will verify if its last known
   state.

   The first question that is applied is if the session identifier is
   known.  If the identifier is not known, meaning that no entry exist
   in the Store with such session identifier as key, then a Handler must
   be created with this session identifier.  As such, a new session
   identifier must be created and then the Handler must be saved in the
   Store, with Ready status.  After this the Handler must be executed
   and its processing must parse and process the received message.

   The Handler may only have one state at a time.  The various states
   that a Handler might have are document in this section.  Figure 1
   shows the graph of the Handler state changes.  The arcs of the graph
   are labelled with the event causing the state change.  These events
   are documented in Section 5.4.  The Handler state machine is
   described in more detail in Section 5.5.

Lopes, et al.           Expires 31 December 2026               [Page 14]
Internet-Draft                Rank Protocol                    June 2026

                                ┌─────────┐
            ┌──────EAR Received─┤  Ready  ├─MAR Received───────┐
            │                   └────┬────┘                    │
            │                      RxAPI                       │
            │                        │                         │
            │                        │                         │
    ┌───────▼───────┐        ┌───────▼──────┐           ┌──────▼──────┐
    │   Assessing   │   ┌────┤  Presenting  ├─────┐     │   Auction   │
    └──┬────┬────┬──┘   │    └───────┬──────┘   MAR   ┌─┤   Bidding   │
      REF   │  MAR Sent │         MAR Sent      Sent  │ └──────┬──────┘
      Sent  │    └─┐   EAR           │            │  BID Sent  │
       │   EAR     │   Sent  ┌───────┼────────────┼───┘        │
       │   Sent    │    │    │       │            │            │
       │    │   ┌──▼────▼────▼─┐     │     ┌──────▼──────┐   0-BID
       │    └───▶ Pre-Reserved ◀─────┼─EAR │   Auction   │    Sent
       │        └──┬────┬────┬─┘     │ Sent┤   Waiting   │     │
       │    ┌──────┘    │    │       │     └──────┬──────┘     │
       │    │         ACC    EAR     │            │            │
       │    │    Received    Received│  ┌REP Sent─┘            │
       │    │           │    │       │  │                      │
       │    │   ┌───────▼────▼─┐     │  │  ┌─────────────┐     │
       │    │   │   Reserved   ├─*1──┼──┼──▶ Replenished │     │
       │    │   └───────┬──────┘     │  │  └──────┬──────┘     │
       │    │           └REF ─────┐  │  │        REF           │
       │   REF           Received │  │  │      Received        │
       │   Received               │  │  │         │            │
       │    └───────────────────▶─▼──▼──▼─◀───────┘            │
       └────────────────────────▶ Closed  ◀────────────────────┘
                                └─────────┘
        *1 Received REP

      Figure 1: The Handler State finite state machine (FSM) diagram.

   In the case the session identifier is already known, the last known
   state of its corresponding handler must be checked, since only some
   state values are expected to be resumed.  If such a session
   identifier’s handler is currently running (this can only happen in
   the case in which a node is in Auction Waiting state and has already
   received a suitability value), then a new suitability value will be
   saved in the Handler’s bid set and the message is then discarded.
   Otherwise, if the Handler is not currently running, then further
   processing should only be considered if the last state of the Handler
   is of Pre-Reserved, Reserved, Auction Waiting, Replenishing, or
   Ready.  If so, the Handler should be retrieved from the Store,
   resumed, and the new message should be delivered to it for further
   processing.  In any other state, the message should be discarded and
   Process should wait for a new incoming message.

Lopes, et al.           Expires 31 December 2026               [Page 15]
Internet-Draft                Rank Protocol                    June 2026

   Right after executing for the first time or resuming a Handler, as
   the incoming message is delivered for processing to the handler, a
   selective section of the algorithm is chosen to be performed
   according to the message type.  This selection is described in the
   following sections, per packet type, as pointed by Table 1.

5.4.  Events Causing Handler State Changes

   State changes can be effected by a number of events.  These events
   are pictured as the labelled arcs in Figure 1.  The label definitions
   are listed below.  For a detailed explanation of the effect of these
   events on Rank protocol operation, consult Section 5.5.

   RxAPI  Request Reservation via API.

   X Received  X message was received through an ingress interface.

   X Sent  X message was sent through an egress interface.

   0-BID Sent  A BID message with a zero-value suitability value was
      sent through an egress interface.  This happens to transmit the
      information that the current node does not have capability to
      perform the received admission request.

5.5.  The Handler State Machine

   A detailed description of the handler state change follows.  Each
   state change is invoked by an event (Section 5.4).  This event may
   produce different effects, depending on the current state of the
   handler.  For this reason, the state machine below is organized by
   current handler state and received event.  Each entry in the state
   machine described the resulting new handler state and the required
   set of additional actions.

 State(s):      Ready

    Event:      EAR Received

New state:      Assessing

   Action:      The receiving node was waiting on a Rank packet or request, and an EAR message was received as sent by another Rank node. This induces the transition between the Ready state to the Assessing state.

 State(s):      Ready

    Event:      RxAPI

New state:      Presenting

Lopes, et al.           Expires 31 December 2026               [Page 16]
Internet-Draft                Rank Protocol                    June 2026

   Action:      The receiving node was waiting on a Rank packet or request, and a request incoming from the Rank API was received, as sent by a another local operating system’s process. This induces the transition between the Ready state to the Presenting state.

 State(s):      Ready

    Event:      MAR Received

New state:      Auction Bidding

   Action:      The receiving node was waiting on a Rank packet or request, and a MAR message was received as sent by another Rank node. As this message does not translates itself as a propagation of a Rank session, rather an evaluation of this node’s capabilities of performing the admission request, the current node assesses its capabilities and prepares itself to send the resulting suitability value back to sender.

 State(s):      Assessing

    Event:      REF Sent

New state:      Closed

   Action:      The current node where the Handler is being executed assessed its own capabilities of performing the admission request and it estimated that it is not capable to support the requested resources. For this reason, a REF message is sent to declare such result.

 State(s):      Assessing

    Event:      EAR Sent

New state:      Pre-reserved

   Action:      The current node where the Handler is being executed assessed its own capabilities of performing the admission request and it estimated that it is capable to support the requested resources. On assessing the connections it had to proceed with this request in line to the listener, it found that there is only a single path available, thus it sent an EAR message to it. With this, the Handler pre-reserved the requested resources.

 State(s):      Assessing

    Event:      MAR Sent

New state:      Pre-reserved

   Action:      The current node where the Handler is being executed assessed its own capabilities of performing the admission request and it estimated that it is capable to support the requested resources. On assessing the connections it had to proceed with this request in line to the listener, it found that there are more than one path available, thus it sent an MAR message to each of the alternatives. With this, the Handler pre-reserved the requested resources in the current node.

 State(s):      Presenting

    Event:      EAR Sent

New state:      Pre-reserved

   Action:      The current node where the Handler is being executed assessed its own capabilities of performing the admission request and it estimated that it is capable to support the requested resources. On assessing the connections it had to proceed with this request in line to the listener, it found that there is only a single path available, thus it sent an EAR message to it. With this, the Handler pre-reserved the requested resources.

 State(s):      Presenting

    Event:      REF Sent

New state:      Closed

Lopes, et al.           Expires 31 December 2026               [Page 17]
Internet-Draft                Rank Protocol                    June 2026

   Action:      The current node where the Handler is being executed assessed its own capabilities of performing the admission request and it estimated that it is not capable to support the requested resources. For this reason, a REF message is sent to declare such result.

 State(s):      Presenting

    Event:      MAR Sent

New state:      Auction Waiting

   Action:      The current node where the Handler is being executed assessed its own capabilities of performing the admission request and it estimated that it is capable to support the requested resources. On assessing the connections it had to proceed with this request in line to the listener, it found that there are more than one path available, thus it sent an MAR message to each of the alternatives. With this, the inner reservation must change state to pre-reserved, while the Handler state switches to Auction Waiting.

 State(s):      Auction Bidding

    Event:      BID Sent

New state:      Pre-reserved

   Action:      The current node where the Handler is being executed was requested to estimate its capability of performing an admission request included in a MAR message. The outcome of this estimation—a suitability value—must now be sent over a BID message towards the origin of the MAR message.

 State(s):      Auction Bidding

    Event:      0-BID Sent

New state:      Closed

   Action:      The current node was requested to estimate its capability of performing an admission request included in a previous MAR message. The outcome of this estimation revealed that this Rank node cannot support the admission request and, as such, a null value (zero) must be sent over a BID message to the origin of the MAR message.

 State(s):      Pre-reserved

    Event:      REF Received

New state:      Closed

   Action:      A REF message was received in an ingress interface. This message must enable the deletion of the subject session and, as such, the current Handler must close its operation.

 State(s):      Pre-reserved

    Event:      ACC Received

New state:      Reserved

   Action:      An acceptation message was received meaning that a given pre-reservation state of an Handler may now transition into a reserved state.

 State(s):      Pre-reserved

    Event:      EAR Received

New state:      Reserved

Lopes, et al.           Expires 31 December 2026               [Page 18]
Internet-Draft                Rank Protocol                    June 2026

   Action:      An EAR message set after the reception of a MAR message requesting a suitability value was received, meaning that a given pre-reservation state of an Handler may now transition into a reserved state. This EAR message does not contain any list of requirements, as this was already sent in the previous MAR message.

 State(s):      Auction Waiting

    Event:      EAR Sent

New state:      Pre-reserved

   Action:      The Handler has previously estimated its own suitability value regarding its session admission request and it reached a non-nullable value, admitting the support of the requested resources. The inner Reservation, at this Handler state, is already in pre-reserved state.

 State(s):      Auction Waiting

    Event:      REF Sent

New state:      Closed

   Action:      The current node reached a timeout on waiting for suitability values. This means that the session cannot proceed its processing and, thus, this Handler must close execution.

 State(s):      Reserved

    Event:      REP Received

New state:      Replenishing

   Action:      The current node has received a replenishing message to delete any resource reservation done within the context of this session.

 State(s):      Replenishing

    Event:      REF Received

New state:      Closed

   Action:      The current node received a refusal message to cancel the Handler session. This Handler must close its execution.

 State(s):      Reserved

    Event:      REF Received

New state:      Closed

   Action:      The current node received a refusal message to cancel the Handler session. This Handler must close its execution.

5.6.  Handler Process on EAR Message Received

   The reception of an EAR message is the most common execution segment
   of all the message parse and exchange algorithm in the Rank protocol
   operation.  As soon as the Handler enters this execution line its
   state must change to one of the following.

Lopes, et al.           Expires 31 December 2026               [Page 19]
Internet-Draft                Rank Protocol                    June 2026

   *  Update state to Presenting if the current node is the beginner of
      a Rank session (the message may be coming from the API).

   *  Update state to Assessing if the current node is just an
      intermediate node between a talker and a listener.

   Having switched the state, then the handler must verify if the EAR
   message have reached its listener or not.  In such a case, the node
   must self-assess its own capabilities of performing the admission
   request and, if such answer is also positive, then the affected
   resources must be reserved.  With this line of operation, an ACC
   message must be sent back and the handler state must change to
   Reserved, and then suspend execution.

   If the current handler is not running in the matching listener, then
   it is required, first, to check if there is any suitability value
   already saved for this given session.  If so, that means that this
   EAR message is only serving to confirm a path that, previously was
   checked by having MAR and BID messages sent back and forth, and now
   we should skip to get new connections that lead the current node to
   the next ones in line with the targeted listener.

   Considering that there is no current suitability values stored for
   this current session, then the node must self-assess on its own
   capabilities to perform the admission request contained in the EAR
   message.  Both in this scenario and in the latter one, where the
   procedure is equivalent, if there is no capability to perform the
   admission request, then the processing of this session must terminate
   here and a REF message should be sent back to inform of that event,
   switching the state of the Handler to Closed, just before terminating
   the thread.

   If the current node is able to support the admission request that was
   described in the received EAR message, then a pre-reservation of such
   resources must be done.  Here, we now reach the same step as before
   if there was a suitability value already expecting us in the
   Handler’s data structure: we need to proceed to verify which are the
   candidate connections from this current node to the listener.

   Three possibilities can happen in this situation: there is a single
   connection path to the listener; there are multiple connection paths
   to the listener; or there is none.  In the latter case the procedure
   is simple, as a REF message must be sent back to notify that a dead-
   end was reached and, thus, the request could not be completed.  In
   this situation the handler switches its state to Closed and then
   terminates its thread.

Lopes, et al.           Expires 31 December 2026               [Page 20]
Internet-Draft                Rank Protocol                    June 2026

   In the case of existing a single connection path towards the
   listener, then a new cloned EAR message must be sent over that
   connection.  As the message is sent, the handler’s state must switch
   to Pre-Reserved and, internally to the Handler, the information about
   which was the message source node must be saved as a reservation past
   node.

   In the case of existing more than a single connection path towards
   the listener, the procedure is similar to the single path case, but
   differing on the type of message sent, and the number of sent
   messages as well.  In this case, a MAR message must be sent to each
   candidate next node in line towards the targeted listener.  As soon
   as the MAR messages are sent, the Handler must switch is state to one
   of the following states.  With this state update, and internally to
   the Handler, the information about which was the message source node
   must be saved as a reservation past node.

   *  Update state to Pre-Reserved if the last state was Assessing.

   *  Update state to Auction-Waiting if the last state was Presenting.

   In both cases of single and multiple targeting, a parallel execution
   must be started in the end of this procedure, whilst the Handler
   thread is suspended waiting for new future actions: a timeout action
   is spawned so that, if no action happens on timeout, the actions done
   by the Handler are automatically subject to a rollback action.  The
   management of the timeouts and such asynchronous calls must be the
   responsibility of the Timeout Handler component.  In these cases,
   different timeout values must be considered for waiting for answer on
   EAR and MAR messages.  When a timeout is reached and the Handler’s
   actions are subject to rollback, its state must also change to Closed
   before terminating the main thread.

5.7.  Handler Process on MAR Message Received

   When a MAR message is received in an ingress interface where Rank is
   capturing data, the Handler must start this set of steps for
   processing this type of messages.  As soon as the Handler is created
   to handle this new MAR message, the Handler state must change to
   Auction Bidding.

Lopes, et al.           Expires 31 December 2026               [Page 21]
Internet-Draft                Rank Protocol                    June 2026

   After switching states, a self-assessment is required, so to estimate
   the suitability value that will represent the current capability of
   the Rank node to perform the admission request that is in place
   within the MAR message, by its list of requirements and priority.
   From this assessment two values are relevant: if the suitability
   value is zero, that means that the current node is unable to perform
   the admission request; otherwise, the node is able to perform and, as
   such further steps are required.

   If the node assesses as unable to perform the admission request, then
   a BID message must be sent back with suitability value zero, and the
   Handler’s state must change to Closed before terminating itself.

   If the node is able to perform the admission request, then a BID
   message with the estimated suitability value must be sent back.
   After this step, the state must be changed to Pre-Reserved, and the
   pre-reservation must be performed, of the affected resources in the
   current node.  In this situation, again, a parallel execution must be
   done to coordinate a timeout action, controlled by the Timeout
   Handler: if no action is taken (no answer back after sending BID
   message), then the Handler’s actions must be subject to rollback.

5.8.  Handler Process on BID Message Received

   When a BID packet is received by a Handler, the Handler must verify
   if its state currently matches with Auction Waiting.  If it does not
   match, then the Handler must update its state to Closed and then
   terminate its thread.  Otherwise, a waiting time for all bids must
   start, in which each suitability value received from candidates are
   received and collected within the Handler data structure (Bid Set).
   This action occurs during a time slot bound by a Auction timeout,
   managed by the Timeout Handler: when the timeout is reached, the node
   must not waiting for any other suitability value.  Consequently, if
   all candidates answer back before timeout being reached, the
   processing must continue.

   With all suitability values duly collected in the Bid Set, the
   Handler must now check for its cardinal, leaving three alternative
   execution paths: an execution path if there is no suitability values
   in the set; an execution path if there is a single unique maximum
   suitability value in the set; or an execution path if there are
   several equal maximum suitability values in the set.

   The first alternative (if there is no suitability value in the set)
   is straightforward to handle: in this case the Handler must cease its
   functions, sending a REF message back to the original node source,
   and switch its state to Closed beforehand.

Lopes, et al.           Expires 31 December 2026               [Page 22]
Internet-Draft                Rank Protocol                    June 2026

   The second alternative (if there is a single and unique maximum value
   in the Bid Set) requires the Handler to prepare an EAR message to
   send to the node that had estimated such suitability value.  In such
   a case this EAR message is sent to the node that replied with a BID
   message carrying this suitability value, and this message is to be
   sent with an empty payload, as the next node already received and
   assessed its own capability of performing the admission request.

   The third alternative (if there are multiple equal maximum
   suitability values within the Bid Set) requires the session
   identifier to be regenerated and translated in the Translation Table.
   In the case the Rank session gets in this stage, this means that
   replicas must be propagated from this point on, so that if any of
   these future sessions get refused, then only such branch is deleted.
   For this reason, a new ULID (hereby denoted by ULID_) must be
   generated for each selected suitability value and the pair [ULID,
   ULID_] must be saved in the Translation Table.  With this, new EAR
   messages must be sent to each suitability value estimator with ULID*
   with an empty payload.

   After sending the EAR messages, a timeout for receiving answers must
   be started by the Timeout Handler.  On timeout, the Handler actions
   must be rollback and the Handler state must switch to Closed and have
   its thread terminated.

5.9.  Handler Process on ACC Message Received

   Receiving an ACC packet means that the current Handler processing
   this content is now in a node that already has a pre-reservation for
   a held session.  As soon as the processing steps into this stage,
   then the Handler must automatically switch the pre-reservation to a
   reservation, by swtiching the Reservation state (the lifecycle of a
   reservation is described in detail in Section 5.12).

   As this communication is already being done from the listener back to
   the talker, now we need to unravel if the session identifiers that we
   are receiving are originals or replicas that were once generated at
   this node, when the request first arrived here through an EAR/MAR
   packet.  To do so we need to check if the session identifier exists
   in the Translation Table.

   If the session identifier exists in the Translation Table, then a new
   ACC packet must be sent to the next node in line to the talker, with
   the original session identified (hereby called ULID, differing from
   the replica ULID*).  On this event, the Handler state must switch to
   Reserved and, then, the current node (accepting node) must be added
   to the Handler’s data structure as next node in reservation.  With
   this action, the Handler’s thread is suspended.

Lopes, et al.           Expires 31 December 2026               [Page 23]
Internet-Draft                Rank Protocol                    June 2026

   If the session identifier does not exist in the Translation Table we
   need to check if the current node is the origin node for this
   session.

   If this node is the origin of this session, then the result (error
   code) of the reservation request must be sent back to the API, where
   the request was first triggered from: with this action, the Handler
   state must switch to Reserved and, then, the current node (accepting
   node) must be added to the Handler’s data structure as next node in
   reservation, and then the threading mechanism is suspended.

   If this node is not the origin of this session, then an ACC packet
   must be sent over the next node in line to the talker.  With this
   action, the Handler state must switch to Reserved and, then, the
   current node (accepting node) must be added to the Handler’s data
   structure as next node in reservation, and then the threading
   mechanism is suspended.

5.10.  Handler Process on REF Message Received

   Receiving a REF packet means that the current Handler processing this
   content is now in a node might have a pre-reservation.  As soon as
   the processing steps into this stage, if such a scenario applies,
   then the pre-reservation must be revoked with the given session
   identifier from the REF packet.  In this case, if there was a pre-
   reservation in place, then the Reservation itself must transition its
   state to Cleared (the lifecycle of a reservation is described in
   detail in Section 5.12).

   As this communication is already being done from the listener back to
   the talker, now we need to unravel if the session identifiers that we
   are receiving are originals or replicas that were once generated at
   this node, when the request first arrived here through an EAR/MAR
   packet.  To do so we need to check if the session identifier exists
   in the Translation Table.

   If the session identifier exists in the Translation Table, then the
   replica session identifier (hereby denoted as ULID*) must be deleted
   from the Translation Table.  If the Translation Table, with this
   action, is now clear, then the Handler’s state switches to Closed,
   without no further action, thus suspending the thread.  If the
   Translation Table is not empty after this action, then a REF message
   must be sent to the next node in line with the talker.  This action
   must be followed by the switching of the Handler’s state to Closed,
   and then its thread must be suspended.

Lopes, et al.           Expires 31 December 2026               [Page 24]
Internet-Draft                Rank Protocol                    June 2026

   If the session identifier does not exist in the Translation Table we
   need to check if the current node is the origin node for this
   session.

   If this node is the origin of this session, then the result (error
   code) of the reservation request must be sent back to the API, where
   the request was first triggered from: with this action, the Handler
   state must switch to Closed and then the threading mechanism is
   suspended.

   If this node is not the origin of this session, then a REF message
   must be sent to the next node in line with the talker.  This action
   must be followed by the switching of the Handler’s state to Closed,
   and then its thread must be suspended.

5.11.  Handler Process on REP Message Received

   When receiving a REP message, the Handler must switch its state to
   Replenishing.  After this action, the Handler must check if the
   current node is the session’s listener or not.  If the current node
   is the session’s listener, then a REF packet must be sent to the next
   node in line to the talker, and then the Handler’s state must change
   to Closed and the thread is terminated.

   In the scenario that the current node is not the session’s listener,
   then, if the current session is present in the Store of the current
   node, then a REP packet must be sent to the next node in line to the
   listener.

   In this situation, the execution must be asynchronously set so that
   the current thread is suspended and another is spawn handling a
   timeout for the REP answer.  The Timeout Handler must spawn this
   timeout thread that, if the time arrives with no REP answer (a REF
   message for the same session), then it must check if the current
   session identifier is in the Translation Table.

   If the session identifier is in the Translation Table, then the
   Handler’s state must switch to Closed and such a identifier must be
   deleted from the Store, sending a REF message back (to the next node
   in line to the talker) with the original session identifier that was
   found matching in the Translation Table.  On this change, the Handler
   with the original session identifier must also switch its state to
   Closed.

   If the session identifier is not in the Translation Table, then a REF
   message must be sent to the next node in line with the talker,
   switching the state to Closing and terminating the thread.

Lopes, et al.           Expires 31 December 2026               [Page 25]
Internet-Draft                Rank Protocol                    June 2026

5.12.  Lifecycle of a Reservation

                                 ┌─────────┐
   ┌────unconsider()─────────────┤ Created │
   │                             └─┬──┬──┬─┘
   │                               │  │  │
   │         ┌wait_for_sacrifice()─┘  │  └────────────reserve()─┐
   │         │                        │                         │
   │         │                        │                         │
   │ ┌───────▼───────┐          pre_reserve()                   │
   │ │   Virtually   │                │                         │
   │ │ Pre-Reserved  │                │                         │
   │ └──┬────┬───────┘                │                         │
   │    │    │                        │   ┌─mark_pre_reserved()─┼────┐
   │    │    │                        │   │                     │    │
   │    │    │                ┌───────▼───▼──┐                  │    │
   │    │    │                │ Pre-Reserved ├─────────────┐    │    │
   │    │    │                └───────┬──────┘             │    │    │
   │    │    │                        │         mark_reserved() │    │
   │    │    │                   replenish()               │    │    │
   │    │    │                        │                 ┌──▼────▼────┴─┐
   │    │    └─reserve()──────────────┼─────────────────▶   Reserved   │
   │    │                             │                 └───────┬──────┘
   │    │                             │                         │
   │    │                             │                    replenish()
   │    │                             │                         │
   │    └─replenish()────────────▶────▼────┐                    │
   └─────────────────────────────▶ Cleared ◀────────────────────┘
                                 └─────────┘

    Figure 2: The Reservation State finite state machine (FSM) diagram.

   State changes can be effected by a number of events.  These events
   are pictured as the labelled arcs in Figure 2.  The label definitions
   are listed below.  For a detailed explanation of the effect of these
   events on Rank protocol operation, consult Section 5.13.

   Wait for Sacrifice  As the current Rank node is saturated (cannot
      openly receive any other resource reservation for the set of
      resources in its admission request), the node will sacrifice
      another reservation that might create a vacant space for it, if it
      has a lower priority than the more recent one.

   Unconsider  A reservation is deleted as soon as it is created.

   Reserve  A reservation is made effective in the system.

   Pre-Reserve  A reservation is prepared (temporarily saved) in the

Lopes, et al.           Expires 31 December 2026               [Page 26]
Internet-Draft                Rank Protocol                    June 2026

      system.

   Replenish  A reservation is cleared from the system.

   Mark Reserved  Promote a pre-reservation to a reservation.

   Mark Pre-Reserved  Demote a reservation to a pre-reservation.  This
      can only happens in internal/debug transactions or in state
      switchings such as a consequence from the virtually pre-
      reservation state handling.

5.13.  The Reservation State Machine

   A detailed description of the Reservation state change follows.  Each
   state change is invoked by an event (Section 5.12).  This event may
   produce different effects, depending on the current state of the
   Reservation.  For this reason, the state machine below is organized
   by current Reservation state and received event.  Each entry in the
   state machine described the resulting new Reservation state and the
   required set of additional actions.

 State(s):      Created

    Event:      Unconsider

New state:      Cleared

   Action:      A reservation entity was created but is intended to be discarded.

 State(s):      Created

    Event:      Wait for Sacrifice

New state:      Virtually Pre-reserved

   Action:      A reservation was created but, currently, the node is saturated for a given admission request. But this request is still admissable since there is another, on system, that has a lower priority and will be replenished.

 State(s):      Created

    Event:      Pre-reserve

New state:      Pre-reserved

   Action:      A reservation was created and, while it waits for an answer from the listener, it marks itself as pre-reserved.

 State(s):      Created

    Event:      Reserve

Lopes, et al.           Expires 31 December 2026               [Page 27]
Internet-Draft                Rank Protocol                    June 2026

New state:      Reserved

   Action:      A reservation was created and, as it is in the listener of a session and the current node is capable of performing the admission request, then the reservation swtiches to Reserved state.

 State(s):      Virtually Pre-reserved

    Event:      Replenish

New state:      Cleared

   Action:      A reservation that was marked as virtually pre-reserved was cancelled out.

 State(s):      Virtually Pre-reserved

    Event:      Reserve

New state:      Reserved

   Action:      A reservation that was marked as virtually pre-reserved was made effective after a confirmation of all nodes in the Rank session.

 State(s):      Pre-reserved

    Event:      Mark reserved

New state:      Reserved

   Action:      A reservation that was marked as pre-reserved was made effective after a confirmation of all nodes in the Rank session.

 State(s):      Pre-reserved

    Event:      Replenish

New state:      Cleared

   Action:      A reservation that was marked as pre-reserved was cancelled out.

 State(s):      Reserved

    Event:      Mark Pre-reserved

New state:      Pre-reserved

   Action:      For internal object initialization, a reservation transitioned from a reserved into pre-reserved state.

 State(s):      Reserved

    Event:      Replenish

Lopes, et al.           Expires 31 December 2026               [Page 28]
Internet-Draft                Rank Protocol                    June 2026

New state:      Cleared

   Action:      A reservation was cleared out.

5.14.  Heartbeat (HBT) Message Exchange

   As it is stated until this point, the Rank protocol lack some
   reliability features.  This is an issue in the way that it can void
   guarantees that Rank attempts to ensure to clients, in terms of
   resource allocation.  For instance, if a link fails between two nodes
   that had an already reserved path, the current solution of Rank is
   not capable to proceed with a solution, and all the nodes affected by
   such session will be, from that moment on, in a dirty state.

   This type of issue is a situation to which protocols such as the RSVP
   [RFC2205] are able to assist, since they are constantly dispatching a
   message with the reservation request, periodically, unil it is no
   longer needed.  Rank, on the other hand, as a stateful protocol, does
   not require complete messages such as EAR messages to be periodically
   sent between nodes, as this would create a large and dispensable
   overhead, as well as it would introduce a new feature to a same
   message type.

   For this reason, the heartbeat message (HBT) was created, with a
   similar structure to the ACC and REF messages, but with a different
   behavior.  For each new HBT message, a new ULID is generated with the
   same entropy value, but differing on its timestamp.  When created,
   the HBT is always sent to the next node in line towards the listener,
   with a pre-defined periodicity Ti (or given as a requiremement in the
   list of requirements that is part of the original admission request).

   With the periodically created HBT being sent in each node towards
   their next in line, it is expected that each receiving node Ni may
   also predict the time instant in which a given message is to be
   received.  This behavior will not only allow each node to report on
   the reliability of a given connection to the listener, as it also may
   be used to allow an easier method to get metrics for the proximity
   criterion of the self-assessment algorithm that each node performs
   when receiveing an admission request.

   The handling of this message cannot be compared to others, since it
   is not part of a creation or a deletion of a Rank session, but rather
   maintains a session.  Alternatively to other message processing, a
   new entity must be introduced to handle these messages and control
   the state of each reservation.  For this reason, a Reservations
   Watchdog is able to keep up with time windows for the reception of
   next HBT messages, for each known session with reservation at each
   node.

Lopes, et al.           Expires 31 December 2026               [Page 29]
Internet-Draft                Rank Protocol                    June 2026

   When a HBT message is received, the first action to perform is to
   check if the given ULID entropy is known at the receiving node.
   Considering that the ULID entropy is known, then the message arrival
   time is captured (as Ta), and the predicted time (Tp) is estimated
   from the timestamp in the ULID, Ti, and the periodicity T, as Tp = Ti
   + T.  From here, the the delta between the prediction and the arrival
   time Ta - Tp is estimated, whose value will then be confronted with
   two threshold values: OptimalTime that defines the limit time for the
   best time frame to receive a HBT message, and DangerousLimitTime,
   that defines the limit which, if passed, the link must be considered
   broken.

   The time frame to which a message arrives, determines if the link is
   still synchronous or not:

   *  if the time frame in which the HBT arrived is after
      DangerousLimitTime, then the reservation will be considered Dead,
      and a REP message must be sent to replenish the session.

   *  if the HBT is received within the time frame limited by
      DangerousLimitTime, then a new HBT message should be sent to the
      next node.

   The sending of a new message is also done according to a schedule.
   On sending these messages, as there is only one Reservations Watchdog
   for all reservations, a schedule, hereby called Slots, will register
   the instant on a cycle, It, in which a given session will have its
   HBT message sent.  Figure 3 basically depicts a schedule being
   executed, in which, per instant, each record in Slots is checked and
   a message is sent if an element exists in Slots[It].

Lopes, et al.           Expires 31 December 2026               [Page 30]
Internet-Draft                Rank Protocol                    June 2026

   ┌────────────────┐
   │ Initialization ◀────────────────────────────────────────────┐
   └────────┬───────┘                                            │
            │                                                    │
            │                                                    │
            ▼                                                    │
            Λ                                                    │
           ╱ ╲             ┌────────────┐          ┌────────┐    │
          is the           │send HBT to │          │ update │    │
        session in  ───────▶next node in├──────────▶ It, in ├───▶│
        Slots[It]?         │reservation │          │  time  │    │
           ╲ ╱             └────────────┘          └────────┘    │
            V                                                    │
            │                                                    │
            │                                                    │
      ┌─────▼────┐                                               │
      │update It,│                                               │
      │ in time  ├───────────────────────────────────────────────┘
      └──────────┘

                    Figure 3: Sending of a HBT message.

6.  List of Requirements Specification

   An admission request is a structure that is comprised of a priority
   and a list of requirements that is being requested.  In this section
   the specification for such requirements is described.

   The description of a requirement may be similar to what one would use
   to characterize a resource, independently of its type.  With the
   joint effort from standardization entities such as IETF, IEEE, and
   IANA, and also with the help of some vendors, a normalized interface
   for resource configuration was created, in which resource description
   files were also normalized.  This interface is NETCONF [RFC6241], and
   the description files are YANG modules [RFC7950].

6.1.  The Composition of a Document

   A YANG module, although it can represent a resource configuration,
   cannot hold the current information regarding a configuration: it is
   a schema.  Being a shema, it means that it only standardizes how a
   given resource should be as input, and, aside, we need to hold a
   document file able to embody such a skeleton.  From this conclusion,
   there are, at least, two possible alternatives for the actual
   document: as defined by the standard, a document could be specified
   as XML [RFC7950] or as JSON [RFC7951].

Lopes, et al.           Expires 31 December 2026               [Page 31]
Internet-Draft                Rank Protocol                    June 2026

   Considering the medium in which we want to use a document file to
   transmit data from one part to another, the JSON format defines a
   smaller footprint specification, enabling fast transmission, being
   better suited for data serialization, rather than XML, which is more
   convenient for data interchangeability.

   Using JSON to describe our content as defined by the YANG modules
   schemas, unfortunately, does not provide the entire set of features
   XML can supply, but all the functionalities we require are cross-
   compatible with JSON.

   Still, the JSON format does not deliver the capability for
   serialization and deserialization.  To serialize a JSON document to,
   later, insert it within the payload of an EAR or MAR message, the
   marshalling method should be language-independent as the JSON file
   itself.  To solve this issue, we have adopted CBOR as a data format
   whose design goals include the possibility of extermely small code
   size, fairly small message size, and extensibility without the need
   for version negotiation [RFC8949].

   This representation allows us to pass a JSON object from its
   stringified form to a marshalled byte stream which is able to be
   inserted in the payload field of both EAR and MAR packets.  In
   summary, from a requirement to a payload field of a Rank packet able
   to carry a list of requirements, we need to perform the following
   steps:

   1.  Identify the YANG module (schema) tuned to represent the given
       requirement.

   2.  Create the JSON object, compliant to the chosen YANG module, with
       the given requirement specifications.

   3.  Marshal the JSON object as a CBOR object in a serialized morph.

   4.  Place the serialized CBOR object in position within the payload
       of a Rank packet.

6.2.  Marshalling of Requirements

   Figure 4 depicts the lifecycle of a requirement from its packing into
   a Rank packet until its unpacking as a Rank node receives it.  In
   this figure, Rank handles the context of a single requirement, not a
   list of requirements.

Lopes, et al.           Expires 31 December 2026               [Page 32]
Internet-Draft                Rank Protocol                    June 2026

      start
        │
        ▼                "cpu-cores": {
                           "value": 2
   2 CPU cores           }                      1010010..01

       (A) ─────────────────▶ (B) ────────────────▶ (C)
        ▲                                            │
            marshalling phase                        │
        │                           ┌───── (D) ──────┘
                                    │
        │                           │
          ┌───┬─┬──┬─┬──────────────▼──────────────┐
        │ │   │ │  │ │█████████████████████████████│
          └───┴─┴──┴─┴──────────────┬──────────────┘
        │  EAR/MAR                  │
                                    │
        │                           └───── (E) ──────┐
            unmarshalling phase                      │
        │                                            ▼
       (H) ◀───────────────── (G) ◀──────────────── (F)

   2 CPU cores           "cpu-cores": {         1010010..01
                           "value": 2
                         }

     Figure 4: Lifecycle of a requirement from packing to unpacking in
     a Rank EAR/ MAR message.  Legend: (A) a requirement is stated for
          admission request; (B) with a YANG module identified, a
        requirement is written as JSON; (C) from JSON, the object is
        serialized into CBOR; (D) the serialized CBOR is placed as a
      message’s payload; (E) the serialized CBOR is retrieved from the
     message; (F) from CBOR, the object is deserialized into JSON; (G)
      if the content is YANG valid, the requirement is parsed; (H) the
               requirement is assessed in the receiving node.

   To handle with the multiplicity of requirements as in the list of
   requirements that is part of an admission request, one can create a
   JSON object earlier, whose content is an array with the correctly set
   order of requirements.  As such, a list of requirements can be
   characterized as a JSON object carrying a variety of requirements
   which, by themselves, are JSON objects representing single
   requirements whilst being fully compliant with their matching YANG
   module, as depicted in Figure 5.

Lopes, et al.           Expires 31 December 2026               [Page 33]
Internet-Draft                Rank Protocol                    June 2026

  (A)  I need 2 cores of CPU, a given CBS configuration, and a minimum
                       network bandwidth of 400 Mbps.

             │                        │                       │
             ▼                        ▼                       ▼
                    {
                      [
                        {"cpu-cores": {"value": 2}}},
  (B)                   {"cbs": {...}},
                        {"bandwidth": {"value": 400}}}
                      ]
                    }
                                      │
                                      ▼
  (C) 01101010101001010001001010100111100110101101010100101001010101010
                                      │
                                      └───────┐
                                              │
      ┌───┬─┬──┬─┬────────────────────────────▼────────────────────────┐
  (D) │   │ │  │ │█████████████████████████████████████████████████████│
      └───┴─┴──┴─┴─────────────────────────────────────────────────────┘
       EAR/MAR

                Figure 5: Marshalled list of requirements.

   Regarding the ordered key points in the enumeration before,
   considering now a complete list of requirements, just before
   serializing each JSON object requirement, we can position each item
   into an array within a new JSON object which must be the one, then,
   subject to the serialization to CBOR.

   From the perspective of a node receiving a message containing a
   marshalled list of requirements as a payload, the procedures to
   unpack are different.  For the effect, let us consider that we are
   working under the context of a Rank node that happens to receive an
   EAR message.  As we are parsing the EAR message, the contents of its
   payload are retrieved and, now, require to be parsed.

   As such, we must reverse the steps on how to marshal a list of
   requirements, but we must take into account the possibility of the
   received byte stream to be invalid.  A received message cannot be
   considered as being well-formed or coming from a reliable source.  It
   is critical to analyze the entire composition of each requirement to
   proceed with the handling of such an admission request.

   The byte stream must be deserialized from its CBOR representation and
   translated into its JSON counterpart.  Here must be able to foresee
   an array with a collection of requirements, each one disposed in the

Lopes, et al.           Expires 31 December 2026               [Page 34]
Internet-Draft                Rank Protocol                    June 2026

   same order as its sender requested it: this is the list of
   requirements.  From this step, we now need to analyze the
   requirements, one by one.

   The analysis of each requirement is a critical task.  So it happens
   that as each requirement must be compliant with a specific way of
   characterizing an admission request, each one must comply with the
   schema defined in ta surrogate YANG module that meticulously defines
   such criteria.  FOr this matter (an here is where the linearly
   reverse procedure of marshalling fails), for each requirement in the
   list, the requirement type must be identified.  Then the JSON must be
   validated against the matching YANG module that defines its
   characteristics.

   As one verify the JSON requirement against the YANG module two
   outcomes could occur: in case it is valid, then another requirement
   is also sbuject to validation or, if there are no other requirement
   in queue, the whole list of requirements is adopted as a valid list
   and the admission request is put into action; otherwise, if a
   requirement does not report being valid, the remainder requirements
   analysis is cancelled, and the admission request is reported back as
   refused.

7.  Suitability Value Estimation

   As soon as a message is received at a Rank node, besides unpacking
   the requirements and verifying their conformity against their
   respective YANG modules, each node self-assesses its own capability
   of performing the admission request.  The outcome of this assessment,
   generally speaking, cannot be a binary value and, in this section, we
   describe how is this suitability value estimated.

7.1.  Contextualization of Resource Estimation

   The pattern in Figure 6 depicts the transaction of messages between
   both resource estimation processes that occur within the execution of
   Rank.

Lopes, et al.           Expires 31 December 2026               [Page 35]
Internet-Draft                Rank Protocol                    June 2026

   ┌──────┐                                ┌──────┐
   │Talker│                                │Talker│
   └─┬────┘                                └─┬────┘
     └┐               .─.                    └┐               .─.
      │.─.     ┌─────▶ N0)                    │.─.     ┌─────▶ N0)
      ( M ──┬──┘      `┬'                  ╔═▶( M ──┬──┘      `┬'
       `┬'  │   .─.                        ║   ║┬'  │   .─.
        │   └─▶( N1)   │                   ╚═══╝│   └─▶( N1)   │
       .▼.      `┬'     ─                      .▼.      `┬'     ─
      ( NN)       ─ ─ ┐  │                    ( NN)       ─ ─ ┐  │
       `┬'                                     `┬'
         ─ ─ ─ ─   ┌──┴──┴──┐                    ─ ─ ─ ─   ┌──┴──┴──┐
                └ ─│Listener│                           └ ─│Listener│
                   └────────┘                              └────────┘
               (A)                                     (B)

                        ┌──────┐
                        │Talker│
                        └─┬────┘
                          └┐        ┌─────▶.─.
                           │.─.     │   ╔▶( N0)
                           ( M ──┬──┘   ║  ║┬'
                            `┬'  └──▶.─.╚══╝
                             │    ╔▶( N1)   │
                            .▼.   ║  ║┬'     ─
                         ╔▶( NN)  ╚══╝ ─ ─ ┐  │
                         ║  ║┬'
                         ╚══╝ ─ ─ ─ ─   ┌──┴──┴──┐
                                     └ ─│Listener│
                                        └────────┘
                                    (C)

   ┌──────┐                              ┌──────┐
   │Talker│                              │Talker│
   └─┬────┘                              └─┬────┘
     └┐        ┌─────▶.─.                  └┐        ┌─────▶.─.
      │.─.◀════╬═════( N0)                  │.─.     │     ( N0)
   ╔═▶( M ──┬──┘  b0  `┬'                   ( M ══╦──┘      `─'
   ║   `┬◀═╗└──▶.─.                          `┬'  ╚══▶.─.
   ║bN  │  ╚═══( N1)   │                      │      ( N1)
   ║   .▼.  b1  `┬'     ─                    .▼.      `┬'
   ╚══( NN)       ─ ─ ┐  │                  ( NN)      └────┐
       `┬'                                   `─'            │
         ─ ─ ─ ─   ┌──┴──┴──┐                            ┌──▼─────┐
                └ ─│Listener│                            │Listener│
                   └────────┘                            └────────┘
              (D)                                   (E)

Lopes, et al.           Expires 31 December 2026               [Page 36]
Internet-Draft                Rank Protocol                    June 2026

     Figure 6: Process of resource estimation in assessing suitability
      value.  In phases (B) and (C) the arrows represent the execution
            of the self- assessment to generate each B outcome.

   In Figure 6, a node M receives an admission request forwarded from a
   talker T, and intends to proceed with the request through some nodes
   Ni that currently grants a connection to the targeted listener L.  In
   Figure 6 each iteration is being by a different stage:

   *  In (A) the node M receives the message.

   *  In (B) the node M proceeds to self-assess its capabilities of
      performing the admission request, cancelling if not capable.

   *  As node M has three connecting nodes that can provide it with a
      path towards the listener, in (C) node M sent a message to each
      neighboring node Ni, leaving them to self-assess their own
      capabilities of performing what is being requested.

   *  In response to this action, in (D) each node answers back to node
      M with a suitability value.

   *  Node M, having received the suitability values from every node Ni,
      in (E), it is now responsible for sorting candidates for
      forwarding the request message.

   When a node has requested others to perform a resource estimation, it
   waits for an answer per node (as in phase (D)).  To allow this action
   to be performed, the suitability values that come from each assessing
   node must be comparable amongst them.  Thus, the definition of the
   evaluation function not only has to be the same in each node, but the
   range of values must also be normalized, so that each final
   suitability value can be comparable on the same scale throughout
   every node in a Rank session.

   In this protocol, the resource estimation must be able to accommodate
   a varied set of resources, for which assessing the current capability
   of performing a request cannot be evaluated equally or through the
   same means.  This raises the question of how to assess a list of
   requirements in a node.  As each resource is different from another,
   each resource must have a unique assessment function directly
   defined, and the results must be output in the same fashion as the
   final suitability value: in a normalized range.

Lopes, et al.           Expires 31 December 2026               [Page 37]
Internet-Draft                Rank Protocol                    June 2026

   By definition, the normalized range of values for the suitability
   value, B, and for each individually-assessed resource value is [0,
   1], in which 0 means total inability of performing what is being
   requested, and any other value means that a resource is capable, in a
   crescent ratio from 0 to 1.

   The task of self-assessment within a node against a list of
   requirements is not a computationally expensive execution.  Still,
   Rank needs to do more than just a current evaluation of the node’s
   resources to ensure that a resource allocation is guaranteed to be
   working during the interval in which is in place.  Therefore, several
   criteria need to be taken into consideration to declare that a given
   node is more capable than another to perform a given task under a
   strict list of requirements.  The following criteria were designed:

   1.  Bare-metal node resources.

   2.  Current node resources.

   3.  Priority.

   4.  Proximity.

   5.  Historical performance.

   At the end, a suitability value, B, is computed with these
   constributions from the following described criteria.

7.2.  Bare-metal Node Resources for Suitability

   Considering the list of requirements, the first approach to check if
   the current resources are capable of performing such specifications
   is to check if the surrogate node has bare-metal components that
   could support such an admission request.  Let us consider some
   examples to better illustrate this criterion:

   1.  The list of requirements specifies the need for 2 GB of memory.
       In such a case, with this criterion, the node will assess if,
       independently of the current state of the machine, the node has
       at least 2 GB of memory (used or unused).

   2.  The list of requirements states a requirement for a time-critical
       traffic subject to time shaping.  In such a case, the node will
       assess if there are capabilities to sustain the time-aware shaper
       (TAS) standard or not.

Lopes, et al.           Expires 31 December 2026               [Page 38]
Internet-Draft                Rank Protocol                    June 2026

   A first criterion of bare-metal node resources (hereby called C1) is
   called as a contribution to the self-assessment score of a Rank node.
   This criterion can result in two possible outcomes:

   *  0 if the node total resources do not support at least of item of
      the list of requirements.

   *  1 if the node total resources do support the list of requirements.

   In the case of reaching an outcome of 0, then no more criteria is
   required for the self-assessment and the current node declares itself
   as uncapable to perform the admission request.

7.3.  Current Node Resources for Suitability

   It is possible that the outcome of the bare-metal criterion could not
   be enough to be fully able to guarantee a resource allocation without
   further disturbances along the duration of the reservation, at least
   whenever the answer to it is not zero: if the answer is zero, with
   absolute certainty, there is no way to handling such a resource
   allocation in the self-assessing node; otherwise the answer is still
   uncertain.  This ambiguity needs a second criterion, so that a
   tiebreaker rule is applied.

   To advance a tiebreaker, the current node resources (hereby called
   C2) is relevant as it steps one more level in the direction of what
   is really being performed within the context of the node under
   assessment.  To better understand how someone can tackle this
   assessment, it is important first to describe how requirements are
   defined.

   Let us consider a list of requirements R which is given as the
   requirements towards a reservation that should be assessed in a given
   Rank node.  Such a list R is a collection where the insertion order
   of the elements is relevant, meaning that under the context of R =
   (r0, r1, …, ri), the first requirement has an higher relevance than
   the second, r1, which consequently is highly regarded in relation to
   the last requirement, ri.

   The self-assessment of a Rank node considering the criterion of their
   currently available node resources must take into consideration the
   order of requirements as they are listed within R.

   If the list of requirements has a cardinal of 1, then the self-
   assessment is trivial, being the direct evaluation value of the first
   and only requirement in r0, as z0.  Following this case, the
   requirements must weigh differently, in a descending order from the
   first to the i-th element of R.

Lopes, et al.           Expires 31 December 2026               [Page 39]
Internet-Draft                Rank Protocol                    June 2026

                                   taumin > 0.5               taumax < 1
                                    │                                  │
  ┌─────────────────────────────────┼────┳─────────────────────────────┤
  │                   A                ◀─╋─▶            B              │
  └─────────────────────────────────┴────╋─────────────────────────────┘
  0                                      │                             1
                                        tau

   Figure 7: Generic representation of weights distribution between two
            requirements A and B, in a list of requirements R.

   In Figure 7 a generic distribution of weights between two
   requirements is depicted, in which a given weight (tau) is applied to
   the first requirement.  Following this reasoning, the second
   requirement receives the remainder weight of 1–tau, since the total
   assessment value must be 1, that is, in the best-case when all the
   assessed requirements receive the highest grade zi, the total must
   result in 1.  To allow the distintction between both stated
   requirements in R, and repecting that the i-th rqeuirement as always
   more value than its following (i+1)-th requirement, the value of tau
   cannot be lower or equal to 0.5 (half its individually-graded
   assessment value), in tau minimum (taumin).  It cannot be higher or
   equal than 1 in taumax, as well.

   The choice of the tau value should be parameterizable per assessing
   Rank node, and is a percentage applied over the individually-graded
   assessment value of a requirement, z.  For instance, if the list of
   requirements has four items, R = (r0, r1, r2, r3), the distribution
   of weights can be depicted as in Figure 8.

  ┌───────────────────────┳──────────────────┳─────────────┳───────────┐
  │           A           ┃         B        ┃       C     ┃     D     │
  └───────────────────────╋──────────────────╋─────────────╋───────────┘
  0                       │                  │             │           1
                        tau 0              tau 1         tau 2

  Figure 8: Generic representation of weights distribution between four
         requirements (A, B, C, D), in a list of requirements R.

   Profiting from the recursive behavior of the starting expression and
   of the depiction in both Figure 7 and Figure 8, one can write C2 as
   the following C2(x) expression:

   C2(R) = (z0) If (cardinal(R) = 1) Else ( Mul(tau, z0) + Mul(1–tau,
   C2(R[1..])) )

Lopes, et al.           Expires 31 December 2026               [Page 40]
Internet-Draft                Rank Protocol                    June 2026

   The possibility of parameterizing the value of tau in the range of
   (taumin, taumax) allows the Rank protocol instance to control a
   subjective amount of requirements it wants to consider.

   By keeping the criterion of insertion order in the list of
   requirements, the assessing nodes are informed of which requirements
   must be checked before others.  Nonetheless, there is a critical
   condition that must be enforced.  If any requirement assessment zi is
   equal to 0, tehn the entire criterion of the current node resource
   must yield the same outcome (zero).  This must be enforced since a
   node could have resources to support a given requirement request, but
   not at the time of the request, meaning this criterion must be able
   to cancel out such an admission request and further requirements
   assessment.

7.4.  Priority for Suitability

   Considering both C1 and C2 criteria, the self-assessment of a Rank
   node for the support of a given list of requirements must not be
   closed yet, as two or more machines, although being improbable, could
   achieve a same assessment score.  Within the context of the admission
   request not only Rank nodes receive data on the list of requirements,
   but also a priority level.  As such, this information must be
   considered in the node self-assessment.

   The priority of an admission request is a critical concept within the
   domain of the Rank protocol, since it is a fairness criterion for
   self-assessment: the criterion C3.

   A Rank node must be able to continue the assessment of a given list
   of requirements if the priority of its admission request is higher
   than the reservations that are already allocated within the system.
   In the case that a list of requirements is assessed that can be
   supported by the current Rank node’s system, then the Rank protocol
   instance must be able to allow the automatic selection of an
   allocated reservation and proceed to replenish its used resources
   (check this mechanics in Section 5.12).

   The priority level is relative to the admission request, not with
   each requirement element of the list of requirements R.  Similarly to
   the latter criteria, the criterion of priority C3 must be a value
   from 0 to 1, reflecting the level of priority that the given
   admission request has, where 0 means the lowest priority level, and 1
   the highest possible.  The highest priority level in a Rank admission
   request is defined as 7, according to both Appendix A.2.2 and
   Appendix A.2.3.  The criteria C3’s outcome is evaluated as the
   message priority, p, over the maximum level: C3 = p / 7.

Lopes, et al.           Expires 31 December 2026               [Page 41]
Internet-Draft                Rank Protocol                    June 2026

7.5.  Proximity for Suitability

   At this point, the node was already assessed regarding these
   resources (both bare-metal and current resources) and the priority of
   the admission request.  These metrics are not be enough to solve the
   possibility of gathering two or more equal assessment values.
   Moreover, some considerations are still not considered, such as the
   position of the assessing node, connection-wise, towards the targeted
   listener of the admission request.  This can be solved in a new
   criterion, of node proximity, C4.

   Despite being subjective, since this assessment is not dependent on
   any input given by the admission request besides the information
   regarding its intended destination, the network assessment is
   critical to perform.  It can be decisive when to choose the next
   target in line towards the listener, whenever there are multiple ones
   to choose from, and the assessment of the criteria is still giving an
   equal value.  This assessment will be a reflection of the network
   uncertainty, considering that it will lead the algorithm for resource
   estimation not to ignore the network dynamics and asynchronous
   triggering effects on network management decisions that may occur:
   these considerations are taken in other works to allow several
   decisions in approaches of resource management [Shi2024].

   Considering a criterion for the node proximity towards a targeted
   listener of a given Rank admission request is a rather subjective
   concept, since one can draw multiple conclusions about what proximity
   means.  In terms of proximity, one should understand an association
   of connectivity evaluation functions towards the final destination
   node of the admission request under test.

   To accomplish the goal of this criterion, a set of functions, F, must
   be used (such as latency, jitter, among others), whose final result
   is to be gathered as the average of all functions’ outcomes.  This
   requires that all functions operate by retrieving a value in a
   normalized range from [0, 1].

   In sum, the proximity criterion results in the following possible
   values:

   *  0 if the network assessment functions (F) average 0.

   *  1 if the network assessment functions (F) average 1.

   *  Any other value in between for any other proximity assessment
      value, as the average of the outcomes of each function in F.

Lopes, et al.           Expires 31 December 2026               [Page 42]
Internet-Draft                Rank Protocol                    June 2026

7.6.  Historical Performance for Suitability

   There is a single criterion that should be set to feature some system
   hysteresis during the execution of a Rank instance.  This being, we
   introduce historic performance, C5, as a criterion to help with the
   self-assessment of a node against a list of requirements R.  Having
   such an assessment could lead a node to take into consideration
   admission requests made before, similar to the ones currently
   requested, and deliver a grade on how good such a performance was.

   The historical performance of a given allowance for an admission
   request should be made by leveraging the following variables:

   *  a1, ratio of the number of requirements to the average number of
      requested resource requirements.

   *  a2, percentage of allocated but unused resource reservation.

   *  a3, ratio of how stable are the available resources.

   *  a4, percentage of strict resource reservations over all allowed
      admission requests.

   Adding to this set of variables, an entropy value should be appended
   so that the odds of two nodes presenting the same assessment value
   are severely diminished without compromising the order of magnitude
   of the total self-assessment final grade and the consequent
   disposition of this node towards the admission request outcome.  For
   this reason, a fifth contributor to C5 should be added to generate
   some salt over the estimated values of a1, a2, a3, and a4: the salt,
   s.

   The salt must be seen as a tool to make it difficult for two or more
   assessment scores to be equal.  This parameter is optional, as its
   weight can be set to zero.  Still, its use may be helpful in
   scenarios where several candidate nodes for a reservation may share
   similar network patterns or characteristics.  In such a case, the
   salt value may help the network uncertainty assessment to provide
   enough random proximity values even in similar conditions.  This
   value must not, in any way, compromise the main function of the
   history performance criterion.  Thus, it is suggested to assign W as
   a small percentage weight (below 1%).

   The variables mentioned above are designed to be joint by a weighted
   sum of parameterizable weights di, as described as follows, where
   Sum(di) = 1.

Lopes, et al.           Expires 31 December 2026               [Page 43]
Internet-Draft                Rank Protocol                    June 2026

   C5 = Mul( (1–W), [ Mul(d1, a1) + Mul(d1, a1) + Mul(d1, a1) + Mul(d1,
   a1) ] + Mul(W, s) )

7.7.  The Final Value, the Suitability Value

   At this point, all the individual contributors to the final self-
   assessment grade are estimated, and the suitability value, B, can be
   estimated as follows, where B is a value in [0, 1].

   B = Mul(C1, C2, C3, Avg(C4, C5))

   The first three terms above, relative to the first three criteria, as
   they are directly estimated from the list of requirements or the
   priority given as input (from the admission request), are multiplied
   by each other.  The cancellation of one of these three terms must
   undoubtedly break the resource estimation down to zero.

   The last two criteria, as they are estimated from other parameters
   rather than what has been given as input, are considered both as an
   average, so that they do not cancel each other out.  This reflects
   some subjectivity characteristic of proximity and historical
   performance criteria.

8.  Security Considerations

   TODO Security

9.  IANA Considerations

   This document has no IANA actions.

10.  References

10.1.  Normative References

   [RFC0879]  Postel, J., "The TCP Maximum Segment Size and Related
              Topics", RFC 879, DOI 10.17487/RFC0879, November 1983,
              <https://www.rfc-editor.org/info/rfc879>.

   [RFC2205]  Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S.
              Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1
              Functional Specification", RFC 2205, DOI 10.17487/RFC2205,
              September 1997, <https://www.rfc-editor.org/info/rfc2205>.

   [RFC6241]  Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
              and A. Bierman, Ed., "Network Configuration Protocol
              (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
              <https://www.rfc-editor.org/info/rfc6241>.

Lopes, et al.           Expires 31 December 2026               [Page 44]
Internet-Draft                Rank Protocol                    June 2026

   [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
              RFC 7950, DOI 10.17487/RFC7950, August 2016,
              <https://www.rfc-editor.org/info/rfc7950>.

   [RFC7951]  Lhotka, L., "JSON Encoding of Data Modeled with YANG",
              RFC 7951, DOI 10.17487/RFC7951, August 2016,
              <https://www.rfc-editor.org/info/rfc7951>.

   [RFC8949]  Bormann, C. and P. Hoffman, "Concise Binary Object
              Representation (CBOR)", STD 94, RFC 8949,
              DOI 10.17487/RFC8949, December 2020,
              <https://www.rfc-editor.org/info/rfc8949>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

10.2.  Informative References

   [_802.1Q]  IEEE, "IEEE Standard for Local and Metropolitan Area
              Networks--Bridges and Bridged Networks", IEEE Std 802.1Q-
              2022, DOI 10.1109/IEEESTD.2022.10004498, 22 December 2022,
              <https://doi.org/10.1109/IEEESTD.2022.10004498>.

   [Abou21]   Abouaomar, A., Cherkaoui, S., Mlika, Z., and A. Kobbane,
              "Resource Provisioning in Edge Computing for Latency-
              Sensitive Applications", IEEE Internet of Things
              Journal vol. 8, no. 14, pp. 11088-11099,
              DOI 10.1109/JIOT.2021.3052082, 15 July 2021,
              <https://doi.org/10.1109/JIOT.2021.3052082>.

   [Farhoudi25]
              Farhoudi, M., Shokrnezhad, M., Taleb, T., Li, R., and J.
              Song, "Discovery of 6G Services and Resources in Edge-
              Cloud-Continuum", IEEE Network vol. 39, no. 3, pp.
              223-232, DOI 10.1109/MNET.2024.3438096, May 2025,
              <https://doi.org/10.1109/MNET.2024.3438096>.

   [Horvath25]
              Horvath, K. and D. Kimovski, "Efficient Location-Based
              Service Discovery for IoT and Edge Computing in the 6G
              Era", Conference 2025 10th International Conference on
              Information and Network Technologies (ICINT), Melbourne,

Lopes, et al.           Expires 31 December 2026               [Page 45]
Internet-Draft                Rank Protocol                    June 2026

              Australia, pp. 94-101,
              DOI 10.1109/ICINT65528.2025.11030893, 2025,
              <https://doi.org/10.1109/ICINT65528.2025.11030893>.

   [Kondo24]  Kondo, D., Ansquer, T., Tanigawa, Y., and H. Tode,
              "Resource Breadcrumbs: Discovering Edge Computing
              Resources Over Named Data Networking", IEEE Transactions
              on Network and Service Management vol. 21, no. 3, pp.
              3305-3316, DOI 10.1109/TNSM.2024.3381591, June 2024,
              <https://doi.org/10.1109/TNSM.2024.3381591>.

   [Kubernetes]
              "Kubernetes Official Page", February 2026,
              <https://www.kubernetes.io>.

   [Li18]     Li, G., Song, J., Wu, J., and J. Wang, "Method of Resource
              Estimation Based on QoS in Edge Computing", Wireless
              Communications and Mobile Computing 7308913, 9 pages,
              DOI 10.1155/2018/7308913, 2018,
              <https://doi.org/10.1155/2018/7308913>.

   [Liu24]    Liu, X., Liu, J., and H. Wu, "A family of truthful
              mechanisms for resource allocation with multi-attribute
              demand in mobile edge computing", Cluster Comput 27,
              11595–11610, DOI 10.1007/s10586-024-04552-x, 2024,
              <https://doi.org/10.1007/s10586-024-04552-x>.

   [Nguyen18] Nguyen, D. T., Le, L. B., and V. Bhargava, "Price-based
              Resource Allocation for Edge Computing: A Market
              Equilibrium Approach", arXiv Computer Science and Game
              Theory, DOI 10.48550/arXiv.1805.02982, May 2018,
              <https://doi.org/10.48550/arXiv.1805.02982>.

   [Olaniyan18]
              Olaniyan, R., Fadahunsi, O., Maheswaran, M., and M. F.
              Zhani, "Opportunistic Edge Computing: Concepts,
              opportunities and research challenges", Future Generation
              Computer Systems Volume 89, Pages 633-645,
              DOI 10.1016/j.future.2018.07.040, 2018,
              <https://doi.org/10.1016/j.future.2018.07.040>.

   [Shi2024]  Shi, Y., Yi, C., Wang, R., Wu, Q., Chen, B., and J. Cai,
              "Service Migration or Task Rerouting: A Two-Timescale
              Online Resource Optimization for MEC", IEEE Transactions
              on Wireless Communications vol. 23, no. 2, pp. 1503-1519,
              DOI 10.1109/TWC.2023.3290005, February 2024,
              <https://doi.org/10.1109/TWC.2023.3290005>.

Lopes, et al.           Expires 31 December 2026               [Page 46]
Internet-Draft                Rank Protocol                    June 2026

   [ULIDCan]  ulid, "The canonical spec for ulid", Repository GitHub,
              February 2026, <https://github.com/ulid/spec>.

   [Wang25]   Wang, H. and M. Mir, "Voluntary resource sharing at the
              network edge to provide cloud services: a systematic
              survey", Computing 107, 113,
              DOI 10.1007/s00607-025-01479-y, 2025,
              <https://doi.org/10.1007/s00607-025-01479-y>.

   [Yi20]     Yi, C., Cai, J., and Z. Su, "A Multi-User Mobile
              Computation Offloading and Transmission Scheduling
              Mechanism for Delay-Sensitive Applications", IEEE
              Transactions on Mobile Computing vol. 19, no. 1, pp.
              29-43, DOI 10.1109/TMC.2019.2891736, 1 January 2020,
              <https://doi.org/10.1109/TMC.2019.2891736>.

   [Yu25]     Yu, J., Liu, S., Zou, Y., Wang, G., and C. Hu, "Auction
              Theory and Game Theory Based Pricing of Edge Computing
              Resources: A Survey", IEEE Internet of Things Journal vol.
              12, no. 16, pp. 32394-32418,
              DOI 10.1109/JIOT.2025.3565539, 15 August 2025,
              <https://doi.org/10.1109/JIOT.2025.3565539>.

   [Zafari21] Zafari, F., Leung, K. K., Towsley, D., Basu, P., Swami,
              A., and J. Li, "Let’s Share: A Game-Theoretic Framework
              for Resource Sharing in Mobile Edge Clouds", IEEE
              Transactions on Network and Service Management vol. 18,
              no. 2, pp. 2107-2122, DOI 10.1109/TNSM.2020.3044870, June
              2021, <https://doi.org/10.1109/TNSM.2020.3044870>.

   [Zhang20]  Zhang, R. and W. Shi, "Research on Resource Allocation and
              Management of Mobile Edge Computing Network",
              Informatica 44(2), DOI 10.31449/inf.v44i2.3166, 2020,
              <https://doi.org/10.31449/inf.v44i2.3166>.

Appendix A.  Rank Data Formats

   This appendix describes the format of Rank protocol packets.  The
   Rank protocol may run over different OSI layers depending on the
   intended situation.  Before any data format are described, the
   details of the Rank encapsulation are explained.

A.1.  Encapsulation of Rank Packets

   Rank runs alternatively, by requester definition, over several
   possible communication layers.  Rank packets are therefore
   encapsulated, depending on the situation, by other headers that might
   exist in each applicable scenario.

Lopes, et al.           Expires 31 December 2026               [Page 47]
Internet-Draft                Rank Protocol                    June 2026

   Rank does not define a way to fragment its protocol packets, and,
   when transmitted from network layer and above, depends on IP
   fragmentation when doing that for packets larger than the network
   MTU.  In practice, there is no proper reason to reach a point in
   which a Rank packet would require more than 65,535 bytes (including
   the communication layer headers that are required), since this would
   mean that the payload is reasonably large, thus having a large list
   of requirements that, tendencially, loses weight reaching no value.

   There are some other important features of Rank encapsulation:

   *  Rank is proposed to be Ethernet Type (EtherType) number 0x7265 (29
      285).  This number is not registered.

   *  Rank is proposed to be IP protocol number 0x9B (155).  This number
      is not registered.

   *  Rank is proposed to be transport protocol number 7265.  This
      number is not registered.

A.2.  Rank Packet Formats

   There are seven Rank packet types.  Not all of them as distinct in
   structure, but serve different purposes.  All Rank packet types begin
   with a 17 byte header.  This header is described first.  Each packet
   type is then described in a succeeding section.  In these sections
   each packet’s division into fields is displayed, and then the field
   definitions are enumerated.

   Two Rank packet types (EAR and MAR) deal with a list of requirements,
   that are CBOR objects [RFC8949].  Because of this, these two Rank
   protocol packets cannot be parsed unless the format of CBOR is also
   understood.

   The receive processing of Rank packets is detailed in Section 5.2.

A.2.1.  The Rank Packet Header

   Every Rank packet starts with a standard 17 byte header.  This header
   contains all the information necessary to determine whether the
   packet should be accepted for further processing.  This determination
   is described in Section 5.2 of the specification.

Lopes, et al.           Expires 31 December 2026               [Page 48]
Internet-Draft                Rank Protocol                    June 2026

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | V | Type  | R |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                                                               |
   +                Session Identifier (128 bits)                  +
   |                                                               |
   +                                                               +
   |                                                               |
   +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               |
   +-+-+-+-+-+-+-+-+

   Version (V)  This 2-bits field holds the information about the
      version of Rank of this message.  As of this document, this field
      MUST be set to all zeroes (0).

   Type  This 4-bits field unsigned integer indicates the type code of
      the message.  This document defines the following type codes: 0 -
      Exclusive Admission Request (EAR) 1 - Multiple Admission Request
      (MAR) 2 - Bid (BID) 3 - Acceptation (ACC) 4 - Refusal (REF) 5 -
      Replenishing (REP) 6 - Heartbeat (HBT)

   Reserved (R)  This 2-bits field is reserved for future use and MUST
      be zero (0).

   Session Identifier  This 16-octet field holds the Rank session
      identifier.  This field is typed for a universally unique
      lexicographically sortable identifier (ULID) [ULIDCan].  A ULID is
      a 16-octet identifier that splits into a 6-octet field for UNIX
      timestamp in milliseconds and a 10-octet field for randomness from
      a cryptographically secure source of randomness, if possible.

A.2.2.  The EAR Packet

   EAR packets are Rank packet type 0.  These packets are sent to
   initiate a request on a node or start the processing of a new session
   at an intermediate or listener node.

   As soon as a node intends to send an admission request towards a
   listener, but targeting a single following node, the message sent in
   the Rank session is an EAR message.

Lopes, et al.           Expires 31 December 2026               [Page 49]
Internet-Draft                Rank Protocol                    June 2026

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | V |   0   | R |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                                                               |
   +                Session Identifier (128 bits)                  +
   |                                                               |
   +                                                               +
   |                                                               |
   +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               | Pri | LiL | R |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Listener (0) |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Listener (2)                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Listener (3)                         |
   +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Listener (4 or 5)                        +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Payload length        |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
   |                       Payload (variable)                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Priority (Pri)  This 3-bits field holds the admission request
      priority value from 0 to 7, where 0 means the lowest priority
      level, and 7 identifies the maximum priority level.  The priority
      will be used in the self-assessment of each node in regards to
      their capability of performing the list of requirements that is
      also carried in this message.  Although coincidental, this field
      might not be exactly the same as a priority code point (PCP) from
      an IEEE 802.1Q virtual local area network (VLAN) header, but can
      be used as such.

   Listener Length (LiL)  This 3-bits field encodes the length of the
      intended listener whose identification is described in a next
      field.  Depending on the abstraction layer level where a Rank
      instance is being run on, the address length will change

Lopes, et al.           Expires 31 December 2026               [Page 50]
Internet-Draft                Rank Protocol                    June 2026

      accordingly.  To that matter, this field identifies this through
      encoding the current situation of this Rank session.  This data
      will define the length of the following Listener field.  This
      document defines the following codes: 0 - 1-octet defined listener
      addresses for testing purposes 2 - 4-octet defined listener
      addresses for IPv4 representation.  3 - 6-octet defined listener
      addresses for MAC representation.  4 - 16-octet defined listener
      addresses for IPv6 representation.  5 - 16-octet defined listener
      addresses for DDS-GUID representation.

   Reserved field (R)  This 2-bits field is reserved for future use and
      MUST be all zeroes (0).

   Listener  This variable length field holds the address or identifier
      of the intended listener of the admission request being carried
      within this message.  The length of this field is determined by
      the coded value of the Listener Length field: this document
      defines four possible lengths to the identifier or address of a
      listener.

   Payload Length  This 2-octet unsigned integer represents the length
      of the Payload field following it.  This field may port a value of
      zero if there is no payload to be carried (this is an exceptional
      behavior of an EAR message, as reported below).

   Payload  This variable length field holds the list of requirements of
      the admission request being transmitted in this message.  The
      definition of the list of requirements is originally made in JSON
      following a format specified in Section 6.1, that is converted to
      CBOR.

A.2.3.  The MAR Packet

   MAR packets are Rank packet type 1.  These packets are sent to
   initiate a request on a node or start the processing of a new session
   at an intermediate node, when a requester has more than a single node
   to interact with, targeting a listener.

   Similarly to an EAR message, as soon as a node intends to send an
   admission request towards a listener, but instead targeting more than
   a single following node, the messages sent in the Rank session are
   MAR messages.

Lopes, et al.           Expires 31 December 2026               [Page 51]
Internet-Draft                Rank Protocol                    June 2026

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | V |   1   | R |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                                                               |
   +                Session Identifier (128 bits)                  +
   |                                                               |
   +                                                               +
   |                                                               |
   +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               | Pri | LiL | R |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Listener (0) |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Listener (2)                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Listener (3)                         |
   +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Listener (4 or 5)                        +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Payload length        |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
   |                       Payload (variable)                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Priority (Pri)  This 3-bits field holds the admission request
      priority value from 0 to 7, where 0 means the lowest priority
      level, and 7 identifies the maximum priority level.  The priority
      will be used in the self-assessment of each node in regards to
      their capability of performing the list of requirements that is
      also carried in this message.  Although coincidental, this field
      might not be exactly the same as a priority code point (PCP) from
      an IEEE 802.1Q virtual local area network (VLAN) header, but can
      be used as such.

   Listener Length (LiL)  This 3-bits field encodes the length of the
      intended listener whose identification is described in a next
      field.  Depending on the abstraction layer level where a Rank
      instance is being run on, the address length will change

Lopes, et al.           Expires 31 December 2026               [Page 52]
Internet-Draft                Rank Protocol                    June 2026

      accordingly.  To that matter, this field identifies this through
      encoding the current situation of this Rank session.  This data
      will define the length of the following Listener field.  This
      document defines the following codes: 0 - 1-octet defined listener
      addresses for testing purposes 2 - 4-octet defined listener
      addresses for IPv4 representation.  3 - 6-octet defined listener
      addresses for MAC representation.  4 - 16-octet defined listener
      addresses for IPv6 representation.  5 - 16-octet defined listener
      addresses for DDS-GUID representation.

   Reserved field (R)  This 2-bits field is reserved for future use and
      MUST be all zeroes (0).

   Listener  This variable length field holds the address or identifier
      of the intended listener of the admission request being carried
      within this message.  The length of this field is determined by
      the coded value of the Listener Length field: this document
      defines four possible lengths to the identifier or address of a
      listener.

   Payload Length  This 2-octet unsigned integer represents the length
      of the Payload field following it.  This field may port a value of
      zero if there is no payload to be carried (this is an exceptional
      behavior of an EAR message, as reported below).

   Payload  This variable length field holds the list of requirements of
      the admission request being transmitted in this message.  The
      definition of the list of requirements is originally made in JSON
      following a format specified in Section 6.1, that is converted to
      CBOR.

A.2.4.  The BID Packet

   When a node receives a MAR message it must self-assess its own
   capabilities of performing the list of requirements sent in the
   admission request and then answer back with a final suitability
   value, in a BID message.

   A suitability value is a single precision floating point value that
   ranges from zero to one, where 0 means no capability to perform the
   admission request, and any other value to 1 the capability of
   performing the intended in the admission request.  This suitability
   value estimation is detailed in Section 7 of this specification.

Lopes, et al.           Expires 31 December 2026               [Page 53]
Internet-Draft                Rank Protocol                    June 2026

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | V |   2   | R |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                                                               |
   +                Session Identifier (128 bits)                  +
   |                                                               |
   +                                                               +
   |                                                               |
   +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               |            Suitability Value (B)              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       B       |
   +-+-+-+-+-+-+-+-+

   Suitability Value  This 4-octet single precision floating point value
      carries an outcome of a self-assessment ranging in [0, 1], where 0
      means no capability of accepting an admission request, and other
      value how easily it accepts performing it.

   A BID message carrying a value of zero is also mentioned as being a
   null-bid.

A.2.5.  The ACC Packet

   In a Rank session, after the admission request reaches the intended
   listener, an answer must be retropropagated towards the talker, so to
   admit or reject the pre-reservations done along the discovered path
   until reaching the target of the request.  In case of approval, the
   listener node (as well as others if they are intermediate nodes) will
   dispatch an ACC message.

   This message does not have a body besides the common header in which
   the ACC code data is placed, since the only required information to
   pass is the Rank session identifier, which is part of the header of
   all messages.

Lopes, et al.           Expires 31 December 2026               [Page 54]
Internet-Draft                Rank Protocol                    June 2026

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | V |   3   | R |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                                                               |
   +                Session Identifier (128 bits)                  +
   |                                                               |
   +                                                               +
   |                                                               |
   +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               |
   +-+-+-+-+-+-+-+-+

A.2.6.  The REF Packet

   Contrary to the ACC message, in case an admission request reaches the
   intended listener and it is rejected (or before, if an incapable
   intermediate node is reached), a REF message is sent towards the next
   node towards the talker.

   This message does not have a body besides the common header where the
   single requirement for this message is carried, being the Rank
   session that is refused to proceed through this path.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | V |   4   | R |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                                                               |
   +                Session Identifier (128 bits)                  +
   |                                                               |
   +                                                               +
   |                                                               |
   +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               |
   +-+-+-+-+-+-+-+-+

A.2.7.  The REP Packet

   At the time of having a set of resources already allocated, meaning
   that a reservation has taken place, a trigger should be possible to
   set for the recovery of those resources, by deleting such
   reservation.  To trigger this action a REP message can be sent in any
   of the nodes of a Rank session, which will first initiate a cascading
   effect of REP messages towards the listener and, by reaching the
   listener, answer back with REF messages towards the talker of the

Lopes, et al.           Expires 31 December 2026               [Page 55]
Internet-Draft                Rank Protocol                    June 2026

   session.

   The REP message, again, only requires a Rank session identifier to
   proceed, thus this message does not contain any other fields rather
   than the current common header of a Rank message.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | V |   5   | R |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                                                               |
   +                Session Identifier (128 bits)                  +
   |                                                               |
   +                                                               +
   |                                                               |
   +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               |
   +-+-+-+-+-+-+-+-+

A.2.8.  The HBT Packet

   To allow reliability features to Rank protocol, the HBT messages are
   periodically sent from a Rank node to a next node in line of a Rank
   session towards the listener.  With a pre-determined periodicity
   between participants, the heartbeat message will be the trigger for
   REP/REF messages if a connection is dropped between a pair of nodes.

   If multiple sessions coexist between a same pair of Rank nodes, a
   single HBT message could aggregate the intentions so as to diminish
   the network overhead of the message transmission, in which case the
   Rank session in the header may be arbitrary within the set of
   sessions present in such a connection.

   Besides the common header, the HBT message does not carry a body.

Lopes, et al.           Expires 31 December 2026               [Page 56]
Internet-Draft                Rank Protocol                    June 2026

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | V |   6   | R |                                               |
   +-+-+-+-+-+-+-+-+                                               +
   |                                                               |
   +                Session Identifier (128 bits)                  +
   |                                                               |
   +                                                               +
   |                                                               |
   +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               |
   +-+-+-+-+-+-+-+-+

Contributors

   Pedro Veloso Teixeira
   Universidade de Aveiro
   Email: pedro.teix@ua.pt

Authors' Addresses

   Rui Eduardo Lopes (editor)
   Universidade de Aveiro and Instituto de Telecomunicações
   Aveiro
   Portugal
   Email: ruieduardo.fa.lopes@ua.pt

   Duarte Raposo
   Instituto de Telecomunicações
   Aveiro
   Portugal
   Email: dmgraposo@av.it.pt

   Susana Sargento
   Universidade de Aveiro and Instituto de Telecomunicações
   Aveiro
   Portugal
   Email: susana@ua.pt

Lopes, et al.           Expires 31 December 2026               [Page 57]