На этот раз я полностью разбираюсь в управлении перегрузками

TCP/IP

На этот раз я полностью разбираюсь в управлении перегрузками

В компьютерных сетях мы снова и снова будем слышать термин — контроль перегрузки. Так что же такое перегрузка сети? Существуют ли какие-либо методы контроля перегрузки? После прочтения этой статьи я надеюсь дать вам общее представление.

Понятие перегрузки сети

Давайте процитируем энциклопедию Baidu, объясняющую перегрузку сети:

Перегрузка сети означает, что в сети с коммутацией пакетов передается слишком много пакетов из-заУзлы с промежуточным хранением имеют ограниченные ресурсыИ привести к ухудшению производительности передачи по сети. Когда сеть перегружена, это обычно происходитданные потеряны,Задержка увеличивается,Падение пропускной способности, а в тяжелых случаях даже привести к «застойному коллапсу». Как правило, перегрузка сети возникает, когда чрезмерное увеличение нагрузки на сеть приводит к снижению производительности сети. На рисунке ниже показано изменение пропускной способности сети при увеличении входной нагрузки с использованием и без вмешательства системы контроля перегрузки.

网络拥塞控制图

Из приведенного выше описания мы, вероятно, можем получить следующую информацию:

  • Перегрузка сети часто возникает из-за запросов на ресурсы, которые превышают возможности узлов с промежуточным хранением.
  • Перегрузка сети может привести к потере данных, увеличению задержки и снижению пропускной способности.
  • Если перегрузка происходит без контроля, это может привести к ухудшению работы всей сети или даже к снижению пропускной способности сети до 0.
  • Состояние перегрузки сети тесно связано с текущей нагрузкой на сеть.

Алгоритм управления перегрузкой

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

Сходства и различия

Самые большие сходства и различия между управлением потоком и контролем перегрузки на самом деле связаны с разными объектами и проблемами, которые они решают.

Прежде всего, для управления потоком он предназначен для двух взаимодействующих хостов. Динамическое изменение скользящего окна гарантирует, что возможности приема обеих сторон могут соответствовать возможностям отправки (получатель информирует отправителя о своем собственном размере кэша и, таким образом, контролирует размер окна отправки отправителя, чтобы достичь цели управление потоком----Получатель контролирует отправителя), чтобы не превышать кеш и активно не терять пакеты. (PS: [Ключевые моменты] 1.концы с концамикоммуникация. 2. Раздвижное окно)

Для контроля перегрузки необходимо решитьГлобальныйПоскольку перегрузка локальной сети может в конечном итоге привести к блокировке обмена данными во всей сети и в конечном итоге привести к параличу всей сети, ее можно решить только путем перезапуска сети. Эта проблема возникает в основном из-за того, что потребность в ресурсах в локальной сети превышает возможности обработки узла с промежуточным хранением, поэтому узел не может обрабатывать другие запросы с промежуточным хранением. В конце концов, другие запросы будут повторно отправлены с течением времени, что может привести к вводу в сеть большего количества данных и, в конечном итоге, к параличу сети. следовательно,Контроль перегрузки включает все хосты, маршрутизаторы и все факторы, связанные с ухудшением производительности сети.. (Объектом управления перегрузкой является отправитель, и это не связано с размером буферов обеих сторон в связи. Это относится к потоку данных источника в пределах RTT.Максимальное количество отправленных пакетов)

Затем вводится различие между управлением потоком и управлением перегрузкой. Далее нам нужно ввести следующие два параметра:

  • окно перегрузки cwnd
  • порог медленного запуска ssthresh

Отправителю необходимо поддерживать так называемое окно перегрузкиcwndпеременная состояния, значение которой зависит отперегрузка сетиИ он будет динамически меняться в зависимости от уровня загруженности сети. Принцип обслуживания окна перегрузки: если сеть не перегружена, окно перегрузки будет продолжать увеличиваться (как увеличение связано с ssthresh); но пока сеть перегружена, это окно будет уменьшаться. Основанием для суждения о появлении сети является:со временем(Если ответное сообщение не получено вовремя, его необходимо повторно передать через некоторое время).

Верхний предел окна отправителя = Min [rwnd, cwnd](PS:rwnd — размер окна приема)

ssthresh также является переменной состояния, которую необходимо поддерживать для контроля перегрузки:

  • Когда cwnd
  • При нажатии cwnd >= ssthresh используйте ***Алгоритм предотвращения перегрузок***

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

Когда хост начинает отправлять данные, если все данные сразу вводятся в сеть, это может вызвать перегрузку сети. Это потому, что когда мы только начали передачу данных,Отправитель не знает реальной загрузки сети. Поэтому в этом сценарии лучше всего сначала определить текущее состояние сети, а затем попытаться увеличить окно перегрузки в зависимости от ситуации. Например, когда мы маршируем и сражаемся, мы обычно не позволяем большим войскам напрямую входить в незнакомую область. Вместо этого некоторые разведчики будут отправлены на разведку в первую очередь, и, согласно отзывам разведчиков, войска будут постепенно вводиться партиями. Обычно, когда сегмент только начинает отправляться, окно перегрузки cwnd сначала устанавливается равнымОдинЗначение максимального сегмента (MSS). Каждый раз, когда принимается подтверждение для нового сегмента, окно перегрузки увеличивается не более чем на одно значение MSS.

img

Согласно приведенному выше рисунку, мы можем видеть, что после каждого прохождениятрансферный раунд, окно перегрузки cwnd удваивается (умножается на степень 2). Раунд передачи здесь относится к времени прохождения сообщения туда и обратно, но причина, по которой он упоминается как раунд передачи, заключается в том, чтобы подчеркнуть, что весь процесс передачи заключается в отправке всех данных в cwnd и их получении.Подтверждение последнего отправленного байта(означает, что все ранее отправленные данные подтверждены). Однако, чтобы предотвратить слишком большой размер окна перегрузки и вызвать перегрузку сети, также необходимо ограничить его через переменную состояния ssthresh. То есть, когда cwnd > ssthresh, вместо алгоритма медленного старта будет использоваться алгоритм предотвращения перегрузки.

предотвращение перегрузки

Алгоритмы предотвращения перегрузки предназначены для замедления увеличения окна перегрузки для управления внедрением данных. То есть после каждого раунда передачиУвеличьте окно перегрузки отправителя cwnd на 1 вместо удвоения. Таким образом, окно перегрузки cwnd будет медленно расти по линейному закону.

После введения алгоритма медленного старта и алгоритма предотвращения перегрузки давайте посмотрим, как они используются вместе: будь то в фазе медленного старта или в фазе предотвращения перегрузки, если отправитель считает, что сеть перегружена (Условием оценки здесь является то, что отправитель не получает подтверждающее сообщение в течение указанного времени, что означает, что истекло время ожидания.), необходимо установить ssthresh на половину cwnd при возникновении текущей перегрузки, а затем сбросить cwnd окна перегрузки на 1 для выполнения алгоритма медленного старта. Цель этого состоит в том, чтобыБыстро сократить объем данных, отправляемых хостом в сеть., чтобы у перегруженного маршрутизатора было достаточно времени для обработки собственных пакетов, сжатых стеком.

img

быстрая ретрансляция

Быстрая повторная передача требует, чтобы получатель получил пакет вне очереди.немедленноОтвет и не может ждать, пока он отправит данные, прежде чем совмещать подтверждение (чтобы предотвратить тайм-аут!!!). В соответствии с положениями алгоритма быстрой повторной передачи, пока отправитель получает три повторных ACK для одного и того же сообщения данных подряд, он долженретранслировать немедленноДругая сторона не получила сегмент без ожидания, пока не истечет повторный таймер RTO (иногда не из-за сетевых причин). ---- PS: Основная причина использования быстрой повторной передачи: для отдельных пакетов, потерянных из-за неосвеченных причин, отправитель не будет повторно передавать сверхурочно, и он может быть обнаружен в начале и повторной передаче, поэтому он не будет ошибочно Заголовка сети происходит, и быстрое алгоритм повторной передачи можетПропускная способность сети увеличилась на 20%.

img

быстрое восстановление

При реализации алгоритма быстрой повторной передачи, как только отправитель получает3Повторный ACK, известно, что теперь теряются только отдельные пакеты данных. Следовательно, алгоритм медленного запуска не запускается (поскольку считается, что пакеты не потеряны из-за перегрузки сети, поскольку получен ответ ACK), а выбирается алгоритм быстрого восстановления. Алгоритм быстрого восстановления выглядит следующим образом:

  • Отправитель уменьшает порог медленного запуска ssthresh и окно перегрузки cwnd до половины исходного значения.
  • Выполните алгоритм предотвращения перегрузки.

В следующем примере показаны четыре алгоритма, используемые во всем процессе предотвращения перегрузки. Надеюсь, вы внимательно их прочтете и поймете:

img

Вышеизложенное является кратким изложением знаний о контроле перегрузки TCP, я надеюсь, что оно может вам помочь.