Телекоммуникационные технологии. Том 1




Выводы - часть 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

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;

}




Содержание  Назад  Вперед