CN106534178B - RapidIO网络通用套接字的实现系统及方法 - Google Patents
RapidIO网络通用套接字的实现系统及方法 Download PDFInfo
- Publication number
- CN106534178B CN106534178B CN201611123614.4A CN201611123614A CN106534178B CN 106534178 B CN106534178 B CN 106534178B CN 201611123614 A CN201611123614 A CN 201611123614A CN 106534178 B CN106534178 B CN 106534178B
- Authority
- CN
- China
- Prior art keywords
- network
- rapidio
- module
- interface
- tcp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 238000004891 communication Methods 0.000 claims abstract description 23
- 238000010586 diagram Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种RapidIO网络通用套接字的实现系统及方法,该系统包括:通用接口层,应用层将使用socket接口来进行RapidIO网络通信;命令行,用户对RapidIO网络的设备、拓扑关系以及协议栈参数查看和配置;BSD接口层,利用BSD接口层提供的内核函数创建一个新的RapidIO网络协议栈。本发明为用户提供一套类TCP/UDP的编程接口,实现基于数据流和数据报的应用协议,以直接I/O通信和消息传输作为网络驱动,实现高速通信。
Description
技术领域
本发明涉及一种通用套接字的实现系统及方法,具体地,涉及一种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-UDP模块220、分片重组模块230、帧头解析模块240、组播模块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的实际通信性能。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
Claims (3)
1.一种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主动读取数据的方式。
2.根据权利要求1所述的RapidIO网络通用套接字的实现系统,其特征在于,所述通用接口层、命令行、类TCP-UDP模块、组播模块、拓扑管理模块都与BSD接口层连接,类TCP-UDP模块、分片重组模块、帧头解析模块依次连接,帧头解析模块、拓扑管理模块都与网卡驱动模块连接。
3.一种RapidIO网络通用套接字的实现方法,其特征在于,包括如下步骤:
步骤一,系统中的交换机设备作为网络管理节点负责对RapidIO网络环境初始化,扫描系统中所有设备并为它们分配设备ID,维护设备的路由表,并监控网络中所有设备的状态,对网络环境的变化做出响应;
步骤二,端点设备是PCIE-RapidIO接口卡,在Linux中为RapidIO设备创建网络驱动,负责配置和收发操作;利用内核提供的BSD接口层,创建新的网络协议,屏蔽了底层实现的差异,为上层应用提供了简洁、统一的应用接口;
步骤三,应用层将使用socket接口来进行RapidIO网络通信,其编程模式和以太网TCP/IP整体一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611123614.4A CN106534178B (zh) | 2016-12-08 | 2016-12-08 | RapidIO网络通用套接字的实现系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611123614.4A CN106534178B (zh) | 2016-12-08 | 2016-12-08 | RapidIO网络通用套接字的实现系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106534178A CN106534178A (zh) | 2017-03-22 |
CN106534178B true CN106534178B (zh) | 2019-08-30 |
Family
ID=58342735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611123614.4A Active CN106534178B (zh) | 2016-12-08 | 2016-12-08 | RapidIO网络通用套接字的实现系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106534178B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109451362A (zh) * | 2018-07-25 | 2019-03-08 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | VxWorks下的RapidIO网络接口及实现方法 |
CN109189718B (zh) * | 2018-09-04 | 2020-07-10 | 上海睿赛德电子科技有限公司 | 一种支持多种网络接口的套接字组件及方法 |
CN110441739B (zh) * | 2019-07-02 | 2022-09-23 | 中国航空工业集团公司雷华电子技术研究所 | 一种提高雷达srio传输可靠性的方法 |
CN111158759A (zh) * | 2019-11-15 | 2020-05-15 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于Rapidio驱动的存储软件实现方法及系统 |
CN111212061B (zh) * | 2019-12-31 | 2021-11-23 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于afdx的套接字的实现方法 |
CN112929418B (zh) * | 2021-01-22 | 2023-03-14 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 一种基于发布订阅的RapidIO高速通信方法及系统 |
CN113055298B (zh) * | 2021-02-25 | 2023-03-24 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 一种RapidIO网络的多次枚举方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880573A (zh) * | 2012-09-04 | 2013-01-16 | 武汉邮电科学研究院 | 一种基于Linux系统的串行RapidIo数据传输方法 |
CN105162858A (zh) * | 2015-08-20 | 2015-12-16 | 中国人民解放军国防科学技术大学 | 针对corba中间件的通用传输协议框架、通信系统及方法 |
CN105635176A (zh) * | 2016-02-19 | 2016-06-01 | 山东超越数控电子有限公司 | 一种基于RapidIO的网络数据传输方法 |
-
2016
- 2016-12-08 CN CN201611123614.4A patent/CN106534178B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880573A (zh) * | 2012-09-04 | 2013-01-16 | 武汉邮电科学研究院 | 一种基于Linux系统的串行RapidIo数据传输方法 |
CN105162858A (zh) * | 2015-08-20 | 2015-12-16 | 中国人民解放军国防科学技术大学 | 针对corba中间件的通用传输协议框架、通信系统及方法 |
CN105635176A (zh) * | 2016-02-19 | 2016-06-01 | 山东超越数控电子有限公司 | 一种基于RapidIO的网络数据传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106534178A (zh) | 2017-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106534178B (zh) | RapidIO网络通用套接字的实现系统及方法 | |
CN105024855B (zh) | 分布式集群管理系统和方法 | |
EP2597842B1 (en) | Providing network capability over a converged interconnect fabric | |
US8407367B2 (en) | Unified connector architecture | |
US8793117B1 (en) | System and method for virtualization of networking system software via emulation | |
WO2022095348A1 (zh) | 一种计算资源的远程映射方法、装置、设备及存储介质 | |
CN102124449B (zh) | 用于低开销数据传输的方法和系统 | |
CN105407140B (zh) | 一种网络化测试系统的计算资源虚拟化方法 | |
JPWO2009025381A1 (ja) | I/oシステムおよびi/o制御方法 | |
US10609125B2 (en) | Method and system for transmitting communication data | |
CN105162674A (zh) | 一种物理机访问虚拟网络的方法及网卡 | |
CN107133109B (zh) | 一种模块间通信的方法、装置及计算设备 | |
US20100291920A1 (en) | Technique for platform-to-platform communication | |
KR20100090629A (ko) | 네트워크 인터페이스장치 | |
KR101559089B1 (ko) | 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜 | |
Ruimei et al. | Design of ARM-based embedded Ethernet interface | |
CN113285839A (zh) | 基于dpdk的可编程数据平面软件交换机的设计方法 | |
CN113472637A (zh) | 一种lora网关 | |
US20030225931A1 (en) | Supporting multiple protocols with a single device driver | |
CN111212061B (zh) | 基于afdx的套接字的实现方法 | |
US20030225916A1 (en) | Implementing a data link layer protocol for multiple network interface devices | |
CN116521609A (zh) | 多主机与多从机系统、zynq仲裁器及其数据处理的方法 | |
US9787805B2 (en) | Communication control system and communication control method | |
Krishnan | Evaluation of an integrated PCI Express IO expansion and clustering fabric | |
CN115001627B (zh) | 一种InfiniBand网络子网管理报文处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |