【NGN学习笔记】VoIP技术基础
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
1.VoIP的定义:在IP网上传送的具有一定服务质量的语音业务。
2.VoIP关键技术:
语音处理技术
- 在保证一定语音质量的前提下尽可能降低比特率(语音编码技术、静音检测和抑制技术)
- 在IP环境中保证一定的通话质量(分组丢失补偿、回波抵消、去抖动)
语音通信协议
- 呼叫控制协议
- 语音数据传送协议
- 实时控制协议
语音编解码技术:比特率、时延、复杂度和语音质量,G.723.1 及 G.729A 较好!
其他:QoS、安全、管理,……
3.VoIP协议结构
用户数据平面:Voice/RTP/UDP/IP
控制平面
- ITU-T:基于分组网的多媒体通信系统-H.323
- IETF:因特网多媒体会议结构-SIP
基于H.323的VoIP体系结构 vs 基于SIP 的VoIP体系结构
4.基于H.323的IP电话技术
1)系统结构:
一个伞状协议族,它规定了在基于分组的网络上进行多媒体通信的系统构成、协议和过程。
- 终端:提供双向多媒体通信能力的客户端点
- 网关:将异质网络或终端接入H.323网络
- 网守:对H.323端点(网关、网守、终端)以及呼叫控制过程提供管理能力
- 多点控制单元:对会议提供控制和媒体处理支持
注:域的概念——域是所有终端、网关和多点控制单元的集合,一个域至少包含一个终端,有且仅有一个GK(网守)来管理,与网络拓扑无关,也就是说可以是通过路由器或其它设备连接起来的多段组成。
2)协议结构:
呼叫控制通道:在端点与网守之间以及网守与网守之间传送H.245连接控制消息。主要功能是能力交换、打开/关闭逻辑通道、主从确定、流量控制、往返时延确定、环路维护、终端能力集协商、会议控制、结束会话等。
呼叫信令通道:在端点与网守之间以及网守与网守之间传送H.225.0 呼叫控制消息,完成呼叫的建立和拆除(与Q.931消息类似),H.225.0呼叫信令协议只提供呼叫控制功能,不提
供连接控制功能。
RAS信令通道:在端点与网守之间以及网守与网守之间传递H.225.0 RAS消息。RAS信令的功能网守发现、端点注册、端点定位、状态查询、资源指示、呼叫接纳、带宽管理、呼叫退出、端点注销。
3)网络结构:
H.323 VoIP典型网络实例
3)呼叫模型
直接信令:
网守路由:
4)呼叫通信过程
- 呼叫建立前操作(H.225.0 RAS):终端通过RAS信令进行GK发现,终端向GK注册和请求呼叫接纳。
其中网守发现有两种方式:
- 人工方式:通过端点配置完成
- 自动方式:通过网守发现过程完成,如下图:
而注册和请求呼叫接纳的过程则如下图:
- 阶段1:呼叫控制(H.225.0 Call Signaling)
图中给出的一个是最简单呼叫信令交互过程。Gateway之间是直接交互的,而没有通过Gatekeeper的中转。
整个呼叫信令的建立过程能够最简化成两步,即“Setup”和“Connect”。当然呼叫信令的释放直接用“Release Complete”即可。
图中给出的交互过程还有可选的步骤,如“Call Proceeding”、“Progress”和“Alerting”。这些步骤主要是用来避免超时错误和提供带内(in-band)广播等服务。
- 阶段2:能力交换及主从确定(H.245)
- 阶段3:AV信道的建立(H.245)
- 阶段4:稳定状态(RTP/RTCP,H.245):语音通信、带宽改变等
- 阶段5:呼叫释放
流程图:
1) T1向Gatekeeper发送认可请求ARQ(Admission Request)。
2) Gatekeeper确认T1的ARQ,向T1回送ACF。
3) T1发送“Setup”信息给T2。
4) T2向T1回送一个“Call Proceeding”响应,表明呼叫正在建立中。这个时候,如果T2已经向GateKeeper注册,则转6)。
5) T2到Gatekeeper处注册。
6) T2向T1发送“Alerting”信息,表明T2正在建立呼叫。
7、8) T2向T1发送“Connect”信息,表明已经成功地在T1和T2间建立了呼叫连接。
9)-16) 就是T1(T2)向T2(T1)发送某个请求,然后T2(T1)向T1(T2)确认相应的请求。
17)-20) 媒体传输过程。RTP用来提供端到端的实时运输功能,但并不保证服务质量,而配套的RTCP用来保证服务质量。
21)-25) 呼叫释放过程。T1和T2向对方发送H.245消息“End Session Command”来建议释放呼叫连接。 T2向T1发送H.225信令消息“Release Complete”来释放呼叫连接。 T1和T2各自从Gatekeeper上登出。
6)存在的问题:
- 复杂性问题:呼叫控制过程复杂,H.225、H.245和ASN.1编码方式复杂
- 兼容性问题:H.323 V1, V2, V3, V4…后向兼容性问题
- 扩展性问题:H.323不利于支持大量先进的系统特性,不利于大量有竞争性业务的引入
5.基于SIP的IP电话技术(具体参看本Blog另一篇文字:SIP泛泛学 )
1)基本概念:SIP: Session Initiation Protocol (IETF RFC3261),由IETF制定,为应用层信令协议,用于将用户加入多媒体会话。SIP是一种轻量级的通用信令协议,可建立、修改和终止IP网上的语音和多媒体会话。
2)与H.323系统的区别
- 信令协议不同:SIP基于文本,H.323基于ASN.1(抽象语法定义ASN.1是描述在网络上传输信息格式的标准方法。)
- 请求协商过程不同:SIP会话请求过程和媒体协商过程等是一起进行的,因此呼叫建立时间短,而在H.323中呼叫建立过程和进行媒体参数等协商的信令控制过程是分开进行的。
- 控制平面网络结构不同:H.323为对等结构;SIP为客户/服务器结构。H.323进行集中、层次式控制。尽管集中控制便于管理(如便于计费和带宽管理等),但是当用于控制大型会议电话时,H.323中执行会议控制功能的多点控制单元很可能成为瓶颈。而SIP类似于其他的Internet协议,设计上就为分布式的呼叫模型服务的,具有分布式的组播功能。
- 扩展思路不同:H.323为实现补充业务定义了专门的协议,如H.450.1、H.450.2和H.450.3等,而SIP只要充分利用已定义的头域,必要时对头域进行简单扩展就能很方便地支持补充业务或智能业务。
3)网络结构:略
附:代理和重定向服务器对比
4)SIP协议栈结构
5)SIP的基本功能
- 用户定位
- 用户可用性判定
- 用户能力协商
- 会话建立
- 会话管理
6)SIP基本呼叫控制过程
一般情况:
直接信令过程:
代理信令过程:
重定向信令过程:
7)SIP的优势
- 简单及可扩展性:轻量级,7种方法,44种头域。扩展功能通过增加新的方法和新的头域,为增值业务提供了一个框架。
- 可伸缩性好
- 支持终端移动性
- 传输层独立性
- 易于与Web应用结合
- SIP: Internet方式 ...
8)SIP逐渐取代H.323的优势
- 协议功能模组比较:SIP协议功能模组中用户代理等价于一个H.323的终端(或者分组交换网路侧的网关),SIP伺服器则等价于 H.323的网守。另外,SIP类似H.323中的RAS和Q.931协议,而 SDP则相当于H.254。在IETF的SIP体系结构中,媒体流的承载采用了 RTP协议,这是和H.323一样的。所以,H.323与IETF/的 SIP主要不同在于呼叫信令和控制是如何实现的。
- 基本呼叫的建立和拆除:H.323第二版的 呼叫建立是基于可的传输协议 —TCP协议,所以呼叫建立需要两个连接阶段:TCP连接建立和呼叫连接建立。在 H.323第三版中支持TCP和UDP,简化了呼叫建立过程。 SIP的呼叫建立类似H.323第三版的处理过程,使用 INVITE资讯包。呼叫拆除的过程与呼叫建立相反,主叫和被叫都能拆线, H.323协议采用RELEASE COMPLETE,SIP协议采用 BYE。
- 呼叫控制业务:SIP和H.323都支持呼叫保持、呼叫转移、呼叫前转、呼叫等待、电话会议和其他补充 业务。以呼叫保持为例:H.323定义了近点呼叫保持和远点呼叫保持两种保持业务的场景。网守仅仅透明地传送 SS-HOLD。而SIP实现同样的功能,只要向需要呼叫保持的一方发送一个更改了 SDP描述的INVITE命令即可。更改的 SDP描述段仅将媒体发送的目的地址变为空<0.0 .0.0>,而其他的内容不变。收到该用户的UA,让呼叫保持,直到有新的 INVITE到来为止。
- SIP的第三方控制:第 三方控制是指不参与会话的第三者具建立呼叫的能力,这个业务特征目前只有 SIP具有。H.323也在进行试图添加同样的业务功能的工作。第三方控制有很多应用场合,包括秘书为经理拨号、电话行销的自动拨号、参加者呼叫转移和呼 叫中心业务。第三方控制是 SIP值得很好利用的业务特征。由于 SIP的这一特性,ITU-T和IETF在实现PINT(IN和因特网互通)业务时都采用了 SIP协议。
- 能力交换: 能力交换就是彼此交流各自对媒体流的处理能力确定双方共有的能力,从而确保多媒体信号被双方接受。 H.323采用H.245协议进行能力交换。终端的所有能力都描述在一组Capability Descriptor结构中,它们的每个项是一SimultaneousCapabilities结构和一个Capability Decriptor Number。借这种结构,每个终端能力的精确资讯被表示在相关的紧缩结构中。
- 服务品质:服务品质包含很多不同方面的指标,一个和多媒体流相关的 QoS参数包括带宽、最大时延、时延抖动和包丢失率。另外,还有呼叫建立时延影响感觉的 QoS,它在很大程度上依赖于信令协议。呼叫时延也依赖所用的承载信令资讯的传输协议,尤其是在信令资讯丢失需要重传的时候。所以,对于媒体流,我们首先 考虑信令协议对 QoS的支持,然后再考察呼叫建立时延,因为呼叫建立时延受错误检测和错误纠正机制的影响。
- 媒体流的QoS支持:在 H.323中,网守提供一组丰富的控制和管理功能,包括地址翻译、接纳控制、带宽控制和地域管理。网守中还提供呼叫控制信令、呼叫签权、带宽管理和呼叫管 理等选择功能。 SIP其自身不支持管理和控制功能,而是依赖于别的协议。近年来,新的分级服务体系结构开始引人注目, H.323第三版能提供某些基于QoS协商参数(位流速、时延、抖动)的分级服务。在呼叫初始化时,终端可以申请担保的服务、受控服务和无指明服务中的一 种,SIP和H.323老版本均不支持类似的服务。
- 呼叫建立时延:H.323第一版在呼叫建立时延时很大,第二版进行了改进,第三版则更好。SIP在呼叫建 立时非常类似于H.323第三版,如果UDP呼叫建立失败,则H.323第三版要好于SIP。H.323第三版几乎同时建立一个UDP的连接和一个TCP 连接,它提供一个有效的机制,如果UDP连接成功则关闭TCP连接。否则,立刻启用TCP。SIP是顺序地操作UDP和TCP,如果UDP失败,则会增加 呼叫建立时延。
- 环路检测:为防止环路, H.323定义PathValue域来指出信令资讯在丢弃前可达到的最大数目。问题是定义一个适用的值很关键。此外网路变化后,这个值也要相应改。SIP 采用了via头字段,检查其内容,如果新端点已出现在via列表中,则表示有环路了。SIP的方法好于H.323。
- 互操作性:( 1)版本之间的互操作性包括:H.323的完整后向相容性使所有不同的H.323版本都能实现无缝集成。在SIP方面,新版本可能使某些旧功能不再被实现。( 2)与其他信令协议的互操作性:要支持传统的电信业务,VoIP信令协议必须支持ISDN和No.7信令Q.931介面用于User-Network介面 (UNI),ISUP用于Network-Network(NNI)。由于H.323的呼叫建立只是No.7信令/ISUP的一个子集,所以H.323只 能部分地转换No.7信令的资讯。H.32x系列定义了其他互操作协议,如H.320用于ISDN和B-ISDN,H.324用于GSTN。SIP协议目前的版本不提供No.7信令的翻译,但有不少Internet的协议草案在进行这方面的工作。随着软交换概念的提出和发展,SIP也受到了重视,SIP有可能作为软交换设备之间的信令协议,成为各种信令互操作的纽带。
- 实现的难易性:H.323信令资讯符合ASN.1PER的二进位编码,需要特殊的编解码器。SIP资讯是基于文本的,采用ISO10646以UTF-8编码。基于文本的编码很容易用Java,Tcl和Perl等语言来实现,调试方便。
附注:思考题
- VoIP用户平面和控制平面的协议结构分别是什么?
- H.323协议体系在VoIP中的作用是什么?图示并简述其控制机制。
- SIP协议体系在VoIP中的作用?其主要方法有哪些?图示并简述其呼叫控制模型。
- 比较SIP与H.323的异同点。
常见疑问:为什么看不到单独的H.245包
用Wireshark(Ethereal)对Net2Phone的VOIP通信抓包,为什么看不到单独的H.245包?
默认情况下,VOIP呼叫采用的是快速连接(Fast Connect)。在快速连接下,并不建立单独的H.245控制信道,所有的H.245包都以“隧道”的方式在H.225.0的呼叫信令信道中传输。事实上,在其它很多情况下,H.245包也是以“隧道”的方式在H.225.0的呼叫信令信道中传输。
因此,逐层展开抓到的H.225.0包,会发现其中有些包的“h245Tunneling”标志被置为“True”,这表明这些H.225.0包里传输了H.245信息。事实上,可以在这些包里找到“parallelH245control”域,这些域的内容就是H.245信息。