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
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
|
Internet Engineering Task Force (IETF) M. Cociglio
Request for Comments: 9506 Telecom Italia - TIM
Category: Informational A. Ferrieux
ISSN: 2070-1721 Orange Labs
G. Fioccola
Huawei Technologies
I. Lubashev
Akamai Technologies
F. Bulgarella
M. Nilo
Telecom Italia - TIM
I. Hamchaoui
Orange Labs
R. Sisto
Politecnico di Torino
October 2023
Explicit Host-to-Network Flow Measurements Techniques
Abstract
This document describes protocol-independent methods called Explicit
Host-to-Network Flow Measurement Techniques that can be applicable to
transport-layer protocols between the client and server. These
methods employ just a few marking bits inside the header of each
packet for performance measurements and require the client and server
to collaborate. Both endpoints cooperate by marking packets and,
possibly, mirroring the markings on the round-trip connection. The
techniques are especially valuable when applied to protocols that
encrypt transport headers since they enable loss and delay
measurements by passive, on-path network devices. This document
describes several methods that can be used separately or jointly
depending of the availability of marking bits, desired measurements,
and properties of the protocol to which the methods are applied.
Status of This Memo
This document is not an Internet Standards Track specification; it is
published for informational purposes.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Not all documents
approved by the IESG are candidates for any level of Internet
Standard; see Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9506.
Copyright Notice
Copyright (c) 2023 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
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 Revised BSD License text as described in Section 4.e of the
Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents
1. Introduction
2. Latency Bits
2.1. Spin Bit
2.2. Delay Bit
2.2.1. Generation Phase
2.2.2. Reflection Phase
2.2.3. T_Max Selection
2.2.4. Delay Measurement Using the Delay Bit
2.2.4.1. RTT Measurement
2.2.4.2. Half-RTT Measurement
2.2.4.3. Intra-domain RTT Measurement
2.2.5. Observer's Algorithm
2.2.6. Two Bits Delay Measurement: Spin Bit + Delay Bit
3. Loss Bits
3.1. T Bit -- Round-Trip Loss Bit
3.1.1. Round-Trip Loss
3.1.2. Setting the Round-Trip Loss Bit on Outgoing Packets
3.1.3. Observer's Logic for Round-Trip Loss Signal
3.1.4. Loss Coverage and Signal Timing
3.2. Q Bit -- sQuare Bit
3.2.1. Q Block Length Selection
3.2.2. Upstream Loss
3.2.3. Identifying Q Block Boundaries
3.2.3.1. Improved Resilience to Burst Losses
3.3. L Bit -- Loss Event Bit
3.3.1. End-To-End Loss
3.3.1.1. Loss Profile Characterization
3.3.2. L+Q Bits -- Loss Measurement Using L and Q Bits
3.3.2.1. Correlating End-to-End and Upstream Loss
3.3.2.2. Downstream Loss
3.3.2.3. Observer Loss
3.4. R Bit -- Reflection Square Bit
3.4.1. Enhancement of Reflection Block Length Computation
3.4.2. Improved Resilience to Packet Reordering
3.4.2.1. Improved Resilience to Burst Losses
3.4.3. R+Q Bits -- Loss Measurement Using R and Q Bits
3.4.3.1. Three-Quarters Connection Loss
3.4.3.2. End-To-End Loss in the Opposite Direction
3.4.3.3. Half Round-Trip Loss
3.4.3.4. Downstream Loss
3.5. E Bit -- ECN-Echo Event Bit
3.5.1. Setting the ECN-Echo Event Bit on Outgoing Packets
3.5.2. Using E Bit for Passive ECN-Reported Congestion
Measurement
3.5.3. Multiple E Bits
4. Summary of Delay and Loss Marking Methods
4.1. Implementation Considerations
5. Examples of Application
6. Protocol Ossification Considerations
7. Security Considerations
7.1. Optimistic ACK Attack
7.2. Delay Bit with RTT Obfuscation
8. Privacy Considerations
9. IANA Considerations
10. References
10.1. Normative References
10.2. Informative References
Acknowledgments
Contributors
Authors' Addresses
1. Introduction
Packet loss and delay are hard and pervasive problems of day-to-day
network operation. Proactively detecting, measuring, and locating
them is crucial to maintaining high QoS and timely resolution of end-
to-end throughput issues.
Detecting and measuring packet loss and delay allows network
operators to independently confirm trouble reports and, ideally, be
proactively notified of developing problems on the network. Locating
the cause of packet loss or excessive delay is the first step to
resolving problems and restoring QoS.
Network operators wishing to perform quantitative measurement of
packet loss and delay have been heavily relying on information
present in the clear in transport-layer headers (e.g., TCP sequence
and acknowledgment numbers). By passively observing a network path
at multiple points within one's network, operators have been able to
either quickly locate the source the problem within their network or
reliably attribute it to an upstream or downstream network.
With encrypted protocols, the transport-layer headers are encrypted
and passive packet loss and delay observations are not possible, as
also noted in [TRANSPORT-ENCRYPT]. Nevertheless, accurate
measurement of packet loss and delay experienced by encrypted
transport-layer protocols is highly desired, especially by network
operators who own or control the infrastructure between the client
and server.
The measurement of loss and delay experienced by connections using an
encrypted protocol cannot be based on a measurement of loss and delay
experienced by connections between the same or similar endpoints that
use an unencrypted protocol because different protocols may utilize
the network differently and be routed differently by the network.
Therefore, it is necessary to directly measure the packet loss and
delay experienced by users of encrypted protocols.
The Alternate-Marking method [AltMark] defines a consolidated method
to perform packet loss, delay, and jitter measurements on live
traffic. However, as mentioned in [IPv6AltMark], [AltMark] mainly
applies to a network-layer-controlled domain managed with a Network
Management System (NMS), where the Customer Premises Equipment (CPE)
or the Provider Edge (PE) routers are the starting or the ending
nodes. [AltMark] provides measurement within a controlled domain in
which the packets are marked. Therefore, applying [AltMark] to end-
to-end transport-layer connections is not easy because packet
identification and marking by network nodes is prevented when
encrypted transport-layer headers (e.g., QUIC, TCP with TLS) are
being used.
This document defines Explicit Host-to-Network Flow Measurement
Techniques that are specifically designed for encrypted transport
protocols. According to the definitions of [IPPM-METHODS], these
measurement methods can be classified as Hybrid. They are to be
embedded into a transport-layer protocol and are explicitly intended
for exposing delay and loss rate information to on-path measurement
devices. Unlike [AltMark], most of these methods require
collaborative endpoint nodes. Since these measurement techniques
make performance information directly visible to the path, they do
not rely on an external NMS.
The Explicit Host-to-Network Flow Measurement Techniques described in
this document are applicable to any transport-layer protocol
connecting a client and a server. In this document, the client and
the server are also referred to as the endpoints of the transport-
layer protocol.
The different methods described in this document can be used alone or
in combination. Each technique uses few bits and exposes a specific
measurement. It is assumed that the endpoints are collaborative in
the sense of the measurements, indeed both the client and server need
to cooperate.
Following the recommendation in [RFC8558] of making path signals
explicit, this document proposes adding some dedicated measurement
bits to the clear portion of the transport protocol headers. These
bits can be added to an unencrypted portion of a transport-layer
header, e.g., UDP surplus space (see [UDP-OPTIONS] and [UDP-SURPLUS])
or reserved bits in a QUIC v1 header, as already done with the
latency Spin bit (see Section 17.4 of [QUIC-TRANSPORT]). Note that
this document does not recommend the use of any specific bits, as
these would need to be chosen by the specific protocol
implementations (see Section 5).
The Spin bit, Delay bit, and loss bits explained in this document are
inspired by [AltMark], [QUIC-MANAGEABILITY], [QUIC-SPIN],
[TSVWG-SPIN], and [IPPM-SPIN].
Additional details about the performance measurements for QUIC are
described in the paper [ANRW19-PM-QUIC].
2. Latency Bits
This section introduces bits that can be used for round-trip latency
measurements. Whenever this section of the specification refers to
packets, it is referring only to packets with protocol headers that
include the latency bits.
In [QUIC-TRANSPORT], Section 17.4 introduces an explicit, per-flow
transport-layer signal for hybrid measurement of RTT. This signal
consists of a Spin bit that toggles once per RTT. Section 4 of
[QUIC-SPIN] discusses an additional two-bit Valid Edge Counter (VEC)
to compensate for loss and reordering of the Spin bit and to increase
fidelity of the signal in less than ideal network conditions.
This document introduces a standalone single-bit delay signal that
can be used by passive observers to measure the RTT of a network
flow, avoiding the Spin bit ambiguities that arise as soon as network
conditions deteriorate.
2.1. Spin Bit
This section is a small recap of the Spin bit working mechanism. For
a comprehensive explanation of the algorithm, see Section 3.8.2 of
[QUIC-MANAGEABILITY].
The Spin bit is a signal generated by Alternate-Marking [AltMark],
where the size of the alternation changes with the flight size each
RTT.
The latency Spin bit is a single-bit signal that toggles once per
RTT, enabling latency monitoring of a connection-oriented
communication from intermediate observation points.
A "Spin bit period" is a set of packets with the same Spin bit value
sent during one RTT time interval. A "Spin bit period value" is the
value of the Spin bit shared by all packets in a Spin bit period.
The client and server maintain an internal per-connection spin value
(i.e., 0 or 1) used to set the Spin bit on outgoing packets. Both
endpoints initialize the spin value to 0 when a new connection
starts. Then:
* when the client receives a packet with the packet number larger
than any number seen so far, it sets the connection spin value to
the opposite value contained in the received packet; and
* when the server receives a packet with the packet number larger
than any number seen so far, it sets the connection spin value to
the same value contained in the received packet.
The computed spin value is used by the endpoints for setting the Spin
bit on outgoing packets. This mechanism allows the endpoints to
generate a square wave such that, by measuring the distance in time
between pairs of consecutive edges observed in the same direction, a
passive on-path observer can compute the round-trip network delay of
that network flow.
Spin bit enables round-trip latency measurement by observing a single
direction of the traffic flow.
Note that packet reordering can cause spurious edges that require
heuristics to correct. The Spin bit performance deteriorates as soon
as network impairments arise as explained in Section 2.2.
2.2. Delay Bit
The Delay bit has been designed to overcome accuracy limitations
experienced by the Spin bit under difficult network conditions:
* packet reordering leads to generation of spurious edges and errors
in delay estimation;
* loss of edges causes wrong estimation of Spin bit periods and
therefore wrong RTT measurements; and
* application-limited senders cause the Spin bit to measure the
application delays instead of network delays.
Unlike the Spin bit, which is set in every packet transmitted on the
network, the Delay bit is set only once per round trip.
When the Delay bit is used, a single packet with a marked bit (the
Delay bit) bounces between a client and a server during the entire
connection lifetime. This single packet is called the "delay
sample".
An observer placed at an intermediate point, observing a single
direction of traffic and tracking the delay sample and the relative
timestamp, can measure the round-trip delay of the connection.
The delay sample lifetime comprises two phases: initialization and
reflection. The initialization is the generation of the delay
sample, while the reflection realizes the bounce behavior of this
single packet between the two endpoints.
The next figure describes the elementary Delay bit mechanism.
+--------+ - - - - - +--------+
| | -----------> | |
| Client | | Server |
| | <----------- | |
+--------+ - - - - - +--------+
(a) No traffic at beginning.
+--------+ 0 0 1 - - +--------+
| | -----------> | |
| Client | | Server |
| | <----------- | |
+--------+ - - - - - +--------+
(b) The Client starts sending data and sets
the first packet as the delay sample.
+--------+ 0 0 0 0 0 +--------+
| | -----------> | |
| Client | | Server |
| | <----------- | |
+--------+ - - - 1 0 +--------+
(c) The Server starts sending data
and reflects the delay sample.
+--------+ 0 1 0 0 0 +--------+
| | -----------> | |
| Client | | Server |
| | <----------- | |
+--------+ 0 0 0 0 0 +--------+
(d) The Client reflects the delay sample.
+--------+ 0 0 0 0 0 +--------+
| | -----------> | |
| Client | | Server |
| | <----------- | |
+--------+ 0 0 0 1 0 +--------+
(e) The Server reflects the delay sample
and so on.
Figure 1: Delay Bit Mechanism
2.2.1. Generation Phase
Only the client is actively involved in the Generation Phase. It
maintains an internal per-flow timestamp variable (ds_time) updated
every time a delay sample is transmitted.
When connection starts, the client generates a new delay sample
initializing the Delay bit of the first outgoing packet to 1. Then
it updates the ds_time variable with the timestamp of its
transmission.
The server initializes the Delay bit to 0 at the beginning of the
connection, and its only task during the connection is described in
Section 2.2.2.
In absence of network impairments, the delay sample should bounce
between the client and server continuously for the entire duration of
the connection. However, that is highly unlikely for two reasons:
1. The packet carrying the Delay bit might be lost.
2. An endpoint could stop or delay sending packets because the
application is limiting the amount of traffic transmitted.
To deal with these problems, the client generates a new delay sample
if more than a predetermined time (T_Max) has elapsed since the last
delay sample transmission (including reflections). Note that T_Max
should be greater than the max measurable RTT on the network. See
Section 2.2.3 for details.
2.2.2. Reflection Phase
Reflection is the process that enables the bouncing of the delay
sample between a client and a server. The behavior of the two
endpoints is almost the same.
* Server-side reflection: When a delay sample arrives, the server
marks the first packet in the opposite direction as the delay
sample.
* Client-side reflection: When a delay sample arrives, the client
marks the first packet in the opposite direction as the delay
sample. It also updates the ds_time variable when the outgoing
delay sample is actually forwarded.
In both cases, if the outgoing delay sample is being transmitted with
a delay greater than a predetermined threshold after the reception of
the incoming delay sample (1 ms by default), the delay sample is not
reflected, and the outgoing Delay bit is kept at 0.
By doing so, the algorithm can reject measurements that would
overestimate the delay due to lack of traffic at the endpoints.
Hence, the maximum estimation error would amount to twice the
threshold (e.g., 2 ms) per measurement.
2.2.3. T_Max Selection
The internal ds_time variable allows a client to identify delay
sample losses. Considering that a lost delay sample is regenerated
at the end of an explicit time (T_Max) since the last generation,
this same value can be used by an observer to reject a measure and
start a new one.
In other words, if the difference in time between two delay samples
is greater or equal than T_Max, then these cannot be used to produce
a delay measure. Therefore, the value of T_Max must also be known to
the on-path network probes.
There are two alternatives to selecting the T_Max value so that both
the client and observers know it. The first one requires that T_Max
is known a priori (T_Max_p) and therefore set within the protocol
specifications that implements the marking mechanism (e.g., 1 second,
which usually is greater than the max expected RTT). The second
alternative requires a dynamic mechanism able to adapt the duration
of the T_Max to the delay of the connection (T_Max_c).
For instance, the client and observers could use the connection RTT
as a basis for calculating an effective T_Max. They should use a
predetermined initial value so that T_Max = T_Max_p (e.g., 1 second)
and then, when a valid RTT is measured, change T_Max accordingly so
that T_Max = T_Max_c. In any case, the selected T_Max should be
large enough to absorb any possible variations in the connection
delay. This also helps to prevent the mechanism from failing when
the observer cannot recognize sudden changes in RTT exceeding T_Max.
T_Max_c could be computed as two times the measured RTT plus a fixed
amount of time (100 ms) to prevent low T_Max values in the case of
very small RTTs. The resulting formula is: T_Max_c = 2RTT + 100 ms.
If T_Max_c is greater than T_Max_p, then T_Max_c is forced to the
T_Max_p value. Note that the value of 100 ms is provided as an
example, and it may be chosen differently depending on the specific
scenarios. For instance, an implementer may consider using existing
protocol-specific values if appropriate.
Note that the observer's T_Max should always be less than or equal to
the client's T_Max to avoid considering as a valid measurement what
is actually the client's T_Max. To obtain this result, the client
waits for two consecutive incoming samples and computes the two
related RTTs. Then it takes the largest of them as the basis of the
T_Max_c formula. At this point, observers have already measured a
valid RTT and then computed their T_Max_c.
2.2.4. Delay Measurement Using the Delay Bit
When the Delay bit is used, a passive observer can use delay samples
directly and avoid inherent ambiguities in the calculation of the RTT
as can be seen in Spin bit analysis.
2.2.4.1. RTT Measurement
The delay sample generation process ensures that only one packet
marked with the Delay bit set to 1 runs back and forth between two
endpoints per round-trip time. To determine the RTT measurement of a
flow, an on-path passive observer computes the time difference
between two delay samples observed in a single direction.
To ensure a valid measurement, the observer must verify that the
distance in time between the two samples taken into account is less
than T_Max.
=======================|======================>
= ********** -----Obs----> ********** =
= * Client * * Server * =
= ********** <------------ ********** =
<==============================================
(a) client-server RTT
==============================================>
= ********** ------------> ********** =
= * Client * * Server * =
= ********** <----Obs----- ********** =
<======================|=======================
(b) server-client RTT
Figure 2: Round-Trip Time (Both Directions)
2.2.4.2. Half-RTT Measurement
An observer that is able to observe both forward and return traffic
directions can use the delay samples to measure "upstream" and
"downstream" RTT components, also known as the half-RTT measurements.
It does this by measuring the time between a delay sample observed in
one direction and the delay sample previously observed in the
opposite direction.
As with RTT measurement, the observer must verify that the distance
in time between the two samples taken into account is less than
T_Max.
Note that upstream and downstream sections of paths between the
endpoints and the observer (i.e., observer-to-client vs. client-to-
observer and observer-to-server vs. server-to-observer) may have
different delay characteristics due to the difference in network
congestion and other factors.
=======================>
= ********** ------|-----> **********
= * Client * Obs * Server *
= ********** <-----|------ **********
<=======================
(a) client-observer half-RTT
=======================>
********** ------|-----> ********** =
* Client * Obs * Server * =
********** <-----|------ ********** =
<=======================
(b) observer-server half-RTT
Figure 3: Half Round-Trip Time (Both Directions)
2.2.4.3. Intra-domain RTT Measurement
Intra-domain RTT is the portion of the entire RTT used by a flow to
traverse the network of a provider. To measure intra-domain RTT, two
observers capable of observing traffic in both directions must be
employed simultaneously at the ingress and egress of the network to
be measured. Intra-domain RTT is the difference between the two
computed upstream (or downstream) RTT components.
=========================================>
= =====================>
= = ********** ---|--> ---|--> **********
= = * Client * Obs Obs * Server *
= = ********** <--|--- <--|--- **********
= <=====================
<=========================================
(a) client-observer RTT components (half-RTTs)
==================>
********** ---|--> ---|--> **********
* Client * Obs Obs * Server *
********** <--|--- <--|--- **********
<==================
(b) the intra-domain RTT resulting from the
subtraction of the above RTT components
Figure 4: Intra-domain Round-Trip Time (Client-Observer: Upstream)
2.2.5. Observer's Algorithm
An on-path observer maintains an internal per-flow variable to keep
track of the time at which the last delay sample has been observed.
The flow characterization should be part of the protocol.
If the observer is unidirectional or in case of asymmetric routing,
then upon detecting a delay sample:
* if a delay sample was also detected previously in the same
direction and the distance in time between them is less than T_Max
- K, then the two delay samples can be used to calculate RTT
measurement. K is a protection threshold to absorb differences in
T_Max computation and delay variations between two consecutive
delay samples (e.g., K = 10% T_Max).
If the observer can observe both forward and return traffic flows,
and it is able to determine which direction contains the client and
the server (e.g., by observing the connection handshake), then upon
detecting a delay sample:
* if a delay sample was also detected in the opposite direction and
the distance in time between them is less than T_Max - K, then the
two delay samples can be used to measure the observer-client half-
RTT or the observer-server half-RTT, according to the direction of
the last delay sample observed.
Note that the accuracy can be influenced by what the observer is
capable of observing. Additionally, the type of measurement differs,
as described in the previous sections.
2.2.6. Two Bits Delay Measurement: Spin Bit + Delay Bit
The Spin and Delay bit algorithms work independently. If both
marking methods are used in the same connection, observers can choose
the best measurement between the two available:
* when a precise measurement can be produced using the Delay bit,
observers choose it; and
* when a Delay bit measurement is not available, observers choose
the approximate Spin bit one.
3. Loss Bits
This section introduces bits that can be used for loss measurements.
Whenever this section of the specification refers to packets, it is
referring only to packets with protocol headers that include the loss
bits -- the only packets whose loss can be measured.
T: The "round-Trip loss" bit is used in combination with the Spin
bit to measure round-trip loss. See Section 3.1.
Q: The "sQuare" bit is used to measure upstream loss. See
Section 3.2.
L: The "Loss Event" bit is used to measure end-to-end loss. See
Section 3.3.
R: The "Reflection square" bit is used in combination with the Q
bit to measure end-to-end loss. See Section 3.4.
Loss measurements enabled by T, Q, and L bits can be implemented by
those loss bits alone (T bit requires a working Spin bit). Two-bit
combinations Q+L and Q+R enable additional measurement opportunities
discussed below.
Each endpoint maintains appropriate counters independently and
separately for each identifiable flow (or each sub-flow for multipath
connections).
Since loss is reported independently for each flow, all bits (except
for the L bit) require a certain minimum number of packets to be
exchanged per flow before any signal can be measured. Therefore,
loss measurements work best for flows that transfer more than a
minimal amount of data.
3.1. T Bit -- Round-Trip Loss Bit
The round-Trip loss bit is used to mark a variable number of packets
exchanged twice between the endpoints realizing a two round-trip
reflection. A passive on-path observer, observing either direction,
can count and compare the number of marked packets seen during the
two reflections, estimating the loss rate experienced by the
connection. The overall exchange comprises:
* the client selects and consequently sets the T bit to 1 in order
to identify a first train of packets;
* upon receiving each packet included in the first train, the server
sets the T bit to 1 and reflects to the client a respective second
train of packets of the same size as the first train received;
* upon receiving each packet included in the second train, the
client sets the T bit to 1 and reflects to the server a respective
third train of packets of the same size as the second train
received; and
* upon receiving each packet included in the third train, the server
sets the T bit to 1 and finally reflects to the client a
respective fourth train of packets of the same size as the third
train received.
Packets belonging to the first round trip (first and second train)
represent the Generation Phase, while those belonging to the second
round trip (third and fourth train) represent the Reflection Phase.
A passive on-path observer can count and compare the number of marked
packets seen during the two round trips (i.e., the first and third or
the second and the fourth trains of packets, depending on which
direction is observed) and estimate the loss rate experienced by the
connection. This process is repeated continuously to obtain more
measurements as long as the endpoints exchange traffic. These
measurements can be called round-trip losses.
Since the packet rates in two directions may be different, the number
of marked packets in the train is determined by the direction with
the lowest packet rate. See Section 3.1.2 for details on packet
generation.
3.1.1. Round-Trip Loss
Since the measurements are performed on a portion of the traffic
exchanged between the client and the server, the observer calculates
the end-to-end Round-Trip Packet Loss (RTPL) that, statistically,
will correspond to the loss rate experienced by the connection along
the entire network path.
=======================|======================>
= ********** -----Obs----> ********** =
= * Client * * Server * =
= ********** <------------ ********** =
<==============================================
(a) client-server RTPL
==============================================>
= ********** ------------> ********** =
= * Client * * Server * =
= ********** <----Obs----- ********** =
<======================|=======================
(b) server-client RTPL
Figure 5: Round-Trip Packet Loss (Both Directions)
This methodology also allows the half-RTPL measurement and the Intra-
domain RTPL measurement in a way similar to RTT measurement.
=======================>
= ********** ------|-----> **********
= * Client * Obs * Server *
= ********** <-----|------ **********
<=======================
(a) client-observer half-RTPL
=======================>
********** ------|-----> ********** =
* Client * Obs * Server * =
********** <-----|------ ********** =
<=======================
(b) observer-server half-RTPL
Figure 6: Half Round-Trip Packet Loss (Both Directions)
=========================================>
=====================> =
********** ---|--> ---|--> ********** = =
* Client * Obs Obs * Server * = =
********** <--|--- <--|--- ********** = =
<===================== =
<=========================================
(a) observer-server RTPL components (half-RTPLs)
==================>
********** ---|--> ---|--> **********
* Client * Obs Obs * Server *
********** <--|--- <--|--- **********
<==================
(b) the intra-domain RTPL resulting from the
subtraction of the above RTPL components
Figure 7: Intra-domain Round-Trip Packet Loss (Observer-Server)
3.1.2. Setting the Round-Trip Loss Bit on Outgoing Packets
The round-Trip loss signal requires a working Spin bit signal to
separate trains of marked packets (packets with T bit set to 1). A
"pause" of at least one empty Spin bit period between each phase of
the algorithm serves as such a separator for the on-path observer.
The connection between T bit and Spin bit helps the observer
correlate packet trains.
The client maintains a "generation token" count that is set to zero
at the beginning of the session and is incremented every time a
packet is received (marked or unmarked). The client also maintains a
"reflection counter" that starts at zero at the beginning of the
session.
The client is in charge of launching trains of marked packets and
does so according to the algorithm:
1. Generation Phase. The client starts generating marked packets
for two consecutive Spin bit periods. When the client transmits
a packet and a "generation token" is available, the client marks
the packet and retires a "generation token". If no token is
available, the outgoing packet is transmitted unmarked. At the
end of the first Spin bit period spent in generation, the
reflection counter is unlocked to start counting incoming marked
packets that will be reflected later.
2. Pause Phase. When the generation is completed, the client pauses
till it has observed one entire Spin bit period with no marked
packets. That Spin bit period is used by the observer as a
separator between generated and reflected packets. During this
marking pause, all the outgoing packets are transmitted with T
bit set to 0. The reflection counter is still incremented every
time a marked packet arrives.
3. Reflection Phase. The client starts transmitting marked packets,
decrementing the reflection counter for each transmitted marked
packet until the reflection counter has reached zero. The
"generation token" method from the Generation Phase is used
during this phase as well. At the end of the first Spin bit
period spent in reflection, the reflection counter is locked to
avoid incoming reflected packets incrementing it.
4. Pause Phase 2. The Pause Phase is repeated after the Reflection
Phase and serves as a separator between the reflected packet
train and a new packet train.
The generation token counter should be capped to limit the effects of
a subsequent sudden reduction in the other endpoint's packet rate
that could prevent that endpoint from reflecting collected packets.
A cap value of 1 is recommended.
A server maintains a "marking counter" that starts at zero and is
incremented every time a marked packet arrives. When the server
transmits a packet and the "marking counter" is positive, the server
marks the packet and decrements the "marking counter". If the
"marking counter" is zero, the outgoing packet is transmitted
unmarked.
Note that a choice of 2 RTT (two Spin bit periods) for the Generation
Phase is a trade-off between the percentage of marked packets (i.e.,
the percentage of traffic monitored) and the measurement delay.
Using this value, the algorithm produces a measurement approximately
every 6 RTT (2 generations, ~2 reflections, 2 pauses), marking ~1/3
of packets exchanged in the slower direction (see Section 3.1.4).
Choosing a Generation Phase of 1 RTT, we would produce measurements
every 4 RTT, monitoring ~1/4 of packets in the slower direction.
It is worth mentioning that problems can happen in some cases,
especially if the rate suddenly changes, but the mechanism described
here worked well with normal traffic conditions in the
implementation.
3.1.3. Observer's Logic for Round-Trip Loss Signal
The on-path observer counts marked packets and separates different
trains by detecting Spin bit periods (at least one) with no marked
packets. The Round-Trip Packet Loss (RTPL) is the difference between
the size of the Generation train and the Reflection train.
In the following example, packets are represented by two bits (first
one is the Spin bit, second one is the round-Trip loss bit):
Generation Pause Reflection Pause
____________________ ______________ ____________________ ________
| | | | |
01 01 00 01 11 10 11 00 00 10 10 10 01 00 01 01 10 11 10 00 00 10
Figure 8: Round-Trip Loss Signal Example
Note that 5 marked packets have been generated, of which 4 have been
reflected.
3.1.4. Loss Coverage and Signal Timing
A cycle of the round-Trip loss signaling algorithm contains 2 RTTs of
Generation phase, 2 RTTs of Reflection Phase, and 2 Pause Phases at
least 1 RTT in duration each. Hence, the loss signal is delayed by
about 6 RTTs since the loss events.
The observer can only detect the loss of marked packets that occurs
after its initial observation of the Generation Phase and before its
subsequent observation of the Reflection Phase. Hence, if the loss
occurs on the path that sends packets at a lower rate (typically ACKs
in such asymmetric scenarios), 2/6 (1/3) of the packets will be
sampled for loss detection.
If the loss occurs on the path that sends packets at a higher rate,
lowPacketRate/(3*highPacketRate) of the packets will be sampled for
loss detection. For protocols that use ACKs, the portion of packets
sampled for loss in the higher rate direction during unidirectional
data transfer is 1/(3*packetsPerAck), where the value of
packetsPerAck can vary by protocol, by implementation, and by network
conditions.
3.2. Q Bit -- sQuare Bit
The sQuare bit (Q bit) takes its name from the square wave generated
by its signal. This method is based on the Alternate-Marking method
[AltMark], and the Q bit represents the "packet color" that can be
switched between 0 and 1 in order to mark consecutive blocks of
packets with different colors. This method does not require
cooperation from both endpoints.
[AltMark] introduces two variations of the Alternate-Marking method
depending on whether the color is switched according to a fixed timer
or after a fixed number of packets. Cooperating and synchronized
observers on either end of a network segment can use the fixed-timer
method to measure packet loss on the segment by comparing packet
counters for the same packet blocks. The time length of the blocks
can be chosen depending on the desired measurement frequency, but it
must be long enough to guarantee the proper operation with respect to
clock errors and network delay issues.
The Q bit method described in this document chooses the color-
switching method based on a fixed number of packets for each block.
This approach has the advantage that it does not require cooperating
or synchronized observers or network elements. Each probe can
measure packet loss autonomously without relying on an external NMS.
For the purpose of the packet loss measurement, all blocks have the
same number of packets, and it is necessary to detect only the loss
event and not to identify the exact block with losses.
Following the method based on fixed number of packets, the square
wave signal is generated by the switching of the Q bit: every
outgoing packet contains the Q bit value, which is initialized to 0
and inverted after sending N packets (a sQuare Block or simply Q
Block). Hence, Q Period is 2*N.
Observation points can estimate upstream losses by watching a single
direction of the traffic flow and counting the number of packets in
each observed Q Block, as described in Section 3.2.2.
3.2.1. Q Block Length Selection
The length of the block must be known to the on-path network probes.
There are two alternatives to selecting the Q Block length. The
first one requires that the length is known a priori and therefore
set within the protocol specifications that implement the marking
mechanism. The second requires the sender to select it.
In this latter scenario, the sender is expected to choose N (Q Block
length) based on the expected amount of loss and reordering on the
path. The choice of N strikes a compromise -- the observation could
become too unreliable in case of packet reordering and/or severe loss
if N is too small, while short flows may not yield a useful upstream
loss measurement if N is too large (see Section 3.2.2).
The value of N should be at least 64 and be a power of 2. This
requirement allows an observer to infer the Q Block length by
observing one period of the square signal. It also allows the
observer to identify flows that set the loss bits to arbitrary values
(see Section 6).
If the sender does not have sufficient information to make an
informed decision about Q Block length, the sender should use N=64,
since this value has been extensively tried in large-scale field
tests and yielded good results. Alternatively, the sender may also
choose a random power-of-2 N for each flow, increasing the chances of
using a Q Block length that gives the best signal for some flows.
The sender must keep the value of N constant for a given flow.
3.2.2. Upstream Loss
Blocks of N (Q Block length) consecutive packets are sent with the
same value of the Q bit, followed by another block of N packets with
an inverted value of the Q bit. Hence, knowing the value of N, an
on-path observer can estimate the amount of upstream loss after
observing at least N packets. The upstream loss rate (uloss) is one
minus the average number of packets in a block of packets with the
same Q value (p) divided by N (uloss=1-avg(p)/N).
The observer needs to be able to tolerate packet reordering that can
blur the edges of the square signal, as explained in Section 3.2.3.
=====================>
********** -----Obs----> **********
* Client * * Server *
********** <------------ **********
(a) in client-server channel (uloss_up)
********** ------------> **********
* Client * * Server *
********** <----Obs----- **********
<=====================
(b) in server-client channel (uloss_down)
Figure 9: Upstream Loss
3.2.3. Identifying Q Block Boundaries
Packet reordering can produce spurious edges in the square signal.
To address this, the observer should look for packets with the
current Q bit value up to X packets past the first packet with a
reverse Q bit value. The value of X, a "Marking Block Threshold",
should be less than N/2.
The choice of X represents a trade-off between resiliency to
reordering and resiliency to loss. A very large Marking Block
Threshold will be able to reconstruct Q Blocks despite a significant
amount of reordering, but it may erroneously coalesce packets from
multiple Q Blocks into fewer Q Blocks if loss exceeds 50% for some Q
Blocks.
3.2.3.1. Improved Resilience to Burst Losses
Burst losses can affect the accuracy of Q measurements. Generally,
burst losses can be absorbed and correctly measured if smaller than
the established Q Block length. If the entire Q Block length of
packets is lost in a burst, however, the observer may be left
completely unaware of the loss.
To improve burst loss resilience, an observer may consider a received
Q Block larger than the selected Q Block length as an indication of a
burst loss event. The observer would then compute the loss as three
times the Q Block length minus the measured block length. By doing
so, the observer can detect burst losses of less than two blocks
(e.g., less than 128 packets for a Q Block length of 64 packets). A
burst loss of two or more consecutive periods would still remain
unnoticed by the observer (or underestimated if a period longer than
Q Block length were formed).
3.3. L Bit -- Loss Event Bit
The Loss Event bit uses an Unreported Loss counter maintained by the
protocol that implements the marking mechanism. To use the Loss
Event bit, the protocol must allow the sender to identify lost
packets. This is true of protocols such as QUIC, partially true for
TCP and Stream Control Transmission Protocol (SCTP) (losses of pure
ACKs are not detected), and is not true of protocols such as UDP and
IPv4/IPv6.
The Unreported Loss counter is initialized to 0, and the L bit of
every outgoing packet indicates whether the Unreported Loss counter
is positive (L=1 if the counter is positive, and L=0 otherwise).
The value of the Unreported Loss counter is decremented every time a
packet with L=1 is sent.
The value of the Unreported Loss counter is incremented for every
packet that the protocol declares lost, using whatever loss detection
machinery the protocol employs. If the protocol is able to rescind
the loss determination later, a positive Unreported Loss counter may
be decremented due to the rescission. In general, it should not
become negative due to the rescission, but it can happen in few
cases.
This loss signaling is similar to loss signaling in [ConEx], except
that the Loss Event bit is reporting the exact number of lost
packets, whereas the signal mechanism in [ConEx] is reporting an
approximate number of lost bytes.
For protocols, such as TCP [TCP], that allow network devices to
change data segmentation, it is possible that only a part of the
packet is lost. In these cases, the sender must increment the
Unreported Loss counter by the fraction of the packet data lost (so
the Unreported Loss counter may become negative when a packet with
L=1 is sent after a partial packet has been lost).
Observation points can estimate the end-to-end loss, as determined by
the upstream endpoint, by counting packets in this direction with the
L bit equal to 1, as described in Section 3.3.1.
3.3.1. End-To-End Loss
The Loss Event bit allows an observer to estimate the end-to-end loss
rate by counting packets with L bit values of 0 and 1 for a given
flow. The end-to-end loss ratio is the fraction of packets with L=1.
The assumption here is that upstream loss affects packets with L=0
and L=1 equally. If some loss is caused by tail-drop in a network
device, this may be a simplification. If the sender's congestion
controller reduces the packet send rate after loss, there may be a
sufficient delay before sending packets with L=1 that they have a
greater chance of arriving at the observer.
3.3.1.1. Loss Profile Characterization
The Loss Event bit allows an observer to characterize the loss
profile, since the distribution of observed packets with the L bit
set to 1 roughly corresponds to the distribution of packets lost
between 1 RTT and 1 retransmission timeout (RTO) before (see
Section 3.3.2.1). Hence, observing random single instances of the L
bit set to 1 indicates random single packet loss, while observing
blocks of packets with the L bit set to 1 indicates loss affecting
entire blocks of packets.
3.3.2. L+Q Bits -- Loss Measurement Using L and Q Bits
Combining L and Q bits allows a passive observer watching a single
direction of traffic to accurately measure:
upstream loss: sender-to-observer loss (see Section 3.2.2)
downstream loss: observer-to-receiver loss (see Section 3.3.2.2)
end-to-end loss: sender-to-receiver loss on the observed path (see
Section 3.3.1) with loss profile characterization (see
Section 3.3.1.1)
3.3.2.1. Correlating End-to-End and Upstream Loss
Upstream loss is calculated by observing packets that did not suffer
the upstream loss (Section 3.2.2). End-to-end loss, however, is
calculated by observing subsequent packets after the sender's
protocol detected the loss. Hence, end-to-end loss is generally
observed with a delay of between 1 RTT (loss declared due to multiple
duplicate acknowledgments) and 1 RTO (loss declared due to a timeout)
relative to the upstream loss.
The flow RTT can sometimes be estimated by timing the protocol
handshake messages. This RTT estimate can be greatly improved by
observing a dedicated protocol mechanism for conveying RTT
information, such as the Spin bit (see Section 2.1) or Delay bit (see
Section 2.2).
Whenever the observer needs to perform a computation that uses both
upstream and end-to-end loss rate measurements, it should consider
the upstream loss rate leading the end-to-end loss rate by
approximately 1 RTT. If the observer is unable to estimate RTT of
the flow, it should accumulate loss measurements over time periods of
at least 4 times the typical RTT for the observed flows.
If the calculated upstream loss rate exceeds the end-to-end loss rate
calculated in Section 3.3.1, then either the Q Period is too short
for the amount of packet reordering or there is observer loss,
described in Section 3.3.2.3. If this happens, the observer should
adjust the calculated upstream loss rate to match end-to-end loss
rate, unless the following applies.
In case of a protocol, such as TCP or SCTP, that does not track
losses of pure ACK packets, observing a direction of traffic
dominated by pure ACK packets could result in measured upstream loss
that is higher than measured end-to-end loss if said pure ACK packets
are lost upstream. Hence, if the measurement is applied to such
protocols, and the observer can confirm that pure ACK packets
dominate the observed traffic direction, the observer should adjust
the calculated end-to-end loss rate to match upstream loss rate.
3.3.2.2. Downstream Loss
Because downstream loss affects only those packets that did not
suffer upstream loss, the end-to-end loss rate (eloss) relates to the
upstream loss rate (uloss) and downstream loss rate (dloss) as
(1-uloss)(1-dloss)=1-eloss. Hence, dloss=(eloss-uloss)/(1-uloss).
3.3.2.3. Observer Loss
A typical deployment of a passive observation system includes a
network tap device that mirrors network packets of interest to a
device that performs analysis and measurement on the mirrored
packets. The observer loss is the loss that occurs on the mirror
path.
Observer loss affects the upstream loss rate measurement since it
causes the observer to account for fewer packets in a block of
identical Q bit values (see Section 3.2.2). The end-to-end loss rate
measurement, however, is unaffected by the observer loss since it is
a measurement of the fraction of packets with the L bit value of 1,
and the observer loss would affect all packets equally (see
Section 3.3.1).
The need to adjust the upstream loss rate down to match the end-to-
end loss rate as described in Section 3.3.2.1 is an indication of the
observer loss, whose magnitude is between the amount of such
adjustment and the entirety of the upstream loss measured in
Section 3.2.2. Alternatively, a high apparent upstream loss rate
could be an indication of significant packet reordering, possibly due
to packets belonging to a single flow being multiplexed over several
upstream paths with different latency characteristics.
3.4. R Bit -- Reflection Square Bit
R bit requires a deployment alongside Q bit. Unlike the square
signal for which packets are transmitted in blocks of fixed size, the
number of packets in Reflection square blocks (also an Alternate-
Marking signal) varies according to these rules:
* when the transmission of a new block starts, its size is set equal
to the size of the last Q Block whose reception has been
completed; and
* if the reception of at least one further Q Block is completed
before transmission of the block is terminated, the size of the
block is updated to be the average size of the further received Q
Blocks.
The Reflection square value is initialized to 0 and is applied to the
R bit of every outgoing packet. The Reflection square value is
toggled for the first time when the completion of a Q Block is
detected in the incoming square signal (produced by the other
endpoint using the Q bit). The number of packets detected within
this first Q Block (p), is used to generate a reflection square
signal that toggles every M=p packets (at first). This new signal
produces blocks of M packets (marked using the R bit) and each of
them is called "Reflection Block" (Reflection Block).
The M value is then updated every time a completed Q Block in the
incoming square signal is received, following this formula:
M=round(avg(p)).
The parameter avg(p), the average number of packets in a marking
period, is computed based on all the Q Blocks received since the
beginning of the current Reflection Block.
The transmission of a Reflection Block is considered complete (and
the signal toggled) when the number of packets transmitted in that
block is at least the latest computed M value.
To ensure a proper computation of the M value, endpoints implementing
the R bit must identify the boundaries of incoming Q Blocks. The
same approach described in Section 3.2.3 should be used.
By looking at the R bit, unidirectional observation points have an
indication of loss experienced by the entire unobserved channel plus
the loss on the path from the sender to them.
Since the Q Block is sent in one direction, and the corresponding
reflected R Block is sent in the opposite direction, the reflected R
signal is transmitted with the packet rate of the slowest direction.
Namely, if the observed direction is the slowest, there can be
multiple Q Blocks transmitted in the unobserved direction before a
complete Reflection Block is transmitted in the observed direction.
If the unobserved direction is the slowest, the observed direction
can be sending R Blocks of the same size repeatedly before it can
update the signal to account for a newly completed Q Block.
3.4.1. Enhancement of Reflection Block Length Computation
The use of the rounding function used in the M computation introduces
errors that can be minimized by storing the rounding applied each
time M is computed and using it during the computation of the M value
in the following Reflection Block.
This can be achieved by introducing the new r_avg parameter in the
computation of M. The new formula is Mr=avg(p)+r_avg; M=round(Mr);
r_avg=Mr-M where the initial value of r_avg is equal to 0.
3.4.2. Improved Resilience to Packet Reordering
When a protocol implementing the marking mechanism is able to detect
when packets are received out of order, it can improve resilience to
packet reordering beyond what is possible by using methods described
in Section 3.2.3.
This can be achieved by updating the size of the current Reflection
Block while it is being transmitted. The Reflection Block size is
then updated every time an incoming reordered packet of the previous
Q Block is detected. This can be done if and only if the
transmission of the current Reflection Block is in progress and no
packets of the following Q Block have been received.
3.4.2.1. Improved Resilience to Burst Losses
Burst losses can affect the accuracy of R measurements similar to how
they affect accuracy of Q measurements. Therefore, recommendations
in Section 3.2.3.1 apply equally to improving burst loss resilience
for R measurements.
3.4.3. R+Q Bits -- Loss Measurement Using R and Q Bits
Since both sQuare and Reflection square bits are toggled at most
every N packets (except for the first transition of the R bit as
explained before), an on-path observer can count the number of
packets of each marking block and, knowing the value of N, can
estimate the amount of loss experienced by the connection. An
observer can calculate different measurements depending on whether it
is able to observe a single direction of the traffic or both
directions.
Single directional observer:
upstream loss in the observed direction: the loss between the
sender and the observation point (see Section 3.2.2)
"three-quarters" connection loss: the loss between the receiver
and the sender in the unobserved direction plus the loss
between the sender and the observation point in the observed
direction
end-to-end loss in the unobserved direction: the loss between the
receiver and the sender in the opposite direction
Two directions observer (same metrics seen previously applied to
both direction, plus):
client-observer half round-trip loss: the loss between the client
and the observation point in both directions
observer-server half round-trip loss: the loss between the
observation point and the server in both directions
downstream loss: the loss between the observation point and the
receiver (applicable to both directions)
3.4.3.1. Three-Quarters Connection Loss
Except for the very first block in which there is nothing to reflect
(a complete Q Block has not been yet received), packets are
continuously R-bit marked into alternate blocks of size lower or
equal than N. By knowing the value of N, an on-path observer can
estimate the amount of loss that has occurred in the whole opposite
channel plus the loss from the sender up to it in the observation
channel. As for the previous metric, the three-quarters connection
loss rate (tqloss) is one minus the average number of packets in a
block of packets with the same R value (t) divided by N
(tqloss=1-avg(t)/N).
=======================>
= ********** -----Obs----> **********
= * Client * * Server *
= ********** <------------ **********
<============================================
(a) in client-server channel (tqloss_up)
============================================>
********** ------------> ********** =
* Client * * Server * =
********** <----Obs----- ********** =
<=======================
(b) in server-client channel (tqloss_down)
Figure 10: Three-Quarters Connection Loss
The following metrics derive from this last metric and the upstream
loss produced by the Q bit.
3.4.3.2. End-To-End Loss in the Opposite Direction
End-to-end loss in the unobserved direction (eloss_unobserved)
relates to the "three-quarters" connection loss (tqloss) and upstream
loss in the observed direction (uloss) as
(1-eloss_unobserved)(1-uloss)=1-tqloss. Hence,
eloss_unobserved=(tqloss-uloss)/(1-uloss).
********** -----Obs----> **********
* Client * * Server *
********** <------------ **********
<==========================================
(a) in client-server channel (eloss_down)
==========================================>
********** ------------> **********
* Client * * Server *
********** <----Obs----- **********
(b) in server-client channel (eloss_up)
Figure 11: End-To-End Loss in the Opposite Direction
3.4.3.3. Half Round-Trip Loss
If the observer is able to observe both directions of traffic, it is
able to calculate two "half round-trip" loss measurements -- loss
from the observer to the receiver (in a given direction) and then
back to the observer in the opposite direction. For both directions,
"half round-trip" loss (hrtloss) relates to "three-quarters"
connection loss (tqloss_opposite) measured in the opposite direction
and the upstream loss (uloss) measured in the given direction as
(1-uloss)(1-hrtloss)=1-tqloss_opposite. Hence,
hrtloss=(tqloss_opposite-uloss)/(1-uloss).
=======================>
= ********** ------|-----> **********
= * Client * Obs * Server *
= ********** <-----|------ **********
<=======================
(a) client-observer half round-trip loss (hrtloss_co)
=======================>
********** ------|-----> ********** =
* Client * Obs * Server * =
********** <-----|------ ********** =
<=======================
(b) observer-server half round-trip loss (hrtloss_os)
Figure 12: Half Round-Trip Loss (Both Directions)
3.4.3.4. Downstream Loss
If the observer is able to observe both directions of traffic, it is
able to calculate two downstream loss measurements using either end-
to-end loss and upstream loss, similar to the calculation in
Section 3.3.2.2, or "half round-trip" loss and upstream loss in the
opposite direction.
For the latter, dloss=(hrtloss-uloss_opposite)/(1-uloss_opposite).
=====================>
********** ------|-----> **********
* Client * Obs * Server *
********** <-----|------ **********
(a) in client-server channel (dloss_up)
********** ------|-----> **********
* Client * Obs * Server *
********** <-----|------ **********
<=====================
(b) in server-client channel (dloss_down)
Figure 13: Downstream Loss
3.5. E Bit -- ECN-Echo Event Bit
While the primary focus of this document is on exposing packet loss
and delay, modern networks can report congestion before they are
forced to drop packets, as described in [ECN]. When transport
protocols keep ECN-Echo feedback under encryption, this signal cannot
be observed by the network operators. When tasked with diagnosing
network performance problems, knowledge of a congestion downstream of
an observation point can be instrumental.
If downstream congestion information is desired, this information can
be signaled with an additional bit.
E: The "ECN-Echo Event" bit is set to 0 or 1 according to the
Unreported ECN-Echo counter, as explained below in Section 3.5.1.
3.5.1. Setting the ECN-Echo Event Bit on Outgoing Packets
The Unreported ECN-Echo counter operates identically to Unreported
Loss counter (Section 3.3), except it counts packets delivered by the
network with Congestion Experienced (CE) markings, according to the
ECN-Echo feedback from the receiver.
This ECN-Echo signaling is similar to ECN signaling in [ConEx]. The
ECN-Echo mechanism in QUIC provides the number of packets received
with CE marks. For protocols like TCP, the method described in
[ConEx-TCP] can be employed. As stated in [ConEx-TCP], such feedback
can be further improved using a method described in [ACCURATE-ECN].
3.5.2. Using E Bit for Passive ECN-Reported Congestion Measurement
A network observer can count packets with the CE codepoint and
determine the upstream CE-marking rate directly.
Observation points can also estimate ECN-reported end-to-end
congestion by counting packets in this direction with an E bit equal
to 1.
The upstream CE-marking rate and end-to-end ECN-reported congestion
can provide information about the downstream CE-marking rate. The
presence of E bits along with L bits, however, can somewhat confound
precise estimates of upstream and downstream CE markings if the flow
contains packets that are not ECN capable.
3.5.3. Multiple E Bits
Some protocols, such as QUIC, support separate ECN-Echo counters.
For example, Section 13.4.1 of [QUIC-TRANSPORT] describes separate
counters for ECT(0), ECT(1), and ECN-CE. To better support such
protocols, multiple E bits can be used, one per a corresponding ECN-
Echo counter.
4. Summary of Delay and Loss Marking Methods
This section summarizes the marking methods described in this
document, which proposes a toolkit of techniques that can be used
separately, partly, or all together depending on the need.
For the delay measurement, it is possible to use the Spin bit and/or
the Delay bit. A unidirectional or bidirectional observer can be
used.
+===============+======+=====================+=============+========+
| Method | # of | Available Delay | Impairments | # of |
| | bits | Metrics | Resiliency | meas. |
| | +==========+==========+ | |
| | | UniDir | BiDir | | |
| | | Observer | Observer | | |
+===============+======+==========+==========+=============+========+
| S: Spin Bit | 1 | RTT | x2, Half | low | very |
| | | | RTT | | high |
+---------------+------+----------+----------+-------------+--------+
| D: Delay | 1 | RTT | x2, Half | high | medium |
| Bit | | | RTT | | |
+---------------+------+----------+----------+-------------+--------+
| SD: Spin | 2 | RTT | x2, Half | high | very |
| Bit & Delay | | | RTT | | high |
| Bit * | | | | | |
+---------------+------+----------+----------+-------------+--------+
Table 1: Delay Comparison
x2 Same metric for both directions
* Both bits work independently; an observer could use less
accurate Spin bit measurements when Delay bit ones are
unavailable.
For the Loss measurement, each row in Table 2 represents a loss-
marking method. For each method, the table specifies the number of
bits required in the header, the available metrics using a
unidirectional or bidirectional observer, applicable protocols,
measurement fidelity, and delay.
+============+====+==========================+====+=================+
| Method |Bits| Available Loss Metrics |Prto| Measurement |
| | | | | Aspects |
| | +============+=============+ +==========+======+
| | | UniDir | BiDir | | Fidelity |Delay |
| | | Observer | Observer | | | |
+============+====+============+=============+====+==========+======+
| T: Round- | $1 | RT | x2, Half RT | * |Rate by |~6 RTT|
| Trip Loss | | | | |sampling | |
| Bit | | | | |1/3 to | |
| | | | | |1/(3*ppa) | |
| | | | | |of pkts | |
| | | | | |over 2 | |
| | | | | |RTT | |
+------------+----+------------+-------------+----+----------+------+
| Q: sQuare | 1 | Upstream | x2 | * |Rate over |N pkts|
| Bit | | | | |N pkts |(e.g.,|
| | | | | |(e.g., |64) |
| | | | | |64) | |
+------------+----+------------+-------------+----+----------+------+
| L: Loss | 1 | E2E | x2 | # |Loss |Min: |
| Event Bit | | | | |shape |RTT, |
| | | | | |(and |Max: |
| | | | | |rate) |RTO |
+------------+----+------------+-------------+----+----------+------+
| QL: sQuare | 2 | Upstream | x2 | # |see Q |see Q |
| + Loss Ev. | +------------+-------------+----+----------+------+
| Bits | | Downstream | x2 | # |see Q|L |see L |
| | +------------+-------------+----+----------+------+
| | | E2E | x2 | # |see L |see L |
+------------+----+------------+-------------+----+----------+------+
| QR: sQuare | 2 | Upstream | x2 | * |Rate over |see Q |
| + Ref. Sq. | +------------+-------------+----+N*ppa +------+
| Bits | | 3/4 RT | x2 | * |pkts (see |N*ppa |
| | +------------+-------------+----+Q bit for |pkts |
| | | !E2E | E2E, | * |N) |(see Q|
| | | | Downstream, | | |bit |
| | | | Half RT | | |for N)|
+------------+----+------------+-------------+----+----------+------+
Table 2: Loss Comparison
* All protocols
# Protocols employing loss detection (with or without pure ACK
loss detection)
$ Require a working Spin bit
! Metric relative to the opposite channel
x2 Same metric for both directions
ppa Packets-Per-Ack
Q|L See Q if Upstream loss is significant; L otherwise
E2E End to end
4.1. Implementation Considerations
By combining the information of the two tables above, it can be
deduced that the solutions with 3 bits (i.e., QL or QR + S or D) or 4
bits (i.e., QL or QR + SD) allow having more complete and resilient
measurements.
The methodologies described in the previous sections are transport
agnostic and can be applied in various situations. The choice of the
methods also depends on the specific protocol. For example, QL is a
good combination; however, if a protocol does not support, or cannot
set, the L bit, QR is the only viable solution.
5. Examples of Application
This document describes several measurement methods, but it is not
expected that all methods will be implemented together. For example,
only some of the methods described in this document (i.e., sQuare bit
and Spin bit) are utilized in [CORE-COAP-PM]. Also, the binding of a
delay signal to QUIC is partially described in Section 17.4 of
[QUIC-TRANSPORT], which adds only the Spin bit to the first byte of
the short packet header, leaving two reserved bits for future use
(see Section 17.2.2 of [QUIC-TRANSPORT]).
All signals discussed in this document have been implemented in
successful experiments for both QUIC and TCP. The application
scenarios considered allow the monitoring of the interconnections
inside a data center (Intra-DC), between data centers (Inter-DC), as
well as end-to-end large-scale data transfers. For the application
of the methods described in this document, it is assumed that the
monitored flows follow stable paths and traverse the same measurement
points.
The specific implementation details and the choice of the bits used
for the experiments with QUIC and TCP are out of scope for this
document. A specification defining the specific protocol application
is expected to discuss the implementation details depending on which
bits will be implemented in the protocol, e.g., [CORE-COAP-PM]. If
bits used for specific measurements can also be used for other
purposes by a protocol, the specification is expected to address ways
for on-path observers to disambiguate the signals or to discuss
limitations on the conditions under which the observers can expect a
valid signal.
6. Protocol Ossification Considerations
Accurate loss and delay information is not required for the operation
of any protocol, though its presence for a sufficient number of flows
is important for the operation of networks.
The delay and loss bits are amenable to "greasing" described in
[RFC8701] if the protocol designers are not ready to dedicate (and
ossify) bits used for loss reporting to this function. The greasing
could be accomplished similarly to the latency Spin bit greasing in
Section 17.4 of [QUIC-TRANSPORT]. For example, the protocol
designers could decide that a fraction of flows should not encode
loss and delay information, and instead, the bits would be set to
arbitrary values. Setting any of the bits described in this document
to arbitrary values would make the corresponding delay and loss
information resemble noise rather than the expected signal for the
flow, and the observers would need to be ready to ignore such flows.
7. Security Considerations
The methods described in this document are transport agnostic and
potentially applicable to any transport-layer protocol, and
especially valuable for encrypted protocols. These methods can be
applied to both limited domains and the Internet, depending on the
specific protocol application.
Passive loss and delay observations have been a part of the network
operations for a long time, so exposing loss and delay information to
the network does not add new security concerns for protocols that are
currently observable.
In the absence of packet loss, Q and R bits signals do not provide
any information that cannot be observed by simply counting packets
transiting a network path. In the presence of packet loss, Q and R
bits will disclose the loss, but this is information about the
environment and not the endpoint state. The L bit signal discloses
internal state of the protocol's loss-detection machinery, but this
state can often be gleaned by timing packets and observing the
congestion controller response.
The measurements described in this document do not imply that new
packets injected into the network can cause potential harm to the
network itself and to data traffic. The measurements could be harmed
by an attacker altering the marking of the packets or injecting
artificial traffic. Authentication techniques may be used where
appropriate to guard against these traffic attacks.
Hence, loss bits do not provide a viable new mechanism to attack data
integrity and secrecy.
The measurement fields introduced in this document are intended to be
included in the packets. However, it is worth mentioning that it may
be possible to use this information as a covert channel.
This document does not define a specific application, and the
described techniques can generally apply to different communication
protocols operating in different security environments. A
specification defining a specific protocol application is expected to
address the respective security considerations and must consider
specifics of the protocol and its expected operating environment.
For example, security considerations for QUIC, discussed in
Section 21 of [QUIC-TRANSPORT] and Section 9 of [QUIC-TLS], consider
a possibility of active and passive attackers in the network as well
as attacks on specific QUIC mechanisms.
7.1. Optimistic ACK Attack
A defense against an optimistic ACK attack, described in Section 21.4
of [QUIC-TRANSPORT], involves a sender randomly skipping packet
numbers to detect a receiver acknowledging packet numbers that have
never been received. The Q bit signal may inform the attacker which
packet numbers were skipped on purpose and which had been actually
lost (and are, therefore, safe for the attacker to acknowledge). To
use the Q bit for this purpose, the attacker must first receive at
least an entire Q Block of packets, which renders the attack
ineffective against a delay-sensitive congestion controller.
A protocol that is more susceptible to an optimistic ACK attack with
the loss signal provided by the Q bit and that uses a loss-based
congestion controller should shorten the current Q Block by the
number of skipped packets numbers. For example, skipping a single
packet number will invert the square signal one outgoing packet
sooner.
Similar considerations apply to the R bit, although a shortened
Reflection Block along with a matching skip in packet numbers does
not necessarily imply a lost packet, since it could be due to a lost
packet on the reverse path along with a deliberately skipped packet
by the sender.
7.2. Delay Bit with RTT Obfuscation
Theoretically, delay measurements can be used to roughly evaluate the
distance of the client from the server (using the RTT) or from any
intermediate observer (using the client-observer half-RTT). As
described in [RTT-PRIVACY], connection RTT measurements for
geolocating endpoints are usually inferior to even the most basic IP
geolocation databases. It is the variability within RTT measurements
(the jitter) that is most informative, as it can provide insight into
the operating environment of the endpoints as well as the state of
the networks (queuing delays) used by the connection.
Nevertheless, to further mask the actual RTT of the connection, the
Delay bit algorithm can be slightly modified by, for example,
delaying the client-side reflection of the delay sample by a fixed,
randomly chosen time value. This would lead an intermediate observer
to measure a delay greater than the real one.
This Additional Delay should be randomly selected by the client and
kept constant for a certain amount of time across multiple
connections. This ensures that the client-server jitter remains the
same as if no Additional Delay had been inserted. For example, a new
Additional Delay value could be generated whenever the client's IP
address changes.
Despite the Additional Delay, this Hidden Delay technique still
allows an accurate measurement of the RTT components (observer-
server) and all the intra-domain measurements used to distribute the
delay in the network. Furthermore, unlike the Delay bit, the Hidden
Delay bit does not require the use of the client reflection threshold
(1 ms by default). Removing this threshold may lead to increasing
the number of valid measurements produced by the algorithm.
Note that the Hidden Delay bit does not affect an observer's ability
to measure accurate RTT using other means, such as timing packets
exchanged during the connection establishment.
8. Privacy Considerations
To minimize unintentional exposure of information, loss bits provide
an explicit loss signal -- a preferred way to share information per
[RFC8558].
New protocols commonly have specific privacy goals, and loss
reporting must ensure that loss information does not compromise those
privacy goals. For example, [QUIC-TRANSPORT] allows changing
Connection IDs in the middle of a connection to reduce the likelihood
of a passive observer linking old and new sub-flows to the same
device (see Section 5.1 of [QUIC-TRANSPORT]). A QUIC implementation
would need to reset all counters when it changes the destination (IP
address or UDP port) or the Connection ID used for outgoing packets.
It would also need to avoid incrementing the Unreported Loss counter
for loss of packets sent to a different destination or with a
different Connection ID.
It is also worth highlighting that, if these techniques are not
widely deployed, an endpoint that uses them may be fingerprinted
based on their usage. However, since there is no release of user
data, the techniques seem unlikely to substantially increase the
existing privacy risks.
Furthermore, if there is experimental traffic with these bits set on
the network, a network operator could potentially prioritize this
marked traffic by placing it in a priority queue. This may result in
the delivery of better service, which could potentially mislead an
experiment intended to benchmark the network.
9. IANA Considerations
This document has no IANA actions.
10. References
10.1. Normative References
[ECN] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
of Explicit Congestion Notification (ECN) to IP",
RFC 3168, DOI 10.17487/RFC3168, September 2001,
<https://www.rfc-editor.org/info/rfc3168>.
[IPPM-METHODS]
Morton, A., "Active and Passive Metrics and Methods (with
Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799,
May 2016, <https://www.rfc-editor.org/info/rfc7799>.
[QUIC-TRANSPORT]
Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/info/rfc9000>.
[RFC8558] Hardie, T., Ed., "Transport Protocol Path Signals",
RFC 8558, DOI 10.17487/RFC8558, April 2019,
<https://www.rfc-editor.org/info/rfc8558>.
[TCP] Eddy, W., Ed., "Transmission Control Protocol (TCP)",
STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022,
<https://www.rfc-editor.org/info/rfc9293>.
10.2. Informative References
[ACCURATE-ECN]
Briscoe, B., Kühlewind, M., and R. Scheffenegger, "More
Accurate Explicit Congestion Notification (ECN) Feedback
in TCP", Work in Progress, Internet-Draft, draft-ietf-
tcpm-accurate-ecn-26, 24 July 2023,
<https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-
accurate-ecn-26>.
[AltMark] Fioccola, G., Ed., Cociglio, M., Mirsky, G., Mizrahi, T.,
and T. Zhou, "Alternate-Marking Method", RFC 9341,
DOI 10.17487/RFC9341, December 2022,
<https://www.rfc-editor.org/info/rfc9341>.
[ANRW19-PM-QUIC]
Bulgarella, F., Cociglio, M., Fioccola, G., Marchetto, G.,
and R. Sisto, "Performance measurements of QUIC
communications", Proceedings of the Applied Networking
Research Workshop (ANRW '19), Association for Computing
Machinery, DOI 10.1145/3340301.3341127, July 2019,
<https://doi.org/10.1145/3340301.3341127>.
[ConEx] Mathis, M. and B. Briscoe, "Congestion Exposure (ConEx)
Concepts, Abstract Mechanism, and Requirements", RFC 7713,
DOI 10.17487/RFC7713, December 2015,
<https://www.rfc-editor.org/info/rfc7713>.
[ConEx-TCP]
Kuehlewind, M., Ed. and R. Scheffenegger, "TCP
Modifications for Congestion Exposure (ConEx)", RFC 7786,
DOI 10.17487/RFC7786, May 2016,
<https://www.rfc-editor.org/info/rfc7786>.
[CORE-COAP-PM]
Fioccola, G., Zhou, T., Nilo, M., Milan, F., and F.
Bulgarella, "Constrained Application Protocol (CoAP)
Performance Measurement Option", Work in Progress,
Internet-Draft, draft-ietf-core-coap-pm-01, 19 October
2023, <https://datatracker.ietf.org/doc/html/draft-ietf-
core-coap-pm-01>.
[IPPM-SPIN]
Trammell, B., Ed., "An Explicit Transport-Layer Signal for
Hybrid RTT Measurement", Work in Progress, Internet-Draft,
draft-trammell-ippm-spin-00, 9 January 2019,
<https://datatracker.ietf.org/doc/html/draft-trammell-
ippm-spin-00>.
[IPv6AltMark]
Fioccola, G., Zhou, T., Cociglio, M., Qin, F., and R.
Pang, "IPv6 Application of the Alternate-Marking Method",
RFC 9343, DOI 10.17487/RFC9343, December 2022,
<https://www.rfc-editor.org/info/rfc9343>.
[QUIC-MANAGEABILITY]
Kühlewind, M. and B. Trammell, "Manageability of the QUIC
Transport Protocol", RFC 9312, DOI 10.17487/RFC9312,
September 2022, <https://www.rfc-editor.org/info/rfc9312>.
[QUIC-SPIN]
Trammell, B., Ed., De Vaere, P., Even, R., Fioccola, G.,
Fossati, T., Ihlar, M., Morton, A., and S. Emile, "Adding
Explicit Passive Measurability of Two-Way Latency to the
QUIC Transport Protocol", Work in Progress, Internet-
Draft, draft-trammell-quic-spin-03, 14 May 2018,
<https://datatracker.ietf.org/doc/html/draft-trammell-
quic-spin-03>.
[QUIC-TLS] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure
QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021,
<https://www.rfc-editor.org/info/rfc9001>.
[RFC8701] Benjamin, D., "Applying Generate Random Extensions And
Sustain Extensibility (GREASE) to TLS Extensibility",
RFC 8701, DOI 10.17487/RFC8701, January 2020,
<https://www.rfc-editor.org/info/rfc8701>.
[RTT-PRIVACY]
Trammell, B. and M. Kühlewind, "Revisiting the Privacy
Implications of Two-Way Internet Latency Data", Passive
and Active Measurement, pp. 73-84, Springer International
Publishing, DOI 10.1007/978-3-319-76481-8_6,
ISBN 9783319764801, March 2018,
<https://doi.org/10.1007/978-3-319-76481-8_6>.
[TRANSPORT-ENCRYPT]
Fairhurst, G. and C. Perkins, "Considerations around
Transport Header Confidentiality, Network Operations, and
the Evolution of Internet Transport Protocols", RFC 9065,
DOI 10.17487/RFC9065, July 2021,
<https://www.rfc-editor.org/info/rfc9065>.
[TSVWG-SPIN]
Trammell, B., Ed., "A Transport-Independent Explicit
Signal for Hybrid RTT Measurement", Work in Progress,
Internet-Draft, draft-trammell-tsvwg-spin-00, 2 July 2018,
<https://datatracker.ietf.org/doc/html/draft-trammell-
tsvwg-spin-00>.
[UDP-OPTIONS]
Touch, J., "Transport Options for UDP", Work in Progress,
Internet-Draft, draft-ietf-tsvwg-udp-options-23, 15
September 2023, <https://datatracker.ietf.org/doc/html/
draft-ietf-tsvwg-udp-options-23>.
[UDP-SURPLUS]
Herbert, T., "UDP Surplus Header", Work in Progress,
Internet-Draft, draft-herbert-udp-space-hdr-01, 8 July
2019, <https://datatracker.ietf.org/doc/html/draft-
herbert-udp-space-hdr-01>.
Acknowledgments
The authors would like to thank the QUIC WG for their contributions,
Christian Huitema for implementing Q and L bits in his picoquic
stack, and Ike Kunze for providing constructive reviews and helpful
suggestions.
Contributors
The following people provided valuable contributions to this
document:
Marcus Ihlar
Ericsson
Email: marcus.ihlar@ericsson.com
Jari Arkko
Ericsson
Email: jari.arkko@ericsson.com
Emile Stephan
Orange
Email: emile.stephan@orange.com
Dmitri Tikhonov
LiteSpeed Technologies
Email: dtikhonov@litespeedtech.com
Authors' Addresses
Mauro Cociglio
Telecom Italia - TIM
Via Reiss Romoli, 274
10148 Torino
Italy
Email: mauro.cociglio@outlook.com
Alexandre Ferrieux
Orange Labs
Email: alexandre.ferrieux@orange.com
Giuseppe Fioccola
Huawei Technologies
Riesstrasse, 25
80992 Munich
Germany
Email: giuseppe.fioccola@huawei.com
Igor Lubashev
Akamai Technologies
Email: ilubashe@akamai.com
Fabio Bulgarella
Telecom Italia - TIM
Via Reiss Romoli, 274
10148 Torino
Italy
Email: fabio.bulgarella@guest.telecomitalia.it
Massimo Nilo
Telecom Italia - TIM
Via Reiss Romoli, 274
10148 Torino
Italy
Email: massimo.nilo@telecomitalia.it
Isabelle Hamchaoui
Orange Labs
Email: isabelle.hamchaoui@orange.com
Riccardo Sisto
Politecnico di Torino
Email: riccardo.sisto@polito.it
|