Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

L10-Сети (tcp v2)

.pdf
Скачиваний:
26
Добавлен:
29.03.2015
Размер:
17.27 Mб
Скачать

Улучшения: Алгоритм Нагля

В telnet нажатием клавиши передается 1 байт и посылается 41битный сегмент (без учета издержки Ethernet)

Эффективность работы может быть улучшена с помощью алгоритма

Нагля (Nagle, 1984; RFC-896)

Нагль предложил посылать первый байт, а последующие буферизовать до прихода подтверждения получения посланного. После этого посылаются все буферизованные октеты, а запись в буфер вводимых кодов возобновляется

Если символы вводятся быстро, а сеть работает медленно, этот алгоритм заметно снижает загрузку канала

Алгоритм Нагля желательно отключить при работе в режиме Х- терминала, где сигналы перемещения мышки должны пересылаться немедленно, чтобы не ввести в заблуждение пользователя относительно истинного положения маркера

© Masich G.F. 18.11.2013

ТСР

52

Улучшения: Синдром узкого окна (Clark, 1982)

Ситуация: (Кларк, 1982)

1.данные передаются отправителем крупными блоками

2.буфер получателя (RecvBuffer) заполнится и передающая сторона знает об этом

(window=0),

3.интерактивное приложение получателя считывает информацию побайтно

4.получатель пошлет уведомление отправителю, разрешающее ему послать один байт

(window=1)

5.этот байт будет послан и снова заполнит до краев буфер получателя, что вызовет отправку ACK со значением window=0

6.Далее повторяются действия с пункта 3

Проблема

Если получатель рекламирует малые увеличения окна приема[ window(i) = 0, window(i+1) = 1, window(i+2)=0, window(i+3) = 1, ….. и т.д.) ]

передатчик посылает много маленьких сегментов

тратиться время на передачу заголовков этих маленьких сегментов

понижая коэффициент использования канала

Решение (Кларк, 1982)

Получатель не должен рекламировать малые увеличения окна

Минимальный размер рекламируемого окна увеличения равен min(MSS, RecvBuffer/2, где

MSS (Maximum Segment Size) – максимальный размер сегмента

RecvBuffer – буфер приема получателя

© Masich G.F. 18.11.2013

ТСР

53

Управление потоком

© Masich G.F. 18.11.2013

ТСР

54

rcv_win

Управление перегрузкой (1)

Управление перегрузкой осуществляет отправитель с помощью

cwnd (congestion window) - окно перегрузки

rcv_win (receiver advertised window) – объявленное получателем окно

ssthreth (slow start threshold) - порог медленного старта

чуть позже о ssthreth

Отправитель, в исходный момент времени, при установлении соединения

cwnd = MSS (MSS – максимальный размер сегмента)

ssthreth=65535 байтам (2 в степени 16).

Отправитель никогда не пошлет больше байт, чем это задано cwnd и объявленным получателем значением

win = min (rcv_win, cwnd)

© Masich G.F. 18.11.2013

ТСР

55

Управление перегрузкой (2)

Когда получение очередного сегмента данных подтверждается, значение cwnd увеличивается

Динамика процесса увеличения окна перегрузки (cwnd) зависит от величины порога медленного старта (ssthreth)

Если cwnd ≤ ssthreth, выполняется медленный старт

Если cwnd > ssthreth выполняется процедура подавление перегрузки

Вслучае подавления перегрузки

cwnd i+1 = cwnd i + MSS/8+(MSS*MSS)/cwnd.

Если возникает состояние перегрузки канала значение cwnd снова делается равным одному MSS

© Masich G.F. 18.11.2013

ТСР

56

 

Медленный старт (1)

 

Итак, в качестве модуля

 

 

 

приращения cwnd используется

 

 

MSS или 1

 

 

 

Каждое подтверждение (ACK)

 

 

 

увеличивает окно перегрузки:

 

 

 

CWND i+1 = CWND i + MSS ,

если

cwnd = 1

 

размер окна задан в октетах,

 

 

 

 

 

CWND i+1 = CWND i + 1 ,

если

cwnd = 2

 

размер окна задан в сегментах

 

 

 

Это и есть алгоритм медленного

 

 

старта

 

 

cwnd = 4

 

И теперь отправитель может

 

 

 

послать, не дожидаясь ACK, уже

 

 

два сегмента и т.д.

 

 

 

 

 

 

cwnd = 8

 

© Masich G.F.

18.11.2013

 

ТСР

57

Медленный старт (2)

 

Итак, в качестве модуля приращения cwnd используется MSS или 1

 

 

.

 

 

.

 

 

.

 

Sequence No

Window doubles

 

 

 

 

every round

 

 

Time

 

© Masich G.F. 18.11.2013

ТСР

58

Предотвращение перегрузки (3)

Замедление медленного старта (“Slow Start”)

If cwnd > ssthresh then

each time a segment is acknowledged increment cwnd by 1/cwnd

i.e. (cwnd += 1/cwnd).

Итак cwnd увеличивается на 1 только если все сегменты были подтверждены, начинается с порога медленного старта ssthresh

 

 

Sequence No

Окно растет:

 

 

 

 

 

 

1 представлена

 

 

 

окружностью

 

 

 

Time

© Masich G.F.

18.11.2013

ТСР

59

 

 

 

Предотвращение перегрузки (4)

 

 

Assume that ssthresh = 8

cwnd = 1

 

 

 

 

 

 

 

cwnd = 2

 

 

14

 

 

 

 

cwnd = 4

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

)

10

 

 

 

 

cwnd = 8

 

 

 

 

 

 

 

(in segments

8

 

 

 

 

 

 

6

ssthresh

 

 

 

 

4

 

 

 

 

 

 

Cwnd

2

 

 

 

 

cwnd = 9

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t=0

t=2

t=4

t=6

 

 

 

 

 

Roundtrip times

 

cwnd = 10

 

 

 

 

 

 

 

 

© Masich G.F.

18.11.2013

 

ТСР

60

 

 

Медленный старт

 

cwnd

 

 

 

 

Timeout

 

 

 

Congestion

 

 

 

Avoidance

 

 

Slow Start

 

 

 

 

 

Time

© Masich G.F.

18.11.2013

ТСР

61

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]