draft-ietf-rmcat-sbd-08.txt | draft-ietf-rmcat-sbd-09.txt | |||
---|---|---|---|---|
RTP Media Congestion Avoidance Techniques D. Hayes, Ed. | RTP Media Congestion Avoidance Techniques D. Hayes, Ed. | |||
Internet-Draft S. Ferlin | Internet-Draft Simula Research Laboratory | |||
Intended status: Experimental Simula Research Laboratory | Intended status: Experimental S. Ferlin | |||
Expires: January 4, 2018 M. Welzl | Expires: May 30, 2018 | |||
M. Welzl | ||||
K. Hiorth | K. Hiorth | |||
University of Oslo | University of Oslo | |||
July 3, 2017 | November 26, 2017 | |||
Shared Bottleneck Detection for Coupled Congestion Control for RTP | Shared Bottleneck Detection for Coupled Congestion Control for RTP | |||
Media. | Media. | |||
draft-ietf-rmcat-sbd-08 | draft-ietf-rmcat-sbd-09 | |||
Abstract | Abstract | |||
This document describes a mechanism to detect whether end-to-end data | This document describes a mechanism to detect whether end-to-end data | |||
flows share a common bottleneck. It relies on summary statistics | flows share a common bottleneck. It relies on summary statistics | |||
that are calculated based on continuous measurements and used as | that are calculated based on continuous measurements and used as | |||
input to a grouping algorithm that runs wherever the knowledge is | input to a grouping algorithm that runs wherever the knowledge is | |||
needed. This mechanism complements the coupled congestion control | needed. This mechanism complements the coupled congestion control | |||
mechanism in draft-ietf-rmcat-coupled-cc. | mechanism in draft-ietf-rmcat-coupled-cc. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 4, 2018. | This Internet-Draft will expire on May 30, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. The basic mechanism . . . . . . . . . . . . . . . . . . . 3 | 1.1. The Basic Mechanism . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. The signals . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. The Signals . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2.1. Packet loss . . . . . . . . . . . . . . . . . . . . . 3 | 1.2.1. Packet Loss . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2.2. Packet delay . . . . . . . . . . . . . . . . . . . . 4 | 1.2.2. Packet Delay . . . . . . . . . . . . . . . . . . . . 4 | |||
1.2.3. Path lag . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2.3. Path Lag . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.1. Parameters and their effect . . . . . . . . . . . . . . . 6 | 2.1. Parameters and Their Effect . . . . . . . . . . . . . . . 6 | |||
2.2. Recommended parameter values . . . . . . . . . . . . . . 7 | 2.2. Recommended Parameter Values . . . . . . . . . . . . . . 7 | |||
3. Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.1. SBD feedback requirements . . . . . . . . . . . . . . . . 8 | 3.1. SBD Feedback Requirements . . . . . . . . . . . . . . . . 8 | |||
3.1.1. Feedback when all the logic is placed at the sender . 9 | 3.1.1. Feedback When All the Logic is Placed at the Sender . 9 | |||
3.1.2. Feedback when the statistics are calculated at the | 3.1.2. Feedback When the Statistics are Calculated at the | |||
receiver and SBD performed at the sender . . . . . . 9 | Receiver and SBD Performed at the Sender . . . . . . 9 | |||
3.1.3. Feedback when bottlenecks can be determined at both | 3.1.3. Feedback When Bottlenecks can be Determined at Both | |||
senders and receivers . . . . . . . . . . . . . . . . 10 | Senders and Receivers . . . . . . . . . . . . . . . . 10 | |||
3.2. Key metrics and their calculation . . . . . . . . . . . . 10 | 3.2. Key Metrics and Their Calculation . . . . . . . . . . . . 10 | |||
3.2.1. Mean delay . . . . . . . . . . . . . . . . . . . . . 10 | 3.2.1. Mean Delay . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.2.2. Skewness estimate . . . . . . . . . . . . . . . . . . 11 | 3.2.2. Skewness Estimate . . . . . . . . . . . . . . . . . . 11 | |||
3.2.3. Variability estimate . . . . . . . . . . . . . . . . 12 | 3.2.3. Variability Estimate . . . . . . . . . . . . . . . . 12 | |||
3.2.4. Oscillation estimate . . . . . . . . . . . . . . . . 12 | 3.2.4. Oscillation Estimate . . . . . . . . . . . . . . . . 12 | |||
3.2.5. Packet loss . . . . . . . . . . . . . . . . . . . . . 13 | 3.2.5. Packet Loss . . . . . . . . . . . . . . . . . . . . . 13 | |||
3.3. Flow Grouping . . . . . . . . . . . . . . . . . . . . . . 13 | 3.3. Flow Grouping . . . . . . . . . . . . . . . . . . . . . . 13 | |||
3.3.1. Flow grouping algorithm . . . . . . . . . . . . . . . 13 | 3.3.1. Flow Grouping Algorithm . . . . . . . . . . . . . . . 13 | |||
3.3.2. Using the flow group signal . . . . . . . . . . . . . 16 | 3.3.2. Using the Flow Group Signal . . . . . . . . . . . . . 16 | |||
4. Enhancements to the basic SBD algorithm . . . . . . . . . . . 16 | 4. Enhancements to the Basic SBD Algorithm . . . . . . . . . . . 16 | |||
4.1. Reducing lag and improving responsiveness . . . . . . . . 16 | 4.1. Reducing Lag and Improving Responsiveness . . . . . . . . 16 | |||
4.1.1. Improving the response of the skewness estimate . . . 17 | 4.1.1. Improving the Response of the Skewness Estimate . . . 17 | |||
4.1.2. Improving the response of the variability estimate . 19 | 4.1.2. Improving the Response of the Variability Estimate . 19 | |||
4.2. Removing oscillation noise . . . . . . . . . . . . . . . 19 | 4.2. Removing Oscillation Noise . . . . . . . . . . . . . . . 19 | |||
5. Measuring OWD . . . . . . . . . . . . . . . . . . . . . . . . 20 | 5. Measuring OWD . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
5.1. Time stamp resolution . . . . . . . . . . . . . . . . . . 20 | 5.1. Time-stamp Resolution . . . . . . . . . . . . . . . . . . 20 | |||
5.2. Clock skew . . . . . . . . . . . . . . . . . . . . . . . 20 | 5.2. Clock Skew . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
6. Expected feedback from experiments . . . . . . . . . . . . . 20 | 6. Expected Feedback from Experiments . . . . . . . . . . . . . 20 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | |||
10. Change history . . . . . . . . . . . . . . . . . . . . . . . 21 | 10. Change history . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 22 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 22 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 23 | 11.2. Informative References . . . . . . . . . . . . . . . . . 23 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
1. Introduction | 1. Introduction | |||
skipping to change at page 3, line 24 ¶ | skipping to change at page 3, line 25 ¶ | |||
capacity. This competition has the potential to increase packet loss | capacity. This competition has the potential to increase packet loss | |||
and delays. This is especially relevant for interactive applications | and delays. This is especially relevant for interactive applications | |||
that communicate simultaneously with multiple peers (such as multi- | that communicate simultaneously with multiple peers (such as multi- | |||
party video). For RTP media applications such as RTCWEB, | party video). For RTP media applications such as RTCWEB, | |||
[I-D.ietf-rmcat-coupled-cc] describes a scheme that combines the | [I-D.ietf-rmcat-coupled-cc] describes a scheme that combines the | |||
congestion controllers of flows in order to honor their priorities | congestion controllers of flows in order to honor their priorities | |||
and avoid unnecessary packet loss as well as delay. This mechanism | and avoid unnecessary packet loss as well as delay. This mechanism | |||
relies on some form of Shared Bottleneck Detection (SBD); here, a | relies on some form of Shared Bottleneck Detection (SBD); here, a | |||
measurement-based SBD approach is described. | measurement-based SBD approach is described. | |||
1.1. The basic mechanism | 1.1. The Basic Mechanism | |||
The mechanism groups flows that have similar statistical | The mechanism groups flows that have similar statistical | |||
characteristics together. Section 3.3.1 describes a simple method | characteristics together. Section 3.3.1 describes a simple method | |||
for achieving this, however, a major part of this draft is concerned | for achieving this, however, a major part of this draft is concerned | |||
with collecting suitable statistics for this purpose. | with collecting suitable statistics for this purpose. | |||
1.2. The signals | 1.2. The Signals | |||
The current Internet is unable to explicitly inform endpoints as to | The current Internet is unable to explicitly inform endpoints as to | |||
which flows share bottlenecks, so endpoints need to infer this from | which flows share bottlenecks, so endpoints need to infer this from | |||
whatever information is available to them. The mechanism described | whatever information is available to them. The mechanism described | |||
here currently utilizes packet loss and packet delay, but is not | here currently utilizes packet loss and packet delay, but is not | |||
restricted to these. As ECN becomes more prevalent it too will | restricted to these. As ECN becomes more prevalent it too will | |||
become a valuable base signal. | become a valuable base signal. | |||
1.2.1. Packet loss | 1.2.1. Packet Loss | |||
Packet loss is often a relatively rare signal. Therefore, on its own | Packet loss is often a relatively rare signal. Therefore, on its own | |||
it is of limited use for SBD, however, it is a valuable supplementary | it is of limited use for SBD, however, it is a valuable supplementary | |||
measure when it is more prevalent. | measure when it is more prevalent. | |||
1.2.2. Packet delay | 1.2.2. Packet Delay | |||
End-to-end delay measurements include noise from every device along | End-to-end delay measurements include noise from every device along | |||
the path in addition to the delay perturbation at the bottleneck | the path in addition to the delay perturbation at the bottleneck | |||
device. The noise is often significantly increased if the round-trip | device. The noise is often significantly increased if the round-trip | |||
time is used. The cleanest signal is obtained by using One-Way-Delay | time is used. The cleanest signal is obtained by using One-Way-Delay | |||
(OWD). | (OWD). | |||
Measuring absolute OWD is difficult since it requires both the sender | Measuring absolute OWD is difficult since it requires both the sender | |||
and receiver clocks to be synchronized. However, since the | and receiver clocks to be synchronized. However, since the | |||
statistics being collected are relative to the mean OWD, a relative | statistics being collected are relative to the mean OWD, a relative | |||
skipping to change at page 4, line 28 ¶ | skipping to change at page 4, line 28 ¶ | |||
for a discussion on clock skew and OWD measurements). However, in | for a discussion on clock skew and OWD measurements). However, in | |||
circumstances where it is significant, Section 5.2 outlines a way of | circumstances where it is significant, Section 5.2 outlines a way of | |||
adjusting the calculations to cater for it. | adjusting the calculations to cater for it. | |||
Each packet arriving at the bottleneck buffer may experience very | Each packet arriving at the bottleneck buffer may experience very | |||
different queue lengths, and therefore different waiting times. A | different queue lengths, and therefore different waiting times. A | |||
single OWD sample does not, therefore, characterize the path well. | single OWD sample does not, therefore, characterize the path well. | |||
However, multiple OWD measurements do reflect the distribution of | However, multiple OWD measurements do reflect the distribution of | |||
delays experienced at the bottleneck. | delays experienced at the bottleneck. | |||
1.2.3. Path lag | 1.2.3. Path Lag | |||
Flows that share a common bottleneck may traverse different paths, | Flows that share a common bottleneck may traverse different paths, | |||
and these paths will often have different base delays. This makes it | and these paths will often have different base delays. This makes it | |||
difficult to correlate changes in delay or loss. This technique uses | difficult to correlate changes in delay or loss. This technique uses | |||
the long term shape of the delay distribution as a base for | the long term shape of the delay distribution as a base for | |||
comparison to counter this. | comparison to counter this. | |||
2. Definitions | 2. Definitions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
skipping to change at page 5, line 7 ¶ | skipping to change at page 5, line 7 ¶ | |||
OWD -- One Way Delay | OWD -- One Way Delay | |||
MAD -- Mean Absolute Deviation | MAD -- Mean Absolute Deviation | |||
RTT -- Round Trip Time | RTT -- Round Trip Time | |||
SBD -- Shared Bottleneck Detection | SBD -- Shared Bottleneck Detection | |||
Conventions used in this document: | Conventions used in this document: | |||
T -- the base time interval over which measurements are | T -- the base time interval over which measurements are | |||
made. | made | |||
N -- the number of base time, T, intervals used in some | ||||
calculations. | ||||
M -- the number of base time, T, intervals used in some | N -- the number of base time, T, intervals used in some | |||
calculations. | calculations | |||
sum_T(...) -- summation of all the measurements of the variable | M -- the number of base time, T, intervals used in some | |||
in parentheses taken over the interval T | calculations, where M <= N | |||
sum(...) -- summation of terms of the variable in parentheses | sum(...) -- summation of terms of the variable in parentheses | |||
sum_N(...) -- summation of N terms of the variable in parentheses | sum_T(...) -- summation of all the measurements of the variable | |||
in parentheses taken over the interval T | ||||
sum_NT(...) -- summation of all measurements taken over the | sum_NT(...) -- summation of all measurements taken over the | |||
interval N*T | interval N*T | |||
sum_MT(...) -- summation of all measurements taken over the | sum_MT(...) -- summation of all measurements taken over the | |||
interval M*T | interval M*T | |||
E_T(...) -- the expectation or mean of the measurements of the | E_T(...) -- the expectation or mean of the measurements of the | |||
variable in parentheses over T | variable in parentheses over T | |||
E_N(...) -- the expectation or mean of the last N values of the | E_N(...) -- the expectation or mean of the last N values of | |||
variable in parentheses | the variable in parentheses | |||
E_M(...) -- the expectation or mean of the last M values of the | E_M(...) -- the expectation or mean of the last M values of | |||
variable in parentheses, where M <= N. | the variable in parentheses | |||
num_T(...) -- the count of measurements of the variable in | num_T(...) -- the count of measurements of the variable in | |||
parentheses taken in the interval T | parentheses taken in the interval T | |||
num_VM(...) -- the count of valid values of the variable in | num_MT(...) -- the count of measurements of the variable in | |||
parentheses given M records | parentheses taken in the interval NT | |||
PB -- a boolean variable indicating the particular flow | PB -- a boolean variable indicating the particular flow | |||
was identified transiting a bottleneck in the | was identified transiting a bottleneck in the | |||
previous interval T (i.e. Previously Bottleneck) | previous interval T (i.e. Previously Bottleneck) | |||
skew_est -- a measure of skewness in a OWD distribution. | skew_est -- a measure of skewness in a OWD distribution | |||
skew_base_T -- a variable used as an intermediate step in | skew_base_T -- a variable used as an intermediate step in | |||
calculating skew_est. | calculating skew_est | |||
var_est -- a measure of variability in OWD measurements. | var_est -- a measure of variability in OWD measurements | |||
var_base_T -- a variable used as an intermediate step in | ||||
calculating var_est | ||||
var_base_T -- a variable used as an intermediate step in | freq_est -- a measure of low frequency oscillation in the OWD | |||
calculating var_est. | measurements | |||
freq_est -- a measure of low frequency oscillation in the OWD | pkt_loss -- a measure of the proportion of packets lost | |||
measurements. | ||||
p_l, p_f, p_mad, c_s, c_h, p_s, p_d, p_v -- various thresholds | p_l, p_f, p_mad, c_s, c_h, p_s, p_d, p_v -- various thresholds | |||
used in the mechanism | used in the mechanism | |||
M and F -- number of values related to N | M and F -- number of values related to N | |||
2.1. Parameters and their effect | 2.1. Parameters and Their Effect | |||
T T should be long enough so that there are enough packets | T T should be long enough so that there are enough packets | |||
received during T for a useful estimate of short term mean | received during T for a useful estimate of short term mean | |||
OWD and variation statistics. Making T too large can limit | OWD and variation statistics. Making T too large can limit | |||
the efficacy of freq_est. It will also increase the response | the efficacy of freq_est. It will also increase the response | |||
time of the mechanism. Making T too small will make the | time of the mechanism. Making T too small will make the | |||
metrics noisier. | metrics noisier. | |||
N & M N should be large enough to provide a stable estimate of | N & M N should be large enough to provide a stable estimate of | |||
oscillations in OWD. Usually M=N, though having M<N may be | oscillations in OWD. Usually M=N, though having M<N may be | |||
beneficial in certain circumstances. M*T needs to be long | beneficial in certain circumstances. M*T needs to be long | |||
enough to provide stable estimates of skewness and MAD. | enough to provide stable estimates of skewness and MAD. | |||
F F determines the number of intervals over which statistics | F F determines the number of intervals over which statistics | |||
are considered to be equally weighted. When F=M recent and | are considered to be equally weighted. When F=M recent and | |||
older measurements are considered equal. Making F<M can | older measurements are considered equal. Making F<M can | |||
increase the responsiveness of the SBD mechanism. If F is | increase the responsiveness of the SBD mechanism. If F is | |||
too small, statistics will be too noisy. | too small, statistics will be too noisy. | |||
c_s c_s is the threshold in skew_est used for determining whether | c_s c_s is the threshold in skew_est used for determining whether | |||
a flow is transiting a bottleneck or not. It should be | a flow is transiting a bottleneck or not. Lower values of | |||
slightly negative so that a very lightly loaded path does not | c_s require bottlenecks to be more congested to be considered | |||
give a false indication. Setting c_s more negative makes the | for grouping by the mechanism. c_s should be set within the | |||
SBD mechanism less sensitive to transient and slight | range of +0.2 to -0.1; low enough so that lightly loaded | |||
bottlenecks. | paths do not give a false indication. | |||
p_l p_l is the threshold in pkt_loss used for determining whether | ||||
a flow is transiting a bottleneck or not. When pkt_loss is | ||||
high it becomes a better indicator of congestion than | ||||
skew_est. | ||||
c_h c_h adds hysteresis to the bottleneck determination. It | c_h c_h adds hysteresis to the bottleneck determination. It | |||
should be large enough to avoid constant switching in the | should be large enough to avoid constant switching in the | |||
determination, but low enough to ensure that grouping is not | determination, but low enough to ensure that grouping is not | |||
attempted when there is no bottleneck and the delay and loss | attempted when there is no bottleneck and the delay and loss | |||
signals cannot be relied upon. | signals cannot be relied upon. | |||
p_v p_v determines the sensitivity of freq_est to noise. Making | p_v p_v determines the sensitivity of freq_est to noise. Making | |||
it smaller will yield higher but noisier values for freq_est. | it smaller will yield higher but noisier values for freq_est. | |||
Making it too large will render it ineffective for | Making it too large will render it ineffective for | |||
determining groups. | determining groups. | |||
p_* Flows are separated when the skew_est|var_est|freq_est | p_* Flows are separated when the | |||
measure is greater than p_s|p_f|p_d|p_mad. Adjusting these | skew_est|var_est|freq_est|pkt_loss measure is greater than | |||
is a compromise between false grouping of flows that do not | p_s|p_mad|p_f|p_d. Adjusting these is a compromise between | |||
share a bottleneck and false splitting of flows that do. | false grouping of flows that do not share a bottleneck and | |||
Making them larger can help if the measures are very noisy, | false splitting of flows that do. Making them larger can | |||
but reducing the noise in the statistical measures by | help if the measures are very noisy, but reducing the noise | |||
adjusting T and N|M may be a better solution. | in the statistical measures by adjusting T and N|M may be a | |||
better solution. | ||||
2.2. Recommended parameter values | 2.2. Recommended Parameter Values | |||
Reference [Hayes-LCN14] uses T=350ms, N=50, p_l=0.1. The other | Reference [Hayes-LCN14] uses T=350ms, N=50, p_l=0.1. The other | |||
parameters have been tightened to reflect minor enhancements to the | parameters have been tightened to reflect minor enhancements to the | |||
algorithm outlined in Section 4: c_s=-0.01, p_f=p_d=0.1, p_s=0.15, | algorithm outlined in Section 4: c_s=0.1, p_f=p_d=0.1, p_s=0.15, | |||
p_mad=0.1, p_v=0.7. M=30, F=20, and c_h = 0.3 are additional | p_mad=0.1, p_v=0.7. M=30, F=20, and c_h = 0.3 are additional | |||
parameters defined in the document. These are values that seem to | parameters defined in the document. These are values that seem to | |||
work well over a wide range of practical Internet conditions. | work well over a wide range of practical Internet conditions. | |||
3. Mechanism | 3. Mechanism | |||
The mechanism described in this document is based on the observation | The mechanism described in this document is based on the observation | |||
that the distribution of delay measurements of packets that traverse | that the distribution of delay measurements of packets that traverse | |||
a common bottleneck have similar shape characteristics. These shape | a common bottleneck have similar shape characteristics. These shape | |||
characteristics are described using 3 key summary statistics: | characteristics are described using 3 key summary statistics: | |||
skipping to change at page 8, line 35 ¶ | skipping to change at page 8, line 37 ¶ | |||
raw data, or the calculated summary statistics, periodically to | raw data, or the calculated summary statistics, periodically to | |||
H1 every T. H1, having this knowledge, can determine the shared | H1 every T. H1, having this knowledge, can determine the shared | |||
bottleneck and accordingly control the send rates. | bottleneck and accordingly control the send rates. | |||
2. Receiver-side: consider that H2 is also sending media to H3, and | 2. Receiver-side: consider that H2 is also sending media to H3, and | |||
L3 is a shared bottleneck. If H3 sends summary statistics to H1 | L3 is a shared bottleneck. If H3 sends summary statistics to H1 | |||
and H2, neither H1 nor H2 alone obtain enough knowledge to detect | and H2, neither H1 nor H2 alone obtain enough knowledge to detect | |||
this shared bottleneck; H3 can however determine it by combining | this shared bottleneck; H3 can however determine it by combining | |||
the summary statistics related to H1 and H2, respectively. | the summary statistics related to H1 and H2, respectively. | |||
3.1. SBD feedback requirements | 3.1. SBD Feedback Requirements | |||
There are three possible scenarios each with different feedback | There are three possible scenarios each with different feedback | |||
requirements: | requirements: | |||
1. Both summary statistic calculations and SBD are performed at | 1. Both summary statistic calculations and SBD are performed at | |||
senders only. When sender-based congestion control is | senders only. When sender-based congestion control is | |||
implemented, this method is RECOMMENDED. | implemented, this method is RECOMMENDED. | |||
2. Summary statistics calculated on the receivers and SBD at the | 2. Summary statistics calculated on the receivers and SBD at the | |||
senders. | senders. | |||
3. Summary statistic calculations on receivers, and SBD performed at | 3. Summary statistic calculations on receivers, and SBD performed at | |||
both senders and receivers (beyond the current scope, but allows | both senders and receivers (beyond the current scope, but allows | |||
cooperative detection of bottlenecks). | cooperative detection of bottlenecks). | |||
All three possibilities are discussed for completeness in this | All three possibilities are discussed for completeness in this | |||
document, however, it is expected that feedback will take the form | document, however, it is expected that feedback will take the form of | |||
scenario 1 and operate in conjunction with sender-based congestion | scenario 1 and operate in conjunction with sender-based congestion | |||
control mechanisms. | control mechanisms. | |||
3.1.1. Feedback when all the logic is placed at the sender | 3.1.1. Feedback When All the Logic is Placed at the Sender | |||
Having the sender calculate the summary statistics and determine the | Having the sender calculate the summary statistics and determine the | |||
shared bottlenecks based on them has the advantage of placing most of | shared bottlenecks based on them has the advantage of placing most of | |||
the functionality in one place -- the sender. | the functionality in one place -- the sender. | |||
For every packet, the sender requires accurate relative OWD | For every packet, the sender requires accurate relative OWD | |||
measurements of adequate precision, along with an indication of lost | measurements of adequate precision, along with an indication of lost | |||
packets (or the proportion of packets lost over an interval). These | packets (or the proportion of packets lost over an interval). These | |||
can be provided by [I-D.dt-rmcat-feedback-message]. | can be provided by [I-D.ietf-avtcore-cc-feedback-message]. | |||
Sums, var_base_T and skew_base_T are calculated incrementally as | Sums, var_base_T and skew_base_T are calculated incrementally as | |||
relative OWD measurements are determined from the feedback messages. | relative OWD measurements are determined from the feedback messages. | |||
When the mechanism has received sufficient measurements to cover the | When the mechanism has received sufficient measurements to cover the | |||
T base time interval for all flows, the summary statistics (see | T base time interval for all flows, the summary statistics (see | |||
Section 3.2) are calculated for that T interval and flows are grouped | Section 3.2) are calculated for that T interval and flows are grouped | |||
(see Section 3.3.1). The exact timing of these calculations will | (see Section 3.3.1). The exact timing of these calculations will | |||
depend on the frequency of the feedback message. | depend on the frequency of the feedback message. | |||
3.1.2. Feedback when the statistics are calculated at the receiver and | 3.1.2. Feedback When the Statistics are Calculated at the Receiver and | |||
SBD performed at the sender | SBD Performed at the Sender | |||
This scenario minimizes feedback, but requires receivers to send | This scenario minimizes feedback, but requires receivers to send | |||
selected summary statistics at an agreed regular interval. We | selected summary statistics at an agreed regular interval. We | |||
envisage the following exchange of information to initialize the | envisage the following exchange of information to initialize the | |||
system: | system: | |||
o An initialization message from the sender to the receiver will | o An initialization message from the sender to the receiver will | |||
contain the following information: | contain the following information: | |||
* A protocol identifier (SBD=01). This is to future proof the | * A protocol identifier (SBD=01). This is to future proof the | |||
skipping to change at page 10, line 18 ¶ | skipping to change at page 10, line 18 ¶ | |||
o A response message from the receiver acknowledges this message | o A response message from the receiver acknowledges this message | |||
with a list of key metrics it supports (subset of the senders | with a list of key metrics it supports (subset of the senders | |||
list) and is able to relay back to the sender. | list) and is able to relay back to the sender. | |||
This initialization exchange may be repeated to finalize the agreed | This initialization exchange may be repeated to finalize the agreed | |||
metrics should not all be supported by all receivers. | metrics should not all be supported by all receivers. | |||
After initialization the agreed summary statistics are fed back to | After initialization the agreed summary statistics are fed back to | |||
the sender (nominally every T). | the sender (nominally every T). | |||
3.1.3. Feedback when bottlenecks can be determined at both senders and | 3.1.3. Feedback When Bottlenecks can be Determined at Both Senders and | |||
receivers | Receivers | |||
This type of mechanism is currently beyond the scope of SBD in RMCAT. | This type of mechanism is currently beyond the scope of SBD in RMCAT. | |||
It is mentioned here to ensure more advanced sender/receiver | It is mentioned here to ensure more advanced sender/receiver | |||
cooperative shared bottleneck determination mechanisms remain | cooperative shared bottleneck determination mechanisms remain | |||
possible in the future. | possible in the future. | |||
It is envisaged that such a mechanism would be initialized in a | It is envisaged that such a mechanism would be initialized in a | |||
similar manner to that described in Section 3.1.2. | similar manner to that described in Section 3.1.2. | |||
After initialization both summary statistics and shared bottleneck | After initialization both summary statistics and shared bottleneck | |||
determinations should be exchanged, nominally every T. | determinations should be exchanged, nominally every T. | |||
3.2. Key metrics and their calculation | 3.2. Key Metrics and Their Calculation | |||
Measurements are calculated over a base interval, T and summarized | Measurements are calculated over a base interval, T and summarized | |||
over N or M such intervals. All summary statistics can be calculated | over N or M such intervals. All summary statistics can be calculated | |||
incrementally. | incrementally. | |||
3.2.1. Mean delay | 3.2.1. Mean Delay | |||
The mean delay is not a useful signal for comparisons between flows | The mean delay is not a useful signal for comparisons between flows | |||
since flows may traverse quite different paths and clocks will not | since flows may traverse quite different paths and clocks will not | |||
necessarily be synchronized. However, it is a base measure for the 3 | necessarily be synchronized. However, it is a base measure for the 3 | |||
summary statistics. The mean delay, E_T(OWD), is the average one way | summary statistics. The mean delay, E_T(OWD), is the average one way | |||
delay measured over T. | delay measured over T. | |||
To facilitate the other calculations, the last N E_T(OWD) values will | To facilitate the other calculations, the last N E_T(OWD) values will | |||
need to be stored in a cyclic buffer along with the moving average of | need to be stored in a cyclic buffer along with the moving average of | |||
E_T(OWD): | E_T(OWD): | |||
mean_delay = E_M(E_T(OWD)) = sum_M(E_T(OWD)) / M | mean_delay = E_M(E_T(OWD)) = sum_M(E_T(OWD)) / M | |||
where M <= N. Setting M to be less than N allows the mechanism to be | where M <= N. Setting M to be less than N allows the mechanism to be | |||
more responsive to changes, but potentially at the expense of a | more responsive to changes, but potentially at the expense of a | |||
higher error rate (see Section 4.1 for a discussion on improving the | higher error rate (see Section 4.1 for a discussion on improving the | |||
responsiveness of the mechanism.) | responsiveness of the mechanism.) | |||
3.2.2. Skewness estimate | 3.2.2. Skewness Estimate | |||
Skewness is difficult to calculate efficiently and accurately. | Skewness is difficult to calculate efficiently and accurately. | |||
Ideally it should be calculated over the entire period (M * T) from | Ideally it should be calculated over the entire period (M * T) from | |||
the mean OWD over that period. However this would require storing | the mean OWD over that period. However this would require storing | |||
every delay measurement over the period. Instead, an estimate is | every delay measurement over the period. Instead, an estimate is | |||
made over M * T based on a calculation every T using the previous T's | made over M * T based on a calculation every T using the previous T's | |||
calculation of mean_delay. | calculation of mean_delay. | |||
The base for the skewness calculation is estimated using a counter | The base for the skewness calculation is estimated using a counter | |||
initialized every T. It increments for one way delay samples (OWD) | initialized every T. It increments for one way delay samples (OWD) | |||
skipping to change at page 12, line 5 ¶ | skipping to change at page 12, line 5 ¶ | |||
enable it to be calculated iteratively. | enable it to be calculated iteratively. | |||
skew_est = sum_MT(skew_base_T)/num_MT(OWD) | skew_est = sum_MT(skew_base_T)/num_MT(OWD) | |||
where skew_est is a number between -1 and 1 | where skew_est is a number between -1 and 1 | |||
Note: Care must be taken when implementing the comparisons to ensure | Note: Care must be taken when implementing the comparisons to ensure | |||
that rounding does not bias skew_est. It is important that the mean | that rounding does not bias skew_est. It is important that the mean | |||
is calculated with a higher precision than the samples. | is calculated with a higher precision than the samples. | |||
3.2.3. Variability estimate | 3.2.3. Variability Estimate | |||
Mean Absolute Deviation (MAD) delay is a robust variability measure | Mean Absolute Deviation (MAD) delay is a robust variability measure | |||
that copes well with different send rates. It can be implemented in | that copes well with different send rates. It can be implemented in | |||
an online manner as follows: | an online manner as follows: | |||
var_base_T = sum_T(|OWD - E_T(OWD)|) | var_base_T = sum_T(|OWD - E_T(OWD)|) | |||
where | where | |||
|x| is the absolute value of x | |x| is the absolute value of x | |||
E_T(OWD) is the mean OWD calculated in the previous T | E_T(OWD) is the mean OWD calculated in the previous T | |||
var_est = MAD_MT = sum_MT(var_base_T)/num_MT(OWD) | var_est = MAD_MT = sum_MT(var_base_T)/num_MT(OWD) | |||
For calculation of freq_est p_v=0.7 | 3.2.4. Oscillation Estimate | |||
For the grouping threshold p_mad=0.1 | ||||
3.2.4. Oscillation estimate | ||||
An estimate of the low frequency oscillation of the delay signal is | An estimate of the low frequency oscillation of the delay signal is | |||
calculated by counting and normalizing the significant mean, | calculated by counting and normalizing the significant mean, | |||
E_T(OWD), crossings of mean_delay: | E_T(OWD), crossings of mean_delay: | |||
freq_est = number_of_crossings / N | freq_est = number_of_crossings / N | |||
where we define a significant mean crossing as a crossing that | where we define a significant mean crossing as a crossing that | |||
extends p_v * var_est from mean_delay. In our experiments we | extends p_v * var_est from mean_delay. In our experiments we | |||
have found that p_v = 0.7 is a good value. | have found that p_v = 0.7 is a good value. | |||
skipping to change at page 13, line 11 ¶ | skipping to change at page 13, line 5 ¶ | |||
The counter, number_of_crossings, is incremented when there is a | The counter, number_of_crossings, is incremented when there is a | |||
significant mean crossing and decremented when a non-zero value is | significant mean crossing and decremented when a non-zero value is | |||
removed from the last_N_crossings. | removed from the last_N_crossings. | |||
This approximation of freq_est was not used in [Hayes-LCN14], which | This approximation of freq_est was not used in [Hayes-LCN14], which | |||
calculated freq_est every T using the current E_N(E_T(OWD)). Our | calculated freq_est every T using the current E_N(E_T(OWD)). Our | |||
tests show that this approximation of freq_est yields results that | tests show that this approximation of freq_est yields results that | |||
are almost identical to when the full calculation is performed every | are almost identical to when the full calculation is performed every | |||
T. | T. | |||
3.2.5. Packet loss | 3.2.5. Packet Loss | |||
The proportion of packets lost over the period NT is used as a | The proportion of packets lost over the period NT is used as a | |||
supplementary measure: | supplementary measure: | |||
pkt_loss = sum_NT(lost packets) / sum_NT(total packets) | pkt_loss = sum_NT(lost packets) / sum_NT(total packets) | |||
Note: When pkt_loss is small it is very variable, however, when | Note: When pkt_loss is small it is very variable, however, when | |||
pkt_loss is high it becomes a stable measure for making grouping | pkt_loss is high it becomes a stable measure for making grouping | |||
decisions. | decisions. | |||
3.3. Flow Grouping | 3.3. Flow Grouping | |||
3.3.1. Flow grouping algorithm | 3.3.1. Flow Grouping Algorithm | |||
The following grouping algorithm is RECOMMENDED for SBD in the RMCAT | The following grouping algorithm is RECOMMENDED for SBD in the RMCAT | |||
context and is sufficient and efficient for small to moderate numbers | context and is sufficient and efficient for small to moderate numbers | |||
of flows. For very large numbers of flows (e.g. hundreds), a more | of flows. For very large numbers of flows (e.g. hundreds), a more | |||
complex clustering algorithm may be substituted. | complex clustering algorithm may be substituted. | |||
Since no single metric is precise enough to group flows (due to | Since no single metric is precise enough to group flows (due to | |||
noise), the algorithm uses multiple metrics. Each metric offers a | noise), the algorithm uses multiple metrics. Each metric offers a | |||
different "view" of the bottleneck link characteristics, and used | different "view" of the bottleneck link characteristics, and used | |||
together they enable a more precise grouping of flows than would | together they enable a more precise grouping of flows than would | |||
skipping to change at page 14, line 13 ¶ | skipping to change at page 14, line 13 ¶ | |||
of packet loss as a supplementary measure, is used to do this: | of packet loss as a supplementary measure, is used to do this: | |||
1. Grouping will be performed on flows that are inferred to be | 1. Grouping will be performed on flows that are inferred to be | |||
traversing a bottleneck by: | traversing a bottleneck by: | |||
skew_est < c_s | skew_est < c_s | |||
|| ( skew_est < c_h & PB ) || pkt_loss > p_l | || ( skew_est < c_h & PB ) || pkt_loss > p_l | |||
The parameter c_s controls how sensitive the mechanism is in | The parameter c_s controls how sensitive the mechanism is in | |||
detecting a bottleneck. C_s = 0.0 was used in [Hayes-LCN14]. A | detecting a bottleneck. c_s = 0.0 was used in [Hayes-LCN14]. A value | |||
value of c_s = 0.05 is a little more sensitive, and c_s = -0.05 is a | of c_s = 0.1 is a little more sensitive, and c_s = -0.1 is a little | |||
little less sensitive. C_h controls the hysteresis on flows that | less sensitive. c_h controls the hysteresis on flows that were | |||
were grouped as transiting a bottleneck last time. If the test | grouped as transiting a bottleneck last time. If the test result is | |||
result is TRUE, PB=TRUE, otherwise PB=FALSE. | TRUE, PB=TRUE, otherwise PB=FALSE. | |||
These flows, flows transiting a bottleneck, are then progressively | These flows, flows transiting a bottleneck, are then progressively | |||
divided into groups based on the freq_est, var_est, and skew_est | divided into groups based on the freq_est, var_est, and skew_est | |||
summary statistics. The process proceeds according to the following | summary statistics. The process proceeds according to the following | |||
steps: | steps: | |||
2. Group flows whose difference in sorted freq_est is less than a | 2. Group flows whose difference in sorted freq_est is less than a | |||
threshold: | threshold: | |||
diff(freq_est) < p_f | diff(freq_est) < p_f | |||
skipping to change at page 16, line 5 ¶ | skipping to change at page 16, line 5 ¶ | |||
/ \ | | / \ | | |||
.-----v--. .-v------. .----v---. | .-----v--. .-v------. .----v---. | |||
5. Divide by | g_1aiA | ... | g_1aiZ | ... | g_nzxZ | | 5. Divide by | g_1aiA | ... | g_1aiZ | ... | g_nzxZ | | |||
pkt_loss '--------' '--------' '--------' | pkt_loss '--------' '--------' '--------' | |||
(when applicable) | (when applicable) | |||
Simple grouping algorithm. | Simple grouping algorithm. | |||
Figure 2 | Figure 2 | |||
3.3.2. Using the flow group signal | 3.3.2. Using the Flow Group Signal | |||
Grouping decisions can be made every T from the second T, however | Grouping decisions can be made every T from the second T, however | |||
they will not attain their full design accuracy until after the | they will not attain their full design accuracy until after the | |||
2*N'th T interval. We recommend that grouping decisions are not made | 2*N'th T interval. We recommend that grouping decisions are not made | |||
until 2*M T intervals. | until 2*M T intervals. | |||
Network conditions, and even the congestion controllers, can cause | Network conditions, and even the congestion controllers, can cause | |||
bottlenecks to fluctuate. A coupled congestion controller MAY decide | bottlenecks to fluctuate. A coupled congestion controller MAY decide | |||
only to couple groups that remain stable, say grouped together 90% of | only to couple groups that remain stable, say grouped together 90% of | |||
the time, depending on its objectives. Recommendations concerning | the time, depending on its objectives. Recommendations concerning | |||
this are beyond the scope of this document and will be specific to | this are beyond the scope of this document and will be specific to | |||
the coupled congestion controllers objectives. | the coupled congestion controller's objectives. | |||
4. Enhancements to the basic SBD algorithm | 4. Enhancements to the Basic SBD Algorithm | |||
The SBD algorithm as specified in Section 3 was found to work well | The SBD algorithm as specified in Section 3 was found to work well | |||
for a broad variety of conditions. The following enhancements to the | for a broad variety of conditions. The following enhancements to the | |||
basic mechanisms have been found to significantly improve the | basic mechanisms have been found to significantly improve the | |||
algorithm's performance under some circumstances and SHOULD be | algorithm's performance under some circumstances and SHOULD be | |||
implemented. These "tweaks" are described separately to keep the | implemented. These "tweaks" are described separately to keep the | |||
main description succinct. | main description succinct. | |||
4.1. Reducing lag and improving responsiveness | 4.1. Reducing Lag and Improving Responsiveness | |||
This section describes how to improve the responsiveness of the basic | This section describes how to improve the responsiveness of the basic | |||
algorithm. | algorithm. | |||
Measurement based shared bottleneck detection makes decisions in the | Measurement based shared bottleneck detection makes decisions in the | |||
present based on what has been measured in the past. This means that | present based on what has been measured in the past. This means that | |||
there is always a lag in responding to changing conditions. This | there is always a lag in responding to changing conditions. This | |||
mechanism is based on summary statistics taken over (N*T) seconds. | mechanism is based on summary statistics taken over (N*T) seconds. | |||
This mechanism can be made more responsive to changing conditions by: | This mechanism can be made more responsive to changing conditions by: | |||
skipping to change at page 17, line 9 ¶ | skipping to change at page 17, line 9 ¶ | |||
exponentially weighted moving average weights drop off too quickly | exponentially weighted moving average weights drop off too quickly | |||
for our requirements and have an infinite tail. A simple linearly | for our requirements and have an infinite tail. A simple linearly | |||
declining weighted moving average also does not provide enough weight | declining weighted moving average also does not provide enough weight | |||
to the most recent measurements. We propose a piecewise linear | to the most recent measurements. We propose a piecewise linear | |||
distribution of weights, such that the first section (samples 1:F) is | distribution of weights, such that the first section (samples 1:F) is | |||
flat as in a simple moving average, and the second section (samples | flat as in a simple moving average, and the second section (samples | |||
F+1:M) is linearly declining weights to the end of the averaging | F+1:M) is linearly declining weights to the end of the averaging | |||
window. We choose integer weights, which allows incremental | window. We choose integer weights, which allows incremental | |||
calculation without introducing rounding errors. | calculation without introducing rounding errors. | |||
4.1.1. Improving the response of the skewness estimate | 4.1.1. Improving the Response of the Skewness Estimate | |||
The weighted moving average for skew_est, based on skew_est in | The weighted moving average for skew_est, based on skew_est in | |||
Section 3.2.2, can be calculated as follows: | Section 3.2.2, can be calculated as follows: | |||
skew_est = ((M-F+1)*sum(skew_base_T(1:F)) | skew_est = ((M-F+1)*sum(skew_base_T(1:F)) | |||
+ sum([(M-F):1].*skew_base_T(F+1:M))) | + sum([(M-F):1].*skew_base_T(F+1:M))) | |||
/ ((M-F+1)*sum(numsampT(1:F)) | / ((M-F+1)*sum(numsampT(1:F)) | |||
skipping to change at page 19, line 5 ¶ | skipping to change at page 19, line 5 ¶ | |||
11. sum_skewbase = sum_skewbase + skewbase_hist(F+1) - old_skewbase | 11. sum_skewbase = sum_skewbase + skewbase_hist(F+1) - old_skewbase | |||
12. sum_numsamp = sum_numsamp + numsampT(1) - old_numsampT | 12. sum_numsamp = sum_numsamp + numsampT(1) - old_numsampT | |||
13. skew_est = ((M-F+1)*F_skewbase + W_D_skewbase) / | 13. skew_est = ((M-F+1)*F_skewbase + W_D_skewbase) / | |||
((M-F+1)*F_numsamp+W_D_numsamp) | ((M-F+1)*F_numsamp+W_D_numsamp) | |||
Where cycle(....) refers to the operation on a cyclic buffer where | Where cycle(....) refers to the operation on a cyclic buffer where | |||
the start of the buffer is now the next element in the buffer. | the start of the buffer is now the next element in the buffer. | |||
4.1.2. Improving the response of the variability estimate | 4.1.2. Improving the Response of the Variability Estimate | |||
Similarly the weighted moving average for var_est can be calculated | Similarly the weighted moving average for var_est can be calculated | |||
as follows: | as follows: | |||
var_est = ((M-F+1)*sum(var_base_T(1:F)) | var_est = ((M-F+1)*sum(var_base_T(1:F)) | |||
+ sum([(M-F):1].*var_base_T(F+1:M))) | + sum([(M-F):1].*var_base_T(F+1:M))) | |||
/ ((M-F+1)*sum(numsampT(1:F)) | / ((M-F+1)*sum(numsampT(1:F)) | |||
skipping to change at page 19, line 31 ¶ | skipping to change at page 19, line 31 ¶ | |||
integer values 1 through to F, and [(M-F):1] refers to an array of | integer values 1 through to F, and [(M-F):1] refers to an array of | |||
the integer values (M-F) declining through to 1; and ".*" is the | the integer values (M-F) declining through to 1; and ".*" is the | |||
array scalar dot product operator. When removing oscillation noise | array scalar dot product operator. When removing oscillation noise | |||
(see Section 4.2) this calculation must be adjusted to allow for | (see Section 4.2) this calculation must be adjusted to allow for | |||
invalid var_base_T records. | invalid var_base_T records. | |||
Var_est can be calculated incrementally in the same way as skew_est | Var_est can be calculated incrementally in the same way as skew_est | |||
in Section 4.1.1. However, note that the buffer numsampT is used for | in Section 4.1.1. However, note that the buffer numsampT is used for | |||
both calculations so the operations on it should not be repeated. | both calculations so the operations on it should not be repeated. | |||
4.2. Removing oscillation noise | 4.2. Removing Oscillation Noise | |||
When a path has no bottleneck, var_est will be very small and the | When a path has no bottleneck, var_est will be very small and the | |||
recorded significant mean crossings will be the result of path noise. | recorded significant mean crossings will be the result of path noise. | |||
Thus up to N-1 meaningless mean crossings can be a source of error at | Thus up to N-1 meaningless mean crossings can be a source of error at | |||
the point a link becomes a bottleneck and flows traversing it begin | the point a link becomes a bottleneck and flows traversing it begin | |||
to be grouped. | to be grouped. | |||
To remove this source of noise from freq_est: | To remove this source of noise from freq_est: | |||
1. Set the current var_base_T = NaN (a value representing an invalid | 1. Set the current var_base_T = NaN (a value representing an invalid | |||
skipping to change at page 20, line 20 ¶ | skipping to change at page 20, line 20 ¶ | |||
This section discusses the OWD measurements required for this | This section discusses the OWD measurements required for this | |||
algorithm to detect shared bottlenecks. | algorithm to detect shared bottlenecks. | |||
The SBD mechanism described in this document relies on differences | The SBD mechanism described in this document relies on differences | |||
between OWD measurements to avoid the practical problems with | between OWD measurements to avoid the practical problems with | |||
measuring absolute OWD (see [Hayes-LCN14] section IIIC). Since all | measuring absolute OWD (see [Hayes-LCN14] section IIIC). Since all | |||
summary statistics are relative to the mean OWD and sender/receiver | summary statistics are relative to the mean OWD and sender/receiver | |||
clock offsets should be approximately constant over the measurement | clock offsets should be approximately constant over the measurement | |||
periods, the offset is subtracted out in the calculation. | periods, the offset is subtracted out in the calculation. | |||
5.1. Time stamp resolution | 5.1. Time-stamp Resolution | |||
The SBD mechanism requires timing information precise enough to be | The SBD mechanism requires timing information precise enough to be | |||
able to make comparisons. As a rule of thumb, the time resolution | able to make comparisons. As a rule of thumb, the time resolution | |||
should be less than one hundredth of a typical path's range of | should be less than one hundredth of a typical path's range of | |||
delays. In general, the coarser the time resolution, the more care | delays. In general, the coarser the time resolution, the more care | |||
that needs to be taken to ensure rounding errors do not bias the | that needs to be taken to ensure rounding errors do not bias the | |||
skewness calculation. Timing information described by | skewness calculation. Timing information described by | |||
[I-D.dt-rmcat-feedback-message] should be sufficient for the sender | [I-D.ietf-avtcore-cc-feedback-message] should be sufficient for the | |||
to calculate relative OWD. | sender to calculate relative OWD. | |||
5.2. Clock skew | 5.2. Clock Skew | |||
Generally sender and receiver clock skew will be too small to cause | Generally sender and receiver clock skew will be too small to cause | |||
significant errors in the estimators. Skew_est and freq_est are the | significant errors in the estimators. Skew_est and freq_est are the | |||
most sensitive to this type of noise due to their use of a mean OWD | most sensitive to this type of noise due to their use of a mean OWD | |||
calculated over a longer interval. In circumstances where clock skew | calculated over a longer interval. In circumstances where clock skew | |||
is high, basing skew_est only on the previous T's mean and ignoring | is high, basing skew_est only on the previous T's mean and ignoring | |||
freq_est provides a noisier but reliable signal. | freq_est provides a noisier but reliable signal. | |||
A more sophisticated method is to estimate the effect the clock skew | A more sophisticated method is to estimate the effect the clock skew | |||
is having on the summary statistics, and then adjust statistics | is having on the summary statistics, and then adjust statistics | |||
accordingly. There are a number of techniques in the literature, | accordingly. There are a number of techniques in the literature, | |||
including [Zhang-Infocom02]. | including [Zhang-Infocom02]. | |||
6. Expected feedback from experiments | 6. Expected Feedback from Experiments | |||
The algorithm described in this memo has so far been evaluated using | The algorithm described in this memo has so far been evaluated using | |||
simulations. Real network tests using the proposed congestion | simulations and small scale experiments. Real network tests using | |||
control algorithms will help confirm the default parameter choice. | RMCAT congestion control algorithms will help confirm the default | |||
For example, the time interval T may need to be made longer if the | parameter choice. For example, the time interval T may need to be | |||
packet rate is very low. Implementers and testers are invited to | made longer if the packet rate is very low. Implementers and testers | |||
document their findings in an Internet draft. | are invited to document their findings in an Internet draft. | |||
7. Acknowledgments | 7. Acknowledgments | |||
This work was part-funded by the European Community under its Seventh | This work was part-funded by the European Community under its Seventh | |||
Framework Programme through the Reducing Internet Transport Latency | Framework Programme through the Reducing Internet Transport Latency | |||
(RITE) project (ICT-317700). The views expressed are solely those of | (RITE) project (ICT-317700). The views expressed are solely those of | |||
the authors. | the authors. | |||
8. IANA Considerations | 8. IANA Considerations | |||
This memo includes no request to IANA. | This memo includes no request to IANA. | |||
9. Security Considerations | 9. Security Considerations | |||
The security considerations of RFC 3550 [RFC3550], RFC 4585 | The security considerations of RFC 3550 [RFC3550], RFC 4585 | |||
[RFC4585], and RFC 5124 [RFC5124] are expected to apply. | [RFC4585], and RFC 5124 [RFC5124] are expected to apply. | |||
Non-authenticated RTCP packets carrying OWD measurements, shared | Non-authenticated RTCP packets carrying OWD measurements, shared | |||
bottleneck indications, and/or summary statistics could allow | bottleneck indications, and/or summary statistics could allow | |||
attackers to alter the bottleneck sharing characteristics for private | attackers to alter the bottleneck sharing characteristics for private | |||
gain or disruption of other parties communication. | gain or disruption of other parties' communication. | |||
10. Change history | 10. Change history | |||
Changes made to this document: | Changes made to this document: | |||
WG-08->WG-09 : Removed definitions that are no longer used. Added | ||||
pkt_loss definition. Refined c_s recommendation. | ||||
WG-07->WG-08 : Updates addressing https://www.ietf.org/mail- | WG-07->WG-08 : Updates addressing https://www.ietf.org/mail- | |||
archive/web/rmcat/current/msg01671.html Mainly | archive/web/rmcat/current/msg01671.html Mainly | |||
clarifications. | clarifications. | |||
WG-06->WG-07 : Updates addressing | WG-06->WG-07 : Updates addressing | |||
https://mailarchive.ietf.org/arch/msg/ | https://mailarchive.ietf.org/arch/msg/ | |||
rmcat/80B6q4nI7carGcf_ddBwx7nKvOw. Mainly | rmcat/80B6q4nI7carGcf_ddBwx7nKvOw. Mainly | |||
clarifications. Figure 2 to supplement grouping | clarifications. Figure 2 to supplement grouping | |||
algorithm description. | algorithm description. | |||
skipping to change at page 22, line 49 ¶ | skipping to change at page 23, line 8 ¶ | |||
00->01 : Revisions to terminology for clarity | 00->01 : Revisions to terminology for clarity | |||
11. References | 11. References | |||
11.1. Normative References | 11.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
11.2. Informative References | 11.2. Informative References | |||
[Hayes-LCN14] | [Hayes-LCN14] | |||
Hayes, D., Ferlin, S., and M. Welzl, "Practical Passive | Hayes, D., Ferlin, S., and M. Welzl, "Practical Passive | |||
Shared Bottleneck Detection using Shape Summary | Shared Bottleneck Detection using Shape Summary | |||
Statistics", Proc. the IEEE Local Computer Networks | Statistics", Proc. the IEEE Local Computer Networks | |||
(LCN) pp150-158, September 2014, | (LCN) pp150-158, September 2014, | |||
<http://heim.ifi.uio.no/davihay/ | <http://heim.ifi.uio.no/davihay/ | |||
hayes14__pract_passiv_shared_bottl_detec-abstract.html>. | hayes14__pract_passiv_shared_bottl_detec-abstract.html>. | |||
[I-D.dt-rmcat-feedback-message] | [I-D.ietf-avtcore-cc-feedback-message] | |||
Sarker, Z., Perkins, C., Singh, V., and M. Ramalho, "RTP | Sarker, Z., Perkins, C., Singh, V., and M. Ramalho, "RTP | |||
Control Protocol (RTCP) Feedback for Congestion Control", | Control Protocol (RTCP) Feedback for Congestion Control", | |||
draft-dt-rmcat-feedback-message-02 (work in progress), May | draft-ietf-avtcore-cc-feedback-message-00 (work in | |||
2017. | progress), October 2017. | |||
[I-D.ietf-rmcat-coupled-cc] | [I-D.ietf-rmcat-coupled-cc] | |||
Islam, S., Welzl, M., and S. Gjessing, "Coupled congestion | Islam, S., Welzl, M., and S. Gjessing, "Coupled congestion | |||
control for RTP media", draft-ietf-rmcat-coupled-cc-06 | control for RTP media", draft-ietf-rmcat-coupled-cc-07 | |||
(work in progress), March 2017. | (work in progress), September 2017. | |||
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | |||
Jacobson, "RTP: A Transport Protocol for Real-Time | Jacobson, "RTP: A Transport Protocol for Real-Time | |||
Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | |||
July 2003, <http://www.rfc-editor.org/info/rfc3550>. | July 2003, <https://www.rfc-editor.org/info/rfc3550>. | |||
[RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | |||
"Extended RTP Profile for Real-time Transport Control | "Extended RTP Profile for Real-time Transport Control | |||
Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, | Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, | |||
DOI 10.17487/RFC4585, July 2006, | DOI 10.17487/RFC4585, July 2006, | |||
<http://www.rfc-editor.org/info/rfc4585>. | <https://www.rfc-editor.org/info/rfc4585>. | |||
[RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for | [RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for | |||
Real-time Transport Control Protocol (RTCP)-Based Feedback | Real-time Transport Control Protocol (RTCP)-Based Feedback | |||
(RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, February | (RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, February | |||
2008, <http://www.rfc-editor.org/info/rfc5124>. | 2008, <https://www.rfc-editor.org/info/rfc5124>. | |||
[RFC6817] Shalunov, S., Hazel, G., Iyengar, J., and M. Kuehlewind, | [RFC6817] Shalunov, S., Hazel, G., Iyengar, J., and M. Kuehlewind, | |||
"Low Extra Delay Background Transport (LEDBAT)", RFC 6817, | "Low Extra Delay Background Transport (LEDBAT)", RFC 6817, | |||
DOI 10.17487/RFC6817, December 2012, | DOI 10.17487/RFC6817, December 2012, | |||
<http://www.rfc-editor.org/info/rfc6817>. | <https://www.rfc-editor.org/info/rfc6817>. | |||
[Zhang-Infocom02] | [Zhang-Infocom02] | |||
Zhang, L., Liu, Z., and H. Xia, "Clock synchronization | Zhang, L., Liu, Z., and H. Xia, "Clock synchronization | |||
algorithms for network measurements", Proc. the IEEE | algorithms for network measurements", Proc. the IEEE | |||
International Conference on Computer Communications | International Conference on Computer Communications | |||
(INFOCOM) pp160-169, September 2002, | (INFOCOM) pp160-169, September 2002, | |||
<http://dx.doi.org/10.1109/INFCOM.2002.1019257>. | <http://dx.doi.org/10.1109/INFCOM.2002.1019257>. | |||
Authors' Addresses | Authors' Addresses | |||
David Hayes (editor) | David Hayes (editor) | |||
Simula Research Laboratory | Simula Research Laboratory | |||
P.O. Box 134 | P.O. Box 134 | |||
Lysaker 1325 | Lysaker 1325 | |||
Norway | Norway | |||
Phone: +47 2284 5566 | ||||
Email: davidh@simula.no | Email: davidh@simula.no | |||
Simone Ferlin | Simone Ferlin | |||
Simula Research Laboratory | ||||
P.O.Box 134 | ||||
Lysaker 1325 | ||||
Norway | ||||
Phone: +47 4072 0702 | Email: simone@ferlin.io | |||
Email: ferlin@simula.no | ||||
Michael Welzl | Michael Welzl | |||
University of Oslo | University of Oslo | |||
PO Box 1080 Blindern | PO Box 1080 Blindern | |||
Oslo N-0316 | Oslo N-0316 | |||
Norway | Norway | |||
Phone: +47 2285 2420 | ||||
Email: michawe@ifi.uio.no | Email: michawe@ifi.uio.no | |||
Kristian Hiorth | Kristian Hiorth | |||
University of Oslo | University of Oslo | |||
PO Box 1080 Blindern | PO Box 1080 Blindern | |||
Oslo N-0316 | Oslo N-0316 | |||
Norway | Norway | |||
Email: kristahi@ifi.uio.no | Email: kristahi@ifi.uio.no | |||
End of changes. 82 change blocks. | ||||
156 lines changed or deleted | 153 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |