基于RapidIO的实时CORBA中间件实现
摘要:为了解决CORBA传统传输协议TCP/IP的时延不确定问题,提出了使用基于点对点的包交换RapidIO协议来替代TCP/IP的方法,研究了CORBA的可插拔传输协议框架,从而实现了CORBA报文在RapidIO总线上的传输。测试结果显示,基于RapidIO的CORBA实时性优于基于TCP/IP的CORBA。
关键词:CORBA;RapidIO;可插入传输;协议框架
0 引言
在传统的嵌入式多处理器系统中,处理器之间的互连是通过分时共享总线来实现的,典型的有以太网、CPCI和VME总线。这类总线的总带宽会受限,而且随着处理器的不断增多,每个处理器所占据的带宽小断下降,制约了处理器之间的信息传输能力,这将使其不能适应未来高性能嵌入式多处理器系统之间的高速信息传输需求。而RapidIO互联架构是一种高性能、点对点的包交换技术,传输速率能够达到1 Gb/s~60 Gb/s,能为嵌入式系统芯片间和板卡间互连提供高带宽、低时延的互连解决方案。
与此同时,随着CORBA技术应用范围的不断拓展,特别是在军事、电信和航空控制等领域的应用,对CORBA系统中客户/服务器交互的实时性提出了更为严格的要求。虽然几乎所有CORBA都默认支持TCP/IP,但是TCP/IP时延的不确定性将导致其不适用实时系统,而基于Rapid IO实时总线的CORBA却可以解决该问题,因此,本文给出了如何将RapidIO通信协议插入CORBA产品中的实现方法。
1 Rapid IO技术
RapidIO采用的三层体系结构如图1所示。
该体系包括逻辑层、传输层和物理层。逻辑层主要用于界定协议和包格式,目前逻辑层可支持5种规范,分别是存储器映射的I/O系统、消息传输、全局共享内存、流量控制和数据流;传输层主要用于规定路由选择信息,为端点设备间报文的传输提供路由信息;物理层主要定义包传送机制、信息流控制、电气特性和低级错误管理等,物理层的优先级处理保证了数据传输时具有更低的平均时延或者抖动时延。Rapi dIO系统多采用基于交换机(Switch)的拓扑结构。逻辑报文从一个端点设备送往另一个端点设备主要通过交换机解释报文中的传输层信息,传输层包含有源设备指定的目的地址,文换机中则包含路由表,可通过查找路由表确定输出路径。
2 CORBA的RapidIO实现
2.1 CORBA可插拔协议框架
CORBA2.0引入了一个通用的ORB互操作性结构体系,称为通用ORB间协议(即GIOP)。GIOP是一类抽象的协议,并不是一个可直接用于ORB间进行通信的具体协议。该协议仅描述了特定的协议如何进行创建以适用于GIOP框架,同时指定了转换语法和一个消息格式的标准集,以便允许独立开发的ORB可以在任何一个面向连接的传递中进行通信,这种设计允许新的协议在不影响现有应用程序的情况下,添加到CORBA中。
GIOP对于携带GIOP消息的底层传输具有一定的要求,包括面向连接、全双工、对称、可靠传输、支持字节流等,同时需要按照以上要求封装RapidIO传输协议。对于不同的传输介质,将会有一个与之对应的GIOP协议的实现与之对应。比如,IIOP协议就是GIOP的基于TCP/IP协议的具体实现。与此类似,基于RapidIO的传输协议列GIOP的映射为RapidIO-IOP,简称RIOP。ONI层次图与GIOP层次图的对比如图2所示,RIOP的主要工作是使用RapidIO传输协议完成GIOP报文的传输。
2.2 实现RIOP
定义RIOP的协议标识格式如下:
rio://{host number}:{port number}
其中,host为节点的网络编号,port为逻辑链路端口。定义RapidIO IOR配置文件标识常量,const IOP::ProfileIdIOP::OE TAG RIO IOP=1330205525(0x4f495355)。
RIOP传输协议类之间的关系如图3所示,图中的Endpoint、NetCircuit、NetCircuit Factory、NetCollector、NetCollectorFactory、NetFlow、NetFlowFactory、NetAcceptor、NetAcceptorFactory都是ORB用于传输的基类,实现RIOP需要从这些类派生出新类,如RIOEndpo int、RIONetCircuit、RIONetCircuitFactory、RIONetAcceptor、RIONetAcceptorFactory,并且可以实现RIOPortRegistry、PortTransport类。
端点(Endpoint)类负责管理网络连接需要的地址信息:网络电路(NetCircuit)类用于管理连接,负责建立连接(客户端)及数据收发,网络连接一旦建立,就可以从NetCircuit读取或写入数据;网络收集器(NetCollector)类用于在连接的服务器端接收请求,网络收集器负责在NetCircuit的服务器端接收数据的激活对象,通过NetCollectorFactory可创建收集器的实例;网络收集器(Collector)和收集器工厂(NetCo llectorFactory)类能实现GIOP的语法要求,因此,传输协议开发者不需要开发收集器类;网络流控(NetFlow)类是为未来功能
中间件 实现 CORBA 实时 RapidIO 基于 相关文章:
- 基于ARM平台的RFID中间件系统设计(05-16)
- 分析JMX的RFID中间件设计(09-01)
- RFID应用集成中间件技术研究与开发(05-15)
- NEC 电子标签解决方案简要介绍(04-16)
- 中间件——RFID系统的神经中枢(04-16)
- 基于RFID的EPC中间件的设计(04-14)