SIP协议栈

上传人:m**** 文档编号:505643462 上传时间:2023-06-17 格式:DOCX 页数:8 大小:87.61KB
返回 下载 相关 举报
SIP协议栈_第1页
第1页 / 共8页
SIP协议栈_第2页
第2页 / 共8页
SIP协议栈_第3页
第3页 / 共8页
SIP协议栈_第4页
第4页 / 共8页
SIP协议栈_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《SIP协议栈》由会员分享,可在线阅读,更多相关《SIP协议栈(8页珍藏版)》请在金锄头文库上搜索。

1、Osip2 是一个开放源代码的 sip 协议栈,是开源代码中不多使用C 语言写的协议栈之一,它具有短小简洁的特点,专注于 sip 底层解析使得它的效率比较高。eXosip 是 Osip2 的一个扩展协议集,它局部封装了Osip2 协议栈,使得它更简洁被使用。一、介绍Osip2 是一个开放源代码的 sip 协议栈,是开源代码中不多使用C 语言写的协议栈之一,它具有短小简洁的特点,专注于sip 底层解析使得它的效率比较高。但缺点也很明显,首先就是可用性差,没有很好的api 封装,使得上层应用在调用协议栈时很裂开;其次,只做到了transaction 层次的协议过程解析,缺少 call、sessio

2、n、dialog 等过程的解析,这也增加了使用的难度;再次,缺少线程并发处理的机制,使得它的处理力量有限。eXosip 是 Osip2 的一个扩展协议集,它局部封装了 Osip2 协议栈,使得它更简洁被使用。eXosip 增加了 call、dialog、registration、subscription 等过程的解析,使得有用性更强。但是eXosip 局限于 UA 的实现,使得它用于 registrar、sip server 等应用时极其不简洁。另外,它并没有增加线程并发处理的机制。而且只实现了音频支持,缺少对视频和其它数据格式的支持。综合来说,Osip2 加上 eXosip 协议栈仍旧是个实

3、现 Sip 协议不错的选择。固然需要依据不同的需求来增加更多的内容。二、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

4、 的语法分析。支持 MD5 加解密算法。支持 Authorization、www_authenticate 和 proxy_authenticate。2、Sip 协议的过程分析:主要是 osip2 局部,基于 RFC3261、RFC3264 和 RFC3265 的 sip 协议描述过程,围绕 transaction这一层来实现 sip 的解析。Transaction 是指一个发送方和接收方的交互过程,由恳求和应答组成。恳求分为Invite 类型和 Non-Invite 类型。应答分为响应型的应答和确认型的应答。响应型的应答是指这个应答仅代表对方收到恳求。恳求经过处理后都必需返回确认型的应答。响

5、应型的应答有 1xx,确认型的应答包括 2xx、3xx、4xx、5xx 和 6xx。一个 transaction 由一个恳求和一个或多个响应型应答、一个确认型应答组成。Transaction 依据恳求的不同和发送/接收的不同可以分为四类:ict、nict、ist 和 nist。Ict 是指 Invite client transaction,就是会话邀请的发起方。Nict 是指 Non-Invite client transaction,是指非邀请会话的发起方。Ist 是指 Invite server tranaction,是指会话邀请的接收方。Nist 是指 Non-Invite serve

6、r transaction,是指非邀请会话的接收方。每种类型的 transaction 都有自己相应的状态机,Osip2 协议栈依据状态机来处理全部的 sip 大事,所以这局部就是整个协议栈的核心。但是由于Osip2 只做到 transaction 这一层,所以它可以无视掉 call、registration 等应用的简单性,显得相当简洁,这就使得需要使用它的应用必需要自己处理应用的规律。必需留意的一点是,transaction 的资源在 Osip 里是由协议栈负责释放的,但是在 Osip2 里改成由使用的应用负责释放。3、协议栈框架:框架并不是指代码的某一局部,而是指它的构成形式。主要有三局

7、部:底层套接字接收/发送,模块间通信管道,上层调用 api 接口。Osip2 并不实现底层套接字的接收/发送,由 eXosip 实现,现在只支持 UDP 的链路连接。模块间的通信管道包括:transaction 的消息管道、jevent 的消息管道。Transaction 的消息管道是驱动其状态机的部件,通过不断的接收来自底层套接字的远端信令,或者来自上层调用的指令,依据上述的状态机制来驱动这个 transaction 的运转。Jevent 的消息管道是 eXosip 实现的,用于汇报底层大事,使得调用程序能处理感兴趣的大事。上层调用的 api 接口大致有两类:sip 协议的调用接口和 sdp

8、 协议的调用接口。EXosip 封装了大局部的 sip 协议调用接口,一般来说都不需要直接调用 osip2 的接口函数。接口函数很多, 在这里就不详述了,函数定义请参照源代码局部的注释。三、eXosip 协议栈的分析eXosip 是 Osip2 协议栈的封装和调用。它实现了作为单个 sip 终端的大局部功能,如 register、call、subscription 等。EXosip 使用 UDP socket 套接字实现底层 sip 协议的接收/发送。并且封装了 sip 消息的解释器。EXosip 使用定时轮循的方式调用Osip2 的 transaction 处理函数,这局部是协议栈运转的核心

9、。透过添加/读取 transaction 消息管道的方式,驱动 transaction 的状态机,使得来自远端的 sip 信令能汇报给调用程序,来自调用程序的反响能通过sip 信令回传给远端。EXosip 增加了对各个类型 transaction 的超时处理,确保全部资源都能循环使用,不会被耗用殆尽。EXosip 使用 jevent 消息管道来向上通知调用程序底层发生的大事,调用程序只要读取该消息管道,就能获得感兴趣的大事,进展相关的处理。EXosip 里比较重要的应用有 j_calls、j_subscribes、j_notifies、j_reg、j_pub、osip_negotiation

10、和 authinfos。J_calls 对应呼叫链表,记录全部当前活动的呼叫。J_reg 对应注册链表,记录全部当前活动的注册信息。Osip_negotiation 记录本地的力量集,用于力量交换。Authinfos 记录需要的认证信息。四、总结本文是从使用的角度去阐述分析 Osip2 和 eXosip 协议栈,并不涉及很多的细节,需要进一步了解协议栈的构造和实现,可参考osip一文。分析了开源 SIP 协议栈 oSIP 的运行机制。在oSIP 根底上,设计实现了一个基于 S3C2410A 微处理器平台,使用 WinCE 操作系统的嵌入式 SIP 终端。1、 引言目前,IETF 的 SIP 协

11、议(Session Initiate Protocol, 会话初始协议)已获得业界越来越多的关注和支持,正逐步成为下一代网络(NGN)中的核心协议之一1。SIP 协议相对简洁、易 于实现、可扩展性强、更适合IP 网络,被广泛的用于 VoIP 系统的组建2。oSIP 及其扩展 eXosip 作为开源的 SIP 协议 栈, 以其构造简洁、功能丰富、易于移植等优点成为在嵌入式系统上构建VoIP 应用的首选。本文分析了 oSIP 协议栈的运行机制,设计实现了将 oSIP 协议 栈移植到嵌入式操作系统并以此为根底开发嵌入式 SIP 客户端的方案。2、 oSIP 协议栈2.1 SIP 协议SIP 承受 C

12、/S 模式的工作方式,包含两类元素:SIP 用户代理(User Agent, UA)和 SIP 效劳器。依据用户代理在会话中扮演的角色不同又可分为用户代理客户机(User Agent Client, UAC)和用户代理效劳器(User Agent Server, UAS),前者发起呼叫恳求,后者响应呼叫恳求。2.2 oSIP 协议栈oSIP 是遵循 IETF 标准,使用 ANSI C 编写,源代码开放的 SIP 协议栈。oSIP 主要有以下优点:(1) 构造小巧简洁,只有 400K 左右,适合在嵌入式系统上应用;(2) 可移植性好,已被成功的应用于 Solaris、HP Unix、VxWork

13、s、Windows 和 GNU/Linux3 (2.2.16 和 2.4.7)等系统中;(3) 工作稳定、兼容性强。oSIP 主要由解析模块、工具模块和状态机模块构成,其核心是状态机模块4(如图 1 所示)。图 1 oSIP 构造解析模块完成对 SIP 恳求和响应进展封装与解析处理。解析模块又可分为SIP 解析、SDP 解析与 URL 解析。工具模块主要供给一些处理工具用于对话治理和 SDP 协商。状态机模块负责对某个事务(如注册过程、呼叫过程等)状态的维持及处理, 并在特定的状态下触发响应的大事或回调函数。依据 RFC 描述中关于 SIP 协议事务 层的定义,oSIP 协议栈有 4 种状态机

14、:客户端邀请事务(ICT),客户端非邀请事务(NICT),效劳器端邀请事务(IST),效劳器端非邀请事务 (NIST)。前两种状态机是由客户端发起的,后两种状态机是由效劳器发起的,这 4 种状态机涵盖了 SIP 的各种事务类型。其中 ICT如图 2 所示是 SIP 客户端中最常见的事务。图 2 ICT 状态机状态转换图图 2 中,cb_ict_xxx_xxx 表示 oSIP 中 ICT 状态机回调函数,当 ICT从一种状态到另一种状态时 oSIP 协议栈将调用此函数。oSIP 专注于 SIP 底层解析,这使得它具有很高的效率。但另一方面,由于没有供给高层的 SIP 会话掌握 API,使得上层应

15、用在调用协议栈时很裂开, 降低 了易用性。为此 oSIP 的开发者们又在 oSIP 的根底上开发了 eXosip。eXosip 是 oSIP 的扩展,它局部封装了 oSIP 协议栈,使得它更简洁被 使用。eXosip 实现了作为单个 SIP 终端的大局部功能。3、 嵌入式 SIP 终端系统体系构造3.1 嵌入式 SIP 终端的功能嵌入式 SIP 终端是一个运行在嵌入式操作系统上的 SIP 用户代理,主要包括 SIP 的注册、呼叫、接听、挂断等功能。它直接与用户交互,接收输入信息, 进展格式检查,依据用户的动作初始化 SIP 消息,同时得到本地语音媒体接口信息,形成 SDP 描述,完成 UDP 或 TCP 封装。3.2 系统软硬件平台的选择为选择适宜的软硬件平台,我们收集了大量相关资料,经过反复比较并结合现有试验条件做出了如下选择:(1) 嵌入式处理器种类繁多,我们选择了三星的 S3C2410A 微处理器。该处理器基于 ARM920T 内核,主频最高为 203MHz。是一款高性价比、低 功耗、高集成度的 CPU,专为手持设备和网络应用设计,能满足嵌入式系统低功耗、高性能、小体积的要求。同时,S3C2410 系列处理器已得到广泛使用, 技术资料丰富,这也是承受 S3C2410 平台进展开发的有利条件。此外,我们还

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号