(计算机科学与技术专业论文)基于jslee的多媒体会议sip信令控制层的设计与实现.pdf_第1页
(计算机科学与技术专业论文)基于jslee的多媒体会议sip信令控制层的设计与实现.pdf_第2页
(计算机科学与技术专业论文)基于jslee的多媒体会议sip信令控制层的设计与实现.pdf_第3页
(计算机科学与技术专业论文)基于jslee的多媒体会议sip信令控制层的设计与实现.pdf_第4页
(计算机科学与技术专业论文)基于jslee的多媒体会议sip信令控制层的设计与实现.pdf_第5页
已阅读5页,还剩68页未读 继续免费阅读

(计算机科学与技术专业论文)基于jslee的多媒体会议sip信令控制层的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

q l j 北京邮电大学硕士学位论文 独创性( 或创新性) 声明 f f i l i f l f f f f f i f j j j j | f 删 y i7 5 9 7 8 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处, 本人签名:姐盛基遵 本人承担一切相关责任。 日期:兰竺1 2 :! 兰:! ! 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即: 研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保 留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借 阅l 学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它 复制手段保存、汇编学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在一年解密后适用本授权书。非保密论 文注释:本学位论文不属于保密范围,适用本授权书。 本人签名: 导师签名: 酾氨汛 殛车 日期:皇! 盟:! 至:! 竺 日期:兰翌:! 兰: ! t t q,k。 摘要 基于j s l e e 的多媒体会议中s i p 信令控制层的设计与实现 摘要 本文主要描述了一个s i p 信令控制层的通用设计方法,及其基于 j s l e e 规范,在m o b i c e n t s 平台下的实现方法。包含s i p 协议栈的修 改与封装,资源适配器的编写以及信令控制逻辑的实现。此外,还介 绍了在本文所在的整体项目背景下,以多媒体会议为典型实例,其涉 及的平台,以及接入平台的各部分之间的基本关系与交互方式。 s i p 协议栈主要用于对s i p 消息文本进行解码,获取消息头部各 字段的值和消息体,或反过来编码构造消息文本。此外它还需要对s i p 事务进行管理。它的最底层需要基于t c p i p 进行消息传输。由于s i p 协议已经包含握手超时等机制,通常使用u d p 。s i p 协议栈通常都要 进行一下封装,实现到统一的层次,提供一致的接口。资源适配器是 协议栈为了接入m o b i c e n t s ,而做的一层基于j s l e e 的封装。它将s i p 消息转化为r a 事件。 s i p 信令控制逻辑包括两种主要功能,一是向业务层提供语意明 确的反馈与调用接口,屏蔽多u a 参与的s i p 交互的复杂性。二是自 动根据触发信令控制的起始消息类型,使用业务中相应的s i p 时序逻 辑来进行s i p 连接的路由与控制。具体实现上,通过使用j s l e e 内 部消息组件,设计会议逻辑与s i p 信令通过异步消息进行交互。一个 呼叫独立成s b b 树,。其内部采用同步调用。s b b 树之间为多个独立 的线程,各自独立持有私有数据。设计原则是数据对象各d i a l o g 单独 动态持有,所有操作对象全局单实例共享。 文中还简要介绍了s i p 信令控制逻辑生成工具,可以快速增加和 修改s i p 信令时序并生成j a 、,a 代码。或以文件的方式积累保存。 关键词s i p ,信令控制,j s l e e ,m o b i c e n t s 广 , i - ; 北京邮电大学硕士学位论文a b s t r a c t t h ed e s i g na n di m p l e m e n t a t i o no ft h es i p c o n t r o ll a y e ri nm u l t i m e d i ac o n f e r e n c e b a s e do nj a i n s l e e a bs t r a c t i nt h i sp a p e r , t h ea u t h o rd e s c r i b e dag e n e r a lm e t h o do fd e s i g n i n gt h e l e v e lo fs i ps i g n a lc o n t r o l l i n g a n dt h ei m p le m e n t a t i o nu s i n gm o b i c e n t s b a s e do nj s l e e t h e r ea r et h r e ep a n so ft h i sl e v e l i n c l u d i n gm o d i f y i n g a n de n c a p s u l a t i n gt h es i ps t a c ka n de n c o d i n gt h er e s o u r c ea d a p t e ra n d i m p l e m e n t i n go fs i pc o n t r o l l i n gl o g i c b e s i d e s t h er e l a t e dp l a t f o r l na n d t h eb a s i cr e l a t i o n s h i pa n dm e t h o d so fc o m m u n i c a t i o n sa m o n gp a r t si ta r e a l s oi n t r o d u c e d t h es i ps t a c kd e c o d e st h es i pm e s s a g et e x tt og e tv a l u e so f e a c h h e a d f i e l da n di t sb o d ya n de n c o d e st h eh e a d f i e l d si n t ot h et e x t t o o b e s i d e s ,i tm a n a g e st h es i pt r a n s a c t i o n s t h eb o t t o ml e v e li st ot r a n s a m i t t h em e s s a g e so nt c p i pu d pi su s u a l l yc h o s e ns i n c es i pp r o t o c o lh a s a l r e a d yi n c l u d e sm e c h a n i s m so fh a n d s h a k i n ga n dt i m e o u t t h es i p s t a c ku s u a l l yn e e d st ob ee n c a p s u l a t e dt oau n i f o r ml e v e lw i t ht h es a m e i n t e r f a c e s t h er e s o u r c ea d a p t e ri sa ne n c a p s u l a t i o no fs i ps t a c ki no r d e r t oc o n n e c ti n t ot h em o b i c e n s w h i c ht r a n s f o r mt h es i pm e s s a g e st or a e v e n t s t h e r ea r et w om a i nm e t h o d so ft h es i ps i g n a lc o n t r o l l i n gl o g i c o n e p r o v i d e si n t e r f a c e st ot h es e r v i c ew i t hc l e a rs e m a n t i c s h i e l d i n gt h e c o m p l e x i t yo fs i pi n t e r a c t i o na m o n gm u l i t iu a t h eo t h e rt r i g g e r st h e b u s i n e s sl o g i ca u t o m a t i c a l l yb yt h ei n i t i a le v e n t r o u t i n ga n dc o n t r o l l i n g t h es i pc o n n e c t i o n b yt h ei n s i d em o d u l e so fj s l e e ,t h es i pm e s s a g e s a n ds e r v i c e sc o m m u n i c a t e st h r o u g ha s y n c h r o n o u sm e s s a g e s o n ec a l l m e a n so n es b b t r e e ,a n di n v o k i n gi n s i d eo fi ti ss y n c h r o n o u s s b b t r e s s a r em a n yi n d e p e n d e n tt h r e a d s ,a n ds a v i n gp r i v a t ed a t ab ye a c ho n ei t s e l f t h ep r i n c i p l eo fd e s i g n i n gi n c l u d e sh o l d i n gd a t ad y n a m i c l l yb ye a c h d i a l o g a n d a l lo b j e c t so f o p e r a t i o n sa r es i n g l e t o n ss h a r e db ya l ld i a l o g s i nt h i sp a p e r , ia l s oi n t r o d u c e di ns h o r tat o o lo fc r e a t i n gs i p m e s s a g ec o n t r 0 1 w h i c hc a na d da n dm o d i f yt h el o g i co fs i ps i g n a l sa n d c r e a t i n gj 斟ks o u r c ec o d e o ry o uc a ns a v et h e ma sf i l e s k e yw o r d s s i p , s i g n a lc o n t r o l l i n g ,j s l e e ,m o b i c e n t s i l 、:ii耳 0。, 北京邮电大学硕士学位论文目录 第一章 1 1 1 2 第二章 2 1 第三章 3 1 3 2 第四章 4 1 目录 绪论1 背景介绍l 1 1 1 项目背景1 论文结构2 相关技术简介3 s i p 协议3 2 1 1s i p 协议简介3 2 1 2s i p 协议栈9 2 1 3c 与j a 、,a 代码的互通技术及j n i 1 2 j s l e e 1 3 2 2 1j s l e e 规范简介1 3 2 2 2m o b i c e n t s 简介1 6 2 2 3a n t 简介。l7 信令控制层的需求分析及概要设计2 0 低延迟事件引擎控制模块2 0 3 1 1 低延迟事件引擎控制模块在执行环境中的作用。2 0 信令控制层的需求分析21 3 2 1 信令控制层在平台中的功能。2 1 3 2 2 多媒体会议中的信令控制需求。2 1 3 2 3 信令控制的扩展需求2 5 信令控制层的体系结构与模块设计2 7 3 3 1 信令控制层的整体结构2 7 3 3 2s i p 协议栈的封装与改造2 8 3 3 3s i p 信令控制的模型及基本设计3 0 信令控制层的详细设计3 4 信令控制层的类设计3 4 4 1 1 整体类关系3 4 4 1 2 各类功能描述3 8 多媒体会议中的信令控制流程4l 4 2 1 动作模板的配置与存储4 1 i i i 北京邮电人学硕士学位论文 目录 4 2 2 典型呼叫流程4 2 4 3s i p 信令控制框架的实现方法5 0 4 3 1信令控制框架的功能5 0 4 3 2 信令控制的操作5 0 4 3 3信令控制逻辑生成工具5 6 第五章测试及验证5 8 5 1 信令控制层的功能测试5 8 5 1 1 测试用例及测试结果一5 8 5 1 2 测试情况总结6 0 第六章总结与展望6 1 参考文献6 2 攻读学位期间发表的学术论文6 3 致谢6 4 i v j 北京邮电大学硕士学位论文第一章 第一章绪论 本章介绍了本部分所在项目的大概背景以及项目前后期索采取的一些技术 演变过程。 1 1 背景介绍 1 1 1 项目背景 1 1 1 1 服务平台 项目所采用的是一个基于s o a 的平台,包括生成单元,执行单元和接口单 元这三层,管理单元则对这三层进行统一的管理。 图1 - 1 服务平台的三层结构 其中,生成单元用于提供一个统一的图形化开发环境,将原子服务组合通过 b p e l 为一个业务流程,组合后的服务也可以作为模板,通过修改内容或以更大 粒度与其他服务进一步组合,从而产生新的个性化业务逻辑。通过这个图形化开 发环境,使用者可以以直观的模板,拖拽方式实现业务逻辑的快速开发。 执行单元用于提供所述业务逻辑的运行环境。执行环境通过动态流程执行引 擎,可以解释b p e l 的业务逻辑,并通过消息总线接收来自各个消息源,通过 b p e l 所执行的业务逻辑发送回复以及调用新的原子服务。此外,执行环境还需 要提供控制多业务逻辑的并发执行,以及接纳控制等功能。其中,执行环境通过 与接口单元通信调用具体的原子服务。 接口单元,用于与所述执行单元通信,并以组合各服务的方式集成了至少一 北京邮电大学硕:b 学位论文 第一章绪论 个多媒体会议业务功能的具体接口。 1 1 1 2 多媒体会议 基于上述平台,本文所在项目实现了一个典型业务,多媒体会议。它的后端 服务接口参考p a r l a yx 标准设计并添加了一些新的功能,从而在会议基础能力之 外还提供了丰富的会议控制能力。 其业务逻辑被划分为三部分:多个原子服务组合而成的b p e l 流程,会议信 令及媒体控制侧的原子服务,会议控制前台的操作界面。这三部分通过执行环境 进行交互,从而实现完整的业务逻辑。 具体服务是通过接口单元提供。在第一期原型中,原子服务通过b c 绑定的 方式接入平台,二者通过s o a p 消息进行交互。服务本身基本采用c 语言实现, 通过工具封装为多个w e b s e r v i e e ,都可以正常调用。但由于原子服务本身其实现 的架构比较简单,具有扩展性较差的缺点。后期对原子服务本身的实现框架进行 了较精细的设计。此外,为了进一步增加效率。执行环境中增加了低延迟执行引 擎,将我们所持有的私有服务集成在平台中。 低延迟执行引擎作为一个业务执行环境,这里采用的是事件驱动的j s l e e 平台,j s l e e 中的几种组件及其设计结构,对电信等事件驱动的业务有很天然的 支持。其业务构建块的设计也为细粒度的构建复用提供了支持。因此,平台在粗 粒度的服务级复用和细粒度的业务级复用都有了自己的支持。 1 2 论文结构 论文主要分为五部分进行介绍。第一部分是绪论,其中介绍了项目相关的背 景以及论文的结构。第二部分介绍了文章中设计的背景知识和相关技术。第三部 分从平台的需求角度分析了信令控制层的作用以及需要实现的目标功能,也从体 系结构的角度上对模块进行划分。第四部分中,首先从实现多媒体业务的角度上 描述了信令控制层的类设计以及各模块的时序交互;之后介绍了为了实现s i p 信 令控制的通用性设计实现的s i p 信令控制模板。第五部分则介绍了测试的相关方 法和测试结果。 2 譬 1 北京邮电大学硕七学位论文 。1 第二章相关技术简介 第二章相关技术简介 本章对论文涉及到的相关技术进行简单介绍主要包括s i p 协议和s i p 协议 栈接入平台的j n i 技术,以及j s l e e 规范等执行环境相关知识这两部分。s i p 是 在多媒体会议中,用于媒体资源的连接建立以及控制媒体服务器的脚本承载,而 j s l e e 平台则提供业务执行和网络资源接入的通用环境。 2 1s i p 协议 2 1 1s i p 协议简介 2 1 1 1s i p 协议的定义 s i p ( s e s s i o ni n i t i a t i o np r o t o c 0 1 ) 协议即会话发起协测,是i e t f 制定的多 媒体通信系统框架协议之一,它是一个基于文本的应用层控制协议,独立于底层 协议,用于建立、修改和终止口网上的双方或多方多媒体会话。 s i p 协议借鉴了h t t p 、s m t p 等协议,支持代理、重定向、登记定位用户 等功能,支持用户移动,与r t p r t c p 、s d p 、r t s p 、d n s 等协议配合,支持 v o i c e 、v i d e o 、d a t a 、e m a i l 、p r e s e n c e 、i m 、c h a t 、g a m e 等。 2 112 协议的基本思想 采用c l i e n t s e r v e r 和h t r p 协议模型,每一个请求触发服务器的操作方法。 请求和响应构成一个事务,事务之间相互独立,一个完整的呼叫包含多个事务。 并独立于底层传输协议u d p 肥p s c t p ,消息中可携带任意类型的消息体。 2 1 1 3 协议的主要功能 它通过s i p u r l + d n ss i p 进行终端用户定位;通过s d p 消息体进行会话属 性协商;通过i n v i t e 进行会话的发起;托i n v i t e 改变媒体协商的内容;通过 b y e 结束连接,c a n c e l 放弃连接。 3 北京邮电大学硕士学位论文第二章相关技术简介 2 1 1 4 协议的特点 简单性:只包括六个主要请求,六类响应;且基于文本编码,易实现、 易调试,便于跟踪和手工操作。 扩展性和伸缩性:具有灵活的扩展机制和强大的能力协商机制,新的方 法、消息头和功能添加,无须改动协议;网络简单,智能边缘;分布式 体系结构提高了系统的灵活性和可靠性。 安全性和可靠性:逐跳加密和认证:i p s e c 、s s l :代理认证: p r o x y a u t h e n t i c a t i o n :端到端h t r p 认证:基本方式和摘要方式,端到 端加密p g p 、s m i m e :每次呼叫包含一个时间空间唯一的c a l l i d , 每次请求都有一个c s e q ,用于复制包检测,请求之后有应答,i n v i t e 应答后有a c k 确认,没有收到回应则重传。 互通性:简单、轻型协议,基于文本编码方式,容易描述和分析;应用 层协议与底层传输无关。 2 1 1 5s i p 体系实体 s i p 的体系实体包括五个部分,如下表所示: 表2 1s i p 体系实体 彤j 鬟伴霹彰誓铲 慝篓薹鬟0 纛鬟篓碧譬麓、i 爱鬟 羹雾薹:嚣;“i ? :| 7 ,。j 、。 t 警: u s e ra g e n tc l i e n t 发起请求的逻辑实体 ( u a c ) u s e ra g e n t 接收请求的逻辑实体 s e r v e r ( o a s ) 代表客户端转发请求或响应的网络逻辑实体,包括路由、 p r o x ys e r v e r ( p s ) 呼叫控制、业务提供、计费认证授权等 将请求中的地址映射为零个或多个新的地址返回给客户 r e d i r e c ts e r v e r 端,完成路由功能 r e g i s t e rs e r v e r接收注册请求,提供定位服务 其中,u a c 和u a s 分别是用户代理客户端和用户代理服务器端,前者产生 请求,后者产生对应的响应。在u a c 发出请求后,请求消息会通过一些代理服 务器p s 转发到u a s ,而u a s 产生一个响应后,响应消息会以同样的方式被转 发到u a c 。 2 1 1 6s i p 消息的组成 s i p 协议是采用u t f 一8 字符集进行编码的文本协议。它将消息分为两类: 4 孽 北京邮电大学硕士学位论文第二章相关技术简介 请求消息r e q u e s t 和响应消息r e s p o n s e 。其中,请求消息由客户机发往服务器, 响应消息由服务器发往客户机。其实和响应的消息格式为:s i p 消息= 起始行幸 消息头部( 一个或多个头部) c r l f ( ) 【消息体】。其中,起始行= 请求行状 态行。请求消息使用请求行,响应消息使用状态行。而消息体为可选项,头字段 与消息体之间用空行进行分隔。 2 117s i p 消息的起始行 请求消息( r e q u e s t ) 中,起始行为请求行,请求行由方法名、请求u r l 和 协议版本组成,各部分之问均用一个空格字符进行分隔。请求行必须用回车换行 ( c r l f ) 字符表示行终结。例如:i n v i t es i p - g u e s t c i n t e l c o ms i p 2 0 ,其中 的i n v i t e 就是方法名,s i p :g u e s t c i n t e l c o m 是请求u r l ,s i p 2 0 是协议版本。 在r f c 3 2 6 1 定义了6 个方法,i n v i t e 、a c k 、c a n c e l 、o p t i o n 、b y e 和 r e g i s t e r 。下表展示了它们各自的含义。而请求u r l 是指示被邀请用户的当 前地址,u r l 中不允许出现空格。协议版本则是用于定义协议的当前版本号, 目前s i p 的版本号为s i p 2 o 。 表2 - 2s i p 请求的六种基本方法 融? 。:一j jj 仍豫筏i + o ? ? + 一j 。 。;:。,j 。i 7 | - 铆一- _ 镶甏? 0 二i i j :+ j j 强j | 。i :? 筠 酝e ,。 j 译:* 州s ,t ,? ”il 。i 乏? :獗。幺? j ,? ;凌2 j 毋飘 貉_i j ,17 ,;j z ,。一| 3 。 。 0 。j 譬,善。? 。“i 。i oj j :一。韵 i n v e发起呼叫 a c k响应应答 r e g l s t e r用户登记 o p l l o n s 能力询问 c a n c e l取消呼叫 b y e终止呼叫 响应消息( r e s p o n s e ) 的起始行为状态行。状态行由协议版本、状态码和与 状态码相关的文本描述组成,各个部分之间用一个空格字符进行分隔。状态行必 须用回车换行( c r l f ) 字符表示行终结。例如:s i p 2 02 0 0o k ,s i p 2 01 8 0 r i n g i n g 。其中,s i p 2 0 是协议版本,2 0 0 是状态码,o k 为状态相关的文本描述。 状态码就一个3 位的十进制整数,用于指示请求消息的执行响应结果。目前定义 了6 类状态码,其中状态码的第1 位数字用于指示响应类型,后2 位数字表示具 体响应,如下表所示。 表2 3s i p 响应中的状态码 5 北京邮电人学硕上学位论文第二章相关技术简介 1 x x临时响应,表不请求消息正在被处理 2 x x成功响应,表不请求已被成功接收,完全理解并被接受 3 x x重定向响应,表示需采取进一步已完成该请求 客户机错误,表示请求消息中包含语法错误信息或服务器无法完成客户 4 x x 机请求 5 x x服务器错误,表示服务器无法完成该合法请求 6 x x全局故障,表示任何服务器无法完成请求 其中,常见的状态响应码如下: 表2 - 4s i p 响应中常见的状态码 0 簟07 。一? 0 懈? i :? ? 繁0 7 i j - “一j ? i 。, 惫。、+ i j ,ji j j j 冀1 0 一 妒。i 曩:;j ? 1 :r f7 ,# 萼訾:?一二。? :艺jt 一:移! 。如“矗:0 、:1rj j _ l - 、! 钆h j , 一_ t4 j :i 臻鲁i 旗z 矗 。i 譬? 毒。 1 0 0 t r y i n g ( 尝试) 1 8 0 r i n g i n g ( 振铃) 2 0 0o k ( 请求成功) 4 0 8 r e q u e s tt i m e o u t ( 请求超时) 4 8 6 b u s yh e r e ( j e 忙) 4 8 7 r e q u e s tt e r m i n a t e d ( 请求终止) 6 0 3d e c l i n e ( 拒绝) 2 1 1 8s i p 消息的头字段 s i p 的头字段格式为:f i e l d - - n a m e :f i l e l d - - v a l u e 。头字段行之间用回车换 行( c r l f ) 字符表示行终结。常用的头字段有:f r o m 、t o 、c a l l - - i d 、c s e q 、m a x - - f o r w a r d s ,v i a ,c o n t a c t ,r e c o r d - - r o u t e ,r o u t e ,c o n t e n t - - l e n g t h , c o n t e n t t y p e 。下表对各个头字段进行详细说明。 表2 - 5s i p 协议中的头字段 譬段藿7 i盼菇簪i 影掣露? 弼纛义和魇滋。7 零琴鬻,_ 一? 。一y ”举僦j ,一黟露 , 凇? 僦锄张锄f 餐鼢融曲境域妇j 托i “;。矗。i 7 矗? i x t ”瞬锯女御# 7 诌十t & 点j t f ? ? , f r o m :“b o b f r o m 头字段是指示发起方的逻辑标识,它可能是 : 个可选的显示名字,还必须包含一个由u a c 选定 t a g = 2 2 s 9 a f r o m 的t a g 参数 f r o m : s i p 实体用f r o m 来决定如何处理一个请求( 如呼 1 0 6 2 2 8 7 3 0 0 1 0 叫自动拒绝) 1 0 2 1 ;t a g = y j 3 8 j 3 s 6 霉 北京邮电大学硕:p 学位论文 第一二章相关技术简介 t o 头罕段指不请求消息的逻辑接收者或者是用户 或资源的注册地址,该地址同样是作为请求消息 的目标地址。 t o 头字段所指示的不一定为请求消息的最终接收 t o :a l i c e t o 头字段中的t a g 参数,标示了一个对话中的对 端,如果对话没有建立,t a g 就不应当出现。对话 外的请求消息中不可以包含t a g 参数 c a l i - - i d 头字段是用来将消息分组的唯一性标识。 在一个对话中,u a 发送的所以请求消息和响应消 息必须有同样的c a l i - - i d 。当u a c 产生一个新的 c a l l i d : c a l l i d 对话请求时,必须为这个请求消息选择一个在空 f 8 l d 4 f a e 7 d e c ll d 间上和时间上都是全局唯一的c a l i - - i d 头字段。 0 a 7 6 5 c i n t e l n e t 建议使用r f c l 7 5 0 中的加密随机标识符生成方法 来生成c a l l - - i d 。 c s e q 头字段用于标识事务并对事务进行排序 c s e q c s e q 由一个请求方法和一个序列号组成,请求方 c s e q :4 7 1 1 法必须与对应的请求消息类型一致,序列号是一 i n v i t e 个3 2 位无符号整数 m a x - - f o r w a r d s 头字段限定一个请求消息在到达 目的地之前允许经过的最大跳数。 它包含一个整数值,每经过一跳,这个值就被减 ,m 觚一 一。如果在请求消息到达目的地之前该值变成o ,m a x f o r w a r d s : f o r w a 托l s那个请求将被拒绝并返回一个4 8 3 ( 跳数过多) 错 7 0 误响应消息 u a c 必须在它发起地每个请求中都插入m a x f o r w a r d s 头字段,值为7 0 v i a 头字段定义s i p 事务的下层( 传输层) 传输协 议,并标识响应消息将要被发送的位置 只有当到达下一跳所用的传输协议被选定后,才 v i a - 能在请求消息中加入v i a 头字段值 s i p 2 o 舢d p v i aa a a c i n t e l n e t : v i a 头字段中必须包含一个b r a n c h 参数,该参数用 5 0 6 0 ;b r a n c h = z 9 h 来标识由当前请求所建立的事务。该参数既用在 g 4 b k 7 4 b f 9 客户端也用在服务器端 b r a n c h 必须以“z 9 h g 4 b k 开头 c o n t a c t 头字段指定一个s i p 或s i p su r i ,后续请 c o n t a c t : 7 北京邮电大学硕十学位论文第二章相关技术简介 头字段,并且该头字段中只能包含一个s i p 或s i p s u r i c o n t a c t 头字段中包含的u r i 是u a 希望用来接收 请求的地址,即使在任何对话外的后续请求消息 中,该u r i 也必须有效 r e c o r d - - r o u t e 头字段由代理服务器插入请求消息 中,这样可以使该对话中将来的请求仍能经过该 代理服务器 r e c o r d - r o u t e : r e c o r d 上,它应当在请求消息中插入个r e c o r d - - r o u t e 头字段 r o u t e 头字段在s i p 消息中构成一个列表,用来指 r o u t e : c o n t e n t - - l e n g t h 头字段用十进制数指定发送的消 息体的大小( 字节数) c o n t e n t - c o n t e n t - - l e n g t h 该字段所指示的消息体的大小不包括分隔头字段 l e n g t h : 3 4 9 和消息体的c r l f 字符。如果消息中无消息体, 那么该字段必须设为0 c o n t e n t - - c o n t e n t - - t y p e 头字段指定消息体的媒体类型 t y p e 如果消息体不为空,c o n t e n t - - t y p e 头字段必须存 c o n t e n t - - t y p e : a p p l i c a t i o n s d p 在。 8 北京邮电大学硕士学位论文第二章相关技术简介 下图从整体上说明了s i p 消息的格式。 请求行 溺急获 c 囊l f 锵穗 奉 2 1 2s i p 协议栈 i n v i t es i p :p g n e x a m p l e 。s es i p 2 。0 v i a :s i p 2 0 u d ps c i e n c e f i c t i o n 。c o r t l f r o m :f i n g a l 事务用户层:s i p 协议栈功能的最高层,对应一个完整的d i a l o g ,需要维 护d i a l o g 相关的状态信息。 事务层:对应s i p 协议中的t r a n s a c t i o n ,维护d i a l o g 内的单个事务。 编解码层:对收到的s i p 消息文本进行解码,得到消息体和消息头中的 各个的字段信息。解码后的数据才能够为事务层和事务用户层所使用。同样需要 给某u a 发送s i p 消息也需要最后将相关数据编码为s i p 文本消息才能进行传输。 传输层:s i p 消息的传输承载所依赖的传输层,可以采用t c p 或u d p 进行传输。一般而言,由于s i p 协议已经提供了保证传输可靠性的几种机制,因 而采用u d p 传输是较为简单高效的方式。 一般而言,s i p 协议栈都会实现至事务层。事务用户层维护单个d i a l o g ,其 维护的数据结构及i d 等表示方式都是依赖于协议栈所特有实现。如果有较为松 耦合的表示方式,是比较适用于应用使用的,否则一般都会在此基础上再做一层 封装。 此外,不同的协议栈支持的扩展协议也是不同的,主要包括编解码层中支持 的字段有所不同。诸如r f c3 2 6 2 等基本的扩展协议需要尽量支持,而为了保证 s i p 协议的标准性,不需要支持一些为方便而增加的扩展字段,因为对于标准终 端而言往往是不支持这些字段的。 2 1 2 2t r i l l i u ms i p 协议栈 t r i l l i u ms i p 是项目中使用的一个协议栈,它基于c 语言实现,并实现至 d i a l o g 层。其体系结构如下图。 口p v i d e db y u m 图2 3t r i l l i u ms i p 的整体架构图 t r i l l i u ms i p 协议栈的特点在于,它横向纵向都有很好的分层结构,纵向上 的分层使得几种协议和应用被剥离开来,单独修改和配置。横向上,它把层间关 系抽象出来,可以配置松耦合和紧耦合,消息交互还是接口调用这两种不同的方 式。此外,它还将操作系统支持做出了单独的封装,使得它可以通过配置无缝地 支持l i n u x 和w i n d o w s ,m a c 等操作系统。在它的最新版本中,更是使用了组件级 的支持,添加了一些可靠性支持的模块,包括热备份等容灾支持,可以通过配置, 的方式选择是否使用。此外还会添加一些特殊的s i p 头字段支持等。 对于这样功能完备的s i p 协议栈而已,使用它做应用却是优缺点兼备的。优 点包括它的功能非常强大,而且一般而言性能是比较出众的。缺点是过于庞大, 对于许多应用而言有很多多余的功能,需要剥离出有用的部分,并按照所需要的 接口对其重新进行封装。 对于t r i l l i u ms i p 协议栈做出的最基本改造包括,将顶层的消息队列改为回 调的方式,将配置等部分剥离并集中,提供单独的接口以供调用。 此外还有其他的s i p 协议栈,它们各自具有不同的特点。包括r e s i p r o c a t e 协议栈,这是我们后来使用的一个开源协议栈,它也具有速度快,功能强大的特 点,和t r i l l i u ms i p 一样适用于服务器开发,也是目前使用最广泛的。j a i ns i p 协 议栈则是基于j a v a ,能和j a v a 的应用无缝地结合,此外j a i ns i p 和j a i ns l e e 归属于同一个组织1 2 j ,提供了r a 的源码,可以直接使用m o b i c e n t s 开发基于j a i n s i p 的业务。o s i p 基于c 语言编写,非常小巧,速度也非常快,适用于简单的 客户端应用开发,一些嵌入式开发也比较倾向于使用0 一s i p 。此外还有s i p x ,它 提供了整套的企业级解决方案,如果应用上没有复杂的架构设计,则可以依赖它 本身提供的解决方案。 北京邮电大学硕士学位论文 第二章相关技术简介 2 1 3c 与j a v a 代码的互通技术及j n i 2 1 3 1 项目中采用j n i 的目的 为了保证编解码效率,项目选择了速度较快的c c + + 协议栈。但上层的业务 逻辑是j 越,a 语言编写的,这就涉及到两种语言的互通问题。 解决方式有j n i 和s o c k e t 通信+ a s n 1 编码两种。前者直接将c c + + 代码加 载在虚拟机中执行,优点是实现起来非常简单快速,缺点是可能会导致内存泄漏 等问题。蜃者实现了松耦合,但可能会对效率有所影响。目前采取的还是第一种 方法。 2 1 3 2j m 的定义 j n i 即j a v an a t i v ei n t e r f a c e ,也就是j a v a 本地调用p l 。它允许j a v a 代码和 其他语言写的代码进行交互。j n i 一开始是为了本地己编译语言,尤其是c 和 c + + 而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。 使用i a v a 与本地已编译的代码交互,通常会丧失平台可移植性。但是,有 些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、 操作系统进行交互,或者为了提高程序的性能。j n i 标准至少保证本地代码能工 作在任何j a v a 虚拟机实现下。 2 1 0 3 使用j n i 可能产生的闯题 标准的j a v a 类库可能不支持你的程序所需的特性。 或许你已经有了一个用其他语言写成的库或程序,而你希望在j a v a 程序 中使用它。 你可能需要用底层语言实现一个小型的时间敏感代码,比如汇编,然后 在你的j a v a 程序中调用这些功能。 2 1 3 4j n l 的书写步骤 编写带有n a t i v e 声明的方法的j a v a 类。 使用j a v a c 命令编译所编写的j a v a 类。 使用j a v a h j n i j a v a 类名生成扩展名为h 的头文件。 使用c c + + 实现本地方法。 将c c + + 编写的文件生成动态连接库。 1 2 北

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论