一种低延迟通讯系统技术方案

技术编号:18460686 阅读:26 留言:0更新日期:2018-07-18 13:28
本发明专利技术公开了一种低延迟通讯系统,能够在无需额外采购网络硬件的条件下,有效降低金融衍生品交易系统中的系统延迟问题,且使用简单。其技术方案为:系统包括API接口管理模块、信息交互管理模块、策略管理模块、描述符管理模块和数据收发模块,其中API接口管理模块用于向用户应用程序提供数据收发接口;信息交互管理模块用于管理不同进程之间的通信机制;策略管理模块用于维护数据分发策略方法;描述符管理模块用于管理所有用户进程所申请的描述符;数据收发模块用于通过描述符在用户层、内核和网卡之间的数据收发。

A low delay communication system

The invention discloses a low delay communication system, which can effectively reduce the system delay problem in the financial derivatives trading system without the need for additional procurement of network hardware, and is easy to use. The system includes the API interface management module, the information exchange management module, the strategy management module, the descriptor management module and the data receiving module. The API interface management module is used to provide the data transceiver interface to the user application, and the information interaction management module is used to manage the communication machine between different processes. The policy management module is used to maintain the data distribution strategy method; the descriptor management module is used to manage the descriptors applied by all user processes; the data transceiver module is used to receive and receive data between the user layer, the kernel and the network card through the descriptor.

【技术实现步骤摘要】
一种低延迟通讯系统
本专利技术涉及金融期货领域中的技术,尤其涉及基于数据层开发工具包(DPDK,DatePlaneDevelopmentKit)的低延迟通讯系统。
技术介绍
近年来,随着金融衍生品品种的丰富壮大和金融知识的传播,越来越多的投资者参与到了金融衍生品交易中来。为了满足广大投资者的需求,规范不同交易所之间的系统接口,2005年国际金融信息交换组织(FIXProtocolLimited简称FPL)提出了基于减少带宽使用率的FAST编码方法。为了提高交易系统吞吐量,降低交易延迟,2013年FPL组织又提出了符合FIX规范的简单二进制编码方法,简称SBE。简单二进制编码方法的主要思想是通过在应用层对业务数据进行快速编解码,从而达到降低应用程序处理延迟的目的。然而,这一方法仅仅只是在应用层降低了数据处理延迟,并没有解决网络层带来的系统延迟开销。为了解决这一问题,美国Solarflare公司研发了一系列定制的低延迟通讯网卡和Onload程序套件。其主要方法是通过内核旁路的方式实现网络数据包从网卡到用户态的直接交互,从而达到降低操作系统延迟的目的。然而,该方案的采用必须购买Solarflare专用网卡。相比于目前市场上广泛使用的Intel网卡,这不仅增加了额外的成本开销,而且需要经过大量的稳定性测试。2010年Intel提出了数据层开发工具包(DatePlaneDevelopmentKit,简称DPDK),其主要思想也是通过内核旁路的方式在用户层直接处理网卡数据,从而达到降低网络层延迟的目的。然而,一方面该方案会造成网卡独占,也就是说操作系统将不能再访问被DPDK占用的网卡;另一方面,该方案只是提供了一个网卡数据包的接收和发送接口,并没有提供完整的网络协议栈,例如UDP、TCP协议的处理。同时对用户程序多进程多线程的支持较差,从而导致现有的用户程序,必须经过大幅修改才能使用该方案。
技术实现思路
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。本专利技术的目的在于解决上述问题,提供了一种低延迟通讯系统,能够在无需额外采购网络硬件的条件下,有效降低金融衍生品交易系统中的系统延迟问题,且使用简单。本专利技术的技术方案为:本专利技术揭示了一种低延迟通讯系统,包括API接口管理模块、信息交互管理模块、策略管理模块、描述符管理模块和数据收发模块,其中:API接口管理模块,用于向用户应用程序提供数据收发接口;信息交互管理模块,用于管理不同进程之间的通信机制;策略管理模块,用于维护数据分发策略方法;描述符管理模块,用于管理所有用户进程所申请的描述符;数据收发模块,用于通过描述符在用户层、内核和网卡之间的数据收发。根据本专利技术的低延迟通讯系统的一实施例,API接口管理模块提供发送、接收、描述符申请、描述符释放四个API接口,其中描述符申请的信息包括源IP地址、目的IP地址、源端口号、目的端口号,以及数据类型。根据本专利技术的低延迟通讯系统的一实施例,API接口管理模块包括描述符请求响应单元和描述符维护单元,其中:第一描述符请求响应单元,用户应用程序通过用户数据隔离层提供的API接口发出描述符申请,用户数据隔离层对描述符申请进行校验后将其打包封装再通过信息交互管理模块的共享内存管理单元中的描述符请求队列传递给网络数据包分发层,并发送信号量通知消息激活网络数据包分发层的用户请求响应线程,然后阻塞等待,用户请求响应线程被激活后从描述符请求队列中提取描述符申请并向描述符管理模块的第二描述符请求响应单元进行注册,然后向用户返回注册结果。第一描述符维护单元,用于维护当前进程中各个已申请的描述符的管理和释放,用户请求响应线程通过管道将描述符在共享内存中的分配信息返回给用户数据隔离层,用户数据隔离层解除阻塞后读取分配信息并调用第一描述符维护单元更新进程内存信息。根据本专利技术的低延迟通讯系统的一实施例,信息交互管理模块所管理的通信机制包括共享内存、管道和信号量,当用户应用程序申请到一个描述符后维护该描述符所对应的数据收发队列缓冲区;信息交互管理模块包括共享内存管理单元和进程间通信管理单元,其中:共享内存管理单元,用于维护共享内存中各个数据结构的申请和释放;进程间通信管理单元,提供用户应用程序和底层环境的一套通讯机制,包括管道和信号量。根据本专利技术的低延迟通讯系统的一实施例,策略管理模块包括ARP表维护单元、数据分发策略表维护单元和CPU线程绑定单元,其中:ARP表维护单元,用于实时的在内存中维护ARP表,并对外提供ARP信息查询接口;数据分发策略表维护单元,用于根据当前所有用户申请的描述符,对从网卡接收到的网络数据包进行匹配路由;CPU绑定单元,用于根据当前线程要处理的网络数据包的来源,选择一个最佳逻辑CPU进行线程绑定。根据本专利技术的低延迟通讯系统的一实施例,描述符管理模块包括第二描述符请求响应单元和第二描述符维护单元,其中:第二描述符请求响应单元,用于维护当前系统中所有的用户应用程序描述符的申请和释放,第一描述符请求响应单元通过用户请求响应线程向第二描述符请求响应单元进行注册,收到该注册申请后,第二描述符请求响应单元对描述符申请进行检测,检测信息包括所申请的端口号是否已经被占用,IP地址、协议类型是否合法,如果检测未通过则拒绝该申请并返回错误信息,如果检测通过则生成描述符并为该描述符在共享内存中分配数据收队列和数据发队列,当第二描述符请求响应单元收到的是描述符释放申请时,直接交由第二描述符维护单元操作;第二描述符维护单元,用于维护当前系统中所有描述符的管理和释放,当收到第二描述符请求响应单元发送的描述符申请注册成功信息时,更新内存表信息,标记该描述符已经被占用,并记录所分配的数据收发队列、进程间通讯地址;当接收到第二描述符请求响应单元发送的描述符释放信息时,更新内存表信息,释放该描述符所占用的数据收发队列、进程通讯地址。根据本专利技术的低延迟通讯系统的一实施例,数据收发模块用于将从用户层和内核发送过来的数据通过指定的网卡队列发送出去,以及将从网卡上接收的数据,通过数据分发策略表发送给指定的用户或者操作系统内核网络协议栈;数据收发模块进一步包括上行数据分发单元、下行数据分发单元和内核交互单元。根据本专利技术的低延迟通讯系统的一实施例,下行数据分发单元中,用户应用程序调用用户数据隔离层提供的发送API接口,将描述符、数据传递给用户数据隔离层,用户数据隔离层在收到后先查找本地内存对描述符进行校验,如果该描述符处于未申请状态则将数据抛弃并向用户应用程序返回错误信息,如果该描述符处于已申请状态则用户数据隔离层根据描述符信息解析要发送的IP地址、端口号,并从ARP表查找对方的MAC地址,用户数据隔离层根据网络协议将用户数据封装成可以在网络上传输的UDP数据或者TCP数据,并将封装好的网络数据包通过共享内存的方式,从该描述符的无锁发队列上发送给网络数据包分发层,同时向网络数据包分发层的下行数据发送线程发送一个激活指令,网络数据包分发层的下行数据发送线程在侦听本文档来自技高网
...

【技术保护点】
1.一种低延迟通讯系统,其特征在于,包括API接口管理模块、信息交互管理模块、策略管理模块、描述符管理模块和数据收发模块,其中:API接口管理模块,用于向用户应用程序提供数据收发接口;信息交互管理模块,用于管理不同进程之间的通信机制;策略管理模块,用于维护数据分发策略方法;描述符管理模块,用于管理所有用户进程所申请的描述符;数据收发模块,用于通过描述符在用户层、内核和网卡之间的数据收发。

【技术特征摘要】
1.一种低延迟通讯系统,其特征在于,包括API接口管理模块、信息交互管理模块、策略管理模块、描述符管理模块和数据收发模块,其中:API接口管理模块,用于向用户应用程序提供数据收发接口;信息交互管理模块,用于管理不同进程之间的通信机制;策略管理模块,用于维护数据分发策略方法;描述符管理模块,用于管理所有用户进程所申请的描述符;数据收发模块,用于通过描述符在用户层、内核和网卡之间的数据收发。2.根据权利要求1所述的低延迟通讯系统,其特征在于,API接口管理模块提供发送、接收、描述符申请、描述符释放四个API接口,其中描述符申请的信息包括源IP地址、目的IP地址、源端口号、目的端口号,以及数据类型。3.根据权利要求2所述的低延迟通讯系统,其特征在于,API接口管理模块包括第一描述符请求响应单元和第一描述符维护单元,其中:第一描述符请求响应单元,用户应用程序通过用户数据隔离层提供的API接口发出描述符申请,用户数据隔离层对描述符申请进行校验后将其打包封装再通过信息交互管理模块的共享内存管理单元中的描述符请求队列传递给网络数据包分发层,并发送信号量通知消息激活网络数据包分发层的用户请求响应线程,然后阻塞等待,用户请求响应线程被激活后从描述符请求队列中提取描述符申请并向描述符管理模块的第二描述符请求响应单元进行注册,然后向用户返回注册结果;第一描述符维护单元,用于维护当前进程中各个已申请的描述符的管理和释放,用户请求响应线程通过管道将描述符在共享内存中的分配信息返回给用户数据隔离层,用户数据隔离层解除阻塞后读取分配信息并调用第一描述符维护单元更新进程内存信息。4.根据权利要求3所述的低延迟通讯系统,其特征在于,信息交互管理模块所管理的通信机制包括共享内存、管道和信号量,当用户应用程序申请到一个描述符后维护该描述符所对应的数据收发队列缓冲区;信息交互管理模块包括共享内存管理单元和进程间通信管理单元,其中:共享内存管理单元,用于维护共享内存中各个数据结构的申请和释放;进程间通信管理单元,提供用户应用程序和底层环境的一套通讯机制,包括管道和信号量。5.根据权利要求4所述的低延迟通讯系统,其特征在于,策略管理模块包括ARP表维护单元、数据分发策略表维护单元和CPU线程绑定单元,其中:ARP表维护单元,用于实时的在内存中维护ARP表,并对外提供ARP信息查询接口;数据分发策略表维护单元,用于根据当前所有用户申请的描述符,对从网卡接收到的网络数据包进行匹配路由;CPU绑定单元,用于根据当前线程要处理的网络数据包的来源,选择一个最佳逻辑CPU进行线程绑定。6.根据权利要求5所述的低延迟通讯系统,其特征在于,描述符管理模块包括第二描述符请求响应单元和第二描述符维护单元,其中:第二描述符请求响应单元,用于维护当前系统中所有的用户应用程序描述符的申请和释放,第一描述符请求响应单元通过用户请求响应线程向第二描述符请...

【专利技术属性】
技术研发人员:张飞张备战余峰张海荣
申请(专利权)人:上海金融期货信息技术有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1