- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
VoIP信令协议SIP和H.323的比较
摘要 VoIP系统凭借其低廉的话费和较好的语音质量,已经成为重要的电信业务,并有取代传统长途业务的趋势。许多组织研究并制定了IP网络上呼叫的协议标准,但有两种IP电话信令和控制标准最具有影响力。一种是ITU推荐的H.323协议,另一种是IETF的SIP。这两种协议代表了解决同一问题的两种不同的方法:H.323是信令基于ISDN Q.931和早期推荐的H系列协议的传统的电路交换的方法,而SIP是一种支持基于HTTP的IP网络的超轻量协议标准。本文,我们主要针对SIP和H.323的体系结构,可靠性,复杂性,可扩展性,可伸缩性以及支持业务类型方面进行比较。
为了提供有用的服务,因特网技术需要完成一系列建立连接,交换能力,会议控制的控制协议。现在,有两种协议可以完全满足这种需求。一种是ITU-T的H.323协议,另一种是IETF的会话初始化协议(SIP,Session Initiation Protocol)。
H.323系列协议是20世纪90年代中期ITU-T提出的(信息包基于多媒体通信系统的)协议。它详细说明了一系列在Internet上进行多媒体通信的协议和流程。H.323协议包括控制协议H.245,建立连接协议H.225.0,大型会议协议H.332,增值服务协议H.450.1,H.450.2和H.450.3,安全协议H.235,和用于和电路交换业务互通的H.246协议。H.323起初时是作为应用于LAN多媒体通信的且无质量服务保障的一组协议出现的,但现在已经得到发展以满足因特网技术更加复杂的需求。
H.323的提出是基于ITU在H.323出现以前提出的一些多媒体协议的,这些协议包括ISDN的H.320协议,B-ISDN的H.321协议,以及GSTN终端的H.324协议。而且H.323的编解码机制,协议域和基本操作也相当于是ISDN Q.931信令协议简化版本。
SIP是由IETF的MMUSIC(Multiparty Multimedia Session Control)工作组研发的,通过重新使用了很多HTTP的头域,编解码技术,误码和鉴权机制而形成了因特网信令技术的另一种协议。
这两种协议,多媒体数据传输都是基于RTP协议的,所以选择哪种协议都不会影响因特网技术的QoS。
1、体系结构
H.323是ITU多媒体通信系列标准H.32x的一部分,它涉及到终端设备、视频、音频和数据传输、通信控制、网络接口方面的内容,还包括了组成多点会议的多点控制单元(MCU)、多点控制器(MC)、多点处理器(MP)、网关以及网守等设备。H.323系统体现了一种集中式、层次式的控制模式。企图把IP电话当作是众所周知的传统电话,只是传输方式由电路交换变成了分组交换。
而SIP协议侧重于将IP电话作为因特网上的一个应用,只是较其它应用(如FTP,E-mail等)增加了信令和QoS的要求。SIP采用"客户机-服务器"体系结构的消息机制,对呼叫的控制是将控制信息封装到消息的头域中,通过消息的传递来实现。因此SIP系统的终端就需要比较智能化,它不只提供数据,还提供呼叫控制信息。SIP系统体现的是一种分布式的控制模式。
H.323的集中式控制模式便于管理,像计费管理、带宽管理、呼叫管理等在集中控制下实现起来比较方便,其局限性是易造成瓶颈。而SIP的分布模式则不易造成瓶颈,但各项管理功能实现起来比较复杂。
2、可靠性
H.323提供了很多机制来处理中间网络设备故障问题,有效提高多媒体通信系统的可靠性。如H.323提供备用网守机制以防网守失效,H.323有呼叫失败时向目的设备重新发送呼叫的机制。SIP则不具备处理中间网络设备故障的能力。当一个SIP用户代理出现故障,SIP代理服务器将无法检测到其故障的发生。代理服务器出现故障,用户代理也同样无法检测到。因此SIP不能在呼叫发送过程中将发送失败呼叫进行恢复。
3、复杂性
VoIP协议演变的结果是比以前更加有效。协议的简单性越来越被大家所接受。在这一方面,SIP明显要比H.323进步,主要是因为SIP做了很多简化,信令翻译之后也更可靠,相对H.323而言,更加简单的SIP协议呼叫建立时间更短,这也是一些大型视频语音业务应用的首要条件。
3.1 协议规范的比较
H.323是一个相当复杂的协议体系。仅仅基本的规范(不包括ASN.1(抽象语法表示法)和PER(压缩编码规则))就已经有736页。而RFC 3261中规定的SIP协议包括呼叫控制扩展部分和会话描述协议(SDP)部分一共只有276页。H.323定义了数百个基本元素,而SIP只有37个信头(32个是基本规范头部,5个是呼叫控制扩展头部),每个头部都含有少量的变量和参数,但包含大量的信息。SIP可以由很少的4个信头(To,From,Call-ID,和Cseq)和3个请求消息类型(INVITE,ACK,和BYE)组成,这对于编程工作量是非常少的,一个具有图形界面的功能齐全的SIP客户机代理,用两个月的人工工作时间就能实现。
H.323协议的另一个复杂性表现在它复制了其它协议中存在的一些功能。H.323中使用了RTP和RTCP协议,RTCP协议中提供了在一种方式下实现不同反馈和多方会议控制的功能,从而可以实现从双人会议到上千人的广播会议。但是,H.245协议自身也同样提供了反馈和简单的会议控制功能(例如可获得会议参加者的列表),这部分H.245功能是多余的,它仅适用于小型到中型的会议控制。
3.2 呼叫消息建立比较
H.323建立一次呼叫一般需要好几个协议相互作用才能完成,太多的协议的使用不仅使呼叫建立过程中要包含很多的消息交互,而且使得防火墙变得很复杂。在假定主叫知道被叫地址的情况下,不深入考虑消息细节情况,也要完成16次消息交互才能建立会话。虽然在H.323V2中提出了快速启动方法,只需3条基本信息就能完成会话建立,但这种方法要靠传输层的可靠性作为保证,这样就会增加传输层的信息交互,而且只适用于相对封闭的系统中,系统中的参与者比较熟悉的情况下。快速启动减少了好几个用于终端获取呼叫的详细参数和以前分配通信端口的消息,这样还会限制多点呼叫的能力。而SIP只用一条请求消息就能包含所有必要的信息,呼叫建立一共需要4个基本信息。H.323在网络传输时还会产生很多不必要的多余信息,这也是造成H.323性能的一个原因。
3.3 消息表示比较
H.323采用基于ASN.1和压缩编码规则的二进制方法表示其消息,因而需要特殊的代码生成器来进行词法和语法分析。SIP是一种类似HTTP和实时媒体流协议(RTSP)的将它的消息编码成简单的文本格式的协议,以文本方式表示消息,只需要相对简单的生成器和词法语法分析器,尤其是可采用具有强大的文本处理功能的语言,如java,Perl等语言。因此SIP在编解码和压缩编码以及生成代码方面都要比H.323简单,这也使得SIP对CPU的要求要低,这样CPU就会更高效,更自由地分配资源来处理会话事务。
3.4 编译器比较
SIP的文本编码类似于HTML,使得编译也变得简单,允许手动进入细读消息。而且不需要不断对编译工具进行升级。类似于HTTP允许编码复用,现在的HTTP解析器能稍做修正就可用于SIP。而H.323由于使用ASN.1,ASN.1对用户来讲很难直接进行阅读,需要特殊的生成器来进行语法和词法分析。并且生成器要随着标准的不断变化而更新。
4、可扩展性
可扩展性是衡量VoIP信令协议的关键指标。虽然现在已有的VoIP系统已经提供了大量的业务类型,但随着时间和新应用的发展需要提供更多的功能,这就使得不同版本之间的兼容性变成一个复杂的问题。这一点就要求协议体系从一开始就要包含强大的扩充机制。SIP在研究制订中从HTTP和SMTP中吸取了教训,建立了一套丰富的扩展与兼容功能。SIP允许不同应用实现对协议的扩展,并提供应用系统间版本的协调。另外,为了加强可扩充性,SIP采用了层次式的数字差错代码,共定义了6类基本响应,每一个响应代码均用百位数表示,百位指示类型,对同一类的响应代码所做的协议处理是类似甚至相同的,所以终端通常只需理解响应代码的类别,后两位提供了附加的信息,有用但不是非常重要。相当于为增加新的错误描述的需要而增加错误码,但又不影响对各类应答码的处理,这样也增强了协议的兼容性。
H.323同样提供了可扩展机制。一般那些非标准参数域处在ASN.1中各个位置。这些参数中包含着厂商编码,在厂商编码后面是一个只对它有意义的模糊值。这样就允许不同的厂商改进他们的扩展性。但是他还是有一定的限制。首先,利用添加非标准参数来扩展功能受到限制。如果一个厂商想要对一些存在的参数添加一个新值,如果没有为非标准参数提供占位符,那么就不能完成添加。第二,H.323没有支持终端彼此交换对方所支持的扩展信息的机制。由于非标准参数值不是自我描述,这就限制了不同制造商终端的可交互性。
另外,H.323需要完整的后向兼容能力。随着各种功能的不断发展,编码也随之增加。但SIP允许旧的信头和功能当不再需要时被删除,以保证协议和编码的简洁性和精确性。
4.1 功能可扩展性
使用SIP,可以通过扩展或定义新的SIP信头信息来扩展新的功能。现在,SIP RFC定义了默认头部和一些扩展,可以加入新的扩展作为RFC的一个独立部分。文本编码意味着头部域是自我描述的。作为新的头部域添加到各种不同的应用中,其他的开发商也可以从类型来确定新头部域的功能,并且增加对新头部域的支持功能。
H.323通过定义非标准参数结构来扩展厂商的特有功能。如果对除非标准参数外的已存在的功能和控制信息进行的改变,那就需要发行相应的新的协议规范。另外,新的功能要通过新的通用的H.450.1功能协议来实现。
4.2 音频和视频编解码器的可扩展性
音频和视频编解码器的可扩展性是一个关于扩展性的重要的问题。现在已经开发了成百上千的编解码器,但很多都是专利。SIP使用(SDP)会话描述协议来实现支持这种协议的终端来传送编解码器。编解码器通过字符串名标识,任何人或组织都可以通过IANA注册这些字符串名,然后使用。这就是说SIP能支持任何编解码器,其它应用能决定编解码器类型和联系IANA的编解码器的相关信息。但H.323每个编解码器都要集中注册并标准化。现在,只有ITU开发的编解码器有代码点。由于很多都带有智能性,所以都不是免费的。这就成为小规模的需求者不能使用这些编解码器的主要屏障。
4.3 模块性
VoIP需要大量不同的功能包括基本信令,会议控制,服务质量,目录存取,服务目录等。可以确定的是这些功能机制随着时间推移会逐步实现(特别是QoS方面)。这使得非常必要将这些功能机制分配到单独的模块化的正交的能被交换的组件中去。这些功能使用单独的,通用的协议也变得关键。这就允许这些功能能被轻松的复制用于其它应用。例如一种能独立应用的QoS机制会非常高效,这比对于每个应用都要开发一种相应的QoS协议高效的多。
SIP模块化程度已经很高。它包括基本呼叫信令,用户位置和注册。高级信令是SIP的一部分,但是独立扩展的。质量服务,目录存取,服务目录,会议内容描述和会议控制都是正交的,并且使用各自的协议。例如不对H.245的能力描述部分进行修改就能直接应用到SIP协议。
H.323的模块化程度不高。它为一个应用定义了垂直的完整的协议系列。H.323组件提供混合业务,包括交换能力,会议控制,维护操作,基本信令,质量服务,注册和服务目录。进一步说,这些是H.323子协议相互组合完成的。
SIP的模块使它能和H.323进行对接。一个用户可以使用SIP的强大的多跳寻找功能去定位另一个用户,可以使用对H.323URL的重定位响应,来指示和H.323发生实际的通信。
4.4 三方呼叫控制机制
SIP通过一些强大的三方呼叫控制机制来定义新业务。这些机制允许第三方指示另一个实体建立或拆掉和其他实体的连接。当被控制方执行了指示,状态信息就会返回给控制方。这就允许控制方根据本地程序执行情况来做出进一步的反应。这就像传统技术中的智能网模型。由于最近又定义了很多技术服务,所以试图对每个都进行详细的说明是不现实的。SIP允许这些服务基于简单的标准的机制进行展开。这些机制能被用来提供各种各样的服务,包括任意转移,辅助操作转移,三方通话,桥接呼叫,拨号弥合,单、多播向多播转换,自组织网桥邀请和转换,和各种转发变动。
作为这些扩展性和业务创新机制的代表,IETF的PSTN和因特网工作组正在定义一种简单的用于点击一来电业务的SIP扩展协议。在这种业务下,一个用户在网页上点击一个按钮,这样一个PSTN实体就连接到用户电话为用户服务。这样需要一个在网页服务器和PSTN设备间的控制协议。SIP就是这种协议。
H.323根据这个要求提供了一些基本的机制。设备信息允许被叫者指示呼叫者与另一方建立呼叫。另一个是H.245通信模式信令,它允许控制方为了会议和参加会议的各方对媒体流编码进行改变。前者是在范围上受到合理的限制,后者是只能由呼叫的控制方来执行。两种方法都能为建立复杂业务提供通用的第三方控制机制。
5、可伸缩性
可伸缩性对于因特网的使用和业务的扩展是非常重要的。
5.1 管理大范围区域的能力
H.323最开始是被用作局域网的。像广域寻址和用户定位等很多问题都没有考虑。最新的版本定义了域的概念,还定义了各个域用户不同的电子邮件名称。但是,对于大量的域和复杂的位置操作,H.323还是具有可伸缩性问题。它没有提供在复杂的多重域中进行循环发现搜索的简单方法(只能够通过静态存储信息进行搜索,但不具有可缩放性)。但是,SIP可以执行和BGP中类似的循环发现算法进行搜索。这就避免的可伸缩性问题。SIP的注册和重定向服务器支持用户定位功能。
SIP和H.323的可伸缩性是靠SIP服务器或关守来负担,传输层能对等地进行通信,它们都能适应各种拓扑结构,都可以使用易于全球化的DNS,目录索引,内部翻译数据库,或其它的定位和翻译机制。
5.2 服务器处理大量呼叫的能力
在H.323系统中,技术网关和关守都需要处理大量的用户呼叫。类似的,SIP服务器和网关也需要处理大量呼叫。从大的方面讲,需要一个大型服务器来处理大量的呼叫对于骨干IP网技术供应商来说变得尤为重要。
在SIP中,一个通过几个服务器和网关的事务可以是有状态的也可以是无状态的。在无状态模型中,一个服务器接受到呼叫请求,执行一些操作,转发请求信息,然后完全释放掉。SIP信息包含大量的状态信息来进行反馈并直接转发。进一步说,SIP既可以基于TCP传输也可基于UDP传输。如果是基于UDP的,就不需要连接状态。这就是说大的骨干服务器可以基于UDP并且进行无状态方式操作,明显减少了存储需求和改进了伸缩性。
H.323系统中,需要有状态的关守(当处于循环呼叫状态时)。关守必需保持整个呼叫持续中的呼叫状态。而且连接是基于TCP的,意味着关守必需保持整个呼叫期间它的TCP连接。这样会引起大型关守严重的伸缩性问题。
此外,网关或关守需要处理每次呼叫的信令信息。信令越简单,处理的越快,就能支持更多的呼叫。由于SIP处理比H.323简单,所以SIP可以比H.323每秒处理更多的呼叫。
5.3 会议规模,会议控制
需要中心控制单元的会议会影响会议的规模,而分布式的会议很容易建立大型会议或多方会议。
H.323可以进行多点数据传送以支持多方会议。然而,每一个小型会议都需要一个中心控制点(称作MC)来处理所有的信令。这就存在几个问题。第一,如果提供MC功能用户离开会议和退出应用,整个会议结束。另外,由于MC和关守功能是可选的,有时H.323不一定能支持同一事件中的三方会议。因此,MC是大型会议的一个瓶颈。为了减轻这个问题,H.323V2已经定义了级联MC的概念。这多少改进了一些伸缩性,但对于每个大型会议,H.323协议定义了另外的程序。这就是说存在3个不同机制来支持不同类型的会议。然而SIP对所有不同类型的会议都是同一尺度,不需要中心MC,会议是全分布式的。这就改进了伸缩性和复杂性。SIP使用TCP一样使用UDP,SIP支持本地多播信令,允许一个协议能对应两个至几百万个人的不同规模的会议。
5.4 反馈
H.245定义了允许接受者能够控制媒体编码、传输速率和错误修正的程序。这种反馈对于点对点有效果,但对多点会议就不起作用了。而SIP,依靠RTCP协议提供接收质量反馈(也是为了获得组成员列表)。像SIP一样,RTCP也是完全分布型操作。反馈为两个人的点对点的会议到几百万人的大型的广播型会议提供全自动的比例尺度。
6、业务
H.323和SIP支持的呼叫控制功能和业务基本相同,都支持遇忙转移、话务员辅助转移、多播会议、桥接会议等。
6.1 终端能力
H.323终端提供丰富的能力描述功能,可通过信息参数表明自己具备的媒体编码能力,相比之下,SIP终端只具备基本的接收能力,但这也意味着SIP的效率会更高一些。
6.2 对QoS的支持
H.323的关守能提供丰富的会议控制和管理功能,包括呼叫接纳、地址翻译、带宽控制等,其任选功能还有呼叫授权、带宽管理等。而SIP则不能提供这些管理功能,必须使用其它协议。
6.3 时间延迟
在呼叫建立时延上H.323的呼叫信令信道和H.245控制信道需要可靠的传输协议(TCP),常规呼叫建立就需要6~7个往返时延,包括H.225呼叫控制和H.245 TCP连接建立,若采用快速呼叫建立(不支持媒体能力交换)也需3~4个往返时延,而SIP独立于低层协议,一般使用UDP等无连接的协议,采用自己的应用层可靠性机制来保证信令的可传输,因此,SIP呼叫建立只需2~3个往返时延。
6.4 账单和结算
我们希望能将分布式账单模型应用到H.323和SIP这两个协议。
H.323:账单和结算没有在协议中详细定义,但这个机制会由业务提供商来提供。关守可以保存日志和呼叫详细记录。关守也可以将账单和结算的副本详细信息传递给网关来完成结算业务。H.323v4增加了从网关向关守提供账单信息以协助产生呼叫详细记录的功能。
SIP:SIP是否要有账单功能是要看业务提供者是否要对他们提供的SIP业务,对PSTN提供的网关业务或媒体流传输业务进行收费来决定的。SIP服务器可以基于服务器日志进行结算,也可通过AAA(鉴权,授权,结算)进行实时结算。对于网关业务,网关可以产生呼叫详细记录。当呼叫有QoS机制时,QoS机制应该保证结算机制。实际上,结算记录可以通过AAA协议或日志文件来产生。DCS工作组也起草了在SIP代理服务器之间能进行账单信息传递的账单扩展功能方案。
6.5 能力交换
能力交换就是彼此交流各自对媒体流的处理能力,确定双方共有的能力,从而确保多媒体信号被双方接受。H.323采用H.245协议进行能力交换。终端的所有能力都描述在一组Capability Descriptor结构中,它们的每个项是一个Simultaneous Capabilities结构和一个Capability Descriptor Number。借助这种结构,每个终端能力的精确信息被表示在相关的紧缩结构中。SIP使用SDP来进行能力交换,主叫方使用一个OPIN-ION需求去找出被叫,SIP不如H.245的协商能力完整灵活,因为受制于SDP的表达方式,例如SIP不支持不对称能力交换(只收或只发)以及声频和视频编码的并发能力。
6.6 对用户移动的支持
SIP对个人移动业务提供了很好的支持。对主叫发出的请求,被叫可以重定向到多个点位,这些点位可是任意一个URL,并且电话类型(移动、固定),应用类型(商用、家用)和被叫优先级列表等附加信息将被传回主叫方,这使得主叫方可以灵活地选择与哪一个点位通话。对于非交互式的终端,初始的呼叫建立信令可携带主叫所希望建立连接的终端参数,这样中间代理服务器就可以基于这些参数前传信令,提高效率。SIP同时支持多跳搜索用户。当被叫IP地址与本地服务器不在一个网段,服务器将作为代理将呼叫请求发给别的服务器,同样地,这些服务器将逐级代理这个请求,直至最终找到目的服务器。一个服务器可以同时将代理请求发给多个服务器,加快了定位被叫方的速度。
H.323对于用户移动性的支持较为有限。信令信息也可以被重定向到其它IP地址上,但由于H.323开始设计时对广域网考虑不足,它的信令不包含主叫对被叫的参数选择,尽管它也支持信令在多个服务器之间的前传,但不提供环路检测,而且H.323关守也不允许将代理请求发给多个服务器。
6.7 安全业务用户鉴权和数据加密
鉴权和安全机制是H.323的可选项。如果要提供这些机制就需要H.235协议。RTP支持加密,可用来进行媒体流传输。在管理层之间,要进行鉴权,数据完整性和加密,就要应用IETF的IPSec加密机制。
SIP可以对信令信息进行加密和鉴权。基于RTP的媒体流传输也支持加密。在内部网络间也可使用IPSec加密机制。DSC工作组已经制定了一个合法的SIP监听方案。但IETF对这个方案强烈反对,但ITU可能会制定这方面的规范。
7、结论
H.323沿用的是传统的电话信令模式,其最大优势在于比较成熟,已经出现了不少H.323产品。H.323符合通信领域传统的设计思想,进行集中、层次式控制,便于计费和与传统的电话网相连。SIP协议借鉴了互联网的标准和协议的设计思想,在风格上遵循简练、开放、兼容和可扩展的原则,在扩展性,可伸缩性和复杂性方面都有一些优势,但在功能管理和可靠性方面相比,H.323又比较完善。所以总体来说,SIP和H.323是两个各有侧重、相对完整、目标相同的协议体系,它们本身并没有绝对的先进性,只有相对的先进和相对的适合,因此,有理由相信正处于发展过程中的这两个协议会吸取彼此的优点,克服本身的缺点,发展得越来越好。