Смекни!
smekni.com

Модемы (модемные протоколы коррекции ошибок) (стр. 2 из 4)

Разумным компромиссом было сочтено применение циклического поме­хозащищенного кодирования с решающей обратной связью. Суть этого метода состоит в следующем. Вся "полезная" информация разбивается на "порции"

- кадры. Передача каждого кадра завершается передачей специальной конт­рольной последовательности кадра, подсчитанной по некоему, заранее оп­ределенному алгоритму. Этот рекуррентный алгоритм в процессе выдачи кадра модифицирует контрольную последовательность с помощью очередного выдаваемого байта. Удаленная сторона, принимая кадр, также подсчитывает контрольную последовательность по известному алгоритму. По окончании приема кадра производится сравнение подсчитанной контрольной последова­тельности с принятым в конце кадра ее значением. По результатам сравне­ния приемник решает гамлетовский вопрос: быть ли данному кадру, или его следует повторить. Результат решения этого вопроса приемник сообщает передатчику посредством некоей "квитанции". Отсюда другое название это­го метода: метод автоматического повтора запроса (ARQ, Automatic Repeat reQuest).

Основная ответственность за надежность обнаружения ошибок при этом методе лежит на алгоритме вычисления контрольной последовательнос­ти кадра. Здесь используется аппарат циклического избыточного контроля (CRC, Cyclic Redundance Check). Циклическое кодирование базируется на математической теории групп, алгебре многочленов и теории колец. Оста­вив для другого раза теоретические основы циклического кодирования, стоит отметить его свойства, обусловившие выбор циклических кодов.

Главное - это то, что циклические коды обладают высокой надеж­ностью коррекции ошибок при весьма невысокой избыточности. Особенно они эффективны при обнаружении пакетов ошибок. Например, для кадра размером в 256 байт и контрольной последовательности в 16 бит (CRC-16) минималь­ное кодовое расстояние = 3, т.е. одна разрешенная кодовая комбинация отличается от другой, разрешенной же, минимум 3 битами, причем не любы­ми, а расположенными на вполне определенных местах во всей 2064-битовой последовательности. Вероятность появления нераспознаваемой ошибки, т.е. того, что вследствие ошибок одна разрешенная комбинация перейдет в дру­гую, не превосходит 10^(-14). При уменьшении размера кадра или при уве­личении длины контрольной последовательности минимальное кодовое расс­тояние растет, что еще более уменьшит вероятность появления нераспозна­ваемой ошибки.

Другое немаловажное свойство - простота кодирования: рекуррентный характер алгоритма при минимальном расходе вычислительных ресурсов. Причем, существуют по крайней мере два алгоритма, дающих идентичный ре­зультат. Один - битовый, модификация результата в котором производится по каждому биту. Его удобно реализовывать на аппаратном уровне с по­мощью сдвигового регистра. Другой - байтово-табличный, в котором моди­фикация результата производится после приема/передачи целого байта. Этот алгоритм больше подходит для реализации на программном уровне, поскольку требует некоторого объема памяти для хранения таблиц.

Данные принципы циклического помехозащищенного кодирования с ре­шающей обратной связью положены в основу всех аппаратных и программных реализаций наиболее широко распространенных протоколов коррекции ошибок MNP2/MNP3 и V.42 CCITT.

2. Протоколы коррекции ошибок

Строго говоря, противопоставление протокола V.42 CCITT (the International Telegraph and Telephone Consultative Committee) и MNP (the Microcom Networking Protocol) не вполне корректно. Дело в том, что Рекомендация V.42 CCITT - единый стандарт (по традиции называемый "Ре­комендация"), описывающий все рассматриваемые протоколы коррекции оши­бок. То, что в обиходе называется MNP2 и MNP3, есть соответственно байт-ориентированный и бит-ориентированный режимы протокола, описанного в Дополнении A к Рекомендации V.42, а то, что называется протоколом

V.42, - протокол, описанный в основной части Рекомендации. Однако исто­рически сложилось так, что появление протоколов фирмы Microcom пред­шествовало выходу "Голубой Книги" CCITT с Рекомендацией V.42. Поэтому в дальнейшем применяется сложившаяся терминология, которая хоть и не вполне корректна, зато проста и компактна.

То, что по недоразумению называют протоколом MNP4, протоколом на самом деле не является. Это не более, чем модифицированная реализация протоколов MNP2 и MNP3. А посему, ввиду отсутствия предмета, упоминание MNP4 в дальнейшем изложении отсутствует.

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

2.1. MNP2

Протокол коррекции ошибок MNP2 является знак-ориентированным про­токолом типа BSC (Binary Synchronous Communications). Его наличие или отсутствие никак не затрагивает формат передачи байта по каналу: он подвергается асинхронно-синхронному преобразованию в соответствии с Ре­комендацией V.14 CCITT. Каждый элемент кадра - байт - состоит из 8 ин­формационных бит, передается по каналу последовательно, младшим битом вперед; выдача первого бита предваряется стартовым битом (0), служащим синхросигналом приемнику; после передачи последнего бита выдается сто­повый бит (1). Если следующий байт не готов к выдаче, передается поток стоповых битов. Таким образом можно считать, что байт состоит как мини­мум из 10 бит, включая один стартовый и один стоповый биты (абстрагиру­ясь от незначительных в данном контексте подробностей, связанных с вы­равниванием скоростей на коммуникационных интерфейсах передатчика и приемника).

Из этого обстоятельства есть два весьма существенных следствия. Во-первых, процедура входа в протокол прозрачна и не требует специаль­ного синхронного переключения обоих модемов в какой-то специфический режим работы асинхронно-синхронного преобразования данных. В любой мо­мент модем может начать передачу символов, являющихся не самоценными данными, а служебным полем кадра протокола MNP2. Лишь бы приемник был готов на логическом уровне идентифицировать это обстоятельство. Во-вто­рых, реализация протокола может быть вынесена на уровень программного обеспечения компьютера, оставляя модем и вовсе в неведении относительно наличия протокола коррекции ошибок. Хорошо это или плохо - предмет от­дельного разговора, но это дополнительная степень свободы, предоставля­емая (или, вернее, не отнимаемая) протоколом.

Формат кадра MNP2 следующий:

- управляющее поле начального флага, включающее три байта: SYN, DLE и STX (16h, 10h, 2h);

- прозрачные пользовательские данные переменной длины;

- управляющее поле конечного флага, включающее 2 байта: DLE и ETX

(10h, 3h);

- двухбайтовая контрольная последовательность кадра, подсчитанная с помощью образующего полинома X^16 + X^15 + X^2 + 1.

Кодовая прозрачность управляющих полей обеспечивается байтом DLE, сигнализирующим о специальном значении следующего за ним байта. Если же этот байт встречается в пользовательских данных, то он должен дублиро­ваться, чем обеспечивается прозрачность самих пользовательских данных. Иногда процедуру вставки байта DLE в пользовательские данные в протоко­ле типа BSC называют байтстаффингом. Поскольку протокол MNP2 - знак-ориентированный, в нем нет специального межкадрового заполнителя. Им служит банальный межбайтовый заполнитель - поток стоповых битов.

В протоколе MNP2 существуют 6 типов кадров: LR, LD, LT, LA, LN и LNA. Каждый тип кадра в поле прозрачных пользовательских данных имеет свою собственную логическую структуру, в которой кодируется признак ти­па кадра, а также присущие ему параметры и пользовательская информация.

2.2. MNP3

Протокол коррекции ошибок MNP3 является бит-ориентированным про­токолом. Кадровый формат его радикальным образом отличается от вышеиз­ложенного и полностью соответствует основной части Рекомендации V.42, включая асинхронно-синхронное преобразование байта, подсчет двухбайто­вой контрольной последовательности кадра с точностью до образующего по­линома, обеспечение прозрачности данных и межкадровый заполнитель. Все это подробнее будет рассмотрено ниже, в разделе, посвященном протоколу

V.42. Все же остальное - перечень типов кадров, их логическая структура и собственно протокол - полностью идентично протоколу MNP2. По сути MNP3 - это паллиатив между MNP2 и V.42.

При бесспорном снижении накладных расходов, обусловленном перехо­дом на синхронный кадровый формат, MNP3 не достигает кондиций V.42, те­ряя в гибкости по сравнению с MNP2. Даже экономии вычислительных ресур­сов невозможно добиться, отказываясь от реализации байт-ориентированно­го режима MNP. По той простой причине, что процедура входа в протокол MNP3 заключается в обмене сторонами кадрами LR в байт-ориентированном режиме. Только согласовав с помощью этого кадра применение в дальнейшем бит-ориентированного режима, стороны синхронно в него переключаются. Таким образом, все вычислительные процедуры, присущие MNP2 - формирова­ние кадра специфического формата, вычисление контрольной последователь­ности по специфическому образующему полиному, байтстаффинг и пр. - все это необходимо реализовывать для установки протокола MNP3. И в этой связи совершенно непонятна логика разработчиков некоторых дорогостоящих модемов, в которых байт-ориентированный режим MNP считается устаревшим и не поддерживается (например, ZyXEL U-1496). Не говоря уже о том, что это является прямым нарушением Рекомендации V.42: "An error-correcting entity that supports framing mode 3 must also support framing mode 2." (CCITT, Blue Book, Volume VIII - Fascicle VIII.1, Data communication over the telephone network, Geneva 1989, p. 349).

В качестве заметки на полях, хотелось бы обратить внимание sysop'ов BBS, пользующих ZyXEL, на такое его поведение. Полагая, что столь неплохо зарекомендовавший себя модем умеет все делать сам, опера­торы станций не подключают драйверы, эмулирующие MNP2. И тем самым практически исключают из числа своих абонентов тех несчастных, модемы которых аппаратно не поддерживают протоколы коррекции ошибок и которые вынуждены уповать только на программную реализацию MNP2.