Сценарий соединения между шлюзами

На рис. 6.6 приведен пример установления соединения с использованием протокола Megaco/H.248 между двумя шлюзами типа Residential Gateway, управляемыми одним Softswitch. В этом примере вызывающий шлюз MG1 имеет IP-адрес 212.86.42.1, адрес вызываемого шлюза MG2 - 218.68.122.41, адрес контрол­лера шлюзов Softswitch - 216.44.88.1. Порт для связи по протоколу Megaco для всех трех устройств по умолчанию имеет номер 55555.

Таблица 6.5. Дополнительные наборы
Набор Возможности
Набор обнаружения тональных сигналов факсимильной/тексто- телефонной/модемной свя­зи (FAX/Textphone/Modem Tones Detection Package) Идентификатор: ftmd Пример синтаксиса: ftmd/ Обеспечивает обнаружение тональных сигналов, пере­даваемых по стационарной телефонной линии, которые могут означать запрос перехода на один из режимов передачи данных, например на факсимильную или мо­демную связь. События: Те же, что и у набора для обнаружения тональных сиг­налов, с добавлением нового идентификатора сигнала (dtfm): tid=dtfm Поддерживаются основные тональные сигналы фак­симильной связи, такие как CNG, V21, V23, V8bis, ANS, ANSAM, и.т.д. Не определено никаких сигналов, статистики или про­цедур
Набор, позволяющий раз­личать вызовы разного типа (Call Type Discrimination Package) Идентификатор: ctyp Пример синтаксиса: ctyp/ Позволяет установить, должен ли вызов обслуживаться как телефонный, факсимильный, тексто-телефонный или модемный, и выполняет начальное согласование режимов работы, параметров и т.д. Пример: Ctyp/dtone{dtt=cng} (указывает на то, что обнаруженный сигнал - сигнал CNG)
Набор для текстовых теле­фонов (Text Telephone) Идентификатор: txp Пример синтаксиса: txp/ Обеспечивает связь с текстовыми телефонами. Пример: txp/convmode=simultaneous (разговорный режим — од­новременная речевая связь и передача текста)
Набор для факсимильной связи(Fax) Идентификатор: fax Пример синтаксиса: fax/ Базовая факсимильная связь Пример: fax/faxstate=prepare
Набор для тексто-телефон- ной связи (Text Conversation) Идентификатор: txc Пример синтаксиса: txc/ Обеспечивает текстовую связь между терминалами раз­нородных сетей (текстовые телефоны имеются в одной из этих сетей, их поддерживает набор txp) Пример: txc/bufftime=200 (время буферизации 200 мс)
Набор для факсимильной связи в IP-сетях (IP fax) Идентификатор: ipfax Пример синтаксиса: ipfax/ Факсимильная передача в IP-сетях с помощью процедур T.38 (в реальном времени) или T.37 (с промежуточной буферизацией). Пример: ipfax/faxstate=negotiating
Абонент А Шлюз MG1 Softswitch Шлюз MG2 Абонент B Рис. 6.6. Сценарий установления и разрушения соединения по протоколу Megaco/Н.248

В самом начале шлюз MG1 регистрируется в Softswitch при по­мощи команды ServiceChange. Использование нулевого контекста означает, что порт в настоящий момент не участвует ни в каком со­единении, а использование идентификатора порта ROOT означает, что команда относится ко всему шлюзу, а не к какому-нибудь опре­деленному порту:

MG1 to Softswitch: Megaco/1.0 [212.86.42.1] Transaction = 9998 { Context = - {

ServiceChange = ROOT {Services {

Method=Restart, Port=55555, Profile=ResGW/1.0}

}

}

Далее Softswitch подтверждает регистрацию шлюза:

Softswitch to MG1:

Megaco/1.0 [216.44.88.1]:55555

Reply = 9998 {

Context = - {ServiceChange = ROOT { Services {

Port=55555, Profile=ResGW/1.0} }

}

}

Шлюз имеет свободные аналоговые порты, которые должны быть запрограммированы для отслеживания изменения сопротив­ления абонентского шлейфа, когда абонент поднимет трубку, после чего шлюз должен передать абоненту акустический сигнал «Ответ станции».

Программирование производится при помощи команды Modify с соответствующими параметрами, причем программируется порт, находящийся в нулевом контексте. В команде указывается иденти­фикатор порта (terminationId) - A4444, идентификатор информаци­онного потока (streamId) - 1, транспортный адрес оборудования, передавшего команду - [216.44.88.1]:55555, специфицируется режим функционирования - дуплексный (SendReceive).

Softswitch to MG1:

Megaco/1.0 [216.44.88.1]:55555

Transaction = 9999 { Context = - {

Modify = A4444 { Media {

TerminationState {

BufferedEventHandling{Step,Process}

},

Stream = 1 {

LocalControl {

Mode = SendReceive, g/GainControl=2,; in dB, g/Encryption=xxx, g/EchoCancellation=G165, g/VoiceActDet=yes

}

}

},

Events = 2222 {glinesup/offhook} },

Signals {g/PlayTone{tone=dialtone}} }

}

}

На этом же этапе в шлюз может быть загружен план нумерации в дескрипторе Digit Map. В этом случае, после того как абонент поднимет трубку, шлюз должен передать ему акустический сигнал «Ответ станции» и начинать прием сигналов DTMF в соответствии с планом нумерации. Однако в нашем примере план нумерации бу­дет загружен только после того, как абонент поднимет трубку.


Шлюз MG1 подтверждает выполнение команды Modify:

MG1 to Softswitch: Megaco/1.0 [212.86.42.1]:55555 Reply = 9999 {

Context = - {Modify}

}

Аналогичным образом программируется аналоговый порт шлю­за MG2, в нашем примере имеющий идентификатор A5555. Далее шлюз MG1 обнаруживает, что абонент A поднял трубку, и извещает об этом событии Softswitch при помощи команды Notify.

MG1 to Softswitch: Megaco/1.0 [212.86.42.1]:55555 Transaction = 10000 { Context = - {

Notify = A4444 {ObservedEvents =2222 { 19990729T22000000:glinesup/offhook}}

}

}

Softswitch подтверждает получение команды Notify:

Softswitch to MG1: Megaco/1.0 [216.44.88.1]:55555 Reply = 10000 {

Context = - {Notify}

}

На следующем шаге Softswitch дает шлюзу инструкцию накап­ливать цифры номера вызываемого абонента в соответствии с вы­бранным планом нумерации. Кроме того, после получения первой цифры номера необходимо остановить передачу акустического сигнала «Ответ станции».

Softswitch to MG1: Megaco/1.0 [216.44.88.1]:55555 Transaction = 10001 { Context = - {

Modify = A4444 { Events = 2223 {

glinesup/onhook {

Action { DigitMap=Dialplan0 }

}

},

Signals { g/StopTone} },

DigitMap= Dialplan0{

(0T|00T|[17]xxx|8xxxxxxx|#xxxxxxx|*xx|91xxxxxxxxxx|9011x.T)} }

}

}

Шлюз подтверждает получение и этой команды Modify:

MG1 to Softswitch: Megaco/1.0 [212.86.42.1]:55555 Reply = 10001 {

Context = - {Modify}

}

Цифры номера вызываемого абонента накапливаются шлюзом MG1, после чего они сравниваются с планом нумерации и переда­ются в Softswitch.

MG1 to Softswitch:

Megaco/1.0 [212.86.42.1]:55555

Transaction = 10002 { Context = - {

Notify = A4444 {ObservedEvents =2223 {

19990729T22010001:g/tonesdt{tones=«16135551212»}}}

}

}

Полученное сообщение подтверждается шлюзом:

Softswitch to MG1:

Megaco/1.0 [216.44.88.1]:55555

Reply = 10002 {

Context = - {Notify}

}

Далее Softswitch анализирует цифры номера вызываемого або­нента, полученные от шлюза MG1, и определяет, что соединение должно проходить через шлюз MG2, к которому подключен вызы­ваемый абонент. К вновь образованному контексту в шлюзе MG1 добавляются при помощи команды Add физическое окончание (аналоговый абонентский интерфейс) A4444 и виртуальный порт (RTP-порт). Так как в этот момент шлюз, к которому прикреплен вызывающий абонент, не имеет информации о шлюзе MG2 (такой как IP-адрес, номер RTP-порта и поддерживаемые алгоритмы де­кодирования принимаемой речевой информации), то контроллер Softswitch предписывает шлюзу MG1 только принимать информа­цию (режим ReceiveOnly). Кроме того, Softswitch специфицирует в команде Add предпочтительные для использования алгоритмы кодирования.

Softswitch to MG1:

Megaco/1.0 [216.44.88.1]:55555

Transaction = 10003 { Context = $ { Add = A4444 { Media {

Stream = 1 { Events = 2224 {glinesup/onhook} }

}

},

Add = $ { Media {

Stream = 1 {

LocalControl {

Mode = ReceiveOnly, g/NetworkType = RTP/IP4,; g/MaxJitterBuffer=40,; in ms g/PreferredPacketization=30,; in ms g/PreferredPacketization=30,; in ms g/PreferredEncoders =[G723, PCMU], g/PreferredDecoders=[G723, PCMU], g/Gain=0; in dB

}

}

}

}

Softswitch указывает предпочтительные параметры в дескрипто­ре LocalControl, как это показано выше. В требовании, получаемом шлюзом от контроллера, отсутствуют дескрипторы Local и Remote, в которых от вызывающей стороны к вызываемой переносится вся адресная информация и сведения об используемых алгоритмах кодирования. Дескрипторы Local и Remote передаются шлюзом в ответе на это требование.

Шлюз MG1 создает новое виртуальное окончание (RTP-порт), указывает его транспортный адрес: IP-адрес (212.86.42.1) и UDP/RTP-порт (22220). Кроме того, шлюз выбирает алгоритмы ко­дирования информации, которые будут использоваться в соедине­нии, основываясь на предпочтениях Softswitch.

MG1 to Softswitch: Megaco/1.0 [212.86.42.1]:55555 Reply = 10003 { Context = 2000 { Add,

Add=A4445{ Media {

Stream = 1 {

Local = SDP {

v=0

c=IN IP4 212.86.42.1 m=audio 2222 RTP/AVP 4 0 a=ptime:20 a=recvonly

}; RTP profile for G.723 is 4

}

}

}

}

}

Softswitch создает в шлюзе MG2 контекст для установления дуп­лексного соединения (режим SendReceive) с вызывающим пользо­вателем.

Softswitch to MG2:

Megaco/1.0 [216.44.88.1]:55555 Transaction = 50003 { Context = $ { Add = A5555 { Media {

Stream = 1 {

}

}

},

Add = $ {

Media { Stream = 1 {

LocalControl {

Mode = SendReceive, g/NetworkType = RTP/IP4, g/MaxJitterBuffer=40,; in ms g/PreferredPacketization=30,; in ms g/PreferredEncoders =[G723, PCMU], g/PreferredDecoders=[G723, PCMU],

g/Gain=0; in dB

},

Remote=SDP{

v=0

c=IN IP4 212.86.42.1 m=audio 2222 RTP/AVP 4 0 a=sendrecv

}; RTP profile for G.723 is 4

}

}

}

}

}

Создание контекста подтверждается, физический порт шлюза MG2 A5555 соединяется с UDP/RTP-портом, имеющим идентифи­катор A5556. Отметим, что RTP-порт имеет номер 1111, т.е. отлич­ный от номера порта Megaco/H.248 - 55555.

MG2 to Softswitch:

Megaco/1.0 [212.86.42.1]:55555 Reply = 50003 {

Context = 5000 { Add,

Add = A5556{

Media {

Stream = 1 {

Local = SDP {

v=0

c=IN IP4 218.68.122.411 m=audio 1111 RTP/AVP 4 0 a=sendreceive

}

}; RTP profile for G723 is 4

}

}

}

}

Контроллер предписывает шлюзу MG1 начать передачу вызыва­ющему абоненту акустического сигнала контроля посылки вызова КПВ.

Softswitch to MG1:

Megaco/1.0 [216.44.88.1]:55555 Transaction = 10005 { Context = 2000 { Modify = A4444 {

Signals {g/PlayTone{tone=ringback}}

}

}

}

Шлюз MG1 подтверждает передачу указанного акустического сигнала в порт A4444.

MG1 to Softswitch:

Megaco/1.0 [212.86.42.1]:55555 Reply = 10005 {

Context = 2000 {Modify}


Контроллер Softswitch предписывает порту A5555 шлюза MG2 начать передачу вызывного сигнала.

Softswitch to MG2:

Megaco/1.0 [216.44.88.1]:55555 Transaction = 50004 { Context = 5000 { Modify = A5555 {

Signals {glinesup/PlayTone{tone=ring}}

}

}

}

Шлюз MG2 подтверждает передачу сигнала «Посылка вызова» вызываемому абоненту.

MG2 to Softswitch:

Megaco/1.0 [218.68.122.41]:55555 Reply = 50004 {

Context = 5000 {Modify}

}

На этом этапе обоим абонентам, участвующим в соединении, посылаются соответствующие сигналы, и шлюз MG2 ждет, пока вызываемый абонент примет входящий вызов, после чего между двумя шлюзами будут организованы двунаправленные разговор­ные каналы.

Шлюз MG2 обнаружил, что вызываемый абонент поднял трубку, и извещает об этом контроллер Softswitch.

MG2 to Softswitch:

Megaco/1.0 [218.68.122.41]:55555 Transaction = 50005 { Context = 5000 {

Notify = A5555 {ObservedEvents =1234 { 19990729T22020002:glinesup/offhook}}

}

}

Контроллер подтверждает получение команды Notify. Softswitch to MG2:

Megaco/1.0 [216.44.88.1]:55555 Reply = 50005 {

Context = - {Notify}

}

Далее контроллер Softswitch предписывает шлюзу MG2 прекра­тить передачу вызывного сигнала.

Softswitch to MG2:

Megaco/1.0 [216.44.88.1]:55555 Transaction = 50006 { Context = 5000 { Modify = A5555 {

Events = 1235 {glinesup/onhook}, Signals {g/StopTone}; to turn off ringing

} }

Шлюз MG2 подтверждает выполнение команды.

MG2 to Softswitch:

Megaco/1.0 [218.68.122.41]:55555 Reply = 50006 { Context = 5000 {Modify}

}

Далее контроллер разрешает шлюзу MG1 не только принимать, но и передавать информацию (режим SendReceive), и останавлива­ет передачу вызывающему абоненту акустического сигнала КПВ.

Softswitch to MG1:

Megaco/1.0 [216.44.88.1]:55555 Transaction = 10006 { Context = 2000 { Modify = A4445 { Media {

Stream = 1 { LocalControl {

Mode=SendReceive

}

}

}

},

Modify = A4444 {

Signals { g/StopTone}

}

}

}

Шлюз MG1 подтверждает выполнение команды.

MG1 to Softswitch:

Megaco/1.0 [212.86.42.1]:55555 Reply = 10006 {

Context = 2000 {Modify, Modify}}

После этого начинается разговорная фаза соединения, в тече­ние которой участники сеанса связи обмениваются речевой ин­формацией. Следующим шагом контроллер Softswitch принимает решение проверить PTP-порт в шлюзе MG2.

Softswitch to MG2:

Megaco/1.0 [216.44.88.1]:55555 Transaction = 50007 {

Context = - {AuditValue = A5556{

Audit{Media, DigitMap, Events, Signals, Packages, Statistics }}

}

}

Шлюз MG2 выполняет команду. В ответе на команду AuditValue передается вся запрашиваемая информация, в том числе статисти­ческие данные, накопленные за время соединения. Кроме того, из ответа видно, что не произошло никаких событий и не передавалось никаких сигналов.


Megaco/1.0 [218.68.122.41]:55555 Reply = 50007 { Context = - { AuditValue { Media {

TerminationState {

BufferedEventHandling{Process}

},

Stream = 1 {

LocalControl {

Mode = SendReceive, g/MaxJitterBuffer=40,; in ms g/PreferredPacketization=30,; in ms g/PreferredEncoders =[G723, PCMU], g/PreferredDecoders=[G723, PCMU], g/Gain=0; in dB

},

Local = SDP {

v=0

c=IN IP4 218.68.122.41 m=audio 1111 RTP/AVP 4 0 a=sendrecv

},

Remote=SDP{

v=0

c=IN IP4 212.86.42.1 m=audio 2222 RTP/AVP 4 0 a=sendrecv

}; RTP profile for G.723 is 4

}

},

Packages {g, glinesup, RTPPkg},

Statistics { RTPPkg/PacketsSent=1200, RTPPkg/OctetsSent=62300, RTPPkg/PacketsReceived=700, RTPPkg/OctetsReceived=45100, RTPPkg/PacketsLost=6, RTPPkg/Jitter=20, RTPPkg/AverageLatency=40 }

}

}

}

Вызываемый абонент первым разрушает связь, и шлюз MG2 из­вещает об этом Softswitch.

MG2 to Softswitch:

Megaco/1.0 [218.68.122.41]:55555 Transaction = 50008 { Context = 5000 {

Notify = A5555 {ObservedEvents =1235 { 19990729T24020002:glinesup/onhook}

}

}

}

Softswitch подтверждает получение сообщения Notify.

Softswitch to MG2:

Megaco/1.0 [216.44.88.1]:55555 Reply = 50008 {

Context = - {Notify}

Получив информацию от любого из шлюзов о том, что один из абонентов положил трубку, Softswitch разрушает соединение. К обоим шлюзам передается команда Subtruct.

Алгоритм разрушения соединения предусматривает одинако­вый обмен сигнальными сообщениями между контроллером и обо­ими шлюзами, поэтому здесь этот алгоритм рассматривается на примере шлюза MG2.

From Softswitch to MG2:

Megaco/1.0 [216.44.88.1]:55555

Transaction = 50009 { Context = 5000 {

Subtract = A5555 {Audit{Statistics}}, Subtract = A5556 {Audit(Statistics}}

}

}

Каждый из портов шлюза MG2, участвующих в соединении (фи­зический порт - A5555 и RTP-порт - A5556), передает статистичес­кие данные, накопленные за время соединения. В общем случае, Softswitch может запрашивать статистическую информацию только у одного из портов.

From MG2 to Softswitch:

Megaco/1.0 [218.68.122.41]:55555

Reply = 50009 { Context = 5000 { Subtract {

Statistics {; what are the stats for a TDM connection? TDMPkg/OctetsSent=45123,

TDMPkg/Duration=40; in seconds }

},

Subtract {

Statistics {

RTPPkg/PacketsSent=1245,

RTPPkg/OctetsSent=62345,

RTPPkg/PacketsReceived=780,

RTPPkg/OctetsReceived=45123,

RTPPkg/PacketsLost=10,

RTPPkg/Jitter=27,

RTPPkg/AverageLatency=48

}

}

}

}

После разрушения соединения Softswitch предписывает шлюзам MG1 и MG2 быть готовыми к тому, что кто-то из обслуживаемых ими абонентов поднимет трубку.

Отметим, что портам шлюза, отображаемым окончаниями в ну­левом контексте, по умолчанию может быть предписано обнару­живать снятие трубки абонентом, при этом Softswitch не должен передавать шлюзам специальные команды, как это было в рассмот­ренном примере.

11. Б.С. Гольдштейн


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: