<?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.35 (Ruby 3.4.9) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cel-nfsv4-rpc-over-quicv1-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.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-04"/>
    <author initials="B." surname="Coddington" fullname="Benjamin Coddington">
      <organization>Hammerspace</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>bcodding@hammerspace.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="2026" month="April" day="29"/>
    <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 implementation 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 can 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 can
advertise a max_streams value that is significantly lower than
2 ^ 60.</t>
            <t>Instead, RPC clients can create enough streams to maximize
workload parallelism, and ought to 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 need to recognize 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="sec-tls">
          <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="7.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. For instance, when NFSv4.1 layered on
RPC-over-QUIC uses BIND_CONN_TO_SESSION <xref target="RFC8881"/> to associate
a "connection" with a session, the bound entity is a QUICv1
stream rather than the encompassing QUICv1 connection.</t>
        <t>A peer that closes a QUICv1 stream signals that any RPC request
still in flight on that stream is to be treated as lost. Closing
a stream does not affect the encompassing QUICv1 connection or
any other stream within it.</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 their Requester or Responder role. A receiver <bcp14>MAY</bcp14>
also signal the violation to the peer by closing the offending
stream with a RESET_STREAM frame (<xref section="19.4" sectionFormat="of" target="RFC9000"/>)
carrying an application error code; specific error code values
and an extension process for defining additional codes are left
to a future revision of this specification.</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-over-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>
          <t>cel: An extension process for defining RPC-over-QUIC application
  error codes (used with RESET_STREAM and CONNECTION_CLOSE frames)
  needs to be specified, likely with an IANA registry. Initial
  code points are needed for at least protocol-violation
  signaling, server backpressure, and server-initiated request
  drop.</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>The QUIC Load Balancing specification
<xref target="I-D.ietf-quic-load-balancers"/> defines methods for encoding
routing information in QUIC connection IDs, so that a load
balancer can route packets to a particular backend server with
minimal per-connection state, even when a client's network
address changes due to NAT rebinding or migration. Because
RPC-over-QUIC may carry multiple streams over one connection
(see <xref target="sec-streams"/>), routing at the connection-ID layer keeps
all streams of a given connection on the same backend.</t>
        <t>The connection ID length self-encoding feature of QUIC-LB
assists hardware cryptographic offload devices that look up
connection-specific keys.</t>
        <t>RPC-over-QUIC implementations <bcp14>MAY</bcp14> use QUIC-LB. A full
specification of its use with RPC-over-QUIC is out of scope for
this document. QUIC-LB requires no support from QUIC clients
beyond conformance to <xref target="RFC9000"/>.</t>
      </section>
    </section>
    <section anchor="sec-auth">
      <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 section="2" sectionFormat="of" 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>RPC-over-QUIC inherits the transport-layer security properties of
QUIC version 1, including always-on encryption, authentication,
and integrity protection of QUIC packets, and the connection
migration protections discussed in <xref section="21" sectionFormat="of" target="RFC9000"/> and
<xref section="9" sectionFormat="of" target="RFC9001"/>. Implementers should be familiar with
that material.</t>
      <t>Because QUIC integrates TLS into the transport handshake, the
peer identities established during connection establishment apply
to every stream and RPC message carried on that connection, as
described in <xref target="sec-tls"/>. The peer authentication, PKIX Extended
Key Usage, and certificate-handling considerations in
<xref section="6" sectionFormat="of" target="RFC9289"/> apply equally to RPC-over-QUIC.</t>
      <t>When RPCSEC_GSS is used concurrently with RPC-over-QUIC, the GSS
confidentiality and integrity services are largely redundant with
the protection supplied by the QUIC connection. To detect this
condition, implementations use the GSS-API channel-binding
mechanism <xref target="RFC5056"/>, as required by <xref target="sec-auth"/>. The
"tls-exporter" binding type <xref target="RFC9266"/> ties the GSS context to
the specific TLS handshake of the underlying QUIC connection; a
successful binding check confirms that the GSS context and the
RPC traffic share the same protected channel.</t>
      <t>QUIC permits the use of 0-RTT data, which is replayable as
described in <xref section="9.2" sectionFormat="of" target="RFC9001"/>. RPC procedures are
generally not idempotent, so the same replay hazard that motivates
the 0-RTT prohibition in <xref section="6" sectionFormat="of" target="RFC9289"/> applies to
RPC-over-QUIC. RPC-over-QUIC implementations <bcp14>MUST NOT</bcp14> use 0-RTT
data.</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="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>
        <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>
      </references>
    </references>
    <?line 602?>

<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:
H4sIAAAAAAAAA5V87XbcRnL2/76KfukflnJmRqIsyxKdrJYiJZuJRDEitXbO
nn11MEAPByEGmKABjmZ9tNeSa8mVpZ6q6kYDpLxZ/5CHM0B/VNfHU189n8+N
6cquckf2g9s0nbMXbZO7om+dPcmqyja3rrX//vHsxP7Jtb5santosuWydbf0
xsXJ8LspmrzONjRQ0Warbp67al6v/O3TebvN53hs/l99md8ezh8/NXnWueum
3R9Z3xWm3LZHtmt73z15/PjF4ycma112ZK/arPbbpu3Mrmlvrtum3x7Zc9fh
L/umrJy93PvObeLKnppm6ZvKdc4fmX5bZPzBd1ldfMqqpqa17Z03vl9uSo83
uv2Wvjt7ffXGbMsj++euyWfW04ytW3n6tN/IB9raJttuy/r6L8Zkfbdu2iNj
5sZa2fErV/9ntilre9IUBT3VNTX91rTXR/bnbLOh5W2z3NFXedPXHbb9sS47
V9jLDmu0zcoe01NlntEzbpOV1ZFd5jLWH9fDCIu82STTXuZN19l32X7tdmG+
DzTqz1n3j83lNzzGH1tXrLNuMsvJOmsrevGtozOkb9sG3OKKsmvaMOv7Nsvp
PE6als4r60ref2AT+fEfW1G+7vObRYUp/9jw+7wqUzfthsa/dUf07Ic3J4fP
v/tOP37/+Ptn4eP33x2Gj8+efa8fXzx+/Hj4GB548eTZs/jx+Qt8PDs+P8b/
re2y9tp1R3bddVt/9OjRbrdblFmdLWjXjzLioet64+rOP/KuvS1zNwfJ/BxM
O6/7zZLO7Xd+WnSfO5lGJBDz2kt53J7T45Y4dxADiCZxaFPZC/x1zoPY1l2X
nqhqTFmvJtR5/MOz5/Hji4FQTwMdfnjx9Il+fH4Y6fD8+XOmztn8dFG6bsWC
O6+arJgvsyqrc1o7+H8+pzOmubO8M+ZqXXoISg+CWL91ebkq6XQzuw3LpuUR
D9S3bk98fUffmAekTx5aIpLPrunF2zITxXMbFA9erl0O9vILe9bR3mllLT1b
N/T5tsRjpmssyWpF7IQHWUmFFRCvtbZbu9GXtuy8q1YL2VBNa/p0Tv/ojvC3
pf/TqEtHk2xIkxX0kfbi7LZfVqVfYzcZ7bQG8Wic09LnPSsY8HbHhIFOtE2e
9y0touZF/Pn8zeXtUwt1hhFYwVmwP/1laNzuLw9Ygf4RZwCOezizWZuvS6yA
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
mpiFYD637noGYTk+ecv0oY866DIiISwDAS0kQ9gX9YjRcDmN6qwYUHin0fg3
GjERcxRC8VNzxDLIe1+WBU2Uj8JUGFbT5XfCu6qoJswx09phtl0hoEbGfEvk
Yp+QdU0rwSY+tYMPIieu1eIXhiYOB8Xrgv3hetahzmEkQAyclcH/3kTEmShM
mE5kwkSSTvj6TB80rerlXV9WAmIB+LJ2jMk1jBqJSurcVYWJMkzeaL6W6K2N
JOBy2bBM7g+B9YrZXJRAMBwRhcMK4LZsKrGraXKeQEQu6kPQJikMDm+bRAeg
cvj15eurT5dXH14fv9O414PBjh6+mCQJH7KjsZc09Kg3gEjNLQmF+zFGY5Mv
Fb9xAg9ZZSnMAy+hjMxzqEAzSxh7CJfiZQFKlVt13JEQyj5Cm0LsDBhZNfg9
garqMAW6eqV9yCr5gH1w+sAEUm0Luv16dmqDb1XWQ/JDD3mRDiosoeUjJozV
JN7yYMolooVqq3C4guh5YRoE57Utxsk9HSECo1hXX0LJgmdIEZVcoEdUWe5J
QpOy41TxSeC9bux1T4qElDPIzN7JMAIPCE4xLSm3VgLE+052lZqU8TZH1vMq
uq1aidpwYWooXpLSYo7VJT6s4GnmSsNcSVZoyY4TokohzQhn4574L+MNiZdN
nbdlv1oFduDd+YH8ySJnkpXFOWg2KNIZ209sx2TO40orscXTJsOKtDkRdd6s
puejVnjIdo4Vc6InbpxR71D2L5WORNtQRevucojaUEzpinmyaqi+aURJXhkQ
MW/ZQ3qAgyViwvUOzNlBwSXb5ZNlnyR2WQTG0LIIjoZXjnCDVgF8NVM5VqKp
nzoZg0O7qpjNv/ZSWxSrxXgSlBcTdLxx3eyO7I5JZNLtpj5BYNB00QH0coQ8
4WKzRFaDO6hEJft1uY2WPiRRmZ9/ZEBI6GU2/t5k9zi5rHuj6zZx2ILN80FV
DAsiol2XoYSOK2bbeZN3WsZLv2+y9ob5Vr8w8kUQUq9lElpnwa/6EP/TIRhI
es3afndolvSXVjgQXMmuQz2aBjPhGsTobRgiJIwILA+jBtGKxyVfrQlDI60k
0kSz0TE4ZxKjdagmS0oXpdSAOThrSx/y/uCMERH8CI4CgyVhDctRDuh2fySH
iUzuzo+ag8RsRDVoxrVgqD+jndbfdnZJ541q+EfD24i1NRu3Y0hLKPO6b3r/
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

-->

</rfc>
