6.4.1. Особенности Megaco/H.248
Этот протокол известен в комитете IETF под названием Megaco (MEdia GAteway COntrol Protocol), а в Международном союзе электросвязи ITU - под названием H.248. Протокол Megaco/K248 во многом архитектурно схож с MGCP. Подобно MGCP, он определяет транспортные шлюзы MG, которые преобразуют информацию из формата, принятого в одной сети, в формат, необходимый в другой сети, и контроллеры транспортных шлюзов MGC или Softswitch, которые управляют установлением соединений и их отменой в пределах шлюзов MG. Едва ли стоит удивляться сходству протоколов, учитывая тот факт, что оба они были разработаны с учетом аналогичного набора требований.
Для переноса сигнальных сообщений Megaco/H.248 может использоваться протокол UDP, протокол TCP, протокол SCTP или транспортная технология АТМ. Поддержка для этих целей протокола UDP - обязательное требование только к контроллеру шлюзов, протокол TCP должен поддерживаться и контроллером, и транспортным шлюзом, а поддержка протокола SCTP, как и технологии АТМ, является необязательной.
Еще одной особенностью протокола Megaco/H.248 является то, что сообщения этого протокола могут кодироваться двумя способами. Комитет IETF предложил текстовый способ кодирования сигнальной информации, а для описания сеанса связи предложил использовать протокол SDP. Кодирование текста пишется в соответствии с формами Бэкуса-Наура ABNF (Augmented Backus-Naur Form), описанными одним из авторов в главе 2 книги [4]. В свою очередь, ITU-T предусматривает бинарный способ представления сигнальной информации на языке ASN.1 (Abstract Syntax Notation One), рассмотренным в рекомендации ITU-T X.680 от 1997 года, а для описания сеансов связи рекомендует специальный инструмент - схему TLV(тип-длина-значение), подробно обсуждавшуюся авторами в их предыдущей книге [3].
В результате, спецификация Megaco/K248 написана таким образом, что обеспечивает как кодирование текста, так и двоичное кодирование протокола, нивелирует различие между IETF, который обычно использует ABNF и ITU, где выбран формат ASN.1. Вопрос о том, является ли текстовый протокол лучшим решением, чем протокол сигнализации в виде машинных кодов (или наоборот), в процессе разработки протокола решен не был. Сегодня H.248/Megaco поддерживает оба варианта и рекомендует, чтобы при реализации Softswitch использовались и тот, и другой вариант протокола, а при реализации транспортных шлюзов или устройств интегрированного доступа IAD может быть выбран любой предпочтительный для разработчика вариант.
В настоящий момент еще нет информации, достаточной для того, чтобы уверенно сказать, какой вариант (двоичный или текстовый) будет преобладать в реализациях систем. Однако поскольку протокол Megaco предназначен заменить реализации на базе протокола MGCP, которые являются текстовыми, ожидается, что это обстоятельство окажет сильное влияние. В этой книге в примерах, иллюстрирующих использование Megaco, для представления сообщений применяется форма синтаксиса ASN.1.
Между протоколами MGCP и Megaco/H.248 много общего и помимо сходства их архитектуры. Оба протокола работают по принципу «ведущий-ведомый», при котором Softswitch управляет транспортным шлюзом и его портами через запросы включения питания, уведомления о событиях, генерации сигналов, передаваемых к порту, а также установлением и разрушением сигнального соединения путем создания и ликвидации логических соединений между портами.
И все же, при всех общих чертах, присущих этим двум протоколам, синтаксис команд и ответов на команды в протоколах MGCP и Megaco абсолютно разный. Кодирование и условные обозначения событий и сигналов, а также модель обслуживания вызовов имеют ряд различий.
6.4.2. Модель обслуживания вызова
Описание алгоритма установления соединения с использованием протокола Megaco опирается на модель процесса обслуживания вызова, отличную от рассмотренной в предыдущем параграфе модели MGCP. В своей модели процесса обслуживания вызова протокол Megaco оперирует двумя логическими объектами: окончание или порт (termination) и контекст (context). Мы можем рассматривать окончание (порт) как логический объект транспортного шлюза или IAD, который может являться источником и приемником мультимедийной информации, во многом аналогичным порту (endpoint) протокола MGCP. Контекст - это отображение логической связи между несколькими портами; например, все порты, участвующие в конференции, составляют единый контекст, т.е. находятся внутри одного контекста. Таким образом, контекст является абстрактным представлением более высокого уровня, чем MGCP, и в некотором смысле, включает в себя понятие «сеанс связи». Как мы увидим, в алгоритме установления соединения с помощью протокола Megaco, представленном для шлюза типа Residential Gateway, порт (окончание), соответствующий физическому устройству (например, телефонному аппарату), входит в тот же контекст, что и логическое RTP-соединение, для того чтобы обеспечить отображение двусторонней мультимедийной связи. Контекст имеет локальное значение, т.е. действителен для одного транспортного шлюза. Существует особый вид контекста - нулевой (null). В него по умолчанию входят все порты, которые не связаны ни между собой, ни с другими портами.
6.4.3. Окончания
Окончания (Terminations), называемые иногда, для простоты, портами, являются источниками и приемниками медиаинформации и, одновременно, логическими объектами транспортного шлюза. Можно выделить два вида окончаний в зависимости от того, какой они представляют интерфейс - физический или виртуальный.
Физические окончания аналогичны полупостоянным соединениям в традиционной телефонии и существуют с момента конфигурации шлюза. Это - аналоговые телефонные интерфейсы оборудования, поддерживающие одно телефонное соединение, или цифровые телефонные каналы.
Виртуальные окончания существуют только в течение разговорного сеанса, являются интерфейсами со стороны IP-сети (например, RTP-окончания), через которые ведутся передача и прием пакетов. Виртуальные окончания создаются шлюзом при получении от Softswitch команды Add и ликвидируются при получении команды Subtract, тогда как физические окончания при получении команды Add или Subtract, соответственно, выводятся из нулевого контекста или возвращаются обратно в нулевой контекст.
Окончания имеют различные свойства. Очевидно, например, что подключенное к аналоговой линии окончание имеет не такие характеристики, как окончание, подключенное к цифровому каналу 64 Кбит/с. Свойства окончания определяются набором дескрипторов, включаемых в состав команд Megaco, что позволяет изменять свойства оконечных устройств в соответствии с указаниями, передаваемыми из Softswitch в MG.
Соответственно, каждое окончание имеет уникальный идентификатор TerminationID, который назначается шлюзом при конфигурации порта. Идентификаторы физических окончаний формируются непосредственно в транспортном шлюзе. Например, идентификатором порта может служить номер тракта E1 и номер временного канала внутри тракта. Иногда команды могут относиться ко всему шлюзу, тогда используется общий идентификатор окончаний Root. Используется также и механизм групповых символов wildcard: ALL и CHOOSE. Первый позволяет адресоваться к нескольким окончаниям одновременно, а второй - предоставить шлюзу право выбора подходящего окончания. К тому же, окончания обладают рядом изначальных свойств (properties), каждое из которых тоже имеет уникальный идентификатор propertylD. Например, окончания могут обладать способностью генерировать речевые подсказки, акустические и вызывные сигналы, а также выявлять сигналы DTMF Некоторые свойства окончаний присваиваются им по умолчанию при создании, а при помощи команд протокола Megaco/H.248 эти свойства можно изменять. Описанию команд посвящен п. 6.4.5 этого параграфа. Сами свойства окончаний определяются включаемыми в команды Megaco/H.248 дескрипторами, которые описываются в п. 6.4.6. Окончания, как только что упоминалось, могут генерировать и передавать сигналы и быть запрограммированы на обнаружение событий, при возникновении которых транспортный шлюз должен будет передать извещение к Softswitch или выполнить определенные действия. В окончании могут накапливаться статистические данные и потом передаваться по запросу и/или при удалении окончания из контекста.
6.4.4. Контекст
Контекст (Context) представляет собой отображение связи между несколькими окончаниями, то есть абстрактное представление соединения двух или более портов одного шлюза. Окончания могут быть добавлены к контексту, удалены из контекста или перемещены из одного контекста в другой. В любой момент времени окончание может существовать только в одном контексте, который имеет свой уникальный идентификатор, и окончания могут обмениваться информацией, только находясь в одном и том же контексте.
Существует особый вид контекста - нулевой. Все окончания, входящие в нулевой контекст, не связаны ни между собой, ни с другими портами. Для рассматриваемой модели обслуживания вызовов окончание в нулевом контексте является абстрактным представлением свободного (не занятого) канала. В общем случае для присоединения окончания к контексту служит команда Add. Если команда Add не указывает контекст, в который должно быть добавлено окончание, в результате выполнения команды Add создается новый контекст. Это единственный механизм для создания нового контекста. Окончание переводится из одного контекста в другой с помощью команды Move, а удаляется из контекста с помощью команды Subtract. Если в результате выполнения команды Subtract из контекста удаляется последнее окончание, этот контекст стирается.
Атрибутами контекста являются: идентификатор контекста ContextID, топология контекста (кто кому передает и от кого принимает информацию), приоритет (один из 16 уровней), индикатор «аварийного вызова» (высший приоритет в обслуживании). Протокол имеет средства, чтобы управлять параметрами контекста.
6.4.5. Команды
Megaco/H.248 определяет восемь команд, которые обеспечивают возможность управлять и манипулировать контекстами и окончаниями. Большинство команд предназначено для того, чтобы передаваться из Softswitch в транспортные шлюзы MG, за исключением команд Notify и ServiceChange. Рассмотрим эти 8 команд подробнее.
Команда Add (добавить). С ее помощью Softswitch дает указание шлюзу добавить окончание к контексту. Если команда Add не указывает контекст, куда добавляется окончание, то создается новый контекст. Если в команде не указан определенный TerminationID, а использован символ группового выбора ($), MG создаст новое виртуальное окончание и добавит его в контекст.
Командой Modify (изменить) Softswitch дает указание шлюзу изменить свойства окончания. Команда Modify изменяет значения свойств окончания, приказывает окончанию отправить один или несколько сигналов или обнаруживать определенные события и докладывать о них.
Команда Subtract (исключить) удаляет окончание из контекста. Ответ на команду может содержать статистические данные, относящиеся к участию окончания в контексте. Эти данные зависят от типа оконечного устройства. Для окончания RTP-статистические данные могут включать в себя сведения о переданных пакетах, о полученных пакетах, о джиттере и т.п. В этом отношении команда Subtract аналогична команде DLCX протокола MGCP.
Команда Move (переместить) перемещает окончание из одного контекста в другой. Она не используется для перемещения окончания из нулевого контекста или в него, поскольку эти операции должны выполняться командами Add и Subtract, соответственно. Возможность перемещать окончание из одного контекста в другой - это полезный инструмент для реализации услуги «вызов с ожиданием».
Команда AuditValue (проверить значение) используется Softswitch для поиска текущих значений свойств, событий и сигналов, ассоциированных с одним или несколькими окончаниями.
Команда AuditCapabilities (проверить возможности) используется Softswitch для поиска возможных значений свойств, событий и сигналов, ассоциированных с одним или несколькими окончаниями. На первый взгляд, эта команда может показаться очень похожей на команду AuditValue. Разница между ними заключается в том, что команда AuditValue используется для определения текущего состояния окончания, в то время как команда AuditCapabilities позволяет определять состояния, которые окончание может принимать. Например, AuditValue будет указывать любые сигналы, подаваемые окончанием в данный момент, а AuditCapabilities может указать все возможные сигналы, которые окончание может подавать в случае необходимости.
Команда Notify (уведомить) передается MG для того, чтобы информировать Softswitch о событиях, которые произошли в транспортном шлюзе. По поводу событий, о которых необходимо сообщать, обычно предварительно приходит запрос в составе команды из Softswitch в MG, например, в команде Modify. События, о которых сообщается, обычно сопровождаются параметром RequestedID, чтобы Softswitch мог увязать эти события с ранее переданными запросами.
Команда ServiceChange (изменение обслуживания) позволяет MG информировать Softswitch о предстоящем выводе из обслуживания или возврате в обслуживание группы окончаний. Команда используется также в ситуации, когда Softswitch передает управление некоторым транспортным шлюзом другому Softswitch. В этом случае команда сначала передается из Softswitch в MG, чтобы инициировать передачу управления, а затем MG передает команду ServiceChange в новый Softswitch для установления новых взаимоотношений.
6.4.6. Дескрипторы
Megaco/H.248 определяет ряд дескрипторов, предназначенных для использования вместе с командами и ответами. Эти дескрипторы образуют параметры команды и/или ответа и содержат дополнительную информацию об их свойствах. В зависимости от команды или ответа тот или иной дескриптор бывает обязательным, запрещенным или опциональным. В большинстве случаев, если дескриптор не является обязательным, он - опциональный. Случаев, когда дескриптор является запрещенным, относительно мало.
Общий формат дескриптора выглядит следующим образом:
Descriptorname=<someID>{parm=value, parm=value,... }
Дескриптор модема, Modem, специфицирует тип модема и связанные с ним параметры, которые следует использовать в соединениях модема при передаче аудио, видео или данных. Определены следующие типы модемов: V.18 (текстовая телефония), V.22 (1200 б/с), V.22bis (2400 б/с), V.32 (9600 б/с), V.32bis (14400 б/с), V.34 (33600 б/с), V.90 (56 Кб/с), V.91 (64 Кб/с) и синхронная ISDN. По умолчанию окончание не имеет дескриптора модема. Иначе говоря, при начале работы окончания никакие свойства его модема не задаются. Они могут задаваться позже, в результате передачи команды Add или Modify из Softswitch в MG.
Дескриптор модема был включен в первую версию спецификации Megaco RFC 3015, а в синтаксис версии 2 он включен только затем, чтобы обеспечить обратную совместимость. Т.о., в следующих версиях протокола этот дескриптор не используется, и при приеме его необходимо игнорировать.
Дескриптор мультиплексирования, Mux, характеризует тип мультиплексирования в мультимедийном терминале. Протокол поддерживает типы мультиплексирования: H.211, H.223, H.226. V.76 и Nx64K.
Дескриптор среды, Media, описывает различные информационные потоки (медиа-потоки). Это - иерархический дескриптор в том отношении, что он содержит общий дескриптор, известный как дескриптор состояния окончания, который применим к окончанию в общем, и ряд дескрипторов потоков, применимых к каждому медиа-потоку отдельно. Кроме того, каждый дескриптор среды содержит до трех подчиненных дескрипторов, известных как локальный дескриптор управления, локальный дескриптор и удаленный дескриптор, соответственно. Иерархию этого типа можно представить следующим списком:
Дескриптор среды
Дескриптор потока
Локальный дескриптор управления Локальный дескриптор Удаленный дескриптор
Дескриптор состояния окончания, TerminationState, содержит сведения о двух характеристиках окончания: ServiceStates и EventBufferControl, а также сведения о ряде других характеристик, которые к медиа-потокам отношения не имеют.
Характеристика ServiceStates указывает, доступно ли окончание для использования. Она может иметь три значения: тестирование, вне обслуживания и в обслуживании. Значение в обслуживании не означает, что в данный момент окончание принимает участие в связи, а указывает, что окончание либо активно участвует в ней, либо может быть использовано для ее создания. Значение в обслуживании устанавливается по умолчанию.
Характеристика EventBufferControl указывает, следует ли сведения об обнаруженных окончанием событиях помещать в буфер или их надо немедленно обрабатывать. Вначале окончание докладывает о событиях, извещение о которых заказал Softswitch с помощью команды, содержащей EventsDescriptor. Будет ли окончание фактически докладывать об указанных в EventsDescriptor событиях, зависит от того, установлена ли EventBufferControl в состояние off (выключено) или в состояние lockstep (жесткой конфигурации). Если установлено off, окончание немедленно доложит об обнаруженном событии. Если установлено lockstep, данные о событии будут помещены в буфер с дисциплиной FIFO (первым вошел, первым обслужен). Содержимое буфера проверяется при получении нового EventsDescriptor, указывающего, какие события должно обнаруживать окончание. Включение EventBufferControl в состав Term inationStateDescriptor позволяет Softswitch включать или выключать немедленное уведомление о событиях и не передавать каждый раз EventsDescriptor без необходимости.
Дескриптор состояния окончания является необязательным.
Дескрипторы потока, Stream. Поток определяется дескрипторами LocalControlDescriptor, Local Descriptor RemoteDescriptor и идентифицируется с помощью StreamID. Значения StreamID используются между MG и Softswitch, чтобы указывать, какие медиа- потоки взаимосвязаны. В пределах одного контекста потоки с одним и тем же StreamID соединены. Поток создается определением в контексте нового StreamID в окончании. Поток удаляется с помощью установки пустого локального или удаленного дескриптора и установки значений ReserveGroup и ReserveValue в подчиненном LocalControlDescriptor в логическое значение false.
Дескриптор LocalControlDescriptor содержит сведения об особых характеристиках медиа-потока, в частности, о характеристиках Mode, ReserveGroup и ReserveValue.
Характеристика Mode (режим) может принимать одно из следующих значений: только передача, только прием, передача/прием, неактивный или закольцован. Направления передачи и приема определяются по отношению к внешней стороне контекста. Если установлен режим только передача, окончание может только передавать информацию в объекты за пределами контекста. Окончание не может пропускать информацию в другие логические объекты того же контекста. Если установлен режим только прием, окончание может только принимать информацию извне контекста и пропускать ее в другие окончания контекста, но не может принимать информацию от других окончаний и пропускать ее адресатам за пределами контекста. Когда Softswitch хочет добавить окончание в контекст, он может специфицировать набор вариантов для сеанса (используя локальные и удаленные дескрипторы), которые Softswitch предпочитает для использования в MG, причем специфицирует их в порядке предпочтительности. MG не обязан выбрать первый из предлагаемых Softswitch вариантов, но может быть обязан резервировать ресурсы для сеанса, указанного Softswitch.
ReserveValue и ReserveGroup указывают, какие ресурсы должны быть резервированы для вариантов, специфицированных Softswitch в LocalDescriptor и RemoteDescriptor.
Local Descriptor и RemoteDescriptor могут специфицировать несколько характеристик и/или групп характеристик. Например, описание SDP может указывать две группы характеристик: одну для G.711 A-закона и одну для G.729. Если логическое значение ReserveGroup равно true (истина), то MG должен резервировать ресурсы для одной из этих групп характеристик. ReserveValue используется аналогично, но применяется с целью резервирования ресурсов для одной определенной характеристики, а не для группы характеристик.
Дескрипторы LocalDescriptor и RemoteDescriptor содержат или не содержат несколько описаний сеансов SDP, описывающих сеанс на локальном и удаленном концах соединения, соответственно. Использование SDP согласно Megaco имеет некоторые отклонения от строгого синтаксиса SDP, как он специфицирован в документе RFC 2327. В частности, строки s=, t= и o= являются опциональными, знак группового выбора ($) разрешен, допускается указывать несколько альтернативных значений параметра в тех местах, где обычно должно использоваться одно значение. И LocalDescriptor, и RemoteDescriptor могут содержать несколько описаний сеансов.
Дескриптор событий, Events, содержит Requestldentifier и список событий, которые MG должен обнаруживать и про которые сообщать (переход в состояние трубка поднята, тональный сигнал факса и пр.). Назначение Requestldentifier - увязывать запросы и последующие сообщения. Обычно сообщения об обнаруженных событиях немедленно передаются в Softswitch. Однако, в зависимости от значения EventControlBuffer (которое является специфицируемым в TerminationStateDescriptor), сведения о событиях могут и записываться в буфер. Когда события записываются в буфер, и затем о них должно сообщаться в Softswitch, то связанная с этими событиями информация хранится в EventBufferDescriptor.
Дескриптор сигналов, Signals, содержит список сигналов, которые должно подавать окончание. Сигналы могут подаваться только одному потоку или всем потокам в окончании. В состав типичных сигналов могут входить, например, такие подаваемые в абонентскую линию акустические сигналы, как ответ станции или контроль посылки вызова. Существуют сигналы трех типов: On/off - сигнал остается включенным (on) до тех пор, пока явно не будет выключен (off), Timeout - сигнал сохраняется до тех пор, пока не истечет определенный период времени или пока не будет выключен еще до истечения заданного времени, Краткий - сигнал должен подаваться только на очень короткое время, как в случае многочастотных сигналов в соединительных линиях с сигнализацией R1.5. Дескриптор сигналов может включать в свой состав логическую последовательность сигналов, которые необходимо воспроизводить друг за другом.
Дескриптор проверки, Audit Descriptor, задает перечень информации, которую необходимо передавать из MG в Softswitch. Дескриптор проверки является просто списком других дескрипторов, которые должны переноситься в ответе. В их число могут входить дескрипторы: мультиплексирования, событий, сигналов, ObservedEvents, DigitMap, статистических данных и EventBuffer.
Дескриптор ServiceChangeDescriptor используется только в сочетании с командой ServiceChange и включает в себя такую информацию, как тип изменения обслуживания, которое произошло или должно произойти, причина изменения обслуживания и новый адрес для использования после изменения обслуживания.
Тип изменения обслуживания определяется параметром ServiceChangeMethod, который может принимать одно из следующих значений: Graceful, Forced, Restart, Disconnected, Handoff, Failover (постепенное, принудительное, перезапуск, отключено, передача управления, неисправность). Graceful указывает выведение окончаний из обслуживания после заданной задержки и без прерывания существующих соединений. Forced указывает внезапное, резкое выведение из обслуживания с потерей существующих соединений. Restart указывает, что восстановление обслуживания начнется после заданной задержки. Disconnected применяется ко всему MG и указывает, что соединение с Softswitch разрушено, но будет восстановлено. Softswitch может передавать команду Audit для проверки того, что характеристики оконечного устройства не изменились за время потери контакта. Handoff передается из Softswitch в MG, чтобы указать, что Softswitch выводится из обслуживания и управление принимает новый Softswitch. Значение Handoff передается также из MG в новый Softswitch во время попытки установить контакт после приема handoff от предыдущего Softswitch. Failover передается из MG в Softswitch, если MG обнаружил неисправность и производится переключение на резервный MG.
Параметр ServiceChangeDelay определяет длительность используемой задержки в секундах. Его необходимо передавать, например, в сочетании с изменением обслуживания типа Graceful. Если параметр отсутствует, или имеет значение ноль, задержки не происходит. В случае изменения обслуживания по типу Graceful нулевое значение указывает, что Softswitch должен ждать естественного удаления оконечных устройств из их контекста; т.е. ждать, когда сеансы связи с использованием указанных окончаний завершатся по инициативе их участников. Параметр ServiceChange Reason, как и следует из его названия, указывает причину изменения обслуживания.
Дескриптор DigitMap является описанием плана нумерации. Иначе говоря, DigitMap специфицирует множество разрешенных для набора комбинаций цифр. Оно хранится в MG, так что тот может передавать принятые цифры в Softswitch блоками, а не по одной. План нумерации может быть загружен в MG средствами эксплуатационного управления или из Softswitch по командам Megaco. Если план загружается из Softswitch, то чтобы переправить информацию, используется дескриптор DigitMap.
С точки зрения синтаксиса DigitMap является строкой или списком строк, причем каждая строка состоит из ряда символов, представляющих собой цифры от 0 до 9 и буквы от A до K. Букву X можно использовать как групповой символ, обозначающий любую цифру от 0 до 9, а символ «точка» (.) используется для указания нуля или нескольких повторений непосредственно предшествовавшей цифры или строки цифр. Этот символ можно использовать для указания номера с длиной, не определенной в плане нумерации. Кроме того, строка может содержать три символа, определяющих запуск таймера (T), короткого таймера (S) и длинного таймера (L). Чтобы понять назначение этих таймеров, рассмотрим, что происходит, когда абонент поднимает трубку обычного телефонного аппарата, чтобы вызвать станцию. АТС обнаруживает вызов, подает сигнал «Ответ станции» и готовится к приему первой цифры номера, включая таймер ожидания этой цифры (порядка 30 секунд). Если цифра не поступит в течение этого времени, АТС определит срабатывание таймера и передаст абоненту зуммер «Занято». Это - таймер T. Когда абонент начал набирать номер, запускается межцифровой таймер. Этот таймер бывает или коротким таймером S, или длинным таймером L, в зависимости от плана нумерации. Если абонент набрал некоторое количество цифр, а АТС нужно больше цифр для маршрутизации вызова, при ожидании следующей цифры обычно применяется короткий таймер. Кроме того, в АТС запускается таймер ограничения длительности непроизводител ьного занятия до момента получения сигнала «Ответ» от вызываемого абонента [т1], для чего применяется длинный таймер L.
Дескриптор StatisticsDescriptor содержит информацию, которая относится к использованию окончания в данном контексте.
Особенности статистических данных, которые должны передаваться по запросу, зависят от типа окончания. Строго говоря, этот дескриптор всегда является опциональным и может передаваться при удалении окончания из контекста по команде Subtract или в ответ на команду AuditValue.
Дескриптор Observed Events является обязательным параметром в команде Notify, где он используется для того, чтобы информировать Softswitch о событиях, которые были обнаружены. В большинстве остальных ответов на команды этот дескриптор является необязательным, кроме ServiceChange. При использовании в ответе на команду AuditValue он предназначен для передачи информации о событиях, которые записаны в буфере событий и еще не известны Softswitch. Дескриптор содержит Requestldentifier со значением, которое согласовано с принятым в дескрипторе событий списком таких событий, которые должны быть обнаружены в первую очередь. Этим обеспечивается увязка запрашиваемых данных о событиях и данных о событиях в сообщениях.
Дескриптор опционально допускает включение в него временных меток с указанием момента обнаружения каждого наблюдаемого события. Эта временная метка структурируется в виде yyyymmddThhmmssss, где записываются сотни секунд. Буква T отделяет год, месяц и день от часа, минуты и секунд. Сама временная метка отделяется от описания соответствующего события двоеточием.
Дескриптор Error передается в ответе, когда не может быть выполнена команда. Он может быть также включен в команду Notify, передаваемую из MG в Softswitch. Дескриптор ошибок состоит из кода ошибки и текстового описания ошибки, опционально сопровождающего этот код.
Дескриптор топологии Topology отличается от других дескрипторов в том смысле, что он соответствует только контексту, а не определенному окончанию в контексте. Назначение дескриптора - указать, как должны протекать в контексте медиа-потоки, т.е. кто и кого должен слышать или видеть. По умолчанию все окончания в контексте могут передавать и принимать информацию друг от друга. Если желательна другая ситуация, то используется дескриптор топологии.
Дескриптор состоит из последовательности троек объектов вида окончание1 - окончание2 - соединение. Такая тройка указывает, существует или нет поток между двумя окончаниями (isolate), должен ли этот поток быть односторонним (oneway) или двусторонним (bothway). Порядок, в котором оконечные устройства появляются в тройке, имеет значение: например, тройка о1-о2-oneway означает, что окончание1 может передавать информацию в окончание2, но окончание2 не может передавать информацию в окончание1.
Если в контексте используется более двух окончаний, то требуется более одной тройки. Например, если используется три оконечных устройства (о1, о2 и о3), то в описании топологии нужны три тройки: для связи между о1 и о2, для связи между о1 и о3 и для связи между о2 и о3. Дескриптор топологии может быть полезным инструментом для реализации таких услуг как вызов с предварительным заказом или конференцсвязь с возможностью части ее участников провести отдельные разговоры перед возвращением в общую группу. По умолчанию характеристики всех дескрипторов, за исключением дескриптора состояния окончания и дескриптора локального управления, являются пустыми.
6.4.7. Транзакции
Команды, передаваемые между Softswitch и MG, группируются в структуры, которые устроены так, что за набором команд, относящихся к одному контексту, может следовать набор команд, относящихся к другому контексту. Сгруппированные команды передаются вместе в едином блоке TransactionRequest. Это можно представить так:
TransactionRequest (TransactionID {
ContextID1 {Command, Command,... Command}, ContextID2 {Command, Command,... Command}, ContextID3 {Command, Command,... Command} })
После приема TransactionRequest получатель выполняет вложенные команды. Команды выполняются последовательно, в том порядке, в каком они указаны в TransactionRequest. После выполнения всех команд передается ответ TransactionReply. Он имеет структуру, аналогичную структуре TransactionRequest в том смысле, что содержит несколько ответов для нескольких контекстов. TransactionReply можно представить так:
TransactionReply (TransactionID {
ContextID1 {Response, Response,... Response }, ContextID2 { Response, Response,... Response }, ContextID3 { Response, Response,... Response } })
Если получателю TransactionRequest потребуется некоторое время для выполнения запроса, он может передать отправителю этого запроса предварительный ответ, чтобы тот не считал запрос потерянным. Этот предварительный ответ TransactionPending извещает, что TransactionRequest принят и в данный момент обрабатывается. Такой ответ содержит принятый TransactionID без каких-либо параметров:
TransactionPending (TransactionID {.})
Параметр normalMGExecutionTime определяет интервал времени, в течение которого контроллер ожидает получение ответа от шлюза. Аналогичный параметр normalSoftswitchExecutionTime определяет время ожидания шлюзом ответа от контроллера.
Для ограничения времени ожидания используется пара параметров MGOriginatedPendingLimit и SoftswitchOriginatedPendingLi- mit; она определяет предельно допустимое количество получаемых извещений TransactionPending. По достижении указанного предела передается либо ответ, либо извещение об ошибке транзакции.
6.4.8. Сообщения
Несколько транзакций протокола могут помещаться в сообщение. Сообщение снабжается заголовком, идентифицирующим отправителя. Идентификатором сообщения MID (Message Identifier) служит назначенное имя (например, доменовый адрес/доменовое имя/имя устройства) объекта, передающего сообщение. По умолчанию предлагается использовать доменовое имя. Объекты протокола Megaco/H.248 (как MG, так и Softswitch) должны использовать один и тот же MID во всех создаваемых ими сообщениях в течение всего времени взаимодействия между ними. Каждое сообщение содержит номер версии протокола, создавшего сообщение. Для версии отводится два разряда. Текущая версия протокола - 2. Транзакции в пределах сообщения обрабатываются независимо. Порядок транзакций в сообщении не влияет на порядок, в котором их должен обрабатывать получатель сообщения. Заметим, что этот порядок отличается от порядка обработки команд в пределах транзакции, где очередность команд имеет значение.
Сообщение Megaco/H.248 - это, по сути, только транспортный механизм, в отличие от сообщений многих других сетевых протоколов. Общая структура сообщения представлена на рис. 6.5.
6.4.9. Наборы сигналов и событий
Шлюзы разных типов могут использовать окончания с сильно различающимися характеристиками. Чтобы обеспечить возможность взаимодействия MG и Softswitch, протокол Megaco определяет типовые наборы packages) характеристик, сигналов и событий для Softswitch и шлюзов разных типов. Softswitch может запросить у шлюза сведения, необходимые, чтобы знать, с какими из таких наборов он может работать. Определяемые в наборе характеристики, события, сигналы или статистические данные, а также их параметры снабжаются идентификаторами. Для каждого набора идентификаторы перечисленных объектов имеют уникальные области имен, и в каждой из областей могут использоваться одинаковые идентификаторы, например, два идентификатора propertyID в разных наборах могут быть одинаковыми. Типовой набор характеризуется базовым описанием, свойствами, предусматриваемыми событиями, поддерживаемыми сигналами, предоставляемыми статистическими данными, годными для интерпретации и анализа, любыми процедурами, относящимися к надлежащей поддержке набора. Он содержит следующие разделы.
Рис. 6.5. Структура сообщений H.248/Megaco |
Типовой набор характеризуется базовым описанием, свойствами, предусматриваемыми событиями, поддерживаемыми сигналами, предоставляемыми статистическими данными, годными для интерпретации и анализа, любыми процедурами, относящимися к надлежащей поддержке набора. Он содержит следующие разделы.
Раздел Package содержит общее описание набора, определяющее его имя, идентификатор (PackagelD), текстовое описание, версию, и опциональные поля, определяющие, что набор предусматривает наличие расширения и/или что он сам является расширением уже существующего.
Раздел Properties определяет свойства (характеристики) набора и содержит имя каждого свойства, его идентификатор (propertylD), текстовое описание, тип (логическая переменная, символьная, целочисленная и т.д.), возможные значения, специфицирующие свойство и характеристики (только чтение или только запись, чтение/запись).
Раздел Events определяет события и содержит имя события, его идентификатор (eventID), текстовое описание, параметры дескриптора Events и параметры дескриптора ObservedEvents.
Раздел Signals определяет сигналы, имя и идентификатор каждого из них (signalID), его текстовое описание, тип (on/off, timeout, brief), продолжительность в сотых долях секунды и дополнительные параметры, которые мы опишем ниже.
10. Б.С. Гольдштейн
Раздел Statistics определяет статистические данные, содержит имя и идентификатор данных каждого вида (statisticID), их текстовое описание, единицы измерения (т.е. миллисекунды, количество пакетов и т.д.).
Процедуры Procedures определяют дополнительные аспекты использования набора. Параметры событий и сигналов определяются именем параметра и его идентификатором (parameterID), типом (например, логическая, символьная или целочисленная переменная и т.д.), возможными значениями переменных, текстовыми описаниями. В базовой спецификации протокола Megaco/H.248 определены 13 типовых наборов, содержание которых сведено в табл. 6.4.
Таблица 6.4. Типовые наборы
|
Продолжение табл. 6.4
|
Окончание табл. 6.4
|
Наборы опций являются одним из способов расширения функциональных возможностей протокола. Все новые наборы, определяемые комитетом IETF, издаются в виде отдельных документов RFC, а наборы, определяемые ITU-T, - в виде соответствующих рекомендаций H.248.x.