VOIP应用中被叫占线时主叫端听不到正常的忙音

发布时间:  2012-07-26 浏览次数:  96 下载次数:  0
问题描述
某局VOIP应用组网如下:Tel1(10882)++PBX1++AR2810++INTERNET++AR2809++PBX2++Tel2(37807)。数据配置完成后,从Tel1和Tel2之间互相呼叫没有问题,当Tel1占线时,Tel2呼叫Tel1能够正常听到忙音,但是,当Tel2占线时,Tel1呼叫Tel2,此时Tel1无法听到忙音,代之以呼叫超时报文。

告警信息


处理过程
1、从故障现象来看,Tel1和Tel2之间能够相互呼叫,说明有关于VOIP的基本配置没有问题,所以我们认为数据配置应该不会有问题。(后来事实证明这个判断是错误的,影响了我们的处理思路。)
2、分析AR2810和AR2809的debug voip的报文,发现AR2809侧给AR2810侧回复了忙音,但是AR2810并没有透传给主叫TEL1,而是继续向本地PBX1发起呼叫,直到PBX1回复超时报文(参考原因分析中的报文)。到此为止,我们能够判断出,问题出在主叫侧,即收到被叫侧的忙音后为何转而向本地的PBX1发起呼叫。
3、再返回来检查AR2810的配置,发现在pots实体配置中有如下配置:
  entity 1103 pots
        cancel-truncate
        match-template 3....
        line 0:15
到此真相大白,AR2810在匹配VOIP实体不通的情况下,根据其备份原则,转而匹配POTS实体,而PBX1并没有以以“3”开头的号码,导致呼叫超时。
4、删除“entity 1103 pots”的相关配置后,再次进行呼叫测试,当Tel2占线时,Tel1呼叫Tel2,此时Tel1能够听到正常的忙音了。

根因
这里涉及到AR路由器VOIP业务的备份功能:
通过将VoIP语音实体和POTS语音实体配置为相同的被叫号码,可以实现PSTN备份IP选路:对于某被叫号码,当VoIP语音实体定义的对端语音网关不可达(网络层不通)时,则根据相同被叫号码寻找POTS 语音实体进行匹配。而我们的路由器在实现中,被叫占线也被理解成网关不可达来进行处理。在本例中,我们从Tel1侧的AR2810的配置中,发现了如下配置:
 entity 387 voip
        address ip 192.168.200.74
        fast-connect
        match-template 387..
  entity 1103 pots
        cancel-truncate
        match-template 3....
        line 0:15
line0:15是AR2810和本地PBX1接口的E1VI接口,两者之间运行ISDN。从配置来看,无论是VOIP实体还是POTS实体都能匹配到Tel2(38707),这就无意中启用了VOIP呼叫备份功能。当Tel2占线时,此时Tel1去呼叫Tel2呼叫不通,根据呼叫备份原则,AR2810进而去匹配本地POTS实体,将该呼叫回送给了PBX1,但是本地PBX1是没有以“3”开头的电话,于是PBX1回了一个呼叫超时消息给AR2810,AR2810又将此原因值透传给了主叫侧的Tel1,所以从主叫侧来看,是得到了呼叫超时报文,而不是忙音。从AR2810上debug voip也能看到该过程,具体报文如下:
1、PBX1给AR2810回应了一个挂断信息:
 Serial0:15 
    RX<-     DL_Data_Ind         DISCONNECT          wCES=1
             CRLength=02         CallRef=0x8d1e      
             Cause=0x08 02 81 d8 
2、AR2810就给主叫Tel1转发了该挂断消息:
 
 Serial0:15 
    TX->     DL_Data_Req         DISCONNECT          wCES=1
             CRLength=02         CallRef=0xd688      
             Cause=0x08 02 81 d8 
这就进一步验证了我们的判断。

END