IAD动态IP地址的H248模块认证处理
2009-10-14钟少新
摘要:软交换中IAD分配地址一般是固定的,为了合理地使用不多的IP地址资源,使IP地址不产生浪费,并且为安全考虑,引入了IAD动态IP地址处理。
关键词:NGN;IAD;H248;动态IP
中图分类号:TN915文献标识码:A
文章编号:1674-1145(2009)26-0154-02
在中兴下一代网络NGN中,H248模块收到网关来的H248消息,调用接口GetNodeIdFromAddr如果成功说明是静态配置的,或者是动态已经认证成功的。此时MgId与IP地址已经绑定成功。如果失败,然后判断是否是需要动态IP认证的(根据IP地址判断是否是动态IP地址,可能需要数据提供接口,表明此IP是否需要认证),如果是则进行动态IP认证的处理,否则丢掉此H248非法包(数据库无法提供此接口,原因是IP地址所有的范围,提供不太现实,这样可能产生的直接问题是H248不能区分一个合法的H248包,可能将一个非法包进行认证的处理),如果是需要动态IP地址认证的,进行动态IP地址的认证的处理,期间获得其认证码,调用数据库的接口USE_PD_DevAuthorization获得其网关号与其所在的处理板(所在的处理板需要通知NIC,以后NIC的处理会发向真正的处理板),期间如果认证失败则认为注册或事务失败,H248可以给网关回某个错误值,例如505,同时置网关为不可用状态(或者认证通过!),可以发送LINKDOWN(一旦认证失败,需要将此网关的转发表清除,已存在的呼叫拆掉,同时需要给后台一个告警),由于无法提供判断此网关是否是动态、静态配置的,因此H248在调用GetNodeIdfromAddr时,即简单的认为需要认证(而不是舍弃),然后进入认证函数的处理,获得认证码,调用一个数据接口,得到MgId与处理板的板号!如果认证、处理板分属不同的板号且此事务中的Service Change注册认证命令后还有其他命令,例如Notify等,由认证板将此整个事务消息发送至真正的处理板。否则将此ServiceChange消息发送至CA模块,并接收CA进程来的REPLY消息。只要是动态IP地址来的包含有认证码就需要进行一次认证处理。在网关成功注册后,Softswitch可能需要主动进行一次(或周期性的)鉴权认证,认证的方式周期性要好些,可以防止IAD欺骗,方法可以是SS将认证码通过某种算法加密,通过H248的Package发送给IAD,IAD经过解密处理将认证码在其应答消息中带过来,然后进行认证处理,如果没有带过来或者带过来的信息不正确,则认为认证失败。可能需要IAD定期的进行认证(这一点在IAD的链路检测消息中添加即可),同样的Softswitch获得认证码后就进行一次数据的认证。
流程解析:
IAD向Softswitch注册内含认证码
MEGACO/1[168.1.14.28]:2944
Transaction = 37524
{
Context = -
{
ServiceChange = ROOT
{
Services
{
Method = Restart ,
Reason = 901 ,
Delay = 0 ,
Version = 1 ,
20020401T08463100 ,
ServiceChangeAddress = 2944 ,
Profile = AnalogLineProfile/1 ,
X-VENDER = ZTE ,
X-IDMETH = 1 ,
X-IDDATA = c03eecffffff460a08013e2233bfbe87b994ce96000128460000628fb99452e400015c5c00005c9db994317a00012d960000598db9948e88
}
}
}
}
Softswitch进行认证处理后回给IAD的应答 MEGACO/1 [168.1.98.160]:2944 Reply =37524
{Context = - {ServiceChange = ROOT { Services {87654321T12345678}}}}
Softswitch ---> IAD
Send the authentication Code to the IAD
Softswitch 将认证码按照某种算法加密后发送给IAD,等待IAD返回的认证码。
MEGACO/1 [202.202.202.202]:2944
Transaction = 10001 {
Context = - {
Modify = ROOT {
Signals {auth/authreq{key=4568976031148111}}
}
}
}
IAD to softswitch
IAD analysis the authentication key and return the result to softswitch
IAD收到此认证码后按照同样的解密算法解出认证码后带回给Softswitch
MEGACO/1 [202.202.202.112]:2944
Reply = 10001 {
Context = - {Modify = ROOT{signals{auth/authreq{key=010203040506}}}}
}
关于语法查证了一下好像是可以的,此消息可能需要定期发送,类似于链路测试消息,这样可以防止IAD欺骗。如此以来IAD的链路测试消息是否不必带认证码了?
H248 TTM的处理方式:先找到Service Change命令,ServiceChange前的命令可以丢弃,然后进行Service Change命令的认证,认证通过后获得处理板的模块号,如果处理板的模块号与认证板的相同,则将此Service Change命令发送至CA进程,如果有后续的命令同样处理,如果处理板的模块号与认证板的不同,则由TTM将此消息完整的发送给处理板由处理板进行此消息的处理,此情况下在认证板的事务可删除!
关于定期发送鉴权认证的消息,在TTM设立一个定时器( TTM清楚是否具有认证码),定时器超时后由TTM给CA发送EV_P_H248_AUTH_REQ消息,CA收到此消息后,发送AUTH/AUTHREQ给网关,内带一Key(SS、MG的Ip地址与一随机值进行的组合),MG回来的消息中将Key带回,可以只带回RAND值,然后SS判断带回的KEY是否是自己所期望的,如果不是所期望的对此网关进行LINKDWON的处理,并且更改网关的状态为退出服务!
参考文献
[1]中兴通讯股份有限公司.ZXMSG9000网关培训教材.
[2]中兴通讯股份有限公司.ZXSS10 A/B培训教材.
作者简介:钟少新(1971- ),供职于中国电信股份有限公司普宁分公司,研究方向:S1240和中兴软交换维护。