返回首页

H.248网关控制协议呼叫流程示例

时间:2009-01-19 来源:未知 作者:小远 点击:
所有H.248.1实施者在实施本建议书之前务必认真阅读本建议书的规范性部分。任何人都不应将本附 录提供的示例用做关于生成协议消息的单独解释。 本附录中使用SDP协议来定义本地和远端描述符, SDP协议具体内容参见RFC 2327。如果本附录提 供的示范程序中与 RFC 2327定义
  

所有H.248.1实施者在实施本建议书之前务必认真阅读本建议书的规范性部分。任何人都不应将本附
录提供的示例用做关于生成协议消息的单独解释。
本附录中使用SDP协议来定义本地和远端描述符, SDP协议具体内容参见RFC 2327。如果本附录提
供的示范程序中与 RFC 2327定义的SDP不同,则应该确认RFC文档可以修改。有关语音文件的定义参见
RFC 1890和其他已在IANA注册的文档中。例如,在SDP协议中,G.711 A率称为 PCMA,其类型被指定
为0。G.723.1被成为G.723,其类型被指定为6。H.263被称为H263,其类型被指定为34。具体内容参见
http://www.iana.org/assignments/rtp-parameters。
1 驻地网关之间的呼叫程序
本附录中的示范程序用于对IP网络中驻地网关之间的呼叫建立程序进行说明。为简单起见,假定两个
驻地网关均受同一个MGC控制。
I.1.1 驻地网关中模拟线终结点空闲
本节以下内容所说明的MG和MGC之间的API接口用于确保该环境下的终结点处于空闲状态。主叫
MG和被叫MG中的模拟线终结点处于空闲状态,且终结点被通过Modify命令进行配置,用于检测呼叫发
起事件(如着摘机)。空关联用于指示关联中尚未包含终结点。根终结点用于指示整个MG,而不是MG
内的某个终结点。
在该示范程序中, MG1 的IP 地址为124.124.124.222, MG2 的IP地址为125.125.125.111, MGC的IP地
址为123.123.123.4. MG1、MG2和MGC的协议默认端口为55555 。
1) MG向MGC发送ServiceChange命令进行注册,命令如下:
MG1 至MGC:
MEGACO/1 [124.124.124.222]
Transaction = 9998 {
Context = - {
ServiceChange = ROOT {Services {
Method=Restart, Version=3,
ServiceChangeAddress=55555, Profile=ResGW/1}
}
}
}

2) MGC 回送的响应如下:
MGC 至MG1:
MEGACO/1 [123.123.123.4]:55555
Reply = 9998 {
Context = - {ServiceChange = ROOT {
Services {ServiceChangeAddress=55555, Profile=ResGW/1} } }
}
3) MGC将修改空关联中的一个终结点,TerminationId为A4444,streamId为1,事件描述符中的
requestId为2222。消息发送方的mID采用IP 地址和端口号的形式:[123.123.123.4]:55555。该媒体
流的模式设置为“SendReceive”。“al”是模拟线检测包的缩写。本地和远端描述符为临时分配
的。
MGC 至MG1:
MEGACO/3 [123.123.123.4]:55555
Transaction = 9999 {
Context = - {
Modify = A4444 {
Media { Stream = 1 {
LocalControl {
Mode = SendRecv,
tdmc/gain=2, ; in dB,
tdmc/ec=on
},
}
},
Events = 2222 {al/of {strict=state}}
}
}
}
拨号计划可以已经预先记载在MG中。此时,应等待摘机事件发生,并播放拨号音和开始收集DTMF
数字。然而,在本示范程序中,将在摘机事件发生后使用digitmap,如步骤5)所示。
如果可使用内嵌的事件描述符来集合步骤3)和4),步骤8)和9),从而步骤6)和7)可以省略。
4) MGC和 MG2之间的消息交互类似,此时,空闲终结点为A5555:
MG1 至MGC:
MEGACO/3 [124.124.124.222]:55555
Reply = 9999 {
Context = - {Modify = A4444}
}
5) MGC和 MG2之间的消息交互类似,此时,空闲终结点为A5555。
I.1.2 收集主叫方拨号事件和初始化终结点
以下步骤是在完成前面所述步骤的基础上进行的。从MGC发送至 MG1的事务用于获得主叫方终结点
A4444收集的拨号事件后,发起至MG2的连接。

6) MG1检测到用户1的摘机事件,则向MGC上报Notify命令。
MG1 至MGC:
MEGACO/3 [124.124.124.222]:55555
Transaction = 10000 {
Context = - {
Notify = A4444 {ObservedEvents =2222 {
19990729T22000000:al/of(init=OFF)}}
}
}
7) Notify命令得到证实。
MGC 至MG1:
MEGACO/3 [123.123.123.4]:55555
Reply = 10000 {
Context = - {Notify = A4444}
}
8) MGC修改终结点,指示终结点播放拨号音,并按照Dialplan0的DigitMap收集数字,以及开始检测
挂机事件。
MGC 至MG1:
MEGACO/3 [123.123.123.4]:55555
Transaction = 10001 {
Context = - {
Modify = A4444 {
Events = 2223 {
al/on(strict=state), dd/ce {DigitMap=Dialplan0}
},
Signals {cg/dt},
DigitMap= Dialplan0{
(0| 00|[1-7]xxx|8xxxxxxx|Fxxxxxxx|Exx|91xxxxxxxxxx|9011x.)}
}
}
}
9) Modify得到证实。
MG1 至MGC:
MEGACO/3 [124.124.124.222]:55555
Reply = 10001 {
Context = - {Modify = A4444}
}
10) 下一步,MG1收集了用户1所拨的被叫号码。检测到第一个被叫号码数字时,停止播放拨号音。
当收集的被叫号码与A4444终结点上的拨号计划完全匹配时,向MGC发送 Notify命令。
MG1 至MGC:
MEGACO/3 [124.124.124.222]:55555
Transaction = 10002 {
Context = - {
Notify = A4444 {ObservedEvents =2223 {
19990729T22010001:dd/ce{ds="916135551212",Meth=UM}}}
}
}

令得到证实。
MGC 至MG1:
MEGACO/3 [123.123.123.4]:55555
Reply = 10002 {
Context = - {Notify = A4444}
}
12) MGC分析被叫号码后,确定需要从MG1建立到MG2的连接。A4444终结点和RTP终结点被添加到
MG1中的一个新的关联中。由于远端描述符未指定,此时,终结点模式设置为ReceiveOnly。
MGC期望的编码按照优先级进行排列。
MGC 至MG1:
MEGACO/3 [123.123.123.4]:55555
Transaction = 10003 {
Context = $ {
Add = A4444,
Add = $ {
Media {
Stream = 1 {
LocalControl {
Mode = RecvOnly,
nt/jit=40 ; in ms
},
Local {
v=0
c=IN IP4 $
m=audio $ RTP/AVP 4
a=ptime:30
v=0
c=IN IP4 $
m=audio $ RTP/AVP 0
}
}
}
}
}
}
注— MGC可以本地描述符中的SDP部分包含其所期望的参数值。MG应在响应中返回本地描述符。
13) MG1返回响应,其中包含一个新的终结点,且填充本地描述符中 IP地址和端口号。同时,它返
回MG 所期望的编码的选择结果。MG1将RTP端口号设置为2222。
MEGACO/3 [124.124.124.222]:55555
Reply = 10003 {
Context = 2000 {
Add = A4444,
Add=A4445{
Media {
Stream = 1 {
Local {
v=0
o=- 2890844526 2890842807 IN IP4 124.124.124.222
s=-
t= 0 0
c=IN IP4 124.124.124.222
m=audio 2222 RTP/AVP 4
a=ptime:30
a=recvonly
} ; RTP profile for G.723.1 is 4
}

ITU-T H.248.1建议书 (09/2005) 175
}
}
}
}
14) MGC将MG2上的终结点添加到一个新的关联,并建立一个RTP媒体流,例如,终结点标识符为
A5556,模式设置为 SendReceive。同时, MGC指示终结点A5555播放振铃信号音。
MGC 至MG2:
MEGACO/3 [123.123.123.4]:55555
Transaction = 50003 {
Context = $ {
Add = A5555 { Media {
Stream = 1 {
LocalControl {Mode = SendRecv} }},
Events=1234{al/of(strict=state)},
Signals {al/ri}
},
Add = $ {Media {
Stream = 1 {
LocalControl {
Mode = SendRecv,
nt/jit=40 ; in ms
},
Local {
v=0
c=IN IP4 $
m=audio $ RTP/AVP 4
a=ptime:30
},
Remote {
v=0
c=IN IP4 124.124.124.222
m=audio 2222 RTP/AVP 4
a=ptime:30
} ; G.723.1 的RTPprofile 等于4
}
}
}
}
}
15) 该命令得到证实。媒体流的端口号应与控制流端口号不同,例如,端口号为1111(在SDP中)。
MG2 至MGC:
MEGACO/3 [125.125.125.111]:55555
Reply = 50003 {
Context = 5000 {
Add = A5555,
Add = A5556{
Media {
Stream = 1 {
Local {
v=0
o=- 7736844526 7736842807 IN IP4 125.125.125.111
s=-
t= 0 0
c=IN IP4 125.125.125.111
m=audio 1111 RTP/AVP 4
}
} ; G.723.1 的RTP profile 等于4
}

}
}
}
16) 此时,将步骤15)中的MG2的 IP地址和端口号告知MG1。
MGC 至MG1:
MEGACO/3 [123.123.123.4]:55555
Transaction = 10005 {
Context = 2000 {
Modify = A4444 {
Signals {cg/rt}
},
Modify = A4445 {
Media {
Stream = 1 {
Remote {
v=0
o=- 7736844526 7736842807 IN IP4 125.125.125.111
s=-
t= 0 0
c=IN IP4 125.125.125.111
m=audio 1111 RTP/AVP 4
}
} ; G.723.1 的RTP profile 等于4
}
}
}
}
MG1 至MGC:
MEGACO/3 [124.124.124.222]:55555
Reply = 10005 {
Context = 2000 {Modify = A4444, Modify = A4445}
}
17) 此时两个网关建立连接,用户1听到回铃音。MG2此时应等待用户2摘机,摘机后,建立双向连
接。
从MG2 至MGC:
MEGACO/3 [125.125.125.111]:55555
Transaction = 50005 {
Context = 5000 {
Notify = A5555 {ObservedEvents =1234 {
19990729T22020002:al/of(init=off)}}
}
}
从MGC 至MG2:
MEGACO/3 [123.123.123.4]:55555
Reply = 50005 {
Context = - {Notify = A5555}
}
从MGC 至MG2:
MEGACO/3 [123.123.123.4]:55555
Transaction = 50006 {
Context = 5000 {
Modify = A5555 {

Events = 1235 {al/on(strict=state)},
Signals ; to turn off ringing
}
}
}
从MG2 至MGC:
MEGACO/3 [125.125.125.111]:55555
Reply = 50006 {
Context = 5000 {Modify = A4445}
}
18) 将MG1的模式修改为SendReceive,并停止播放回铃音。
MGC 至MG1:
MEGACO/3 [123.123.123.4]:55555
Transaction = 10006 {
Context = 2000 {
Modify = A4445 {
Media {
Stream = 1 {
LocalControl {
Mode=SendRecv
}
}
}
},
Modify = A4444 {
Signals
}
}
}
从MG1 至MGC:
MEGACO/3 [124.124.124.222]:55555
Reply = 10006 {
Context = 2000 {Modify = A4445, Modify = A4444}}
19) MGC指示对MG2上的 RTP 终结点进行审计。
MEGACO/3 [123.123.123.4]:55555
Transaction = 50007 {
Context = 5000 {AuditValue = A5556{
Audit{Media, DigitMap, Events, Signals, Packages, Statistics }}
}
}
20) MGC返回命令响应。
MEGACO/3 [125.125.125.111]:55555
Reply = 50007 {
Context = 5000 {
AuditValue = A5556 {
Media {
TerminationState { ServiceStates = InService,
Buffer = OFF },
Stream = 1 {
LocalControl { Mode = SendRecv,
nt/jit=40 },
Local {
v=0
o=- 7736844526 7736842807 IN IP4 125.125.125.111

s=-
t= 0 0
c=IN IP4 125.125.125.111
m=audio 1111 RTP/AVP 4
a=ptime:30
},
Remote {
v=0
o=- 2890844526 2890842807 IN IP4 124.124.124.222
s=-
t= 0 0
c=IN IP4 124.124.124.222
m=audio 2222 RTP/AVP 4
a=ptime:30
} } },
Events,
Signals,
DigitMap,
Packages {nt-1, rtp-1},
Statistics { rtp/ps=1200, ; 发送的包数目
nt/os=62300, ; 发送的字节数
rtp/pr=700, ; 接收的包数目
nt/or=45100, ; 接收的字节数
rtp/pl=0.2, ; 包丢失率%
rtp/jit=20,
rtp/delay=40 } ; 平时时延
}
}
}
21) 当MGC接收到来自任何一个MG的挂机事件时,应拆除呼叫。本示例程序中,假定MG2上的用户
先挂机。
从MG2 至MGC:
MEGACO/3 [125.125.125.111]:55555
Transaction = 50008 {
Context = 5000 {
Notify = A5555 {ObservedEvents =1235 {
19990729T24020002:al/on(init=off)}
}
}
}
从MGC 至MG2:
MEGACO/3 [123.123.123.4]:55555
Reply = 50008 {
Context = - {Notify = A5555}
}
22) MGC开始向主被叫MG发送Subtract命令来拆除呼叫连接,且每个终结点有响应的统计参数。
MGC可以要求A5555和A5556返回其统计参数。A5555是物理终结点,A5556是RTP终结点。
从MGC 至MG2:
MEGACO/3 [123.123.123.4]:55555
Transaction = 50009 {
Context = 5000 {
Subtract = A5555 {Audit{Statistics}},

Subtract = A5556 {Audit{Statistics}}
}
}
从MG2 至MGC:
MEGACO/3 [125.125.125.111]:55555
Reply = 50009 {
Context = 5000 {
Subtract = A5555 {
Statistics {
nt/os=45123, ; 发送的字节数
nt/or=45123, ; 接收的字节数
nt/dur=40000 ; 单位为毫秒
}
},
Subtract = A5556 {
Statistics {
rtp/ps=1245, ; 发送的包数目
nt/os=62345, ; 发送的字节数
rtp/pr=780, ; 接收的包数目
nt/or=45123, ; 接收的字节数
rtp/pl=10, ; 包丢失率%
rtp/jit=27,
rtp/delay=48, ; 平均时延
nt/dur=38000 ; 单位为毫秒
}
}
}
}
23) MGC开始指示MG1和MG2检测下一个摘机事件,如步骤1)所示。此时,如果处于空关联中的终
结点处于默认状态,则不需从MGC发送消息至MG。一旦终结点返回至空关联中,该终结点应返
回至默认参数值。

------分隔线----------------------------
顶一下
(2)
66.7%
踩一下
(1)
33.3%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容