Browsed by
Tag: caller-id

SIP呼叫中的主叫号码

SIP呼叫中的主叫号码

传统电信网的各项规范往往经过了很多专家的讨论以及厂家的验证,因此显得比较严格和规范,例如传统的ISDN规范,定义都很明确。

而因特网的各项规范对比之下就显得很随意,往往是一个规范出来之前就考虑不周全,然后根据情况,又补充出一堆的规范。即使这样,仍然是显得有很多漏洞,或者说有很多不规范、不明确的地方,导致各厂家各说各的道理,给互联互通造成很大的困扰。

当然不是说传统电信规范没有漏洞或者定义含糊的地方,只是相比之下,因特网的规范实在是过于随意。

比如说SIP呼叫中的主叫号码。

在电信网规范中,与主叫相关的号码定义非常明确,主要就这么几个:主叫号码、原主叫号码以及显示号码。各号码的应用场景也非常明确,号码格式中的显示属性等也很明确。

在SIP规范中,与主叫相关的头域有这么几个:From, Contact, P-Asserted-Identity, P-Preferred-Identity, Remote-Party-ID等。这些定义要么没有明确规范好,要么就是多次一举,多半是RFC定义者遇到情况时,拍脑袋一想:算了,加个新的定义搞定吧。结果就让人很无语了。

From和Contact在标准的SIP code规范RFC3261中有明确定义,通常我们都认为From域中携带主叫号码,可惜规范并没有明确限定,因此有一些厂家往往在Contact域中携带主叫号码,而在From域中只携带地址信息。

而显然在实际应用中又遇到一些主叫号码显示的场景(估计主要是电信专家考虑3GPP网络的各项应用时,遇到了与传统主叫号码类业务的冲突),于是乎RFC3325规范就粉墨登场,一举增加了P-Asserted/Preferred-Identity两个头域,也是用来携带主叫号码信息。其中,P-Asserted-Identity主要在信任域的server之间、proxy之间、server与Proxy之间进行传递,而P-Preferred-Identity主要在UA与server/proxy之间传递。看,无聊不?折腾不?

而在正统的P-xxx-Identity头域出来前,民间的野路子显然也遇到了同样的主叫号码类业务的问题,于是乎定义了Remote-Party-ID,并基本参照了ISDN的一些定义,例如号码是否显示等属性,很多SIP厂商已经很high地支持了这个定义,比如说Asterisk。发现没?有了这个定义,还要P-xxx-Identity等定义干什么呢?但是不幸的是P-xxx-Identity已经是正式RFC规范,而Remote-Party-ID还停留在draft-xxx-04阶段(目前已经超时,不知道还会不会升级到正式RFC规范),因此SIP厂商不得不同时支持上述各个定义了。

我有没有提到:有些SIP设备在From/Contact等常见域中根本不携带号码,只在www/proxy-authorization中携带鉴权用户的号码,往往也就是作为主叫号码?

晕倒吧!