Старт (клуб по хоккею с мячом)
- 1 year ago
- 0
- 0
Медленный старт — часть стратегии управления ( англ. ), в TCP . Медленный старт используется совместно с другими алгоритмами для того чтобы избежать отправки большего количества данных, чем сеть способна передать . Алгоритм определяется
Медленный старт — один из алгоритмов, который TCP использует для контроля над нагрузкой сети. Иногда его ещё называют фазой экспоненциального роста .
Во время фазы экспоненциального роста, алгоритм медленного старта работает за счёт увеличения окна TCP каждый раз когда получено подтверждение, то есть увеличивает размер окна в зависимости от количества подтверждённых сегментов. Это происходит до тех пор, пока для какого-то сегмента не будет получено подтверждение или будет достигнуто какое-то заданное пороговое значение.
Если происходит потеря, TCP предполагает что это связано с перегрузкой сети и принимает меры по сокращению нагрузки на сеть. Как только порог достигнут, TCP входит в фазу линейного роста (предотвращения перегрузки). В эту фазу окно увеличивается на один сегмент для каждого RTT . Это происходит до тех пор, пока не происходит потери пакета.
Хотя алгоритм и называется «медленный старт», размер его окна перегрузки растёт довольно энергично, гораздо энергичнее чем во время фазы линейного роста. До того, как алгоритм медленного старта был добавлен в TCP, начальная фаза, направленная на предотвращение перегрузки, была намного быстрее.
Алгоритм начинается в экспоненциальной фазе роста, сначала с размером окна перегрузки ( — CWND) 1, 2 или 10 сегментов и увеличивает его на один размер сегмента (segment size — SS) для каждого полученного ACK . Если приёмник посылает ACK для каждого сегмента, такое поведение эффективно удваивает размер окна после каждого цикла сети. Если приёмник поддерживает подтверждения с опозданием, темпы роста будут ниже, но всё равно рост окна будет увеличивается, как минимум, на один MSS каждого времени приёма-передачи. Такое поведение продолжается до тех пор, пока размер окна перегрузки (CWND) не достигнет размера объявленного окна приёмника или пока не произойдёт потеря.
Когда происходит потеря, половина текущего CWND сохраняется в виде порога медленного старта (SSThresh) и медленный старт начинается снова от своего первоначального CWND. Как только CWND достигает SSThresh, TCP переходит в режим предотвращения перегрузки, где каждый ACK увеличивает CWND на SS * SS / CWND. Это приводит к линейному увеличению CWND.
Существует вариация алгоритма медленного старта, известная как быстрое восстановление (Fast Recovery), которая использует последующей фазой предотвращения перегрузки. В алгоритме быстрого восстановления, во избежание перегрузки, когда пакет (после 3 полученных подтверждений) не получен, размер окна перегрузки сводится к порогу медленного старта, а не к меньшему начальному значению.
Алгоритм медленного старта предполагает, что отсутствие подтверждения происходит вследствие перегрузки сети. Хотя это предположение приемлемо для многих сетей, сегменты могут быть потеряны и по другим причинам, например, плохое качество канала передачи данных на канальном уровне . Таким образом, алгоритм медленного старта может плохо работать в ситуациях со слабым приёмом - таких, как беспроводные сети .
Протокол медленного старта плохо подходит для короткоживущих соединений. Старые браузеры могут создавать много последовательных коротко живущих соединений с веб-сервером, и будет открывать и закрывать соединение для каждого запрашиваемого файла. Всё это держало большинство подключений в режиме медленного старта, в результате которых было большое время отклика . Чтобы избежать этой проблемы, современные браузеры либо открывают несколько соединений одновременно или повторно используют одно соединение для всех файлов, запрошенных с конкретного веб-сервера . Тем не менее, соединения не могут быть повторно использованы для множества сторонних серверов, используемых веб-сайтами для реализации веб-рекламы, общих функций социальных сетей, сценариев веб-аналитики .