<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-navarre-quic-flexicast-03" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.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-03"/>
    <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="2026" month="September" day="14"/>
    <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, while offering the native reliability and security features of the protocol. 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-08"/>.
To our knowledge, these extensions have not been fully implemented and deployed.
Additionally, these solutions suggest to share a QUIC connection between multiple receivers from a specific source, as well as individual connections.
This design requires applications to handle two distinct connections in case of packet losses and multicast failures.</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 using a per-path IV construct.
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 using 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 where 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 unicast handshake, similarly to 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. It remains open during the whole
flexicast session 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 multicast flow. A multicast flow is a unidirectional multipath path from a source
to a group of receivers. An important characteristic of a multicast 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 multicast flow.</t>
      <t>The source advertises the existence of a multicast flow through the FC_ANNOUNCE frame, which is sent on the unicast path with the receiver.
This frame contains flow-specific information, such as the destination UDP port and IP address used by the source to send the packets, and the Flexicast Flow ID, i.e., the equivalent of the Connection ID for the multicast flow.
When a receiver joins a specific multicast flow, the source additionally sends an FC_KEY frame, which contains the secret required to derive the set of TLS keys used to decrypt packets of the multicast flow.</t>
      <t>Flexicast QUIC supports two types of multicast flows. The first type multicast 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.
The FC_ANNOUNCE frame contains the IP address of the multicast group the source uses to send the data to the receivers.
The Flexicast QUIC source uses this multicast 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 multicast 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 multicast 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 multicast flow where it replicates each packet
towards each receiver. It also sends an FC_ANNOUNCE frame to advertise the multicast flow,
using the receiver's IP address as a destination instead of a multicast address.</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 multicast flow from the source to a set of receivers relying on a multicast distribution tree</name>
        <artwork><![CDATA[
+----------------------------------------+
|   +----------------------------+       |    =======> multicast flow
|   |                            |       |
|   |                            |       |    <------> unicast path
|   v      239.239.23.35:4433    v       |
+-> S ==============+==========> R1      |
    ^               \\                   v
    |                +=================> R2
    |
    +----------------------------> R3
]]></artwork>
      </figure>
      <t>Transitions between sending application data on a multicast flow and a unicast path is seamless thanks to the underlying Multipath QUIC extension.
At any point in time, if the network conditions of a receiver of a multicast flow degrade,
e.g., because the underlying multicast tree fails or because the receiver moves into a
non-multicast network, it can leave the multicast flow and continue receiving content
through its unicast path.</t>
      <t>Flexicast QUIC offers full reliability by retransmitting lost frames either to all receivers
on the multicast 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 multicast flow, as one of the Multipath QUIC paths.
The multicast 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 multicast 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 multicast 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 multicast flow through the IP multicast address provided by the source.</t>
        <t>Furthermore, the data received over the multicast 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 multicast 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 multicast flow are
encrypted and authenticated. However, these packets are not encrypted using
the TLS keys derived during the QUIC connection establishment since they are unique to the receiver. To secure the transmission of Flexicast QUIC
packets along the multicast 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.
The security questions related to the delivery of the TLS key secrets through the FC_KEY frame are discussed in <xref target="sec-security-aspect"/>.</t>
        <t><xref target="sec-packet-protection"/> gives more details on the modifications to <xref target="MULTIPATH-QUIC"/> to
protect packets sent on the multicast 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 0xedf3): 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.
The support of the flexicast extension is conditioned to the support of the multipath extension, as defined in <xref target="MULTIPATH-QUIC"/>.
As a result, endpoint wishing to support the Flexicast extension <bcp14>MUST</bcp14> support <xref target="MULTIPATH-QUIC"/>.</t>
        </li>
      </ul>
      <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.</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 multicast 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 multicast 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 multicast 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
multicast flow. The receiver returns an FC_STATE(LISTEN) frame to indicate that it receives frames
over the multicast flow.</t>
      <figure anchor="fig-join-flexicast-flow">
        <name>Multicast flow announcement and join</name>
        <artwork><![CDATA[
Source (Unicast path)                         Receiver                      Source (multicast flow)

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

FC_ANNOUNCE         ------------->
                    <-------------      FC_STATE(JOIN)
FC_KEY              ------------->
                    <-------------    FC_STATE(LISTEN)

                                                          <-------------    STREAM
                    <-------------    PATH_ACK
]]></artwork>
      </figure>
      <section anchor="flexicast-flow-announcement">
        <name>Flexicast Flow Announcement</name>
        <t>A Flexicast QUIC source announces a multicast flow using the FC_ANNOUNCE frame (see <xref target="fc-announce-frame"/>).
The initial Connection ID derived during connection establishment between the source and the receiver cannot be reused on the multicast flow since it is unique for each receiver.
On a multicast 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 multicast flow. The Flexicast Flow ID <bcp14>MUST NOT</bcp14> be empty, as of <xref target="MULTIPATH-QUIC"/> specification. Using a Flexicast Flow ID, a multicast 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 multicast flow and sends this value to receivers.</t>
        <t>Through the FC_ANNOUNCE frame, the source advertises the Flexicast Flow ID of the multicast flow to listen to.
The advertised Flexicast Flow ID serves as the Destination Connection ID for packets sent on the multicast flow.
_TBD: how to avoid colission.</t>
        <t>The FC_ANNOUNCE frame also contains the source address, destination address and UDP destination port number of the
multicast flow. If the destination address is an IP multicast address, then the multicast 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.
_TBD: how to avoid colission with an already bound UDP destination port.</t>
        <t>The source <bcp14>MAY</bcp14> advertise multiple distinct multicast flows to a given receiver, i.e., multicast flows with
distinct Flexicast Flow ID.
The source <bcp14>MAY</bcp14> advertise updated information about a specific multicast flow by sending new FC_ANNOUNCE frames with increased sequence numbers.
Upon reception of a new FC_ANNOUNCE frame updating information of an existing multicast 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 multicast 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 multicast 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 multicast flow.
After receiving an FC_ANNOUNCE frame advertising a multicast flow, a receiver <bcp14>MAY</bcp14> decide to join it.
For example, the source can advertise multiple flows disseminating the same video stream in different qualities, letting the receiver choose the appropriate quality.
Due to the scalability benefits from the point of view of the source and the network, it is encouraged that receivers do join the multicast flow.
Multicast 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 multicast flow it wants to join and the JOIN action.</t>
        <figure anchor="fig-join-fsm">
          <name>Receiver-side finite-state machine for a given multicast flow ID</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 multicast flow.
The frame contains an indication on the current packet number sequence such that the receiver can correctly reconstitute the full packet number when receiving a QUIC packet on the flexicast flow
The receiver <bcp14>SHOULD NOT</bcp14> process packets with a lower packet number, and applications <bcp14>SHOULD</bcp14> transmit through the unicast path any application data required for the receiver to correctly process subsequent packets received on the multicast flow ID.
Starting from the advertised first packet number of interest, the source <bcp14>MUST</bcp14> retransmit on any path any 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 multicast 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 multicast flow before it has received an
FC_STATE with the LISTEN action from the receiver.
This process avoids the unlikely case where the receiver wants to join the multicast 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 multicast 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>Multicast flow membership management</name>
      <t>Thanks to the FC_STATE frame, a Flexicast QUIC source knows the set of receivers listening to
a specific multicast flow. Receivers <bcp14>MAY</bcp14> decide, at any point in time during the communication,
to leave the multicast flow.</t>
      <section anchor="receiver-side-management">
        <name>Receiver-side management</name>
        <t>Receivers leave a multicast 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 multicast 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 multicast flow regarding this multicast 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 multicast 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 multicast 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 multicast flow:
- A receiver is a bottleneck on the multicast flow, i.e., the bit-rate of the multicast flow becomes too low because of this receiver.
  In that case, the bottleneck receiver is removed from the specific multicast flow. The source can continue distributing the content either through
  the unicast path with this receiver, or by letting the receiver join another multicast 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
  multicast 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 multicast 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 multicast flow on their unicast path with the source.
A Flexicast QUIC source receiving an PATH_ACK from a receiver on the multicast 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 multicast 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 multicast 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 multicast flow sent PATH_ACK frames to acknowledge data sent on the multicast 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 multicast 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 multicast 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 multicast 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 multicast 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 multicast flow, e.g., by requiring that the multicast flow bit-rate is the lowest bit-rate among all receivers listening to this multicast 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 multicast flow.
Of course, such method paves the way to malicious receivers decreasing on-purpose the multicast 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 multicast flow membership.
Since the Flexicast QUIC source can unilaterally evict such receivers, it can adjust the multicast flow bit-rate without considering these receivers.</t>
      <t>A mix of both approaches is also possible. A Flexicast QUIC source may expose multiple multicast 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 multicast 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 multicast flow <bcp14>MUST</bcp14> respect the flow control limits of active members.
Receivers actively listening to the multicast flow <bcp14>MUST</bcp14> send MAX_DATA and MAX_STREAM_DATA on their unicast path, similarly to <xref target="QUIC-TRANSPORT"/>.
The multicast 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 multicast 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 multicast 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 multicast 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 multicast 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 multicast 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 multicast 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 multicast 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 multicast flow is shared among multiple receivers simultaneously, thus requiring that all receivers share the same Path ID for the same multicast flow. Since receivers are allowed to dynamically change the multicast flows they listen, it is impossible to ensure that all receivers use the same Path ID for the same multicast flow.</t>
        <t>However, since each multicast flow uses its own set of TLS keys, the computation of the Nonce is decorelated between any pair of multicast flows, and between any multicast 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 multicast 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 multicast 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 Multicast flow. Receipt of any of the following frames on the Multicast 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 Multicast 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: A variable-length integer indicating the sequence of the frame. The number is monotonically increasing within a QUIC connection and is chosen by the sender. It helps the receiver to order FC_ANNOUNCE frames by recency. A receiver <bcp14>SHOULD</bcp14> ignore frames with a Sequence Number lower or equal to the highest Sequence Number received.</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 Multicast 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 multicast flow by sending an FC_ANNOUNCE frame with null Source IP and Group IPs and identifying the multicast flow using the Flexicast Flow ID.
Upon reception of a new FC_ANNOUNCE frame updating information of an existing multicast flow with an increased sequence number compared to the last received FC_ANNOUNCE frame, a receiver <bcp14>MUST</bcp14> update multicast flow information.</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 Multicast 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 Multicast 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 Multicast 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 Multicast 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 Multicast 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 Multicast flow.</t>
          <t>LEAVE (0x02): The receiver leaves the Multicast flow.</t>
          <t>LISTEN (0x03): The receiver is ready to receive content on the Multicast flow.</t>
          <t>The JOIN and LISTEN 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 Multicast 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 Multicast 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 Multicast 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 multicast 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="sec-security-aspect">
        <name>Sending the TLS key secrets in FC_KEY frames</name>
        <t>TODO: discuss here the potential issues by sending the TLS key secrets in the FC_KEY frames.
I don't think there is any problem since the secrets are sent through a secure channel.</t>
      </section>
      <section anchor="malicious-receivers-in-a-flexicast-flow">
        <name>Malicious Receivers in a Flexicast Flow</name>
        <t>Malicious receivers may listen to a multicast 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 multicast 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 multicast 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 multicast 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 multicast flow.
By letting the source unilaterally decide to remove receivers from a multicast 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>Managing multiple paths for a QUIC connection</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 WELRI</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="17" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies a multipath extension for the QUIC protocol
   to enable the simultaneous usage of multiple paths for a single
   connection.  It introduces explicit path identifiers to create,
   delete, and manage multiple paths.  This document does not specify
   address discovery or management, nor how applications using QUIC
   schedule traffic over multiple paths.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-21"/>
        </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-08">
          <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>
            <author fullname="Kyle Rose" initials="K." surname="Rose">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <date day="2" month="January" year="2026"/>
            <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-08"/>
        </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 (GLOBECOM)" value="pp. 1-7"/>
          <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 800?>

<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 two proof-of-concept implementations of Flexicast QUIC clients and servers in different programming languages to demonstrate interoperability:
- Based on Cloudflare quiche (Rust): https://github.com/IPNetworkingLab/flexicast-quic. Complete support of Flexicast QUIC client and server
- Based on picoquic (C): https://github.com/resowifix/picoquic_flexicast. Complete support of Flexicast QUIC client. Working Flexicast QUIC server with DATAGRAM frames only (i.e., no reliability guaranteed on the multicast flow).</t>
      <t>Moreover, we are working to extend the QUIC Interop Runner to include basic tests for Flexicast QUIC. The project is available: https://github.com/resowifix/quic-interop-runner/tree/flexicast.</t>
      <t>Finally, we are working on extending the Wireshark project to support Flexicast frames decoding: https://gitlab.com/resowifix/wireshark.</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 Ambroise Sirven (resowifix) for his contributions to the proofreading of the draft, for his implementation of Flexicast QUIC in picoquic, and for his extensions of Wireshark and the QUIC Interop Runner for Flexicast support.</t>
      <t>We thank Maxime Piraux and Gorry Fairhurst for their valuable reviews.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963bbVrrYfzwFKq/VkU5IWpKVTKLJ5BxZkhPN6OJKcjyz
eloHJDdFxCDAAUDJPLb7LH2WPlm/275ig1I8c05XV6s140gksC/f/u63PRwO
kzZvC3WYbr0q1Id8kjVt+l/enB0fppNqMc7LvLxLVyV/npXTdLEqWv4rL9Ms
beD7QtEb8EJZqkmbV+VWko3HtbrHUY+H+OVWMsladVfV68NUfVgmybSalNkC
5p3W2awdltl9Vtdq+LdVPhnO9EqGuy+SZjVe5E0Do7brJTx/dnr7Kk2fpVnR
VDB+Xk7VUsE/Zbs1SLfUNG+rOs8K/OPs6CX8p6rht+vbV1tJuVqMVX2YTGEp
hwkst1Fls2oO07ZeqQRW+yLJapXBqLd1VjbLqm63koeqfn9XV6slfMw7ea/W
8OH0MEmHKa4X/2vAgn+Y9Sf3qlzBVGnqj5CmvJettzA4QvhH/Bo/X2R5AZ/j
sP+Sq3Y2quo7/DyrJ3P4fN62y+bw+XN8DD/K79VIP/YcP3g+rquHRj3HAZ7j
i3d5O1+N4dWiWuVNmT3fBG98oQDgNO1hkmSrdl7VtMt0tioKPq5zHCa95Nfh
8RTge5eV+b9lePCH6ZtjeOI+y0v6blKtyhbP/KUq7vLVAj+jLxRvlBY1ksX8
y2pS8LujsQqmvSry+1zV6csKHoazXm2ePP3P6dvT8+uz6CLcBVQ87mhsx/WX
kZRVvYDh7+kYr18d7+/tfYe/4kkOb6+PLm9eX13fHqb1bPLd7u6u+eb8Rn+2
B59dvDm/PXt9dPvTkInrbHhCB8cHQNizzNo5T/HtwcE3cAB5OXPnxld+nVdF
AWTovMZ08q1+YpnV05WcK2LLcIEPyNr39vb25deDb3Z/L79+t//dC/z15OwK
9nFydTba2x3t7e1+9/ybr0ff7n239/sDGZxxZ5FP5qoQ1FETAcb1uf/u7eXp
7Wh/d/9g9OLg6xe///o7eKzmzbuP/Xh+9fL0+OrixbcHL34Pz+99N/pud+/F
AUHt1TG9QAem2dTR0dEWfWDwk36G8t8U+FLeAgMAsj4fmQ+bVc2I5GIu/mzC
bOITKezha2RE+EmtZsA2WkAUMy+s6PgivTn7ETZxkR5Xi+WqBUSFXxbENxEz
02sFWPaQbh8fX+/w6tusvlNmFEPYU1j5yEXA58v6+bgCrlQ8r8a/AnuVvw5f
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
iguASuk+Vwy9z9GQsffUm7tdvNAMsIRSDdtqiG1Btw3i74SpBvqa+g1gkfrF
TuUMVbxwXRtXtZkrZHd7KhtYG3PVMIMerKKxYuHnRzamj5pmCtIRTyQIokl4
p3heBsqx9MkLrg7XK5JbxlPTt9c0oIXDaVbKi4D2zNcG7he8pA2bsv6ODL+S
Gq1IQ7FybarxbWcKPVQm/SJSncGf6ZvtkcxKVfDubS2zrWWkVJLwOt6Lno4w
9o6bbtGQuYa20bZYp08E4g1do9KYVg/cfUN3HaotZtokVUf5hj0crydUGPtS
yOlPFfdAn6bn5MRM4iISV4/HQm0kYAjVyL3VTjdn9ErKUOiNa4yrz+uSJQnm
Jk66IUzo+K103XZfKS6KpM1NFIPKu24PRUd4+qPVigS/2SzvU4/SgZXXfs7Y
jnEXKca7o1cCel1aWEi5vbVMLxHPY0BLAn66VC03cdHk01k608qRYXCUT7qh
X0DmyFAzd1CfiOYq6ppTWbW5UYf8qYmxnbpNapoMeI9WaXqO/zbikuQuChF9
DvlbtPBQ1+/F+vR0Lp0kww9ojO9Za4WAzsg9L1BLT5TX1iNwAL22RgwWlmxo
G/o5XfCojd+Mk8o0Rf3kDmex7hDOfexuY0bd34NsKWNK+WLVrVkKCyBe+q0n
datol7g6fRWfRGbMtciui+wml/JpSmUDgB9dHgW6hogWUFoykCf0QM41K6Cx
iCxuqESPS5PR8cLl79wqH3QfW4CbbNFX7HhFr3KzhSE+bOS5dvKIszaZt+2y
OXz+/OHhYYRzj6r67jlPRHrzc7T/6J/Rh3m7KJ6xPUjOXpozSdKhpNGafKRu
ColXFRu5q9cMsucO4rKWcATvOi3z+r77uo0DhC87ZWuoAG6CdmYhHblz3bZs
Zojfmkdem2vZ/7GgN4tILORf2G7EmljfaeslsmgfHIh1pmiS4DEcDsk7h5h6
qh0lpqtdZjNLpV0VCGcgiEY8jFJI2rWX6coDVAVaiZemDXWq4jqAbEmXeEww
HwlV2DY9Or5Ib85+PL66uABawVoaWPqxR+nXii5/2z4+vt6Brbw61iriW2X7
wjyQz7GaDeF/+rJkfzdNZLWgUpDdyBfZ1loxcrwYdQVsabFA4BRZebcCviet
hhd0mQK1AMAGWmQPcIMj7CD8MpNA2XFRraazAlUcPFqA3fY1KOM7h6lGjTtg
06vxCNjb87PXl9xNCeY7z8bPbXEIYQhBCDibMmZr35acHbmLWeaTCkcCYMYX
AEdXPcBZfXiuH31n1vAbph+lb3kTHalIS2LJhC0wfrw+urBFHMCXJXuiRL5s
m6SawsGe3qKYL3VR1aqiqrcH7i8mcCS/FVn81uw94xNLr1cgmGsuamQpNQaZ
OEnBcm+bWI8x7SQlxcot13gEmkTVgifDmmZ9jqa5PWEMGuSi0QQbwLgTbUAL
tLdgG6MV+N4sxfFk2BWb4i92gXtLhEUHS3zQg5LwOvJTb5OPhxwXUNM/boGG
0iiM8Z1XK4DBJQChxuVmeIdPLVdxzFZkofE1IK9G16Ob4avL6xug5kZlNeg/
r1Rh2+XSvRem3MWOIpuygeW3mIxKTOGOOBRPaaL1K+lMLxr59aub4dvT8yFe
ToqkegdnmwGzgy2+pWJLMLWOFuO6wozWm7zGdJ5tA5IdwoA5R2DMnSrGLCB+
g2kQzozktxqY9wJ+GmGXliYHOkZCb1qHN75lDzzbgMY+vgro3K1eYBsjlb7O
62z1gTNNqxok1qssr+crjO2JiMlrSloRZy+yXwDZ/wYpyqrHJsoAAA==

-->

</rfc>
