[原创] Megaco基本呼叫流程 - VoIP(Megaco/H.248)学习笔记系列之一

VoIP(Megaco/H.248)基本呼叫流程

 

最近总结了一下Megaco/H.248基本呼叫的流程,不含任何错误处理,先用文字的方法描述如下,后续会陆续推出时序图版本,以及其他基本流程,如MG注册,MG lock/unlock,长时间摘机不拨号,被叫用户忙,拨号错误,supplemental service,如Call Waiting(呼叫等待),Call Transfer(呼叫转接),Three Way Call(三方通话)等,尽情期待!


名词解释


VoIP(Voice Over IP): 网络电话,通过IP网络来传输语音信息。
Megaco/H.248: ITU-T和IETF基于软交换的思想共同制定的媒体网关控制协议,与SIP各有千秋。

DSP: Digital Signaling Processor(数字信号处理器) - e.g. MindSpeed M82359
VCP: Virtual Control Processor(微处理器) - e.g. Zarlink Le79271
SLAC: Subscriber Line Audio Processing Circuit(用户线音频处理电路) - e.g. Zarlink Le79238
SLIC: Subscriber Line Interface Circuit(用户线接口电路) - e.g. Zarlink Le79121

场景

MGC -- MG1 -- UserA
        -- MG2 -- UserB

基本呼叫流程

- 用户A摘机(Offhook):SLIC输出给VCP终端信号,从而引起VCP中断。

- MG1向用户A送拨号音(Dialtone):VCP接到SLIC终端信号后,发生中断,执行送拨号音子程序,将存储器(Register)中拨号音码经U接口回环给POTS。POTS的 CODEC(编码解码器)将这些拨号音PCM码进行处理后变成模拟信号RCV输出到SLIC的RCVN和RCVP差分输入端,再经SLIC的PT、PR输出给话机,使之发出拨号声音。

- MG1检测到用户A的摘机,将此摘机事件通过Notify命令上报给MGC;

- MGC向MG1返回Reply;

- 用户A拨号(Dial digits):用户A听到拨号音后就可进行拨号,VCP接收到第一个拨号号码后就会停止对POTS送拨号音信号。拨号模拟信号经SLIC输出给DTMF(双音多频处理器件),DTMF将其变成二进制的8421码并等数据有效后(Dva/DVb为高)送给VCP。

- MG1将所收集到的号码与从MGC下载的DigitMap做匹配比较,如果合法,则将所拨号码及匹配结果用Notify消息上报MGC;

- MGC向MG1返回Reply;

- MGC向MG1发送Add消息,在MG中创建一个context,并在context中加入用户A的termination和RTP termination,其中RTP 的Mode设置为ReceiveOnly,并设置语音压缩算法(如G.711);

- MG1向MGC返回Reply消息,其中携带分配的RTP资源,包括IP地址、采用的语音压缩算法(如G.711)和RTP 端口号等;

- MGC向MG2发送Add消息,在MG2中创建一个context,并在context中加入用户B的termination 和RTP termination,其中RTP的Mode设置为SendOnly,并设置语音压缩算法;

- MG2向MGC返回Reply消息,其中携带分配的RTP资源,包括IP地址、采用的语音压缩算法(如G.711)和RTP 端口号等;

- MGC向MG1发送Modify消息,在MG1中把用户A的RTP Mode设置为SendReceive;

- MG1向MGC返回Reply;

- MGC向MG2发送Modify消息,请求MG2给用户B送振铃音(al/ri);

- MG2的VCP控制SLIC产生铃流信号,该铃流信号通过SLIC的PT/PR输出到用户B的话机,使得话机产生振铃(Alerting),振铃节奏由VCP控制。

- MG2向MGC返回Reply;

- 用户B摘机(Offhook),SLIC输出给VCP终端信号,从而引起VCP中断。

- MG2检测到用户B的摘机,将此摘机事件通过Notify命令上报给MGC;

- MGC向MG2返回Reply;

- MGC向MG2发送Modify消息,在MG2中把用户B的RTP Mode设置为SendReceive;

- MG2向MGC返回Reply;

------------------- 此时用户A和用户B的RTP通话正式建立 -------------------

RTP(Real Time Protocol)连接建立成功后,模拟语音信号通过SLAC的转换为数字信号,形成TDM(Time Division Multiplex)流,TDM流经过DSP的处理变为IP包通过IP网络进行传输,接收端先通过DSP将IP包转化为TDM流,再通过SLAC转换为模拟信号。

------------------- 用户B先挂机结束通话 -------------------

- 用户B挂机(Onhook),SLIC输出给VCP终端信号,从而引起VCP中断。

- MG2检测到用户B的挂机,将此挂机事件通过Notify命令上报给MGC;

- MGC向MG2返回Reply;

- MGC向MG2发送Subtract消息,释放用户B和及其RTP连接;

- MG2向MGC返回Reply,释放资源,并向MGC上报呼叫的媒体流统计信息;

- MGC向MG1发送Modify命令,请求MG1给用户A放忙音(cg/bt)

- MG1向用户A放忙音(Busy Tone),VCP执行放忙音子程序,将存储器(Register)中忙音码经U接口回环给POTS,POTS的CODEC(编码解码器)将这些忙音PCM码进行处理后变成模拟信号RCV输出到SLIC的RCVN和RCVP差分输入端,再经SLIC的PT、PR输出给话机,使之发出忙音。

- MG1向MGC返回Reply;

- 用户A挂机(Onhook), SLIC输出给VCP终端信号,从而引起VCP中断。

- MG1检测到用户A的挂机(Onhook),将此挂机事件通过Notify命令上报给MGC;

- MGC向MG1返回Reply;

- MGC向MG1发送Subtract消息,释放用户A及其RTP连接;

- MG1向MGC返回Reply。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章