Сети и системы телекоммуникаций Управление потоком и перегрузкой в TCP ИМКН УрФУ
2
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Скорость передачи данных с использованием протокола TCP
Управление потоком в TCP
Алгоритм Нагля
Управление перегрузкой в TCP
AIMD
Медленный старт
План
3
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
TCP должен обеспечивать• Гарантированную доставку данных• Эффективное использование канала связи
TCP должен хорошо работать как на медленных каналах связи с ошибками, так и на быстрых надежных каналах
Изменение размера скользящего окна – основной метод регулирования скорости в TCP
• Традиционный подход – фиксированный размер окна 8 сегментов TCP
• Современный подход – динамический размер окна в зависимости от требований приложения и загрузки сети
Скорость передачи данных в TCP
4
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Скорость передачи данных в TCP
Отправитель
Получатель
Приложение
Буфер
Транспортная подсистема
5
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Управление потоком
Отправитель
Получатель
Приложение
Буфер
Транспортная подсистема
6
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Управление перегрузкой
Отправитель
Получатель
Приложение
Буфер
Транспортная подсистема
7
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Предотвращение «затопления» быстрым отправителем медленного получателя
• Сеть может быть свободна, но приложение не готово получить данные
Транспортная подсистема работает с приложениями:
• Приложение не обязано забирать данные, как только они появились
• Транспортная подсистема не обязана передавать данные приложению или в сеть, как только она их получила
Управление потоком в TCP
8
Сети и системы телекоммуникаций. Протокол TCP
Управление потоком в TCP
32 бита
Порт отправителя Порт получателя
Порядковый номер
Номер подтверждения
Размер окнаFIN
SYN
RST
PSH
ACK
URG
Длина заголо
-вка
Контрольная сумма Указатель на срочные данные
Параметры (не обязательно)
Данные (не обязательно)
9
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Для управления потоком TCP использует механизм скользящего окна
Получатель записывает в поле заголовка TCP «Размер окна» объем данных, которые он готов принять (свободное место в буфере)
Размер окна может меняться динамически• Приложение читает данные из буфера быстро – окно
растет• Приложение читает медленно, буфер заполнен – окно
уменьшается
Управление потоком в TCP
10
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Некоторые приложения читают и пишут данные маленькими порциями
Эмуляторы терминала telnet или ssh• При нажатии каждой клавиши данные передаются на
сервер – 1 байт данных• Для передачи 1 байта данных требуется передать IP-
пакет длиной 41 байт (20 байт заголовок IP, 20 байт заголовок TCP, 1 байт данных)
• Высокие накладные расходы
Отложенные подтверждения• Задержка отправки подтверждения до 500 мс в
надежде получить данные• Терминал за 500 мс выдает эхо, данные отправляются
вместе с подтверждением
Отложенные подтверждения
11
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Получателю отправляется только первая порция маленьких данных
Остальные данные буферизируются, пока не придет подтверждение
Данные из буфера отправляются в одном сегменте
Продолжается накопление данные в буфере, пока не придет новое подтверждение
Алгоритм Нагля (Nagle’s algorithm)
12
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Приложение может быть готово принять данные, но сеть перегружена
• Отправляется большая порция данных• Многие сегменты будут отброшены сетью
Перегрузка (congestion) – состояние, при котором в сеть поступает больше пакетов, чем она способна передать
Управление перегрузкой
Маршрутизатор
Буфер
13
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Коллапс перегрузки в Интернет (congestion collapse)
• Произошел в 1986 г. (теоретически предсказан в 1984)
• Каналы связи загружены полностью• Скорость передачи данных между хостами падала на
порядок
Решение:• Учет загрузки сети при формировании размера
скользящего окна• Механизм – окно перегрузки• Традиционный подход – фиксированный размер 8
сегментов TCP• Предложенный подход – динамический размер окна в
зависимости от нагрузки на сеть
Коллапс перегрузки
14
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Окно управления потоком:• Задается получателем (поле «Размер окна» в
заголовке TCP)• Размер определяется возможностями приложения
читать данные из буфера
Окно перегрузки:• Задается отправителем• Размер определяется загрузкой сети
Размер скользящего окна определяется меньшим из окон перегрузки или управления потоком
Окна перегрузки и управления потоком
15
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Эффективность• Сеть должна быть максимально загружена
Справедливость• Все хосты в сети получают примерно одинаковую
часть от пропускной способности сети
Характеристики загрузки сети
A B C
16
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Additive increase/multiplicative decrease (Аддитивное увеличение, мультипликативное уменьшение)
• Метод, который используется в TCP для определения размера окна перегрузки
Типовые параметры:• a – максимальный размер сегмента (MSS)• b – ½
AIMD
17
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
AIMD
Хост 1 Хост 2
«Узкое» место
Computer Networks 5/Ehttp://computernetworks5e.org/
18
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Размер окна AIMDР
азм
ер о
кна
Время
Аддитивное увеличение
Сигнал о перегрузке
Мультипликативное уменьшение
19
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Сигнал о перегрузке
Сигнал Пример протокола
Достоинства и недостатки
Потеря пакета TCP New RenoCubic TCP
(Linux)
Хорошо распознаетсяПоздно узнаем о
перегрузке
Задержка пакета
Compound TCP (Windows)
Быстро узнаем о перегрузке
Задержка может быть вызвана не только
перегрузкой
Сигнал от маршрутизатор
а
TCP with Explicit Congestion Notification
Быстро узнаем о перегрузке
Необходима поддержка в маршрутизаторе
Computer Networks 5/Ehttp://computernetworks5e.org/
20
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Проблема AIMD – медленный (линейный) рост размера окна перегрузки
• Приемлемо на медленных каналах• Неприемлемо на быстрых надежных каналах
Медленный старт - альтернативный метод управления размером окна перегрузки:
• Первоначально размер окна перегрузки устанавливается маленьким (1 или 4 сегмента)
• При каждом получении подтверждения отправляется 2 сегмента
• После сигнала о перегрузке начинаем с началаМедленный старт обеспечивает экспоненциальный рост размера окна перегрузки
Медленный старт
21
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
TCP использует совместно AIMD и медленный старт
• Работа начинается с медленного старта• После достижения «порога медленного старта» TCP
переходит на AIMD
Определение «порога медленного старта»• Медленный старт начинает работать без ограничения• Поступает сигнал о перегрузке• Порог медленного старта устанавливается в половину
текущего окна перегрузки• Окно перегрузки уменьшается до минимального
значения
Медленный старт и AIMD в TCP
22
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Медленный старт и AIMD в TCPР
азм
ер о
кна
Время
Аддитивное увеличение
Порог медленного старта
Медленный старт
Сигнал о перегрузке
Мультипликативное уменьшение
23
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Приложение просит много данных, но сеть перегружена:
• Окно управления потоком: 40Кбайт• Окно перегрузки: 20 Кбайт• Скользящее окно: 20 Кбайт
Сеть свободна, но приложение ограничивает скорость :
• Окно управления потоком: 20Кбайт• Окно перегрузки: 40 Кбайт• Скользящее окно: 20 Кбайт
Размер скользящего окна
24
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Скорость передачи данных с использованием протокола TCP
Управление потоком в TCP
Алгоритм Нагля
Управление перегрузкой в TCP
AIMD
Медленный старт
Итоги