Аддитивное увеличение и мультипликативное уменьшение
Основной идеей механизма контроля перегрузки протокола TCP является снижение скорости передачи источника путем уменьшения размера его окна перегрузок при потере пакета. Вполне вероятно, что во всех TCP-соединениях, обслуживаемых перегруженным маршрутизатором, наблюдаются потери пакетов, что приводит к одновременному уменьшению окон перегрузок всеми этими соединениями. Конечный эффект заключается в снижении трафика, проходящего через перегруженный маршрутизатор и, как следствие, в ослаблении перегрузки. Однако все еще остается открытым вопрос о том, насколько существенным должно быть снижение скорости передачи при потере пакета. В протоколе TCP используется так называемое «мультипликативное уменьшение», означающее двойное уменьшение размера окна перегрузки при потере пакета. Если потеря пакета произошла при значении CongWin, равном 20 Кбайт, то последнее будет «урезано» до 10 Кбайт. В случае потери еще одного пакета значение CongWin станет равным 5 Кбайт. Уменьшение размера окна перегрузки может происходить многократно, однако значения CongWin, меньшие максимального размера сегмента (MSS), не допускаются. Заметим, что приведенное выше описание является упрощенным, и изменение размера окна перегрузки на самом деле представляет собой несколько более сложный процесс. Как мы увидим чуть позже, при потере пакета значение CongWin сначала становится равным MSS и лишь затем достигает половины исходного значения.
Вопрос снижения скорости передачи протоколом TCP при наличии перегрузок вполне естественно продолжить рассмотрением механизма увеличения скорости передачи при отсутствии перегрузок. Отсутствие перегрузок, или потерь пакетов, указывает на вероятность присутствия на линии связи неиспользуемых ресурсов и является побудительным мотивом для увеличения скорости передачи источника. Нарастание скорости происходит медленно и плавно; протокол TCP «прощупывает» свободные ресурсы на пути соединения. Каждый раз при получении квитанции значение CongWin немного увеличивается; не вдаваясь в детали алгоритма, можно сказать, что TCP каждый раз увеличивает значение CongWin на величину MSS, если за время оборота не наблюдалось потерь пакетов. Таким образом, TCP осуществляет аддитивное увеличение скорости передачи при отсутствии перегрузок в сети и мультипликативное уменьшение скорости передачи при наличии перегрузок.
Алгоритм контроля перегрузок протокола TCP часто называют алгоритмом AIMD (Additive-Increase, Multiplicative-Decrease — аддитивное увеличение и мультипликативное уменьшение). Фаза линейного нарастания потока данных в протоколе контроля перегрузки называется уходом от перегрузки. Величина CongWin циклически проходит через стадии линейного нарастания и резкого спада до половины текущего значения при потере пакета. График CongWin для ТСР-соединений со значительным временем жизни имеет вид, напоминающий зубья пилы, и представлен на рис. 3.46.
Статья просто супер, написано легко и понятно