Сравнительные характеристики протоколов MNP и LAPM

Минимизация накладных расходов

Совокупное преимущество 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 в самой своей структуре несет функцию подтверждения принятой информации, и потому дополнительных накладных расходов не требует.

д) В LAPM возможен избирательный отказ.

Надежность входа в протокол

Процедура входа в любой из протоколов 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.

Устойчивость

Этот фактор характеризует как преимущество синхронного кадрового формата над байт-ориентированным режимом, так и преимущество собственно протокола LAPM над MNP. Имеется в виду здесь следующее. Помехи не разбирают (хочется надеяться) какова логическая значимость того или иного бита, который они искажают до неузнаваемости. Это может быть "рядовой" бит пользовательских данных, а может и бит в управляющем поле кадра. Если представить себе, что этот злосчастный бит находится в двухбайтовом управляющем поле конечного флага кадра протокола MNP2, то нетрудно себе представить что это значит для принимающей стороны. Потеря конца кадра приводит к тому, что принимающая сторона воспринимает поток стоповых битов, являющийся межкадровым заполнителем, в качестве паузы между двумя соседними байтами принимаемого незаконченного кадра. Все это продолжается вплоть до появления стартового флага следующего кадра, либо до истечения тайм-аута. Даже если следующий кадр не заставил себя долго ждать, весь он будет фактически накладным расходом, так как даже при безошибочном его приеме, он будет признан недействительным вследствие ошибки последовательной его нумерации из-за неприема его предшественника.

Теперь рассмотрим с этой точки зрения синхронный кадровый формат. Пусть произошел сбой в конечном флаге. Но межкадровым то заполнителем служит все тот же флаг. Стало быть будет пойман пусть не первый, так следующий флаг. Кадр будет признан ошибочным, но ждать "у моря погоды" принимающей стороне незачем, ситуация для нее вполне определенная - можно посылать запрос на повтор кадра. Далее в бой вступают уже протокольные преимущества V.42 над MNP. Во-первых, одним из условий признания кадра недействительным в протоколе V.42, в отличие от протоколов MNP, является превышение размера его информационного поля оговоренного в процедуре входа в протокол значения. Это позволяет принимающей стороне в ситуации про пуска флага, разделяющего два соседних кадра, не дожидаться конечного флага второго кадра, а сразу же выдать запрос на повторную передачу. Во-вторых, наличие типа кадра SREJ в протоколе LAPM позволяет не отбрасывать корректно принятый вслед за ошибочным кадр, а запросить селективный повтор одного единственного неверно принятого кадра.

Гибкость

Сей фактор целиком обязан своим появлением расширенным возможностям собственно протокола LAPM по сравнению с протоколами MNP. Частично эти возможности уже были упомянуты выше. Здесь же будет приведен краткий, по возможности, их перечень.

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

б) Кадр XID протокола LAPM, с помощью которого производится согласование параметров, позволяет модемам обмениваться дополнительной информацией, такой как "ID (идентификатор) изготовителя". Это потенциально (а может и реально) дает возможность модемам одного и того же изготовителя расширять протокол в процессе сеанса по своему усмотрению.

в) Возможность повышения надежности коррекции ошибок с помощью четырехбайтовой контрольной последовательности кадра (CRC-32) в особо ответственных сеансах, при условии поддержки этой возможности обоими модемами. Поддержка этой возможности необязательна.

г) Совмещение функции передачи пользовательской информации с функцией подтверждения принятых данных.

д) Селективный повтор одного неверно принятого кадра. Реализация этой возможности (тип кадра SREJ) необязательна.

е) Кадр U-формата TEST позволяет в любой момент, не прекращая передачу пользовательской информации, осуществить кольцевое тестирование канала передачи данных. Поддержка этой возможности необязательна.

ж) Пересогласование параметров передачи в любой момент времени после установки протокола. Модем может инициировать пересогласование параметров протокола, послав кадр XID, в любой момент, исходя из своих собственных внутренних критериев. Например, посчитав, что качество канала связи ухудшилось, он может потребовать уменьшить максимальный размер кадра, или включить любую из необязательных процедур: кольцевое тестирование, например, или CRC-32. MNP позволяет согласовывать параметры единожды, при входе в протокол.

з) Протокол LAPM содержит задел для его расширения в будущем. В частности, наличие адресного поля открывает возможности для многоточечного соединения.

 

Процедура контроля правильности передачи по CRC (На всякий случай)

При передаче информации по некачественным и/или разделяемым каналам связи возможны ошибки, то есть искажения передаваемой информации. Эти ошибки необходимо выявлять и исправлять. Для контроля правильности передачи используется проверка избыточности циклической суммы – CRC (cyclic redundancy check) – способ цифровой идентификации некоторой последовательности данных, который заключается в вычислении контрольного значения её циклического избыточного кода. Процедура вычисления CRC следующая: пусть имеем передающий полином (проверочную последовательность) q(x) = x16 + … + 1 – простое число. Полиномы подбираются под определённый вид чередования ошибок. Перед передачей циклической последовательности умножаем её на 216 , т.е. сдвигаем и в освободившееся место приписываем 16-ти разрядное непрерывное число L(x), оно заранее известно: F(x) * 216 + L(x). Это число делится на производящий непрерывный полином (причём, по модулю 2) так, что в результате у нас получается некоторое целое число (частное от деления) и какой-то остаток, который в обратном коде мы записываем вместо циклической последовательности (этот остаток и будет контрольным кодом по CRC):

F(x) * 216 + L(x) = Int(x) * q(x) + O(x)

O(x) = Int(x) * q(x) – F(x) * 216 – L(x) – остаток.

Т.е. на приёмную сторону поступает F(x) * 216 + O(x). На приёмной стороне эту последовательность снова делят (по модулю 2) на производящий полином и отбрасывают целую часть (частное). В результате на приёмной стороне мы получаем заранее известное число L(x). Если оно получилось, то передача произошла без ошибок. Если не получилось, то это означает, что кадр пришёл не верно.

Есть очень маленькая вероятность, что число L(x) получится и при передаче с ошибками. При применении такой процедуры защиты от ошибок вероятность ошибок снижается до 10-12.

Рассмотрим эту процедуру на примере. Пусть надо передать число: F(x) = 10011101 (8 бит), производящий полином (5 бит): q(x) = 11001 – простое число (делится само на себя и на 1). Увеличиваем разрядность, дописываем к последовательности 4-е нуля (L(x) = 0000): F(x) = 10011101 0000. Делим последовательность F(x) на производящий полином q(x). Операция деления заменяется на сложение по модулю 2 и сводится к регистру сдвига.

0010 – остаток (CRC).

Результат вычисления CRC добавляется в конец блока данных непосредственно перед началом передачи. Т.е. передаём число F(x) и остаток O(x) – CRC. На приёмной стороне к числу F(x) дописываем остаток O(x): F(x) = 10011101 0010. Полученное число делим по модулю 2 на производящий полином q(x):

 

0000 – остаток, он получился равным L(x), значит передача прошла без ошибок. Для протокола LAP – M используется полином q(x) = x16 + x12 + x5 + 1, где «+» - сумма по модулю 2. Чтобы реализовать такое преобразование достаточно регистра сдвига:

Эти преобразования происходят: при передаче до вставления нуля, а на приёме после извлечения нуля.

32-х разрядный полином для протокола LAP – M: q(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 +1, где «+» - сумма по модулю 2. Этот полином используется в стандартных локальных сетях. Какой использовать полином определяется при согласовании параметров, при этом выбирается только тот полином, который поддерживается обоими модемами.