Internet Engineering Task Force (IETF) D. Hayes, Ed. Request for Comments: 8382 S. Ferlin Category: Experimental Simula Research Laboratory ISSN: 2070-1721 M. Welzl K. Hiorth University of Oslo June 2018
Internet Engineering Task Force (IETF) D. Hayes, Ed. Request for Comments: 8382 S. Ferlin Category: Experimental Simula Research Laboratory ISSN: 2070-1721 M. Welzl K. Hiorth University of Oslo June 2018
Shared Bottleneck Detection for Coupled Congestion Control for RTP Media
RTP介质耦合拥塞控制的共享瓶颈检测
Abstract
摘要
This document describes a mechanism to detect whether end-to-end data flows share a common bottleneck. This mechanism relies on summary statistics that are calculated based on continuous measurements and used as input to a grouping algorithm that runs wherever the knowledge is needed.
本文档描述了一种检测端到端数据流是否共享公共瓶颈的机制。该机制依赖于基于连续测量计算的汇总统计数据,并将其用作分组算法的输入,该算法在需要知识的地方运行。
Status of This Memo
关于下段备忘
This document is not an Internet Standards Track specification; it is published for examination, experimental implementation, and evaluation.
本文件不是互联网标准跟踪规范;它是为检查、实验实施和评估而发布的。
This document defines an Experimental Protocol for the Internet community. 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.
本文档为互联网社区定义了一个实验协议。本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。并非IESG批准的所有文件都适用于任何级别的互联网标准;见RFC 7841第2节。
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/rfc8382.
有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问https://www.rfc-editor.org/info/rfc8382.
Copyright Notice
版权公告
Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved.
版权所有(c)2018 IETF信托基金和确定为文件作者的人员。版权所有。
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 Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(https://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。
Table of Contents
目录
1. Introduction ....................................................4 1.1. The Basic Mechanism ........................................4 1.2. The Signals ................................................4 1.2.1. Packet Loss .........................................4 1.2.2. Packet Delay ........................................5 1.2.3. Path Lag ............................................5 2. Definitions .....................................................6 2.1. Parameters and Their Effects ...............................7 2.2. Recommended Parameter Values ...............................8 3. Mechanism .......................................................9 3.1. SBD Feedback Requirements .................................10 3.1.1. Feedback When All the Logic Is Placed at the Sender .........................................10 3.1.2. Feedback When the Statistics Are Calculated at the Receiver and SBD Is Performed at the Sender ........11 3.1.3. Feedback When Bottlenecks Can Be Determined at Both Senders and Receivers ......................11 3.2. Key Metrics and Their Calculation .........................12 3.2.1. Mean Delay .........................................12 3.2.2. Skewness Estimate ..................................12 3.2.3. Variability Estimate ...............................13 3.2.4. Oscillation Estimate ...............................13 3.2.5. Packet Loss ........................................14 3.3. Flow Grouping .............................................14 3.3.1. Flow-Grouping Algorithm ............................14 3.3.2. Using the Flow Group Signal ........................18 4. Enhancements to the Basic SBD Algorithm ........................18 4.1. Reducing Lag and Improving Responsiveness .................18 4.1.1. Improving the Response of the Skewness Estimate ....19 4.1.2. Improving the Response of the Variability Estimate ...........................................20 4.2. Removing Oscillation Noise ................................21 5. Measuring OWD ..................................................21 5.1. Timestamp Resolution ......................................21 5.2. Clock Skew ................................................22 6. Expected Feedback from Experiments .............................22 7. IANA Considerations ............................................22 8. Security Considerations ........................................22 9. References .....................................................23 9.1. Normative References ......................................23 9.2. Informative References ....................................23 Acknowledgments ...................................................25 Authors' Addresses ................................................25
1. Introduction ....................................................4 1.1. The Basic Mechanism ........................................4 1.2. The Signals ................................................4 1.2.1. Packet Loss .........................................4 1.2.2. Packet Delay ........................................5 1.2.3. Path Lag ............................................5 2. Definitions .....................................................6 2.1. Parameters and Their Effects ...............................7 2.2. Recommended Parameter Values ...............................8 3. Mechanism .......................................................9 3.1. SBD Feedback Requirements .................................10 3.1.1. Feedback When All the Logic Is Placed at the Sender .........................................10 3.1.2. Feedback When the Statistics Are Calculated at the Receiver and SBD Is Performed at the Sender ........11 3.1.3. Feedback When Bottlenecks Can Be Determined at Both Senders and Receivers ......................11 3.2. Key Metrics and Their Calculation .........................12 3.2.1. Mean Delay .........................................12 3.2.2. Skewness Estimate ..................................12 3.2.3. Variability Estimate ...............................13 3.2.4. Oscillation Estimate ...............................13 3.2.5. Packet Loss ........................................14 3.3. Flow Grouping .............................................14 3.3.1. Flow-Grouping Algorithm ............................14 3.3.2. Using the Flow Group Signal ........................18 4. Enhancements to the Basic SBD Algorithm ........................18 4.1. Reducing Lag and Improving Responsiveness .................18 4.1.1. Improving the Response of the Skewness Estimate ....19 4.1.2. Improving the Response of the Variability Estimate ...........................................20 4.2. Removing Oscillation Noise ................................21 5. Measuring OWD ..................................................21 5.1. Timestamp Resolution ......................................21 5.2. Clock Skew ................................................22 6. Expected Feedback from Experiments .............................22 7. IANA Considerations ............................................22 8. Security Considerations ........................................22 9. References .....................................................23 9.1. Normative References ......................................23 9.2. Informative References ....................................23 Acknowledgments ...................................................25 Authors' Addresses ................................................25
In the Internet, it is not normally known whether flows (e.g., TCP connections or UDP data streams) traverse the same bottlenecks. Even flows that have the same sender and receiver may take different paths and may or may not share a bottleneck. Flows that share a bottleneck link usually compete with one another for their share of the capacity. This competition has the potential to increase packet loss and delays. This is especially relevant for interactive applications that communicate simultaneously with multiple peers (such as multi-party video). For RTP media applications such as RTCWEB, [RTP-COUPLED-CC] describes a scheme that combines the congestion controllers of flows in order to honor their priorities and avoid unnecessary packet loss as well as delay. This mechanism relies on some form of Shared Bottleneck Detection (SBD); here, a measurement-based SBD approach is described.
在Internet中,通常不知道流(例如TCP连接或UDP数据流)是否穿过相同的瓶颈。即使是具有相同发送方和接收方的流也可能采用不同的路径,可能共享瓶颈,也可能不共享瓶颈。共享瓶颈链路的流通常相互竞争容量份额。这种竞争有可能增加数据包丢失和延迟。这对于同时与多个对等方(如多方视频)通信的交互式应用程序尤其重要。对于RTP媒体应用程序,如RTCWEB,[RTP-COUPLED-CC]描述了一种方案,该方案结合了流的拥塞控制器,以满足其优先级并避免不必要的数据包丢失和延迟。该机制依赖于某种形式的共享瓶颈检测(SBD);这里,描述了一种基于测量的SBD方法。
The mechanism groups flows that have similar statistical characteristics together. Section 3.3.1 describes a simple method for achieving this; however, a major part of this document is concerned with collecting suitable statistics for this purpose.
该机制将具有相似统计特征的流分组在一起。第3.3.1节描述了实现这一点的简单方法;然而,本文件的主要部分涉及为此目的收集适当的统计数据。
The current Internet is unable to explicitly inform endpoints as to which flows share bottlenecks, so endpoints need to infer this from whatever information is available to them. The mechanism described here currently utilizes packet loss and packet delay but is not restricted to these. As Explicit Congestion Notification (ECN) becomes more prevalent, it too will become a valuable base signal that can be correlated to detect shared bottlenecks.
当前的互联网无法明确告知端点哪些流共享瓶颈,因此端点需要从他们可用的任何信息中推断出这一点。这里描述的机制目前利用分组丢失和分组延迟,但不限于这些。随着显式拥塞通知(ECN)变得越来越普遍,它也将成为一个有价值的基本信号,可以关联起来检测共享瓶颈。
Packet loss is often a relatively infrequent indication that a flow traverses a bottleneck. Therefore, on its own it is of limited use for SBD; however, it is a valuable supplementary measure when it is more prevalent (refer to [RFC7680], Section 2.5 for measuring packet loss).
数据包丢失通常是流穿越瓶颈的相对不频繁的指示。因此,它本身对SBD的用途有限;但是,在更普遍的情况下,它是一种有价值的补充措施(有关测量数据包丢失的信息,请参阅[RFC7680],第2.5节)。
End-to-end delay measurements include noise from every device along the path, in addition to the delay perturbation at the bottleneck device. The noise is often significantly increased if the round-trip time is used. The cleanest signal is obtained by using One-Way Delay (OWD) (refer to [RFC7679], Section 3 for a definition of OWD).
除了瓶颈设备处的延迟扰动外,端到端延迟测量还包括来自路径上每个设备的噪声。如果使用往返时间,噪音通常会显著增加。通过使用单向延迟(OWD)获得最干净的信号(有关OWD的定义,请参阅[RFC7679],第3节)。
Measuring absolute OWD is difficult, since it requires both the sender and receiver clocks to be synchronized. However, since the statistics being collected are relative to the mean OWD, a relative OWD measurement is sufficient. Clock skew is not usually significant over the time intervals used by this SBD mechanism (see [RFC6817], Appendix A.2 for a discussion on clock skew and OWD measurements). However, in circumstances where it is significant, Section 5.2 outlines a way of adjusting the calculations to cater to it.
测量绝对OWD很困难,因为它要求发送方和接收方时钟同步。然而,由于所收集的统计数据是相对于平均OWD的,因此相对OWD测量就足够了。在SBD机制使用的时间间隔内,时钟偏差通常不显著(有关时钟偏差和OWD测量的讨论,请参见[RFC6817],附录A.2)。然而,在重要的情况下,第5.2节概述了调整计算以满足其要求的方法。
Each packet arriving at the bottleneck buffer may experience very different queue lengths and, therefore, different waiting times. A single OWD sample does not, therefore, characterize the path well. However, multiple OWD measurements do reflect the distribution of delays experienced at the bottleneck.
到达瓶颈缓冲区的每个数据包可能经历非常不同的队列长度,因此等待时间也不同。因此,单个OWD样本不能很好地描述路径。然而,多个OWD测量确实反映了瓶颈处经历的延迟分布。
Flows that share a common bottleneck may traverse different paths, and these paths will often have different base delays. This makes it difficult to correlate changes in delay or loss. This technique uses the long-term shape of the delay distribution as a base for comparison to counter this.
共享一个共同瓶颈的流可能会穿越不同的路径,这些路径通常具有不同的基本延迟。这使得很难关联延迟或损失的变化。该技术使用延迟分布的长期形状作为比较的基础,以应对这种情况。
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”在所有大写字母出现时(如图所示)应按照BCP 14[RFC2119][RFC8174]所述进行解释。
Acronyms used in this document:
本文件中使用的首字母缩略词:
OWD - One-Way Delay
单程延迟
MAD - Mean Absolute Deviation
平均绝对偏差
SBD - Shared Bottleneck Detection
共享瓶颈检测
Conventions used in this document:
本文件中使用的约定:
T the base time interval over which measurements are made
T进行测量的基本时间间隔
N the number of base time, T, intervals used in some calculations
N某些计算中使用的基准时间T和间隔数
M the number of base time, T, intervals used in some calculations, where M <= N
M指某些计算中使用的基准时间T间隔数,其中M<=N
sum(...) summation of terms of the variable in parentheses
sum(…)括号中变量项的总和
sum_T(...) summation of all the measurements of the variable in parentheses taken over the interval T
sum_T(…)在区间T内,括号内变量的所有测量值的总和
sum_NT(...) summation of all measurements taken over the interval N*T
求和(…)间隔N*T内所有测量值的总和
sum_MT(...) summation of all measurements taken over the interval M*T
求和(…)间隔M*T内所有测量值的总和
E_T(...) the expectation or mean of the measurements of the variable in parentheses over T
E_T(…)T上括号内变量测量值的期望值或平均值
E_N(...) the expectation or mean of the last N values of the variable in parentheses
E_N(…)括号中变量最后N个值的期望值或平均值
E_M(...) the expectation or mean of the last M values of the variable in parentheses
E_M(…)括号中变量最后M个值的期望值或平均值
num_T(...) the count of measurements of the variable in parentheses taken in the interval T
num_T(…)在时间间隔T内,括号内变量的测量计数
num_MT(...) the count of measurements of the variable in parentheses taken in the interval M*T
num_MT(…)间隔M*T内括号内变量的测量计数
PB a boolean variable indicating that the particular flow was identified transiting a bottleneck in the previous interval T (i.e., "Previously Bottleneck")
PB一个布尔变量,指示特定流在前一个间隔T(即“前一个瓶颈”)中通过瓶颈被识别
skew_est a measure of skewness in an OWD distribution
偏度是OWD分布中偏度的度量
skew_base_T a variable used as an intermediate step in calculating skew_est
skew_base_T在计算skew_est时用作中间步骤的变量
var_est a measure of variability in OWD measurements
var_是OWD测量中可变性的度量
var_base_T a variable used as an intermediate step in calculating var_est
var_base_T在计算var_est时用作中间步骤的变量
freq_est a measure of low-frequency oscillation in the OWD measurements
频率是OWD测量中低频振荡的测量值
pkt_loss a measure of the proportion of packets lost
pkt_丢失—数据包丢失比例的度量
p_l, p_f, p_mad, c_s, c_h, p_s, p_d, p_v various thresholds used in the mechanism
p_l、p_f、p_mad、c_s、c_h、p_s、p_d、p_v机制中使用的各种阈值
M and F number of values related to N
M和F与N相关的值的数量
T T should be long enough so that there are enough packets received during T for a useful estimate of the short-term mean OWD and variation statistics. Making T too large can limit the efficacy of freq_est. It will also increase the response time of the mechanism. Making T too small will make the metrics noisier.
T应足够长,以便在T期间接收到足够的数据包,以便对短期平均OWD和变化统计进行有用的估计。使T过大可能会限制freq_\est的功效。它还将增加该机制的响应时间。将T设置得太小会使度量值更嘈杂。
N and M N should be large enough to provide a stable estimate of oscillations in OWD. Often, M=N is just fine, though having M<N may be beneficial in certain circumstances. M*T needs to be long enough to provide stable estimates of skewness and MAD.
N和mn应足够大,以提供OWD中振荡的稳定估计。通常,M=N很好,尽管在某些情况下,M<N可能是有益的。M*T需要足够长的时间来提供偏度和MAD的稳定估计。
F F determines the number of intervals over which statistics are considered to be equally weighted. When F=M, recent and older measurements are considered equal. Making F<M can increase the responsiveness of the SBD mechanism. If F is too small, statistics will be too noisy.
F确定统计数据被认为具有相等权重的区间数。当F=M时,最近和以前的测量值被视为相等。使F<M可增加SBD机制的反应性。如果F太小,统计数据就会太嘈杂。
c_s c_s is the threshold in skew_est used for determining whether a flow is transiting a bottleneck or not. Lower values of c_s require bottlenecks to be more congested to be considered for grouping by the mechanism. c_s should be set within the range of +0.2 to -0.1 -- low enough so that lightly loaded paths do not give a false indication.
c_s c_s是skew_est中用于确定流是否正在通过瓶颈的阈值。较低的c_值要求瓶颈更加拥挤,以便通过机制进行分组。c_应设置在+0.2至-0.1范围内——足够低,以便轻载路径不会给出错误指示。
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.
p_l p_l是pkt_损失中的阈值,用于确定流是否正在通过瓶颈。当pkt_损失较高时,它比skew_est成为更好的拥塞指示器。
c_h c_h adds hysteresis to the bottleneck determination. It should be large enough to avoid constant switching in the determination but low enough to ensure that grouping is not attempted when there is no bottleneck and the delay and loss signals cannot be relied upon.
c_h c_h增加了瓶颈确定的滞后性。它应该足够大,以避免在确定中不断切换,但足够低,以确保在没有瓶颈且不能依赖延迟和丢失信号时,不会尝试分组。
p_v p_v determines the sensitivity of freq_est to noise. Making it smaller will yield higher but noisier values for freq_est. Making it too large will render it ineffective for determining groups.
p_v p_v决定频率对噪声的灵敏度。使其更小将产生更高但噪音更大的频率值。使其过大将使其无法确定组。
p_* Flows are separated when the skew_est|var_est|freq_est|pkt_loss measure is greater than p_s|p_mad|p_f|p_d. Adjusting these is a compromise between false grouping of flows that do not share a bottleneck and false splitting of flows that do. Making them larger can help if the measures are very noisy, but reducing the noise in the statistical measures by adjusting T and N|M may be a better solution.
当歪斜损失度量值大于p|s | p|mad | p|f | p|d时,p|流被分离。调整这些是不共享瓶颈的流的错误分组和共享瓶颈的流的错误分割之间的折衷。如果度量值非常嘈杂,将它们变大可能会有所帮助,但通过调整T和N|M来减少统计度量值中的噪声可能是更好的解决方案。
[Hayes-LCN14] uses T=350ms and N=50. The other parameters have been tightened to reflect minor enhancements to the 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 parameters defined in that document. These are values that seem to work well over a wide range of practical Internet conditions.
[Hayes-LCN14]使用T=350ms和N=50。其他参数已收紧,以反映对第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和c_h=0.3是该文件中定义的附加参数。这些价值观似乎在广泛的实际互联网条件下运行良好。
The mechanism described in this document is based on the observation that when flows traverse a common bottleneck, each flow's distribution of packet delay measurements has similar shape characteristics. These shape characteristics are described using three key summary statistics --
本文中描述的机制基于这样一个观察:当流穿过一个公共瓶颈时,每个流的包延迟测量分布具有相似的形状特征。这些形状特征使用三个关键汇总统计信息进行描述--
1. variability estimate (var_est; see Section 3.2.3)
1. 可变性估计(var_est;见第3.2.3节)
2. skewness estimate (skew_est; see Section 3.2.2)
2. 偏态估计(偏态估计;见第3.2.2节)
3. oscillation estimate (freq_est; see Section 3.2.4)
3. 振荡估计(频率测试;见第3.2.4节)
-- with packet loss (pkt_loss; see Section 3.2.5) used as a supplementary statistic.
--数据包丢失(pkt_丢失;见第3.2.5节)作为补充统计数据。
Summary statistics help to address both the noise and the path lag problems by describing the general shape over a relatively long period of time. Each summary statistic portrays a "view" of the bottleneck link characteristics, and when used together, they provide a robust discrimination for grouping flows. An RTP media device may be both a sender and a receiver. SBD can be performed at either a sender or a receiver, or both.
摘要统计通过描述相对较长时间内的一般形状,有助于解决噪声和路径滞后问题。每个摘要统计数据都描述了瓶颈链路特征的“视图”,当一起使用时,它们为分组流提供了强大的区分。RTP媒体设备可以是发送方和接收方。SBD可以在发送方或接收方执行,也可以同时在发送方和接收方执行。
In Figure 1, there are two possible locations for shared bottleneck detection: the sender side and the receiver side.
在图1中,共享瓶颈检测有两个可能的位置:发送方和接收方。
+----+ | H2 | +----+ | | L2 | +----+ L1 | L3 +----+ | H1 |------|------| H3 | +----+ +----+
+----+ | H2 | +----+ | | L2 | +----+ L1 | L3 +----+ | H1 |------|------| H3 | +----+ +----+
A network with three hosts (H1, H2, H3) and three links (L1, L2, L3)
具有三台主机(H1、H2、H3)和三条链路(L1、L2、L3)的网络
Figure 1
图1
1. Sender side: Consider a situation where host H1 sends media streams to hosts H2 and H3, and L1 is a shared bottleneck. H2 and H3 measure the OWD and packet loss and periodically send either this raw data or the calculated summary statistics to H1 every T. H1, having this knowledge, can determine the shared bottleneck and accordingly control the send rates.
1. 发送方:考虑主机H1向主机H2和H3发送媒体流的情况,L1是共享瓶颈。H2和H3测量OWD和数据包丢失,并每隔T定期向H1发送该原始数据或计算出的汇总统计数据。H1了解这一点后,可以确定共享瓶颈,并相应地控制发送速率。
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 and H2, neither H1 nor H2 alone obtains enough knowledge to detect this shared bottleneck; H3 can, however, determine it by combining the summary statistics related to H1 and H2, respectively.
2. 接收方:考虑到H2也将媒体发送到H3,L3是共享瓶颈。如果H3向H1和H2发送汇总统计信息,则H1和H2都无法获得足够的知识来检测此共享瓶颈;然而,H3可以通过组合分别与H1和H2相关的汇总统计数据来确定。
There are three possible scenarios, each with different feedback requirements:
有三种可能的情况,每种情况都有不同的反馈要求:
1. Both summary statistic calculations and SBD are performed at senders only. When sender-based congestion control is implemented, this method is RECOMMENDED.
1. 汇总统计计算和SBD仅在发送方执行。在实现基于发送方的拥塞控制时,建议使用此方法。
2. Summary statistics are calculated on the receivers, and SBD is performed at the senders.
2. 在接收器上计算摘要统计信息,在发送器上执行SBD。
3. Summary statistic calculations are performed on receivers, and SBD is performed at both senders and receivers (beyond the scope of this document, but allows cooperative detection of bottlenecks).
3. 在接收器上执行汇总统计计算,在发送器和接收器上执行SBD(超出本文档的范围,但允许协作检测瓶颈)。
All three possibilities are discussed for completeness in this document; however, it is expected that feedback will take the form of scenario 1 and operate in conjunction with sender-based congestion control mechanisms.
本文件讨论了所有三种可能性的完整性;然而,预计反馈将采用场景1的形式,并与基于发送方的拥塞控制机制一起运行。
Having the sender calculate the summary statistics and determine the shared bottlenecks based on them has the advantage of placing most of the functionality in one place -- the sender.
让发送方计算摘要统计信息并基于这些统计信息确定共享瓶颈具有将大部分功能放在一个地方(发送方)的优势。
For every packet, the sender requires accurate relative OWD measurements of adequate precision, along with an indication of lost packets (or the proportion of packets lost over an interval). A method to provide such measurement data with the RTP Control Protocol (RTCP) is described in [RTCP-CC-FEEDBACK].
对于每个数据包,发送方都需要足够精度的准确相对OWD测量,以及丢失数据包的指示(或在一段时间间隔内丢失的数据包的比例)。[RTCP-CC-FEEDBACK]中描述了通过RTP控制协议(RTCP)提供此类测量数据的方法。
Sums, var_base_T, and skew_base_T are calculated incrementally as relative OWD measurements are determined from the feedback messages. When the mechanism has received sufficient measurements to cover the base time interval T for all flows, the summary statistics (see 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 depend on the frequency of the feedback message.
当根据反馈消息确定相对OWD测量值时,以增量方式计算总和、var_base_T和skew_base_T。当机构已收到足够的测量数据以涵盖所有流量的基本时间间隔T时,将计算该T间隔的汇总统计数据(见第3.2节),并对流量进行分组(见第3.3.1节)。这些计算的准确时间取决于反馈信息的频率。
3.1.2. Feedback When the Statistics Are Calculated at the Receiver and SBD Is Performed at the Sender
3.1.2. 在接收方计算统计数据,在发送方执行SBD时的反馈
This scenario minimizes feedback but requires receivers to send selected summary statistics at an agreed-upon regular interval. We envisage the following exchange of information to initialize the system:
此场景最小化反馈,但要求接收者以约定的定期间隔发送选定的汇总统计信息。我们设想通过以下信息交换来初始化系统:
o An initialization message from the sender to the receiver will contain the following information:
o 从发送方到接收方的初始化消息将包含以下信息:
* A list of which key metrics should be collected and relayed back to the sender out of a possibly extensible set (pkt_loss, var_est, skew_est, and freq_est). The grouping algorithm described in this document requires all four of these metrics, and receivers MUST be able to provide them, but future algorithms may be able to exploit other metrics (e.g., metrics based on explicit network signals).
* 从可能的可扩展集合(pkt_loss、var_est、skew_est和freq_est)中收集并中继回发送方的关键度量的列表。本文档中描述的分组算法需要所有四个指标,接收机必须能够提供这些指标,但未来的算法可能能够利用其他指标(例如,基于显式网络信号的指标)。
* The values of T, N, and M, and the necessary resolution and precision of the relayed statistics.
* T、N和M的值,以及中继统计数据的必要分辨率和精度。
o A response message from the receiver acknowledges this message with a list of key metrics it supports (subset of the sender's list) and is able to relay back to the sender.
o 来自接收者的响应消息使用其支持的关键指标列表(发送者列表的子集)确认该消息,并且能够中继回发送者。
This initialization exchange may be repeated to finalize the set of metrics that will be used. All agreed-upon metrics need to be supported by all receivers. It is also recommended that an identifier for the SBD algorithm version be included in the initialization message from the sender, so that potential advances in SBD technology can be easily deployed. For reference, the mechanism outlined in this document has the identifier "SBD=01".
可以重复此初始化交换以最终确定将使用的度量集。所有约定的指标需要得到所有接收者的支持。还建议在发送方的初始化消息中包含SBD算法版本的标识符,以便可以轻松部署SBD技术的潜在进步。作为参考,本文件中概述的机制具有标识符“SBD=01”。
After initialization, the agreed-upon summary statistics are fed back to the sender (nominally every T).
初始化后,商定的汇总统计信息反馈给发送方(名义上每T一次)。
3.1.3. Feedback When Bottlenecks Can Be Determined at Both Senders and Receivers
3.1.3. 当发送方和接收方都能确定瓶颈时的反馈
This type of mechanism is currently beyond the scope of the SBD algorithm described in this document. It is mentioned here to ensure that sender/receiver cooperative shared bottleneck determination mechanisms that are more advanced remain possible in the future.
这种类型的机制目前超出了本文档中描述的SBD算法的范围。这里提到这一点是为了确保更高级的发送方/接收方协作共享瓶颈确定机制在将来仍然是可能的。
It is envisaged that such a mechanism would be initialized in a manner similar to that described in Section 3.1.2.
设想以类似于第3.1.2节所述的方式初始化该机制。
After initialization, both summary statistics and shared bottleneck determinations should be exchanged, nominally every T.
初始化之后,应该交换摘要统计数据和共享瓶颈确定,通常每T交换一次。
Measurements are calculated over a base interval (T) and summarized over N or M such intervals. All summary statistics can be calculated incrementally.
在基本间隔(T)上计算测量值,并在N或M个此类间隔上汇总测量值。所有汇总统计数据都可以增量计算。
The mean delay is not a useful signal for comparisons between flows, since flows may traverse quite different paths and clocks will not necessarily be synchronized. However, it is a base measure for the three summary statistics. The mean delay, E_T(OWD), is the average OWD measured over T.
平均延迟对于流之间的比较不是有用的信号,因为流可能穿过完全不同的路径,并且时钟不一定同步。然而,这是三项汇总统计的基本衡量标准。平均延迟E_T(OWD)是在T上测量的平均OWD。
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 E_T(OWD):
为了便于其他计算,最后的N 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 more responsive to changes, but potentially at the expense of a higher error rate (see Section 4.1 for a discussion on improving the responsiveness of the mechanism).
其中,M<=N。将M设置为小于N可使机制对更改做出更大的响应,但可能会以更高的错误率为代价(有关提高机制响应能力的讨论,请参见第4.1节)。
Skewness is difficult to calculate efficiently and accurately. Ideally, it should be calculated over the entire period (M*T) from the mean OWD over that period. However, this would require storing 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 calculation of mean_delay.
偏度很难高效准确地计算。理想情况下,应根据该期间的平均OWD计算整个期间(M*T)。但是,这需要存储该期间的每个延迟测量值。相反,基于使用前一个T的平均延迟计算的每T的计算,对M*T进行估计。
The base for the skewness calculation is estimated using a counter initialized every T. It increments for OWD samples below the mean and decrements for OWD above the mean. So, for each OWD sample:
使用每T初始化一个计数器来估计偏度计算的基础。它在平均值以下递增OWD样本,在平均值以上递减OWD样本。因此,对于每个OWD样本:
if (OWD < mean_delay) skew_base_T++
if (OWD < mean_delay) skew_base_T++
if (OWD > mean_delay) skew_base_T--
如果(OWD>平均延迟)偏离基准--
mean_delay does not include the mean of the current T interval to enable it to be calculated iteratively.
mean_delay不包括当前T间隔的平均值,以使其能够迭代计算。
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.
其中,skew_est是一个介于-1和1之间的数字。
Note: Care must be taken when implementing the comparisons to ensure that rounding does not bias skew_est. It is important that the mean is calculated with a higher precision than the samples.
注意:在进行比较时必须小心,以确保四舍五入不会导致偏差。重要的是,平均值的计算精度高于样本。
Mean Absolute Deviation (MAD) is a robust variability measure that copes well with different send rates. It can be implemented in an online manner as follows:
平均绝对偏差(MAD)是一种稳健的可变性度量,能够很好地处理不同的发送速率。它可以在线实现,如下所示:
var_base_T = sum_T(|OWD - E_T(OWD)|)
var_base_T = sum_T(|OWD - E_T(OWD)|)
where
哪里
|x| is the absolute value of x
|x |是x的绝对值
E_T(OWD) is the mean OWD calculated in the previous T
E_T(OWD)是在前一个T中计算的平均OWD
var_est = MAD_MT = sum_MT(var_base_T) / num_MT(OWD)
var_est = MAD_MT = sum_MT(var_base_T) / num_MT(OWD)
An estimate of the low-frequency oscillation of the delay signal is calculated by counting and normalizing the significant mean, E_T(OWD), crossings of mean_delay:
通过对平均延迟的有效平均值E_T(OWD)交叉进行计数和归一化,计算延迟信号的低频振荡估计值:
freq_est = number_of_crossings / N
freq_est = number_of_crossings / N
where we define a significant mean crossing as a crossing that extends p_v * var_est from mean_delay. In our experiments, we have found that p_v = 0.7 is a good value.
其中,我们将显著平均交叉定义为从平均延迟延伸p_v*var_est的交叉。在我们的实验中,我们发现p_v=0.7是一个很好的值。
freq_est is a number between 0 and 1. freq_est can be approximated incrementally as follows:
freq__est是一个介于0和1之间的数字。频率可以按如下方式递增近似:
o With each new calculation of E_T(OWD), a decision is made as to whether this value of E_T(OWD) significantly crosses the current long-term mean, mean_delay, with respect to the previous significant mean crossing.
o 在每次新的E_T(OWD)计算中,决定E_T(OWD)的值是否显著超过当前长期平均值,即相对于先前的显著平均值交叉,平均延迟。
o A cyclic buffer, last_N_crossings, records a 1 if there is a significant mean crossing; otherwise, it records a 0.
o 循环缓冲区(last_N_crossings)记录1,如果存在显著的平均交叉;否则,它将记录一个0。
o The counter, number_of_crossings, is incremented when there is a significant mean crossing and decremented when a non-zero value is removed from the last_N_crossings.
o 当存在有效的平均交叉时,计数器(交叉数)递增,当从最后一次交叉中移除非零值时,计数器(交叉数)递减。
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 tests show that this approximation of freq_est yields results that are almost identical to when the full calculation is performed every T.
[Hayes-LCN14]中没有使用这种近似的freq_est,它使用当前E_N(E_T(OWD))每T计算一次freq_est。我们的测试表明,这种频率近似产生的结果几乎与每T进行一次完整计算时的结果相同。
The proportion of packets lost over the period NT is used as a supplementary measure:
在周期NT内丢失的数据包的比例用作补充度量:
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 low, it is very variable; however, when pkt_loss is high, it becomes a stable measure for making grouping decisions.
注:当pkt_损失较低时,变化很大;然而,当pkt_损失较高时,它成为做出分组决策的一个稳定指标。
The following grouping algorithm is RECOMMENDED for the use of SBD with coupled congestion control for RTP media [RTP-COUPLED-CC] and is sufficient and efficient for small to moderate numbers of flows. For very large numbers of flows (e.g., hundreds), a more complex clustering algorithm may be substituted.
以下分组算法推荐用于带RTP介质耦合拥塞控制的SBD[RTP-coupled-CC],并且对于小到中等数量的流是足够和有效的。对于非常大数量的流(例如,数百个),可以使用更复杂的聚类算法来代替。
Since no single metric is precise enough to group flows (due to noise), the algorithm uses multiple metrics. Each metric offers a different "view" of the bottleneck link characteristics, and used together they enable a more precise grouping of flows than would otherwise be possible.
由于没有一个指标精确到足以对流进行分组(由于噪声),因此该算法使用多个指标。每个指标都提供了瓶颈链路特性的不同“视图”,它们一起使用可以实现比其他方法更精确的流分组。
Flows determined to be transiting a bottleneck are successively divided into groups based on freq_est, var_est, skew_est, and pkt_loss.
确定要通过瓶颈的流根据freq_est、var_est、skew_est和pkt_损失依次划分为组。
The first step is to determine which flows are transiting a bottleneck. This is important, since if a flow is not transiting a bottleneck its delay-based metrics will not describe the bottleneck but will instead describe the "noise" from the rest of the path. Skewness, with the proportion of packet loss as a supplementary measure, is used to do this:
第一步是确定哪些流正在通过瓶颈。这一点很重要,因为如果流未通过瓶颈,则其基于延迟的度量将不会描述瓶颈,而是描述来自路径其余部分的“噪声”。偏度(作为补充测量数据包丢失的比例)用于实现这一点:
1. Grouping will be performed on flows that are inferred to be traversing a bottleneck by:
1. 分组将通过以下方式在推断为通过瓶颈的流上执行:
skew_est < c_s
歪斜
|| ( skew_est < c_h & PB ) || pkt_loss > p_l
||(歪斜度<c|h&PB)| pkt|u损失>p|l
The parameter c_s controls how sensitive the mechanism is in detecting a bottleneck. c_s = 0.0 was used in [Hayes-LCN14]. A value of c_s = 0.1 is a little more sensitive, and c_s = -0.1 is a little less sensitive. c_h controls the hysteresis on flows that were grouped as transiting a bottleneck the previous time. If the test result is TRUE, PB=TRUE; otherwise, PB=FALSE.
参数c_s控制机制在检测瓶颈时的灵敏度。[Hayes-LCN14]中使用了c_s=0.0。c_s=0.1的值更敏感,c_s=-0.1的值更不敏感。c_h控制上一次分组为通过瓶颈的流的滞后。如果测试结果为真,PB=真;否则,PB=FALSE。
These flows (i.e., flows transiting a bottleneck) are then progressively divided into groups based on the freq_est, var_est, and skew_est summary statistics. The process proceeds according to the following steps:
然后,这些流(即通过瓶颈的流)根据频率、变量和偏差汇总统计信息逐步划分为组。该过程按照以下步骤进行:
2. Group flows whose difference in sorted freq_est is less than a threshold:
2. 排序频率差小于阈值的组流:
diff(freq_est) < p_f
差异(频率测试)<p\f
3. Subdivide the groups obtained in step 2 by grouping flows whose difference in sorted E_M(var_est) (highest to lowest) is less than a threshold:
3. 通过对排序E_M(var_est)(从高到低)差值小于阈值的流进行分组,细分步骤2中获得的组:
diff(var_est) < (p_mad * var_est)
diff(var_est) < (p_mad * var_est)
The threshold, (p_mad * var_est), is with respect to the highest value in the difference.
阈值(p_mad*var_est)与差值中的最高值有关。
4. Subdivide the groups obtained in step 3 by grouping flows whose difference in sorted skew_est is less than a threshold:
4. 通过对排序偏差差值小于阈值的流进行分组,细分步骤3中获得的组:
diff(skew_est) < p_s
差异(歪斜)
5. When packet loss is high enough to be reliable (pkt_loss > p_l), subdivide the groups obtained in step 4 by grouping flows whose difference is less than a threshold:
5. 当数据包丢失高到足以可靠(pkt_loss>p_l)时,通过对差异小于阈值的流进行分组来细分步骤4中获得的组:
diff(pkt_loss) < (p_d * pkt_loss)
diff(pkt_loss) < (p_d * pkt_loss)
The threshold, (p_d * pkt_loss), is with respect to the highest value in the difference.
阈值(p_d*pkt_损失)与差值中的最高值有关。
This procedure involves sorting estimates from highest to lowest. It is simple to implement and is efficient for small numbers of flows (up to 10-20). Figure 2 illustrates this algorithm.
该程序包括从最高到最低对估计进行排序。它易于实现,并且对于少量流(最多10-20个)是有效的。图2说明了该算法。
********* * Flows * ***.**.** / ' / '--. / \ .---v--. .----v---. 1. Flows traversing | Cong | | UnCong | a bottleneck '-.--.-' '--------' / \ / \ / \ .--v--. v-----. 2. Divide by | g_1 | ... | g_n | freq_est '---.-. '----.. / \ / \ / '--. v '------. / \ \ .----v-. .-v----. .---v--. 3. Divide by | g_1a | ... | g_1z | ... | g_nz | var_est '---.-.' '-----.. '-.-.--' / \ / \ / | / '-----. v v v | / \ | .-v-----. .-v-----. .---v---. 4. Divide by | g_1ai | ... | g_1ax | ... | g_nzx | skew_est '----.-.' '------.. '-.-.---' / \ / \ / | / '--. v v v | / \ | .-----v--. .-v------. .----v---. 5. Divide by | g_1aiA | ... | g_1aiZ | ... | g_nzxZ | pkt_loss '--------' '--------' '--------' (when applicable)
********* * Flows * ***.**.** / ' / '--. / \ .---v--. .----v---. 1. Flows traversing | Cong | | UnCong | a bottleneck '-.--.-' '--------' / \ / \ / \ .--v--. v-----. 2. Divide by | g_1 | ... | g_n | freq_est '---.-. '----.. / \ / \ / '--. v '------. / \ \ .----v-. .-v----. .---v--. 3. Divide by | g_1a | ... | g_1z | ... | g_nz | var_est '---.-.' '-----.. '-.-.--' / \ / \ / | / '-----. v v v | / \ | .-v-----. .-v-----. .---v---. 4. Divide by | g_1ai | ... | g_1ax | ... | g_nzx | skew_est '----.-.' '------.. '-.-.---' / \ / \ / | / '--. v v v | / \ | .-----v--. .-v------. .----v---. 5. Divide by | g_1aiA | ... | g_1aiZ | ... | g_nzxZ | pkt_loss '--------' '--------' '--------' (when applicable)
Simple grouping algorithm
简单分组算法
Figure 2
图2
Grouping decisions can be made every T from the second T; however, they will not attain their full design accuracy until after the 2*Nth T interval. We recommend that grouping decisions not be made until 2*M T intervals.
从第二个T开始,可以每T作出分组决策;然而,在第2*n个T间隔之后,它们才能达到其全部设计精度。我们建议在2*M T间隔之前不要做出分组决定。
Network conditions, and even the congestion controllers, can cause bottlenecks to fluctuate. A coupled congestion controller MAY decide only to couple groups that remain stable, say grouped together 90% of the time, depending on its objectives. Recommendations concerning this are beyond the scope of this document and will be specific to the coupled congestion controller's objectives.
网络状况,甚至拥塞控制器,都可能导致瓶颈波动。耦合拥塞控制器可能仅决定耦合保持稳定的组,例如90%的时间分组在一起,这取决于其目标。与此相关的建议超出了本文件的范围,将针对耦合拥塞控制器的目标。
The SBD algorithm as specified in Section 3 was found to work well for a broad variety of conditions. The following enhancements to the basic mechanisms have been found to significantly improve the algorithm's performance under some circumstances and SHOULD be implemented. These "tweaks" are described separately to keep the main description succinct.
发现第3节中规定的SBD算法适用于各种条件。在某些情况下,对基本机制的以下增强可以显著提高算法的性能,应该予以实现。这些“调整”单独描述,以保持主要描述简洁。
This section describes how to improve the responsiveness of the basic algorithm.
本节介绍如何提高基本算法的响应能力。
Measurement-based shared bottleneck detection makes decisions in the present based on what has been measured in the past. This means that there is always a lag in responding to changing conditions. This mechanism is based on summary statistics taken over (N*T) seconds. This mechanism can be made more responsive to changing conditions by:
基于度量的共享瓶颈检测在当前基于过去度量的内容做出决策。这意味着在对变化的条件做出响应时总是存在滞后。此机制基于占用(N*T)秒的汇总统计数据。该机制可通过以下方式对不断变化的条件做出更大的响应:
1. Reducing N and/or M, but at the expense of having metrics that are less accurate, and/or
1. 减少N和/或M,但代价是具有不太准确的度量,和/或
2. Exploiting the fact that measurements that are more recent are more valuable than older measurements and weighting them accordingly.
2. 利用较新的测量值比较旧的测量值更有价值这一事实,并相应地对其进行加权。
Although measurements that are more recent are more valuable, older measurements are still needed to gain an accurate estimate of the distribution descriptor we are measuring. Unfortunately, the simple exponentially weighted moving average weights drop off too quickly for our requirements and have an infinite tail. A simple linearly declining weighted moving average also does not provide enough weight to the measurements that are most recent. We propose a piecewise
虽然较新的测量值更有价值,但仍然需要较旧的测量值来获得我们正在测量的分布描述符的准确估计值。不幸的是,简单的指数加权移动平均权重对于我们的需求下降得太快,并且有一个无限的尾巴。简单的线性递减加权移动平均线也不能为最近的测量提供足够的权重。我们提出了一个分段的解决方案
linear distribution of weights, such that the first section (samples 1:F) is 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 window. We choose integer weights; this allows incremental calculation without introducing rounding errors.
权重的线性分布,使得第一部分(样本1:F)与简单移动平均中的一样平坦,而第二部分(样本F+1:M)是线性递减权重,直到平均窗口结束。我们选择整数权重;这允许在不引入舍入误差的情况下进行增量计算。
The weighted moving average for skew_est, based on skew_est as defined in Section 3.2.2, can be calculated as follows:
基于第3.2.2节中定义的skew_est,skew_est的加权移动平均值可计算如下:
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)))
+ 求和([(M-F):1].*skew_base_T(F+1:M)))
/ ((M-F+1)*sum(numsampT(1:F))
/ ((M-F+1)*sum(numsampT(1:F))
+ sum([(M-F):1].*numsampT(F+1:M)))
+ 总和([(M-F):1].*numsampT(F+1:M)))
where numsampT is an array of the number of OWD samples in each T (i.e., num_T(OWD)), and numsampT(1) is the most recent; skew_base_T(1) is the most recent calculation of skew_base_T; 1:F refers to the 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 array scalar dot product operator.
其中,numsampT是每个T中OWD样本数的数组(即num_T(OWD)),numsampT(1)是最近的;skew_base_T(1)是skew_base_T的最新计算;1:F表示从1到F的整数值,[(M-F):1]表示从1到1递减的整数值数组(M-F);“*”是数组标量点积运算符。
To calculate this weighted skew_est incrementally:
要以增量方式计算此加权偏斜,请执行以下操作:
Notation: F_ = flat portion, D_ = declining portion, W_ = weighted component
Notation: F_ = flat portion, D_ = declining portion, W_ = weighted component
Initialize: sum_skewbase = 0, F_skewbase = 0, W_D_skewbase = 0
Initialize: sum_skewbase = 0, F_skewbase = 0, W_D_skewbase = 0
skewbase_hist = buffer of length M, initialized to 0
skewbase_hist=长度为M的缓冲区,初始化为0
numsampT = buffer of length M, initialized to 0
numsampT=长度为M的缓冲区,初始化为0
Steps per iteration:
每次迭代的步骤:
1. old_skewbase = skewbase_hist(M)
1. old_skewbase=skewbase_hist(M)
2. old_numsampT = numsampT(M)
2. old_numsampT=numsampT(M)
3. cycle(skewbase_hist)
3. 循环(斜基历史)
4. cycle(numsampT)
4. 循环(numsampT)
5. numsampT(1) = num_T(OWD)
5. numsampT(1)=num_T(OWD)
6. skewbase_hist(1) = skew_base_T
6. skewbase_hist(1)=skew_base_T
7. F_skewbase = F_skewbase + skew_base_T - skewbase_hist(F+1)
7. F_skewbase=F_skewbase+skew_base\u T-skewbase\u hist(F+1)
8. W_D_skewbase = W_D_skewbase + (M-F)*skewbase_hist(F+1) - sum_skewbase
8. W_D_skewbase=W_D_skewbase+(M-F)*skewbase_hist(F+1)-和_skewbase
9. W_D_numsamp = W_D_numsamp + (M-F)*numsampT(F+1) - sum_numsamp + F_numsamp
9. W_D_numsamp=W_D_numsamp+(M-F)*numsampT(F+1)-和
10. F_numsamp = F_numsamp + numsampT(1) - numsampT(F+1)
10. F_numsamp=F_numsamp+numsampT(1)-numsampT(F+1)
11. sum_skewbase = sum_skewbase + skewbase_hist(F+1) - old_skewbase
11. sum_skewbase=sum_skewbase+skewbase_hist(F+1)-旧的_skewbase
12. sum_numsamp = sum_numsamp + numsampT(1) - old_numsampT
12. sum_numsamp=sum_numsamp+numsampT(1)-旧numsampT
13. skew_est = ((M-F+1)*F_skewbase + W_D_skewbase) / ((M-F+1)*F_numsamp+W_D_numsamp)
13. 歪斜度=((M-F+1)*F\u歪斜基+W\u D\u歪斜基)/((M-F+1)*F\u numsamp+W\u D\u numsamp)
where cycle(...) refers to the operation on a cyclic buffer where the start of the buffer is now the next element in the buffer.
其中cycle(…)是指循环缓冲区上的操作,其中缓冲区的开始现在是缓冲区中的下一个元素。
Similarly, the weighted moving average for var_est can be calculated as follows:
类似地,var_est的加权移动平均值可计算如下:
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)))
+ 总和([(M-F):1].*var_base_T(F+1:M)))
/ ((M-F+1)*sum(numsampT(1:F))
/ ((M-F+1)*sum(numsampT(1:F))
+ sum([(M-F):1].*numsampT(F+1:M)))
+ 总和([(M-F):1].*numsampT(F+1:M)))
where numsampT is an array of the number of OWD samples in each T (i.e., num_T(OWD)), and numsampT(1) is the most recent; skew_base_T(1) is the most recent calculation of skew_base_T; 1:F refers to the 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 array scalar dot product operator. When removing oscillation noise (see Section 4.2), this calculation must be adjusted to allow for invalid var_base_T records.
其中,numsampT是每个T中OWD样本数的数组(即num_T(OWD)),numsampT(1)是最近的;skew_base_T(1)是skew_base_T的最新计算;1:F表示从1到F的整数值,[(M-F):1]表示从1到1递减的整数值数组(M-F);“*”是数组标量点积运算符。当去除振荡噪声时(见第4.2节),必须调整该计算以允许无效var_基本记录。
var_est can be calculated incrementally in the same way as skew_est as shown 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.
var_est可以按照与第4.1.1节所示的skew_est相同的方式递增计算。但是,请注意,缓冲区numsampT用于两种计算,因此不应重复对其执行的操作。
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. Thus, up to N-1 meaningless mean crossings can be a source of error at the point where a link becomes a bottleneck and flows traversing it begin to be grouped.
当路径没有瓶颈时,var_est将非常小,记录的有效平均交叉将是路径噪声的结果。因此,在链路成为瓶颈并且穿过它的流开始分组时,多达N-1个无意义的平均交叉点可能是错误源。
To remove this source of noise from freq_est:
要从频率测试中消除此噪声源,请执行以下操作:
1. Set the current var_base_T = NaN (a value representing an invalid record, i.e., Not a Number) for flows that are deemed to not be transiting a bottleneck by the first grouping test that is based on skew_est (see Section 3.3.1).
1. 对于第一次基于skew_est的分组测试认为未通过瓶颈的流,设置当前var_base_T=NaN(一个表示无效记录的值,即不是一个数字)(参见第3.3.1节)。
2. Then, var_est = sum_MT(var_base_T != NaN) / num_MT(OWD).
2. 然后,var_est=sum_MT(var_base_T!=NaN)/num_MT(OWD)。
3. For freq_est, only record a significant mean crossing if a given flow is deemed to be transiting a bottleneck.
3. 对于freq_est,如果给定流量被视为通过瓶颈,则仅记录有效的平均交叉。
These three changes can help to remove the non-bottleneck noise from freq_est.
这三个变化有助于消除频率测试中的非瓶颈噪声。
This section discusses the OWD measurements required for this algorithm to detect shared bottlenecks.
本节讨论此算法检测共享瓶颈所需的OWD度量。
The SBD mechanism described in this document relies on differences between OWD measurements to avoid the practical problems with measuring absolute OWD (see [Hayes-LCN14], Section III.C). Since all summary statistics are relative to the mean OWD and sender/receiver clock offsets should be approximately constant over the measurement periods, the offset is subtracted out in the calculation.
本文件中描述的SBD机制依赖于OWD测量之间的差异,以避免测量绝对OWD的实际问题(见[Hayes-LCN14],第三节C)。由于所有汇总统计数据均与平均OWD相关,且发送方/接收方时钟偏移在测量周期内应近似恒定,因此在计算中减去偏移量。
The SBD mechanism requires timing information precise enough to be 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 delays. In general, the coarser the time resolution, the more care that needs to be taken to ensure that rounding errors do not bias the skewness calculation. Frequent timing information in millisecond resolution as described by [RTCP-CC-FEEDBACK] should be sufficient for the sender to calculate relative OWD.
SBD机制需要足够精确的定时信息,以便能够进行比较。根据经验,时间分辨率应小于典型路径延迟范围的百分之一。一般来说,时间分辨率越粗,就越需要注意确保舍入误差不会使偏斜度计算产生偏差。[RTCP-CC-FEEDBACK]中描述的毫秒分辨率的频繁定时信息应足以让发送方计算相对OWD。
Generally, sender and receiver clock skew will be too small to cause 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 calculated over a longer interval. In circumstances where clock skew is high, basing skew_est only on the previous T's mean and ignoring freq_est provide a noisier but reliable signal.
通常,发送方和接收方的时钟偏差太小,不会在估计器中造成重大误差。skew_est和freq_est对此类噪声最为敏感,因为它们使用了在较长时间间隔内计算的平均OWD。在时钟偏差较大的情况下,仅基于前一个T的平均值而忽略频率偏差,可提供噪声较大但可靠的信号。
A more sophisticated method is to estimate the effect the clock skew is having on the summary statistics and then adjust statistics accordingly. There are a number of techniques in the literature, including [Zhang-Infocom02].
更复杂的方法是估计时钟偏差对汇总统计信息的影响,然后相应地调整统计信息。文献中有许多技术,包括[Zhang-Infocom02]。
The algorithm described in this memo has so far been evaluated using simulations and small-scale experiments. Real network tests using RTP Media Congestion Avoidance Techniques (RMCAT) congestion control algorithms will help confirm the default parameter choice. For example, the time interval T may need to be made longer if the packet rate is very low. Implementers and testers are invited to document their findings in an Internet-Draft.
到目前为止,本备忘录中描述的算法已经通过模拟和小规模实验进行了评估。使用RTP媒体拥塞避免技术(RMCAT)拥塞控制算法的真实网络测试将有助于确认默认参数选择。例如,如果分组速率非常低,则可能需要使时间间隔T变长。实施者和测试者被邀请在互联网草案中记录他们的发现。
This document has no IANA actions.
本文档没有IANA操作。
The security considerations of RFC 3550 [RFC3550], RFC 4585 [RFC4585], and RFC 5124 [RFC5124] are expected to apply.
RFC 3550[RFC3550]、RFC 4585[RFC4585]和RFC 5124[RFC5124]的安全注意事项预计将适用。
Non-authenticated RTCP packets carrying OWD measurements, shared bottleneck indications, and/or summary statistics could allow attackers to alter the bottleneck-sharing characteristics for private gain or disruption of other parties' communication. When using SBD for coupled congestion control as described in [RTP-COUPLED-CC], the security considerations of [RTP-COUPLED-CC] apply.
携带OWD测量值、共享瓶颈指示和/或摘要统计信息的未经验证的RTCP数据包可能允许攻击者改变瓶颈共享特征,以获取私利或中断其他方的通信。当使用SBD进行[RTP-coupled-CC]中所述的耦合拥塞控制时,[RTP-coupled-CC]的安全注意事项适用。
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,DOI 10.17487/RFC2119,1997年3月<https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8174]Leiba,B.,“RFC 2119关键词中大写与小写的歧义”,BCP 14,RFC 8174,DOI 10.17487/RFC8174,2017年5月<https://www.rfc-editor.org/info/rfc8174>.
[Hayes-LCN14] Hayes, D., Ferlin, S., and M. Welzl, "Practical Passive Shared Bottleneck Detection using Shape Summary Statistics", Proc. IEEE Local Computer Networks (LCN), pp. 150-158, DOI 10.1109/LCN.2014.6925767, September 2014, <http://heim.ifi.uio.no/davihay/ hayes14__pract_passiv_shared_bottl_detec-abstract.html>.
[Hayes-LCN14] Hayes, D., Ferlin, S., and M. Welzl, "Practical Passive Shared Bottleneck Detection using Shape Summary Statistics", Proc. IEEE Local Computer Networks (LCN), pp. 150-158, DOI 10.1109/LCN.2014.6925767, September 2014, <http://heim.ifi.uio.no/davihay/ hayes14__pract_passiv_shared_bottl_detec-abstract.html>.
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, July 2003, <https://www.rfc-editor.org/info/rfc3550>.
[RFC3550]Schulzrinne,H.,Casner,S.,Frederick,R.,和V.Jacobson,“RTP:实时应用的传输协议”,STD 64,RFC 3550,DOI 10.17487/RFC3550,2003年7月<https://www.rfc-editor.org/info/rfc3550>.
[RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, "Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, DOI 10.17487/RFC4585, July 2006, <https://www.rfc-editor.org/info/rfc4585>.
[RFC4585]Ott,J.,Wenger,S.,Sato,N.,Burmeister,C.,和J.Rey,“基于实时传输控制协议(RTCP)的反馈(RTP/AVPF)的扩展RTP配置文件”,RFC 4585,DOI 10.17487/RFC4585,2006年7月<https://www.rfc-editor.org/info/rfc4585>.
[RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, February 2008, <https://www.rfc-editor.org/info/rfc5124>.
[RFC5124]Ott,J.和E.Carrara,“基于实时传输控制协议(RTCP)的反馈扩展安全RTP配置文件(RTP/SAVPF)”,RFC 5124DOI 10.17487/RFC5124,2008年2月<https://www.rfc-editor.org/info/rfc5124>.
[RFC6817] Shalunov, S., Hazel, G., Iyengar, J., and M. Kuehlewind, "Low Extra Delay Background Transport (LEDBAT)", RFC 6817, DOI 10.17487/RFC6817, December 2012, <https://www.rfc-editor.org/info/rfc6817>.
[RFC6817]Shalunov,S.,Hazel,G.,Iyengar,J.,和M.Kuehlewind,“低额外延迟背景传输(LEDBAT)”,RFC 6817,DOI 10.17487/RFC6817,2012年12月<https://www.rfc-editor.org/info/rfc6817>.
[RFC7679] Almes, G., Kalidindi, S., Zekauskas, M., and A. Morton, Ed., "A One-Way Delay Metric for IP Performance Metrics (IPPM)", STD 81, RFC 7679, DOI 10.17487/RFC7679, January 2016, <https://www.rfc-editor.org/info/rfc7679>.
[RFC7679]Almes,G.,Kalidini,S.,Zekauskas,M.,和A.Morton,Ed.,“IP性能度量(IPPM)的单向延迟度量”,STD 81,RFC 7679,DOI 10.17487/RFC7679,2016年1月<https://www.rfc-editor.org/info/rfc7679>.
[RFC7680] Almes, G., Kalidindi, S., Zekauskas, M., and A. Morton, Ed., "A One-Way Loss Metric for IP Performance Metrics (IPPM)", STD 82, RFC 7680, DOI 10.17487/RFC7680, January 2016, <https://www.rfc-editor.org/info/rfc7680>.
[RFC7680]Almes,G.,Kalidini,S.,Zekauskas,M.,和A.Morton,Ed.,“IP性能度量(IPPM)的单向损失度量”,STD 82,RFC 7680,DOI 10.17487/RFC7680,2016年1月<https://www.rfc-editor.org/info/rfc7680>.
[RTCP-CC-FEEDBACK] Sarker, Z., Perkins, C., Singh, V., and M. Ramalho, "RTP Control Protocol (RTCP) Feedback for Congestion Control", Work in Progress, draft-ietf-avtcore-cc-feedback-message-01, March 2018.
[RTCP-CC-FEEDBACK]Sarker,Z.,Perkins,C.,Singh,V.,和M.Ramalho,“用于拥塞控制的RTP控制协议(RTCP)反馈”,正在进行的工作,草稿-ietf-avtcore-CC-FEEDBACK-message-012018年3月。
[RTP-COUPLED-CC] Islam, S., Welzl, M., and S. Gjessing, "Coupled congestion control for RTP media", Work in Progress, draft-ietf-rmcat-coupled-cc-07, September 2017.
[RTP-COUPLED-CC]Islam,S.,Welzl,M.,和S.Gjessing,“RTP媒体的耦合拥塞控制”,正在进行的工作,草案-ietf-rmcat-COUPLED-CC-072017年9月。
[Zhang-Infocom02] Zhang, L., Liu, Z., and H. Xia, "Clock synchronization algorithms for network measurements", Proc. IEEE International Conference on Computer Communications (INFOCOM), pp. 160-169, DOI 10.1109/INFCOM.2002.1019257, September 2002.
[Zhang-Infocom02]Zhang,L.,Liu,Z.,和H.Xia,“网络测量的时钟同步算法”,Proc。IEEE国际计算机通信会议(INFOCOM),第160-169页,DOI 10.1109/INFCOM.2002.1019257,2002年9月。
Acknowledgments
致谢
This work was partially funded by the European Community under its Seventh Framework Programme through the Reducing Internet Transport Latency (RITE) project (ICT-317700). The views expressed are solely those of the authors.
这项工作由欧洲共同体第七个框架方案通过减少互联网传输延迟(RITE)项目(ICT-317700)提供部分资金。所表达的观点仅为作者的观点。
Authors' Addresses
作者地址
David Hayes (editor) Simula Research Laboratory P.O. Box 134 Lysaker 1325 Norway
David Hayes(编辑)Simula研究实验室邮箱134 Lysaker 1325挪威
Email: davidh@simula.no
Email: davidh@simula.no
Simone Ferlin Simula Research Laboratory P.O. Box 134 Lysaker 1325 Norway
Simone Ferlin Simula研究实验室邮政信箱134 Lysaker 1325挪威
Email: simone@ferlin.io
Email: simone@ferlin.io
Michael Welzl University of Oslo P.O. Box 1080 Blindern Oslo N-0316 Norway
米迦勒WelZl奥斯陆大学邮政信箱1080盲人奥斯陆N-0316挪威
Email: michawe@ifi.uio.no
Email: michawe@ifi.uio.no
Kristian Hiorth University of Oslo P.O. Box 1080 Blindern Oslo N-0316 Norway
克里斯蒂安Hithh奥斯陆大学邮政信箱1080盲人奥斯陆N-0316挪威
Email: kristahi@ifi.uio.no
Email: kristahi@ifi.uio.no