一种利用Mbus通讯中间件来进行传输的方法

文档序号:7596446阅读:159来源:国知局
专利名称:一种利用Mbus通讯中间件来进行传输的方法
技术领域
本发明涉及一种利用中间件来进行传输的方法,尤其是涉及一种利用Mbus(The Message Bus)轻量级组件间通讯中间件来进行传输的方法。
背景技术
J.Ott、C.Perkins和D.Kutscher在2002年4月发表的RFC 3259中提出了本地协调消息总线(A Message Bus for Local Coordination),它是一个应用程序中多个组件之间轻载荷、面向消息的通讯协调协议。此协议提出了良好的地址表示法和寻址策略,典型的应用领域是本地会议控制和局域网内设备组的通信。它为局域网内一台或多台主机上的组件提供一个简单、灵活的消息通信信道,具有对等定位、点对点通讯、群组通讯和安全保证等特性,目前已在分布式多媒体会议系统、家庭网络普及计算环境等领域得到应用以协调各个应用功能组件。但它的传输机制并不支持大范围广域网上的协调控制由于使用了本机范围内的组播将消息发送给所有的本地对象,因此各个实体不管需不需要都必须接收并分辨该消息,这样当本地实体个数和发送的消息数目较多时会明显降低系统效率;它通过简单的超时重传策略实现可靠传输,在局域网内这还比较有效,但由于Internet传输时延的不确定性,在跨越局域网边界与远程结点通讯时这种非自适应的方式并不能保证精确的可靠语义;由于实体感知、状态维护和消息传输都依赖与传输层组播,但目前网络中并不是所有的路由器都支持组播,这进一步限制了它的应用。
鉴于本地协调消息总线在基于组件的本地多媒体会议系统中良好的实用性,Mbus轻量级组件间通讯中间件在设计过程中借鉴了它的地址表示法,同时解决了它在跨越局域网边界时遇到的上述各种问题,并对用户接口进行了合理的优化,为先进多媒体实时交互系统Admire的各个组件提供底层传输平台。由于以中间件的形式发布,充分考虑了用户的需要、良好的设计了接口,屏蔽了与特定系统相关的内容,因而它可以广泛的应用于需要准实时、可靠或者组通信的分布式系统中。

发明内容
针对上面的描述,本发明提出了一种利用Mbus通讯中间件来进行传输的方法,该方法包括步骤(A)在发送方的应用层发送Mbus命令;(B)构造层将用户欲发送的Mbus命令和指定的目的地址封装在特定类型的报文中;(C)此后在编码层将报文编码为字节流通过物理网络利用TCP协议传输给服务器;(D)字节流在服务器端进行解码后根据报文目的地址进行寻址,随后编码发送给匹配的接收者;以及(E)接收者再进行解码,最终将提取的Mbus命令派送给应用层进行处理。
根据本发明的一方面,其中服务器进一步执行下述处理(a)判断所构造的报文中是否指定了MAC地址,若已指定则执行步骤(b),若未指定则转至步骤(c);(b)判断是否等于本机MAC地址;(c)判断报文类型是REL、RPC报文还是COM报文,若是COM报文,则发送给匹配的本地客户端、发送给中心服务器、发送给匹配的目的转发器、发送给目的客户端。
根据本发明的另一方面,其中步骤(b)进一步包括下述处理(b1)若等于本机MAC地址则执行(b2),若不等于本机MAC地址则执行(b3);(b2)判断是REL、RPC报文还是COM报文,若是COM报文,则发送给匹配的本地客户端,若是REL、RPC报文,则判断目的地址个数是否唯一,若不唯一则构造应答并发送,若唯一则发送给指定客户端并且在构造应答的情况下发送应答;(b3)发送给中心服务器并且判断是否发送成功,若未发送成功则发送应答;若发送成功则判断目的地址个数是否唯一,若不唯一则构造应答并发送;若唯一则发送给特定的转发器并判断是否发送成功,若不成功则发送应答;若成功则发送给指定的客户端并且在构造应答的情况下发送应答。
根据本发明的另一方面,其中步骤(c)进一步包括(c1)若报文类型是REL、RPC报文,则执行上述步骤(b3)。


图1给出了MBUS系统的结构示意图;图2给出了根据本发明的发送报文程序的流程图;图3给出了根据本发明的MBUS命令传输的示意图;图4给出了根据本发明的系统状态的维护示意图;具体实施方式
对下面我们参考附图,对本发明的实施例进行详细的说明。
Mbus轻量级组件间通讯中间件可以为基于组件的多媒体会议系统、分布式系统中各个组件间的协调控制命令提供灵活、高效的底层传输平台,使上层的各个组件从复杂的网络通信中解放出来以专注于解决其领域本身的问题,这在一定程度上提高了系统的稳定性和健壮性并简化了系统的实现。Mbus支持多种交互模式和可靠性要求,可以完成如下功能●在本地以及远程的组件之间实时传递状态与控制信息,以实现分布式对象的互操作;●支持灵活的寻址策略,能够根据位置、组件类型等方式寻址,可以发送给单个目的地址,也可以发送给多个目的地址实现群组通信;●可以满足不同的可靠性要求,实现命令的不可靠传输、可靠传输、远程过程调用三种传输方式;●提供查询功能,每个实体可以按照一定的地址条件查询其他实体的存在状况和精确完整的匹配地址。
●采取了一定的安全策略,可以防止受到意外的干扰或者恶意的攻击;附图1给出了Mbus轻量级组件间通讯中间件系统结构图。它基于C/S模式,每台机器上运行一个转发器管理本地的多个客户端,同时各个转发器又连接到系统中的中心服务器完成数据的全局传输。本机的客户端和转发器之间通过共享内存进行通信,而转发器和中心服务器之间则通过TCP连接进行通信,这样通过与应答的结合保证了系统在时延不确定的Internet环境下精确的可靠语义。
下面就Mbus轻量级组件间通讯中间件的命令格式、报文格式、寻址策略、传输策略、状态感知机制和安全机制分别进行说明。
◆命令格式Mbus命令由命令头和0个或多个参数组成,其一般形式为<object>.qry|req|ack.<operation><arg0><arg1>...<argn>。其中<object>.qry|req|ack.<operation>构成命令头,为了组成在一个共同的层次上概念相关的命令,命令头以“.”分割分级构建;<arg0>~<argn>构成命令参数,参数间、参数与命令头之间以空格分隔,任一参数中如出现空格,必须以双引号将该参数引起。在命令头中<oject>指响应查询、接收命令或发出应答的对象;gry、req、和ack标识命令的分类查询命令、操作命令和应答命令;
<operation>则是由各Mbus对象自行定义的命令标识,用来标识各种用户操作。用户可以按照规定的格式自行定义Mbus命令,参数个数不限。
◆寻址策略Mbus地址用于在全局范围内唯一标识一个Mbus对象,是标记(默认的顺序,不显式写出)/值二元对的地址元素序列,各个值之间由冒号分隔。如下会议名媒体类型模块类型应用名位置进程IDMAC地址在此使用了进程ID和机器的MAC地址,这样结合前五项一定可以在全局范围内唯一标识一个Mbus实体。两个Mbus地址相等当且仅当它们的地址字符串相等(大小写敏感),Mbus地址A与Mbus地址B相匹配则是地址A由地址B的地址元素的子集按照规定的顺序构成。如Mbus地址“Admire:All:Service:Gateway:Center:1012:00-E0-18-D5-01-22”和Mbus地址“Admire:All:Service:Gateway:Center:1012:00-E0-18-D5-01-22”相等,而Mbus地址“Admire::::Center::00-E0-18-D5-01-22”与“Admire:::Gateway:Center::00-E0-18-D5-01-22”相匹配。Mbus报文的目的地址可以完全指定,也可以空缺其中的任何项,通过应用层的地址匹配方式实现组通讯,每个Mbus对象只处理目的地址与它本身地址完全相等或者相匹配的报文。
◆报文格式Mbus命令封装在Mbus报文中在网络上进行传输,报文由报文头和报文体两部分组成。报文头包含如下信息源地址、目的地址、报文类型和序列号,各个部分以‘\n’分割。源地址和目的地址为Mbus地址,其中源地址域标识消息发送者,这必须是一个所有的地址元素都指定的精确地址;目的地址域标识消息的预期接收者,这个域可以忽略一些地址元素以匹配多个接收实体。Mbus报文分为7类发送给多个接收者的普通报文(COM)、要求可靠传输的可靠报文(REL)、需要接收者给出显式处理结果的远程调用报文(RPC)、可靠报文的应答报文(AEL)、远程调用报文的应答报文(APC)、系统报文(SYS)、登录/注销报文(LOG)。序列号为32位的无符号整数,从同一个源发送的所有的消息有唯一的序号,序号范围从0到4294967295。报文体则规定了发送给目的实体的实际Mbus命令或者返回的特定值,为了实现简单每个报文中只含有一条Mbus命令或者应答。为了降低网络带宽这里引入了编解码字典,在发送时对一些频繁出现的Mbus命令和地址元素进行编码,接收方相应的进行解码后再提交给用户。
◆传输策略由于目前国内支持组播的网络并不普及,而部署单组播转换网关又会导致系统依赖性,并且用简单的超时重传机制实现的可靠传输策略在Internet不确定时延环境下并不能保证精确的可靠语义,同时还要涉及穿越防火墙等问题,Mbus轻量级组件间通讯中间件采用C/S模式基于TCP协议实现。系统结构如附图1所示。这里转发器和中心服务器均为独立的可执行程序,客户端实现为自动化组件,可以在任何支持自动化的程序设计语言中使用,通过这种方式系统实现了语言无关性。
考虑到在实际应用中每台机器上可能有多个客户端协同工作,同时有很多交互是在本机不同客户端进行,Mbus轻量级组件间通讯中间件在参与服务的每台机器上抽象出一个转发器负责管理本地的多个客户端。这一方面减轻了体系结构中上一层的压力,因为本地的多个客户端对外表现为一条通信链路,本地交互由转发器完成不必经由上一层;另一方面通过把一些复杂的功能集中到转发器简化了客户端,对于需要多个客户端的情况更是提高了系统的性能;同时由于所有的消息都先发送给本机的转发器,然后再由转发器发送给特定的目的客户端,这避免了非相关客户端无谓的检查从而提高了性能。
本机的客户端和转发器之间通过共享内存高效的传输报文;而转发器和中心服务器之间则建立TCP连接。客户端发送的所有报文经由共享内存到本机的转发器,然后通过TCP协议发送到中心服务器,中心服务器发给目的地址所对应的转发器,最后到目的客户端。为了实现上的简单要求可靠传输的报文目的地址必须唯一,这时每一级发送都需要检查发送的返回值,如果失败则构造应答报文通知源发送者,最后成功后也需发送应答如果是可靠报文(REL)则由转发器发送,这对用户来说透明;如果是远程过程调用报文(RPC)则由用户显式发送处理结果,这也同时作为源报文的应答。
用户可以通过指定合适的目的地址实现灵活多样的群组通讯,如发送给特定的会议、特定的媒体模块或特定的应用。应用层组通讯在底层通过多次传输层单播实现,此类报文不发送应答,但由于是TCP传输也保证了很高的可靠性。
应用层发送Mbus命令后,系统需要将它封装在Mbus报文中并编码以在网络上进行传输,服务器端收到报文后还需要进行解码,然后根据地址匹配策略寻址到相应的接收方。Mbus命令的完整传输过程如附图3所示。
这里采用层次化思想,下层为上层提供服务,在服务接口不改变的情况下允许各层改变其内部实现,从而提高了系统的可扩展性。其中应用层以下的各层属于轻量级组件间通讯中间件Mbus的内部实现,对用户是透明的。在应用层用户通过Mbus提供的一组接口来使用Mbus的功能,构造层将用户的欲发送的Mbus命令和指定的目的地址封装在特定类型的报文中,然后在编码层将报文编码为字节流通过物理网络利用TCP协议传输给服务器;字节流在服务器端进行解码后根据报文目的地址进行寻址,随后编码发送给匹配的接收者;接收者再进行解码,最终将提取的Mbus命令派送给应用层进行处理。
发送报文时的详细流程如附图2所示,服务器进一步执行下述处理(a)判断所构造的报文中是否指定了MAC地址,若已指定则执行步骤(b),若未指定则转至步骤(c);(b)判断是否等于本机MAC地址;(c)判断报文类型是REL、RPC报文还是COM报文,若是COM报文,则发送给匹配的本地客户端、发送给中心服务器、发送给匹配的目的转发器、发送给目的客户端。
其中步骤(b)进一步包括下述处理(b1)若等于本机MAC地址则执行(b2),若不等于本机MAC地址则执行(b3);(b2)判断是REL、RPC报文还是COM报文,若是COM报文,则发送给匹配的本地客户端,若是REL、RPC报文,则判断目的地址个数是否唯一,若不唯一则构造应答并发送,若唯一则发送给指定客户端并且在构造应答的情况下发送应答;(b3)发送给中心服务器并且判断是否发送成功,若未发送成功则发送应答;若发送成功则判断目的地址个数是否唯一,若不唯一则构造应答并发送;若唯一则发送给特定的转发器并判断是否发送成功,若不成功则发送应答;若成功则发送给指定的客户端并且在构造应答的情况下发送应答。
其中步骤(c)进一步包括(c1)若报文类型是REL、RPC报文,则执行上述步骤(b3)。
附图4为Mbus轻量级组件间通讯中间件系统的状态维护图。客户端创建、销毁或隐式退出时服务器都会通过系统命令得到通知,同时服务器也监测与转发器之间的TCP连接,当检测到连接断开后更新自身的状态。
◆状态感知Mbus轻量级组件间通讯中间件的中心服务器维护有全局状态信息并负责报文的寻址和传输,用户可以通过特定的接口得到某个Mbus对象的精确地址以进行报文的可靠传输(保证目的地址唯一)。系统综合多种策略来维护全局状态的正确性(附图4)首先,客户端创建和销毁时会通过系统命令“mbus.notify.clientadd”和“mbus.notify.cientdrop”显式向服务器报告。
其次,转发器监视客户端的进程句柄,当检测到客户端隐式退出后向服务器报告。
第三,服务器还监测与转发器之间的TCP连接,当检测到连接断开后将与之对应的转发器记录从活动列表中删除。
第四,由于TCP连接意外断开后服务器并不能很快的检测出(测试结果表明要超过30分钟),因此服务器通过周期性的向转发器发送心跳报文来加快断开的检测过程,为了防止占用太多资源实现时服务器每秒向一个转发器发送一次报文,这样在增加数十个bps带宽代价下意外断开检测时间可缩减到200秒(100个转发器同时连接,转发器数目减少时检测时间会相应缩短)。
Mbus轻量级组件间通讯中间件中采用的状态感知机制比本地协调消息总线中的周期性心跳报文机制更加及时和高效。
◆安全机制为了防止其它程序意外的或恶意的干扰,Mbus对象可以指定口令。Mbus对象如果要向设置了口令的对象发送操作命令,必须首先登录该对象,否则对该操作命令不予处理。登录完成后一直有效,直到Mbus对象注销登录或Mbus对象本身销毁。Mbus对象同时登录和被登录的数量没有限制。此外,对传输的报文也可以进行加密和认证以进一步的保证传输消息的安全性。
由于Mbus轻量级组件间通讯中间件的设计目标是在各个组件或应用程序之间传递状态与控制信息,这些信息负荷一般都不会太大,因此中心服务器并不会成为系统瓶颈。经过在各种网络条件下反复测试,Mbus轻量级组件间通讯中间件能很好的完成预定的功能,并达到良好的性能,可以广泛的应用于网络多媒体会议系统、分布式系统中,作为它们协调控制命令的底层传输平台。
目前Mbus轻量级组件间通讯中间件已经在先进多媒体实时交互系统Admire中得到了充分的应用。Admire系统基于组件方式构建,包括音频模块CAT、视频发送模块VideoSender、视频接收模块VicAdmire、文件共享模块FileShare、网页共享模块WebShare、GUI模块AdmireUI等,同时还有作为服务运行的媒体网关MediaGW、音频网关AGW、视频网关VGW、控制服务器ControlServer和H323互通模块H323Redir等。这些组件和服务程序中都嵌入了Mbus客户端,通过Mbus轻量级组件间通讯中间件在本机或远程的各个模块之间准实时的传递程序自定义的各种控制命令和状态信息,达到整个系统的正常工作。经过大规模的测试和长时间的实际使用,Admire系统运行正常,Mbus轻量级组件间通讯中间件可以很好的完成各个组件和服务程序之间的通信任务。
对于本领域的普通技术人员来说可显而易见的得出其他优点和修改。因此,具有更广方面的本发明并不局限于这里所示出的并且所描述的具体说明及示例性实施例。因此,在不脱离由随后权利要求及其等价体所定义的一般发明构思的精神和范围的情况下,可对其作出各种修改。
权利要求
1.一种利用Mbus通讯中间件来进行传输的方法,该方法包括步骤(A)在发送方的应用层发送Mbus命令;(B)构造层将用户欲发送的Mbus命令和指定的目的地址封装在特定类型的报文中;(C)此后在编码层将报文编码为字节流通过物理网络利用TCP协议传输给服务器;(D)字节流在服务器端进行解码后根据报文目的地址进行寻址,随后编码发送给匹配的接收者;以及(E)接收者再进行解码,最终将提取的Mbus命令派送给应用层进行处理。
2.根据权利要求1所述的方法,其中服务器进一步执行下述处理(a)判断所构造的报文中是否指定了MAC地址,若已指定则执行步骤(b),若未指定则转至步骤(c);(b)判断是否等于本机MAC地址;(c)判断报文类型是REL、RPC报文还是COM报文,若是COM报文,则发送给匹配的本地客户端、发送给中心服务器、发送给匹配的目的转发器、并且发送给目的客户端。
3.根据权利要求2所述的方法,其中步骤(b)进一步包括下述处理(b1)若等于本机MAC地址则执行(b2),若不等于本机MAC地址则执行(b3);(b2)判断是REL、RPC报文还是COM报文,若是COM报文,则发送给匹配的本地客户端,若是REL、RPC报文,则判断目的地址个数是否唯一,若不唯一则构造应答并发送,若唯一则发送给指定客户端并且在构造应答的情况下发送应答;(b3)发送给中心服务器并且判断是否发送成功,若未发送成功则发送应答;若发送成功则判断目的地址个数是否唯一,若不唯一则构造应答并发送;若唯一则发送给特定的转发器并判断是否发送成功,若不成功则发送应答;若成功则发送给指定的客户端并且在构造应答的情况下发送应答。
4.根据权利要求3所述的方法,其中步骤(c)进一步包括(c1)若报文类型是REL、RPC报文,则执行上述步骤(b3)。
全文摘要
本发明提出了一种利用Mbus通讯中间件来进行传输的方法,该方法包括步骤(A)在发送方的应用层发送Mbus命令;(B)构造层将用户欲发送的Mbus命令和指定的目的地址封装在特定类型的报文中;(C)此后在编码层将报文编码为字节流通过物理网络利用TCP协议传输给服务器;(D)字节流在服务器端进行解码后根据报文目的地址进行寻址,随后编码发送给匹配的接收者;以及(E)接收者再进行解码,最终将提取的Mbus命令派送给应用层进行处理。
文档编号H04L29/06GK1588913SQ20041007049
公开日2005年3月2日 申请日期2004年8月5日 优先权日2004年8月5日
发明者盛向治, 于敏, 金天, 李未 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1