4.5. Предотвращение осцилляций
Для снижения осцилляций скорости и задержек в очередях в средах с низким уровнем статистического мультиплексирования при высокой нагрузке отправителю рекомендуется снизить скорость передачи данных при увеличении задержки в очереди (и, следовательно, RTT). Для реализации этого отправитель поддерживает оценку среднего значения RTT за достаточно большой период (R_sqmean) и меняет свою скорость передачи в зависимости от того, как квадратный корень из R_sample (недавнее значение RTT) отличается от среднего (R_sqmean). Среднее значение R_sqmean определяется следующим образом:
Если ранее не было получено пакетов обратной связи R_sqmean = sqrt(R_sample); иначе R_sqmean = q2*R_sqmean + (1-q2)*sqrt(R_sample);
Таким образом, R_sqmean изменяется пропорционально квадратному корню измеренного значения RTT. Константу q2 следует устанавливать по аналогии с q; по умолчанию рекомендуется использовать значение q2=0,9.
При sqrt(R_sample) > R_sqmean текущее время кругового обхода превышает среднее значение, что говорит о возможном увеличении задержки в очереди. В таких случаях скорость передачи снижается для минимизации осцилляций задержки в очередях.
Отправитель получает базовое значение дозволенной скорости передачи X, как описано в п. 4) параграфа 4.3. После этого рассчитывается новое мгновенное значение скорости передачи:
X_inst = X * R_sqmean/sqrt(R_sample); If (X_inst < s/t_mbi) X_inst = s/t_mbi;
Благодаря использованию квадратного корня в общем случае мгновенная скорость передачи X_inst незначительно отличается от дозволенной скорости X. Например, в некой экстремальной ситуации, когда текущее значение RTT (R_sample) вдвое превышает среднее значение, sqrt(R_sample) будет отличаться от R_sqmean приблизительно в 1, 44 раза и дозволенная скорость будет снижаться путем умножения на коэффициент приблизительно равный 0,7.
Отметим, что такое изменение поведения для предотвращения осцилляций требуется не во всех случаях, особенно в тех случаях, когда уровень статистического мультиплексирования в сети достаточно велик. Отметим также, что подавление осцилляций может вызывать проблемы для соединений, на которых время кругового обхода слабо связано с задержкой в очередях (например, в беспроводных средах при частых изменениях маршрутизации). Однако такую возможность следует реализовать поскольку она улучшает поведение TFRC в некоторых средах с низким уровнем статистического мультиплексирования. Работа этого механизма проиллюстрирована в параграфе 3.1.3 документа [FHPW00]. Если подавление осцилляций не поддерживается, реализации следует использовать очень малое значение весового коэффициента q при определении среднего времени кругового обхода.