-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdraft-huitema-quic-mpath-option-00.txt
448 lines (301 loc) · 17.5 KB
/
draft-huitema-quic-mpath-option-00.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
Network Working Group C. Huitema
Internet-Draft Private Octopus Inc.
Intended status: Standards Track October 20, 2020
Expires: April 23, 2021
QUIC Multipath Negotiation Option
draft-huitema-quic-mpath-option-00
Abstract
The initial version of QUIC provides support for path migration. In
this draft, we argue that there is a very small distance between
supporting path migration and supporting simulatneous traffic on
multipath. Instead of using an implicit algorithm to discard unused
paths, we propose a simple option to allow explicit management of
active and inactive paths. Once paths are explicitly managed, pretty
much all other requirements for multipath support can be met by
appropriate algorithms for scheduling transmissions on specific
paths. These algorithms can be implemented on the sender side, and
do not require specific extensions, except maybe a measurement of one
way delays.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 23, 2021.
Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
Huitema Expires April 23, 2021 [Page 1]
Internet-Draft QUIC Multipath Option October 2020
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Path Management Requirement . . . . . . . . . . . . . . . . . 3
3. Path Management Extension . . . . . . . . . . . . . . . . . . 4
3.1. Path Management Support Transport Parameter . . . . . . . 4
3.2. PATH_IDENTIFICATION Frame (TBD) . . . . . . . . . . . . . 5
3.3. PATH_STATUS Frame (TBD) . . . . . . . . . . . . . . . . . 6
4. Sender side algorithms . . . . . . . . . . . . . . . . . . . 6
4.1. Packet Numbers and Acknowledgements . . . . . . . . . . . 6
4.2. Congestion Control and Error Recovery . . . . . . . . . . 7
5. Security Considerations . . . . . . . . . . . . . . . . . . . 7
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8
8. Normative References . . . . . . . . . . . . . . . . . . . . 8
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8
1. Introduction
The QUIC Working Group is debating how much priority should be given
to the support of multipath in QUIC. This is not a new debate. The
the QUIC transport [I-D.ietf-quic-transport] includes a number of
mechanisms to handle multiple paths, including the support for NAT
rebinding and for explicit migration.
The processing of received packets by QUIC nodes only requires that
the connection context can be retrieved using the combination of IP
addresses and UDP ports in the IP and UDP headers, and connection
identifier in the packet header. Once the connection context is
identified, the receiving node will verify if the packet can be
successfully decrypted. If it is, the packet will be processed and
eventually an acknowledgement will inform the sender that it was
received.
In theory, that property of QUIC implies that senders could send
packets using whatever IP addresses or UDP ports they see fit, as
long as they carry a valid connection ID, and are properly encrypted.
Senders can, indeed SHOULD, use the Path Challenge and Response
mechanism to verify that the path is valid before sending packets,
but even that is optional. The NAT rebinding mechanisms, for
example, rely on the possibility of receiving packets without a
Huitema Expires April 23, 2021 [Page 2]
Internet-Draft QUIC Multipath Option October 2020
preliminary Path Challenge. However, in practice, the sender's
choice of sending paths is limited by the path migration logic in
[I-D.ietf-quic-transport].
Path migration according to [I-D.ietf-quic-transport] is always
initiated by the node in the client role. That node will test the
validity of paths using the path challenge response mechanism, and at
some point decide to switch all its traffic to a new path. The node
in the server role will detect that data traffic (i.e., ack eliciting
frames) is sent on a new path, and on detecting that, will switch its
own traffic to that new path. After that, client and server can
release the resource tied to the old path, for example by retiring
the connection identifiers, releasing the memory context used for
managing per path congestion, or forgetting the IP addresses and
ports associated with that path. By sending data on a new path, the
client provides an implicit signal to discard the old path. If the
client was to spread data on several paths, the server would probably
become confused.
This draft proposes an explicit mechanism for replacing the implicit
signalling of path migration through data transmission, by means of a
new PATH_OPTION frame.
2. Path Management Requirement
Implicit path management, as specified in [I-D.ietf-quic-transport],
fulfills two goals: it direct a peers to switch sending through a new
preferred path, and it allows the peer to release resources
associated with the old path. Explicit path management will have to
fulfill similar goals: provide indications to the peer regarding
preferred paths for receiving data; and, signal to the peer when
resource associated with previous paths can be discarded.
We cannot mandate that path management signals be always carried on
the path that they affect. For example, consider a node that wants
to abandon a path through a Wi-Fi network because the signal strength
is fading. It will need to signal its peer to move traffic away from
that path, but there is no guarantee that a packet sent through the
old fading path will be promptly received. It is much preferable to
send such management signals on a different path, for example through
a cellular link. But if path management signals can be sent on
arbitrary paths, they need to identify the path that they manage.
Neither addresses nor connection identifiers are good identifiers of
paths. Because of NAT, addresses and ports can be changed during the
transfer of packets from source to destination. Multiple connection
identifiers can be used over the lifetime of a path, and there is
also no strict requirement that a given connection identifier be used
Huitema Expires April 23, 2021 [Page 3]
Internet-Draft QUIC Multipath Option October 2020
on a single path. On the other hand, one can imagine an inband "path
identification" frame that establishes an identifier for a specific
path. That identifier can then be used in other path management
frames.
The path management frames provides directions on how to use existing
paths. We could imagine a number of variations, but the simplest one
would be:
o Abandon a path, and release the corresponding resource.
o Mark a path as "available", i.e., allow the peer to use its own
logic to split traffic among available paths.
o Mark a path as "standby", i.e., suggest that no traffic should be
sent on that path if another path is available.
We could also envisage marking a path as "preferred", suggesting that
all traffic would be sent to that path, but the same functionality is
achieved by marking only one path as available.
There might be a delay between the moment a path is validated through
the challenge response mechanism, identified using path
identification frames, and managed using path management frames.
During that delay, the following conventions apply:
o If a path is validated but no ack-eliciting frames or path
management frames are received, the path is placed in the
"standby" state.
o If ack-eliciting frames are received on a path before path
management frames, the path is placed in the "available" state.
3. Path Management Extension
The path management extension is negotiated by means of the
"enable_path_management" transport parameter. When support is
negotiated, the peers can send or receive the PATH_IDENTIFICATION and
PATH_STATUS frames.
3.1. Path Management Support Transport Parameter
The use of the PATH_IDENTIFICATION and PATH_STATUS transport frame
extension is negotiated using a transport parameter:
o "enable_path_management" (TBD)
Huitema Expires April 23, 2021 [Page 4]
Internet-Draft QUIC Multipath Option October 2020
The "enable_path_management" transport parameter is included if the
endpoint wants to receive or accepts PATH_IDENTIFICATION and
PATH_STATUS frames for this connection. This parameter is encoded as
a variable integer as specified in section 16 of
[I-D.ietf-quic-transport]. It can take one of the following three
values:
1. I would like to send PATH_IDENTIFICATION and PATH_STATUS frames
2. I am able to process PATH_IDENTIFICATION and PATH_STATUS frames
3. I am able to process PATH_IDENTIFICATION and PATH_STATUS frames
and I would like to send them.
Peers receiving another value SHOULD terminate the connection with a
TRANSPORT PARAMETER error.
A peer that advertises its capability of sending PATH_IDENTIFICATION
and PATH_STATUS frames using option values 1 or 3 MUST NOT send these
frames if the other peer does not announce advertise its ability to
process them by sending the enable_path_management TP with option 1
or 3.
3.2. PATH_IDENTIFICATION Frame (TBD)
The PATH_IDENTIFICATION frames carry a single identifier, the path
identifier. " PATH_IDENTIFICATION Frame { Path Identifier (i) } " The
frame carries the identifier of the path over which it is received,
as defined by the peer sending data on that path. The identifier is
a positive integer lower than 2^62.
PATH_IDENTIFICATION frames are ACK-eliciting.
Due to delays and retransmissions, several PATH_IDENTIFICATION frames
may be received on the same path. In that case, the identifier with
the highest value is retrained for the path. For example, if a node
receives on the same path the identifiers 11, 17 and 13, the path
will be identified by the number 17.
If both peers have successfully negotiated the capability of sending
path management frames, each peer will send its own identifier over
the path.
PATH_MANAGEMENT frames MUST only be sent in 1-RTT packets. Receiving
such frames in Initial, Handshake of 0-RTT packets is a transport
violation.
Huitema Expires April 23, 2021 [Page 5]
Internet-Draft QUIC Multipath Option October 2020
3.3. PATH_STATUS Frame (TBD)
The PATH_STATUS frames carry three parameters: the identifier of the
path being managed, the new status of the path, and a management
sequence number.
" PATH_STATUS Frame { Path Identifier (i), Path Status (i),
Management Sequence Number (i) } "
The path identifier SHOULD match the value sent in a previous
PATH_IDENTIFICATION frame for an existing frame. If no such value is
found, the PATH_STATUS frame will be discarded.
NAT rebinding and retransmissions could cause the same identifier to
be received over different paths. If that happens, PATH_MANAGEMENT
frames will apply to all the paths sharing that identifier.
PATH_STATUS frames are ACK-eliciting.
Due to delays and retransmissions, PATH_STATUS frames may be received
out of order. If the Management Sequence Number is not greater than
the previously received values for that path, the PATH_STATUS frame
will be discarded.
If the frame is accepted, the status of the path is set to the
received Path Status, for which the authorized values are:
0- Abandon 1- Standby 2- Available
Receiving any other value is an error, which SHOULD trigger the
closure of the connection with a reason code PROTOCOL VIOLATION.
PATH_MANAGEMENT frames MUST only be sent in 1-RTT packets. Receiving
such frames in Initial, Handshake of 0-RTT packets is a transport
violation.
4. Sender side algorithms
In this minimal design, the sender is responsible for scheduling
packets transmission on different paths, preferably on "Available"
paths, but possibly on "StandBy" paths if all available paths are
deemed unusable.
4.1. Packet Numbers and Acknowledgements
The packet number space does not depend on the path on which the
packet is sent. ACK frames report the numbers of packets that have
Huitema Expires April 23, 2021 [Page 6]
Internet-Draft QUIC Multipath Option October 2020
been received so far, regardless of the path on which they have been
received.
If senders decide to send packets on paths with different
transmission delays, some packets will very probably be received out
of order. This will cause the ACK frames to carry multiple ranges of
received packets. Senders that want to control this issue may do so
by dedicating sub-ranges of packet numbers to different paths. We
expect that experience on how to manage such ranges will quickly
emerge.
4.2. Congestion Control and Error Recovery
Senders MUST manage per-path congestion status, and MUST NOT send
more data on a given path than congestion control on that path
allows. This is already a requirement of [I-D.ietf-quic-transport].
In order to implement per path congestion control, the senders
maintain an association between previously sent packet numbers and
the path over which these packets were sent. When a packet is newly
acknowledged, the delay between the transmission of that packet and
its first acknowledgement is used to update the RTT statitics for the
sending path, and to update the state of the congestion control for
that path.
Packet loss detection MUST be adapted to allow for different RTT on
different paths. For example, timer computations should take into
account the RTT of the path on which a packet was sent. Detections
based on packet numbers shall compare a given packet number to the
highest packet number received for that path.
Acknowledgement delays are the sum of two one-way delays, the delay
on the packet sending path and the delay on the return path chosen
for the acknowledgements. It is unclear whether this is a problem in
practice, but this could motivate the use of time stamps
[I-D.huitema-quic-ts] in conjunction with acknowledgements.
5. Security Considerations
TBD. There are probably ways to abuse this.
6. IANA Considerations
This document registers a new value in the QUIC Transport Parameter
Registry:
Value: TBD (using value 0xe9a in early deployments)
Huitema Expires April 23, 2021 [Page 7]
Internet-Draft QUIC Multipath Option October 2020
Parameter Name: enable_path_management
Specification: Indicates support of the Path Management options.
This document also registers 2 new values in the QUIC Frame Type
registry:
Value: TBD (using value 0x9a1 in early deployments)
Frame Name: PATH_IDENTIFICATION
Specification: Identification of the path over which a packet is
sent.
Value: TBD (using value 0x9a5 in early deployments)
Frame Name: PATH_STATUS
Specification: Identification of the path over which a packet is
sent.
7. Acknowledgements
8. Normative References
[I-D.huitema-quic-ts]
Huitema, C., "Quic Timestamps For Measuring One-Way
Delays", draft-huitema-quic-ts-03 (work in progress),
August 2020.
[I-D.ietf-quic-transport]
Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed
and Secure Transport", draft-ietf-quic-transport-31 (work
in progress), September 2020.
Author's Address
Christian Huitema
Private Octopus Inc.
427 Golfcourse Rd
Friday Harbor WA 98250
U.S.A
Email: huitema@huitema.net
Huitema Expires April 23, 2021 [Page 8]