RFC: 5348
Оригинал: TCP Friendly Rate Control (TFRC): Protocol Specification
Предыдущие версии: RFC 3448
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , ,
Перевод: Николай Малых

RFC 5348, Страница 20 из 49

5.4. Средний интервал без потерь

Для расчета частоты потерь p сначала вычислим продолжительность среднего интервала без потерь. Это осуществляется с помощью взвешенного фильтра, определяющего средний интервал на основе значений n последних интервалов так, чтобы значение частоты потерь изменялось достаточно непрерывно. Если получатель еще не имеет данных о потерях или маркированных пакетах, средний интервал без потерь не рассчитывается.

Веса w_0 - w_(n-1) определяются следующим образом:

If (i < n/2) {
    w_i = 1;
} Else {
    w_i = 2 * (n-i)/(n+2);
}

Таким образом, для n=8 значения w_0 - w_7 составляют:

1.0, 1.0, 1.0, 1.0, 0.8, 0.6, 0.4, 0.2

Значение n для числа интервалов без потерь, используемых при расчете частоты потерь, определяет скорость отклика TFRC на изменение уровня насыщения. Рекомендуется использовать в качестве значения этого параметра 8. TFRC не следует использовать значения n > 8 для трафика, который может конкурировать в глобальной сети Internet с трафиком TCP. В крайнем случае при использовании значений n > 8 для обеспечения безопасной работы потребуется незначительное изменение механизмов TFRC для обеспечения более резкого отклика на два и более периода RTT с высоким уровнем потерь.

При расчете среднего интервала без потерь требуется решить вопрос о включении последнего интервала. Предлагается включать его только в тех случаях, когда он существенно увеличивает значение среднего интервала.

Пусть I_0 - I_n обозначают интервалы без потерь и I_0 относится к текущему факту потерь. Если имеется по крайней мере n интервалов без потерь, установим k = n, в остальных случаях в качестве значения k будем использовать максимальный номер имеющегося интервала без потерь. Тогда средний интервал рассчитывается следующим образом:

I_tot0 = 0;
I_tot1 = 0;
W_tot = 0;
for (i = 0 to k-1) {
    I_tot0 = I_tot0 + (I_i * w_i);
    W_tot = W_tot + w_i;
}
for (i = 1 to k) {
    I_tot1 = I_tot1 + (I_i * w_(i-1));
}
I_tot = max(I_tot0, I_tot1);
I_mean = I_tot/W_tot;

Частота (вероятность) потерь p составит:

p = 1/I_mean;

Страница 20 из 49

2007 - 2022 © Русские переводы RFC, IETF, ISOC.