<?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.29 (Ruby 3.4.4) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cel-nfsv4-rpc-over-quicv1-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="RPC over QUIC">Remote Procedure Call over QUIC Version 1</title>
    <seriesInfo name="Internet-Draft" value="draft-cel-nfsv4-rpc-over-quicv1-03"/>
    <author initials="B." surname="Coddington" fullname="Benjamin Coddington">
      <organization>Red Hat</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>bcodding@redhat.com</email>
      </address>
    </author>
    <author initials="S." surname="Mayhew" fullname="Scott Mayhew">
      <organization>Red Hat</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>smayhew@redhat.com</email>
      </address>
    </author>
    <author initials="C." surname="Lever" fullname="Charles Lever" role="editor">
      <organization abbrev="Oracle">Oracle Corporation</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>chuck.lever@oracle.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="02"/>
    <area>Transport</area>
    <workgroup>Network File System Version 4</workgroup>
    <abstract>
      <?line 58?>

<t>This document specifies a protocol for conveying Remote Procedure
(RPC) messages via QUIC version 1 connections. It requires no revision
to application RPC protocols or the RPC protocol itself.</t>
    </abstract>
    <note>
      <name>Note</name>
      <?line 64?>

<t>This note is to be removed before publishing as an RFC.</t>
      <t>Discussion of this draft occurs on the <eref target="nfsv4@ietf.org">NFSv4 working group mailing
list</eref>, archived at
<eref target="https://mailarchive.ietf.org/arch/browse/nfsv4/"/>. Working Group
information is available at
<eref target="https://datatracker.ietf.org/wg/nfsv4/about/"/>.</t>
      <t>Submit suggestions and changes as pull requests at
<eref target="https://github.com/chucklever/i-d-rpc-over-quicv1"/>. Instructions
are on that page.</t>
    </note>
  </front>
  <middle>
    <?line 78?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The QUIC version 1 protocol is a secure, reliable connection-oriented
network transport described in <xref target="RFC9000"/>. Its features include
integrated transport layer security, multiple independent streams over
each connection, fast reconnecting, and advanced packet loss recovery
and congestion avoidance mechanisms.</t>
      <t>Open Network Computing Remote Procedure Call (often shortened to "RPC")
is a Remote Procedure Call protocol that runs over a variety of network
transports <xref target="RFC5531"/>. RPC implementations so far use UDP <xref target="RFC0768"/>,
TCP <xref target="RFC0793"/>, or RDMA <xref target="RFC8166"/>. This document specifies how to
transport RPC messages over QUIC version 1.</t>
      <section anchor="motivation-for-a-new-rpc-transport">
        <name>Motivation For a New RPC Transport</name>
        <t>Viewed at a moderate distance, RPC over QUIC provides a similar
feature set as RPC over TCP with TLS (as described in <xref target="RFC9289"/>).
However, a closer look reveals some essential benefits of using
QUIC transports:</t>
        <ul spacing="normal">
          <li>
            <t>Even though the QUIC protocol utilizes the same set of encryption
algorithms as TLSv1.3, the QUIC record protocol encrypts nearly
the entire transport layer header and authenticates each IP packet.
Advanced traffic analysis which was possible with TLS on TCP is no
longer possible. QUIC protects against transport packet spoofing
and downgrade attacks better than TLS on TCP.</t>
          </li>
          <li>
            <t>Because many real IP networks are oversubscribed, packet loss
due to momentary link or switch saturation continues to be likely
even on well-maintained data center-quality network fabrics.  </t>
            <t>
The QUIC protocol utilizes packet loss recovery and congestion
avoidance features that are lacking in TCP. Because TCP protocol
design has ossified, it is unlikely to gain these improvements.
QUIC is more extensible than TCP, meaning future improvements in
this area can be designed and deployed without application
disruption.</t>
          </li>
          <li>
            <t>Further, because QUIC handles packet loss on a per-stream rather
than a per-connection basis, spreading RPC traffic across multiple
streams enables workloads to continue largely unperturbed while
packet recovery proceeds.</t>
          </li>
          <li>
            <t>The QUIC protocol is designed to facilitate secure and automatic
transit of firewalls. Firewall transparency is a foundational
feature of NFSv4 (which is built on RPC).</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</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="rpc-over-quic-framework">
      <name>RPC-over-QUIC Framework</name>
      <t>RPC is first and foremost a message-passing protocol. This section
covers the implementaion details of exchanging RPC messages over
QUIC. Readers should already be familiar with the fundamentals
of ONC RPC <xref target="RFC5531"/>.</t>
      <t>RPC-over-QUIC relies on QUIC version 1 as the underlying transport
<xref target="RFC9000"/>. The use of other QUIC transport versions with RPC <bcp14>MAY</bcp14>
be defined by future specifications.</t>
      <section anchor="establishing-a-connection">
        <name>Establishing a Connection</name>
        <t>When a network host wishes to send RPC requests to a remote
service via QUICv1, it must first find an established QUICv1
connection, or establish a new one.</t>
        <t>For the purpose of explanation, this document refers to the
peer that initiates QUICv1 connection establishment as an
"RPC client" peer. This document refers to the peer that
passively accepts an incoming connection request as an
"RPC server" peer.</t>
        <t>QUICv1 connections are not completely defined by the classic
5-tuple (IP proto, source address, source port, destination
address, and destination port). Each connection is also defined
by its QUIC connection ID. For instance, if the IP address of
either peer should change, or a NAT/PAT binding and the source
UDP port changes, the receiver can still recognize an ingress
QUICv1 packet as belonging to an established connection.</t>
        <t>As a result, due to network conditions or administrative actions,
an RPC-over-QUIC connection can be replaced (a reconnect event)
or migrated (a failover event) without interrupting the operation
of an upper layer protocol such as RPC-over-QUIC. A more complete
discussion can be found in <xref section="9" sectionFormat="of" target="RFC9000"/>.</t>
        <section anchor="connection-transport-parameters">
          <name>Connection Transport Parameters</name>
          <t>When establishing a connection, peers exchange transport
parameters, as described in <xref section="7.4" sectionFormat="of" target="RFC9000"/>.</t>
          <section anchor="initial-flow-control-limits">
            <name>Initial Flow Control Limits</name>
            <t>These limits control the amount of data that each peer may send
on a newly-created stream. The limits are used for flow control
and cap the amount of memory needed by both peers to keep data
flowing on the connection. The value of these limits are typically
based on the bandwidth-delay of the physical link between the
peers, and are not exposed to RPC applications.</t>
          </section>
          <section anchor="number-of-streams-per-connection">
            <name>Number of Streams Per Connection</name>
            <t>Each QUICv1 peer may limit the number of streams per
connection; see <xref section="4.6" sectionFormat="of" target="RFC9000"/>.</t>
            <t>Given the definition of RPC message framing in <xref target="sec-framing"/>,
it is possible for an RPC client to create a stream, send one
RPC Call, receive one RPC Reply, then destroy the stream. That
usage might be common with simple RPC-based protocols like
rpcbind.</t>
            <t>For protocols that carry a more intensive workload, this style of
stream allocation generates needless overhead. Moreover, stream
identifiers cannot be re-used on a single QUICv1 connection,
so eventually a QUICv1 connection can no longer create a new
stream for each RPC XID. Finally, a connection peer may
advertise a max_streams value that is significantly lower than
2 ^ 60.</t>
            <t>Instead, RPC clients may create enough streams to maximize
workload parallism, and should avoid sending only a few RPCs on
each stream before creating a new one.</t>
            <t>For example, an RPC client could allocate a handful of streams
per CPU core to reduce contention for the streams and their
associated data structures. Or, an RPC client could create a
set of streams whose count is the same as the number of slots
in an NFSv4.1 session.</t>
            <t>Even so, to provide a framework that makes implementing
RPC-over-QUIC as fast and simple as possible, this specification
needs to focus on enabling the use of as few as a single stream
per connection.</t>
            <t>Servers that implement RPC-over-QUIC must be mindful that each
additional stream amounts to incremental overhead. RPC servers
<bcp14>MAY</bcp14> deny the creation of new streams if an RPC client already
has many active streams. RPC clients need to be prepared for
that behavior.</t>
          </section>
          <section anchor="maximum-frame-size">
            <name>Maximum Frame Size</name>
            <t>This size is the largest QUIC frame that can appear in any
stream on this connection. The QUIC framing protocol is not
visible to the RPC application. The RPC client and server
can therefore negotiate a frame size that enables efficient
transit of RPC traffic with minimal internal memory
fragmentation.</t>
          </section>
        </section>
      </section>
      <section anchor="rpc-service-discovery">
        <name>RPC Service Discovery</name>
        <t>For RPC, the destination port is special. RPC services may use
a standardized destination port that is bound to an RPC program
number. Such ports are assigned in the IANA Service Name and
Transport Protocol Port Number registry <xref target="IANA"/>.</t>
        <t>For example, the rpcbind program, which is RPC program 100000,
listens on port 111. This is done so that RPC clients can always
contact the rpcbind service and discover the other RPC services
that are operating on that network peer.</t>
        <t>In other cases, an RPC service might use any available port. The
RPC server registers its port number with the local rpcbind service
so that RPC clients can contact that service.</t>
        <t>This mechanism is no different for RPC-over-QUIC than it is for
RPC on other network transports. rpcbind clients specify an RPC
program number and either the "quic" or "quic6" netid when
requesting information about a QUIC-based RPC service. More detail
is available in <xref target="sec-netids"/>.</t>
        <section anchor="transport-layer-security">
          <name>Transport Layer Security</name>
          <t>During connection establishment, the client peer indicates
RPC-over-QUIC support by presenting the ALPN token "sunrpc" in
the TLS handshake. Support for other application-layer protocols
<bcp14>MAY</bcp14> be offered in the same handshake.</t>
          <t>As part of establishing a QUICv1 connection, the two connecting
peers authenticate to each other and choose encryption parameters
to establish a confidential channel of communication. All traffic
on one QUICv1 connection is thus bound to the authenticated
identities that were presented during connection establishment.
These peer identities apply to the streams and RPC messages
carried by that connection.</t>
          <t>RPC-over-QUIC provides peer authentication and encryption services
using a framework based on Transport Layer Security (TLS). Ergo,
RPC-over-QUIC inherently fulfills many of the requirements of
<xref target="RFC9289"/>. The details of QUIC's use of TLS are specified in
<xref target="RFC9001"/>. In particular:</t>
          <ul spacing="normal">
            <li>
              <t>With QUICv1, security at the transport layer is always enabled.
Therefore, the discussion in <xref target="RFC9289"/> about the opportunistic
use of TLS does not apply to RPC-over-QUIC, and the STARTTLS
mechanism described in <xref section="4" sectionFormat="of" target="RFC9289"/> <bcp14>MUST NOT</bcp14> be used
on RPC-over-QUIC connections.</t>
            </li>
            <li>
              <t>The peer authentication requirements in <xref section="5.2" sectionFormat="of" target="RFC9289"/> apply to RPC-over-QUIC.</t>
            </li>
            <li>
              <t>The PKIX Extended Key Usage values defined in <xref target="RFC9289"/> are
valid for use with RPC-over-QUIC.</t>
            </li>
            <li>
              <t>The ALPN defined in <xref section="8.2" sectionFormat="of" target="RFC9289"/> is also used
for RPC-over-QUIC.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="sec-streams">
        <name>QUIC Streams</name>
        <t>RPC-over-QUIC connections are mediated entirely by each peer's
RPC layer and, aside from authentication and connection transport
parameters, are not otherwise visible to RPC applications. An RPC
client establishes an RPC-over-QUIC connection whenever there are
application RPC transactions to be executed.</t>
        <t>QUICv1 provides a "stream" abstraction, described in <xref section="2" sectionFormat="of" target="RFC9000"/>. A QUICv1 connection carries one or more streams. Once a
QUICv1 connection has been established, either connection peer may
create a stream. Typically, the RPC client peer creates the first
stream on a connection.</t>
        <t>Unless explicitly specified, when RPC upper layer protocol
specifications refer to a "connection", for RPC-over-QUIC, this
is a QUIC stream. As an example, an NFSv4.1 BIND_CONN_TO_SESSION
operation <xref target="RFC8881"/> binds to a QUICv1 stream. As another example,
to signify the loss of an RPC request, an NFS server closes the
QUICv1 stream that received that request, but it does close not the
encompassing QUICv1 connection.</t>
        <t>In terms of TI-RPC semantic labels, a QUICv1 stream behaves as a
"tpi_cots_ord" transport: connection-oriented and in order.</t>
        <aside>
          <t>cel: There is an opportunity here to add a stream that acts
  as a control plane.</t>
          <t>cel: Should we limit each stream to carry only one RPC program and
  version combination? Doing so would delegate demultiplexing of
  ingress RPC traffic to QUIC -- eg, NFSACL and NFS would be required
  to flow over separate streams.</t>
        </aside>
      </section>
      <section anchor="sec-framing">
        <name>RPC Message Framing</name>
        <t>RPC-over-QUIC uses only bidirectional streams.</t>
        <t>When a connection peer creates a QUICv1 stream, that peer's stream
endpoint is referred to as a "Requester", and <bcp14>MUST</bcp14> emit only RPC
Call messages on that stream.
The other endpoint is referred to as a "Responder", and <bcp14>MUST</bcp14> emit
only RPC Reply messages on that stream.
Receivers <bcp14>MUST</bcp14> silently discard RPC messages whose direction field
does not match its Requester/Responder role.</t>
        <t>Requesters and Responders match RPC Calls to RPC Replies using
the XID carried in each RPC message. Responders <bcp14>MUST</bcp14> send RPC
Replies on the same stream on which they received the matching
RPC Call.</t>
        <t>Each QUICv1 stream provides reliable in-order delivery of bytes.
However, each stream makes no guarantees about delivery order with
regard to bytes on other streams on the same connection.</t>
        <t>The stream data containing RPC records is carried by QUIC STREAM
frames, but this framing is invisible to the RPC layer. The
transport layer buffers and orders received stream data, exposing
only a reliable byte stream to the RPC layer. Although QUIC permits
out-of-order delivery within a stream, RPC-over-QUIC does not make
use of this feature.</t>
        <t>Because each QUICv1 stream is an ordered-byte stream, an
RPC-with-QUIC stream carries only a sequence of complete RPC
messages. Although data from multiple streams can be interleaved
on a single QUICv1 connection, RPC messages <bcp14>MUST NOT</bcp14> be interleaved
on one stream.</t>
        <t>Just as with RPC on a TCP socket, each RPC message is an ordered
sequence of one or more records on a single stream. Such RPC records
bear no relationship to QUIC stream frames; in fact, stream frames
as defined in <xref target="RFC9000"/> are not visible to RPC endpoints.</t>
        <t>Each RPC record begins with a four-octet record marker. A record
marker contains the count of octets in the record in its lower 31
bits, and a flag that indicates whether the record is the last
record in the RPC message in the highest order bit. See
<xref section="11" sectionFormat="of" target="RFC5531"/> for a comparison with TCP record markers.</t>
        <aside>
          <t>NFS requirement on resends: QUIC allows reconnecting using the same
 connection ID, so isn't breaking/reconnection somewhat ambiguous?
 When can a server drop or a client resend? Any advice needed for
 server-side DRC implementations?</t>
          <t>lars: I'm not sure I understand what is meant by "reconnecting"
  above. Is this referring to connection migration? Or a 0-RTT
  repeated connection instance? Something else?</t>
          <t>lars: Also, I'm not sure if the use of streams is fully specified by
  the above. Is the intent here to leave it to callers to decide if
  they want to use a fresh stream for each RPC, or reuse an existing
  stream for a series of RPCs?</t>
          <t>cel: We need to define a server backpressure mechanism akin to the
  TCP window.</t>
        </aside>
        <section anchor="receiver-data-placement-assistance">
          <name>Receiver Data Placement Assistance</name>
          <t>One recurring weakness with RPC on TCP is that large payloads (for
instance, in NFS WRITEs) can land at arbitrary offsets in receive
buffers, limiting the ability for receivers to handle the payloads
with zero-touch tactics such as direct I/O.</t>
          <t>It remains an open question whether RPC-over-QUIC should implement
RDMA-like features or features that simply provide help with data
placement on receivers. Possibilities include:</t>
          <ul spacing="normal">
            <li>
              <t>A single additional integer giving the offset of a payload, serving
only as a hint;</t>
            </li>
            <li>
              <t>Include references to separate streams in the same connection that
contain opaque payloads, similar to RDMA chunks; this would presume
that it is valid for some streams on a QUIC connection to carry
traffic that is not in the form of an RPC message sequence.</t>
            </li>
          </ul>
          <t>Long-term there could be interest in supporting RDMA over QUIC. Direct
data placement over TCP can already be accomplished today using MPA/DDP
protocols (formerly known as iWARP; see <xref target="RFC5040"/>). Using a software
iWARP implementation means no special hardware is required.</t>
          <t>If the MPA/DDP protocols themselves can be made to operate directly on
QUIC transports, much of the need for a separate RPC-over-QUIC becomes
moot. It would bring transport layer security to other RDMA-enabled
protocols, such as RPC-over-RDMA <xref target="RFC8166"/>.</t>
        </section>
      </section>
      <section anchor="quic-load-balancing">
        <name>QUIC Load Balancing</name>
        <t>Large-scale RPC deployments often distribute incoming connections
across multiple backend servers using load balancers. The QUIC Load
Balancing specification <xref target="I-D.ietf-quic-load-balancers"/> defines
standardized methods for encoding routing information in QUIC
connection IDs, enabling stateless or low-state load balancing even
when clients migrate to new network addresses. QUIC-LB provides
several advantages for RPC server pools:</t>
        <ul spacing="normal">
          <li>
            <t>Load balancers can route all packets for a given RPC-over-QUIC
connection to the same backend server by extracting the server
ID from the connection ID, even as the client’s network address
changes due to NAT rebinding or deliberate migration.</t>
          </li>
          <li>
            <t>Because routing decisions are encoded directly in connection IDs,
load balancers can operate with minimal or no per-connection
state, improving scalability and resilience to load balancer
failures or restarts.</t>
          </li>
          <li>
            <t>Since RPC-over-QUIC may use multiple streams within a single QUIC
connection (see <xref target="sec-streams"/>), QUIC-LB ensures that all streams
within a connection are consistently routed to the same server,
preserving the connection-level semantics that upper-layer RPC
protocols may depend upon.</t>
          </li>
          <li>
            <t>The connection ID length self-encoding feature of QUIC-LB, when
enabled, assists hardware cryptographic offload devices that need
to efficiently look up connection-specific keys, improving
performance in high-throughput RPC deployments.</t>
          </li>
        </ul>
        <t>RPC-over-QUIC implementations <bcp14>MAY</bcp14> use QUIC-LB to facilitate load
balancing in RPC server pool deployments. A full specification of
this facility is beyond the scope of the current document.</t>
        <t>QUIC-LB is transparent to QUIC clients. They do not need to know
whether servers are using QUIC-LB encoding. Clients simply:</t>
        <ul spacing="normal">
          <li>
            <t>Use server-provided connection IDs as-is</t>
          </li>
          <li>
            <t>Respond to NEW_CONNECTION_ID frames normally</t>
          </li>
          <li>
            <t>Perform address migration as permitted by server transport parameters</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="rpc-authentication-flavors">
      <name>RPC Authentication Flavors</name>
      <t>Streams in a QUIC connection may use different RPC authentication
flavors. One stream might use RPC_AUTH_UNIX, while at the same time,
another might use RPCSEC_GSS.</t>
      <t>GSS mutual (peer) authentication occurs only after a QUIC connection
has been established. It is a separate process, and is unchanged by
the use of QUIC. Additionally, authentication of RPCSEC_GSS users is
unchanged by the use of QUIC.</t>
      <t>RPCSEC_GSS can optionally perform per-RPC integrity or confidentiality
protection. When operating within a QUIC connection, these GSS services
become largely redundant.  An RPC implementation capable of concurrently
using QUIC and RPCSEC_GSS <bcp14>MUST</bcp14> use Generic Security Service Application
Program Interface (GSS-API) channel binding, as defined in <xref target="RFC5056"/>,
to determine when an underlying transport already provides a sufficient
degree of confidentiality.</t>
      <t>RPC-over-QUIC implementations <bcp14>MUST</bcp14> provide the "tls-exporter" channel
binding type, as defined in <xref target="RFC9266"/>.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section is to be removed before publishing as an RFC.</t>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>. The description of implementations in this section is
intended to assist the IETF in its decision processes in progressing
drafts to RFCs.</t>
      <t>Please note that the listing of any individual implementation here
does not imply endorsement by the IETF. Furthermore, no effort has
been spent to verify the information presented here that was supplied
by IETF contributors. This is not intended as, and must not be
construed to be, a catalog of available implementations or their
features. Readers are advised to note that other implementations may
exist.</t>
      <t>There are no known implementations of RPC-over-QUIC as
described in this document.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Readers should refer to the discussion of QUIC's transport layer
security in <xref section="21" sectionFormat="of" target="RFC9000"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>RFC Editor: In the following subsections, please replace RFC-TBD with
the RFC number assigned to this document. Furthermore, please remove
this Editor's Note before this document is published.</t>
      <section anchor="sec-netids">
        <name>Netids for RPC-over-QUIC</name>
        <t>Each new RPC transport is assigned one or more RPC "netid" strings.
These strings are an rpcbind <xref target="RFC1833"/> string naming the underlying
transport protocol, appropriate message framing, and the format of
service addresses and ports, among other things.</t>
        <t>This document requests that IANA allocate
the following "Netid" registry strings in the "ONC RPC Netid"
registry, as defined in <xref target="RFC5665"/>:</t>
        <artwork><![CDATA[
      NC_QUIC    "quic"
      NC_QUIC6   "quic6"
]]></artwork>
        <t>These netids <bcp14>MUST</bcp14> be used for any transport satisfying the
requirements described in this document. The "quic" netid is
to be used when IPv4 addressing is employed by the underlying
transport, and "quic6" for IPv6 addressing. IANA should use this
document (RFC-TBD) as the reference for the new entries.</t>
        <aside>
          <t>lars: Why one per IP address family? This seems common practice with
  netids, but also seems to be a layering violation?</t>
          <t>cel: That question might be out of scope for this document.
  netids very nearly amount to technical debt at this point.</t>
        </aside>
      </section>
      <section anchor="alpn-identifier-for-sunrpc-on-quic">
        <name>ALPN Identifier for SunRPC on QUIC</name>
        <t>RPC-over-QUIC utilizes the same ALPN string as RPC-with-TLS
does, as defined in <xref section="7.2" sectionFormat="of" target="RFC9289"/>:</t>
        <artwork><![CDATA[
   Identification Sequence:  0x73 0x75 0x6e 0x72 0x70 0x63 ("sunrpc")
]]></artwork>
        <t>This document requests that a reference to (RFC-TBD) be added to
the SunRPC protocol entry in the "TLS Application-Layer Protocol
Negotiation (ALPN) Protocol IDs" registry.</t>
        <aside>
          <t>lars: If changes to the RPC-over-QUIC binding might be desired in
  the future, how would they be negotiated/expressed? Should a
  versioned ALPN be used instead of the one from
  <xref target="RFC9289"/>?</t>
        </aside>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1833">
          <front>
            <title>Binding Protocols for ONC RPC Version 2</title>
            <author fullname="R. Srinivasan" initials="R." surname="Srinivasan"/>
            <date month="August" year="1995"/>
            <abstract>
              <t>This document describes the binding protocols used in conjunction with the ONC Remote Procedure Call (ONC RPC Version 2) protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1833"/>
          <seriesInfo name="DOI" value="10.17487/RFC1833"/>
        </reference>
        <reference anchor="RFC5056">
          <front>
            <title>On the Use of Channel Bindings to Secure Channels</title>
            <author fullname="N. Williams" initials="N." surname="Williams"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>The concept of channel binding allows applications to establish that the two end-points of a secure channel at one network layer are the same as at a higher layer by binding authentication at the higher layer to the channel at the lower layer. This allows applications to delegate session protection to lower layers, which has various performance benefits.</t>
              <t>This document discusses and formalizes the concept of channel binding to secure channels. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5056"/>
          <seriesInfo name="DOI" value="10.17487/RFC5056"/>
        </reference>
        <reference anchor="RFC5531">
          <front>
            <title>RPC: Remote Procedure Call Protocol Specification Version 2</title>
            <author fullname="R. Thurlow" initials="R." surname="Thurlow"/>
            <date month="May" year="2009"/>
            <abstract>
              <t>This document describes the Open Network Computing (ONC) Remote Procedure Call (RPC) version 2 protocol as it is currently deployed and accepted. This document obsoletes RFC 1831. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5531"/>
          <seriesInfo name="DOI" value="10.17487/RFC5531"/>
        </reference>
        <reference anchor="RFC5665">
          <front>
            <title>IANA Considerations for Remote Procedure Call (RPC) Network Identifiers and Universal Address Formats</title>
            <author fullname="M. Eisler" initials="M." surname="Eisler"/>
            <date month="January" year="2010"/>
            <abstract>
              <t>This document lists IANA Considerations for Remote Procedure Call (RPC) Network Identifiers (netids) and RPC Universal Network Addresses (uaddrs). This document updates, but does not replace, RFC 1833. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5665"/>
          <seriesInfo name="DOI" value="10.17487/RFC5665"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="RFC9266">
          <front>
            <title>Channel Bindings for TLS 1.3</title>
            <author fullname="S. Whited" initials="S." surname="Whited"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document defines a channel binding type, tls-exporter, that is compatible with TLS 1.3 in accordance with RFC 5056, "On the Use of Channel Bindings to Secure Channels". Furthermore, it updates the default channel binding to the new binding for versions of TLS greater than 1.2. This document updates RFCs 5801, 5802, 5929, and 7677.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9266"/>
          <seriesInfo name="DOI" value="10.17487/RFC9266"/>
        </reference>
        <reference anchor="RFC9289">
          <front>
            <title>Towards Remote Procedure Call Encryption by Default</title>
            <author fullname="T. Myklebust" initials="T." surname="Myklebust"/>
            <author fullname="C. Lever" initials="C." role="editor" surname="Lever"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that, through the use of opportunistic Transport Layer Security (TLS), enables encryption of Remote Procedure Call (RPC) transactions while they are in transit. The proposed mechanism interoperates with Open Network Computing (ONC) RPC implementations that do not support it. This document updates RFC 5531.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9289"/>
          <seriesInfo name="DOI" value="10.17487/RFC9289"/>
        </reference>
        <reference anchor="I-D.ietf-quic-load-balancers">
          <front>
            <title>QUIC-LB: Generating Routable QUIC Connection IDs</title>
            <author fullname="Martin Duke" initials="M." surname="Duke">
              <organization>Google</organization>
            </author>
            <author fullname="Nick Banks" initials="N." surname="Banks">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="27" month="August" year="2025"/>
            <abstract>
              <t>   QUIC address migration allows clients to change their IP address
   while maintaining connection state.  To reduce the ability of an
   observer to link two IP addresses, clients and servers use new
   connection IDs when they communicate via different client addresses.
   This poses a problem for traditional "layer-4" load balancers that
   route packets via the IP address and port 4-tuple.  This
   specification provides a standardized means of securely encoding
   routing information in the server's connection IDs so that a properly
   configured load balancer can route packets with migrated addresses
   correctly.  As it proposes a structured connection ID format, it also
   provides a means of connection IDs self-encoding their length to aid
   some hardware offloads.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-load-balancers-21"/>
        </reference>
        <reference anchor="IANA" target="https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt">
          <front>
            <title>IANA Service Name and Transport Protocol Port Number registry</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC0768">
          <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/RFC0768"/>
        </reference>
        <reference anchor="RFC0793">
          <front>
            <title>Transmission Control Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="RFC" value="793"/>
          <seriesInfo name="DOI" value="10.17487/RFC0793"/>
        </reference>
        <reference anchor="RFC5040">
          <front>
            <title>A Remote Direct Memory Access Protocol Specification</title>
            <author fullname="R. Recio" initials="R." surname="Recio"/>
            <author fullname="B. Metzler" initials="B." surname="Metzler"/>
            <author fullname="P. Culley" initials="P." surname="Culley"/>
            <author fullname="J. Hilland" initials="J." surname="Hilland"/>
            <author fullname="D. Garcia" initials="D." surname="Garcia"/>
            <date month="October" year="2007"/>
            <abstract>
              <t>This document defines a Remote Direct Memory Access Protocol (RDMAP) that operates over the Direct Data Placement Protocol (DDP protocol). RDMAP provides read and write services directly to applications and enables data to be transferred directly into Upper Layer Protocol (ULP) Buffers without intermediate data copies. It also enables a kernel bypass implementation. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5040"/>
          <seriesInfo name="DOI" value="10.17487/RFC5040"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC8166">
          <front>
            <title>Remote Direct Memory Access Transport for Remote Procedure Call Version 1</title>
            <author fullname="C. Lever" initials="C." role="editor" surname="Lever"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <author fullname="T. Talpey" initials="T." surname="Talpey"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>This document specifies a protocol for conveying Remote Procedure Call (RPC) messages on physical transports capable of Remote Direct Memory Access (RDMA). This protocol is referred to as the RPC-over- RDMA version 1 protocol in this document. It requires no revision to application RPC protocols or the RPC protocol itself. This document obsoletes RFC 5666.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8166"/>
          <seriesInfo name="DOI" value="10.17487/RFC8166"/>
        </reference>
        <reference anchor="RFC8881">
          <front>
            <title>Network File System (NFS) Version 4 Minor Version 1 Protocol</title>
            <author fullname="D. Noveck" initials="D." role="editor" surname="Noveck"/>
            <author fullname="C. Lever" initials="C." surname="Lever"/>
            <date month="August" year="2020"/>
            <abstract>
              <t>This document describes the Network File System (NFS) version 4 minor version 1, including features retained from the base protocol (NFS version 4 minor version 0, which is specified in RFC 7530) and protocol extensions made subsequently. The later minor version has no dependencies on NFS version 4 minor version 0, and is considered a separate protocol.</t>
              <t>This document obsoletes RFC 5661. It substantially revises the treatment of features relating to multi-server namespace, superseding the description of those features appearing in RFC 5661.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8881"/>
          <seriesInfo name="DOI" value="10.17487/RFC8881"/>
        </reference>
      </references>
    </references>
    <?line 579?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors express their deepest appreciation for the
contributions of J. Bruce Fields who was an original author
of this document.
In addition, we are indebted to Lars Eggert and the QUIC
working group for the creation of the QUIC transport protocol.</t>
      <t>The editor is grateful to
Bill Baker,
Greg Marsden,
Richard Scheffenegger,
Martin Thomson,
and
Long Xin
for their input and support.</t>
      <t>Special thanks to
Area Director
Gorry Fairhurst,
NFSV4 Working Group Chairs
Brian Pawlowski
and
Christopher Inacio,
and
NFSV4 Working Group Secretary
Thomas Haynes
for their guidance and oversight.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA6V863LbSJbm/3yKXNWPtjtI2iq7XC71TLtlXao0I8taS+6q
iY5eBwgkSaxAgIsERLMr3DGvMf/mWeZR9kn2fOecTCQouWYnxj8sEgTycq7f
uSSm06kxXdlV7sh+cOumc/a6bXJX9K2zJ1lV2ebetfZ/frw4sX92rS+b2h6a
bD5v3T09cX0y/G6KJq+zNQ1UtNmim+aumtYLf/9y2m7yKW6b/p++zO8Pp89f
mDzr3LJpd0fWd4UpN+2R7dred98+f/7D829N1rrsyN62We03TduZbdPeLdum
3xzZK9fhmz0vK2dvdr5z67iyl6aZ+6ZynfNHpt8UGX/wXVYXn7KqqWltO+eN
7+fr0uOJbrehaxdnt+dmUx7Zv3RNPrGeZmzdwtOn3Vo+0NbW2WZT1su/GpP1
3appj4yZGmtlx29d/b+zdVnbk6Yo6K6uqem3pl2CqoX9Kevoa970dYctf6zL
jq7edFifbRb2eO3aMs/oHrfOyurIznMZ50+tK1ZZN8ubdTLbTd50nX2X7VZu
+9+axq95jMdnOVllbUUPXjpiHV1tGwiJK8quacOs79ssJzacNC2xKetK3naQ
Dvnxv7aifNXnd7MKU/6p4ed5VaZu2jWNf++O6N4P5yeHr1+80I/fPf/uVfj4
3YvD8PHVq+/04w/Pnz8fPoYbfvj21av48fUP+HgxPZ2VrluwnE6rJium86zK
6pzEi38/vjrGX2u7rF267siuum7jj5492263szKrsxlR5VlGorWs167u/DPv
2vsyd1OQ1E8hy9O6X89pwN/4adZ97mQaUUzMa2/kdntFt1sS6EE7oLEkuE1l
r/HtigexrVuWnqhuTFkv9qj3/PtXr+PHHwZCvgx0+v6Hl9/qx9eHkU6vX78+
hNhPp8RjGjvLO2NuV6WHfvTYsPUbl5eLkrib2U1YFk1PMlDfux2J9AMzY56Q
GXlqiQg+W9KD92Um9uY+2Bs8XLsc4uVn9qKjvRGHWrq3bujzfYnbTNdYUtGK
xAk3sm0KKyBZa223cqOLtuy8qxYz2VBNa/p0Rf/pjvDd0l8ade5okjUZsII+
0l6c3fTzqvQr7CajndYgDo1zWvq8Z7sC2e6YMDCFtsnzvqVF1LyIv1yd39y/
tLBiGIHtmoX40zdD43Z/fcJ280+QRUjU04nN2nxVYgWk4n/565Mgd3hKf5qF
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

-->

</rfc>
