Примеры сетевых топологий


Выводы - часть 8


Функция отклика протокола на перегрузку определяется отношением скоростей передачи пакетов в зависимости от вероятности их потери.

BI-TCP встраивается в TCP-SACK. В протоколе используются следующие фиксированные параметры:


Low_window - если размер окна больше чем этот порог, используется BI-TCP, в противном случае обычный ТСР.

Smax - максимальное приращение

Smin - минимальное приращение

b - мултипликативный коэффициент сокращений ширины окна.

default_max_win - значение максимума окна по умолчанию


В протоколе используются следующие переменные параметры:


max_win - максимальное значение ширины окна, в начале равно величине по умолчанию.

min_win - минимальная ширина окна

prev_win - максимальное значение ширины окна до установления нового максимума.

target_win - средняя точка между максимумом и минимумом ширины окна.

cwnd - размер окна перегрузки

is_BITCP_ss - Булева переменная, указывающая, находится ли протокол в режиме медленного старта. В начале = false

ss_cwnd - переменная, отслеживающая эвлюцию cwnd при медленном старте.

ss_target - значение cwnd после одного RTT при медленном старте BI-TCP.


При входе в режим быстрого восстановления:


if (low_window <= cwnd) {

prev_max = max_win; max_win = cwnd; cwnd = cwnd *(1-b); min_win = cwnd; if (prev_max > max _win) //Fast. Conv. max_win = (max_win + min_win)/2; target_win = (max_win + min_win)/2;

} else {

cwnd = cwnd*0,5; //normal TCP

Когда система не находится в режиме быстрого восстановления и приходит подтверждение для нового пакета, то


if (low_window > cwnd) { cwnd =cwnd + 1/cwnd; // normal TCP return

} if (is_BITCP_ss is false) { //bin.increase if (target_win - cwnd < Smax) // bin.search cwnd += (target_win - cwnd)/cwnd; else

cwnd += Smax/cwnd; // additive incre. if (max_win > cwnd) { min_win = cwnd; target_win = (max_win + min_win)/2;

} else {

is_BITCP_ss = true

ss_cwnd =1; ss_target = cwnd+1; max_win = default_max_win; }

} else { cwnd = cwnd + ss_cwnd/cwnd; if(cwnd >= ss_target) { ss_cwnd = 2*ss_cwnd; ss_target = cwnd + ss_cwnd; } if(ss_cwnd >= Smax) is_BITCP_ss = false; }




Начало  Назад  Вперед