<?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 xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-navarre-quic-flexicast-01" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="FC-QUIC">Flexicast QUIC: combining unicast and multicast in a single QUIC connection</title>
    <seriesInfo name="Internet-Draft" value="draft-navarre-quic-flexicast-01"/>
    <author fullname="Louis Navarre">
      <organization>UCLouvain</organization>
      <address>
        <postal>
          <country>Belgium</country>
        </postal>
        <email>louis.navarre@uclouvain.be</email>
      </address>
    </author>
    <author fullname="Olivier Bonaventure">
      <organization>UCLouvain &amp; WELRI</organization>
      <address>
        <postal>
          <country>Belgium</country>
        </postal>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <date year="2025" month="July" day="07"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>quic</keyword>
    <keyword>multicast</keyword>
    <keyword>flexicast</keyword>
    <abstract>
      <?line 69?>

<t>This document proposes Flexicast QUIC, a simple extension to Multipath
QUIC that enables a source to send the same information to a set of
receivers using a combination of unicast paths and IP multicast distribution trees.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-navarre-quic-flexicast/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/louisna/draft-navarre-quic-flexicast"/>.</t>
    </note>
  </front>
  <middle>
    <?line 76?>

<section anchor="sec-intro">
      <name>Introduction</name>
      <t>Starting from the initial efforts of Steve Deering <xref target="RFC1112"/>, the IETF
has developed a range of IP multicast solutions that enable the efficient
transmission of a single packet to a group of receivers. In this document,
we focus on Source-Specific Multicast for IP <xref target="RFC4607"/>, but the solution
proposed could also be applied to other forms of IP Multicast.</t>
      <t>Although IP Multicast is not a new solution, it is not as widely used by
applications as popular transport protocols like TCP <xref target="RFC9293"/> or QUIC <xref target="QUIC-TRANSPORT"/>
do not support multicast.
Current IP Multicast applications include IP TV distribution in ISP networks
and trading services for financial institutions. Many reasons explain the difficulty
of deploying IP Multicast <xref target="DIOT"/>. From the application's viewpoint, a
key challenge with IP Multicast is that even if there exists a unicast path
between two hosts, there is no guarantee that it will be possible to create and
maintain a multicast tree between these two hosts to efficiently exchange
data using IP multicast. To cope with this problem, applications must
implement both a multicast solution and a unicast solution. This increases the
complexity and the cost of these applications.
For this reason, many applications that send
the same information to a large set of receivers, such as streaming services
or software updates, still rely on TCP or QUIC over unicast. This is inefficient from
the network viewpoint as the network carries the same information multiple
times.</t>
      <t>The deployment of QUIC opens an interesting opportunity to reconsider the
utilization of IP Multicast. As QUIC runs above UDP, it could easily use
IP multicast to deliver information along multicast trees. Multicast
extensions to QUIC have already been proposed in
<xref target="I-D.pardue-quic-http-mcast"/> and <xref target="I-D.jholland-quic-multicast-05"/>.
To our knowledge, these extensions have not been fully implemented and deployed.</t>
      <t>Flexicast QUIC takes a different approach. Instead of extending QUIC <xref target="QUIC-TRANSPORT"/>,
Flexicast QUIC extends Multipath QUIC <xref target="MULTIPATH-QUIC"/>. Multipath QUIC
already includes several features that are very useful to allow a QUIC
connection to use unicast and multicast simultaneously.</t>
      <t>Flexicast QUIC proposes a simple extension to Multipath QUIC that enables to share an
additional path between multiple receivers. The destination address of
this path can be a multicast IP address and rely on a multicast forwarding
mechanism (e.g., IP Multicast) to transmit the packets.
This document defines the core design of Flexicast QUIC starting from Multipath QUIC.
Side documents will further expand this design to add new features.</t>
      <t>This document is organized as follows. After having specified some conventions
in <xref target="sec-conventions"/>, we provide a brief overview of Flexicast QUIC in
<xref target="sec-flexicast"/>. We describe in more details the Flexicast QUIC handshake
in <xref target="sec-handshake"/> and then the new QUIC frames in <xref target="sec-frames"/>.</t>
    </section>
    <section anchor="sec-conventions">
      <name>Conventions and Definitions</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="sec-flexicast">
      <name>Flexicast QUIC</name>
      <t>Multipath QUIC was designed to enable the simultaneous utilization of multiple
paths inside one QUIC connection. A Multipath QUIC connection
starts with a regular QUIC handshake, and adds the initial_max_path_id transport parameter
to negotiate the multipath extension. This parameter
specifies the maximum path identifier that an endpoint is willing to maintain
at connection establishment. Multipath QUIC requires the utilization of non-zero
connection identifiers and one packet number
space per path. Multipath QUIC assumes that the additional paths are created
by the client using the server address of the initial path.</t>
      <t>Consider as an example a smartphone that uses Multipath QUIC. This smartphone
has a Wi-Fi and a cellular interface. The smartphone has created the QUIC
connection over the cellular interface. After the handshake, the smartphone
and the server have exchanged additional connection identifiers. To create a
new path over the Wi-Fi interface, the smartphone sends a PATH_CHALLENGE over
this path using one of the connection identifiers advertised by the server.
The server replies with a PATH_RESPONSE using one of the connection
identifiers advertised by the smartphone. The smartphone confirms the establishment
of the second path using a PATH_RESPONSE. At this point that smartphone and the
server have two paths to exchange data: the first over the cellular interface
and the second over the Wi-Fi interface. Each path uses a different sequence number
space, but QUIC packets are encrypted using the same connection keys over both paths.
When a QUIC packet needs to be sent, the packet scheduler selects the relevant path.
If a QUIC frame is lost over one path, it can be retransmitted over any other
path.</t>
      <t>Flexicast QUIC extends Multipath QUIC by requiring that each path uses different
encryption and decryption keys. As such, multiple clients can share the same additional
path which is encrypted with a different key than their respective unicast path.
The IP destination address of this new, shared path <bcp14>MAY</bcp14> be a multicast address,
so that all receivers attached to this multicast tree receive the same packet.</t>
      <t>The case were the IP destination address is <em>not</em> an IP multicast address is discussed
later in this document. In this case, Flexicast QUIC uses packet replication at the
source, e.g., using sendmmsg, using the unicast destination address of the receivers.
This solution scales at the source because Flexicast QUIC generates and encrypts only one packet,
and duplicating the bytes is straightforward.</t>
      <t>A Flexicast QUIC connection starts with a handshake like a regular QUIC
connection. Receivers R1, R2 and R3 establish a connection to source S using the
flexicast_support and the initial_max_path_id transport parameters.
The initial path between each receiver and the source are individually secured using
the keys derived at connection establishement. They remain open during the whole
communication and constitute a unicast bidirectional path between the source and
each receiver. This path is used for two very different purposes.
First, it acts as a control channel and enables the source to
exchange control information with each receiver. Second, it can be used to transmit
or retransmit data that cannot be delivered along the multicast tree.</t>
      <t>Most of the data sent over a Flexicast QUIC connection is transmitted along what
we call a flexicast flow. A <strong>flexicast flow</strong> is a unidirectional multipath path from a source
to a group of receivers. An important characteristic of a flexicast flow is that
all the packets sent by the source over this flow are secured using keys that are
shared between the source and the receivers attached to the flexicast flow.</t>
      <t>Flexicast QUIC supports two types of flexicast flows. The first type flexicast flow
is an IP multicast tree, as illustrated in <xref target="fig-flexicast-2"/>. The source relies
on an underlying IP multicast network to create an IP multicast tree and selects a set
of encryption and authentication keys. It advertises a flexicast flow using the
FC_ANNOUNCE frame to the receivers. The FC_ANNOUNCE frame contains information such
as the Flexicast Flow ID, i.e., the equivalent of the Connection ID for the flexicast
flow, and the source and multicast group IP addresses that the receivers use to join the
underlying IP multicast tree. The source then uses the FC_KEY frame
to avertise the shared keys to each receiver. They can now receive and decrypt
the data sent by the source along the multicast tree.
The Flexicast QUIC source uses this flexicast flow to efficiently send data to multiple receivers
simultaneously (R1 and R2 in <xref target="fig-flexicast-2"/>).
R1 and R2 use their unicast path, created at connection establishment, to return acknowledgments.
A source can retransmit lost data either on the flexicast flow or over a specific unicast path,
e.g. when some data was missing at only one receiver.</t>
      <t>Flexicast QUIC supports non-multicast-capable receivers in two different ways. A first
approach is to use the unicast path to deliver the data to such receivers. This implies
that each data must be authenticated and encrypted using the TLS keys derived over each
unicast path. This is illustrated in <xref target="fig-flexicast-2"/> where receiver R3 lies in
a non-multicast-capable network and relies on unicast delivery.</t>
      <t>This is not efficient when there are multiple receivers.
Flexicast QUIC supports a second type of flexicast flow which improves performance when
there are multiple unicast receivers. For these receivers, it is more efficient from the
source viewpoint to encrypt and authenticate a QUIC packet using shared keys and then
send a copy of this packet to all receivers, e.g. using system calls such as sendmmsg.
In this case, the source maintains a flexicast flow where it replicates each packet
towards each receiver. It also sends an FC_ANNOUNCE frame to advertise the flexicast flow,
using the receiver's IP address as a destination instead of a multicast address and later
an FC_KEY frame containing the shared keys.</t>
      <figure anchor="fig-flexicast-2">
        <name>A Flexicast QUIC connection is composed of two types of paths: (1) one bidirectional, unique, unicast path between the source and each receiver and (2) a flexicast flow from the source to a set of receivers relying on a multicast distribution tree</name>
        <artwork><![CDATA[
+----------------------------------------+
|   +----------------------------+       |    =======> flexicast flow
|   |                            |       |
|   |                            |       |    <------> unicast path
|   v      239.239.23.35:4433    v       |
+-> S ==============+==========> R1      |
    ^               \\                   v
    |                +=================> R2
    |
    +----------------------------> R3
]]></artwork>
      </figure>
      <t>At any point in time, if the network conditions of a receiver of a flexicast flow degrade,
e.g., because the underlying multicast tree fails or because the receiver moves into a
non-multicast network, it can leave the flexicast flow and continue receiving content
through its unicast path. The seamless transition between a flexicast flow and a unicast path
is possible because these are Multipath QUIC paths.</t>
      <t>Flexicast QUIC offers full reliability by retransmitting lost frames either to all receivers
on the flexicast flow, or per-receiver using their unicast path.</t>
      <section anchor="extensions-to-multipath-quic">
        <name>Extensions to Multipath QUIC.</name>
        <t>Flexicast QUIC modifies Multipath QUIC in three ways to enable the
utilization of a shared unidirectional path, the flexicast flow, as one of the Multipath QUIC paths.
The flexicast flow can be transported on top of an IP multicast distribution tree to reach several receivers simultaneously,
which brings several challenges:</t>
        <ol spacing="normal" type="1"><li>
            <t>An IP multicast tree is unidirectional, in contrast with a Multipath QUIC path.</t>
          </li>
          <li>
            <t>An IP multicast tree is identified by a pair &lt;source address, group address&gt;.</t>
          </li>
          <li>
            <t>All the receivers attached to an IP Multicast tree receive the same packet.</t>
          </li>
        </ol>
        <t>Since an IP multicast tree is unidirectional, it is impossible to use the QUIC
path challenge/response mechanism to create the flexicast flow along an IP multicast tree.
Flexicast QUIC only uses path challenge/response on unicast paths.
Flexicast QUIC replaces the explicit path challenge/response from Multipath QUIC
to create the flexicast flow by an implicit path creation.
Since the destination address of this new "path" is a multicast IP address, it is impossible for
receivers to test its reachability from the source.
An underlying mechanism (e.g., using IGMP) <bcp14>SHOULD</bcp14> provide feedback to the receiver on the
reachability of the flexicast flow through the IP multicast address provided by the source.</t>
        <t>Furthermore, the data received over the flexicast flow cannot be acknowledged over this path
since it is unidirectional.
Because Flexicast QUIC uses Multipath QUIC, ACK frames are replaced by PATH_ACK frames.
Flexicast QUIC receivers <bcp14>MUST</bcp14> send acknowledgments to the source using PATH_ACK frames
sent on their unicast path.</t>
        <t>In single-source multicast, an IP multicast group is represented by the (S,G) tuple,
respectively denoting the IP address of the multicast source and the multicast group.
To join the flexicast flow, the receivers must be informed of the (S,G) tuple of the
underlying IP multicast tree. The server uses the FC_ANNOUNCE frame to
advertise the identifier of the multicast tree that the receivers can join.</t>
        <t>The Flexicast QUIC packets that are sent over the flexicast flow must
be encrypted and authenticated. However, these packets cannot be encrypted using
the TLS keys derived during the QUIC connection establishment since each unicast
path has its own set of TLS keys. To secure the transmission of Flexicast QUIC
packets along the flexicast flow, the source generates an independent set of
security keys and shares them using the FC_KEY frame (see <xref target="fc-key-frame"/>) to all receivers over
the unicast path. Since this frame is sent over the unicast paths, it is authenticated
and encrypted using the TLS keys associated to each unicast path.</t>
        <t><xref target="sec-packet-protection"/> gives more details on the modifications to <xref target="MULTIPATH-QUIC"/> to
protect packets sent on the flexicast flow.</t>
      </section>
    </section>
    <section anchor="sec-handshake">
      <name>Handshake Negotiation and Transport parameter</name>
      <t>Flexicast QUIC defines a new transport parameter, used to negotiate the use of
the flexicast extension during the connection handshake, as specified in <xref target="QUIC-TRANSPORT"/>.
The new transport parameter is defined as follows:</t>
      <ul spacing="normal">
        <li>
          <t>flexicast_support (current version uses TBD-03): the presence of this transport parameter indicates support of the flexicast extension. The transport parameter contains two boolean values, respectively indicating support of IPv4 and IPv6 for multicast addresses. If an endpoint receives the flexicast_support transport parameter with both IPv4 and IPv6 supports set to false (0), it must close the connection with an error type of FC_PROTOCOL_VIOLATION.</t>
        </li>
      </ul>
      <t>The support of the flexicast extension is conditioned to the support of the multipath extension, as defined in <xref target="MULTIPATH-QUIC"/>.
Since a Flexicast flow is a new multipath path, the support of multipath, with sufficient (e.g., at least 2) path ID, is required, as defined in <xref section="2" sectionFormat="of" target="MULTIPATH-QUIC"/>.</t>
      <t>An endpoint receiving the flexicast_support transport parameter from its peer, without support for multipath <bcp14>MUST</bcp14> ignore the flexicast_support transport parameter, as if the peer does not support the flexicast extension.</t>
      <t>The extension does not change the definition of the transport parameters defined in <xref section="18.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
    </section>
    <section anchor="initialisation-of-a-flexicast-flow">
      <name>Initialisation of a Flexicast Flow</name>
      <t>This section details how a Flexicast QUIC source advertises flexicast flows and how receivers join them.</t>
      <t><xref target="fig-join-flexicast-flow"/> illustrates how a Flexicast QUIC source and receiver exchange frames on the unicast
path to advertise and join a flexicast flow. The handshake uses the transport parameters defined in the previous section.
This handshake creates a QUIC connection between a source and a receiver. The source sends an FC_ANNOUNCE
frame over this connection to advertises the flexicast flow, e.g. an IP multicast tree. The receiver
joins the tree and then sends an FC_STATE(JOIN) frame to the source to indicate that it is attached
to the tree. The source sends an FC_KEY frame containing the security keys associated to the
flexicast flow. The receiver returns an FC_STATE(LISTEN) frame to indicate that it receives frames
over the flexicast flow.</t>
      <figure anchor="fig-join-flexicast-flow">
        <name>Flexicast flow announcement and join</name>
        <artwork><![CDATA[
Source                                        Receiver

QUIC handshake      <------------>      QUIC handshake

FC_ANNOUNCE         ------------->
                    <-------------      FC_STATE(JOIN)
FC_KEY              ------------->
                    <-------------    FC_STATE(LISTEN)
]]></artwork>
      </figure>
      <section anchor="flexicast-flow-announcement">
        <name>Flexicast Flow Announcement</name>
        <t>A Flexicast QUIC source announces a flexicast flow using the FC_ANNOUNCE frame (see <xref target="fc-announce-frame"/>).
On a flexicast flow, Flexicast QUIC replaces the concept of Connection ID with the Flexicast Flow ID.
Similarly to the Connection ID from <xref target="MULTIPATH-QUIC"/>, the Flexicast Flow ID uniquely identifies a flexicast flow. The Flexicast Flow ID <bcp14>MUST NOT</bcp14> be empty, as of <xref target="MULTIPATH-QUIC"/> specification. Using a Flexicast Flow ID, a flexicast flow can change the addressing at lower protocol layers (UDP, IP) without causing packets to be delivered to the wrong endpoint.
In <xref target="QUIC-TRANSPORT"/> and <xref target="MULTIPATH-QUIC"/>, endhosts chose their source Connection IDs and advertise them to their peers using NEW_CONNECTION_ID frames.
In Flexicast QUIC, the source decides the Flexicast Flow ID identifying a flexicast flow and sends this value to receivers.</t>
        <t>Through the FC_ANNOUNCE frame, the source advertises the Flexicast Flow ID of the flexicast flow to listen to.
As the Flexicast Flow ID will serve as a "destination Connection ID" for the flexicast flow, receivers willing to join the flexicast flow <bcp14>MUST</bcp14> add this Flexicast Flow ID as a new "source Connection ID".
<em>TODO: how to handle the case were the receiver already has this Flexicast Flow ID as a source Connection ID?</em></t>
        <t>The FC_ANNOUNCE frame also contains the source address, destination address and UDP destination port number of the
flexicast flow. If the destination address is an IP multicast address, then the flexicast flow uses an IP multicast
tree and the receiver <bcp14>MUST</bcp14> join this tree and listen to the specified UDP port number. If the destination address is the
unicast IP address of the receiver, then the receiver <bcp14>MUST</bcp14> listen to the specified UDP port number on this address.
Since the IP destination address is a multicast address, this system is not impacted by NATs.</t>
        <t>The source <bcp14>MAY</bcp14> advertise multiple distinct flexicast flows to a given receiver, i.e., flexicast flows with
distinct Flexicast Flow ID.
The source <bcp14>MAY</bcp14> advertise updated information about a specific flexicast flow by sending new FC_ANNOUNCE frames with increased sequence numbers.
Upon reception of a new FC_ANNOUNCE frame updating information of an existing flexicast flow with an increased sequence number compared to the last received FC_ANNOUNCE frame, a receiver <bcp14>MUST</bcp14> update flexicast flow information.
Upon reception of a new FC_ANNOUNCE frame updating information of an existing flexicast flow with a smaller sequence number compared to the last received FC_ANNOUNCE frame, a receiver <bcp14>MUST</bcp14> silently discard the new FC_ANNOUNCE frame.</t>
        <t>The source <bcp14>MAY</bcp14> withdraw a flexicast flow by sending a new FC_ANNOUNCE frame, with an increased sequence number, with null source and destination IP addresses.
Upon reception of such frame, receivers <bcp14>MUST</bcp14> stop listening to packets received from the flexicast flow.</t>
      </section>
      <section anchor="sec-join-fc-flow">
        <name>Joining a Flexicast Flow</name>
        <t><xref target="fig-join-fsm"/> illustrates the finite-state machine of a receiver from the start of the QUIC connection (Unaware) until it is ready to listen to packets on the flexicast flow.
After receiving an FC_ANNOUNCE frame advertising a flexicast flow, a receiver <bcp14>MAY</bcp14> decide to join it.
Due to the scalability benefits from the point of view of the source and the network, it is encouraged that receivers do join the flexicast flow.
Flexicast flow management is handled with the FC_STATE frame (see <xref target="fc-state-frame"/>).
The receiver sends an FC_STATE frame with the Flexicast Flow ID of the flexicast flow it wants to join and the JOIN action.</t>
        <figure anchor="fig-join-fsm">
          <name>Receiver-side finite-state machine to listen to a flexicast flow</name>
          <artwork><![CDATA[
.-----------------.
|     Unaware     |<-----------------------------.
.--------.--------.                              |
         |                                       |
         | Receives FC_ANNOUNCE frame            |
         v                                       |
.-----------------.                              |
| Aware, unjoined |<---------------------------. |
.-----------------.                            | |
         |                                     | |
         | Sends FC_STATE frame                | |
         | with JOIN action                    | |
         v                                     | |
.-----------------.                            | |
|Joined, needs key|                            | |
.-----------------.                            | |
         |                                     | |
         | Receives FC_KEY frame               | |
         | with master secret                  | |
         v                      Receives/sends | |
.-----------------.             FC_STATE frame | |
|      Joined     |          with LEAVE action | |
.-----------------.                            | |
        |                                      | |
        | Sends FC_STATE frame                 | |
        | with LISTEN action                   | |
        v                                      | |
.-----------------.                            | |
| Ready to listen |----------------------------. |
.-----------------.                              |
        |        Receives a withdraw FC_ANNOUNCE |
        .----------------------------------------.
]]></artwork>
        </figure>
        <t>Upon reception of an FC_STATE frame with the JOIN action, the source sends an FC_KEY frame, containing the TLS master secret that will be used to derive the set of keys necessary for the receiver to decrypt packets
received on the flexicast flow. The frame also contains the first packet number that the receiver <bcp14>SHOULD</bcp14> receive with this key.
The receiver <bcp14>MUST NOT</bcp14> process packets with a lower packet number, and applications <bcp14>SHOULD</bcp14> provide a way to transmit through the unicast path any application data required for the receiver to correctly process subsequent packets received on the flexicast flow ID.
Starting from the advertised first packet number of interest, the source <bcp14>MUST</bcp14> retransmit (either on the flexicast flow, or unicast path) lost reliable frames.</t>
        <t>Once the receiver received the FC_KEY frame and its underlying multicast network is ready to receive packets on the flexicast flow, it sends an FC_STATE frame to the source with the LISTEN action.</t>
        <t>The Flexicast QUIC source <bcp14>SHOULD NOT</bcp14> consider the receiver as an active member of the flexicast flow before it has received an
FC_STATE with the LISTEN action from the receiver.
This process avoids the unhappy case where the receiver wants to join the flexicast flow, but no underlying multicast distribution tree could be constructed toward the receiver (e.g., it lies in a unicast-only network).
By not considering such receiver as an active member of the group, the Flexicast QUIC source avoids considering all sent packets as lost, potentially impacting its congestion state.</t>
      </section>
      <section anchor="underlying-multicast-network">
        <name>Underlying (multicast) network</name>
        <t>If the IP destination address in the FC_ANNOUNCE frame is a multicast IP address, the receiver <bcp14>MUST</bcp14> notify the underlying network of its interest to receive multicast packets to this address. In an IP multicast network, this is done by sending an IGMP/MLD join on (S,G) in the case of single-source multicast.
If the IP destination address in the FC_ANNOUNCE frame is the unicast address of the receiver, it means that the source uses unicast-duplication.
The receiver <bcp14>MAY</bcp14> also wait to receive the FC_KEY frame of the corresponding flexicast flow to avoid
receiving packets that it will not be able to process before receiving the required TLS keys.</t>
      </section>
    </section>
    <section anchor="sec-leave">
      <name>Flexicast flow membership management</name>
      <t>Thanks to the FC_STATE frame, a Flexicast QUIC source knows the set of receivers listening to
a specific flexicast flow. Receivers <bcp14>MAY</bcp14> decide, at any point in time during the communication,
to leave the flexicast flow.</t>
      <section anchor="receiver-side-management">
        <name>Receiver-side management</name>
        <t>Receivers leave a flexicast flow by sending an FC_STATE frame with the LEAVE action.
Upon reception of this frame, the Flexicast QUIC source <bcp14>MUST</bcp14> remove the receiver
from the members of the flexicast flow, and it <bcp14>MAY</bcp14> continue transmitting data through the unicast path
with the receiver; the source <bcp14>MAY</bcp14> also decide to close the connection with the receiver, depending on the application.
The receiver <bcp14>MUST</bcp14> drop any path state for the flexicast flow regarding this flexicast flow.
The finite-state machine on the receiver-side <bcp14>MUST</bcp14> be reset to the same state as when it received
the FC_ANNOUNCE for the first time.</t>
        <t>A receiver that previously left a flexicast flow <bcp14>MAY</bcp14> attempt to join again the same flow, or another flow by
restarting the phases from <xref target="sec-join-fc-flow"/>.</t>
      </section>
      <section anchor="sec-source-side-management">
        <name>Source-side management</name>
        <t>At any point in time, the Flexicast QUIC source <bcp14>MAY</bcp14> decide to unilaterally remove a receiver from a flexicast flow, by sending an FC_STATE frame with the LEAVE action.</t>
        <t>There are two reasons to decide on the source-side to remove receivers from the flexicast flow:
- A receiver is a bottleneck on the flexicast flow, i.e., the bit-rate of the flexicast flow becomes too low because of this receiver.
  In that case, the bottleneck receiver is removed from the specific flexicast flow. The source can continue distributing the content either through
  the unicast path with this receiver, or by letting the receiver join another flexicast flow.
- A receiver experiences too many losses. Receivers send feedback to the source. Too many losses degrade the quality of experience for the application.
  To recover from such losses, there is a need for retransmissions, which can take up to several RTTs. The source <bcp14>SHOULD</bcp14> decide to remove the receiver from the
  flexicast flow and continue receiving data through unicast, even temporarilly. A reason why it would be better to continue through the unicast path
  is that the underlying IP multicast tree may be failing.</t>
      </section>
    </section>
    <section anchor="reliability">
      <name>Reliability</name>
      <t>The reliability mechanism of Flexicast QUIC uses the standard QUIC mechanisms.
This section only details the reliability mechanisms for frames sent on the flexicast flow.
This document does not modify the reliability mechanism defined in <xref target="RFC9002"/> for packets sent on the unicast path.</t>
      <t>Receivers regularly send PATH_ACK frames back to the source on their unicast path. Receivers <bcp14>MUST</bcp14> send PATH_ACK frames for packets received on the flexicast flow on their unicast path with the source.
A Flexicast QUIC source receiving an PATH_ACK from a receiver on the flexicast flow <bcp14>MUST</bcp14> close the connection with this receiver with an error of type FC_PROTOCOL_VIOLATION.
The PATH_ACK frames sent by the receivers on their unicast path include the <tt>path_id</tt> field to refer to the flexicast flow.</t>
      <t>A major change between <xref target="RFC9002"/>, and to some extent <xref target="MULTIPATH-QUIC"/> is that a Flexicast QUIC source receives
acknowledgments from multiple receivers for the same data.
A Flexicast QUIC source must wait for the acknowledgment from all receivers listening to the flexicast flow before releasing state for the transmitted data.
An acknowledgment-aggregation mechanism <bcp14>MUST</bcp14> be implemented, at least on the Flexicast QUIC source, to advance its state when all members of the flexicast flow sent PATH_ACK frames to acknowledge data sent on the flexicast flow.</t>
      <t>Bottleneck or malicious receivers may slow down, and even block the transmission of data, thus impacting the quality of service for other receivers.
Similarly to <xref target="RFC9002"/>, a Flexicast QUIC source may decide to stop the communication with a specific receiver if it does
not regularly receive PATH_ACK frames from this receiver.
A Flexicast QUIC source <bcp14>SHOULD</bcp14> remove bottleneck-inducing or malicious receivers from the flexicast flow in that case, and <bcp14>MAY</bcp14> continue transmitting data through the unicast path with these receivers instead, thus relying on <xref target="RFC9002"/>.</t>
      <t>The Flexicast QUIC source is responsible to decide whether to send retransmitted frames on the flexicast flow to all receivers, or specifically to receivers individually on their unicast path.
Receivers are not impacted by this choice since the <xref target="MULTIPATH-QUIC"/> specification allows to retransmit frames on another path than the initial path on which they were sent.
The first case would be more efficient if multiple receivers lost the same packet; the second case is more interesting for isolated losses to avoid healthy receivers receiving duplicate frames.</t>
    </section>
    <section anchor="congestion-control">
      <name>Congestion Control</name>
      <t>There are currently several possibilities regarding congestion control for Flexicast QUIC.
A first idea is to maintain constant bit-rate delivery and exposing multiple flexicast flows operating at different bit-rates.
As such, if a receiver sees degradation in its communication (e.g., congestion or increased delay in the network), it may switch to a lower bit-rate flexicast flow. However, this idea does not solve the problem of increasing the congestion in the network.</t>
      <t>The other idea outlines the possibility to take into account all receiver-specific bit-rate to chose the overall bit-rate on the flexicast flow, e.g., by requiring that the flexicast flow bit-rate is the lowest bit-rate among all receivers listening to this flexicast flow.
Since receivers regularly send PATH_ACK frames, it is possible for the source to adjust a per-receiver bit-rate (or congestion window) and use the minimum value as the value for the flexicast flow.
Of course, such method paves the way to malicious receivers decreasing on-purpose the flexicast flow bit-rate. Applications <bcp14>SHOULD</bcp14> provide to a Flexicast QUIC source a "minimum bit-rate" to ensure a minimum quality of service for the receivers.
Malicious or bottleneck receivers with a per-receiver bit-rate below this minimum bit-rate <bcp14>SHOULD</bcp14> be removed from the flexicast flow membership.
Since the Flexicast QUIC source can unilaterally evict such receivers, it can adjust the flexicast flow bit-rate without considering these receivers.</t>
      <t>A mix of both approaches is also possible. A Flexicast QUIC source may expose multiple flexicast flow, each operating at different bit-rate windows. For example, a first window would operate at a minimum bit-rate of 2 Mbps and a maximum bit-rate of 5 Mbps; another flexicast flow would operate between 5 Mbps and 10 Mbps,...
Receivers falling below the 2 Mbps bit-rate <bcp14>SHOULD</bcp14> be evicted from flexicast delivery; a Flexicast QUIC source <bcp14>MAY</bcp14> decide to continue the delivery through the unicast path.</t>
    </section>
    <section anchor="flow-control">
      <name>Flow Control</name>
      <t>Similarly to the congestion control, an aggregated flow control mechanism extends the standard QUIC flow control mechanism from <xref target="QUIC-TRANSPORT"/>.
The flexicast flow <bcp14>MUST</bcp14> respect the flow control limits of active members.
Receivers actively listening to the flexicast flow <bcp14>MUST</bcp14> send MAX_DATA and MAX_STREAM_DATA on their unicast path, similarly to <xref target="QUIC-TRANSPORT"/>.
The flexicast flow aggregates all flow control limits from active members and <bcp14>MUST</bcp14> set its limits to the minimum among all limits from the receivers.</t>
      <t>To ensure that the flow control does not violates any limit, the flow control <bcp14>MAY</bcp14> use values from different active receivers to update its flow control limits.
For example with three receivers <tt>R0</tt>, <tt>R1</tt>, and <tt>R2</tt>, the flexicast flow may update its max data using the value advertised by <tt>R0</tt>, its max stream data for stream id X using the value advertised by <tt>R1</tt>, and its max stream data for stream id Y using the value advertised by <tt>R2</tt>.</t>
      <t>The source <bcp14>MAY</bcp14> remove bottleneck receivers from the set of active members if such receivers fail to update their flow control to ensure a minimum quality of service.
In that case, the source <bcp14>MAY</bcp14> continue transmiting data to these receivers on their unicast path, again as a fall-back on unicast QUIC as defined in <xref target="QUIC-TRANSPORT"/>.</t>
      <t>Because the flow control limits are shared between multiple paths within the same connection, a receiver which previously fall backed on unicast delivery <bcp14>MAY</bcp14> rejoin a flexicast flow if its flow control limits have been updated.</t>
    </section>
    <section anchor="sec-packet-protection">
      <name>Packet protection</name>
      <t>Packet protection for QUIC version 1 is specified in <xref section="5" sectionFormat="of" target="QUIC-TLS"/>.
<xref section="4" sectionFormat="of" target="MULTIPATH-QUIC"/> further expands this design when multiple paths with different packet number spaces are used.
Because the flexicast flow is shared among multiple receivers, this document modifies the design from <xref section="4" sectionFormat="of" target="MULTIPATH-QUIC"/>.</t>
      <section anchor="protection-keys">
        <name>Protection Keys</name>
        <t>This document extends the design from <xref target="MULTIPATH-QUIC"/> by requiring that all flexicast flows use different TLS protection keys. Of course, these protections keys <bcp14>MUST</bcp14> be different from the protection keys derived during the handshake between the source and any receiver.</t>
        <t>For each flexicast flow, the Flexicast QUIC source derives new random TLS keys that will be used to encrypt and decrypt the packets.
The Flexicast QUIC source <bcp14>MUST</bcp14> derive these keys randomly, simulating a QUIC connection establishment alone.
The master secret and used algorithm is sent through the FC_KEY frame (<xref target="fc-key-frame"/>) on the unicast path to receivers joining a flexicast flow. The master secret and algorithm are used to derive the TLS decryption keys on the receivers.</t>
        <t>Since no explicit path probing phase is used in Flexicast QUIC, the receiver can use the dedicated protection key context whenever receiving a packet from the flexicast flow directly after receiving the FC_KEY frame from the source.</t>
      </section>
      <section anchor="nonce-calculation">
        <name>Nonce Calculation</name>
        <t><xref section="4" sectionFormat="of" target="MULTIPATH-QUIC"/> expands the computation of the Nonce from <xref section="5.3" sectionFormat="of" target="QUIC-TLS"/> to integrate the least significant 32 bits of the Path ID to guarantee its uniqueness.
A flexicast flow is shared among multiple receivers simultaneously, thus requiring that all receivers share the same Path ID for the same flexicast flow. Since receivers are allowed to dynamically change the flexicast flows they listen, it is impossible to ensure that all receivers use the same Path ID for the same flexicast flow.</t>
        <t>However, since each flexicast flow uses its own set of TLS keys, the computation of the Nonce is decorelated between any pair of flexicast flows, and between any flexicast flow and any unicast path with a receiver. It is therefore not mandatory anymore to use the Path ID to ensure the uniqueness of the Nonce.
As such, this document removes the Path ID from the computation of the Nounce when sending packets on the flexicast flows.</t>
      </section>
      <section anchor="key-update">
        <name>Key Update</name>
        <t>TODO in a future version of the draft.</t>
      </section>
    </section>
    <section anchor="sec-frames">
      <name>New Frames</name>
      <t>All frames defined in this document <bcp14>MUST</bcp14> only be sent in 1-RTT packets.</t>
      <t>If an endpoint receives a flexicast-specific frame in a different packet type, it <bcp14>MUST</bcp14> close the connection with an error of type FRAME_ENCODING_ERROR.</t>
      <t>Receipt of flexicast-specific frames related to a Flexicast Flow ID that is not unknown by endpoint <bcp14>MUST</bcp14> be treated as a connection error of type FC_PROTOCOL_VIOLATION.</t>
      <t>If an endpoint receives a flexicast-specific frame with a Flexicast Flow ID that it cannot process anymore (e.g., the flexicast flow might have been abandoned), it <bcp14>MUST</bcp14> silently ignore the frame.</t>
      <t>The new frames introduced below are for control-specific purpose only, and <bcp14>MUST NOT</bcp14> be sent on the Flexicast flow. Receipt of any of the following frames on the Flexicast flow <bcp14>MUST</bcp14> be trated as a connection error of type FC_PROTOCOL_VIOLATION.</t>
      <section anchor="fc-announce-frame">
        <name>FC_ANNOUNCE frame</name>
        <t>The FC_ANNOUNCE frame informs the receiver that a Flexicast flow is available or has been updated.
FC_ANNOUNCE frames <bcp14>MUST NOT</bcp14> be sent by the receiver. A Flexicast QUIC source receiving an FC_ANNOUNCE frame <bcp14>MUST</bcp14> close the connection with a connection error of type FC_PROTOCOL_VIOLATION.</t>
        <t>FC_ANNOUNCE frames are formatted as shown in <xref target="fig-fc-announce-frame-format"/>.</t>
        <figure anchor="fig-fc-announce-frame-format">
          <name>FC_ANNOUNCE Frame Format</name>
          <artwork><![CDATA[
FC_ANNOUNCE Frame {
    Type (i) = TBD-00,
    Length (8),
    Flexicast Flow ID (8..160),
    Sequence number (i),
    IP Version (8),
    Source IP (32, 128),
    Group IP (32, 128),
    UDP Port (16),
    Ack delay timer (64),
}
]]></artwork>
        </figure>
        <t>FC_ANNOUNCE frames contain the following fields:</t>
        <t>Length: An 8-bit unsigned integer containing the length of the Flexicast Flow ID. Values less than 1 and greater than 20 are invalid and <bcp14>MUST</bcp14> be treated as a connection error of type FRAME_ENCODING_ERROR.</t>
        <t>Flexicast Flow ID: A Flexicast Flow ID of the specified length.</t>
        <t>Sequence number: The monotically increasing sequence number related to the advertised Flexicast Flow ID.</t>
        <t>IP Version: An 8-bit unsigned integer containing the version of IP used to advertise the Source IP and Group IP. Values different than 4 (for IPv4) and 6 (IPv6) are invalid and <bcp14>MUST</bcp14> be treated as a connection error of type FRAME_ENCODING_ERROR.</t>
        <t>Source IP: The IP address of the multicast source, used for Single-Source Multicast.</t>
        <t>Group IP: Either an IP multicast address or the address of the receiver.</t>
        <t>UDP Port: The UDP destination port.</t>
        <t>Ack delay timer: A 64-bit unsigned integer containing the delay, in ms, between two acknowledgments from a receiver.</t>
        <t>FC_ANNOUNCE frames are ack-eliciting. If a packet containing an FC_ANNOUNCE frame is considered lost, the peer <bcp14>SHOULD</bcp14> repeat it.</t>
        <t>Sources are allowed to send multiple times FC_ANNOUNCE frames with an increasing sequence number for the same Flexicast Flow ID. New FC_ANNOUNCE frames <bcp14>MAY</bcp14> contain updated information, e.g., a new Ack delay timer.</t>
        <t>Sources are allowed to advertise multiple Flexicast flows by sending multiple parallel FC_ANNOUNCE frames with distinct Flexicast Flow IDs. The Sequence number is linked to a specific Flexicast Flow ID. The same Sequence number can be used for two distinct Flexicast Flow IDs.</t>
        <t>A Flexicast QUIC can withdraw a flexicast flow by sending an FC_ANNOUNCE frame with null Source IP and Group IPs and identifying the flexicast flow using the Flexicast Flow ID.</t>
      </section>
      <section anchor="fc-state-frame">
        <name>FC_STATE frame</name>
        <t>The FC_STATE frame informs the endpoint of the state of the Flexicast receiver in the Flexicast flow.
FC_STATE frames <bcp14>MAY</bcp14> be sent by both endpoints (i.e., receiver and source).</t>
        <t>FC_STATE frames are formatted as shown in <xref target="fig-fc-state-frame-format"/>.</t>
        <figure anchor="fig-fc-state-frame-format">
          <name>FC_STATE Frame Format</name>
          <artwork><![CDATA[
FC_STATE frame {
    Type (i) = TDB-01,
    Length (8),
    Flexicast Flow ID (8..160),
    Sequence number (i),
    Action (u64),
}
]]></artwork>
        </figure>
        <t>FC_STATE frames contain the following fields:</t>
        <t>Length: An 8-bit unsigned integer containing the length of the Flexicast Flow ID. Values less than 1 and greater than 20 are invalid and <bcp14>MUST</bcp14> be treated as a connection error of type FRAME_ENCODING_ERROR.</t>
        <t>Flexicast Flow ID: The Flexicast Flow ID of the Flexicast flow that this frame relates to.</t>
        <t>Sequence number: The monotically increasing sequence number related to the advertised Flexicast Flow ID.</t>
        <t>Action: The bit-encoded action, defined in Section <xref target="fc-state-action"/>.</t>
        <t>FC_STATE frames are ack-eliciting. If a packet containing an FC_STATE frame is considered lost, the peer <bcp14>SHOULD</bcp14> repeat it.</t>
        <t>For a given Flexicast flow (i.e., identical Flexicast Flow ID), both endpoints use their own Sequence number.</t>
        <t>A receiver sending an FC_STATE frame informs the source of its status regarding the Flexicast flow indicated by the Flexicast Flow ID.
The source <bcp14>MAY</bcp14> also send FC_STATE frames to a receiver to unilaterally change the status of the receiver within the Flexicast flow indicated by the Flexicast Flow ID.</t>
        <section anchor="fc-state-action">
          <name>FC_STATE actions</name>
          <t>This section lists the defined Actions encoded in an FC_STATE frame. An endpoint receiving an unknown value <bcp14>MUST</bcp14> treat it as a connection error of type FC_PROTOCOL_VIOLATION.</t>
          <t>JOIN (0x01): The receiver joins the Flexicast flow.</t>
          <t>LEAVE (0x02): The receiver leaves the Flexicast flow.</t>
          <t>READY (0x03): The receiver is ready to receive content on the Flexicast flow.</t>
          <t>The JOIN and READY actions are receiver-specific. These actions <bcp14>MUST NOT</bcp14> be sent inside an FC_STATE frame sent by the source. A receiver receiving an FC_STATE frame with any of the following actions <bcp14>MUST</bcp14> treat it as a connection error of type FC_PROTOCOL_VIOLATION.
The action LEAVE <bcp14>MAY</bcp14> be sent by both the receiver and the source, as detailed in <xref target="sec-leave"/>.</t>
        </section>
      </section>
      <section anchor="fc-key-frame">
        <name>FC_KEY frame</name>
        <t>The FC_KEY frame informs a receiver of the security keys used on a Flexicast flow joined by the receiver.
FC_KEY frames <bcp14>MUST NOT</bcp14> be sent by the receiver. A Flexicast QUIC source receiving an FC_KEY frame <bcp14>MUST</bcp14> close the connection with a connection error of type FC_PROTOCOL_VIOLATION.</t>
        <t>FC_KEY frames are formatted as shown in <xref target="fig-fc-key-frame-format"/>.</t>
        <figure anchor="fig-fc-key-frame-format">
          <name>FC_KEY Frame Format</name>
          <artwork><![CDATA[
FC_KEY Frame {
    Type (i) = TDB-02,
    Length(8),
    Flexicast Flow ID(8..160),
    Sequence number (i),
    Packet number (i),
    Key length (i),
    Key (..),
    Algorithm (64),
}
]]></artwork>
        </figure>
        <t>FC_KEY frames contain the following fields:</t>
        <t>Length: An 8-bit unsigned integer containing the length of the Flexicast Flow ID. Values less than 1 and greater than 20 are invalid and <bcp14>MUST</bcp14> be treated as a connection error of type FRAME_ENCODING_ERROR.</t>
        <t>Flexicast Flow ID: The Flexicast Flow ID of the Flexicast flow that this frame relates to.</t>
        <t>Sequence number: The monotically increasing sequence number related to the advertised Flexicast Flow ID.</t>
        <t>Packet number: The first packet number that the receiver must receive with this key,</t>
        <t>Key length: A var-int indicating the length of the security key.</t>
        <t>Key: Byte-sequence of the decryption key of the Flexicast flow.</t>
        <t>Algorithm: The bit-encoded algorithm used for decryption, defined in Section <xref target="fc-key-algorithm"/>.</t>
        <t>FC_KEY frames are ack-eliciting. If a packet containing an FC_STATE frame is considered lost, the peer <bcp14>SHOULD</bcp14> repeat it.</t>
        <t>The source <bcp14>MAY</bcp14> send new FC_KEY frames with an increased sequence number to notify a new decryption key.
This mechanism can be used to provide backward and forward secrecy with dynamic Flexicast groups.</t>
        <section anchor="fc-key-algorithm">
          <name>FC_KEY algorithms</name>
          <t>The algorithms and their encoding follow <xref target="RFC8446"/> and {QUIC-TLS}.
TODO: expand this section.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-further">
      <name>Discussion</name>
      <t>This document has defined a simple extension to Multipath QUIC that enables a
QUIC connection to simulatenously use unicast paths and multicast trees
to deliver the same data to a set of receivers. The proposed protocol can be extended
in different ways and improvements will be proposed in separate documents. We
briefly describe some of these possible extensions.</t>
      <t>This version of Flexicast QUIC uses the existing QUIC mechanisms to retransmit
lost frames. It is well known that Forward Erasure Correction can improve the
performance of multicast transmission when losses occur. Several authors have
proposed techniques to add Forward Erasure Correction to QUIC <xref target="QUIRL"/>, <xref target="rQUIC"/>,
<xref target="I-D.draft-michel-quic-fec"/>. FEC can be sent a priori to enable receivers
to recover from different packet losses without having to wait for retransmissions or
a posteriori by sending a repair symbol that enables different receivers to recover
different lost frames.</t>
      <t>This version of Flexicast QUIC uses a key shared between the source and all receivers
to authenticate and encrypt the data sent by the source over the multicast tree.
A malicious receiver who has received the shared key could inject fake data over
the multicast tree provided that it can spoof the IP address of the source. Techniques
have been proposed to authenticate the frames sent by the source <xref target="I-D.draft-krose-multicast-security"/>.
Subsequent documents will detail how Flexicast QUIC can be extended to support such
techniques.</t>
      <t>Multipath QUIC assumes that the congestion control mechanism operates per path. For
Flexicast QUIC, a different congestion control mechanism will be required for the
unicast paths and the multicast tree. For the former, the QUIC congestion control
mechanisms <xref target="RFC9002"/> are applicable. For the latter, multicast specific congestion
control mechanisms such as <xref target="RFC4654"/> will be required. The current prototype
uses a variant of the CUBIC congestion control.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section highlights security considerations when operating a Flexicast QUIC communication between a single source and multiple receivers. Since a unique flexicast flow is shared among multiple receivers, additional threats must be addresses compared to a one-to-one (Multipath) QUIC connection. The security considerations when falling-back on unicast are similar to <xref section="10" sectionFormat="of" target="MULTIPATH-QUIC"/>.</t>
      <t>TODO: this section will be expanded in future versions of this document.</t>
      <section anchor="malicious-receivers-in-a-flexicast-flow">
        <name>Malicious Receivers in a Flexicast Flow</name>
        <t>Malicious receivers may listen to a flexicast flow in the presence of healthy receivers. This has several impacts that are addressed in this section.</t>
        <section anchor="cycling-between-joins-and-leaves">
          <name>Cycling Between Joins and Leaves</name>
          <t>A malicious receiver may issuing cycles of FC_STATE with JOINs and LEAVEs actions to the source, thus updating the state of the Flexicast QUIC source.
Since a Flexicast QUIC source can decide to unilaterally remove receivers from a flexicast flow, the source can decide to reject FC_STATE JOINs from a malicious receiver. The source <bcp14>MAY</bcp14> send an FC_STATE frame withdrawing a flexicast flow specifically for this receiver to avoid the receiver from perpetually sending FC_STATE JOINs frames.
Additionally, applications <bcp14>SHOULD</bcp14> provide a mechanism to avoid such receivers to periodically join and leave
the same flexicast flow to saturate the Flexicast QUIC source.
The connection with such malicious receiver will fall-back on unicast delivery, thus relying on <xref target="QUIC-TRANSPORT"/> to deal with it.</t>
        </section>
        <section anchor="intentionally-decreasing-the-flexicast-flow-performance">
          <name>Intentionally Decreasing the Flexicast Flow Performance</name>
          <t><xref target="sec-source-side-management"/> mentions two reasons that could include malicious receivers wishing to degrade the overall perfomance of communication through the flexicast flow.
By letting the source unilaterally decide to remove receivers from a flexicast flow, the impact of malicious receivers is limited.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to assign three new QUIC frame types from the
"QUIC Frame Types" registry available at
https://www.iana.org/assignments/quic/quic.xhtml#quic-frame-types</t>
      <ul spacing="normal">
        <li>
          <t>TBD-00 for the FC_ANNOUNCE frame defined in <xref target="fc-announce-frame"/></t>
        </li>
        <li>
          <t>TBD-01 for the FC_STATE frame defined in <xref target="fc-state-frame"/></t>
        </li>
        <li>
          <t>TBD-02 for the FC_KEY frame defined in <xref target="fc-key-frame"/></t>
        </li>
      </ul>
      <t>IANA is requested to assign a new QUIC transport parameter
from the "QUIC Transport Parameters" registry available at
https://www.iana.org/assignments/quic/quic.xhtml#quic-transport</t>
      <ul spacing="normal">
        <li>
          <t>TBD-03 for the flexicast_support transport parameter defined in <xref target="sec-handshake"/></t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="QUIC-TRANSPORT">
          <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="QUIC-TLS">
          <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="MULTIPATH-QUIC">
          <front>
            <title>Multipath Extension for QUIC</title>
            <author fullname="Yanmei Liu" initials="Y." surname="Liu">
              <organization>Alibaba Inc.</organization>
            </author>
            <author fullname="Yunfei Ma" initials="Y." surname="Ma">
              <organization>Uber Technologies Inc.</organization>
            </author>
            <author fullname="Quentin De Coninck" initials="Q." surname="De Coninck">
              <organization>University of Mons (UMONS)</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>UCLouvain and Tessares</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <date day="23" month="April" year="2025"/>
            <abstract>
              <t>   This document specifies a multipath extension for the QUIC protocol
   to enable the simultaneous usage of multiple paths for a single
   connection.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the QUIC Working Group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/quic/.

   Source for this draft and an issue tracker can be found at
   https://github.com/quicwg/multipath.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-14"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </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="I-D.jholland-quic-multicast-05">
          <front>
            <title>Multicast Extension for QUIC</title>
            <author fullname="Jake Holland" initials="J." surname="Holland">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
         </author>
            <author fullname="Max Franke" initials="M." surname="Franke">
              <organization>TU Berlin</organization>
            </author>
            <date day="7" month="July" year="2024"/>
            <abstract>
              <t>   This document defines a multicast extension to QUIC to enable the
   efficient use of multicast-capable networks to send identical data
   streams to many clients at once, coordinated through individual
   unicast QUIC connections.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jholland-quic-multicast-05"/>
        </reference>
        <reference anchor="I-D.pardue-quic-http-mcast">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) over multicast QUIC</title>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
         </author>
            <author fullname="Richard Bradbury" initials="R." surname="Bradbury">
              <organization>BBC Research &amp; Development</organization>
            </author>
            <author fullname="Sam Hurst" initials="S." surname="Hurst">
              <organization>BBC Research &amp; Development</organization>
            </author>
            <date day="4" month="July" year="2022"/>
            <abstract>
              <t>   This document specifies a profile of the QUIC protocol and the HTTP/3
   mapping that facilitates the transfer of HTTP resources over
   multicast IP using the QUIC transport as its framing and
   packetisation layer.  Compatibility with the QUIC protocol's syntax
   and semantics is maintained as far as practical and additional
   features are specified where this is not possible.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-pardue-quic-http-mcast-11"/>
        </reference>
        <reference anchor="RFC1112">
          <front>
            <title>Host extensions for IP multicasting</title>
            <author fullname="S.E. Deering" initials="S.E." surname="Deering"/>
            <date month="August" year="1989"/>
            <abstract>
              <t>This memo specifies the extensions required of a host implementation of the Internet Protocol (IP) to support multicasting. Recommended procedure for IP multicasting in the Internet. This RFC obsoletes RFCs 998 and 1054. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="1112"/>
          <seriesInfo name="DOI" value="10.17487/RFC1112"/>
        </reference>
        <reference anchor="RFC4607">
          <front>
            <title>Source-Specific Multicast for IP</title>
            <author fullname="H. Holbrook" initials="H." surname="Holbrook"/>
            <author fullname="B. Cain" initials="B." surname="Cain"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>IP version 4 (IPv4) addresses in the 232/8 (232.0.0.0 to 232.255.255.255) range are designated as source-specific multicast (SSM) destination addresses and are reserved for use by source-specific applications and protocols. For IP version 6 (IPv6), the address prefix FF3x::/32 is reserved for source-specific multicast use. This document defines an extension to the Internet network service that applies to datagrams sent to SSM addresses and defines the host and router requirements to support this extension. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4607"/>
          <seriesInfo name="DOI" value="10.17487/RFC4607"/>
        </reference>
        <reference anchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="DIOT">
          <front>
            <title>Deployment issues for the IP multicast service and architecture</title>
            <author fullname="C. Diot" initials="C." surname="Diot">
              <organization/>
            </author>
            <author fullname="B.N. Levine" initials="B." surname="Levine">
              <organization/>
            </author>
            <author fullname="B. Lyles" initials="B." surname="Lyles">
              <organization/>
            </author>
            <author fullname="H. Kassem" initials="H." surname="Kassem">
              <organization/>
            </author>
            <author fullname="D. Balensiefen" initials="D." surname="Balensiefen">
              <organization/>
            </author>
            <date year="2000"/>
          </front>
          <seriesInfo name="IEEE Network" value="vol. 14, no. 1, pp. 78-88"/>
          <seriesInfo name="DOI" value="10.1109/65.819174"/>
          <refcontent>Institute of Electrical and Electronics Engineers (IEEE)</refcontent>
        </reference>
        <reference anchor="I-D.draft-michel-quic-fec">
          <front>
            <title>Forward Erasure Correction for QUIC loss recovery</title>
            <author fullname="François Michel" initials="F." surname="Michel">
              <organization>UCLouvain</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>UCLouvain, WEL RI</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   This documents lays down the QUIC protocol design considerations
   needed for QUIC to apply Forward Erasure Correction on the data sent
   through the network.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-michel-quic-fec-01"/>
        </reference>
        <reference anchor="QUIRL">
          <front>
            <title>QUIRL: Flexible QUIC Loss Recovery for Low Latency Applications</title>
            <author fullname="François Michel" initials="F." surname="Michel">
              <organization>UCLouvain, Ottignies-Louvain-la-Neuve, Belgium</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>WelRI, UCLouvain, Ottignies-Louvain-la-Neuve, Belgium</organization>
            </author>
            <date month="December" year="2024"/>
          </front>
          <seriesInfo name="IEEE/ACM Transactions on Networking" value="vol. 32, no. 6, pp. 5204-5215"/>
          <seriesInfo name="DOI" value="10.1109/tnet.2024.3453759"/>
          <refcontent>Institute of Electrical and Electronics Engineers (IEEE)</refcontent>
        </reference>
        <reference anchor="rQUIC">
          <front>
            <title>rQUIC: Integrating FEC with QUIC for Robust Wireless Communications</title>
            <author fullname="Pablo Garrido" initials="P." surname="Garrido">
              <organization/>
            </author>
            <author fullname="Isabel Sanchez" initials="I." surname="Sanchez">
              <organization/>
            </author>
            <author fullname="Simone Ferlin" initials="S." surname="Ferlin">
              <organization/>
            </author>
            <author fullname="Ramon Aguero" initials="R." surname="Aguero">
              <organization/>
            </author>
            <author fullname="Ozgu Alay" initials="O." surname="Alay">
              <organization/>
            </author>
            <date month="December" year="2019"/>
          </front>
          <seriesInfo name="2019 IEEE Global Communications Conference" value="(GLOBECOM)"/>
          <seriesInfo name="DOI" value="10.1109/globecom38437.2019.9013401"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="FCQUIC" target="https://dial.uclouvain.be/pr/boreal/object/boreal:301111">
          <front>
            <title>AAA</title>
            <author initials="L." surname="Navarre" fullname="Louis Navarre">
              <organization/>
            </author>
            <date year="2025" month="March"/>
          </front>
          <refcontent>ACM SIGCOMM Computer Communication Review (CCR)</refcontent>
        </reference>
        <reference anchor="I-D.draft-krose-multicast-security">
          <front>
            <title>Security and Privacy Considerations for Multicast Transports</title>
            <author fullname="Kyle Rose" initials="K." surname="Rose">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <author fullname="Max Franke" initials="M." surname="Franke">
              <organization>TU Berlin</organization>
            </author>
            <author fullname="Jake Holland" initials="J." surname="Holland">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <date day="7" month="May" year="2025"/>
            <abstract>
              <t>   Interdomain multicast has unique potential to solve delivery
   scalability for popular content, but it carries a set of security and
   privacy issues that differ from those in unicast delivery.  This
   document analyzes the security threats unique to multicast-based
   delivery for Internet and Web traffic under the Internet and Web
   threat models.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/squarooticus/draft-krose-multicast-security.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-krose-multicast-security-07"/>
        </reference>
        <reference anchor="RFC4654">
          <front>
            <title>TCP-Friendly Multicast Congestion Control (TFMCC): Protocol Specification</title>
            <author fullname="J. Widmer" initials="J." surname="Widmer"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>This document specifies TCP-Friendly Multicast Congestion Control (TFMCC). TFMCC is a congestion control mechanism for multicast transmissions in a best-effort Internet environment. It is a single-rate congestion control scheme, where the sending rate is adapted to the receiver experiencing the worst network conditions. TFMCC is reasonably fair when competing for bandwidth with TCP flows and has a relatively low variation of throughput over time, making it suitable for applications where a relatively smooth sending rate is of importance, such as streaming media. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4654"/>
          <seriesInfo name="DOI" value="10.17487/RFC4654"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
      </references>
    </references>
    <?line 790?>

<section anchor="existing-implementation-and-initial-results">
      <name>Existing implementation and initial results.</name>
      <t>The design of Flexicast QUIC is presented in a scientific paper, accepted at ACM SIGCOMM Computer Communication Review (CCR) <xref target="FCQUIC"/>.
We provide a proof of concept implementation of Flexicast QUIC, relying on Cloudflare quiche and the multipath extension.
The source code of Flexicast QUIC is freely available for experimentations at https://github.com/IPNetworkingLab/flexicast-quic.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Louis Navarre was partially funded as an F.R.S-FNRS Research Fellow.
This work has been partially supported by the Walloon Region as part of the funding of the FRFS-WEL-T strategic axis.</t>
      <t>We thank Maxime Piraux and Gorry Fairhurst for their valuable reviews.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
GDq0j46V41nhHV+CvN5vwPToe9i9KpWYKvt6BBVop2JBEXvlNlmVo07i3Ehx
Jp7QEf3++fvOY/4rZhj7y2b7/rM1kTdmL/a9cq19El2ijL9ynzzt53MMJY+9
8jk5Qlxhbh/uA5DIRoyNfv0sn389xoJXbojqApLb/AoRpENLj87yNCR//rrl
f/4DoXYgxdAfsvUjea//B5DskqV14W18hZC8gDNNnAFkYfvILD1I1lM/Z/by
lOUHxPBZ0onhh1Ed4oFAvTg9+tOpJoi/EclPPPr+K08h5OAVBpycbP2k7L7y
RG7xtZQMm+XL488buMXXsIskhmRDnKlV3Vz2aV/pztYH2q9wWWJOHfsptXN3
SA1roqqPp6qEqgX6MCNad79AdXiY52eJetwHocsd8xD8A0oKhW4cqePvnF8i
TnpSVshFD4oZ6KdpvTa+FKMI0EtcRSLamDLKZ1wt4/rLHm8E12V6DWi6aTs6
H05nWtqmkwBtoKgYX+WyriaU2CY6o1gl4kd0J5RGQW5DyCABD6u+1kFnNesX
85Ljg96SOluOY69RdE6qGrPewJ7RIDerMdsVbVfBj1eykb+406PXaZISwzPs
tm7s6FEYodCpptveVERH+dYuBnY4d5vTu4vMuDHVlfZlOKEdWVQnxQc3hNPY
I9n2OqXftRE0aWy0EEjN7tNk/XiYOYYeB45njen+BKaBV+K2xHQ8fDRtyq05
FpnjSevYotms4tom9AYaNKWlMkDHAbR7b8sRb6U7K5FWel/l0hBrVc6BUNfi
j5x3HJK+mh7DJvaQKav4JnUTyrnF5zjjBgb1asIRwAdtwZuJJZEB6zi57M+W
IgwpM1kIAGyU12sO1gu+OavFK0PpxznlO4bhEi90xLhyB0/JC+2cy5Rb0gzA
2sMajDyVPp44IzpNWnr/Du1/7pnRZmyLv7NI2zZY29FLU0ockn1+v7InbrUh
kbnrl8SM0dlaiMGAo48Xsoe2MSzCPWV2AifM4rkusbtK6PA1xm4rRZhTqjhy
/C4l5T8/fwPHiIgOfQOUTCrrJVJFH0k8l3b0N2DNZeS9/l1MRcpS3TDYYRfk
qtY0ahqscK5B5rsUSAY+pLmH0A4DNN2vas6Rn0b8bFR5DiSqrMfDS2DVjaJ1
HrbUFGhWIEzGz+gxkspkh/rNAdnDQOeomedL19nATiQqXqKuk2n5wWRO+7x2
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

-->

</rfc>
