APP下载

基于聚合代理的SIP订阅机制扩展*

2015-09-25吴海波陈志辉

通信技术 2015年8期
关键词:发送给链路代理

王 磊,吴海波,陈志辉

0 引言

IETF提出了基于SIP的事件订阅通告机制规范:RFC3265[1],规范定义了两个扩展请求消息:SUBSCRIBE和NOTIFY。SUBSCRIBE请求用于发起订阅请求,NOTIFY请求用于通告当前资源状态。

SIP协议中的订阅状态是有有效期的,为了维护订阅状态,必须在有效期内再次发送SUBSCRIBE消息。有效期的值没有统一定义,时间短的有30秒,当客户端与服务器端存在大量订阅时,为了维护各自的订阅状态,每个订阅在订阅周期内都会再次发送SUBSCRIBE消息。在短时间内,在链路上可能存在大量的用于维护订阅状态的SUBSCRIBE消息、200 OK消息和NOTIFY消息。如果链路是无线链路,将大大浪费无线资源,严重时甚至可能影响其它业务的正常开展。文章提出了一种基于聚合代理SIP订阅机制的扩展将能大大缓解这个问题。

1 聚合代理模块设计

在RFC3856[2]中,规定用户订阅标准流程如图1所示。

图1 标准订阅流程

标准的订阅方式每个订阅都需要在订阅有效期内发送订阅消息和通告消息来维护各自的订阅状态。这种方式将增大了无线链路带宽开销。

基于上述情况,在无线链路的两端,分别部署一个聚合代理订阅模块。各个终端的Subscribe消息、Notify消息和200 OK消息整理汇聚后发送给无线链路另一端的聚合代理订阅模块,聚合代理订阅模块再分解出相应的消息发送给服务器,聚合代理对订阅对象的维护主要是根据消息头中“Expires”头和“CSeq”头。“Expires”头给定了订阅消息过期的相关时间,需要继续订阅,就必须在有效期内再次发送订阅消息,如果Expires为0,表示取消该订阅。“CSeq”头是为了在会话中对订阅进行排序的,区分订阅请求和订阅的重发。

图2描述了使用聚合代理后的具体实现流程。

图2 使用聚合代理订阅流程

具体说明如下:

步骤1:观察者M1和观察者M2发送标准Subscribe消息(Expires:30 CSeq=1)发起订阅。

步骤 2:根据 Subscribe消息中“Expires”和“CSeq”头的信息,查看表1可知M1和M2都是新增用户。聚合代理 A维护的用户群 G1={M1,M2}。增加成员的时候,需要在聚合代理模块A中根据订阅消息,建立存储M1和M2用户的相关信息,聚合后的Subscribe消息中也将携带M1和M2的完整信息,发送给服务器端的聚合代理B。同时消息头中,“require”头应包含“GBS”字段,用于说明当前消息是经过聚合代理处理的,需要聚合代理还原。

步骤3:服务器端的聚合代理B收到了聚合后Subscribe消息,根据消息解析并存储订阅用户M1和M2的信息,聚合代理 B维护的用户群 G2={M1,M2}。然后根据这些用户订阅信息还原成两个标准的Subscribe消息发送给服务器。

步骤4:服务器返回200 OK消息给聚合代理B。

步骤5:聚合代理B将两条200 OK消息聚合后发给聚合代理A。由于用户M1,M2基本信息在聚合代理模块中已经存在,随后聚合发送的200 OK消息、Notify消息和Subscribe消息将不再携带M2的订阅基本信息。

步骤6:聚合代理A还原两条标准200 OK消息分别发送给M1和M2。

步骤7:服务器发送Notify消息给聚合代理B。

步骤8:聚合代理B将两条Notify消息聚合后发给聚合代理A。

步骤9:聚合代理A还原两条标准Notify消息分别发送给M1和M2。

步骤10:观察者M1和观察者M2返回200 OK消息给聚合代理A。

步骤11:聚合代理A将两条200 OK消息聚合后发给聚合代理B。

步骤12:聚合代理B还原两条标准200 OK消息发送给服务器。

步骤13:观察者M1发送标准Subscribe消息(Expires:30 CSeq=2),观察者M2发送标准 Subscribe消息(Expires:0 CSeq=2)。

步骤14:查看表1,M1是用户更新,M2是用户删除。聚合代理A标识M2将要删除,并将收到的Subscribe消息聚合后发给聚合代理B。

表1 消息头分析 s

步骤15:聚合代理B将收到了聚合后Subscribe消息后,标识M2将要删除,并还原成两个标准的Subscribe消息发送给服务器。

步骤16:服务器返回200 OK消息给聚合代理B。

步骤17:聚合代理B将两条200 OK消息聚合后发给聚合代理A,然后删除M2相关信息,此时G2={M1}。

步骤18:聚合代理A还原两条标准200 OK消息分别发送给M1和M2,然后删除M2相关信息,此时G1={M1}。

步骤19:服务器发送Notify消息给聚合代理B。

步骤20:聚合代理B将Notify消息聚合后发给聚合代理A。

步骤21:聚合代理A还原两条标准Notify消息分别发送给M1。

步骤22:观察者M1返回200 OK消息给聚合代理A。

步骤23:聚合代理A将200 OK消息聚合后发给聚合代理B。

步骤24:聚合代理B还原标准200 OK消息发送给服务器。

2 应用场景

聚合代理模块可以应用在无线链路环境下,应用环境如图3所示。

图3 聚合代理应用场景

用户M1-M10链接到聚合代理A,通过无线窄带链路链接到聚合代理B,在链接到订阅服务器。在T1时刻M1发起订阅,T2时刻,M1保持订阅,M2发起订阅,以此类推,到T10时刻时,一共有10个用户完成了订阅,并保持M1-M10用户10个订阅状态(注:T1、T2…T10时间的时间间隔不能超过订阅的有效期,即“Expires”的值)。消息通过无线链路发送到订阅服务器上。

从无线链路上传输的消息条数分析,如图4所示,按照标准的流程,一个用户完整的订阅流程或订阅状态更新流程在无线链路上传输有4条消息,10个用户共计有40条消息在无线链路上传输。加入聚合代理模块后,通过它的聚合作用,将无线链路上传输的40条消息减少为了4条消息。总的来说,当没有聚合代理时,无线链路上的消息数量随订阅用户的增加成线性增长的态势,而加入聚合代理后,无线链路上的消息数量随用户的增加保持不变。

图4 两种方式无线链路上消息条数对比

而从无线链路上数据流量分析,文章做了如下假设:假设1次订阅4条消息产生的数据流量是1 920 Byte/s,每增加一个订阅维护消息流程,数据流量增加200 Byte/s。如图5所示,对两种流程而言,新增一个订阅,在无线链路上产生的数据流量基本一致,而随着订阅用户的增加,标准流程无线链路上的数据流量成线性增长,而加入聚合代理后,整个无线网络流量的增加速度远远低于没有聚合代理时。聚合代理流量的节省主要来源对订阅维护流程处理。当标准订阅流程流量增长达到链路流量极限的时候(如图5所示,当订阅条数大于10时),随着订阅的增加,数据流量将超过无线链路的带宽,产生丢包,影响业务的正常开展,而此时,加入聚合代理后的流程却还远远未到链路的极限流量。

图5 两种方式无线链路上传输字节大小对比

3 结语

通过分析可知,基于聚合代理的订阅机制能大大降低因订阅更新消息所带来的链路负载,订阅用户越多,其聚合效果越明显。SIP订阅消息带给无线链路的负载降低,这将更加有利于VoIP应用在民用和军用领域[3]无线网络上的使用和推广。同时,本文提出的聚合思想也能对无线链路VoIP应用设计提供一种积极有效的设计思路。

当前,本文只是从SIP订阅机制上阐述了聚合代理的机制,下一步应当综合考虑将聚合代理的机制扩展应用到整个SIP协议当中,比如注册[4]等,从而进一步降低SIP消息对无线链路资源的占用。

[1] Adam Roach. Jacobson. Session Initiation Protocol(SIP) -Specific Event Notification[S],IETFRFC3265.June 2002.

[2] Jonathan Rosenberg.A Presence Event Package for the Session Initiation Protocol(SIP)[S],IETF RFC3856.August 2004.

[3] 王俊,陈志辉,田永春.统一通信技术在战术通信网中的应用研究[J].通信技术,2014,47(02):184-189.

WANG Jun,CHEN Zhi-hui,TIAN Yong-chun.Application of Unified Communication Technology in Tactical Communications Network[J].Communications Technology,2014,47(002):184 -189.

[4] Rosenberg J,Schulzrinne H,Camarillo G,et al.Handley M and Schooler E.SIP:Session Initiation Protocol[S],IETF RFC3261.June 2002.

猜你喜欢

发送给链路代理
天空地一体化网络多中继链路自适应调度技术
基于星间链路的导航卫星时间自主恢复策略
【微信小课堂】:如何向好友发送语音
代理圣诞老人
你说我说大家说
公告
我的录梦机
108名特困生有了“代理妈妈”
胜似妈妈的代理家长
基于3G的VPDN技术在高速公路备份链路中的应用