RapidIO网络通用套接字的实现系统及方法与流程

文档序号:12134923阅读:2423来源:国知局
RapidIO网络通用套接字的实现系统及方法与流程

本发明涉及一种通用套接字的实现系统及方法,具体地,涉及一种RapidIO网络通用套接字的实现系统及方法。



背景技术:

RapidIO是面向系统互连和交换结构的开放标准,满足了嵌入式基础设施在应用方面的广泛需求。可行的应用包括连接多处理器、串行背板互连、DSP阵列组、存储子系统、无线基站、容错系统等领域。这一技术将主要作为系统内部互连,支持芯片到芯片和板到板通信,可以实现从1Gbps到10Gbps的性能水平。

然而,必须看到即使有高速的硬件互连协议支持,要想给终端用户提供高速的通信接口还是非常困难的。冗余的内存拷贝和繁重的通信开销越来越成为影响多处理器间通信性能的瓶颈,例如,Linux内核下公开的利用以太网模拟器实现的RapidIO通信接口仅仅发挥了RapidIO通信性能的10%左右,主要是因为其上层的TCP/IP软件协议的开销太大导致。另外,目前各厂商自主开发的裸驱动接口没有统一标准,往往不一致,不方便现有的基于以太网的应用软件利用RapidIO网络通信,且用户也担心产品软件和硬件厂家绑定。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种RapidIO网络通用套接字的实现系统及方法,其为用户提供一套类TCP/UDP的编程接口,实现基于数据流和数据报的应用协议,以直接I/O通信和消息传输作为网络驱动,实现高速通信。

根据本发明的一个方面,提供一种RapidIO网络通用套接字的实现系统,其特征在于,包括:

通用接口层,应用层将使用socket接口来进行RapidIO网络通信;

命令行,用户对RapidIO网络的设备、拓扑关系以及协议栈参数查看和配置;

BSD接口层,利用BSD接口层提供的内核函数创建一个新的RapidIO网络协议栈;

类TCP-UDP模块,初始化完成之后,就需要在BSD层对类UDP的rapidio_dgram_prot和类TCP的rapidio_stream_prot结构体函数指针成员分别实现;

分片重组模块,在收发网络包过程中按照自定义的帧格式进行解析报文,数据负载大于12KB的需要进行分片重组,根据协议类型判断是类UDP还是类TCP数据包,递交给不同的网络接收函数处理;

帧头解析模块,用于对帧头进行解析;

组播模块,RapidIO交换机支持组播功能,交换机创建多播组,添加成员节点,当成员利用组ID进行通信时候,交换机将其转发到该组其他成员;

拓扑管理模块,host节点枚举整个网络,就会产生一张拓扑表,其他端点设备可以和host节点通信,从而获得这样拓扑图,可用于显示、查找和监控网络动态变化的目的;

网卡驱动模块,底层驱动采用I/O方式,;针对多对一的客户端/服务器模式,采取Nread主动读取数据的方式。

优选地,所述通用接口层、命令行、类TCP-UDP模块、组播模块、拓扑管理模块都与BSD接口层连接,类TCP-UDP模块、分片重组模块、帧头解析模块依次连接,帧头解析模块、拓扑管理模块都与网卡驱动模块连接。

本发明还提供一种RapidIO网络通用套接字的实现方法,其特征在于,包括如下步骤:

步骤一,系统中的交换机设备作为网络管理节点负责对RapidIO网络环境初始化,扫描系统中所有设备并为它们分配设备ID,维护设备的路由表,并监控网络中所有设备的状态,对网络环境的变化做出响应;

步骤二,端点设备是PCIE-RapidIO接口卡,在Linux中为RapidIO设备创建网络驱动,负责配置和收发操作;利用内核提供的BSD接口层,创建新的网络协议,屏蔽了底层实现的差异,为上层应用提供了简洁、统一的应用接口;

步骤三,应用层将使用socket接口来进行RapidIO网络通信,其编程模式和以太网TCP/IP整体一致。

与现有技术相比,本发明具有如下的有益效果:本发明为用户提供一套类TCP/UDP的编程接口,便于应用软件的移植和开发。本发明只需占用少量系统开销,实现基于数据流的数据报的通信。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明RapidIO网络通用套接字的实现系统的原理框图。

图2为协议帧格式定义的结构示意图。

图3为RapidIO网络系统框图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。

图1为本发明RapidIO网络通用套接字的实现系统的原理框图。如图1所示,该实例包括通用接口层110、命令行120、BSD接口层210、类TCP 220、类UDP 230、分片重组240、帧头解析250、组播模块310、拓扑管理模块320以及网卡驱动模块410等,其中:

通用接口层110,应用层将使用socket接口来进行RapidIO网络通信,类UDP为用户提供socket、bind、sendto、recvfrom、close等接口;类TCP为用户提供socket、bind、connect、listen、accept、send/write、recv/read、close等接口;附加功能函数如select、getsockopt、setsockopt也实现了。其编程模式和以太网TCP/IP整体一致。

命令行120,用户对RapidIO网络的设备、拓扑关系以及协议栈参数查看和配置等功能,这就需要使用和内核通信的Netlink套接字接口实现。用户在rio可执行文件的main函数中通过调用Netlink接口访问和配置内核协议栈的参数,然后把rio可执行文件拷贝到bin目录下就可以像使用ifconfig命令那样查看和配置网络了。rio-show命令用于查看显示;rio-ioctl命令用于添加删除;rio-ping命令用于连通性测试。

BSD接口层210,利用BSD接口层提供的内核函数可以创建一个新的RapidIO网络协议栈,协议为了避免和已经注册的协议冲突,自定义协议类型为AF_RIO=40。在加载驱动模块的初始化函数中,利用proto_register函数分别注册类UDP和类TCP网络协议函数接口族,sock_register函数是将类型为AF_RIO的协议注册到内核,dev_add_pack函数为该协议指定了网络数据接收处理程序。

类TCP-UDP模块220,初始化完成之后,就需要在BSD层对类UDP的rapidio_dgram_prot和类TCP的rapidio_stream_prot结构体函数指针成员分别实现。应用程序接口在内核里会调用相应操作成员。socket函数指定期望的通信协议类型和传输方式;bind函数把一个本地协议地址赋予一个套接字,对于RapidIO网络,协议地址和以太网使用相同的结构体,都是32位的IPv4地址和16位端口号的组合;connect函数是TCP客户用来建立与TCP服务器的连接,调用该函数将触发TCP的三路握手过程,而且仅在连接建立成功或者出错时候才返回;listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的连接请求;accept函数由TCP服务器调用,用于从已完成连接队列头返回一个已完成连接,如果已完成连接队列为空,那么进程被投入睡眠(套接字设计为默认的阻塞方式);sendto/send/write函数将直接发送用户数据给目的地址;recvfrom/recv/read函数是阻塞等待底层有数据到来,才将网络数据报拷贝到用户空间,建议用户将其数据长度设置成最大链路单元12KB,否则有可能出现数据截断了,该函数会将对端地址传递给用户。close函数用来关闭套接字,终止数据传输。

分片重组模块230,在收发网络包过程中按照自定义的帧格式进行解析报文,数据负载大于12KB的需要进行分片重组,根据协议类型判断是类UDP还是类TCP数据包,递交给不同的网络接收函数处理。

帧头解析模块240,用于对帧头进行解析,图2为协议帧格式定义的结构示意图。

组播模块310,RapidIO交换机支持组播功能,交换机创建多播组,添加成员节点,当成员利用组ID进行通信时候,交换机将其转发到该组其他成员。

拓扑管理模块320,host节点枚举整个网络,就会产生一张拓扑表,其他端点设备可以和host节点通信,从而获得这样拓扑图,可用于显示、查找和监控网络动态变化的目的。

网卡驱动模块410,底层驱动采用I/O方式,可以提升传输速率,因为它是对内存的直接访问,占用CPU资源少;针对多对一的客户端/服务器模式,采取Nread主动读取数据的方式,防止了发送资源竞争。通知对方数据就绪采取Doorbell方式。这样数据的传输需要Doorbell和Nread操作。

图3为RapidIO网络系统框图。结合图1至图3所示的系统实施例,RapidIO网络通用套接字的实现方法实例主要包括如下步骤:

步骤一,系统中的交换机设备作为网络管理节点负责对RapidIO网络环境初始化,扫描系统中所有设备并为它们分配设备ID,维护设备的路由表,并监控网络中所有设备的状态,对网络环境的变化做出响应。

步骤二,端点设备是PCIE-RapidIO接口卡,在Linux中为RapidIO设备创建网络驱动,负责配置和收发操作;利用内核提供的BSD接口层,创建新的网络协议,屏蔽了底层实现的差异,为上层应用提供了简洁、统一的应用接口。

步骤三,应用层将使用socket接口来进行RapidIO网络通信,其编程模式和以太网TCP/IP整体一致。

本发明采用RapidIO网络通用套接字接口,同时在设计中充分考虑到RapidIO规范已经实现的功能:比如流量控制,分组传输,热插拔,错误检测和恢复,循环冗余校验,包确认,路由寻址,IO通信和消息传输等,故本发明将不会在本协议栈中重复实现这些功能,这将降低协议的复杂度和通信开销,提升了RapidIO的实际通信性能。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1