版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 HYPERLINK / Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。一、介绍Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。但缺点也专门明显,首先确实是可用性差,没有专门好的api封装,使得上层应用在调用协议栈时专门破裂;其次,只做到了transaction层次的协议过程解析,缺少call、session
2、、dialog等过程的解析,这也增加了使用的难度;再次,缺少线程并发处理的机制,使得它的处理能力有限。eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。eXosip增加了call、dialog、registration、subscription等过程的解析,使得有用性更强。然而eXosip局限于UA的实现,使得它用于registrar、sip server等应用时极其不容易。另外,它并没有增加线程并发处理的机制。而且只实现了音频支持,缺少对视频和其它数据格式的支持。综合来讲,Osip2加上eXosip协议栈仍然是个实现Sip协议不错的选择。因此需要依照
3、不同的需求来增加更多的内容。二、Osip2协议栈的组成Osip2协议栈大致能够分为三部分:sip协议的语法分析、sip协议的过程分析和协议栈框架。1、Sip协议的语法分析:要紧是osipparser2部分,目前支持RFC3261和RFC3265定义的sip协议消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SUBSCRIBE、NOTIFY、MESSAGE、REFER和INFO。不支持RFC3262定义的PRACK。遵循RFC3264关于SDP的offer/answer模式。带有SDP的语法分析。支持MD5加解密算法。支持Authorization、www_authenti
4、cate和proxy_authenticate。2、Sip协议的过程分析:要紧是osip2部分,基于RFC3261、RFC3264和RFC3265的sip协议描述过程,围绕transaction这一层来实现sip的解析。Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。请求分为Invite类型和Non-Invite类型。应答分为响应型的应答和确认型的应答。响应型的应答是指那个应答仅代表对方收到请求。请求通过处理后都必须返回确认型的应答。响应型的应答有1xx,确认型的应答包括2xx、3xx、4xx、5xx和6xx。一个transaction由一个请求和一个或多个响应型应答
5、、一个确认型应答组成。Transaction依照请求的不同和发送/接收的不同能够分为四类:ict、nict、ist和nist。Ict是指Invite client transaction,确实是会话邀请的发起方。Nict是指Non-Invite client transaction,是指非邀请会话的发起方。Ist是指Invite server tranaction,是指会话邀请的接收方。Nist是指Non-Invite server transaction,是指非邀请会话的接收方。每种类型的transaction都有自己相应的状态机,Osip2协议栈依照状态机来处理所有的sip事件,因此这部分
6、确实是整个协议栈的核心。然而因为Osip2只做到transaction这一层,因此它能够忽略掉call、registration等应用的复杂性,显得相当简单,这就使得需要使用它的应用必须要自己处理应用的逻辑。必须注意的一点是,transaction的资源在Osip里是由协议栈负责释放的,然而在Osip2里改成由使用的应用负责释放。3、协议栈框架:框架并不是指代码的某一部分,而是指它的构成形式。要紧有三部分:底层套接字接收/发送,模块间通信管道,上层调用api接口。Osip2并不实现底层套接字的接收/发送,由eXosip实现,现在只支持UDP的链路连接。模块间的通信管道包括:transactio
7、n的消息管道、jevent的消息管道。Transaction的消息管道是驱动其状态机的部件,通过不断的接收来自底层套接字的远端信令,或者来自上层调用的指令,依照上述的状态机制来驱动那个transaction的运转。Jevent的消息管道是eXosip实现的,用于汇报底层事件,使得调用程序能处理感兴趣的事件。上层调用的api接口大致有两类:sip协议的调用接口和sdp协议的调用接口。EXosip封装了大部分的sip协议调用接口,一般来讲都不需要直接调用osip2的接口函数。接口函数专门多,在那个地点就不详述了,函数定义请参照源代码部分的注释。三、eXosip协议栈的分析eXosip是Osip2协
8、议栈的封装和调用。它实现了作为单个sip终端的大部分功能,如register、call、subscription等。EXosip使用UDP socket套接字实现底层sip协议的接收/发送。同时封装了sip消息的解释器。EXosip使用定时轮循的方式调用Osip2的transaction处理函数,这部分是协议栈运转的核心。透过添加/读取transaction消息管道的方式,驱动transaction的状态机,使得来自远端的sip信令能汇报给调用程序,来自调用程序的反馈能通过sip信令回传给远端。EXosip增加了对各个类型transaction的超时处理,确保所有资源都能循环使用,可不能被耗用
9、殆尽。EXosip使用jevent消息管道来向上通知调用程序底层发生的事件,调用程序只要读取该消息管道,就能获得感兴趣的事件,进行相关的处理。EXosip里比较重要的应用有j_calls、j_subscribes、j_notifies、j_reg、j_pub、osip_negotiation和authinfos。J_calls对应呼叫链表,记录所有当前活动的呼叫。J_reg对应注册链表,记录所有当前活动的注册信息。Osip_negotiation记录本地的能力集,用于能力交换。Authinfos记录需要的认证信息。四、总结本文是从使用的角度去阐述分析Osip2和eXosip协议栈,并不涉及专门
10、多的细节,需要进一步了解协议栈的结构和实现,可参考osip一文。分析了开源SIP协议栈oSIP的运行机制。在oSIP基础上,设计实现了一个基于S3C2410A微处理器平台,使用WinCE操作系统的嵌入式SIP 终端。 1、 引言 目前,IETF的SIP协议(Session Initiate Protocol, 会话初始协议)已获得业界越来越多的关注和支持,正逐步成为下一代网络(NGN)中的核心协议之一1。SIP协议相对简单、易 于实现、可扩展性强、更适合IP网络,被广泛的用于VoIP系统的组建2。oSIP及其扩展eXosip作为开源的SIP协议 栈,以其结构简单、功能丰富、易于移植等优点成为在
11、嵌入式系统上构建VoIP应用的首选。本文分析了oSIP协议栈的运行机制,设计实现了将oSIP协议 栈移植到嵌入式操作系统并以此为基础开发嵌入式SIP客户端的方案。 2、 oSIP协议栈 2.1 SIP协议 SIP采纳C/S模式的工作方式,包含两类元素:SIP用户代理(User Agent, UA)和SIP服务器。依照用户代理在会话中扮演的角色不同又可分为用户代理客户机(User Agent Client, UAC)和用户代理服务器(User Agent Server, UAS),前者发起呼叫请求,后者响应呼叫请求。 2.2 oSIP协议栈 oSIP是遵循IETF标准,使用ANSI C编写,源代
12、码开放的SIP协议栈。oSIP要紧有下列优点: (1)结构小巧简单,只有400K左右,适合在嵌入式系统上应用; (2)可移植性好,已被成功的应用于Solaris、HP Unix、VxWorks、Windows和GNU/Linux3 (2.2.16和2.4.7)等系统中; (3)工作稳定、兼容性强。 oSIP要紧由解析模块、工具模块和状态机模块构成,其核心是状态机模块4(如图1所示)。图1 oSIP结构 解析模块完成对SIP请求和响应进行封装与解析处理。解析模块又可分为SIP解析、SDP解析与URL解析。 工具模块要紧提供一些处理工具用于对话治理和SDP协商。 状态机模块负责对某个事务(如注册过
13、程、呼叫过程等)状态的维持及处理,并在特定的状态下触发响应的事件或回调函数。依照RFC描述中关于SIP协议事务 层的定义,oSIP协议栈有4种状态机:客户端邀请事务(ICT),客户端非邀请事务(NICT),服务器端邀请事务(IST),服务器端非邀请事务 (NIST)。前两种状态机是由客户端发起的,后两种状态机是由服务器发起的,这4种状态机涵盖了SIP的各种事务类型。其中ICT(如图2所示)是 SIP客户端中最常见的事务。图2 ICT状态机状态转换图 图2中,cb_ict_xxx_xxx表示oSIP中ICT状态机回调函数,当ICT从一种状态到另一种状态时oSIP协议栈将调用此函数。 oSIP专注
14、于SIP底层解析,这使得它具有专门高的效率。但另一方面,由于没有提供高层的SIP会话操纵API,使得上层应用在调用协议栈时专门破裂,降低 了易用性。为此oSIP的开发者们又在oSIP的基础上开发了eXosip。eXosip是oSIP的扩展,它部分封装了oSIP协议栈,使得它更容易被 使用。eXosip实现了作为单个SIP终端的大部分功能。 3、 嵌入式SIP终端系统体系结构 3.1 嵌入式SIP终端的功能 嵌入式SIP终端是一个运行在嵌入式操作系统上的SIP用户代理,要紧包括SIP电话的注册、呼叫、接听、挂断等功能。它直接与用户交互,接收输入信息, 进行格式检查,依照用户的动作初始化SIP消息
15、,同时得到本地语音媒体接口信息,形成SDP描述,完成UDP或TCP封装。 3.2 系统软硬件平台的选择 为选择合适的软硬件平台,我们收集了大量相关资料,通过反复比较并结合现有实验条件做出了如下选择: (1)嵌入式处理器种类繁多,我们选择了三星的S3C2410A微处理器。该处理器基于ARM920T内核,主频最高为203MHz。是一款高性价比、低 功耗、高集成度的CPU,专为手持设备和网络应用设计,能满足嵌入式系统低功耗、高性能、小体积的要求。同时,S3C2410系列处理器已得到广泛使用, 技术资料丰富,这也是采纳S3C2410平台进行开发的有利条件。此外,我们还选用了带有的触摸屏的SHARP L
16、35T23 3.5”液晶显示器作为系统输入/输出设备。 (2)嵌入式操作系统方面,考虑到GUI界面开发的难易程度,我们选择了Microsoft的Windows CE.NET 4.2。WinCE 4.2版本在内核、实时性和网络支持等方面做了专门大的优化和增强,同时还为基于WinCE的嵌入式系统的开发提供了强大的工具Platform Builder 4.2(PB 4.2)。这些特性有助于我们快速开发嵌入式系统。 (3)在开发工具的选择上,我们选用了与Windows CE.NET 4.2同时推出的Microsoft Embedded Visual C+ 4.0(eVC 4.0)。那个开发环境和VC6
17、.0十分类似,易于掌握,同时还包含有许多WinCE专用的标准开发工具和远程调试工具。 3.3 系统体系结构 我们设计的嵌入式SIP终端系统总体结构如图3所示:图3 嵌入式SIP终端系统体系结构 整个系统分为3个层次: (1)系统平台层:包括硬件平台及运行在其上的嵌入式操作系统,这是整个系统的基础。 (2)协议栈层:运行SIP协议栈,为用户程序提供调用。RTP模块我们采纳了开源的jrtplib。jrtplib采纳C+编写,能够方便的移植到 WinCE系统上。移植jrtplib到嵌入式操作系统不是本文的重点,具体做法在此不再赘述。 (3)用户程序层:负责接收用户的输入,依照用户请求类型调用协议栈层
18、功能,同时实现oSIP的回调函数,并将结果反馈给用户。 4、 嵌入式SIP终端的实现 4.1 系统平台层实现 本系统开发使用的硬件设备都直接向设备供应商购买,但由于嵌入式系统是软硬件高度结合的系统,还需要依照硬件条件定制一个WinCE平台。在PB中能够定 制出满足各种不同需求的CE系统。我们使用设备供应商提供的BSP,利用PB平台创建向导新建了一个WinCE映象文件并将其下载到开发板中固化。 4.2 协议栈层的实现 oSIP协议栈在设计之初就考虑到了满足嵌入式操作系统的的特定要求,这使得只需做专门少量的修改(要紧是需要加入一些针对WinCE的头文件)就能将 oSIP移植到WinCE系统中。 另外,WinCE的API中没有time()函数的实现,我们需要自己实现那个函数,代码如下: #ifdef _WIN32_WCE SYSTEMTIME t; #endif #ifdef _WIN32_WCE GetSystemTime(&t); now = (int)(t.wYear-1970) *365*24*3600+t.wMonth*30*24*3600+t.wDay*24*3600+t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 混凝土及水稳生产线项目可行性研究报告模板-立项备案
- 瓶装液化石油气供应站检查要点
- 药品库房规范化管理试卷(附答案)
- 小学语文教师职称考试试题与答案解析
- 危化品分装转运岗位安全培训考试题库带解析
- 普通心理学试题及答案
- 接发列车工种知识竞赛第二期答题及答案(A卷)
- 2026上海工艺美术职业学院招聘教师等岗位笔试备考试题及答案解析
- 2026年武汉市员额法官遴选面试真题(含答案)
- 2026年企业跨境电商知识培训考试题库(含答案)
- 尾矿库工程施工总体方案设计
- 2026年一级建造师之一建矿业工程实务考试题库300道及完整答案(易错题)
- 2024年版《手术室护理实践指南》练习题(附答案)
- 基于美育培养的小学语文古诗词教学现状及对策研究-以五年级为例
- 警察进校园安全教育课件
- 工程竣工验收报告模板(含全套表格)
- 体育场馆设计阶段的重点难点及关键技术控制措施
- 2025医院卫生院安全生产大排查大整改工作方案
- 太空探索与航天科技:初中物理科普教学教案
- 乡镇周转房管理办法
- 《外国美术史》课程教学大纲
评论
0/150
提交评论