Алгоритмы и процессы работы в системе ISDN
Обеспечение достоверности (2-й уровень сигнализации)
Выше были рассмотрены вопросы передачи сигнальной информации (3-й уровень — сетевой уровень). Мы останавливались на смысловой стороне сообщений, обеспечивающей установление и разъединение соединений, и сигналов, обеспечивающих различные виды услуг. Ниже остановимся на очень важной служебной функции. В предыдущих разделах мы уже убедились, что передача осуществляется не в идеальных условиях, а в условиях шумов и помех. Поэтому принятая информация может быть искажена. Для обеспечения того, что принятая информация точно соответствует переданной, имеется целый ряд требований к структуре передаваемой информации и процедур, относящихся к обеспечению достоверности. Эти процедуры рассматриваются здесь.
Структура кадра
Ниже рассматриваются процедуры, относящиеся к протоколу LAPD.
Структура на уровне-2 LAPD показана на рис. 12.20. Она может содержать различное число байтов (октетов), каждый кадр отделяется уникальной комбинацией, которая называется флагом. Мы уже видели такую комбинацию при рассмотрении взаимодействия в эталонной точке S.
Имеется два типа форматов, один из них уже показан на рис. 12.21.
Формат A — без поля сигнальной информации.
Формат B — содержащий поле сигнальной информации.
Формат также содержит адресное поле и поле управления.
Поле адреса. Адрес состоит из двух байтов (рис. 12.21):
В начале кадра идет информация, установленная при инсталляции. Она содержится в адресном поле и позволяет управлению определить терминал и функции, которые он выполняет.
Входящие в состав этих полей идентификаторы уже подробно рассматривались. Остальные биты адресного поля обозначают следующее.
Бит расширения (EA — Extended address bit) — этот признак служит для гибкого увеличения длины адресного поля. Бит расширения в первом байте адреса, имеющий значения 0, указывает на то, что за ним следует другой байт.
Бит расширения во втором байте, имеющий значение 1, указывает, что этот второй байт в адресном поле является последним. Таким образом, бит EA позволяет регулировать величину адресного пространства от 1 до 2 байтов.
Бит идентификации команды/ответа (C/R Command/Response bit). Этот признак позволяет отличить команду от ответа на команду. Если кадр имеет признак "команда", адресное поле идентифицирует получателя, а если кадр — ответ, то адресное поле идентифицирует отправителя.
Отправителем или получателем могут быть как сеть, так и терминальное оборудование. При этом признаки в противоположном направлении имеют инверсный смысл. Командные кадры, передаваемые сетью, имеют значение бита C/R=1, а передаваемые терминалом — 0. Кадры ответа имеют обратные значения, указанные в таблице 12.32.
кадры, передаваемые сетью | кадры, передаваемые терминалом | |
---|---|---|
Командный кадр | C/R=1 | C/R=0 |
Кадр ответа | C/R=0 | C/R=1 |
Как уже упоминалось, для отделения одного пакета от другого каждый из них разделяется флагом F. Эта комбинация содержит один байт, который имеет вид 01111110, т.е. содержит начальный 0 и 6 единиц подряд, после чего закрывается нулевым битом. Если в сигнальной информации встречается такая комбинация, то после передачи 5 единиц обязательно вставляется ноль. На приемном конце после приема 5 единиц 0 необходимо удалить.
Два последних байта в структуре кадра содержат 16битовое поле проверочной комбинации кадра FCS (Frame Check Sequence). Эта комбинация позволяет определять ошибки в кадре (если они есть).
Вся информация защищается с помощью специального циклического кода.
Контроль ошибок с помощью циклического избыточного кода
Принцип контроля ошибок состоит в том, что вся передаваемая информация представляется в виде полинома степени n с двоичными коэффициентами.
anxn + an-1xn-1 + …… a0x0
где an, an-1 .... a0 — двоичные значения битов информации;
xn, xn-1 .... x0 — условные переменные, указывающие место битов в ряду информации.
При делении его на заранее заданный простейший полином (т.е. полином, не имеющий делителей, он называется порождающий полином) получается остаток меньшей степени, чем сам порождающий полином. Он передается на приемный конец. После получения информации (сигнальных единиц) полученный остаток алгебраически суммируется (вычитается) к полиному, образованному из сигнальных единиц. В результате деления на приемном конце должен получиться нулевой остаток. Если он отличается от нуля, то это сигнал об искажении, а величина остатка может указывать на величину искажения.
Условно пояснить этот принцип можно на примере обычных чисел. Предположим, что по каналу передается не двоичная информация, а десятичные числа. Выберем в качестве порождающего числа простое число 5. Тогда при делении на это число остаток может иметь значения 0, 1, 2, 3, 4, т.е. 5 значений. Например, мы передаем информацию, закодированную числом 16.
Тогда на передающем конце путем деления на 5 мы получаем остаток 1 и передаем его на приемный конец, где, получив число 16, вычитают остаток 1 и при делении на число 5 получают остаток 0. Если число получено с искажением, например, 17, то результат будет равен 1, и это говорит о том, что исходное число искажено. Заметим, что такая защита имеет предел: если в результате искажения поступит число 21, т.е. отличающееся от истинного на величину порождающего числа 5, то на приемном конце после вычитания получится нулевой остаток. Искажение будет незамечено и с помощью приемного алгоритма получится другое число.
Рассмотрим теперь данные, которые представляются в виде двоичной последовательности. Процедура контроля ошибок состоит в следующих шагах (рис. 12.22).
- Первый шаг. Блок данных дополняется окончанием из k нулей. Число этих нулей должно быть меньше, чем число бит в заранее заданном делителе, который должен состоять из k+1 битов.
- Второй шаг. Новый блок данных с добавленными нулями используют для двоичного деления. В результате получают остаток.
- Третий шаг. Последовательность нулей заменяют на значение остатка, полученного на шаге 2, т.е. на так называемый циклический избыточный код — CRC. Отметим, что остаток может быть равен нулю.
В приемнике весь полученный блок с CRC делят на тот же самый делитель. Получают остаток.
Если он равен нулю, то информация прибыла без искажений. Она может быть использована для дальнейшей передачи или обработки. Если информация искажена, то остаток не равен нулю и данные не принимаются, и начинается процедура улучшения достоверности (например, повторная передача).
На рис. 12.23 показана процедура двоичного деления. Она почти не отличается от процедуры деления "столбиком", которую проходят в начальной школе. Отличие состоит в том, что вместо вычитания числа на каждом шаге применяется процедура сложения по mod2, которая также хорошо известна.
На рис. 12.24 двоичное деление при проверке на стороне приемника поступивших данных, защищенных CRC.
При описании процесса проверки с помощью избыточного циклического кода обычно применяют представления двоичного числа в форме полинома, как это показано в начале раздела. Согласно этому данные представляются полиномом, степень которого отображает длину блока сигнальной информации от конца, открывающегося флага и началом проверочной комбинации.
Делителя применяется простейший полином, т.е. полином, не разлагающийся на делители и представляющий эквивалент простого числа. Такой полином называется порождающий полином (иногда — образующий полином). Наиболее применяемые порождающие полиномы приведены в таблице 12.35.
Отметим, что названия указывают разрядность остатка, а все полиномы имеют на один разряд больше (с учетом нулевого бита).
Полиномы гарантируют определение всех ошибок, длина которых равна степени полинома.
Порождающие полиномы выбираются, например, 16-й степени. В этом случае говорят, что полином позволяет обнаружить 16-кратную ошибку. Величина полинома выбирается исходя из показателя "число ошибок в канале" и длины блока данных.
При числе ошибок в канале 10-3 (т.е. 1 ошибка на 1000 переданных символов), алгоритмы исправления должны улучшить этот показатель и привести число ошибок, например, к 10-6 (не более чем 1 ошибка на 1000000 переданных символов) и менее.
Заметим, что в любой аппаратуре сигнализации ставится анализатор канала, который считает число ошибок за единицу времени. Если это число выше нормы, то канал может быть заблокирован. При ухудшении качества работы каналов это может привести к блокировке целых направлений и станций.
Из сказанного выше можно сделать вывод, что для защиты информации требуется в формате отвести 16 битов (2 байта). Сама процедура заключается в определении остатка от деления по модулю 2 произведения xk (x15 + x14 + . . . + x + 1) на образующий полином x16 + x12 + x5 + 1, где k — степень образующего полинома. Эта операция позволяет обнулить последние разряды данных. Далее идет деление полученной комбинации на образующий полином. В результате получается полиномостаток, который складывается с полученным полиномом, и информация в этом виде отправляется в канал. На приемном конце последовательность данных, представленная в виде двоичного полинома, делится на порождающий полином.
Указанное деление производится либо программно, либо с помощью специальных сдвигающих регистров с обратной связью.
Последний способ показан на рис. 12.25.
Сдвигающий регистр построен на основании порождающего полинома. Обратная связь такого регистра определяется коэффициентами порождающего полинома. Обратная связь идет от регистра, отображающего старший разряд, и поступает на вход схемы, производящей сложение по модулю 2 и устанавливаемой перед регистрами, которые соответствуют единичным коэффициентам порождающего полинома. Остальные регистры разрядов соединяются простой связью.
Для нашего примера порождающий полином равен x3 + x2 + 1.
Схемы сложения по модулю 2 ставятся перед нулевым регистром с номером 0 a0 = 1 и номером 2 ( a2 = 1 ). Обратная связь начинается с выхода ( a3=1 ). На вход регистра 1 поступает обычный сигнал.
Динамика работы показана в таблице на этом же рисунке. На вход поступает та же комбинация, что на рис. 12.25. Строка с номером 0 показывает исходное положение. Последующие строки указывают состояние каждого регистра разряда после поступления очередного тактового импульса. В конце таблицы жирным шрифтом показан полученный остаток.
Следует заметить, что в реальных системах полученный на передающем конце остаток увеличивают на постоянное число, так, чтобы в результате деления на приемном конце получалось постоянное число, но не равное нулю. Это число равно 0001 1101 0000 1111 (десятичное 7439) [12.10, 12.17].