Класс Queue, Обработка приема - Адаптивная система управления потоком для транспортного протокола в сетях с коммутацией пакетов

Данный класс реализует схему стандартного управления потоком по методу скользящего окна. Класс содержит динамический список двойной связности, в который записываются указатели на сегменты, поставленные в очередь вместе с экземпляром класса таймера, реализующего ТПП. Методы класса Queue позволяют осуществлять вставку сегмента с сортировкой, сканирование списка, нахождение очередного сегмента готового к передаче. Ретрансляция реализована посредством изменения очередности готовых к отправке сегментов. Взаимодействие очередей с объектом протокола и схема обработки сегментов приведены на рис. 25.

концептуальная схема взаимодействия очередей приема и передачи с алгоритмом управления потоком в объекте протокола artcp

Рис. 25. Концептуальная схема взаимодействия очередей приема и передачи с алгоритмом управления потоком в объекте протокола ARTCP. Прямые линии указывают направление потоков данных, кривые - управляющей информации.

Обработка приема

Сегмент, принятый узлом, передается объекту ARTCP. Метод accept_packet() принимает сегмент и обрабатывает его как подтверждение, если сегмент содержит поле подтверждения. Параметры ARTCP вычисляются, если установлено поле "TI" сегмента. Если номер подтверждаемого сегмента образует непрерывную последовательность с порядковыми номерами сегментов находящимися в очереди передачи, то вся последовательность, кроме подтверждаемого сегмента удаляется из очереди. Например, сегменты в очереди передачи: {k, k+1, k+2, k+3, k+4, ...} и узел получает подтверждение {k+3}, из очереди удаляются сегменты k, k+1, k+2.

Если сегмент содержит данные, то он помещается в приемную очередь, после чего приемная очередь сканируется, из нее убираются (передаются пользователю) сегменты, полученные в непрерывной последовательности порядковых номеров. Затем генерируется подтверждение следующего ожидаемого получателем сегмента, в поля которого заносятся следующие значения: ack - кумулятивное подтверждение, ack-trig - номер последнего полученного сегмента, adv_wnd - свободное пространство в очереди приема. Например, в очереди приема находятся сегменты {i+1, i+2, i+3}, после получения i-го сегмента и его записи в очередь, из нее удаляются сегменты i, i+1, i+2, i+3 и значение кумулятивного подтверждения становится равным i+4. Прототип контрольного сегмента с подтверждением ставится на очередь к передаче.

Похожие статьи




Класс Queue, Обработка приема - Адаптивная система управления потоком для транспортного протокола в сетях с коммутацией пакетов

Предыдущая | Следующая