CN111447155B - 数据传输方法、装置、设备及存储介质 - Google Patents
数据传输方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111447155B CN111447155B CN202010214056.2A CN202010214056A CN111447155B CN 111447155 B CN111447155 B CN 111447155B CN 202010214056 A CN202010214056 A CN 202010214056A CN 111447155 B CN111447155 B CN 111447155B
- Authority
- CN
- China
- Prior art keywords
- network card
- target
- data packet
- information
- card queue
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/72—Admission control; Resource allocation using reservation actions during connection setup
- H04L47/722—Admission control; Resource allocation using reservation actions during connection setup at the destination endpoint, e.g. reservation of terminal resources or buffer space
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了数据传输方法、装置、设备及存储介质。其中,该方法包括:通过预设数据转发应用接收来自第一网卡队列的第一数据包,第一网卡队列与第一处理器核心存在对应关系,获取目标设备信息和预分配端口信息,以目标设备为源端,以预设数据转发应用为目的端,根据目标设备信息和预分配端口信息预估目标设备返回的用于响应第一数据包的第二数据包被分配的目标网卡队列,在目标网卡队列与第一网卡队列一致的情况下,通过预设数据转发应用利用预分配端口信息对应的预分配端口向目标设备发送第一数据包。本发明实施例提供的技术方案,可有效避免处理器核心切换的额外开销,同时提高缓存命中概率,进而提升整体性能。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及数据传输方法、装置、设备及存储介质。
背景技术
在信息技术飞速发展的今天,高性能数据处理系统在众多领域得到了广泛应用。多年来,处理器性能的提升主要依赖于工作频率的提高,然而由于受到功耗及发热等因素的影响,这种做法已接近极限,在此背景下,多核处理器应运而生,并得到迅速发展。
为了有效利用多核处理器,提高任务并行处理能力和吞吐量,现在的网卡基本都支持网卡多队列技术,例如,在配置有多核处理器的设备上,可以通过启用网卡的接收方扩展(Receive Side Scaling,RSS)功能,使同一条流的数据包,每次都能散列到网卡的同一个接收队列,同时,将每个接收队列绑定到一个处理器核心上,这样就可以多个处理器核心并行处理数据包,而且每个处理器核心都只有自己的传输队列,有效地避免了锁开销,同时,传输时的缓存不命中概率也相应的减少。
随着高速数据转发的需要,出现了一些具备数据转发功能的应用(可统称数据转发应用程序),可以配合RSS功能实现应用程序、处理器核心和网卡队列之间的亲和性。然而,对于一些应用场景来说,新建连接所分配的源端口具有随机性,无法保证回流的数据包仍被分配至原接收队列,会带来处理器核心切换的额外开销,因此,需要改进。
发明内容
本发明实施例提供了数据传输方法、装置、设备及存储介质,可以优化现有的基于网卡多队列技术的数据传输方案。
第一方面,本发明实施例提供了一种数据传输方法,应用于配置多核心处理器的计算机设备,该方法包括:
通过预设数据转发应用接收来自第一网卡队列的第一数据包,其中,所述第一网卡队列与第一处理器核心存在对应关系;
获取目标设备信息和预分配端口信息;
以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列;
在所述目标网卡队列与所述第一网卡队列一致的情况下,通过所述预设数据转发应用利用所述预分配端口信息对应的预分配端口向所述目标设备发送所述第一数据包。
第二方面,本发明实施例提供了一种数据传输装置,集成于配置多核心处理器的计算机设备,该装置包括:
数据包接收模块,用于通过预设数据转发应用接收来自第一网卡队列的第一数据包,其中,所述第一网卡队列与第一处理器核心存在对应关系;
信息获取模块,用于获取目标设备信息和预分配端口信息;
网卡队列预估模块,用于以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列;
数据发送模块,用于在所述目标网卡队列与所述第一网卡队列一致的情况下,通过所述预设数据转发应用利用所述预分配端口信息对应的预分配端口向所述目标设备发送所述第一数据包。
第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的数据传输方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的数据传输方法。
本发明实施例中提供的数据传输方案,应用于配置多核心处理器的计算机设备,通过预设数据转发应用接收来自第一网卡队列的第一数据包,其中,第一网卡队列与第一处理器核心存在对应关系,获取目标设备信息和预分配端口信息,以目标设备为源端,以预设数据转发应用为目的端,根据目标设备信息和预分配端口信息预估目标设备返回的用于响应第一数据包的第二数据包被分配的目标网卡队列,在目标网卡队列与第一网卡队列一致的情况下,通过预设数据转发应用利用预分配端口信息对应的预分配端口向目标设备发送第一数据包。通过采用上述技术方案,预设数据转发应用在向目标设备转发第一数据包之前,先预估若利用当前预分配端口发送第一数据包,目标设备回流的数据包是否会被分配至原来的第一网卡队列,若是,则说明回包仍由第一处理器核心处理,可利用当前预分配端口进行数据发送,可有效避免处理器核心切换的额外开销,同时提高缓存命中概率,进而提升整体性能。
附图说明
图1为本发明实施例提供的一种数据传输方法的流程示意图;
图2为本发明实施例提供的又一种数据传输方法的流程示意图;
图3为本发明实施例提供的另一种数据传输方法的流程示意图;
图4为本发明实施例提供的一种数据流走向示意图;
图5为本发明实施例提供的一种数据传输装置的结构框图;
图6为本发明实施例提供的一种计算机设备的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
为了便于理解本发明实施例,下面先以数据面开发套件(Data Plan DevelopKit,DPDK)应用为例,对数据转发应用程序进行说明,可以理解的是,本发明实施例还可以适用其他具备数据转发功能的应用程序,并不做具体限定。DPDK是英特尔(Intel)公司开发的一组基于数据面的快速处理数据包的开发平台及接口,DPDK应用可以很容易实现应用程序、处理器核心和网卡队列之间的亲和性,将网卡的某个收发队列分配给某个核心,然后将应用程序和该核心绑定,这样在该核心上运行的应用程序,都能从指定的队列上收发数据。然而,当DPDK应用作为代理或传输控制协议(Transmission Control Protocol,TCP)客户端或其他身份时,由于新建连接所分配的源端口具有随机性,当数据包流返回时,并不一定会由之前发出该数据流的应用所绑定的网卡队列及处理器核心来处理,这样就带来处理器核心切换的额外开销。本发明实施例可以在发送数据之前预估回包被分配的接收网卡队列是否发生变化,若未变化,则采用当前预分配端口进行数据发送,可有效解决上述技术问题。
图1为本发明实施例提供的一种数据传输方法的流程示意图,该方法可以由数据传输装置执行,其中该装置可由软件和/或硬件实现,一般可集成在配置多核心处理器的计算机设备中。如图1所示,该方法包括:
步骤101、通过预设数据转发应用接收来自第一网卡队列的第一数据包,其中,所述第一网卡队列与第一处理器核心存在对应关系。
本发明实施例中,多核心处理器例如可以是多核心中央处理单元(CentralProcessing Unit,CPU),具体的核心数不做限定。
预设数据转发应用可以是具备数据转发功能的应用程序,如DPDK应用。在计算机设备中可以运行多个预设数据转发应用,每个预设数据转发应用可以单独运行在一个处理器核心中;在计算机设备中也可以以多进程模式运行预设数据转发应用,每个进程运行在一个处理器核心中。可选的,所述预设数据转发应用为多进程运行模式;相应的,所述通过预设数据转发应用接收来自第一网卡队列的第一数据包,包括:通过预设数据转发应用的第一进程接收来自第一网卡队列的第一数据包,其中,所述第一进程在所述第一处理器核心运行。进一步的,所述预设数据转发应用的进程数为网卡队列数和处理器核心数中的较小值。其中,处理器物理核心数可以指与网卡PCI-E(Pedpherd Component Interconnect-Express)链接的处理器的物理核心数。这样设置的好处在于,能够保证进程、网卡队列以及处理器核心中每两者之间的一对一对应关系,避免多余的切换操作。
本发明实施例中,计算机设备中的网卡支持多队列技术,网卡中存在多个网卡收发队列(简称网卡队列),每个网卡队列可以对应一个处理器核心,每个处理器核心可以对应一个预设数据转发应用或一个预设数据转发应用的进程。
当其他设备(如下文中的第一设备)向计算机设备发送第一数据包时,数据包首先到达网卡,可以基于网卡的队列分配策略确定接收第一数据包的第一网卡队列,具体的队列分配策略可根据网卡采用的多队列技术来确定,例如,RSS技术,可以基于RSS哈希算法确定。随后,第一数据包经由第一处理器核心到达对应的预设数据转发应用。
步骤102、获取目标设备信息和预分配端口信息。
示例性的,可以对第一数据包进行解析,得到目标设备信息,目标设备也即第一数据包的最终接收端,需要由计算机设备中的预设数据转发应用进行转发。其中,目标设备信息可包括目标设备相关的身份信息或地址信息等。示例性的,目标设备信息包括目标设备的地址信息和目标设备的端口信息,其中,地址信息例如可以是网际协议(InternetProtocol,IP)地址,端口信息例如可以是端口号。
本发明实施例中,目标设备的具体身份可以与预设数据转发应用的身份对应。例如,当目标设备为源服务器时,预设数据转发应用为代理应用程序;当目标设备为传输控制协议TCP服务端时,预设数据转发应用为TCP客户端。当然,两者还可以有其他的身份对应关系,本发明实施例不做限定。
示例性的,在向目标设备发送第一数据之前,需要确定利用哪个具体的端口进行发送,所确定的端口可称为预分配端口,预分配端口信息例如可包括预分配端口的端口号。当预设数据转发应用作为代理或TCP客户端或其他身份时,新建连接所分配的源端口具有随机性,预分配端口可以是随机确定的一个本地端口。
步骤103、以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列。
示例性的,当预设数据转发应用利用某个端口(如端口A)发出第一数据包至目标设备后,目标设备返回的用于响应第一数据包的第二数据包将被发送至该端口A,计算机设备再根据端口A确定对应的网卡队列。因此,发明人利用该特点,在发送第一数据包之前,先以目标设备为源端,以预设数据转发应用为目的端,根据目标设备信息和预分配端口信息预估第二数据包被分配的目标网卡队列,也即,假设第二数据包由预分配端口接收,基于网卡的队列分配策略确定接收第二数据包的目标网卡队列。
步骤104、在所述目标网卡队列与所述第一网卡队列一致的情况下,通过所述预设数据转发应用利用所述预分配端口信息对应的预分配端口向所述目标设备发送所述第一数据包。
示例性的,若目标网卡队列与第一网卡队列一致,则说明若利用预分配端口向目标设备发送第一数据包后,目标设备返回的第二数据包仍然会被分配至第一网卡队列,仍由第一处理器核心处理,可避免处理器核心的切换。因此,可通过预设数据转发应用利用预分配端口向目标设备发送第一数据包。
另外,第二数据包一般还需要转发给第一设备,那么可以由运行在第一处理核心上的预设数据转发应用或运行在第一处理核心上的预设数据转发应用的第一进程来实现转发,可进一步避免应用间切换或应用内进程间切换。
本发明实施例中提供的数据传输方法,应用于配置多核心处理器的计算机设备,通过预设数据转发应用接收来自第一网卡队列的第一数据包,其中,第一网卡队列与第一处理器核心存在对应关系,获取目标设备信息和预分配端口信息,以目标设备为源端,以预设数据转发应用为目的端,根据目标设备信息和预分配端口信息预估目标设备返回的用于响应第一数据包的第二数据包被分配的目标网卡队列,在目标网卡队列与第一网卡队列一致的情况下,通过预设数据转发应用利用预分配端口信息对应的预分配端口向目标设备发送第一数据包。通过采用上述技术方案,预设数据转发应用在向目标设备转发第一数据包之前,先预估若利用当前预分配端口发送第一数据包,目标设备回流的数据包是否会被分配至原来的第一网卡队列,若是,则说明回包仍由第一处理器核心处理,可利用当前预分配端口进行数据发送,可有效避免处理器核心切换的额外开销,同时提高缓存命中概率,进而提升整体性能。
在一些实施例中,所述目标设备信息包括目标设备的地址信息和目标设备的端口信息。所述以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列,包括:以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备的地址信息、所述目标设备的端口信息、所述预设数据转发应用的地址信息以及所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列。这样设置的好处在于,可以根据源地址、目的地址、源端口和目的端口更加快速合理地确定回流数据包对应的网卡队列。
在一些实施例中,所述通过预设数据转发应用接收来自第一网卡队列的第一数据包,包括:检测到第一数据包到达网卡时,获取发送所述第一数据包的第一设备的地址信息和端口信息;以所述第一设备为源端,以预设数据转发应用为目的端,根据所述第一设备的地址信息、所述第一设备的端口信息、所述预设数据转发应用的地址信息以及所述预设数据转发应用的服务端口计算所述第一数据包被分配的第一网卡队列;通过预设数据转发应用接收来自第一网卡队列的第一数据包。这样设置的好处在于,可以根据源地址、目的地址、源端口和目的端口更加快速合理地确定数据包对应的网卡队列。其中,目的端口为预设数据转发应用的服务端口。
在一些实施例中,所述以所述第一设备为源端,以预设数据转发应用为目的端,根据所述第一设备的地址信息、所述第一设备的端口信息、所述预设数据转发应用的地址信息以及所述预设数据转发应用的服务端口计算所述第一数据包被分配的第一网卡队列,包括:基于预设接收方扩展RSS哈希算法,以所述第一设备为源端,以预设数据转发应用为目的端,根据所述第一设备的地址信息、所述第一设备的端口信息、所述预设数据转发应用的地址信息以及所述预设数据转发应用的服务端口计算所述第一数据包被分配的第一网卡队列;相应的,所述以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备的地址信息、所述目标设备的端口信息、所述预设数据转发应用的地址信息以及所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列,包括:基于所述预设RSS哈希算法,以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备的地址信息、所述目标设备的端口信息、所述预设数据转发应用的地址信息以及所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列。其中,RSS功能是网卡上较为成熟的网络加速技术,利用RSS哈希算法来确定网卡队列,可以保证计算结果的准确性和合理性,同时也能够保证系统的稳定性。地址信息具体可以是IP地址,端口信息具体可以是端口号。
在一些实施例中,还包括:在所述目标网卡队列与所述第一网卡队列不一致的情况下,重选新的端口作为预分配端口,并重复执行获取预分配端口信息和预估目标网卡队列的相关步骤。这样设置的好处在于,当网卡队列发生变化时,可以重新选取其他的端口进行预估,便于找到合适的端口进行第一数据包的发送。其中,重复执行获取预分配端口信息和预估目标网卡队列的相关步骤,可具体包括:获取新的预分配端口信息,以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述新的预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的新的目标网卡队列,在所述新的目标网卡队列与所述第一网卡队列一致的情况下,通过所述预设数据转发应用利用所述新的预分配端口信息对应的新的预分配端口向所述目标设备发送所述第一数据包。需要说明的是,若新的目标网卡队列与第一网卡队列仍不一致,可继续重选新的端口作为预分配端口,并重复执行获取预分配端口信息和预估目标网卡队列的相关步骤。
在一些实施例中,所述重选新的端口作为预分配端口,包括:在重选次数小于预设次数阈值的情况下,重选新的端口作为预分配端口。这样设置的好处在于,通过设置预设次数阈值,可以控制重试次数,避免占用过多系统资源。
在一些实施例中,还包括:在所述重选次数达到所述预设次数阈值的情况下,返回错误信息和/或等待预设时长后重复执行获取预分配端口信息和预估目标网卡队列的相关步骤。返回错误信息的好处在于,可以及时向系统反应端口配置异常情况;等待预设时长后重复执行获取预分配端口信息和预估目标网卡队列的相关步骤的好处在于,经过预设时长后,可能异常情况已得到解决,此时再次尝试进行目标网卡队列的预估,以便成功配置合适的端口进行第一数据包的发送。
在一些实施例中,所述以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列,包括:获取网卡的配置信息,在所述网卡不支持应用定位路由(Application Targeting Routing,ATR)模式的情况下,以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列。其中,网卡的配置信息可包括网卡类型,也可包括网卡所支持的功能等。此处优化的好处在于,一些网卡支持ATR模式,该模式是Intel网卡的一种工作模式,在该模式下,网卡对传输流量进行采样并学习,可以将收到的流量传输到原来发出该流量的那个网卡队列中,因此,对于支持ATR模式的网卡来说,可以利用ATR模式来避免网卡队列的切换。然而,目前只有在Intel XL710、X540以及X520系列网卡支持ATR模式,且计算机设备中若配置这类网卡会导致成本的大幅增加,因此,在确定当前的网卡不支持ATR模式时,可以采用本发明实施例中预估目标网卡队列的方式来分配合适的端口,在节约硬件成本的情况下,最大限度地利用现有硬件资源,提升处理性能和缓存命中率。
图2为本发明实施例提供的又一种数据传输方法的流程示意图,以预设数据转发应用为DPDK应用为例进行说明,如图2所示,该方法包括:
步骤201、检测到第一数据包到达网卡时,获取发送第一数据包的第一设备的地址信息和端口信息。
步骤202、基于预设RSS哈希算法以第一设备为源端,以DPDK应用为目的端,根据第一设备的地址信息、第一设备的端口信息、DPDK应用的地址信息以及DPDK应用的服务端口计算第一数据包被分配的第一网卡队列。
示例性的,预设RSS哈希算法具体可以是微软的托普利兹算法,算法的具体内容可参考网卡功能与数据手册。其中,地址信息例如可以是IP地址,端口信息例如可以是端口号。
步骤203、通过DPDK应用接收来自第一网卡队列的第一数据包。
其中,DPDK应用与第一网卡队列以及第一处理器核心存在绑定关系。
步骤204、获取网卡的配置信息,判断网卡是否支持ATR模式,若否,则执行步骤205;否则,结束流程。
可选的,步骤204也可在步骤201之前执行,由于计算机设备的网卡一般是不变的,因此,可仅在设备开机等时刻进行一次性的判断,并保存判断结果。若判断结果为支持ATR模式,那么在ATR模式开启的情况下,可在步骤203后结束流程,按照ATR模式的策略进行第一数据包的发送;若判断结果为不支持ATR模式,则可在步骤203后直接执行步骤205。
步骤205、获取目标设备的地址信息、目标设备的端口信息和预分配端口信息。
步骤206、基于预设RSS哈希算法,以目标设备为源端,以DPDK应用为目的端,根据目标设备的地址信息、目标设备的端口信息、DPDK应用的地址信息以及预分配端口信息预估目标设备返回的用于响应第一数据包的第二数据包被分配的目标网卡队列。
步骤207、判断目标网卡队列与第一网卡队列是否一致,若是,则执行步骤208;否则,执行步骤209。
步骤208、通过DPDK应用利用预分配端口信息对应的预分配端口向目标设备发送第一数据包。
步骤209、重选新的端口作为预分配端口,并返回执行步骤206。
可选的,若重选次数小于预设次数阈值,则重选新的端口作为预分配端口;若重选次数达到预设次数阈值,则返回错误信息并等待预设时长后重复执行获取预分配端口信息和预估目标网卡队列的相关步骤。
目前,端口号通常为2个字节,即16位,所以最大的端口号为2的16次方减1(去掉端口号0,即65535)。因此当尝试次数超过65535(预设次数阈值)时,表示最少已经遍历了一遍所有的端口,都没有找到合适的(即能回流到当前队列的端口),可返回失败。在等待预设时长后,可能有些端口被释放,出现可用端口,那么可重新预估合适的端口。当然,端口号的位数也可能是其他数值,相应的预设次数阈值可以随之变化,本发明实施例不做具体限定。
本发明实施例提供的数据传输方法,第一数据包到达网卡后,先基于RSS哈希算法确定第一网卡队列,由存在绑定关系的DPDK应用接收第一数据包,若网卡不支持ATR模式,则基于RSS哈希算法预估采用当前预分配端口进行数据发送后,回流数据包即将被分配的目标网卡队列是否与第一网卡队列一致,若一致,则采用当前预分配端口进行第一数据的发送,若不一致,则重新选取新的预分配端口进行预估,直到找到合适的端口进行第一数据的发送。与现有技术相比,虽然在每次建立连接分配端口时可能需要多做几次尝试,但在后续的数据传输中,有效地避免了处理器核心间切换以及多个应用同时访问同一个网卡队列所带来的锁的开销及进程间通讯的开销,因此分配端口时多次尝试的损耗,基本可以忽略不计,可以实现从整体上提升设备性能。
图3为本发明实施例提供的另一种数据传输方法的流程示意图,图4为本发明实施例提供的一种数据流走向示意图,以DPDK应用作为代理应用程序为例,DPDK应用需要在客户端和源服务器之间进行数据转发。
可选的,该方法包括:
步骤301、以多进程模式运行DPDK代理服务程序。
其中,DPDK代理服务程序也即DPDK应用,进程数n可以取网卡收发队列数以及和网卡PCI-E链接的CPU的物理核心数二者中的最小值。
步骤302、将每个网卡队列分别绑定在一个CPU的物理核心上。
示例性的,本步骤可看做是设置网卡队列与CPU的亲和性,绑定可理解为建立网卡队列与CPU核心的对应关系,具体的绑定方式不做限定,如建立一个对应关系列表等。参见图4,例如将队列0与CPU 0绑定,将队列n与CPU n绑定等。
步骤303、将DPDK应用中的每个进程绑定在一个CPU的物理核心上。
示例性的,本步骤可看做是设置DPDK代理应用进程与CPU的亲和性,绑定可理解为建立进程与CPU核心的对应关系,具体的绑定方式不做限定,如建立一个对应关系列表等。参见图4,例如将代理程序0(也即进程0)与CPU0绑定,将代理程序n(也即进程n)与CPUn绑定等。
步骤304、客户端发送的第一数据包到达网卡,获取客户端的IP地址和端口号,获取DPDK应用的IP地址和服务端口号。
示例性的,客户端可以发送请求到DPDK应用,该请求对应的数据以第一数据包的形式被发送到计算机设备,先到达网卡,此时获取客户端的IP地址和端口号。假设客户端的IP为1.1.1.1,端口为1234,DPDK应用的IP为2.2.2.2,服务端口为2345。
步骤305、基于RSS哈希算法以客户端为源端,以DPDK应用为目的端,根据客户端的IP地址和端口号、以及DPDK应用的IP地址以及服务端口号计算第一数据包被分配的第一网卡队列。
示例性的,根据<源IP,目的IP,源端口,目的端口>组合(即<1.1.1.1,2.2.2.2,1234,2345>)应用RSS哈希算法,计算出由队列0接收第一数据包,而队列0和CPU0绑定,CPU0和代理程序0绑定,故最后由代理程序0来处理该请求(见图4中的数据流1,表示客户端发送请求给代理)。
步骤306、由DPDK应用的第一进程接收第一数据包,解包获得源服务器的IP地址和端口号,分配本地端口作为预分配端口。
示例性的,由代理程序0接收第一数据包,解包获得后端源服务器的IP及端口,假设分别为3.3.3.3和3456。预分配端口是当前分配的用于准备转发客户端的请求给后端源服务器的端口,假设分配的端口为4567。
步骤307、基于预设RSS哈希算法,以源服务器为源端,以DPDK应用为目的端,根据源服务器的IP地址和端口号、以及DPDK应用的IP地址以及预分配端口号预估源服务器返回的用于响应第一数据包的第二数据包被分配的目标网卡队列。
示例性的,预分配端口号为4567,将组合<3.3.3.3,2.2.2.2,3456,4567>(回包后端源服务器的IP和端口是作为源端,而应用为目的端)代入RSS哈希算法,计算出后端源服务器发回该包时,即将分配到哪个队列(也即目标网卡队列),用于判断是否会同样分配到队列0。
步骤308、判断目标网卡队列与第一网卡队列是否相同,若否,则执行步骤309;否则,执行步骤310。
步骤309、重选新的端口作为预分配端口,并返回执行步骤307。
示例性的,当目标网卡队列与第一网卡队列不同时,说明当前分配的端口并不合适,因此需要重新分配,具体的重选方式不做限定,例如可以是随机选择。随后,返回步骤307,重新试算当前端口是否合适,直到算出合适的端口。
步骤310、通过DPDK应用的第一进程利用预分配端口向源服务器发送第一数据包。
示例性的,在确定当前分配的端口合适时,利用该端口转发请求到后端源服务器(见图4中的数据流2,表示代理转发请求到源服务器)。后端源服务器接收到第一数据包后,对客户端的请求进行回复,即返回第二数据包,由于之前分配的端口经过RSS哈希算法计算后,是分配到队列0的,故最终还是由代理程序0收到回复(见图4中的数据流3,表示源服务器回复代理请求)。随后,代理程序0再将回复(也即第二数据包)转发给之前的客户端(见图4中的数据流4,表示代理转发响应到客户端),进而完成整个代理过程。
本发明实施例提供的数据传输方法,DPDK应用作为代理应用程序,网卡收发队列、CPU物理核心以及DPDK应用进程之间存在绑定关系,当客户端向DPDK应用所在的计算机设备发送数据时,数据先到达网卡,基于RSS哈希算法计算出用于接收数据的第一网卡队列,进而确定对应的CPU核心以及DPDK应用进程,由对应的DPDK应用进程接收数据并进行转发,在进行转发前,先以源服务器为源端以DPDK应用为目的端预估回包即将被分配的队列是否仍为第一网卡队列,以此来得到合适的本地端口,并利用该本地端口进行数据转发,可有效避免CPU间切换、多个应用进程同时访问同一个网卡队列所带来的锁的开销及进程间通讯的开销,提升整体性能。
图5为本发明实施例提供的一种数据传输装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在配置多核心处理器的计算机设备中,可通过执行数据传输方法来进行数据传输。如图5所示,该装置包括:
数据包接收模块501,用于通过预设数据转发应用接收来自第一网卡队列的第一数据包,其中,所述第一网卡队列与第一处理器核心存在对应关系;
信息获取模块502,用于获取目标设备信息和预分配端口信息;
网卡队列预估模块503,用于以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列;
数据发送模块504,用于在所述目标网卡队列与所述第一网卡队列一致的情况下,通过所述预设数据转发应用利用所述预分配端口信息对应的预分配端口向所述目标设备发送所述第一数据包。
本发明实施例提供的数据传输装置,预设数据转发应用在向目标设备转发第一数据包之前,先预估若利用当前预分配端口发送第一数据包,目标设备回流的数据包是否会被分配至原来的第一网卡队列,若是,则说明回包仍由第一处理器核心处理,可利用当前预分配端口进行数据发送,可有效避免处理器核心切换的额外开销,同时提高缓存命中概率,进而提升整体性能。
本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供的数据传输装置。图6为本发明实施例提供的一种计算机设备的结构框图。计算机设备600包括存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序,所述处理器602执行所述计算机程序时实现本发明实施例提供的数据传输方法。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的数据传输方法。
上述实施例中提供的数据传输装置、设备以及存储介质可执行本发明任意实施例所提供的数据传输方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的数据传输方法。
注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。
Claims (15)
1.一种数据传输方法,其特征在于,应用于配置多核心处理器的计算机设备,所述方法包括:
通过预设数据转发应用接收来自第一网卡队列的第一数据包,其中,所述第一网卡队列与第一处理器核心存在对应关系;
获取目标设备信息和预分配端口信息;
以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列;
在所述目标网卡队列与所述第一网卡队列一致的情况下,通过所述预设数据转发应用利用所述预分配端口信息对应的预分配端口向所述目标设备发送所述第一数据包。
2.根据权利要求1所述的方法,其特征在于,所述目标设备信息包括目标设备的地址信息和目标设备的端口信息;
所述以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列,包括:
以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备的地址信息、所述目标设备的端口信息、所述预设数据转发应用的地址信息以及所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列。
3.根据权利要求2所述的方法,其特征在于,所述通过预设数据转发应用接收来自第一网卡队列的第一数据包,包括:
检测到第一数据包到达网卡时,获取发送所述第一数据包的第一设备的地址信息和端口信息;
以所述第一设备为源端,以预设数据转发应用为目的端,根据所述第一设备的地址信息、所述第一设备的端口信息、所述预设数据转发应用的地址信息以及所述预设数据转发应用的服务端口计算所述第一数据包被分配的第一网卡队列;
通过预设数据转发应用接收来自第一网卡队列的第一数据包。
4.根据权利要求3所述的方法,其特征在于,所述以所述第一设备为源端,以预设数据转发应用为目的端,根据所述第一设备的地址信息、所述第一设备的端口信息、所述预设数据转发应用的地址信息以及所述预设数据转发应用的服务端口计算所述第一数据包被分配的第一网卡队列,包括:
基于预设接收方扩展RSS哈希算法,以所述第一设备为源端,以预设数据转发应用为目的端,根据所述第一设备的地址信息、所述第一设备的端口信息、所述预设数据转发应用的地址信息以及所述预设数据转发应用的服务端口计算所述第一数据包被分配的第一网卡队列;
相应的,所述以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备的地址信息、所述目标设备的端口信息、所述预设数据转发应用的地址信息以及所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列,包括:
基于预设RSS哈希算法,以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备的地址信息、所述目标设备的端口信息、所述预设数据转发应用的地址信息以及所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列。
5.根据权利要求1所述的方法,其特征在于,还包括:
在所述目标网卡队列与所述第一网卡队列不一致的情况下,重选新的端口作为预分配端口,并重复执行获取预分配端口信息和预估目标网卡队列的相关步骤。
6.根据权利要求5所述的方法,其特征在于,所述重选新的端口作为预分配端口,包括:
在重选次数小于预设次数阈值的情况下,重选新的端口作为预分配端口。
7.根据权利要求6所述的方法,其特征在于,还包括:
在所述重选次数达到所述预设次数阈值的情况下,返回错误信息和/或等待预设时长后重复执行获取预分配端口信息和预估目标网卡队列的相关步骤。
8.根据权利要求1所述的方法,其特征在于,当所述目标设备为源服务器时,所述预设数据转发应用为代理应用程序;当所述目标设备为传输控制协议TCP服务端时,所述预设数据转发应用为TCP客户端。
9.根据权利要求1所述的方法,其特征在于,所述以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列,包括:
获取网卡的配置信息,在所述网卡不支持应用定位路由ATR模式的情况下,以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列。
10.根据权利要求1所述的方法,其特征在于,所述预设数据转发应用为多进程运行模式;
相应的,所述通过预设数据转发应用接收来自第一网卡队列的第一数据包,包括:
通过预设数据转发应用的第一进程接收来自第一网卡队列的第一数据包,其中,所述第一进程在所述第一处理器核心运行。
11.根据权利要求10所述的方法,其特征在于,所述预设数据转发应用的进程数为网卡队列数和处理器核心数中的较小值。
12.根据权利要求1-11任一项所述的方法,其特征在于,所述预设数据转发应用包括基于数据面开发套件DPDK的应用程序。
13.一种数据传输装置,其特征在于,集成于配置多核心处理器的计算机设备,该装置包括:
数据包接收模块,用于通过预设数据转发应用接收来自第一网卡队列的第一数据包,其中,所述第一网卡队列与第一处理器核心存在对应关系;
信息获取模块,用于获取目标设备信息和预分配端口信息;
网卡队列预估模块,用于以目标设备为源端,以所述预设数据转发应用为目的端,根据所述目标设备信息和所述预分配端口信息预估所述目标设备返回的用于响应所述第一数据包的第二数据包被分配的目标网卡队列;
数据发送模块,用于在所述目标网卡队列与所述第一网卡队列一致的情况下,通过所述预设数据转发应用利用所述预分配端口信息对应的预分配端口向所述目标设备发送所述第一数据包。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-12中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010214056.2A CN111447155B (zh) | 2020-03-24 | 2020-03-24 | 数据传输方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010214056.2A CN111447155B (zh) | 2020-03-24 | 2020-03-24 | 数据传输方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111447155A CN111447155A (zh) | 2020-07-24 |
CN111447155B true CN111447155B (zh) | 2023-09-19 |
Family
ID=71649103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010214056.2A Active CN111447155B (zh) | 2020-03-24 | 2020-03-24 | 数据传输方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111447155B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113300979A (zh) * | 2021-02-05 | 2021-08-24 | 阿里巴巴集团控股有限公司 | Rdma网络下的网卡队列创建方法以及装置 |
CN112925581A (zh) * | 2021-02-22 | 2021-06-08 | 百果园技术(新加坡)有限公司 | Dpdk容器的启动方法、装置及电子设备 |
CN113162864B (zh) * | 2021-04-25 | 2022-11-08 | 中国工商银行股份有限公司 | RoCE网络流量控制方法、装置、设备及存储介质 |
CN113434287A (zh) * | 2021-06-03 | 2021-09-24 | 中国联合网络通信集团有限公司 | 任务数据传输方法、系统、电子设备及存储介质 |
CN115150464B (zh) * | 2022-06-22 | 2024-03-15 | 北京天融信网络安全技术有限公司 | 应用代理方法、装置、设备及介质 |
CN115220932A (zh) * | 2022-07-13 | 2022-10-21 | 小米汽车科技有限公司 | 通信进程执行方法、装置、车辆、可读存储介质及芯片 |
CN115442183B (zh) * | 2022-08-02 | 2024-01-02 | 天翼云科技有限公司 | 一种数据转发方法及装置 |
CN116248590B (zh) * | 2022-12-16 | 2024-05-10 | 中国联合网络通信集团有限公司 | 数据转发方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281493A (zh) * | 2014-09-28 | 2015-01-14 | 般固(北京)科技股份有限公司 | 一种提升应用交付通讯平台多进程程序性能的方法 |
CN107995129A (zh) * | 2017-11-30 | 2018-05-04 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
CN108292239A (zh) * | 2016-01-04 | 2018-07-17 | 英特尔公司 | 使用硬件队列设备的多核心通信加速 |
CN110022267A (zh) * | 2018-01-09 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 网络数据包处理方法及装置 |
CN110022330A (zh) * | 2018-01-09 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 用于网络数据包的处理方法、装置及电子设备 |
WO2019153702A1 (zh) * | 2018-02-07 | 2019-08-15 | 华为技术有限公司 | 一种中断处理方法、装置及服务器 |
-
2020
- 2020-03-24 CN CN202010214056.2A patent/CN111447155B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281493A (zh) * | 2014-09-28 | 2015-01-14 | 般固(北京)科技股份有限公司 | 一种提升应用交付通讯平台多进程程序性能的方法 |
CN108292239A (zh) * | 2016-01-04 | 2018-07-17 | 英特尔公司 | 使用硬件队列设备的多核心通信加速 |
CN107995129A (zh) * | 2017-11-30 | 2018-05-04 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
CN110022267A (zh) * | 2018-01-09 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 网络数据包处理方法及装置 |
CN110022330A (zh) * | 2018-01-09 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 用于网络数据包的处理方法、装置及电子设备 |
WO2019153702A1 (zh) * | 2018-02-07 | 2019-08-15 | 华为技术有限公司 | 一种中断处理方法、装置及服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN111447155A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111447155B (zh) | 数据传输方法、装置、设备及存储介质 | |
US8612611B2 (en) | Proxy apparatus and operation method thereof | |
CN106991008B (zh) | 一种资源锁管理方法、相关设备及系统 | |
US20160241482A1 (en) | Packet communication apparatus and packet communication method | |
CN106533973B (zh) | 分发业务消息的方法、设备和系统 | |
US9350606B2 (en) | System and method for assigning server to terminal and efficiently delivering messages to the terminal | |
US20200244623A1 (en) | Data transmission method, server and offload card | |
US11201824B2 (en) | Method, electronic device and computer program product of load balancing for resource usage management | |
CN112769905A (zh) | 一种基于numa架构的飞腾平台下高性能网卡性能优化方法 | |
CN108124504B (zh) | Tfo传输方法、代理服务器和系统 | |
CN112838983B (zh) | 数据传输方法、系统、设备、代理服务器及存储介质 | |
CN110493095B (zh) | 一种vpn业务的处理方法、装置、服务器和存储介质 | |
US20160261719A1 (en) | Information processing system, control program, and control method | |
KR102047819B1 (ko) | 단말 기기 위치결정 방법, 위치결정 서버, 액세스 포인트 및 시스템 | |
US11223567B2 (en) | Transmission control protocol session mobility | |
US7693166B2 (en) | Method and apparatus for transmitting data to network and method and apparatus for receiving data from network | |
CN106254576B (zh) | 一种报文转发方法及装置 | |
US20090259712A1 (en) | Distributed processing device, distributed processing method, and program | |
KR102526770B1 (ko) | 추가의 네트워크 주소 변환 테이블을 참조하여 빠른 패킷 포워딩을 제공하는 전자 장치 | |
CN109510864B (zh) | 一种缓存请求的转发方法、传输方法及相关装置 | |
US10735349B2 (en) | Non-transitory computer-readable storage medium, packet control method, and packet control device | |
CN108848175B (zh) | 一种创建tcp连接的方法及装置 | |
CN112073318A (zh) | 聚合链路报文发送和接收方法、装置、设备及存储介质 | |
CN113055426A (zh) | 业务访问方法、装置、设备和介质 | |
CN111726372B (zh) | 热迁移方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |