ARQ с выборочным повторением
Механизм ARQ с возвратом на N может повторно передавать кадры, которые приемник правильно принял, и подтверждения их приема благополучно доставлялись отправителю. Например, пусть кадр 1 оказался ошибочным и был уничтожен, а последующие кадры 2,3,…,WS-1 доставлялись без ошибок. Тем не менее, приемник должен был уничтожать их, а передающий узел после истечения тайм-аута кадра 1 наряду с ним должен был отправлять кадры 2,3,…,WS-1.Очевидно, что такие повторные передачи снижают эффективную производительность канала.
Механизм ARQ с выборочным повторением (Selective Repeat, SR-ARQ) исключает такие повторные передачи. Для этого потребовалось:
· использовать приемное окно размером более одного кадра, что позволяет принимать кадры, пришедшие без ошибок, но с нарушением непрерывности их нумерации;
· сделать возможной повторную передачу отдельного кадра, т.е. проинформировать передатчик, какой именно кадр был испорчен.
На рис.3.9 представлена функциональная схема рассматриваемого алгоритма. Размер окна приемника позволяет принимать кадры с номерами от до . Принятые без ошибок кадры из этого диапазона помещаются в буфер; объем такого буфера должен быть не меньше окна приема. Кадры из буфера передаются вышестоящему протоколу строго в их исходной последовательности в соответствии с определенной дисциплиной.
При получении кадра, нарушающего непрерывность их нумерации (пусть кадр с номером ), но принадлежащего диапазону [ , ] приемник сохраняет его в буфере и отсылает специальное сообщение NAK (Negative Acknowledgement), которым подтверждает успешный прием кадра и, как и ранее, передает значение . Последнее говорит передатчику о недоставке кадра с номером и не позволяет ему изменить значение . Наличие в буфере передатчика всех отправленных, но еще неподтвержденных, кадров, позволяет повторить передачу любого из них. Следуя сообщению NAK, передатчик выполняет повторную отправку кадра и, если он благополучно принимается, то группа кадров, , , ,…, , находящихся в буфере приемника, передается модулю вышестоящего протокола и буфер очищается.
В примере на рис. 3.10 предполагается, что окно передачи WS=6 и кадры K0, K1,…K5 могут передаваться. Получив кадр К3, вместо ожидавшегося К2, приемник буферизирует его и отправляет сообщение NAK с ; на все последующие принимаемые кадры K4, K5 отсылает АСК с . Получив отрицательное подтверждение (NAK с ), передатчик повторно отправляет кадр К2. В момент, когда кадр 2 оказывается принятым, в буфере приемника уже находятся кадры 3, 4, 5. Поэтому старое значение изменяется на .
Способность буферизировать кадры в пределах окна приема усложняет задачу различения кадров с одинаковыми номерами, принадлежащих разным циклам нумерующей последовательности. Её решение потребовало более строгого, в сравнении с GBN-ARQ, ограничения величины окна передачи. Рассмотрим пример, в котором величина окна передачи устанавливается по правилу алгоритма GBN, т.е. (рис. 3.11).
Передатчик отправил полное окно кадров, они были благополучно приняты, но все подтверждающие их прием ACK-кадры были утеряны. Кадры К0, К1 и К2 будут переданы приложению (ведь они пришли без ошибок, в должном порядке и полностью заполнили буфер окна приема). После истечения тайм-аута передатчик повторно отправит неподтвержденные кадры. На рис. 3.11 в фигурных скобках приведены состояния списка разрешенных к приему номеров кадров в моменты перед приемом очередного кадра. Из них видно, что приемник будет воспринимать повторно отправленный кадр К0, как кадр с номером 0 следующей серии, по каким-то причинам опередивший кадр 3 предыдущей серии, и не уничтожит его.
Для верного распознания дублей ранее отправленных кадров необходимо, чтобы длина нумерующей последовательности m удовлетворяла условию . Иными словами, ширина окна передачи не должна превосходить половину длины нумерующей последовательности, т.е. максимальные значения окон приема и передачи должны составлять .
Рис. 3.12 иллюстрирует нормальную работу схемы SR-ARQ при m=2 и с окнами , т.е. равными половине диапазона нумерующей последовательности.
В сравнении с GO-Back-N рассматриваемый метод повторной передачи более эффективно использует пропускную способность канала; однако он сложнее в реализации и требует больших ресурсов конечных узлов (буферная память, в частности). Этот алгоритм успешно используется современными версиями Интернет-протокола ТСР.