CN102404398A - 一种支持多客户端的rdma消息发送方法 - Google Patents
一种支持多客户端的rdma消息发送方法 Download PDFInfo
- Publication number
- CN102404398A CN102404398A CN2011103642957A CN201110364295A CN102404398A CN 102404398 A CN102404398 A CN 102404398A CN 2011103642957 A CN2011103642957 A CN 2011103642957A CN 201110364295 A CN201110364295 A CN 201110364295A CN 102404398 A CN102404398 A CN 102404398A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- data
- infiniband
- rdma
- 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.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种支持多客户端的RDMA消息发送方法,服务器和客户端之间通过高速的InfiniBand连接,服务器首先对InfiniBand环境进行初始化,并在任意时刻接受客户端的注册,一旦注册成功即可以通过InfiniBand网络向多个客户端高速发送数据,期间,任何地方出现错误都可以将所有环境重建以保证传输的正确进行;客户端从服务器接受数据并正确处理,整个流程受超时机制的控制,一旦在超时时限到达的时候收不到数据,则认为链路出现问题,客户端主动重连服务器。
Description
技术领域
本发明涉及通信技术,具体来说,涉及一种在单服务器和多个客户端之间通过高速的InfiniBand网络来进行RDMA通信的方法。
背景技术
InfiniBand网络是一种支持多并发链接的“转换线缆”技术,该技术的主要特点是高带宽(单条链路的SDR带宽为2.5Gbps,DDR为5Gbps,QDR为10Gbps,如果需要更大的带宽,只需要增加链路数量即可,比如4x的QDR带宽可以达到40Gbps)、低时延(交换机延时140ns、应用程序延时3μs、新的网卡技术将使应用程序延时降低到1μs水平)、系统扩展性好(可轻松实现完全无拥塞的数万端设备的InfiniBand网络)。另外,InfiniBand标准支持RDMA(RemoteDirect Memory Access),使得在使用InfiniBand构筑服务器、存储器网络时比万兆以太网以及Fibre Channel具有更高的性能、效率和灵活性。
传统的TCP/IP技术在数据包处理过程中,要经过操作系统及其他软件层,需要占用大量的服务器资源和内存总线带宽。所产生严重的延迟来自系统庞大的开销以及数据在系统内存、处理器缓存和网络控制器缓存之间来回进行复制移动。而在RDMA中数据的处理不需要经过操作系统和其他软件层,它使得网卡可以直接与应用内存相互传输数据,从而消除了在应用内存与内核内存之间复制数据的需要,整个传输过程如1所示。主机1中缓冲区1里面的数据可以直接经网卡写入主机2的缓冲区2中,整个过程不需要处理器和操作系统的参与。
但是,如果同时有多个客户端注册到服务器,那么整个系统的管理将变得非常复杂,甚至可能出错。比如其中一个客户端断开后不能影响其他客户端的通信,也不能因为一个客户端持续地发送数据而影响其他客户端的数据发送。
发明内容
本发明提供了一种安全高效的单服务器、多客户端的通信机制,使得一台计算机可以通过InfiniBand高速地将数据同时发往多个客户端,且多客户端之间的数据传送互不影响。
一种支持多客户端的RDMA消息发送方法,服务器和客户端之间通过高速的InfiniBand连接,服务器首先对InfiniBand环境进行初始化,并在任意时刻接受客户端的注册,一旦注册成功即可以通过InfiniBand网络向多个客户端高速发送数据,期间,任何地方出现错误都可以将所有环境重建以保证传输的正确进行;
客户端从服务器接受数据并正确处理,整个流程受超时机制的控制,一旦在超时时限到达的时候收不到数据,则认为链路出现问题,客户端主动重连服务器。
优选的,所述服务器采用Linux系统,客户端采用Windows系统。
优选的,所述服务器在系统启动时对整个系统进行初始化,包括对硬件的初始化和软件的初始化,硬件为对InfiniBand的相关操作,软件为对缓冲区的分配和通信协议的设定。
优选的,所述服务器采用多线程方式进行工作;包括:
主线程,用于设定配置参数、创建监听线程,以及退出清理工作;
监听线程,用于与随时可能发起注册请求的客户端建立初始连接,双方交换RDMA通信的必要信息;
发送线程,用于通过InfiniBand网络将每一帧数据发送至客户端。
优选的,所述配置参数包括监听线程的端口、InfiniBand设备名和端口号、每一帧的大小和帧缓冲区的数目。
优选的,所述服务器采用RDMA方式将数据发往客户端。
优选的,所述RDMA方式可以在不需要客户端显示接收的情况下将数据发往客户端的缓冲区。
优选的,所述服务器在每个帧前附加一个私有区,在服务器和所有客户端间一同传输,私有区中存放一个64位的整数序列号,服务器对每一帧数据以递增1的方式编号,客户端检测到序列号不连续的错误,反馈给客户端错误代码。
优选的,所述服务器在出现错误时,向用户准确地告知出错的位置,以便用户可以根据出错提示修复错误。
附图说明
图1是RDMA传输过程示意图
图2是本发明的工作过程示意图
图3是服务器工作流程图
图4是客户端工作流程图
具体实施方式
本发明采用客户端服务器模型设计,支持单个服务器和多个客户端,它们之间通过高速的InfiniBand连接,且支持跨平台,服务器采用Linux系统,客户端采用Windows系统,整体结构如图2所示。
服务器首先对InfiniBand环境进行初始化,并在任意时刻接受客户端的注册,一旦注册成功即可以通过InfiniBand网络向多个客户端高速发送数据,期间,任何地方出现错误都可以将所有环境重建以保证传输的正确进行。另一方面,系统中存在多个Windows客户端,它的主要功能是从服务器接受数据并正确处理,整个流程受超时机制的控制,一旦在超时时限到达的时候收不到数据,可以认为链路出现问题,客户端会主动重连服务器。
服务器工作
服务器运行在Linux系统上,负责将用户的数据发送到客户端。它包括初始化、客户端管理、数据的发送和可靠性等多方面的任务。
初始化,在系统启动时需要对整个系统进行初始化的操作,包括对硬件的初始化和软件的初始化,硬件主要是对InfiniBand的相关操作,软件则主要指对缓冲区的分配和一些通信协议的设定。
客户端管理,为了支持多个客户端,服务器的设计需要按多线程方式进行;另外,不排除用户使用多线程来处理和发送数据,因此采用多线程的程序结构,各线程的角色描述如下:
主线程,用户通过主线程设定一些配置参数(如监听线程的端口、InfiniBand设备名和端口号、每一帧的大小、帧缓冲区的数目等等)、创建监听线程,以及做必要的退出清理工作。
监听线程,用于与随时可能发起注册请求的客户端建立初始连接,双方交换RDMA通信的必要信息。这是基于这样一个事实:RDMA双方通信之前,必须通过另外一种通信通道交换彼此的身份和认证信息,否则RDMA连接将无法建立。这里的另外一种通信通道指基于InfiniBand的socket通信。
发送线程,通过InfiniBand网络将每一帧数据发送至客户端。
程序整体流程如图3所示:
发送数据,服务器的主要功能是将用户的数据尽快发往所有的客户端,这里采取的发送方式RDMA,即远程DMA,可以在不需要客户端显示接收的情况下将数据发往客户端的缓冲区。这样可以充分利用InfiniBand网络高带宽、低延迟的特点将用户的数据高速发送出去。根据用户的要求,这里要设置超时机制,一旦超过一定时间数据仍然没有发送出去,则停止发送,将问题通知用户并等待用户的进一步操作。服务器始终只发送实时数据。任何发送操作都是非阻塞的,若失败一般不作重新尝试。为了检测由此导致的丢帧现象,在每个帧前附加一个私有区,在服务器和所有客户端间一同传输,私有区中存放一个64位的整数序列号,服务器对每一帧数据以递增1的方式编号,即使对所有客户端发送失败,也要维持序列号的递增。客户端检测序列号不连续的错误,反馈给客户端代码。
可靠性,服务器要注意的一个问题是,InfiniBand或者其它资源使用过程中出现错误,绝大多数在系统中尝试修复或者简单忽略(如传送序列问题等),不向用户呈现。但是也有一些错误必须呈现给用户,比如明显的内存分配失败,设备初始化失败。本发明的一大特色是需要向用户准确地告知出错的位置,以便用户可以根据出错提示修复错误。
客户端工作
整个过程如图4所示。一开始即初始化socket环境用以连接服务器,如果失败则不断重试;成功后进入接收数据状态,如果经过一段时间没有收到数据,则超时重新初始化并建立连接,这是基于客户现场环境比较复杂,各个地方都可能出现问题,而这些问题可以由工程师解决,客户端程序只需要不停重试即可。
Claims (9)
1.一种支持多客户端的RDMA消息发送方法,其特征在于:服务器和客户端之间通过高速的InfiniBand连接,服务器首先对InfiniBand环境进行初始化,并在任意时刻接受客户端的注册,一旦注册成功即可以通过InfiniBand网络向多个客户端高速发送数据,期间,任何地方出现错误都可以将所有环境重建以保证传输的正确进行;
客户端从服务器接受数据并正确处理,整个流程受超时机制的控制,一旦在超时时限到达的时候收不到数据,则认为链路出现问题,客户端主动重连服务器。
2.如权利要求1所述的方法,其特征在于:所述服务器采用Linux系统,客户端采用Windows系统。
3.如权利要求1所述的方法,其特征在于:所述服务器在系统启动时对整个系统进行初始化,包括对硬件的初始化和软件的初始化,硬件为对InfiniBand的相关操作,软件为对缓冲区的分配和通信协议的设定。
4.如权利要求1所述的方法,其特征在于:所述服务器采用多线程方式进行工作;包括:
主线程,用于设定配置参数、创建监听线程,以及退出清理工作;
监听线程,用于与随时可能发起注册请求的客户端建立初始连接,双方交换RDMA通信的必要信息;
发送线程,用于通过InfiniBand网络将每一帧数据发送至客户端。
5.如权利要求4所述的方法,其特征在于:所述配置参数包括监听线程的端口、InfiniBand设备名和端口号、每一帧的大小和帧缓冲区的数目。
6.如权利要求1所述的方法,其特征在于:所述服务器采用RDMA方式将数据发往客户端。
7.如权利要求6所述的方法,其特征在于:所述RDMA方式可以在不需要客户端显示接收的情况下将数据发往客户端的缓冲区。
8.如权利要求6所述的方法,其特征在于:所述服务器在每个帧前附加一个私有区,在服务器和所有客户端间一同传输,私有区中存放一个64位的整数序列号,服务器对每一帧数据以递增1的方式编号,客户端检测到序列号不连续的错误,反馈给客户端错误代码。
9.如权利要求1所述的方法,其特征在于:所述服务器在出现错误时,向用户准确地告知出错的位置,以便用户可以根据出错提示修复错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110364295.7A CN102404398B (zh) | 2011-11-17 | 2011-11-17 | 一种支持多客户端的rdma消息发送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110364295.7A CN102404398B (zh) | 2011-11-17 | 2011-11-17 | 一种支持多客户端的rdma消息发送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102404398A true CN102404398A (zh) | 2012-04-04 |
CN102404398B CN102404398B (zh) | 2015-03-25 |
Family
ID=45886178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110364295.7A Active CN102404398B (zh) | 2011-11-17 | 2011-11-17 | 一种支持多客户端的rdma消息发送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102404398B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103227778A (zh) * | 2013-03-26 | 2013-07-31 | 华为技术有限公司 | 内存访问方法、设备和系统 |
CN104767725A (zh) * | 2014-12-31 | 2015-07-08 | 中兴仪器(深圳)有限公司 | 一种网络数据收发装置和方法 |
CN105159929A (zh) * | 2015-08-05 | 2015-12-16 | 北京思特奇信息技术股份有限公司 | 一种内存数据库通信方法及系统 |
CN105487815A (zh) * | 2015-11-24 | 2016-04-13 | 无锡江南计算技术研究所 | 一种基于rdma机制的并行输入输出方法 |
CN107451092A (zh) * | 2017-08-09 | 2017-12-08 | 郑州云海信息技术有限公司 | 一种基于ib网络的数据传输系统 |
CN109067506A (zh) * | 2018-08-15 | 2018-12-21 | 无锡江南计算技术研究所 | 一种基于多滑动窗口并发的轻量级异步消息实现方法 |
US10250517B2 (en) | 2017-02-03 | 2019-04-02 | Microsoft Technology Licensing, Llc | Completion-side client throttling |
US11108698B2 (en) | 2017-02-03 | 2021-08-31 | Microsoft Technology Licensing, Llc | Systems and methods for client-side throttling after server handling in a trusted client component |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216552A1 (en) * | 2004-03-24 | 2005-09-29 | Samuel Fineberg | Communication-link-attached persistent memory system |
CN101409715A (zh) * | 2008-10-22 | 2009-04-15 | 中国科学院计算技术研究所 | 一种利用InfiniBand网络进行通信的方法及系统 |
CN101459676A (zh) * | 2008-12-31 | 2009-06-17 | 中国科学院计算技术研究所 | 针对文件系统的基于高速网络的消息传输框架和方法 |
-
2011
- 2011-11-17 CN CN201110364295.7A patent/CN102404398B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216552A1 (en) * | 2004-03-24 | 2005-09-29 | Samuel Fineberg | Communication-link-attached persistent memory system |
CN101409715A (zh) * | 2008-10-22 | 2009-04-15 | 中国科学院计算技术研究所 | 一种利用InfiniBand网络进行通信的方法及系统 |
CN101459676A (zh) * | 2008-12-31 | 2009-06-17 | 中国科学院计算技术研究所 | 针对文件系统的基于高速网络的消息传输框架和方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103227778A (zh) * | 2013-03-26 | 2013-07-31 | 华为技术有限公司 | 内存访问方法、设备和系统 |
CN103227778B (zh) * | 2013-03-26 | 2016-09-14 | 华为技术有限公司 | 内存访问方法、设备和系统 |
CN104767725A (zh) * | 2014-12-31 | 2015-07-08 | 中兴仪器(深圳)有限公司 | 一种网络数据收发装置和方法 |
CN105159929A (zh) * | 2015-08-05 | 2015-12-16 | 北京思特奇信息技术股份有限公司 | 一种内存数据库通信方法及系统 |
CN105487815A (zh) * | 2015-11-24 | 2016-04-13 | 无锡江南计算技术研究所 | 一种基于rdma机制的并行输入输出方法 |
CN105487815B (zh) * | 2015-11-24 | 2018-04-10 | 无锡江南计算技术研究所 | 一种基于rdma机制的并行输入输出方法 |
US10250517B2 (en) | 2017-02-03 | 2019-04-02 | Microsoft Technology Licensing, Llc | Completion-side client throttling |
US11108698B2 (en) | 2017-02-03 | 2021-08-31 | Microsoft Technology Licensing, Llc | Systems and methods for client-side throttling after server handling in a trusted client component |
CN107451092A (zh) * | 2017-08-09 | 2017-12-08 | 郑州云海信息技术有限公司 | 一种基于ib网络的数据传输系统 |
CN109067506A (zh) * | 2018-08-15 | 2018-12-21 | 无锡江南计算技术研究所 | 一种基于多滑动窗口并发的轻量级异步消息实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102404398B (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102404398A (zh) | 一种支持多客户端的rdma消息发送方法 | |
US10880235B2 (en) | Remote shared server peripherals over an ethernet network for resource virtualization | |
US11233882B2 (en) | Adaptive session reliability over multiple transports | |
US7502884B1 (en) | Resource virtualization switch | |
US7734859B2 (en) | Virtualization of a host computer's native I/O system architecture via the internet and LANs | |
CN101536417B (zh) | 消除冗余连接的方法 | |
US8316276B2 (en) | Upper layer protocol (ULP) offloading for internet small computer system interface (ISCSI) without TCP offload engine (TOE) | |
US20060174031A1 (en) | Data transmission among network-connected information processors | |
CN102404212A (zh) | 一种基于InfiniBand网络的跨平台RDMA通信方法 | |
Wang et al. | SDUDP: A reliable UDP-Based transmission protocol over SDN | |
EP2274898B1 (en) | Method for enabling faster recovery of client applications in the event of server failure | |
US9075926B2 (en) | Distributed interconnect bus apparatus | |
EP1570369A2 (en) | An apparatus and method for receive transport protocol termination | |
EP4027249A1 (en) | Connection management in a network adapter | |
US9240896B2 (en) | Method and system for USB connections over distinct network paths | |
US10148732B2 (en) | Secure remote computer network | |
US8683045B2 (en) | Intermediate network device for host-client communication | |
JP4415391B2 (ja) | データをネットワークに送信する方法及び装置並びにデータをネットワークから受信する方法及び装置 | |
US9876724B2 (en) | Method for seamless multi-link network connectivity | |
EP3955115B1 (en) | Flexible link level retry for shared memory switches | |
US9059865B2 (en) | USB host adaptor for initiating a USB connection over a non-USB network | |
Kim et al. | Internet protocol engine in tcp/ip offloading engine | |
Kim et al. | The offloading of socket information for TCP/IP offload engine | |
US9059864B2 (en) | USB device adaptor for initiating a USB connection over a non-USB network | |
Xiang et al. | Design of simplified TCP/IP protocol stack for electricity information acquisition test system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220801 Address after: 100193 No. 36 Building, No. 8 Hospital, Wangxi Road, Haidian District, Beijing Patentee after: Dawning Information Industry (Beijing) Co.,Ltd. Patentee after: DAWNING INFORMATION INDUSTRY Co.,Ltd. Address before: 100084 Beijing Haidian District City Mill Street No. 64 Patentee before: Dawning Information Industry (Beijing) Co.,Ltd. |