<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-carpenter-anima-distro-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title>Distribution and Subscription using GRASP</title>
    <seriesInfo name="Internet-Draft" value="draft-carpenter-anima-distro-00"/>
    <author initials="B. E." surname="Carpenter" fullname="Brian E. Carpenter">
      <organization abbrev="Univ. of Auckland">The University of Auckland</organization>
      <address>
        <postal>
          <postalLine>School of Computer Science</postalLine>
          <postalLine>The University of Auckland</postalLine>
          <postalLine>PB 92019</postalLine>
          <postalLine>Auckland 1142</postalLine>
          <postalLine>New Zealand</postalLine>
        </postal>
        <email>brian.e.carpenter@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="12"/>
    <area>Operations and Management</area>
    <workgroup>Autonomic Networking Integrated Model and Approach</workgroup>
    <keyword>MQTT</keyword>
    <keyword>GRASP</keyword>
    <keyword>MASA</keyword>
    <abstract>
      <?line 66?>

<t>This document describes an approach to information distribution and
subscription using GRASP. Rather than extending the GRASP protocol
itself, it uses existing GRASP mechanisms to build a distribution and subscription
mechanism on top.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-carpenter-anima-distro/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Autonomic Networking Integrated Model and Approach Working Group mailing list (<eref target="mailto:anima@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/anima/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/anima/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 73?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The autonomic networking infrastructure described in <xref target="RFC8993"/> provides a secure
autonomic control plane (ACP) <xref target="RFC8994"/> which allows Autonomic Service Agents (ASAs) to communicate
securely  with minimal infrastructure dependency.
A basic set of one-to-one and one-to-many communication mechanisms
is provided by the GRASP protocol <xref target="RFC8990"/>. However, some aspects of
network management, for example distribution of management intent or agent capabilities,
are better suited to a publish/subscribe model, where individual ASAs can subscribe
selectively to particular sets of information. One method for achieving this would be
a major extension to GRASP, as proposed by <xref target="I-D.ietf-anima-grasp-distribution"/>.
This document describes an alternative approach that is entirely constructed on top
of existing GRASP mechanisms, with an additional mechanism built on the
existing GRASP relay mechanism.</t>
      <t>GRASP provides a basic distribution mechanism known as flooding, which allows any ASA
to flood a specific GRASP Objective to the entire autonomic network. This mechanism depends
on link-local broadcasts that will cause activity in every GRASP node on the network, so
it should be used sparingly and only for information of very wide interest.</t>
      <t>One feature of GRASP is that because it uses link-local broadcast for both
flooding and discovery, each router must contain a GRASP instance that acts as
a relay for M_FLOOD and M_DISCOVERY messages (see Section 2.5.6.2 of <xref target="RFC8990"/>). This document
describes how this relay instance may be extended to support a special ASA whose function is to
intercept M_FLOOD messages that carry certain GRASP objectives known
as Subscribable Objectives. Instead of being relayed by link-local multicast,
they will be unicasted only to other GRASP ASAs that have subscribed to them.</t>
      <t>Nodes subscribe to a given Subscribable Objective by use of a specific GRASP objective
"SubscribeTopic" which is described below. However, the details of this can be hidden
from users by a pair of API functions, <tt>subscribe_topic()</tt> and <tt>unsubscribe_topic()</tt>.
To obtain the current value of a Subscribable Objective, the user will use the
existing APA function <tt>get_flood()</tt> <xref target="RFC8991"/>.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="subscobj">
      <name>Subscribable Objectives</name>
      <t>The names of subscribable objectives follow the general rules for GRASP objective names (Section 2.10.1 of <xref target="RFC8990"/>).</t>
      <t>Additionally, if they are registered with IANA they <strong><bcp14>MUST</bcp14></strong> start with the UTF-8 string "Sub/" followed 
by a UTF-8 field known as the topic, followed by "/" and then an opaque UTF-8 string that completes the objective name. An example is <tt>Sub/Intent/VoIPQoS</tt>.</t>
      <t>A privately defined subscribable objective <strong><bcp14>MUST</bcp14></strong> use this same format following the last colon in the name, e.g., <tt>example.org:Sub/Intent/VoIPQoS</tt>.</t>
      <t>These two examples define a topic <tt>Intent</tt> and a specific objective <tt>VoIPQoS</tt> within that topic.</t>
      <t>A wild-card subscribable objective is allowed, e.g. <tt>Sub/Intent/</tt> or <tt>example.org:Sub/Intent/</tt>, which matches all objectives within the indicated topic.</t>
    </section>
    <section anchor="subscribe-topic-objective-option">
      <name>Subscribe Topic Objective Option</name>
      <t>The Subscribe Topic Objective option is a GRASP Objective option conforming to the GRASP specification <xref target="RFC8990"/>. Its name is "SubscribeTopic", and it carries the requested subscribable objective name as part of its its value. Since GRASP is based on CBOR (Concise Binary Object Representation) <xref target="RFC8949"/>, the format of the PrefixManager Objective option is described in the Concise Data Definition Language (CDDL) <xref target="RFC8610"/> as follows:</t>
      <artwork><![CDATA[
  objective = ["SubscribeTopic", objective-flags, loop-count,
               [active, topic, port]]

  loop-count = 0..255         ; as in the GRASP specification
  objective-flags /=          ; as in the GRASP specification
  active =  bool              ; true to start subscription, false to cancel subscription
  topic = text                ; a subscribable objective name as defined above
  port = 49152..65535         ; UDP port to receive unicast GRASP messages
]]></artwork>
      <t>This will be used in a single-step GRASP negotiation between an ASA wishing to subscribe to the given subscribable objective. The "dry run" mode of GRASP <strong><bcp14>MUST NOT</bcp14></strong> be used for this objective.</t>
      <t>An example objective follows:</t>
      <artwork><![CDATA[
["SubscribeTopic", 2, 3, [true, "example.org:Sub/Intent/VoIPQoS", 65534]]
]]></artwork>
    </section>
    <section anchor="asa-implementation-requirements">
      <name>ASA Implementation Requirements</name>
      <t>Any ASA that needs to subscribe to a specific subscribable objective or to all objectives in a given topic will proceed as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>Request GRASP to create a UDP listening port for receiving subscribed objectives.</t>
        </li>
        <li>
          <t>Create a GRASP objective <tt>SubscribeTopic</tt> whose value is <tt>[true, topic, port]</tt></t>
        </li>
        <li>
          <t>Use GRASP discovery to find a remote ASA supporting that objective.</t>
        </li>
        <li>
          <t>Act as a GRASP negotiation initiator by sending a GRASP M_REQ_NEG message with the same "SubscribeTopic" objective.</t>
        </li>
        <li>
          <t>Wait for a corresponding GRASP M_END message to indicate success or failure.</t>
        </li>
      </ol>
      <t>These steps may be taken by an API function <tt>subscribe_objective(asa_handle, topic, timeout)</tt>, following the API model described in <xref target="RFC8991"/>.</t>
      <t>The <tt>timeout</tt> parameter is the lifetime of the subscription in milliseconds. The client ASA must repeat <tt>subscribe_objective()</tt> before the lifetime expires. This is necessary to allow garbage collection of unused subscriptions.</t>
      <t>An <tt>unsubscribe_objective(asa_handle, topic)</tt> function is also provided.</t>
      <t>After this process, the ASA in question will receive future versions of the requested subscribable objective(s), delivered by unicast UDP. They will be processed on receipt exactly as if they had arrived by link-local multicast, using the API call <tt>get_flood(asa_handle, objective)</tt>.</t>
      <t>The Subscribe ASA on each relay node, and associated code in the GRASP kernel, will proceed as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>Register the GRASP objective "SubscribeTopic" and respond to discovery and negotiation requests for it.</t>
        </li>
        <li>
          <t>Act as a GRASP negotiation responder for this objective, and upon receipt of a subscription request, make a suitable record of that request. Upon receipt of a subscription cancellation, remove the record.</t>
        </li>
        <li>
          <t>Intercept each incoming GRASP M_FLOOD message and if it contains a subscribable objective, suppress the normal relay action and forward the flood as a link-local unicast to each subscriber (if any). This interception is the only change to basic GRASP operations as described in <xref target="RFC8990"/>.</t>
        </li>
      </ol>
      <t>Note that on the network segment where a flooded subscribable objective originates, it will be multicasted as normal. However, the multicast will not be propagated on other network segments.</t>
      <t>An ASA that originates a subscribable objective will send it out using the <tt>flood()</tt> function <xref target="RFC8991"/> as normal.</t>
    </section>
    <section anchor="implementation-status-rfc-editor-please-remove">
      <name>Implementation Status [RFC Editor: please remove]</name>
      <t>A preliminary Python implementation, which certainly has loopholes, can be found at
<eref target="https://github.com/becarpenter/graspy/tree/master/distro"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The mechanism described in this document takes place entirely within the ACP <xref target="RFC8994"/>. It is therefore secured by the ACP, as discussed in Section 3 of <xref target="RFC8990"/>. All ASAs are considered mutually trustworthy within the ACP.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document defines one new GRASP Objective option name: "SubscribeTopic". The IANA is requested to add this to the "GRASP Objective Names" registry defined by <xref target="RFC8990"/>.</t>
      <t>Subscribable objectives and wildcard subscribable objectives, as defined in <xref target="subscobj"/>, may be registered with IANA according to the procedure defined in <xref target="RFC8990"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8990" target="https://www.rfc-editor.org/info/rfc8990" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8990.xml">
          <front>
            <title>GeneRic Autonomic Signaling Protocol (GRASP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter"/>
            <author fullname="B. Liu" initials="B." role="editor" surname="Liu"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies the GeneRic Autonomic Signaling Protocol (GRASP), which enables autonomic nodes and Autonomic Service Agents to dynamically discover peers, to synchronize state with each other, and to negotiate parameter settings with each other. GRASP depends on an external security environment that is described elsewhere. The technical objectives and parameters for specific application scenarios are to be described in separate documents. Appendices briefly discuss requirements for the protocol and existing protocols with comparable features.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8990"/>
          <seriesInfo name="DOI" value="10.17487/RFC8990"/>
        </reference>
        <reference anchor="RFC8994" target="https://www.rfc-editor.org/info/rfc8994" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8994.xml">
          <front>
            <title>An Autonomic Control Plane (ACP)</title>
            <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." role="editor" surname="Behringer"/>
            <author fullname="S. Bjarnason" initials="S." surname="Bjarnason"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>Autonomic functions need a control plane to communicate, which depends on some addressing and routing. This Autonomic Control Plane should ideally be self-managing and be as independent as possible of configuration. This document defines such a plane and calls it the "Autonomic Control Plane", with the primary use as a control plane for autonomic functions. It also serves as a "virtual out-of-band channel" for Operations, Administration, and Management (OAM) communications over a network that provides automatically configured, hop-by-hop authenticated and encrypted communications via automatically configured IPv6 even when the network is not configured or is misconfigured.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8994"/>
          <seriesInfo name="DOI" value="10.17487/RFC8994"/>
        </reference>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8991" target="https://www.rfc-editor.org/info/rfc8991" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8991.xml">
          <front>
            <title>GeneRic Autonomic Signaling Protocol Application Program Interface (GRASP API)</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="B. Liu" initials="B." role="editor" surname="Liu"/>
            <author fullname="W. Wang" initials="W." surname="Wang"/>
            <author fullname="X. Gong" initials="X." surname="Gong"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document is a conceptual outline of an Application Programming Interface (API) for the GeneRic Autonomic Signaling Protocol (GRASP). Such an API is needed for Autonomic Service Agents (ASAs) calling the GRASP protocol module to exchange Autonomic Network messages with other ASAs. Since GRASP is designed to support asynchronous operations, the API will need to be adapted according to the support for asynchronicity in various programming languages and operating systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8991"/>
          <seriesInfo name="DOI" value="10.17487/RFC8991"/>
        </reference>
        <reference anchor="RFC8993" target="https://www.rfc-editor.org/info/rfc8993" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8993.xml">
          <front>
            <title>A Reference Model for Autonomic Networking</title>
            <author fullname="M. Behringer" initials="M." role="editor" surname="Behringer"/>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="L. Ciavaglia" initials="L." surname="Ciavaglia"/>
            <author fullname="J. Nobre" initials="J." surname="Nobre"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes a reference model for Autonomic Networking for managed networks. It defines the behavior of an autonomic node, how the various elements in an autonomic context work together, and how autonomic services can use the infrastructure.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8993"/>
          <seriesInfo name="DOI" value="10.17487/RFC8993"/>
        </reference>
        <reference anchor="I-D.ietf-anima-grasp-distribution" target="https://datatracker.ietf.org/doc/html/draft-ietf-anima-grasp-distribution-12" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-anima-grasp-distribution.xml">
          <front>
            <title>Information Distribution over GRASP</title>
            <author fullname="Sheng Jiang" initials="S." surname="Jiang">
              <organization>Beijing University of Posts and
      Telecommunications</organization>
            </author>
            <author fullname="Bing Liu" initials="B." surname="Liu">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Xun Xiao" initials="X." surname="Xiao">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Artur Hecker" initials="A." surname="Hecker">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Xiuli Zheng" initials="X." surname="Zheng">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="11" month="December" year="2024"/>
            <abstract>
              <t>This document specifies experimental extensions to the GRASP protocol to enable information distribution capabilities. The extension has two aspects: 1) new GRASP messages and options; 2) processing behaviors on the nodes. With these extensions, the GRASP would have following new capabilities which make it a sufficient tool for general information distribution: 1) Pub-Sub model of information processing; 2) one node can actively sending data to another, without GRASP negotiation procedures; 3) selective flooding mechanism to allow the ASAs control the flooding scope. This document updates RFC8990, the GeneRic Autonomic Signaling Protocol (GRASP)[RFC8990].</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-grasp-distribution-12"/>
        </reference>
        <reference anchor="OasisMQTT" target="https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.htm">
          <front>
            <title>MQTT Version 5.0</title>
            <author initials="" surname="Andrew Banks (Ed )">
              <organization/>
            </author>
            <author initials="" surname="Ed Briggs (Ed )">
              <organization/>
            </author>
            <author initials="" surname="Ken Borgendale (Ed )">
              <organization/>
            </author>
            <author initials="" surname="Rahul Gupta (Ed )">
              <organization/>
            </author>
            <author>
              <organization>OASIS</organization>
            </author>
            <date year="2019" month="March"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 216?>

<section anchor="change-log-rfc-editor-please-remove">
      <name>Change Log [RFC Editor: please remove]</name>
      <section anchor="draft-00">
        <name>Draft-00</name>
        <ul spacing="normal">
          <li>
            <t>Original version</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Some ideas have been borrowed from the MQTT pub/sub protocol <xref target="OasisMQTT"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
