3.1. Уравнение для пропускной способности TCP
Любое реалистичное выражение пропускной способности TCP, как функции RTT и вероятности потери пакетов, следует рассматривать, как подходящее для использования с TFRC. Однако следует отметить, что используемое для пропускной способности TCP уравнение должно отражать поведение повторов передачи по тайм-ауту, поскольку это поведение доминирует при определении пропускной способности TCP в условиях высокой вероятности потерь. Отметим также, что допущения, принятые относительно вероятности потерь в уравнении для пропускной способности, зависят от реального механизма определения вероятности потерь. Хотя это допущение не вполне соответствует приведенному ниже уравнению для пропускной способности и описанным механизмам измерения, оно достаточно хорошо подходит на практике.
Уравнение пропускной способности, которое в настоящее время требуется использовать в TFRC, является слегка упрощенным вариантом уравнения для Reno TCP из работы [PFTK98]. В идеальном случае уравнение для пропускной способности следовало бы создавать на основе SACK TCP, однако тесты и эксперименты показывают, что различия между двумя уравнениями достаточно малы [FF99] (Приложение B).
Уравнение для средней скорости передачи TCP (в байтах в секунду) X_Bps имеет вид:
s X_Bps = ---------------------------------------------------------- R*sqrt(2*b*p/3) + (t_RTO * (3*sqrt(3*b*p/8)*p*(1+32*p^2)))
где:
- X_Bps — средняя скорость передачи TCP (байт/сек); параметр X_Bps идентичен X_calc в RFC 3448;
- s — размер сегмента (байт) с учетом заголовков транспортного уровня и IP;
- R — время кругового обхода в секундах;
- p — вероятность потерь (0 — 1.0) — доля потерянных пакетов в от общего числа переданных пакетов;
- t_RTO — тайм-аут повторной передачи TCP в секундах;
- b — максимальное число пакетов, подтверждаемых одним пакетом TCP ACK.
Выбор значения тайм-аута повторной передачи TCP — t_RTO
Реализациям следует использовать значение t_RTO = 4*R. Возможно использование более точного метода расчета t_RTO. Реализации могут также выбирать в качестве t_RTO значение max(4*R, 1 секунда) в соответствии с рекомендуемым для значения RTO минимумом [RFC2988].