织梦CMS - 轻松建站从此开始!

罗索

关于VOIP相关问题的总结

jackyhwei 发布于 2010-10-30 12:39 点击:次 
VOIP电话原理结构及关键技术:信令技术保证电话呼叫的顺利实现和话音质量,目前被广泛接受的VoIP控制信令体系包括ITUT的H.323系列和IETF的会话初始化协议SIP。
TAG:

接触SIP协议和一些开源的东西有十多天了,对一些从网上搜的知识做一个总结和整理,其实是桌面太乱了,呵呵。。。

(1)   SIP和H.323

这其实是做电话的新手必须认真思考的问题,光知道那个你要用的协议是不够的,必须知道和它相关的其他知识,下面框框中的解释来自于《VOIP电话原理结构及关键技术》文档中:

信令技术保证电话呼叫的顺利实现和话音质量,目前被广泛接受的VoIP控制信令体系包括ITUT的H.323系列和IETF的会话初始化协议SIP。

ITU的H.323系列建议定义了在无业务质量保证的因特网或其它分组网络上多媒体通信的协议及其规程。H.323标准是局域网、广域网、INTRANET和Internet上的多媒体提供技术基础保障。H.323是ITU-T有关多媒体通信的一个协议集,包括用于ISDN的H.320,用于B-ISDN的H.321和用于PSTN终端的H.324等建议。其编码机制,协议范围和基本操作类似于ISDN的Q.931信令协议的简化版本,并采用了比较传统的电路交换的方法。H.323提供设备之间、高层应用之间和提供商之间的互操作性。它不依赖于网络结构,独立于操作系统和硬件平台,支持多点功能、组播和带宽管理。H.323具备相当的灵活性,支持包含不同功能的节点之间的会议和不同网络之间的会议。H.323建议的多媒体会议系统中的信息流包括音频、视频、数据和控制信息。信息流采用H.225.0建议方式来打包和传送。H.323呼叫建立过程涉及到三种信令:RAS信令(R=注册:Registration、A=许可:Admission和S=状态:Status),H.225.0呼叫信令和H.245控制信令。其中RAS信令用来完成终端与网守之间的登记注册、授权许可、带宽改变、状态和脱离解除等过程;H.225.0呼叫信令用来建立两个终端之间的连接,这个信令使用Q.931消息来控制呼叫的建立和拆除,当系统中没有网守时,呼叫信令信道在呼叫涉及的两个终端之间打开;当系统中包括一个网守时,由网守决定在终端与网守之间或是在两个终端之间开辟呼叫信令信道;H.245控制信令用来传送终端到终端的控制消息,包括主从判别、能力交换、打开和关闭逻辑信道、模式参数请求、流控消息和通用命令与指令等。H.245控制信令信道建立于两个终端之间,或是一个终端与一个网守之间。


虽然H.323提供了窄带多媒体通信所需要的所有子协议,但H.323的控制协议非常复杂。此外,H.323不支持多点发送(Multicast)协议,只能采用多点控制单元(MCU)构成多点会议,因而同时只能支持有限的多点用户。H.323也不支持呼叫转移,且建立呼叫的时间比较长。

与H.323相反,SIP是一种比较简单的会话初始化协议。它不像H.323那样提供所有的通信协议,而是只提供会话或呼叫的建立与控制功能。SIP可以应用于多媒体会议、远程教学及Internet电话等领域。SIP既支持单点发送(Unicast)也支持多点发送,会话参加者和媒体种类可以随时加入一个已存在的会议。SIP可以用来呼叫人或机器设备,如呼叫一个媒体存储设备记录一个会议,或呼叫一个点播电视服务器向会议播放视频信号。SIP是一种应用层协议,可以用UDP或TCP作为其传输协议。与H.323不同的是:SIP是一种基于文本的协议,用SIP规则资源定位语言描述(SIP Uniform. Resource Locators),这样易于实现和调试,更重要的是灵活性和扩展性好。由于SIP仅作于初始化呼叫,而不是传输媒体数据,因而造成的附加传输代价也不大。SIP的URLL甚至可以嵌入到web页或其它超文本链路中,用户只需用鼠标一点即可发出一个呼叫。与H.323相比,SIP还有建立呼叫快,支持传送电话号码的特点。

另外关于开源的Asterisk和linphone见下篇理解。

(1)sip&H.323
(2)   Asterisk
刚开始理解Asterisk和linphone的时候,只简单地将Asterisk当作服务器软件、将linphone作为一个用户终端,就像我们使用QQ的时候,我得先申请一个号,向谁申请?就向腾讯服务器发出申请以及注册信息,完成了之后,我有拥有这个号的权利,然后我在用户端可以放肆地使用,但是在这个过程中我离不开腾讯服务器端的服务。。。
所以在我的理解中,Asterisk就相当于腾讯的服务器,linphone相当于我们人人都用的QQ聊天工具。。应该是人人都用吧,至少是使用网络聊天工具的人必备的启蒙的软件。。。
但是这只是我最初的理解,这么多天下来我对ASTERISK的使用也仅限于注册,因为我做过实验:
A-WINDOWS下的linphone,B-fedora下的linphone,C-redhat下的ASTERISK。我要使A和B通话,若是没开C的话,A和B均会有显示无法注册的错误,若是将三者都开启,注册成功后通话顺利,然后将C关闭,此时再让AB双方互call,均没有问题。那就说明了我的C只是承担了注册信息的功能至此。但是只能维持此次通话,如果断了后再想call的话就会显示没注册之类的信息。
老大和我说Asterisk我们不需要研究很多,只要会用就行,我们的主题是做终端的。。。
后来在网上找到本书叫做《Asterisk,电话未来之路》,貌似业界的人都知道,评价很高,也据说是唯一本对Asterisk有启蒙和指导作用的书。
下面这段话也是来自网上:
 
Asterisk是一个开源的PBX架构;但它并不是一个成品。通常情况下,由于企业应用的多样性,很难有一个成型的PBX产品可以满足企业的各种需求。传统的PBX成品,要么功能和灵活性不足,要么配置和维护复杂;而且都具有一个致命的缺点,那就是开放性、可扩展性。
 
Asterisk具有传统PBX无法比拟的优点,那就是其灵活性,可扩展能力;Asterisk的扩展能力是通过开放相应的架构和接口来实现的。这就意味着Asterisk是一个组件而不是一个成型的产品,Asterisk的核心提供了一个基本的可运行环境,而外围相应的能力则可以通过加载和配置相关的插件和模块来实现。
 
Asterisk是一个开源的PBX架构;但它并不是一个成品。Asterisk的扩展能力是通过开放相应的架构和接口来实现的。这就意味着Asterisk是一个组件而不是一个成型的产品,Asterisk的核心提供了一个基本的可运行环境,而外围相应的能力则可以通过加载和配置相关的插件和模块来实现。
 
因此,使用Asterisk,一定会面临二次开发问题,这些二次开发主要围绕以下几个方面:
(1)内部核心模块
①开发扩展编解码能力模块
②开发扩展相应的通道模块
(2)外围动态可加载模块
①开发应用部分
②开发外围管理部分
一般来说,Asterisk使用者很少需要去开发编解码能力模块和通道模块等内部核心模块;而需要开发最多的情况则是外围动态可加载模块,即外围管理部分和应用开发。

 
。。。。。。
其实光看那本电话未来之路就知道了,有N多人在为这个东西贡献着自己的力量和青春,为的就是强大的电话改革,可是要普及谈何容易啊。。。
 
(3)   Linphone
Linphone是比较流行的软电话终端,网上有人对几款比较不错的主流open source UA做过比较,现摘如下:
 

使用oSIP协议栈的LinPhone
Linphoneis a web phone: it let us phone to our friends anywhere in the whole world, freely, simply by using the internet. The cost of the phone call is the cost that you spend connected to the internet.
 
使用vocal协议栈的SipSet
SIPSet is a SIP User Agent with a GUI front end that works with the Vovida SIP stack. You can use the SIPSet as a soft phone, to make and receives phone calls from your Linux PC.
 
使用芬兰wirlab的Kphone
KPhone is a SIP (Session Initiation Protocol) user agent for Linux, with which you can initiate VoIP (Voice over IP) connections over the Internet. It supports Presence and Instant Messaging, and to some extent also video calls between two hosts.
 
测试结果显示:
UA测试结果
名称
Instance Message
Voice
版本更新
LinPhone
Y
Y
Y
Kphone
Y
Y
Y
SIPSet
N
Y
No
 
Linphone以及Kphone支持的功能较全,同时界面较友好;
Linphone的稳定性不够,基本不能work
SIPSet对于文本消息功能不支持,但是他基于VocalSIP协议栈,使用的人最多,可扩展性较好,但是目前已经没有更新;
Kphone综合比较性能最优,但是只是有UAopen source,同时对于instance message的发好像有些bug
 
推荐使用:Kphone(如果只是做UA
         SIPSet(如果还会扩展做服务器)
 
后补:
1)后期我们重新看了LinPhone的开发文档,发觉前期我们测试UAcore dump是因为linux的版本不对,后来更正后work,但是GUI程序还是容易core dump
2Kphone的移植性比较worse,因此。。。

(hl3196)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201010/10381.html]
本文出处:hi.chinaunix.net 作者:hl3196
顶一下
(0)
0%
踩一下
(1)
100%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容