您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页基于SIP协议的网络用具设计和实现

基于SIP协议的网络用具设计和实现

来源:意榕旅游网
维普资讯 http://www.cqvip.com

第33卷 第1期 计算机工程 2007年1月 互33 No.1 Computer Engineering January 2007 ・开发研究与设计技术・ 文章一号:1000--3428(2007)01--0277--03 文蜊 识码 A 中圈分类号。TP391 基于SIP协议的网络用具设计和实现 龙意平,张承平 (中国矿业大学计算机科学与技术学院,徐州221008) I耍:随着家庭用具从具有单个任务的设备演变为具有多项任务的特殊设备,家庭用具的下一步将转换成网络用具,同时促进家庭自动 化控制的发展。该文通过对会话初始化协议SIP中增加一种新的DO方法来实现对网络用具的控制。 关奠词:会话初始化协议;网络用具;SIP扩展;DO方法 Design and Implementation of Network Appliances Based on SIP LONG Zhiping,ZHANG Yongping (College of Computer Science and Technology,China University of Mining Technology,Xu ̄ou 221008) [Abstract]Home appliances have evolved from being single task devices tO integrating several tasks in a particular device.The next step for home applinaces is tO transform into network applinaces nad accelerate the development of home automation.This research has hte objective of adding a new method,called DO,tO hte session iniitation protocol(SIP)in order tO control htese network applinaces. [Key words]Session initiation protcool;Network applinaces;SIP extend;DO method 1概述 核心协议之一。它最初是由IETF的MMUSIC工作组于1999 据预测,互联网应用的下一波高潮将是网络用具(NA)的 年提出的一个标准,用来解决IP网上的信令控制,实现实时 广泛应用。电冰箱将记录食品的存量以便重新订购,闹钟调 通信应用的一种信令协议。在IP网络分层模型上,SIP是工 整日程,告诉天气情况和路况以便通知在合适的时间出行。 作在应用层上的一个信令协议,可以用来建立、修改和终止 这些应用需要彼此的交流和协调。 有多方参与的多媒体会话进程,用于邀请新的成员加入一个 由于涉及到诸多设备,网络用具很难被准确定义,据 已经存在的会话或者创建一个全新的会话。SIP使用会话描 Simon Tsang定义,网络用具被定义为包含一个网络处理器并 述协议(Session Description Protocol,SDP)描述会话并使用用 具备特定功能的消费设备,如冰箱、咖啡机、电话等。 户数据包协议(User Datagram Protocol,UDP)进行传输。 当前,已经有一些技术用来控制网络用具和提供一定程 2.1 SIP基本功能 度上的家庭自动化控制,如:X.10,HAVI和UPnP等,但是 IETF坚持采用分层的方法来创建服务,SIP作为应用层 仍缺少对广域存取控制和各种网络设备之间的交互能力的支 上的信令控制协议,用来建立、修改和终止有多个参与者参 持,即中间域通信问题。恰当扩展后的SIP协议是一个扮演 加的多媒体会话进程,参与会话的成员可以通过组播、单播 这种角色的候选工具,如图l所示。 或者二者结合的方式进行通信。SIP可以用于邀请新的成员 加入一个已经存在的会话,也可以用于创建一个全新的会话。 同时SIP独立于它处理的多媒体会话类型和描述会话所使用 的机制。一般情况下,SIP协议使用RTP协议传送音频和视 频流,使用SDP协议进行媒体描述。 user SIP协议还具有用户可移动性。SIP协议的动态注册机 (SIPU 制,使用户移动变得很方便。用户端在接入SIP网络时,首 先向当地注册服务器发出注册请求,将自己的SIP URL和IP 地址告知注册服务器,如果注册服务器不是用户的属主,注 册服务器将根据用户注册的URL找到并通知其属主:自己现 圈1使用SIP控■舟络用具的体熏鳍袖 在为用户服务,此后对该用户的呼叫先到达用户的原属主服 会话初始化协议(Session Initiation Protocol,SIP)依RFC 务器,再由其重定向到现在为用户服务的服务器上,从而有 形式定义,满足网络用具之间交互的许多特性,如安全、认 效实现对移动用户的支持,如果在会话进行中用户移动到新 证、可靠性、全局地址解析、支持呼叫建立和用户的可移动 的位置,则可通过re—INVITE重新建立新的会话来实现切换。 性等。本文通过对SIP协议的扩展即DO方法来设计和实现 2.2SIP舟络实体 网络用具之间的交互。 SIP中有两种实体:用户代理(User Agent,UA)和网络服 2SIP协议 作者簧介:龙志平(1981一),男,硕士生,主研方向:嵌入式操作系 SIP协议由于开发简单,同时具有继承性,近年来在通 统,网络协议;张永平,副教授 信和网络研究领域受到极大关注,是下一代网络(NGN)中的 牧稿日期:2006-01—20 E-mail:zhplong@163.corn 一277_一 维普资讯 http://www.cqvip.com

务器,uA是一个用于和用户交互的SIP实体,它通常有一 个与用户连接的接口。根据UA在会话中扮演的角色不同分 为用户代理客户机(User Agent Client,UAC)和用户代理服务 器(User Agent Server,UAS),前者发起呼叫请求,后者响应 呼叫请求。根据uA是否保存状态可分为有状态用户代理, 有部分状态用户代理和无状态用户代理。 SIP网络服务器分为代理服务器、重定向服务器和注册 服务器。代理服务器负责接收用户代理发来的请求,根据网 络策略将请求发给相应的服务器,并根据接收到的应答对用 户做出响应,可以根据需要对收到的消息改写后再发出。重 定向服务器用于在需要时将用户新的位置返回给呼叫方,呼 叫方可根据得到的新位置重新呼叫。注册服务器用于接收和 处理用户端的注册请求,完成用户地址的注册。以上服务器 可共存于一个设备,也可分布在不同的物理实体中,SIP服 务器完全是纯软件实现,可以根据需要运行于各种工作站或 专用设备中。 为了完成呼叫请求,SIP实体可能需要通过非SIP向位 置服务器(Location Server,专门提供位置信息的服务器)进行 数据查询。这部分协议不是SIP协议的范畴,可用轻量目录 访问协议(Light Directory Access Protocol。LDAP)。 2.3SIP消息 SIP协议采用基于文本格式的C/S模式,以文本的形式 表示消息的语法、语义和编码,客户机发起请求,服务器进 行响应,SIP独立于低层协议——TCP、UDP或SCTP,采用 自己的应用层可靠性机制来保证消息的可靠传送。 SIP消息有两种类型:请求消息和响应消息。一个SIP 事务由一个请求、一个或者几个临时响应以及一个最终响应 组成。请求消息包含一个请求行、几个消息头、一个空行和 一个消息体。SIP请求消息的请求行的格式为:Request—Line =Method SP Request—URI SP SIP—Version CRLF。如:INVITE sip:bob@cumt.edu.cn SIP/2.0。请求行中包含了一个方法,决 定了请求消息的类型和目的。IETF工作组定义了6种请求方 法:INVITE,ACK,CANCEL,BYE,REGISTER。OPTIONS。 作为Server方,当收到Client方发送的请求消息后,将 会产生一系列响应消息,用以表示对该请求的处理情况。SIP 响应消息包含状态行、消息头、空行和消息体。状态行的格 式为版本号、状态码和原因短语,即:Status—Line=SiP—Version SP Status—Code SP Reason-Phrase CRLF。如:SIP/2.0 1 80 Ringing,状态码有6种不同的类,如表l所示。 表1 SIP响应代码及其含义 状态码 原因码 状态码 原因码 100~I99 报告 400~499 客户端错误 200~299 成功 500~599 服务器错误 30o~399 重定向 60o~699 全局错误 SIP消息中包括一些标题头,SIP请求在请求行之后包含 标题头,而SIP响应将它们放在状态行之后。标题头提供了 关于请求(或应答)的信息和关于这些消息所包含的消息体的 信息。标题头由标题头名、冒号和标题头值组成。一些常用 的标题头,如:Form,To,Cseq,Via,Content—Type,Content— Length。 SIP消息的消息体决定于它的应用,一般采用SDP,但 也可以由任何不透明物体组成,由于SIP代理不需要检查消 息体,消息体中的内容对它们是透明的。正是由于SIP消息 的灵活性,使得它成为因特网技术的理想协议,同时也可用 一278一 于网络用具的控制。 2.4 SIP{Il息扩展对网络用具的控翻 由于SIP协议的简单和灵活,因此很容易扩展,SIP扩 展必须遵循一定的扩展原则。扩展SIP时,不能破坏SIP简 单性和可管理性;不能破坏SIP对等关系;必须保持SIP会 话建立过程与SIP会话描述之间的独立性;不要改变原有方 法的语义。 前面提到的SIP协议的6个方法都不能满足网络用具控 制的需求,因而Simon Tsang提出了DO方法,该方法可以 不必建立新的会话就可以在用户代理之间发送请求,但是这 并不意味着不能在已经存在的会话中使用,在这种情况下该 方法中涉及的用户代理可能是用具控制器、计算机程序或者 SIP服务器。 SIP协议控制网络用具的过程为:当用户要执行网络控 制时,SIP用户UA发出Invite命令,经网络到达NA,NA 回送响应200 OK,用户UA收到确认消息后,向网络用具发 出DO请求使它执行相应的操作,用户再次接收到网络用具 在操作完毕回送的响应200 OK后,发出Bye请求来中止本 次操作。 3 SIP协议在暇络用具控倒中的设计和实现 本文利用了OpenWengo中的SIP协议栈,OpenWengo 是个开源的VolP,为了避免混淆,用SIP用户代理表示网络 电话,SIP用户代理和SIP协议栈用C语言实现,编译工具 选用GNU C/C++编译器。 3.1 SIP协议栈的体系鳍构 SIP是一个分层结构的协议,意味着它的行为根据一组 平等独立的处理阶段来描述,每一个阶段之间只是松耦合, 协议分层描述是为了允许功能的描 述可在一个部分跨越几个元素,它 开始 ) 不指定任何方式的实现。SIP协议 J 栈由应用层、控制层、事务层和传 初始化s 协议栈l 输层组成。应用层由用户应用程序 给s 协议栈分配配置 组成,任何涉及到用户代理的代码 必须添加在这一层,一个应用程序 生成协议栈旬柄 需要通过协议栈初始化函数和集合 回调函数访问该协议栈,栈初始化 函数用以缺省的参数来初始化,构 生成事务管理器旬柄 建栈配置,分配栈旬柄和事务管理 J 器旬柄。这些旬柄用于访问栈和请 结束 : 求一个事务,流程如图2所示。 圈2 sII.协_发栈租始化澈程 一个事务消息被接收到或者发 生状态改变,集合回调函数将被调用。 在控制层中有栈控制方法,该层包括栈初始化程序和负 责为更低层分配旬柄。事务层负责处理SIP协议栈方法,如 果UA想访问另一个UA,该层处理INVITE请求和返回一个 响应消息,当传输层发送和接收UDP消息时,事务层直接和 传输层交互。 3.2 SIP协议栈中扩展DO方法 由于本文的研究主要是通过在SIP协议栈中扩展DO方 法来实现对网络用具的控制,因此主要的代码在事务层,在 应用层和控制层也有少量代码。 首先向控制层和事务层中分别加入SIP_METHOD_DO 和SIP TRANSACTION_METHOD—DO两个DO方法以便可 以被SIP协议栈确认为SIP方法,新的方法需要有事务状态 维普资讯 http://www.cqvip.com

与之相联系,这些事务状态分别为SIP_TRANSC—ST ATECLIENTDO———一旦参数设置好,程序调用函数AppSendDoMsg,该函数负 REQUEST—RCVD和SIP_TRANSC—ST 责从控制层获得事务管理器句柄。通过这个句柄,程序便通 过事务层使用上面的参数来产生一个事务消息,同时经过事 务层来发送一个事务请求。 当事务层构建好一个请求消息后, ATECLIENTDO———REQUEST—SENT,一旦协议栈发觉有DO 方法的存在,DO事务句柄便增加。 当SIP协议栈收到一个事务请求,它便按照请求方法处 : 开 始 ) 理该请求。当接收到一个事务请求,协议栈调用请求处理程 序检查该请求方法。如果一个事务请求是DO请求,检查程 序便调用一个名为HandleDolnlnkial State函数,该函数负责 调用接收到回调函数的事务消息并且改变事务状态为 SIP_TRANSC—STATE—CLIENT—DO—REQUEST—RC VD。应 用层的代码主要包括AppTranscstatechanged EvHandler、 AppTranscMsgReceivedEvHandler和AppTranscMsgToSend 3个回调函数。如图3所示。如果状态被设置为SIP_TRANSC— STATE_C LIENT—DO—REQUES T—RCVD,调用AppTransc stateChangedEvHandler函数发送一个200 OK消息表示请求 已经收到。如果没有收到200 OK响应消息,发送DO请求的 程序必须重新发送事务请求。 图3事务状态改变漉程 第2个回调函数AppTranscMsgReceivedEvHandler发觉 有一个DO请求,它便分析该DO请求的SIP消息,由于该 函数只专注于SIP消息的消息体,一旦该消息被解析出来, 它便提取出包含SIP用户代理行为的消息体,它通过将该行 为与用户代理执行的行为列表对比,如果该行为有效,该函 数便调用程序控制器执行该请求。如果SIP消息体中的行为 不是一个有效的行为,回调函数简单返回就行。该回调流程 如图4所示。 图4事务消息囿调漉程 为了发送一个DO请求消息,程序必须为DO消息设置 参数,这通过调用函数setDoRequestMessage来完成,该函数 用来接收目的地用户、目的地地址、发送地址和执行行为。 它便调用回调函数AppTranscMsgTo Send。该函数用来以application/text格 ● SipMsgSetContentType 式设置Content—Type头部和以文本格 Header (“applicatio ̄text”) 式设置请求消息体,同时该函数通过调 用setDoRequestMessage函数来填充消 SipMsgSetBody 息体,该流程如图5所示,一旦请求消 ( 60nBuffer) 息被构建好并且被事务层所证实,它便 + 通过打开一个套接字和发送包含SIP 结 束 、 DO ̄J U 到事务层。 田5清Jl‘发送黼 3.3 试DO方法 ….……一一 为了测试加入到SIP协议栈中的DO方法,在局域网中 使用两个代表网络用具的SIP用户代理,SIP用户代理通过 局域网实现端到端的连接,也就是说用户代理之间的通信不 经过SIP代理服务器而直接通信。个人电脑通过使用程序来 与SIP用户代理来实现通信。测试环境流程如图6所示。 圈6测试环境 如上所述,为了发送一个DO请求消息,SIP用户代理 需要通过函数setDoRequestMessage设置一些参数和通过函 数AppSendDoMsg发送消息,函数setDoRequestMessage包 括目的地用户、目的地地址、源地址和执行的行为。而函数 AppSendDoMsg没有任何参数,当SIP用户代理A通信建立 在Pc机上,函数setDoRequestMessage以下面的一些参数调 用,目的地=4001,目的地地址=202.119.192.55,源地址 =202.119.192.53,行为=“振铃”,成功设置好参数后,函数 AppSendDoMsg直接迅速地发送DO请求给用户代理B,实 现它们之间的通信。 4结束语 本文通过对SIP协议扩展DO方法,实现了对网络用具 的控制。但与H.248、MGCP等协议不同,SIP协议本身为一 对对等协议,适合控制松耦合的设备,不适合控制紧耦合的 设备。 参考文献 l Gonzalo.Camarillo.SIP Demystiifed[M].McGraw—Hill TELECOM, 20o2. 2 Rosenberg J.Schulzrinne H.Camanilo G.SIP:Session Initiation Protocol[S].RFC 3261.2002. 3 Tsang S.Requirements for Networked Appliances:Wide-Area Access, Control and lnterworking[Z].1ETF lnternet Draft,2000. 4 Tsang S.SIP Extensions for Communicating with Networked Appliances[z】.IE] lnternet Draft,2000. 5张智江.SIP协议及其应用【M】.北京:电子工业出版社,2005—01. —-279_一 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务