В двух предыдущих параграфах данной главы в рамках описаний процессов PANS и PLES рассмотрены две основные группы процедур протокола ТфОП.
В первую очередь это процедуры, связанные с поддержкой управления соединениями ТфОП. Основное назначение данных процедур — создать сигнальный путь для передачи линейных сигналов между аналоговым портом ТфОП сети доступа и национальным протоколом ТфОП АТС. Для создания сигнального пути используются функциональные процедуры, которые обеспечивают синхронизацию работы через интерфейс V5 логических объектов сети доступа и АТС, а также возможность разрешать конфликты, связанные с перегрузкой АТС и со встречными вызовами. Как уже упоминалось выше, содержимое примитивов FE-line__signal, передаваемых аналоговым портом ТфОП, не должно интерпретироваться протоколом V5, т.е. соответствующая информация должна передаваться через интерфейс V5 «прозрачно».
Другую группу составляют процедуры, не связанные с поддержкой управления соединениями ТфОП, т.е. не имеющие прямого отношения к установлению сигнального пути. Эти процедуры позволяют сети доступа изменить некоторые параметры протокола, блокировать или разблокировать порты пользователя и производить необходимые действия при рестарте.
Существуют еще две группы процедур, которые явно не рассматривались в предыдущих параграфах, но применение которых абсолютно обязательно для протокола ТфОП. Одну такую группу составляют процедуры обнаружения ошибочных ситуаций, которые обрабатывают каждое получаемое протокольным объектом интерфейса V5 сообщение.
Как правило, все сообщения должны содержать, по меньшей мере, дискриминатор протокола, адрес уровня 3 и информационный элемент типа сообщения. Если принимаемое сообщение содержит менее 4 байтов, принимающая сторона (сеть доступа или АТС) должна передать системе эксплуатационного управления сообщение об ошибке и проигнорировать принятое сообщение. В данном контексте термин «игнорировать сообщение» означает, что с содержимым сообщения (заголовком сообщения и его информационными элементами) никаких действий не производится.
Если в сообщении обнаружено более трех необязательных информационных элементов, сообщение считается слишком длинным и оставшаяся после третьего необязательного информационного элемента часть должна быть отброшена. Предполагается, что вся отброшенная информация является повторением оставшихся необязательных информационных элементов.
Ошибочная ситуация фиксируется, если логический объект протокола ТфОП на стороне сети доступа принимает сообщение с дискриминатором протокола, кодирование которого отличается от приведенного в главе 6. В этом случае генерируется сигнал индикации внутренней ошибки, данное сообщение игнорируется и передается сообщение STATUS с информационным элементом «Состояние», указывающим на текущее состояние процесса, и информационным элементом «Причина», указывающим код ошибки (код 0000001 — ошибка в дискриминаторе протокола). При приеме такого же ошибочного сообщения логическим объектом на стороне АТС данное сообщение игнорируется и генерируется сигнал индикации внутренней ошибки.
Ошибка адреса уровня 3 фиксируется, если адрес закодирован не по правилу, определенному выше в данной главе, если значение не распознано или не соответствует существующему порту доступа ТфОП. Ошибка в информационном элементе типа сообщения означает, что принято нераспознанное сообщение (не используемое или несуществующее). В обоих случаях сообщение игнорируется и генерируется сигнал индикации ошибки.
Информационный элемент переменной длины, имеющий код, значение которого меньше, чем значение кода предшествовавшего ему информационного элемента переменной длины, считается выпавшим из нормальной последовательности. Если такое случается, то на стороне сети доступа этот информационный элемент удаляется, а обработка сообщения продолжается. Сеть доступа также генерирует сообщение о внутренней ошибке и передает сообщение STATUS с информационным элементом «Состояние», указывающим текущее состояние процесса, и с информационным элементом «Причина» со значением «информационный элемент, принятый с нарушением очередности следования».
Если в сообщении повторяется один и тот же обязательный информационный элемент, логический объект V5 на стороне сети доступа должен игнорировать это сообщение, сформировать сообщение о внутренней ошибке и передать сообщение STATUS с информационным элементом «Состояние», указывающим текущее состояние процесса, и с информационным элементом «Причина» со значением «повторяющийся обязательный информационный элемент» и с соответствующей диагностикой, алогический объект на стороне АТС должен игнорировать данное сообщение и сформировать сообщение о внутренней ошибке.
Если в сообщении повторяется необязательный информационный элемент, то повторный элемент удаляется, продолжается обработка сообщения, генерируется сообщение о внутренней ошибке и передается сообщение STATUS с информационным элементом «Состояние», указывающим текущее состояние процесса, с информационным элементом «Причина» со значением «повторение необязательного информационного элемента» и с соответствующей диагностикой.
Процедуры этого типа также обрабатывают ошибки, состоящие в пропуске обязательного информационного элемента в принятом сообщении, в приеме нераспознанного информационного элемента, ошибки в содержании обязательного или необязательного информационных элементов, а также ошибки, состоящие в приеме непредвиденных сообщений, неразрешенных необязательных информационных элементов и т.п.
После того как сообщение проверено с помощью процедур обработки ошибок и если оно не должно игнорироваться, то должны выполняться нормальные процедуры, как это изложено в параграфах 7.4 и 7.5 данной главы.
И, наконец, процедура обнаружения ошибок уровня 3 позволяет уровню 3 обнаружить ошибку при передаче сообщений, которые не защищены от ошибок функциональной частью протокола. Сообщения SIGNAL и PROTOCOL_PARAMETER, содержащие информацию примитивов FE-line_signal и FE-protocol_parameter, соответственно, защищаются от ошибок механизмом, описанным ниже.
С точки зрения этого механизма сообщения SIGNAL и PROTOCOL_PARAMETER неразличимы: они вместе рассматриваются как единая последовательность нумерованных сообщений, и для подтверждения приема сообщений, образующих такую последовательность (независимо от их типа), используются сообщения SIGNAL_ACK. (Речь, разумеется, идет о сообщениях, передаваемых от АТС, поскольку сообщения PROTOCOL_PARAMETER сетью доступа не передаются.)
Все сообщения из этой единой последовательности нумеруются по модулю 128, т.е. номер может иметь значение от 0 до 127. На каждой стороне интерфейса V5 имеется счетчик передаваемых сообщений, текущее показание которого S(S) обозначает порядковый номер подлежащего передаче сообщения. С появлением следующего сообщения, подлежащего передаче, S(S) увеличивается на 1.
На каждой стороне интерфейса имеется счетчик подтвержденных сообщений, текущее показание которого S(A) обозначает номер последнего из переданных сообщений, прием которого подтвержден адресатом, т.е. равноправным логическим объектом, которому оно было послано. Полезно заметить, что разность S(S)— S(A) не должна превышать максимального числа сообщений, находящихся в очереди на передачу.
Каждому передаваемому сообщению, принадлежащему рассматриваемой единой последовательности, присваивается порядковый номер M(S). В момент, когда сообщение должно передаваться, в поле информационного элемента «порядковый номер», входящего в состав этого сообщения, помещается значение M(S), равное текущему S(S).
В логическом объекте уровня 3 на той и на другой стороне интерфейса имеется также счетчик, текущее показание которого S(R) обозначает порядковый номер очередного ожидаемого на приеме сообщения. С приемом сообщения, M(S) которого равен S(R), показание счетчика S(R) увеличивается на 1.
В момент, когда должно передаваться подтверждающее сообщение, в поле информационного элемента «порядковый номер», входящего в состав этого сообщения, помещается порядковый номер ожидаемого сообщения M(R), причем значение M(R) устанавливается равным S(R). Сторона, принявшая подтверждающее сообщение, определяет состоятельность полученного M(R), проверяя условие S(A) J M(R) J S(S).
Как это показано на SDL-диаграммах процессов PANS и PLES в данной главе, программные счетчики связаны с таймерами этих процессов. Если S(S) превышает допустимую величину, таймеры Tt и Тr должны быть остановлены и должно также передаваться сообщение DISCONNECT. Если величина S(S) корректна и таймер Tt работает, то никаких действий не предпринимается, а если таймер Tt не был запущен, то это должно быть сделано.
На тех же SDL-диаграммах видно, что при каждой подготовке передачи уровнем 3 сообщения SIGNAL_ACK порядковый номер ожидаемого сообщения M(R) должен принимать текущее значение переменной S(R). При каждом приеме уровнем 3 сообщения SIGNAL значение M(S) должно сравниваться со значением S(R). Если M(S) равно S(R), сообщение должно быть принято, а значение S(R) - увеличено на 1. Если M(S) не равно S(R), таймеры Tt и Тr должны прекратить работу и должно быть передано сообщение разъединения.
При каждом приеме сообщения SIGNAL__ACK номер M(R) проверяется. Если M(R) не состоятелен, таймеры Tt и Тr сбрасываются и передается сообщение DISCONNECT. Если M(R) является корректным, счетчик подтвержденных сообщений принимает значение S(A), равное M(R).
Если S(A) равно S(S), таймер Tt сбрасывается. Если S(A) не равно S(S) и если значение M(R) является корректным, таймер Tt перезапускается. Таймер Tt сбрасывается при каждом приеме сообщения SIGNAL_ACK, значение M(R) в котором равно S(S).