Введение

Семейство пронумерованных сетевых протоколов
Сетевые протоколы Microcom, почти всегда сокращенно MNP, – это семейство протоколов коррекции ошибок, широко использовавшихся на ранних высокоскоростных (2400 бит/с и выше) модемах. Изначально разработанные для модемов Microcom, эти протоколы впоследствии были открыто лицензированы и применялись большинством производителей модемов, в частности, компаниями "большой тройки" – Telebit, USRobotics и Hayes. Позднее MNP были вытеснены протоколом V.42bis, который стал практически универсальным стандартом, начиная с первых модемов V.32bis в начале 1990-х годов.

Обзор

Хотя Xmodem был представлен в 1977 году, еще в 1985 году The New York Times сначала описала XMODEM, а затем обсудила MNP как основного конкурента, отметив, что модемы со скоростью 9600 бод "начинают появляться на рынке". К 1988 году Times писала о модемах со скоростью 9600 и 19.2K, и что "за MNP следуют по крайней мере 100 других марок модемов" (в отличие от использования Hayes LAP B).

Основы исправления ошибок

Модемы по своей природе – устройства, склонные к ошибкам. Шум в телефонной линии, обычное явление, может легко имитировать звуки, используемые модемами для передачи данных, тем самым внося ошибки, которые трудно заметить. Для некоторых задач, таких как чтение или запись простого текста, небольшое количество ошибок можно допустить без серьезных последствий. Однако для других задач, например, передачи компьютерных программ в машинном формате, даже одна ошибка может сделать полученные данные бесполезными. По мере увеличения скорости модемов за счет использования большей полосы пропускания, возрастает и вероятность внесения ошибок случайным шумом; при скорости выше 2400 бит/с эти ошибки становятся довольно распространенными. Для решения этой проблемы был разработан ряд протоколов передачи файлов, реализованных в различных программах. Как правило, эти протоколы разбивают файл на серию фреймов или пакетов, содержащих определенное количество байт из исходного файла. К каждому пакету добавляются дополнительные данные, обычно контрольная сумма или CRC, для определения, возникла ли ошибка при его получении. Затем пакет отправляется в удаленную систему, которая пересчитывает контрольную сумму или CRC полученных данных и сравнивает ее с той, что была получена вместе с пакетом, чтобы установить, был ли он доставлен правильно. Если да, то получатель отправляет подтверждение (ACK), давая отправителю сигнал для отправки следующего пакета. В случае возникновения проблемы отправляется отрицательное подтверждение (NAK), и отправитель повторно отправляет поврежденный пакет. Этот процесс создает "накладные расходы" на передачу. Во-первых, дополнительная контрольная сумма или CRC занимает время в канале, которое иначе можно было бы использовать для передачи большего объема данных. Однако это не является существенной проблемой, если пакеты не слишком малы (как, например, в UUCP). Более серьезной проблемой является время, необходимое получателю для проверки пакета, сравнения его с CRC и отправки подтверждения обратно отправителю. Эта задержка увеличивается относительно по мере роста скорости модема: задержка телефонной линии остается постоянной, но объем данных, который можно передать за это фиксированное время, увеличивается с ростом скорости. Для решения этой проблемы в новых протоколах используется система, известная как "скользящее окно", позволяющая отправителю начинать передачу следующего пакета без ожидания подтверждения; повторная отправка пакета происходит только в том случае, если подтверждение не получено в течение определенного времени.

Пожимание рук МНП

Подключения MNP устанавливались после успешного установления соединения модемов. Инициирующая система (модем, совершивший вызов, или иногда компьютер, к которому он был подключен) отправляла короткую последовательность 8-битных символов, известную как "Образец определения инициатора" (ODP). Эта последовательность состояла из DC1 с четным паритетом (10001000) в начале, одного или двух символов $FF (11111111), DC1 с нечетным паритетом (10001001) и снова того же количества символов $FF. После отправки ODP отправитель запускал "Таймер фазы обнаружения", или T400. Отвечающая система должна была корректно отреагировать на ODP в течение этого времени, иначе инициирующая система предполагала, что MNP не поддерживается. Каждый класс, как правило, улучшал производительность по сравнению с предыдущими версиями, которые сохранялись только для обеспечения обратной совместимости.

МНП 1 и 2

Первый стандарт MNP, ретроспективно известный как MNP Class 1, или просто MNP 1, представлял собой простой полудуплексный протокол, аналогичный XModem. Отсутствие поддержки скользящего окна приводило к довольно низкой эффективности пропускной способности – около 70%. Это означало, что при использовании модема со скоростью 2400 бит/с, такого как те, что продавала Microcom, пропускная способность была ограничена примерно 1690 бит/с. Эта система была разработана прежде всего с целью максимально упростить ее реализацию на ограниченном аппаратном обеспечении, что и объясняет ее простоту. С улучшением доступности недорогой вычислительной мощности, Microcom представила MNP 2 – полнодуплексную версию MNP 1, которая позволяла отправлять подтверждающие сообщения (ACK) одновременно с началом передачи следующего исходящего пакета. Это устранило паузу, возникавшую в то время как модем ожидал получения ACK, и потребовало наличия некоторой памяти в системе для отслеживания получения ACK в течение определенного времени. Благодаря сокращению задержки между пакетами, оставались только накладные расходы CRC, что повысило пропускную способность примерно до 84%.

МНП 3

При нормальном использовании модем может отправлять или принимать данные в любой момент времени, режим работы известен как "асинхронный". Модем может определить скорость передачи данных отправителем, прослушивая поступающие биты и "синхронизируя" свои часы с частотой принимаемых битов. Поскольку данные могут поступать в любое время, точной синхронизации нет; часы могут нуждаться в повторной настройке во время пауз, например, когда пользователь перестает набирать текст. К сожалению, такой способ синхронизации не работает, если в данных отсутствуют переходы между 1 и 0; длинная последовательность нулей или единиц не содержит переходов, что делает невозможным определение начала данных для конкретного байта. Чтобы избежать этой проблемы, к каждому концу байта добавляются дополнительные биты кадрирования, обычно по одному биту с каждой стороны, известные как "стартовый и стоповый биты". Это гарантирует наличие как минимум одного перехода от 1 к 0 для каждого байта, чего более чем достаточно для поддержания синхронизации часов. Однако эти биты также увеличивают размер каждого блока данных в 8 бит (одного байта) до 10 бит, что создает накладные расходы в 20%. При использовании протокола передачи файлов сами пакеты обеспечивают собственное кадрирование. Пакеты всегда передают непрерывный поток данных, поэтому часы не могут "сбиваться" так, как это происходит при вводе данных пользователем с клавиатуры. Отключая эти биты кадрирования при работе по каналу с коррекцией ошибок, можно устранить эти 20% накладных расходов. Именно это и делал MNP 3. После согласования и подтверждения поддержки MNP 3 обоими модемами биты кадрирования отключались, что повышало общую эффективность примерно на 20%. Это почти полностью компенсировало накладные расходы протокола, что означало, что при использовании MNP 3 пользователь мог рассчитывать на пропускную способность, близкую к идеальным 2400 бит/с (вместо 1900 бит/с).

МНП 4

MNP 4 был дальнейшим улучшением MNP 3, добавив систему пакетов переменного размера, которую они называли адаптивной сборкой пакетов. В случае MNP накладные расходы пакетной системы были относительно невелики, но даже многобайтовый CRC занимал место, которое лучше использовать для данных. Как правило, использование больших пакетов решало эту проблему, поскольку CRC оставался фиксированным по размеру, и, следовательно, его относительные накладные расходы уменьшались по сравнению с объемом передаваемых данных. Однако, при возникновении ошибки, использование больших пакетов также означало, что потребуется повторная передача большего объема данных. На зашумленных линиях это могло снизить общую пропускную способность. В MNP 4 оба модема постоянно отслеживали линию на предмет потери пакетов, и если достигался определенный порог (устанавливаемый пользователем), модем переключался на меньший размер пакета. Это означало, что при потере пакета объем данных, подлежащих повторной передаче, был меньше, что обеспечивало более высокую пропускную способность. На линиях хорошего качества использование больших пакетов уменьшало накладные расходы CRC. Размер пакетов мог варьироваться от 64 до 256 байт, и пользователь мог принудительно установить определенный размер при необходимости. MNP 4 также представил оптимизацию фазы данных – простое изменение протокола, которое позволяло исключить часть информации о структуре пакетов после установления соединения, дополнительно снижая накладные расходы протокола. Сочетание этих функций, а также отсутствие байтовой рамки в MNP 3, позволило еще больше повысить эффективность пропускной способности.

МНП 5

Еще более радикальное изменение было внесено в MNP 5, реализовав сжатие данных непосредственно в модеме. В MNP 5 данные, поступающие от компьютера, сначала сжимаются с помощью простого алгоритма, а затем передаются в систему пакетизации MNP 4 для передачи. В оптимальных условиях система обеспечивала сжатие примерно 2:1, но в целом около 1,6:1 было типичным, по крайней мере, для текста. В результате, модем со скоростью 2400 бит/с мог передавать текст со скоростью около 4000 бит/с. Это значительное увеличение пропускной способности позволило модемам Microcom оставаться в некоторой степени конкурентоспособными с моделями других компаний, которые формально были намного быстрее. Например, Microcom обычно выпускала модемы со скоростью 1200 и 2400 бит/с, используя стандартные компоненты, в то время как такие компании, как USRobotics и Telebit, предлагали модели со скоростью до 19200 бит/с. Однако это улучшение производительности было доступно только при поддержке MNP на обоих модемах. Это делало систему действительно привлекательной только для организаций, устанавливающих модемы на обоих концах соединения; для сервисов dial-up, таких как системы электронных досок объявлений (BBS), не было веских причин использовать устройство Microcom, поскольку конечный пользователь вряд ли им обладал. Даже в тех случаях, когда пользователь контролировал оба конца соединения, "проприетарные" модемы Microcom были менее интересны, чем модели других компаний, предлагавшие значительно более высокую "реальную" пропускную способность. Чтобы создать рынок для модемов Microcom, начиная с MNP 5, они пошли на радикальный шаг – бесплатное лицензирование всего пакета MNP. Предполагалось, что это резко увеличит количество модемов с установленным MNP, что сделает "оригинальные" модемы Microcom более привлекательными. Кроме того, новые стандарты с улучшенной производительностью должны были обеспечить еще более высокую скорость при использовании модема Microcom на обоих концах соединения. Этот план не оправдался. Внедрение значительно улучшенной системы сжатия LAPM в стандарте V.42bis превзошло собственные разработки Microcom, практически обесценив "оригинальную" модель Microcom. Благодаря V.42bis и стандартным компонентам вскоре появилось огромное количество недорогих модемов с производительностью даже выше, чем у Microcom. Несмотря на то, что Microcom продолжала внедрять новые стандарты, они в основном игнорировались, и Microcom перестала быть заметным игроком на рынке.

МНП 6

Введение V.32 привело к появлению ряда стандартных 9600-битных модемов, почти все из которых поддерживали MNP 5. Чтобы выделиться на фоне рынка, который становился все более стандартизированным (хотя и не полностью, пока в 1991 году не был представлен V.32bis SupraFAXModem 14400), компания Microcom разработала MNP 6. Основной особенностью MNP 6 было статистическое дуплексирование, которое позволяло динамически распределять полосу пропускания между сторонами модемного соединения. Например, если один компьютер отправлял большой файл, другой отправлял лишь небольшое количество информации – подтверждения ACK и отрицательные подтверждения NAK. В этом случае модемы выделяли отправителю максимально возможную полосу пропускания, обеспечивая скорость передачи в одном направлении до 19 200 бит/с. Это не требовало изменений в системе модуляции: обычно 9600-битный модем имел канал 9600 бит/с в обоих направлениях, что давало общую скорость 19200 бит/с; MNP 6 просто позволял распределять эту полосу пропускания неравномерно между направлениями, вместо фиксированных 9600 бит/с в обе стороны. Эта базовая концепция уже широко применялась в отрасли и легла в основу протоколов Hayes Express 96, PEP от USRobotics HST Telebit и (ненадолго) SpeedModem от CompuCom. Всем этим стандартам было сложно конкурировать на рынке, где доминировала V.32bis, и, как и они, MNP 6 остался практически незамеченным. Менее значительным дополнением к MNP 6 стала универсальная процедура согласования соединения. С появлением новых режимов модуляции, в частности V.32 и последующих усовершенствований, модемы на обоих концах соединения тратили все больше времени на согласование общего стандарта. Например, модем V.32bis сначала отправлял тестовые сигналы, чтобы установить соединение со скоростью 14.4 кбит/с; если это не удавалось, он пробовал 9600, 2400 и, наконец, 1200 бит/с. Поскольку каждый из этих стандартов определял минимальное время для попытки установления соединения, общая задержка могла превышать 10 секунд. ULN позволяла избежать этой задержки, всегда начиная согласование соединения на скорости 2400 бит/с без коррекции ошибок. Хотя это исключало совместимость со старыми 1200-битными модемами, к тому времени они уже были крайне редки. После быстрого установления соединения оба модема отправляли удаленному модему короткую идентификационную строку. Затем оба модема анализировали эту строку и выбирали наиболее высокую общую скорость. После этого вызывающая сторона повторно согласовывала соединение уже на этой более высокой скорости.

МНП 7

MNP 7 представил новые алгоритмы сжатия, заявляя об улучшении компрессии до 3:1 для текстовых файлов. Однако к моменту выхода MNP 7 стандарт V.42bis уже обеспечивал компрессию 4:1.

МНП 9

MNP 9 (видимо, выпуск 8 так и не состоялся) улучшил обнаружение универсальных ссылок, добавив новые высокоскоростные режимы, но в остальном был идентичен MNP 7.

МНП 10

MNP 10 представил новый протокол коррекции ошибок, разработанный специально для эффективной работы на зашумленных телефонных линиях, широко используемых в Восточной Европе. В отличие от более ранних версий, таких как MNP 4, MNP 10 постоянно отслеживал качество линии и увеличивал размер пакета, если условия улучшались. В 1991 году Microcom лицензировала MNP 10 компании Rockwell International для использования в их чрезвычайно популярных наборах микросхем модемов. Поскольку почти все модемы, за исключением моделей USR, использовали чипсет Rockwell примерно с 1995 года, MNP 10 получил довольно широкое распространение (хотя и не всегда использовался). В конечном итоге USR добавила MNP 10 в модемы серии V. everything, сделав его фактически универсальным. Позже MNP 10 был расширен до MNP 10EC, где "EC" обозначает "Extended Cellular" (Расширенная сотовая связь). Это был набор модификаций, позволяющих MNP 10 справляться с паузами в передаче, возникающими при перемещении сотового телефона между сотами, которые обычно интерпретировались как ошибки линии. С использованием MNP 10EC эти паузы правильно идентифицировались как "не ошибки", что позволяло поддерживать более высокую скорость соединения. Его успех привел к созданию конкурента ETC компанией AT&T Paradyne. MNP 10EC был особенно привлекателен для сотовых сетей благодаря включению метода согласования канала ULN, впервые представленного в MNP 6 (и усовершенствованного в MNP 9). В сотовой сети, где тарифицируется все время разговора, более быстрая настройка позволяла экономить средства. MNP 10EC имел ограниченный срок службы, поскольку сотовые сети перешли на различные полностью цифровые системы, которым больше не требовался модем для подключения к компьютеру.

Документация

Хотя MNP является проприетарным, классы с 2 по 4 фактически описаны в спецификации V.42 в Приложении A как альтернативная процедура для функции контроля ошибок. Это Приложение было представлено в спецификации до редакции 1996 года. В последней редакции 2002 года оно было исключено.