一种GIOP到RapidIO的新协议的制作方法

文档序号:7551272阅读:753来源:国知局
专利名称:一种GIOP到RapidIO的新协议的制作方法
技术领域
本发明涉及嵌入式系统中的通信协议,具体涉及一种GIOP到RapidIO的新协议。
背景技术
RapidIO是一种高速、分组交换、全双工的互连体系结构,它的提出是针对在芯片间及板间进行数据和控制信息的传输,其传输效率高于以太网,在嵌入式系统领域具有明显的优势。通用ORB间协议GIOP (general Inter-ORB protocol)为ORB之间的交互详细规定了一套标准的传输语法(低层次的数据表达)和一系列消息格式。GIOP是为ORB到ORB之间的交互而创建的,它直接工作在任何满足规定的面向连接的传输协议上。GIOP使CORBA可以在不同操作系统和编程语言的环境下实现客户和服务器对象的互操作。在CORBA规范中,对于GIOP自身而言,它不提供完整的交互功能,它必须被映射为具体的协议。GIOP到TCP/IP存在映射II0P,但是TCP/IP应用在嵌入式系统中有明显的局限性,因此越来越多的嵌入系统采用RapidIO技术,GIOP到RapidIO之间映射的研究还处于空白阶段。CORBA参照模型包 括ORB内核(ORB core)、对象适配、客户端存根(IDL stub)和服务端框架(IDL skeleton)、动态DII/DS1、CORBA客户端和服务端、ORB之上的服务(包括名字服务,事件服务)、底层驱动等。从CORBA的体系中可以看出,CORBA客户端程序与服务端程序进行数据通信的基础是建立了统一的GIOP协议以及统一的数据通信架构。客户端对不同地址空间中的远端服务对象的使用过程,如同从本地的地址空间一样方便。GIOP 协议内容包括公共数据表不 CDR (common data representation)、GI0P 消息格式、GIOP消息传输、IIOP协议(internet ORB间协议)以及双向GIOP (B1-DirectionalGI0P)。GIOP定义了不同ORB间互操作的协议,它提供一个抽象协议规范,能被映射为常见的面向连接的传输协议。应用最广泛的因特网ORB间协议(II0P,internet Inter-ORBprotocol)就是GIOP消息传输到TCP/IP连接的映射。在基于网线传输的机制与TCP/IP协议基础上,IIOP协议就是具体的GIOP实现。但是由于过多的编码/解码,数据复制以及高阶的功能调用,HOP协议在高速网络中表现出较低的性能。

发明内容
针对上述现有技术,本发明要解决的技术问题是由于过多的编码/解码,数据复制以及高阶的功能调用,IIOP协议在高速网络中表现出较低的性能。为了解决上述技术问题,本发明采用如下技术方案
一种GIOP到RapidIO的新协议,其特征在于,包括硬件层、RapidIO总线层、RCS协议栈层、RI0-10P协议层、GIOP层、应用层;在硬件层中采用RapidIO接口接入板卡上RapidIO交换芯片;在所述RapidIO总线层中,所述RapidIO交换芯片的物理链路再接入交换网络中,网络中的交换模块负责维护点对点通信的路由信息;所述RCS协议栈层运行在RapidIO的网络中的各个非交换节点上,RCS协议栈为对RapidIO的第一次封装,通过RCS协议栈可以实现节点间的快速通信与数据交换;所述RIO-1OP协议层由对RapidIO进行第二次封装,即把RCS封装成RIO-1OP协议,这样RIO-1OP协议使得所有的GIOP消息可以通过RCS协议栈发送和接收。作为本发明进一步的改进,还包括ORB传输层服务端,ORB传输层服务端包含传输模块初始化组件、对同一目标地址空间的连接分组组件、遵循GIOP协议的GIOP消息机制组件、实现在RapidIO总线上的GIOP的映射RIO-1OP组件、线程策略组件、协议包的封装组件⑶R和传输规则组件。作为本发明进一步的改进,还包括ORB传输层客户端,所述ORB传输层客户端包括传输模块初始化组件,连接分组组件,GIOP消息机制组件以及RCS协议的GIOP映射RIO-1OP 组件。作为本发明进一步的改进,在客户端呼叫服务对象的过程中,客户端对象将通过CDR对象将请求封装成GIOP协议格式,发送到服务端。作为本发明进一步的改进,传输层提供给的外部接口包括连接接口connect,监控连接事件接口 acceptAndMonitor,监控连接接口 monitor,通知可读接口notifyReadable,发送请求接口 sendRequest,接收反馈接口 receiveReply,接收请求接口receiveReques,发送反馈接口 sendReply,数据发送接口 send,数据接收接口 recv。IOR采用IDL结构来·定义,一个对象引用IOR中包含了多个taggedProfile对象,每一个taggedProfile对象是包含了用来联系远程对象的多种协议方式;每一种taggedProfile对象中包含了一个ProfileId,如何对该对象的编解码进行解析,就依赖该标识。CORBA客户端通过IOR调用服务端对象服务,客户端与服务端以IOR形式通过网络连接进行数据的通信,所述网络连接方式有三种分别为单向连接上多重呼叫MultiplecallPer Connection、单向连接上的单重呼叫 onecallPer Connection、双向连接bidirectionConnection
与现有技术相比,本发明具有以下有益效果
将基于高速总线RapidIO的协议栈RCS无缝衔接到CORBA的传输层,把抽象协议GIOP映射为具体的RapidIO,从理论和实践上提出并实现了全新的RI0-10P协议,完成经由RI0-10P协议的CORBA基本调用。


图1为使用配置的RI0-10P连接服务端示意 图2 RI0-10P建立到服务对象的连接过程 图3为ORB传输层组件模型;
图4为网络层次模型对比图。
具体实施例方式下面将结合附图及具体实施方式
对本发明作进一步的描述。
实施例一 IOR的组成
客户端通过对象的引用与服务端建立通信联系,服务端在创建服务对象的时候,根据对象创建时候的上下文关系,将这些信息发布出来给客户端用于与伺服对象建立关联。一个对象引用IOR中包含了多个taggedProfile对象,每一个taggedProfile对象是包含了用来联系远程对象的多种协议方式。比如,在客户端既可以通过RIO-1OP协议来与远程对象建立通信联系,也可以通过其他协议(如II0P)与远程对象建立通信关系。每一种taggedProfile对象中包含了一个ProfileId,如何对该对象的编解码进行解析,就依赖该标识。比如客户端按照ProfileId定义的一种方式将数据包进行编码,月艮务端解码的过程就需要通过该ProfileId来解码。在实际应用中,很可能一个服务器端的某个对象的互操作对象引用(IOR)会被其它不同CORBA厂商的客户端所使用。因此,IOR采用IDL结构来定义的。根据RCS网络节点间通信的机制,定义RIO-1OP IOR Profile IDL的结构为 Module IOP{
typedef unsigned long ComponentId;const ProfileId TAG—RIO—IOP = 2;struct TaggedComponent{ ComponenteId tag; sequence<octet> component—data;
};
Module RIO—IOP {struct Version {octet major;octet minor;
};
struct RIO—IOPProfileBode—1—2{
Versionriop_version;
stringriop—host;
unsigned shot riop—port; sequence〈octet>object—key;
sequence〈I0P::TaggedComponent> components;
};
使用RCS通信的对象,在对象IOR中提供了基于RI0-10P的联系方式。riop_hoSt表示对象所在连接的目的地址,也就是RapidIO网络地址。riop_port表示对象所在连接的目的端口。ob ject_key用来表示远程地址空间的对象。实施例二 CORBA客户端通过IOR调用服务端服务
CORBA客户端调用服务端对象服务,是基于RI0-10P协议通过IOR实现的。假设某个服务对象A的IOR提供了多种调用方式。通过RapidIO总线,目标对象RapidIO网络地址为节点标识HOSTAjj^nS P0RT1,对象引用键值为0BJECT_KEY。通过TCP/IP协议,主机为HOST B,端口为P0RT2,对象键值为0BJECT_KEY。通过ATM协议,主机为HOSTA_ATM,接入点为SAP1,对象引用键值为OBJECT_KEY。使用RIO-1OP连接服务端如图1所示。对象A 的 IOR 当前使用的为RI0-10P: //H0STA:P0RT1/0BJECT_KEY,该对象中包含了联系服务端上的远程对象A的具体方式。通过taggedProfile的信息可以知道,该对象位于节点标识为H0STA,服务端口为PORTl的端口上,通过RIO-1OP协议与服务器联系,在服务端使用0BJECT_KEY索引对象的实现。IOR中承载的目标地址信息是用来建立或者选择连接通道用的。服务端将创建好的服务对象通过IOR的方式发布出去。客户端可以实现在目标地址不可用的情况下,自动尝试配置好的下一个联系方式。客户端与服务端以IOR形式通过网络连接进行数据的通信,在ORB中连接的方式,根据呼叫发起方的差异,以及连接复用的方式,将连接划分以下3种
1)单向连接上多重呼叫(MultiplecallPerConnection)
2)单向连接上的单重呼叫(onecallPerConnection)
3)双向连接(bidirectionConnection)
在RI0-10P消息机制中,客户端通过请求消息(request)定位到需要访问的对象,然后使用已经配置的连接。服务端在找到对应的实现后,通过应答消息(reply)将执行结果按照应答消息的包头以及消息体的格式,在外层加上GIOP协议头后传输给对应的客户端。请求消息与应答消息通过请求的标识ID进行关联。为了能够通过RI0-1O P的方式访问服务对象,必须满足2点前置条件识别RI0-10P协议的IOR字符串和注册RI0-10P传输到ORB内核中。对于第I点,需要在初始化以及IOR句柄解析的时候增加RI0-10P对应的部分。对于第2点,需要新增RI0-10P相关的协议支持接口以及关联部分的修改。RI0-10P协议是GIOP协议在RCS协议上的实现,需要继承原有GIOP中关于数据传输的所有类,使得GIOP可以在RCS协议栈上运行。另外,为了识别RI0-10P协议的IOR字符串,需要在RI0-10P设计时增加RI0_IOP对象,以及对一些ORB内核中原有的对象进行修改,这些修改对象包括I0R、GI0P_S、Interceptor。有了两点前置条件后,就可以通过具有RI0-10P协议的IOR字符串访问服务对象。整个访问过程可以从客户端和服务端两个角度来看,通过8个阶段建立到服务端的联系,如图2所示。8个阶段分别为客户端ORB初始化阶段;客户端创建对象引用阶段;客户准备连接阶段;客户端请求分发阶段;服务端ORB初始化阶段;服务端对象适配器OA初始化阶段;服务端任务调度阶段;服务端请求分发阶段。在RI0-10P协议的网络中,由于连接都是预先分配,所以RzTask任务不可能会监控到新连接产生的事件,每个RzTask任务最多只需要监控一个连接句柄。一个EndPoint固定对应着一个连接对象,没有需要监听的句柄,所以EndPoint中的句柄集合最多包含着一个连接句柄。在专职workerTask任务空闲的时候,监控连接的职责也将由专职workerTask任务完成,RzTask任务将会无连接句柄可以监控。当专职任务进行请求处理时,就会把连接句柄放入到连接集合中,由RzTask任务对连接句柄进行监控。连接集合不会发生变化,一个RzTask任务将只监控一个连接句柄上的数据到达情况。实施例三RIO-1OP对CORBA基本服务的支持
RIO-1OP命名服务是指支持经由RIO-1OP协议的CORBA命名服务,并且为了保证在分布式嵌入式系统中命名服务的高可靠性,RIO-1OP命名服务提供双命名服务。RIO-1OP双命名服务是指客户端程序通过网络与主备命名服务进行连接。在默认情况下,客户端程序仅与主命名服务之间进行交互通信,当主命名服务出现故障时,客户端可以自动向备命名服务请求,以保障系统的持续稳定运行。同时在主备命名服务之间需要进行名字配置数据的同步,以使在主命名服务故障的情况下,备命名服务可以对该服务进行无缝切换并接管。标准CORBA通信模式中,客户程序与伺服程序之间的通信是直接的,客户程序向伺服程序发出调用请求,伺服程序进行处理并返回结果,这种处理方式下,两者之间完全是率禹合在一起的一对一的关系。事件服务则是一种异步通信松耦合的模式,由事件的提供者产生事件而事件的消费者接收事件,它们之间不是一对一的紧耦合的关系也不需要关心对方的当前的情况,而是各自连接在事件通道上。事件通道作为2者之间的纽带,负责注册提供者和消费者,传递事件和错误处理。RIO-1OP事件服务是指开发的CORBA应用程序能够使用RIO-1OP协议,作为事件的消费者,能够向事件服务注册自己以及感兴趣的事件,在事件产生后,将得到通知;作为事件的提供者,能够使用事件服务提供的推送接口,将产生的事件推送给注册的消费者应用程序。RIO-1OP事件服务的前置条件是可以通过RapidIO总线传输符合CORBA的GI0P1. 2规范的协议数据包,后置条件是作为消费者与提供者的应用程序能够通过事件服务通道建立关联。

CORBA除了静态调用外,还支持2种用于动态调用的界面动态调用界面(DII,dynamic invocation interface)和动态框架界面(DSI, dynamic skeleton interface),分别用于服务端和客户端的动态调用。限于RapidIO的应用场景的要求和制约,在基于RapidIO的RIO-RIO协议的CORBA应用中对动态特性没有需求,所以对动态属性进行剥离,以更好的适应嵌入式环境并节省程序的空间消耗。上面已结合附图对发明的具体实施方式
进行了示例性的描述,显然本发明不限于此,在本发明范围内进行的各种改型均没有超出本发明的保护范围。
权利要求
1.一种GIOP到RapidIO的新协议,其特征在于,包括硬件层、RapidIO总线层、RCS协议栈层、RIO-1OP协议层、GIOP层、应用层;在硬件层中采用RapidIO接口接入板卡上RapidIO交换芯片;在所述RapidIO总线层中,所述RapidIO交换芯片的物理链路再接入交换网络中,网络中的交换模块负责维护点对点通信的路由信息;所述RCS协议栈层运行在RapidIO的网络中的各个非交换节点上,RCS协议栈为对RapidIO的第一次封装,通过RCS协议栈实现节点间的快速通信与数据交换;所述RIO-1OP协议层由对RapidIO进行第二次封装,即把RCS封装成RIO-1OP协议。
2.根据权利要求1所述的GIOP到RapidIO的新协议,其特征在于,还包括ORB传输层服务端,所述ORB传输层服务端包含传输模块初始化组件、对同一目标地址空间的连接分组组件、遵循GIOP协议的GIOP消息机制组件、实现在RapidIO总线上的GIOP的映射RIO-1OP组件、线程策略组件、协议包的封装组件CDR和传输规则组件。
3.根据权利要求1所述的GIOP到RapidIO的新协议,其特征在于,还包括ORB传输层客户端,所述ORB传输层客户端包括传输模块初始化组件,连接分组组件,GIOP消息机制组件以及RCS协议的GIOP映射RIO-1OP组件。
4.根据权利要求3所述的GIOP到RapidIO的RIO-1OP协议,其特征在于,在ORB传输层客户端呼叫服务对象的过程中,ORB传输层客户端对象将通过CDR对象将请求封装成GIOP协议格式,发送到ORB传输层服务端。
5.根据权利要求1或3所述的GIOP到RapidIO的新协议,其特征在于,传输层提供给的外部接口包括连接接口 connect、监控连接事件接口 acceptAndMonitor、监控连接接口 monitor、通知可读接口 notifyReadable、发送请求接口 sendRequest、接收反馈接口 receiveReply、接收请求接口 receiveReques、发送反馈接口 sendReply、数据发送接口send、数据接收接口 recv。
6.根据权利要求1所述的GIOP到RapidIO的新协议,其特征在于,所述RCS协议栈层通信的对象IOR采用IDL结构来定义,一个对象引用IOR中包含了多个taggedProfile对象,每一个taggedProfile对象是包含了用来联系远程对象的多种协议方式;每一种taggedProfile对象中包含了一个ProfileId,如何对该对象的编解码进行解析,就依赖该标识。
7.根据权利要求6所述的GIOP到RapidIO的新协议,其特征在于,ORB传输层客户端通过IOR调用服务端对象服务,客户端与服务端以IOR形式通过网络连接进行数据的通信,所述网络连接方式有三种分别为单向连接上多重呼叫MultiplecallPer Connection、单向连接上的单重呼叫 onecallPer Connection、双向连接 bidirectionConnection。
全文摘要
本发明公开了一种GIOP到RapidIO的RIO-IOP协议,包括硬件层、RapidIO总线层、RCS协议栈层、RIO-IOP协议层、GIOP层、应用层;所述RCS协议栈层运行在RapidIO的网络中的各个非交换节点上,RCS协议栈为对RapidIO的第一次封装,所述RIO-IOP协议层为对RapidIO进行的第二次封装,即把RCS封装成RIO-IOP协议。本发明将基于高速总线RapidIO的协议栈RCS无缝衔接到CORBA的传输层,把抽象协议GIOP映射为具体的RapidIO,从理论和实践上提出并实现了全新的RIO-IOP协议,完成经由RIO-IOP协议的CORBA基本调用。
文档编号H04L29/06GK103067412SQ201310031570
公开日2013年4月24日 申请日期2013年1月28日 优先权日2013年1月28日
发明者陈文宇, 曾茹, 刘贵松, 欧睿杰, 符明晟, 袁野, 朱建 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1