Контроль потока

Контроль потока (англ. flow control) — это процесс управления скоростью передачи данных между двумя узлами в системах передачи данных, чтобы предотвратить перегрузку медленного приёмника быстрым отправителем. Контроль потока следует отличать от управления перегрузками, которое применяется, когда в сети уже возникла перегрузка. Механизмы контроля потока классифицируются по наличию или отсутствию обратной связи от приёмника к отправителю.

Контроль потока важен, потому что отправляющий компьютер может передавать информацию быстрее, чем конечный компьютер способен её принять и обработать. Такая ситуация возможна, если на приёмнике высокая нагрузка по сравнению с отправителем, либо если приёмник обладает меньшей вычислительной мощностью[1].

Метод стоп-ожидания

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

Операции

  1. Отправитель: Передаёт по одному фрейму за раз.
  2. Отправитель ожидает получения ACK в течение времени тайм-аута.
  3. Приёмник: Отправляет подтверждение (ACK) после получения фрейма.
  4. Повторить с шага 1 по получении ACK или истечении тайм-аута.

Если фрейм или подтверждение теряются при передаче, фрейм пересылается заново. Этот процесс автоматического повторного запроса называется ARQ (англ. automatic repeat request).

Проблема метода стоп-ожидания состоит в том, что за раз может быть передан только один фрейм, что приводит к низкой эффективности: пока отправитель не получит подтверждение, он не может отправлять новые пакеты. Всё это время и отправитель, и канал простаивают.

Преимущества и недостатки метода стоп-ожидания

Преимущества

Единственным достоинством данного метода является его простота.

Недостатки

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

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

Метод скользящего окна

Это метод контроля потока, при котором получатель предоставляет передатчику разрешение на отправку данных, пока не заполнено окно. При заполнении окна передатчик обязан прекратить передачу до тех пор, пока приёмник не увеличит размер окна.

Метод скользящего окна эффективен при ограниченном и заранее определённом размере буфера. Обычно в процессе передачи данных приёмник выделяет буфер на n кадров (n — размер буфера в кадрах). Отправитель может передать и приёмник принять n кадров без ожидания подтверждений. Каждому кадру присваивается порядковый номер, чтобы отслеживать подтверждённые кадры. Подтверждения от приёмника включают номер следующего ожидаемого кадра, тем самым сигнализируя о готовности принять очередной блок из n кадров. Отправитель и приёмник используют понятие окна — размер окна не превышает размер буфера.

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

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

Режим «Go back N»

Это алгоритм автоматического повторного запроса, при котором негативное подтверждение (NACK) приводит к повторной отправке ошибочного блока и следующих за ним N-1 блоков. Значение N обычно выбирается так, чтобы время передачи этих N блоков было меньше времени «туда-обратно», и буфер приёмнику не требуется.

Нормализованная задержка распространения a = время распространения (Tp)время передачи (Tt), где Tp = длина линии (L) / скорость распространения (V), Tt = битрейт (r) / кадровая частота (F), то есть a =LFVr.

Использование окна определяется его размером (N): если N ≥ 2a + 1, то достигается полная загрузка канала (коэффициент использования равен 1). Если N < 2a + 1, применяется формула N1+2a для расчёта эффективности передачи.

Режим «избирательного повторения»

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

Сравнение

В этом разделе сравниваются методы стоп-ожидания, скользящего окна, а также его разновидности — go back N и избирательный повтор.

Стоп-ожидание

При отсутствии ошибок: .

С ошибками: .

Избирательный повтор

Допустим, сквозная пропускная способность T определяется как среднее количество блоков, передаваемых на каждый отправленный блок. Для удобства сначала вычисляют среднее число отправок блока (обозначим b), а затем T = .

Передача с контролем потока

Контроль потока при передаче может осуществляться:

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

  • реализовываться по методу стоп-ожидания,
  • использовать скользящее окно.

Механизм может быть основан:

  • либо на отдельных управляющих линиях интерфейса данных (см. последовательный порт и RS-232),
  • либо на специальных управляющих символах в потоке данных (например, кодах ASCII для XON/XOFF).

Аппаратный контроль потока

В интерфейсе RS-232 могут использоваться пары управляющих линий, известные как аппаратный контроль потока:

  • RTS (запрос на передачу, англ. request to send) и CTS (разрешение на передачу, англ. clear to send), применяются в RTS-контроле потока;
  • DTR (готовность абонента, англ. data terminal ready) и DSR (готовность абонентского устройства, англ. data set ready), применяются при DTR-контроле потока.

Аппаратный контроль обычно управляется DTE (ведущей стороной): сначала линия инициируется (устанавливается в активное состояние) для передачи команды другой стороне.

  • Для RTS-контроля DTE поднимает RTS, сигнализируя ведомому устройству (например, DCE) о необходимости слушать входящую линию. Когда ведомое устройство готово принять данные, оно поднимаетCTS, разрешая передачу и инициируя передачу данных. Если одна из сторон должна приостановить обмен, соответствующая линия переводится в неактивное состояние.
  • В соединениях ПК—модем (и аналогичных) при DTR-контроле DTR/DSR поднимаются на всё время сеанса (например, при дозвоне модем ожидает DTR для набора номера, а модем поднимает DSR при установлении соединения), а RTS/CTS поднимаются для каждого блока данных.

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

  • Полярность:
    • В RS-232 сигналы инвертируются, полярности: TxD-, RxD-, CTS+, RTS+ (разрешение на передачу — высокий уровень, лог.1 — низкий уровень);
    • Для контактов микроконтроллеров: TxD+, RxD+, CTS-, RTS- (разрешение на передачу — низкий уровень, лог.1 — высокий уровень).

Программный (протокольный) контроль потока

Программный контроль потока (например, XON/XOFF) реализуется с помощью специальных управляющих символов в потоке данных.

Контроль потока с открытым контуром

Данный механизм характеризуется отсутствием обратной связи между приёмником и передатчиком. Это простой, но достаточно распространённый способ управления. Для него требуется «предварительное бронирование» ресурсов — либо точечно для каждого перехода, либо на этапе установления соединения.

Контроль потока с открытым контуром сопряжён с проблемами по максимальной загрузке каналов: резервирование ресурсов происходит при установлении соединения (CAC, англ. connection admission control), а в течение соединения выделенные ресурсы могут остаться невостребованными, что ведёт к перераспределению пропускной способности. Такой метод применяется, например, в технологиях асинхронного переноса данных с профилями CБР, ПБР, ББР (см. traffic contract и управление перегрузками).

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

Контроль потока с замкнутым контуром

Механизм замкнутого контура характеризуется способностью сети передавать сведения о потенциальной перегрузке назад к передатчику. Передатчик использует данную информацию для адаптации своей передачи к текущим условиям. Такие схемы применяются в услугах ABR (см. traffic contract и управление перегрузками). Описанный выше контроль потока при передаче — разновидность замкнутого контура.

Замкнутая система включает все основные элементы управления: датчик, передатчик, контроллер, регулятор. Датчик измеряет технологический параметр, который через передатчик передаётся контроллеру; контроллер сравнивает полученное значение с требуемым и, при необходимости, вырабатывает управляющее воздействие. Далее команда поступает регулятору, корректируя выходную переменную для достижения заданного значения. Такая схема обеспечивает высокий уровень поддержания нужного уровня выходного сигнала, может быть построена как по принципу обратной связи (feedback), так и упреждающей (feedforward):

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

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

Примечания

  1. Разработка приложений для работы с последовательным портом (serial). www.opennet.ru. Дата обращения: 25 ноября 2025.

Ссылки