2.3. V.42
Протокол коррекции ошибок V.42 является подмножеством, называемым LAPM (Link Access Procedure for Modems), бит-ориентированных протоколов типа HDLC (High-level Data Link Control). Как уже было сказано выше, формат кадра LAPM отличается от кадрового формата MNP2. Если последний можно было условно назвать асинхронным кадровым форматом, то LAPM можно смело называть синхронным.
Кадр LAPM состоит их нескольких полей, каждое из которых включает целое число байт. Все байты в кадре передаются последовательно друг за другом без каких бы то ни было служебных битов: вслед за старшим битом предыдущего байта передается младший бит следующего. Все кадры начинаются и заканчиваются уникальной битовой последовательностью, называемой флагом: шестью единицами подряд, окаймленными нулями (01111110b, 7Eh). Кодовая прозрачность тела кадра обеспечивается вставкой нулевого бита вслед за пятью подряд единицами, независимо от значения следующего бита (битстаффинг). Межкадровым заполнителем служит флаговая последовательность. Завершающий флаг одного кадра может одновременно служить начальным флагом следующего. Таким образом, битстаффинг гарантирует приемник от появления флага в середине кадра; обнаружение флага в потоке данных говорит приемнику об окончании принимаемого кадра; появление в потоке флаговых комбинаций последовательности битов, отличных от флага, говорит о начале следующего кадра. Резюмируя вышеизложенное, правильнее, думается, называть LAPM "кадр-ориентированным" протоколом, нежели "бит-ориентированным".
Формат кадра LAPM следующий:
- начальный флаг (7Eh);
- поле адреса;
- управляющее поле;
- информационное поле;
- двухбайтовая или четырехбайтовая контрольная последовательность кадра;
- конечный флаг (7Eh).
Подробное описание полей кадров LAPM - предмет довольно скучный. Стоит лишь отметить, что управляющее поле кадра идентифицирует один из трех форматов кадра. Информационные кадры (I-формат) предназначены для передачи информации с возможностью одновременного подтверждения принятой информации. Супервизорные кадры (S-формат) предназначены для подтверждения принятой информации, запроса на повторную передачу или сообщения оппоненту о неготовности к приему. И, наконец, ненумерованные кадры (U-формат) выполняют дополнительные управляющие сеансом процедуры, как то: установка/прекращение работы протокола, согласование параметров протокола, передача сигнала break, тестирование канала и пр. Всего в протоколе LAPM насчитывается 13 типов кадров:
- 1 кадр I-формата;
- 4 типа кадра S-формата: RR, RNR, REJ и SREJ;
- 8 типов кадров U-формата: SABME, DM, UI, DISC, UA, FRMR, XID и TEST.
Двухбайтовая контрольная последовательность кадра подсчитывается с помощью образующего полинома X^16 + X^12 + X^5 + 1. Стоит обратить внимание на тот факт, что образующий полином отличается от того, который используется в протоколе MNP2. Четырехбайтовая контрольная последовательность кадра подсчитывается с помощью образующего полинома X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 + X^8 + X^7 + X^5 + X^4 + X^2 + X + 1. Выбор CRC-16 или CRC-32 производится в процессе согласования параметров протокола с помощью кадров XID.
Вход в протокол - операция весьма ответственная и потому тщательно спланирована. Вызывающий модем начинает установку протокола непрерывной передачей своему оппоненту двухбайтовых "шаблонов обнаружения вызывающего" (ODP, Originator Detection Pattern) в байт-ориентированном режиме, соответствующем Рекомендации V.14 CCITT. ODP состоит из байтов 11h и 91h, разделенных между собой 8 - 16 стоповыми битами. Отвечающий модем, приняв два подряд ODP, начинает выдавать "шаблоны обнаружения отвечающего" (ADP, Answerer Detection Pattern) в том же байт-ориентированном режиме. ADP состоит из байтов 45h ('E') и 43h ('C'), разделенных между собой 8 - 16 стоповыми битами. После выдачи десяти ADP отвечающий модем переключается в синхронный режим. Вызывающий модем, приняв два подряд ADP, прекращает передачу ODP и переключается в синхронный режим. Выдача первого кадра в синхронном режиме предваряется как минимум 16 флаговыми последовательностями, с помощью которых выдерживается пауза для гарантированного переключения обоих сторон в синхронный режим. Первым кадром, как правило, оказывается кадр XID, с помощью которого стороны согласуют параметры протокола коррекции ошибок и сжатия.
3. Слава, слава V.42, победителю
Столь смелое восклицание обязывает непосредственно перейти к изложению факторов, по которым сравнительный анализ протоколов коррекции ошибок свидетельствует в пользу V.42.
3.1. Минимизация накладных расходов.
Совокупное преимущество V.42 по этому фактору имеет несколько составляющих.
а) Очевидное преимущество MNP3 и V.42 перед MNP2, обусловленное переходом на синхронный кадровый формат, заключается в уменьшении объема передаваемых по каналу данных по крайней мере на 20% вследствие отказа от передачи стартовых и стоповых битов.
б) Обеспечение кодовой прозрачности данных в байт-ориентированном режиме приводит в худшем случае, когда вся пользовательская информация состоит из одних байтов DLE, к увеличению объема передаваемых данных на 100%. Для синхронного кадрового формата худший случай, заключающийся в том, что пользовательская информация состоит из одних единиц (байтов 0FFh), приводит к увеличению объема передаваемых данных лишь на 20% - вставки дополнительного 0 после каждых пяти единиц.
в) Накладные расходы на передачу пользовательской информации посредством I кадра протокола V.42, обусловленные структурой кадра, составляют 6 байт. Аналогичные накладные расходы для кадров LT, осуществляющих передачу пользовательской информации, для протокола MNP3 составляют 8 байт, а для протокола MNP2 - 12 байт.
г) При двусторонней передаче информации протоколы MNP будут либо откладывать подтверждение принятой информации, неоправданно "загромождая" буфера оппонента отправленными, но неподтвержденными кадрами, либо будут вынуждены чередовать передачу пользовательской информации с подтверждениями очередных принятых кадров, т.е. увеличивать накладные расходы на 11 байт для MNP3 и на 15 байт для MNP2 (длина кадра LA). I кадр протокола V.42 в самой своей структуре несет функцию подтверждения принятой информации, и потому дополнительных накладных расходов не требует.
3.2. Надежность входа в протокол.
Процедура входа в любой из протоколов MNP заключается в обмене сторонами кадрами LR в байт-ориентированном режиме. Переключение в
синхронный кадровый формат протокола MNP3 производится только после выдачи инициатором кадра LA (и, соответственно, его приема отвечающим), подтверждающего прием ответного кадра LR. Длина кадра LR составляет 31 байт, а кадра LA - 15 байт. Таким образом, установка протокола обусловлена безошибочным приемом 31 байта отвечающим модемом, затем 31 байта вызывающим модемом и, наконец, 15 байт вновь отвечающим модемом. В то время, как для установки протокола LAPM требуется безошибочно передать всего лишь по 4 байта в каждую сторону - по 2 ODP/ADP, соответственно. Впрочем, эти 4 байта должны перемежаться потоком стоповых бит длиной в среднем в 1.5 байта. Поэтому для корректности надо говорить о 10 байтах. Очевидно, что при наличии помех (в противном случае в протоколе просто нет нужды) вероятность безошибочного приема 10 байт значительно выше, чем 31 байта и, тем более, 46 байт.
Кроме того, поток ODP/ADP включает в себя не менее 10 шаблонов, т.е. каждая пара повторяется не менее 5 раз. В то время, как в случае неудачи приема кадра LR какой-либо из сторон, обмен этими кадрами будет повторен по истечении тайм-аута лишь однажды. Превосходство в кратности повтора процедуры еще более увеличивает разницу в вероятностях успешного входа в протокол коррекции ошибок, подчеркивая преимущество протокола LAPM над MNP.
3.3. Устойчивость к полеганию.
Этот фактор характеризует как преимущество синхронного кадрового формата над байт-ориентированным режимом, так и преимущество собственно протокола LAPM над MNP. Имеется в виду здесь следующее. Помехи не разбирают (хочется надеяться) какова логическая значимость того или иного бита, который они искажают до неузнаваемости. Это может быть "рядовой" бит пользовательских данных, а может и бит в управляющем поле кадра. Если представить себе, что этот злосчастный бит находится в двухбайтовом управляющем поле конечного флага кадра протокола MNP2, то нетрудно себе представить что это значит для принимающей стороны. Потеря конца кадра приводит к тому, что принимающая сторона воспринимает поток стоповых битов, являющийся межкадровым заполнителем, в качестве паузы между двумя соседними байтами принимаемого незаконченного кадра. Все это продолжается вплоть до появления стартового флага следующего кадра, либо до истечения тайм-аута. Даже если следующий кадр не заставил себя долго ждать, весь он будет фактически накладным расходом, так как даже при безошибочном его приеме, он будет признан недействительным вследствие ошибки последовательной его нумерации из-за неприема его предшественника.
Теперь рассмотрим с этой точки зрения синхронный кадровый формат. Пусть произошел сбой в конечном флаге. Но межкадровым то заполнителем служит все тот же флаг. Стало быть будет пойман пусть не первый, так следующий флаг. Кадр будет признан ошибочным, но ждать "у моря погоды" принимающей стороне незачем, ситуация для нее вполне определенная - можно посылать запрос на повтор кадра.
Далее в бой вступают уже протокольные преимущества V.42 над MNP. Во-первых, одним из условий признания кадра недействительным в протоколе V.42, в отличие от протоколов MNP, является превышение размера его информационного поля оговоренного в процедуре входа в протокол значения. Это позволяет принимающей стороне в ситуации пропуска флага, разделяющего два соседних кадра, не дожидаться конечного флага второго кадра, а сразу же выдать запрос на повторную передачу. Во-вторых, наличие типа кадра SREJ в протоколе LAPM позволяет не отбрасывать корректно принятый вслед за ошибочным кадр, а запросить селективный повтор одного единственного неверно принятого кадра.