<?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-arash-ebrahimi-ump-protocol-00" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="UMP">Universal Modular Protocol (UMP)</title>
    <seriesInfo name="Internet-Draft" value="draft-arash-ebrahimi-ump-protocol-00"/>
    <author initials="" surname="Arash Ebrahimi" fullname="Arash Ebrahimi">
      <organization>none</organization>
      <address>
        <email>ebrahimi.arash@yahoo.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="23"/>
    <abstract>
      <?line 25?>

<t>The Universal Modular Protocol (UMP) proposes a modular approach to application-layer communication. Instead of implementing every protocol feature in a monolithic protocol or application, UMP allows communication behavior to be composed from modules that can be obtained from a peer or a repository. A protocol engine manages module execution, communication, signatures, and resource restrictions. Modules execute in a WebAssembly sandbox, while the Protocol Description Language (PDL) is intended to support module composition and analysis. UMP is designed to reduce the effort required to introduce new protocol features, reuse protocol components, and connect applications that otherwise require protocol-specific integration. This document describes the motivation, module model, protocol operation, PDL, repositories, and current implementation status of UMP.</t>
    </abstract>
  </front>
  <middle>
    <?line 29?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Universal Modular Protocol (UMP) is based on a modular approach to communication. Modules can be transferred between the two endpoints of a communication channel. If an endpoint does not have a required module, the endpoints can exchange the module package or use a repository address to obtain it.</t>
      <t>UMP is intended to support communication with the minimum number of modules installed at both endpoints. In its minimal configuration, no modules are required. UMP is intended to operate at multiple layers of the OSI model, from Layer 2 through Layer 7; this document describes its use at Layer 7. The approach is intended to let protocol functionality grow horizontally through composable modules.</t>
      <t>The Layer 7 design is based on UDP <xref target="RFC0768"/> and adds a UMP header to the UDP payload. The header is expected to contain fields such as a magic value and protocol version. With no modules configured, the design aims to keep the protocol engine's behavior minimal.</t>
    </section>
    <section anchor="problems-with-current-protocols">
      <name>Problems with Current Protocols</name>
      <section anchor="time-and-effort-required-to-adopt-new-ideas">
        <name>Time and Effort Required to Adopt New Ideas</name>
        <t>Adopting a new idea and completing the required specification work can take a long time, reducing contributions from individuals and companies. A person or organization may have a useful idea but decide not to publish it because of the effort required to implement and deploy it. A new security or privacy feature, for example, often has to be implemented as a new protocol or added to an existing one. Updating an established protocol may require coordination with the people or organizations responsible for it, particularly when it is widely deployed. As a result, a substantial amount of time can pass between proposing an idea and using it in real systems.</t>
        <t>A related problem occurs when a new security or privacy feature is itself implemented as a protocol. Integrating that feature with an existing protocol, such as AMQP, may require changes to the existing protocol or its implementations. A developer who did not design or develop the existing protocol may not be able to integrate the new feature without depending on changes outside their control.</t>
      </section>
      <section anchor="duplication-across-protocols">
        <name>Duplication Across Protocols</name>
        <t>Different communication protocols sometimes share components or concepts. When these components are duplicated, multiple specifications and implementations must be reviewed and maintained. Duplication can also increase code size and resource consumption, which is especially significant on constrained systems such as embedded IoT devices.</t>
      </section>
      <section anchor="the-cost-of-updating-legacy-software">
        <name>The Cost of Updating Legacy Software</name>
        <t>When legacy software uses a particular communication protocol, adopting a newer version or a different protocol may require updating the software. Such updates consume time and money. Developers maintaining software must also track protocol-version changes, which requires expertise and additional work that organizations may prefer to avoid.</t>
      </section>
      <section anchor="differences-between-protocol-implementations">
        <name>Differences Between Protocol Implementations</name>
        <t>There is no single organization that controls every implementation of a protocol in every real-world deployment. Different individuals and companies can implement the same protocol independently, and the resulting implementations may differ in behavior, security, or completeness.</t>
      </section>
      <section anchor="difficulty-connecting-independent-applications">
        <name>Difficulty Connecting Independent Applications</name>
        <t>Two independently developed applications generally cannot communicate directly unless they support a compatible protocol. Otherwise, an intermediary bridge may be required to translate between protocols supported by the applications. Such a bridge adds complexity and may require manual configuration by a network administrator.</t>
      </section>
      <section anchor="limitations-on-moving-processes-across-network-nodes">
        <name>Limitations on Moving Processes Across Network Nodes</name>
        <t>Processes cannot generally move to another network node to use available or more powerful computing resources without additional supporting software. A solution may require an agent to be installed and supported on every participating platform, and the relevant machines must be accessible within the network's policies.</t>
      </section>
      <section anchor="limited-opportunities-to-optimize-existing-protocols">
        <name>Limited Opportunities to Optimize Existing Protocols</name>
        <t>Improving the performance or security of an existing protocol usually requires working with its existing design and implementation complexity. Even when an optimization is intended only for a particular network or set of applications, implementing it may require specialist knowledge. Consequently, many deployments use generally available implementations tuned for broad use cases rather than for their own needs, and therefore are not working at their optimum performance.</t>
      </section>
      <section anchor="security-of-protocol-designs-and-implementations">
        <name>Security of Protocol Designs and Implementations</name>
        <t>Protocol implementations are not always secure, and implementations may require independent review. In addition, a protocol design can itself contain security weaknesses, regardless of the quality of a particular implementation.</t>
      </section>
    </section>
    <section anchor="goals-of-ump">
      <name>Goals of UMP</name>
      <section anchor="reducing-the-adoption-cycle">
        <name>Reducing the Adoption Cycle</name>
        <t>UMP aims to reduce the need to implement every new protocol feature as a separate, monolithic protocol. The intended result is a shorter path from an idea to implementation and deployment, encouraging wider participation in protocol development.</t>
      </section>
      <section anchor="sharing-protocol-components">
        <name>Sharing Protocol Components</name>
        <t>UMP allows protocol functionality to be divided into reusable modules. Reuse is intended to reduce duplicated specification document, implementation effort, development time, cost, and code size. A protocol engine may use cache-eviction policies to remove modules that are no longer needed when memory is limited.</t>
      </section>
      <section anchor="adapting-to-supported-modules">
        <name>Adapting to Supported Modules</name>
        <t>UMP aims to let endpoints use supported modules without requiring every application to be updated whenever a protocol changes. The intended benefit is that applications can gain supported functionality through the protocol engine, subject to module availability, compatibility, and local policy.</t>
      </section>
      <section anchor="a-small-and-verifiable-protocol-engine">
        <name>A Small and Verifiable Protocol Engine</name>
        <t>UMP places common execution and security responsibilities in a protocol engine. The engine is intended to be small enough to be able to be reviewed and verified itself.
Engine enforces common execution restrictions on modules.</t>
      </section>
      <section anchor="reducing-the-need-for-protocol-bridges">
        <name>Reducing the Need for Protocol Bridges</name>
        <t>By allowing endpoints to compose communication behavior from modules, UMP aims to remove the need for separate protocol-translation bridges. This may reduce complexity and latency where compatible modules are available at both endpoints.</t>
      </section>
      <section anchor="using-network-resources">
        <name>Using Network Resources</name>
        <t>UMP's sandboxed execution model is intended to support controlled use of processing resources available on participating network nodes. Any such use remains subject to endpoint policy and resource restrictions.</t>
      </section>
      <section anchor="composing-protocols-from-smaller-modules">
        <name>Composing Protocols from Smaller Modules</name>
        <t>Smaller modules are intended to make protocol functionality easier to inspect, reuse, and combine. UMP aims to let developers compose new behavior from existing modules rather than reimplementing complete protocols.</t>
      </section>
      <section anchor="using-pdl-to-support-security-analysis">
        <name>Using PDL to Support Security Analysis</name>
        <t>PDL is intended to let the compiler check module syntax and semantics and verify its security and apply specified restrictions to module behavior. The design goal is to make security properties easier to analyze.</t>
      </section>
    </section>
    <section anchor="modules">
      <name>Modules</name>
      <t>A module package contains metadata and code for the <tt>Process</tt> and <tt>Deprocess</tt> stages. These names are used because the two stages may be inverses of one another, but they do not necessarily have to be. They may transform data or manage protocol state, so the terms <tt>encoder</tt> and <tt>decoder</tt> would not cover all intended uses.</t>
      <t>The <tt>Process</tt> and <tt>Deprocess</tt> binaries are WebAssembly modules executed in a sandbox <xref target="WASM-CORE-2"/>. Module metadata includes a module identifier, module version, ABI version, protocol version, the <tt>Process</tt> and <tt>Deprocess</tt> code, a digital signature, permissions, and dependencies on other modules.</t>
      <t>A module may be composed from other modules and may share data or coordinate behavior with corresponding functionality at the other endpoint. Module execution and communication are mediated by the protocol engine.</t>
      <t>A module may also be described in PDL, which is intended to allow the engine to compile and analyze module behavior. PDL and its role in composition are described in Section 6.</t>
    </section>
    <section anchor="protocol-operation">
      <name>Protocol Operation</name>
      <t>UMP is designed for the application layer and uses UDP as its underlying transport. The design therefore does not require changes to the underlying network structure. This section describes the intended operation when UMP is carried in UDP datagrams.</t>
      <t>The design follows two principles: the owner of data determines the security applied to that data, and the owner of resources determines the resource quota. PDL is intended to express or enforce security-related requirements, while the protocol engine applies resource limits when executing modules.</t>
      <section anchor="sending-and-receiving-data">
        <name>Sending and Receiving Data</name>
        <t>The sender passes data through a module's <tt>Process</tt> stage. The first packet identifies the required module in its UMP header. When possible, the sender may include some or all of the data in that packet to reduce the number of packets exchanged.</t>
        <t>The receiver checks the module identifier. If the module is not already available, the receiver checks its cache and, if configured, a repository. If the module is still unavailable, the receiver requests the module package from the sender. After obtaining the package, the receiver verifies its signature. If the package has no signature but contains PDL, the receiver may attempt to compile and sign it according to the engine's configured trust policy. The receiver then passes the data through the module's <tt>Deprocess</tt> stage and provides the resulting data to the upper-layer application. If receiver fails to verify module may continue process or simply return an error to sender and stop.</t>
      </section>
      <section anchor="security-and-resource-ownership">
        <name>Security and Resource Ownership</name>
        <t>The sender, as the owner of the original data, chooses the module or modules used to apply the intended security protections. The sender may choose a module that does not provide security; UMP does not make the data secure merely by transporting it.</t>
        <t>The sender controls the resources used to execute <tt>Process</tt> on its own endpoint and may impose limits such as memory usage and execution time. The receiver similarly controls resources used to execute <tt>Deprocess</tt> on its endpoint and applies its own limits.</t>
      </section>
      <section anchor="bidirectional-communication">
        <name>Bidirectional Communication</name>
        <t>Data sent in the reverse direction is processed according to the module behavior selected by the endpoint sending that data. The endpoints exchange roles for that transmission. Because a receiver may not trust the security choices made by the peer, it may use its own module for outgoing data. In that case, the module identifier-and, if necessary, the module package-must be provided to the other endpoint.</t>
      </section>
      <section anchor="module-results-and-execution-cycles">
        <name>Module Results and Execution Cycles</name>
        <t>A module returns an array of buffers. The engine sends the buffers to the other endpoint. If the result's pending flag is set, the engine waits for a response, collects the response data, and calls the module again. This cycle continues until the pending flag is cleared or the execution-time limit is reached.</t>
        <t>The result also identifies whether the buffers are for negotiation or internal communication between peers, or represent the final payload. This distinction allows a module to exchange information with the peer before producing the final application data.</t>
      </section>
      <section anchor="module-composition">
        <name>Module Composition</name>
        <t>A complete protocol, such as TCP, could be implemented as a single module. However, one goal of UMP is to reduce duplicated code by composing protocols from smaller modules that can be reused across different protocols. A module may therefore act as a composer that invokes other modules or primitives. Module metadata contains a dependency list, which the engine uses to locate required module packages in its cache, a repository, or from the peer.</t>
        <t>An optional Composer component may accept a graph of modules and create a composite module package expressed in PDL, preserving the relationships represented in the graph. It may also accept an ordered list of modules and create a composite module that executes them as a pipeline.</t>
      </section>
      <section anchor="resource-restrictions-and-scheduling">
        <name>Resource Restrictions and Scheduling</name>
        <t>Modules have limited access to resources, such as execution time and persistent storage. They cannot perform I/O directly on peripherals. The engine is responsible for interacting with UDP and scheduling packet transmission to the other endpoint. In this respect, the engine is intended to provide some functions similar to those of a small operating system.</t>
      </section>
    </section>
    <section anchor="protocol-description-language-pdl">
      <name>Protocol Description Language (PDL)</name>
      <t>PDL is intended to let the engine analyze and compile modules that provide a PDL description. A module without PDL must have been verified by a trusted third party and assigned a digital signature. When PDL is present, the engine may compile and analyze the module and, under its trust policy, sign the resulting package for later verification. A peer or a repository client may then verify the signature without recompiling the module, provided it trusts the signing engine and its signing policy.</t>
      <t>Encryption primitives are intended to be part of the language and may be extended through language versions or digitally signed libraries supplied by trusted parties. A trusted party may also verify protocol engines and sign them to indicate that they implement the required rules for module verification, signing, and resource enforcement. This approach is intended to avoid requiring a trusted third party to review every module individually.</t>
      <t>The PDL compiler is responsible for syntax and semantic checks and for compiling PDL to WebAssembly. The intended semantic checks include ensuring that outgoing data has passed through the encryption primitives required by the language's policy. The language may also enforce other behavior related to timing, buffering, and similar concerns. These are design goals; their effectiveness depends on the language specification, compiler correctness, engine implementation, and the trust placed in those components.</t>
      <t>PDL may also provide mechanisms for allocating smaller memory regions within memory made available to a module. The design favors compilation over interpretation for performance. It also aims to avoid garbage collection by using explicit memory ownership and ownership transfer to reduce memory-management errors.</t>
    </section>
    <section anchor="repositories">
      <name>Repositories</name>
      <t>Any party may operate a repository that stores modules locally or on the web. Repository-management software is expected to support the storage and exchange of module packages. Repositories are not responsible for enforcing module security, because a repository is not assumed to be trusted. Endpoints must apply their own verification and execution policies to modules obtained from repositories.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>UMP introduces security considerations associated with downloading and executing code supplied by peers or repositories. A module package must be treated as untrusted until it has been validated according to the receiving endpoint's policy. A repository's availability of a package does not establish that the package is safe or trustworthy.</t>
      <t>The protocol engine is a critical security boundary. Its implementation must correctly validate module metadata and signatures, enforce permissions and dependencies, isolate module execution, limit resource consumption, and mediate network I/O. A defect in the engine, runtime, compiler, or sandbox could undermine these protections. Resource limits reduce some denial-of-service risks but do not eliminate all risks, including risks caused by excessive network traffic, repeated module transfers, or expensive validation.</t>
      <t>The design relies on a clear trust policy for signatures and for engines permitted to compile and sign PDL modules. An endpoint must not treat a signature as proof of safety unless it trusts the signing identity and the process used to produce the signed package. Key provisioning, revocation, signature algorithms, and the policy for trusting signed modules require further specification.</t>
      <t>The proposal intends PDL to support security analysis and to require specified encryption primitives for outgoing data. Such checks do not, by themselves, prove that a protocol is secure. Security depends on the precise language semantics, compiler implementation, cryptographic primitives, module composition, and endpoint configuration.</t>
      <t>Because modules may exchange data and coordinate with peer modules, implementations also need well-defined rules for data ownership, information sharing, module identity, dependency resolution, and the handling of malformed or unexpected results. The details of these mechanisms remain areas for specification and implementation work.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions at this time. Any UMP identifiers, header fields, or registries that may require allocation will be specified in a future revision if needed.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>UMP is under development. The design and implementation are not yet complete.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC0768" target="https://www.rfc-editor.org/info/rfc768" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0768.xml">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC768"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="WASM-CORE-2" target="https://www.w3.org/TR/wasm-core-2/">
          <front>
            <title>WebAssembly Core Specification, Version 2.0</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date year="2024" month="December" day="05"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 192?>

<section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document is an early proposal and does not yet identify additional contributors.</t>
    </section>
    <section anchor="authors-address">
      <name>Author's Address</name>
      <t>Arash Ebrahimi</t>
      <t>Email: <eref target="mailto:ebrahimi.arash@yahoo.com">ebrahimi.arash@yahoo.com</eref></t>
    </section>
  </back>
  <!-- ##markdown-source:
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
z+es7vlv5/wn/jeGu6f+hs5/rf4JBqC5Zk5IAAA=

-->

</rfc>
