Skip to content

Commit 624327c

Browse files
committed
Taking into account Olivier's comments
1 parent 978fbf3 commit 624327c

File tree

1 file changed

+29
-17
lines changed

1 file changed

+29
-17
lines changed

draft-navarre-quic-flexicast.md

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,18 @@ informative:
5050
I-D.draft-michel-quic-fec:
5151
QUIRL: DOI.10.1109/TNET.2024.3453759
5252
rQUIC: DOI.10.1109/GLOBECOM38437.2019.9013401
53+
FCQUIC:
54+
title: "AAA"
55+
author:
56+
-
57+
initials: L.
58+
surname: Navarre
59+
fullname: Louis Navarre
60+
date: 2025-03
61+
refcontent:
62+
- "ACM SIGCOMM Computer Communication Review (CCR)"
63+
target:
64+
"https://dial.uclouvain.be/pr/boreal/object/boreal:301111"
5365
I-D.draft-krose-multicast-security:
5466
RFC4654:
5567
RFC9002:
@@ -155,13 +167,13 @@ The IP destination address of this new, shared path MAY be a multicast address,
155167
so that all receivers attached to this multicast tree receive the same packet.
156168

157169
The case were the IP destination address is _not_ an IP multicast address is discussed
158-
later in this document. In this case, Flexicast QUIC uses packet replication at the
159-
source, e.g., using sendmmsg, using the unicast destination address of the receivers.
170+
later in this document. In this case, Flexicast QUIC uses packet replication at the
171+
source, e.g., using sendmmsg, using the unicast destination address of the receivers.
160172
This solution scales at the source because Flexicast QUIC generates and encrypts only one packet,
161173
and duplicating the bytes is straightforward.
162174

163175
A Flexicast QUIC connection starts with a handshake like a regular QUIC
164-
connection. Receivers R1, R2 and R3 establish a connection to source S using the
176+
connection. Receivers R1, R2 and R3 establish a connection to source S using the
165177
flexicast_support and the initial_max_path_id transport parameters.
166178
The initial path between each receiver and the source are individually secured using
167179
the keys derived at connection establishement. They remain open during the whole
@@ -178,12 +190,12 @@ all the packets sent by the source over this flow are secured using keys that ar
178190
shared between the source and the receivers attached to the flexicast flow.
179191

180192
Flexicast QUIC supports two types of flexicast flows. The first type flexicast flow
181-
is an IP multicast tree, as illustrated in {{fig-flexicast-2}}. The source relies
193+
is an IP multicast tree, as illustrated in {{fig-flexicast-2}}. The source relies
182194
on an underlying IP multicast network to create an IP multicast tree and selects a set
183-
of encryption and authentication keys. It advertises a flexicast flow using the
184-
FC_ANNOUNCE frame to the receivers. The FC_ANNOUNCE frame contains information such
185-
as the Flexicast Flow ID, i.e., the equivalent of the Connection ID for the flexicast
186-
flow, and the source and multicast group IP addresses that the receivers use to join the
195+
of encryption and authentication keys. It advertises a flexicast flow using the
196+
FC_ANNOUNCE frame to the receivers. The FC_ANNOUNCE frame contains information such
197+
as the Flexicast Flow ID, i.e., the equivalent of the Connection ID for the flexicast
198+
flow, and the source and multicast group IP addresses that the receivers use to join the
187199
underlying IP multicast tree. The source then uses the FC_KEY frame
188200
to avertise the shared keys to each receiver. They can now receive and decrypt
189201
the data sent by the source along the multicast tree.
@@ -196,7 +208,7 @@ e.g. when some data was missing at only one receiver.
196208
Flexicast QUIC supports non-multicast-capable receivers in two different ways. A first
197209
approach is to use the unicast path to deliver the data to such receivers. This implies
198210
that each data must be authenticated and encrypted using the TLS keys derived over each
199-
unicast path. This is illustrated in {{fig-flexicast-2}} where receiver R3 lies in
211+
unicast path. This is illustrated in {{fig-flexicast-2}} where receiver R3 lies in
200212
a non-multicast-capable network and relies on unicast delivery.
201213

202214
This is not efficient when there are multiple receivers.
@@ -223,13 +235,13 @@ an FC_KEY frame containing the shared keys.
223235
~~~~~~~~~~~~~~~~~~~~~~~~~~~
224236
{: #fig-flexicast-2 title="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"}
225237

226-
At any point in time, if the network conditions of a receiver of a flexicast flow degrade,
227-
e.g., because the underlying multicast tree fails or because the receiver moves into a
228-
non-multicast network, it can leave the flexicast flow and continue receiving content
238+
At any point in time, if the network conditions of a receiver of a flexicast flow degrade,
239+
e.g., because the underlying multicast tree fails or because the receiver moves into a
240+
non-multicast network, it can leave the flexicast flow and continue receiving content
229241
through its unicast path. The seamless transition between a flexicast flow and a unicast path
230242
is possible because these are Multipath QUIC paths.
231243

232-
Flexicast QUIC offers full reliability by retransmitting lost frames either to all receivers
244+
Flexicast QUIC offers full reliability by retransmitting lost frames either to all receivers
233245
on the flexicast flow, or per-receiver using their unicast path.
234246

235247
## Extensions to Multipath QUIC.
@@ -261,9 +273,9 @@ Because Flexicast QUIC uses Multipath QUIC, ACK frames are replaced by PATH_ACK
261273
Flexicast QUIC receivers MUST send acknowledgments to the source using PATH_ACK frames
262274
sent on their unicast path.
263275

264-
In single-source multicast, an IP multicast group is represented by the (S,G) tuple,
276+
In single-source multicast, an IP multicast group is represented by the (S,G) tuple,
265277
respectively denoting the IP address of the multicast source and the multicast group.
266-
To join the flexicast flow, the receivers must be informed of the (S,G) tuple of the
278+
To join the flexicast flow, the receivers must be informed of the (S,G) tuple of the
267279
underlying IP multicast tree. The server uses the FC_ANNOUNCE frame to
268280
advertise the identifier of the multicast tree that the receivers can join.
269281

@@ -281,7 +293,7 @@ protect packets sent on the flexicast flow.
281293

282294
# Handshake Negotiation and Transport parameter {#sec-handshake}
283295

284-
Flexicast QUIC defines a new transport parameter, used to negotiate the use of
296+
Flexicast QUIC defines a new transport parameter, used to negotiate the use of
285297
the flexicast extension during the connection handshake, as specified in {{QUIC-TRANSPORT}}.
286298
The new transport parameter is defined as follows:
287299

@@ -761,7 +773,7 @@ https://www.iana.org/assignments/quic/quic.xhtml#quic-transport
761773

762774
# Existing implementation and initial results.
763775

764-
The design of Flexicast QUIC is presented in a scientific paper, accepted at ACM SIGCOMM Computer Communication Review (CCR).
776+
The design of Flexicast QUIC is presented in a scientific paper, accepted at ACM SIGCOMM Computer Communication Review (CCR) {{FCQUIC}}.
765777
We provide a proof of concept implementation of Flexicast QUIC, relying on Cloudflare quiche and the multipath extension.
766778
The source code of Flexicast QUIC is freely available for experimentations at https://github.com/IPNetworkingLab/flexicast-quic.
767779

0 commit comments

Comments
 (0)