Обработка ошибочных данных
1.2.3. Обработка ошибочных данных
В системе передачи АТМ в принципе возможна потеря данных и их искажение, причем это не обязательно должно быть связано с помехами в канале. Так, потеря данных произойдет в случае, если сеть не может справиться с поступающим от абонента потоком, интенсивность которого превышает согласованную. Процесс согласования параметров абонентского потока происходит во время установления соединения. Помехи в канале также могут вызвать потери селлов, причем из-за поражения заголовка селл может быть доставлен не по назначению, а ошибочное поле данных будет доставлено сетью без каких-либо исправлений. Следовательно, уровень AAL должен взять на себя заботу об исправлении возникающих ошибок (разумеется, по мере возможности).
В рекомендации описана процедура восстановления данных при обслуживании однонаправленного видеосервиса, т.е. для системы, где требуется высокое качество и нет возможности запросить повторную передачу. Метод основан на применении ошибкоисправляющих кодов. Используемые в спецификации коды позволяют исправлять до двух искаженных байт или четырех "затертых" байт. Затертым является байт с ошибкой, положение которого в теле блока точно известно. Однако, если просто добавлять в каждый блок данных проверочную последовательность, то никак не возможно будет исправить ошибки, связанные с потерей селлов - ведь вместе с данными потеряется и проверочная последовательность. Поэтому используется двумерное кодирование, проиллюстрированное на рис.6.
Рис. 6. Формат матрицы чередований
В системе на передаче организована матрица, куда будут записываться данные пользователя. Матрица содержит 47 строк и 128 столбцов. Данные от пользователя записываются, группируются по 124 байта, и к ним добавляется еще 4 байта проверочной последовательности. Получившиеся 128 байт записываются в строку матрицы. Таким образом, данные от абонента последовательно записываются в матрицу строка за строкой. Всего в матрицу будет записано 128*47=6016 байт - из них потом получится 128 селлов (заметим, что размер столбца матрицы соответствует размеру поля данных, подаваемого на уровень сборки/разборки).
Данные из матрицы считываются столбец за столбцом и каждый столбец будет затем занесен в отдельный селл АТМ. Следовательно, последовательность данных в канале вовсе не будет соответствовать последовательности, принятой от источника - восстановление произойдет на приеме.
В результате, если произойдет потеря одного селла, который будет заменен на приеме фиктивными данными, содержащими только "1", то эта потеря в матрице "расползется" по всем строкам: ведь данные в канал считывались по столбцам и поэтому все байты в столбце относились к разным строкам. Вспомним, что кодозащита вводилась на каждую строку и поэтому этот "фиктивный" байт в каждом селле можно будет исправить, тем более, что положение ошибочного байта в строке точно известно.
В целом можно сказать, что такое двумерное кодирование позволяет обеспечить кодозащиту не каждого отдельного 47-байтного блока данных, а распределить ее на много блоков.
Мы отметили, что применяемые в этой системе помехозащитные коды позволяют исправить до двух ошибочных байт или четырех затертых байт. Потеря данных в канале и вставка вместо них фиктивных байт соответствует затертым байтам в каждой строке матрицы, и, поэтому, система может восстановить до четырех потерянных селлов из 128 переданных. Это очень высокая степень защиты.
Если же данные не были потеряны, а просто исказились, то тут уже на приеме нельзя будет точно сказать, какой именно байт поражен ошибкой. Ведь последовательность блоков данных оказалась соблюденной, и все они считаются принятыми. Ошибка обнаружится, таким образом, только тогда, когда будут приняты все данные из матрицы и можно будет запустить проверочный код, который укажет на наличие ошибки, но неизвестно, где именно.
Таких ошибок можно обнаружить не более двух.
Разумеется, возможны комбинации ошибок, т.е. когда некоторые блоки оказались потерянными, т.е. каждый байт в них оказался ошибочным, а в некоторые вкралась одиночная ошибка. Описанная система допускает, чтобы в составе матрицы один блок оказался потерянным и в еще одном оказался пораженным один байт.
Конечно, все это дается не даром. Так, во-первых, вносится дополнительная избыточность, которая будет составлять 3.1%, а, во-вторых, довольно большая начальная задержка, которая требуется для заполнения матрицы. Правда, эта задержка вносится только в первый момент в начале соединения.
Таким образом, мы видим, что несмотря на кажущуюся простоту функций, возложенных на уровень AAL 1 в его работе много сложностей, которые связаны с преобразованием системы, передающей непрерывный поток в систему коммутации пакетов. С помощью всех этих ухищрений удалось добиться того, что сеть коммутации пакетов вобрала в себя преимущества, которые раньше считались достоинством исключительно систем с коммутацией каналов.