CN106034084A - 一种数据传输方法及装置 - Google Patents
一种数据传输方法及装置 Download PDFInfo
- Publication number
- CN106034084A CN106034084A CN201510115405.4A CN201510115405A CN106034084A CN 106034084 A CN106034084 A CN 106034084A CN 201510115405 A CN201510115405 A CN 201510115405A CN 106034084 A CN106034084 A CN 106034084A
- Authority
- CN
- China
- Prior art keywords
- cpu
- tcp
- toe
- data
- control equipment
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明的实施例提供一种数据传输方法及装置,涉及通信技术领域,解决了在多核应用场景中,多个CPU的资源利用率较低的问题。该方案包括:接收在第一TCP连接上传输的第一TCP报文;在本地存储的连接信息表中查找与第一TCP连接对应的第一CPU的标识和第一地址信息,连接信息表中包括第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系;将第一TCP报文中的数据存储在第一地址信息指示的存储位置中;根据第一CPU的标识向第一CPU发起第一中断请求,触发第一CPU根据第一地址信息从内存中获取第一TCP报文中的数据。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据传输方法及装置。
背景技术
TOE(Transmission Control Protocol Offload Engine,传输控制协议卸载引擎,简称TCP卸载引擎)用于将CPU上关于TCP/IP的部分处理任务转移到专门的单元上进行。以集成有TOE的网卡为例,参考图1,通过采用配有TOE的TOE网卡,包括TCP层和IP层在内的四层处理任务都可以从主机CPU转移到该TOE网卡,大大减轻了主机CPU的处理负担。
在包含多个CPU的多核系统中,例如Soc(system on chip,片上系统)或设有多个CPU的服务器中,如图2所示,通常TOE挂载在发送端或接收端的系统总线上,分别与存储器和多个CPU进行通信。在这种应用场景下,需要发送端与接收端之间建立TCP连接进行数据传输,此时,发送端与接收端内的TOE单元通过中断的方式触发CPU进行相关应用的数据处理,而这个中断通常是绑定在某一个CPU上进行的,当传输的数据非常多时,中断所绑定的CPU的资源占用率就非常高,导致整个多核应用场景的数据性能都受制于单个CPU。
为解决上述问题,以发送端请求建立一条TCP连接为例,在发送端的TOE与接收端经过三次握手建立TCP连接后,发送端的TOE上报中断给绑定的CPU1,以使得CPU1在该TCP连接上发送数据,由于执行各种数据传输的TCP连接的中断均绑定在CPU1上,当CPU1的占用率达到阈值后,CPU1通过预置的任务调度算法,将CPU1内的部分数据传输进程迁移到其他CPU上,完成CPU1的负载均衡,然而,CPU1使用任务调度算法仍然需要消耗额外的CPU1的资源,而且,在CPU1的占用率未达到阈值前,只能使用CPU1处理所有TCP连接的中断请求,无法充分利用多核系统中其他CPU的资源,降低了多核系统中CPU的资源利用率。
发明内容
本发明的实施例提供一种数据传输方法及装置,解决了在多核应用场景中,由于在各种数据传输的连接上传输数据均需与统一的CPU绑定进行中断操作,而导致CPU的资源利用率降低的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明的实施例提供一种数据传输方法,包括:
传输控制协议卸载引擎TOE接收在第一传输控制协议TCP连接上传输的第一TCP报文;
所述TOE在本地存储的连接信息表中查找与所述第一TCP连接对应的第一CPU的标识和第一地址信息,所述连接信息表中包括所述第一TCP连接和第一CPU的标识的对应关系,以及所述第一TCP连接和所述第一地址信息的对应关系,其中,所述第一CPU的标识用于指示处理所述第一TCP连接上传输的报文数据的CPU,所述第一地址信息为第一CPU预先确定的用于指示通过所述第一TCP连接传输的报文数据在内存中的存储位置;
所述TOE将所述第一TCP报文中的数据存储在所述第一地址信息指示的存储位置中;
所述TOE根据所述第一CPU的标识向所述第一CPU发起第一中断请求,触发所述第一CPU根据所述第一地址信息从所述内存中获取所述第一TCP报文中的数据。
结合第一方面,在第一方面的第一种可能的实现方式中,在所述TOE获取第一TCP连接上的第一TCP报文之前,还包括:
所述TOE向控制设备发送第二中断请求,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识;
所述TOE获取所述第一CPU的标识,并将所述第一CPU的标识与所述第一TCP的连接关系存储至所述连接信息表中,以建立所述第一TCP连接与所述第一CPU的对应关系。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在所述TOE向控制设备发送第二中断请求之后,还包括:
所述TOE将建立所述第一TCP连接所需的配置信息发送至所述控制设备,所述配置信息用于指示所述第一TCP连接的优先等级;
其中,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识,包括:
触发所述控制设备根据所述配置信息确定所述第一TCP连接的优先等级,以便于所述控制设备根据所述第一TCP连接的优先等级确定与所述第一TCP连接对应的所述第一CPU的标识。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述TOE向控制设备发送第二中断请求,触发所述控制设备确定与所述第一TCP连接所绑定的所述第一CPU的标识之后,还包括:
所述TOE接收所述第一CPU发送的所述第一地址信息;
所述TOE将所述第一地址信息和所述第一TCP连接的对应关系存储至所述连接信息表中,以建立所述第一地址信息与所述第一TCP连接的对应关系。
结合第一方面以及第一方面的第第一至三种可能的实现方式中的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,当所述TOE需要在所述第一TCP连接上发送第二TCP报文时,所述方法还包括:
所述TOE接收所述第一CPU发送的第二地址信息,所述第二地址信息用于指示待发送数据在所述内存中的存储位置;
所述TOE根据所述第二地址信息从所述内存中获取所述待发送数据;
所述TOE将所述待发送数据封装成所述第二TCP报文;
所述TOE在所述第一TCP连接上发送所述第二TCP报文。
第二方面,本发明的实施例提供一种数据传输方法,包括:
在控制设备接收到传输控制协议卸载引擎TOE发送的第二中断请求之后,所述控制设备则从N个CPU中确定一个CPU为第一CPU,所述第一CPU用于处理第一传输控制协议TCP连接上传输的数据,N≥1;
所述控制设备向所述第一CPU发送指示信息,所述指示信息用于指所述内存中获取所述第一TCP报文中的数据。
结合第三方面,在第三方面的第一种可能的实现方式中,
所述中断触发单元,还用于向控制设备发送第二中断请求,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识;
所述接收单元,还用于获取所述第一CPU的标识;
所述存储单元,还用于将所述第一CPU的标识与所述第一TCP的连接关系存储至所述连接信息表中,以建立所述第一TCP连接与所述第一CPU的对应关系。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述TOE还包括发送单元,其中,
所述发送单元,用于将建立所述第一TCP连接所需的配置信息发送至所述控制设备,所述配置信息用于指示所述第一TCP连接的优先等级;
所述中断触发单元,具体用于向控制设备发送第二中断请求,触发所述控制设备根据所述配置信息确定所述第一TCP连接的优先等级,以便于所述控制设备根据所述第一TCP连接的优先等级确定与所述第一TCP连接对应的所述第一CPU的标识。
结合第三方面的第一种可能的实现方式,在第三方面的第三种可能的实现方式中,
所述接收单元,还用于接收所述第一CPU发送的所述第一地址信息;
所述存储单元,还用于将所述接收单元中的所述第一地址信息和所述第一TCP连接的对应关系存储至所述连接信息表中,以建立所述第一地址信息与所述第一TCP连接的对应关系。
结合第三方面以及第三方面的第一至第三种可能的实现方式中的任一种可能的实现方式,在第三方面的第四种可能的实现方式中,所述TOE还包括封装单元,其中,
所述接收单元,还用于接收所述第一CPU发送的第二地址信息,所述第二地址信息用于指示待发送数据在所述内存中的存储位置;并根据所述第二地址信息从所述内存中获取所述待发送数据;
所述封装单元,用于将所述接收单元中的所述待发送数据封装成所述第二TCP报文;
所述发送单元,还用于在所述第一TCP连接上发送所述封装单元中的所述第二TCP报文。
第四方面,本发明的实施例提供一种控制设备,包括:
确定单元,用于在接收到传输控制协议卸载引擎TOE发送的第二中断请求之后,则从N个CPU中确定一个CPU为第一CPU,所述第一CPU用于处理第一传输控制协议TCP连接上传输的数据,N≥1;
指示单元,用于向所述确定单元中确定的所述第一CPU发送指示信息,所述指示信息用于指示所述第一CPU处理在所述第一TCP连接上传输的数据。
结合第四方面,在第四方面的第一种可能的实现方式中,所述CPU还包括获取单元,其中,
所述获取单元,用于获取所述N个CPU的负载值;
所述确定单元,具体用于根据所述获取单元中所述N个CPU的负载值,将负载值最小的CPU作为所述第一CPU。
结合第四方面,在第四方面的第二种可能的实现方式中,
所述获取单元,还用于接收所述TOE发送的配置信息,所述配置信息用于指示所述第一TCP连接的优先等级;并获取所述N个CPU的负载值;
所述确定单元,具体用于若所述获取单元中所述第一TCP连接的优先等级高于阈值,则将负载值最小的CPU作为所述第一CPU。
本发明的实施例提供一种数据传输方法及装置,TOE接收在第一TCP连接上传输的第一TCP报文后,由于在本地存储的连接信息表中包括有第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系,其中,第一CPU的标识用于指示处理第一TCP连接上传输的报文数据的CPU,第一地址信息为第一CPU预先确定的用于指示通过第一TCP连接传输的报文数据在内存中的存储位置,因此,TOE可以在连接信息表中查找与第一TCP连接对应的第一CPU的标识和第一地址信息,进而将第一TCP报文中的数据存储在第一地址信息指示的存储位置中,并向第一CPU发起第一中断请求,触发第一CPU根据第一地址信息从内存中获取第一TCP报文中的数据,这样,由于在建立示所述第一CPU处理在所述第一TCP连接上传输的数据。
结合第二方面,在第二方面的第一种可能的实现方式中,所述控制设备则从N个CPU中确定一个CPU为第一CPU,包括:
所述控制设备获取所述N个CPU的负载值;
所述控制设备根据所述N个CPU的负载值,将负载值最小的CPU作为所述第一CPU。
结合第二方面,在第二方面的第二种可能的实现方式中,在所述控制设备则从N个CPU中确定一个CPU为第一CPU之前,还包括:
所述控制设备接收所述TOE发送的配置信息,所述配置信息用于指示所述第一TCP连接的优先等级;
其中,所述控制设备则从N个CPU中确定一个CPU为第一CPU,包括:
所述控制设备根据所述配置信息确定所述第一TCP连接的优先等级;
所述控制设备获取所述N个CPU的负载值;
若第一TCP连接的优先等级高于阈值,所述控制设备则将负载值最小的CPU作为所述第一CPU。
第三方面,本发明的实施例提供一种TOE,包括:
接收单元,用于接收在第一传输控制协议TCP连接上传输的第一TCP报文;
查找单元,用于在本地存储的连接信息表中查找与所述接收单元中的第一TCP连接对应的第一CPU的标识和第一地址信息,所述连接信息表中包括所述第一TCP连接和第一CPU的标识的对应关系,以及所述第一TCP连接和所述第一地址信息的对应关系,其中,所述第一CPU的标识用于指示处理所述第一TCP连接上传输的报文数据的CPU,所述第一地址信息为第一CPU预先确定的用于指示通过所述第一TCP连接传输的报文数据在内存中的存储位置;
存储单元,用于将接收单元中所述第一TCP报文中的数据存储在所述查找单元中的第一地址信息指示的存储位置中;
中断触发单元,用于根据所述查找单元中第一CPU的标识向所述第一CPU发起第一中断请求,触发所述第一CPU根据所述第一地址信息从该第一TCP连接时已经将第一TCP连接上传输的报文数据的CPU与第一TCP连接建立了对应关系,因此,TOE在处理第一TCP连接上传输的报文数据时,可直接根据与第一TCP连接对应的第一CPU的标识向第一CPU发送中断请求,也就是说,不同的TCP连接上处理报文数据的中断请求可以与不同的CPU对应,避免了在多核应用场景中,TCP连接上处理报文数据的中断请求均需与统一的CPU进行中断操作,而导致该统一的CPU资源占用率过高的问题,同时提高了其他CPU的资源利用率,使多核系统中的多个CPU的负载趋于均衡。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为普通网卡与TOE网卡的结构示意图;
图2为SOC系统的架构示意图;
图3为本发明实施例提供的一种数据传输方法的流程示意图一;
图4为本发明实施例提供的一种数据传输方法的流程示意图二;
图5为本发明实施例提供的一种数据传输方法的流程示意图三;
图6为现有技术中三次握手的流程示意图;
图7为本发明实施例提供的一种TOE的硬件示意图;
图8为本发明实施例提供的一种控制设备的硬件示意图;
图9为本发明实施例提供的一种多核系统的结构示意图;
图10为本发明实施例提供的一种TOE的结构示意图一;
图11为本发明实施例提供的一种TOE的结构示意图二;
图12为本发明实施例提供的一种TOE的结构示意图三;
图13为本发明实施例提供的一种控制设备的结构示意图一;
图14为本发明实施例提供的一种控制设备的结构示意图二。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本发明。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
实施例1
本发明的实施例提供一种数据传输方法,如图3所示,包括:
101、TOE接收在第一TCP连接上传输的第一TCP报文。
102、TOE在本地存储的连接信息表中查找与第一TCP连接对应的第一CPU的标识和第一地址信息,该连接信息表中包括第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系。
103、TOE将第一TCP报文中的数据存储在第一地址信息指示的存储位置中。
104、TOE根据第一CPU的标识向第一CPU发起第一中断请求,触发第一CPU根据第一地址信息从内存中获取第一TCP报文中的数据。
在步骤101中,TOE可以在已经建立好的第一TCP连接上接收发送端发送的第一TCP报文,进而通过中断请求的形式与CPU进行交互,使得CPU获取到该第一TCP报文中的TCP报文数据。
具体的,本发明实施例提供的数据传输方法,可以应用在包括TOE和多个CPU的多核系统中,例如,在使用含有TOE的多核手机进行即时通讯时,手机与网络侧的服务器需要建立TCP连接后,才能在已建立好的TCP连接上传送数据,可以看出,一个含有TOE的多核手机可能会建立很多条TCP连接分别传输不同应用程序的数据,而在现有技术中,处理多条TCP连接上传输的报文数据的CPU是固定的,也就是说,TOE只能向已经固定的某个CPU发送中断请求,触发该唯一的CPU处理多条TCP连接上传输的报文数据,显而易见的,对于包含多个CPU的多核系统而言,这种CPU与TOE的交互方式可能会导致某一CPU的资源占用率过高,同时降低了其他CPU的利用率。
进一步地,在TOE接收在第一TCP连接上传输的第一TCP报文之前,TOE还可以接收建立该第一TCP连接所需的配置信息,并通过三次握手的机制与发送端建立该第一TCP连接,该第一TCP连接的建立方法将在实施例2中详细阐述,故此处不再赘述。
需要说明的是,在建立该第一TCP连接时,TOE会根据第一TCP连接的配置信息使用hash算法得到第一TCP连接的CID(ConnectionIDentifier,连接标识符),也就是说,每一条TCP连接都由唯一的一个CID所确定。因此,在TOE接收到第一TCP报文后,会对第一TCP报文的报头进行解析得到第一TCP报文所对应的第一CID,TOE查找自身是否存储有第一CID,如果没有存储第一CID,则说明第一CID对应的第一TCP连接还没有建立,进而TOE会通过三次握手的机制与发送端建立上述第一TCP连接,如果存储第一CID,TOE则执行步骤102。
在步骤102中,当TOE获得已建立的第一TCP连接上传输的第一TCP报文之后,TOE可以在本地存储的连接信息表中,查找与第一TCP连接对应的第一CPU的标识和第一地址信息。
其中,该连接信息表中包括第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系。该第一CPU的标识用于指示处理第一TCP连接上传输的报文数据的CPU,而该第一地址信息为第一CPU预先确定的用于指示通过第一TCP连接传输的报文数据在内存中的存储位置,其中,第一地址信息可以包括报文数据在内存中的起始指针位置以及数据大小等信息。
示例性的,如表1所示,该连接信息表中可以包括,第一CID和第一CPU的标识的对应关系,以及第一CID和第一地址信息的对应关系,由于每个CID可以确定唯一的一条TCP连接,因此,可以用一个CID表示一条TCP连接。
表1
第一CID | 第一CPU的标识 | 第一地址信息 |
第二CID | 第二CPU的标识 | 第二地址信息 |
…… | …… | …… |
具体的,在建立该第一TCP连接时,TOE可以将与第一CID对应的第一CPU的标识存储在该连接信息表中,以建立第一TCP连接和第一CPU的标识的对应关系;类似的,在建立该第一TCP连接时,TOE也可以将与第一CID对应的第一地址信息存储在该连接信息表中,以建立第一TCP连接和第一地址信息的对应关系。其中,建立该第一TCP连接的方法将在实施例2中详细阐述,故此处不在赘述。
在步骤103中,当TOE通过步骤102中从连接信息表获取到与第一TCP连接对应的第一地址信息后,TOE根据第一地址信息中指示的第一TCP连接传输的报文数据在内存中的存储位置,将第一TCP报文中的数据存储在该存储位置处。
例如,第一地址信息中指示第一TCP连接传输的报文数据在内存中的起始指针为0020,数据大小为1M的内存块中,那么,TOE便可以将第一TCP报文中的数据写入起始指针为0020,数据大小为1M的内存块中。
在步骤104中,在TOE将第一TCP报文中的数据存储在第一地址信息指示的存储位置之后,TOE便可以根据步骤102中获取到的第一CPU的标识,向所述第一CPU发起第一中断请求,由于第一地址信息为第一CPU预先确定的用于指示通过第一TCP连接传输的报文数据在内存中的存储位置,也就是说,第一CPU已经预先获知第一TCP连接传输的报文数据在内存中的存储位置,因此,在接收到第一终端请求后,便可以直接根据第一地址信息从内存中获取第一TCP报文中的数据。
当TOE需要在第一TCP连接上发送第二TCP报文时,与TOE在第一TCP连接上接收第一TCP报文类似的,TOE首先接收第一CPU发送的第二地址信息,该第二地址信息用于指示待发送数据在内存中的存储位置,这样,TOE根据该第二地址信息从内存中获取待发送数据;并将待发送数据封装成第二TCP报文;最终,TOE在该第一TCP连接上发送封装后的第二TCP报文。
可以看出,由于在建立该第一TCP连接时已经将第一CPU的标识与第一TCP连接建立了对应关系,因此,TOE在处理第一TCP连接上传输的报文数据时,可直接根据与第一TCP连接对应的第一CPU的标识向第一CPU发送中断请求,也就是说,不同的TCP连接上处理报文数据的中断请求可以与不同的CPU对应,避免了在多核应用场景中,TCP连接上处理报文数据的中断请求均需与统一的CPU进行中断操作,而导致该统一的CPU资源占用率过高的问题。
本发明的实施例提供一种数据传输方法,如图4所示,包括:
201、在接收到TOE发送的第二中断请求之后,控制设备则从N个CPU中确定一个CPU为第一CPU,第一CPU用于处理第一TCP连接上传输的数据,N≥1。
202、控制设备向第一CPU发送指示信息,该指示信息用于指示第一CPU处理在第一TCP连接上传输的数据。
在步骤201中,在建立该第一TCP连接时,可参见步骤101的描述,TOE会对接收到的第一TCP报文的报头进行解析,得到第一TCP报文所对应的第一CID,TOE查找自身是否存储有第一CID,如果没有存储第一CID,则说明第一CID对应的第一TCP连接还没有建立,此时,TOE向控制设备发送第二中断请求,控制设备接收到第二中断请求后,从N个CPU中确定一个CPU为第一CPU,该第一CPU用于处理第一TCP连接上传输的数据,N≥1。
TOE、控制设备以及N个CPU可以组成一个多核系统,控制设备接收到TOE发送的第二中断请求后,从N个CPU中确定处理第一TCP连接上传输的数据的CPU为第一CPU,这样,第一CPU或者控制设备便可以把第一CPU的标识发送至TOE中,以使得TOE将第一CPU的标识和第一CID存储至连接信息表中,以建立第一TCP连接和第一CPU的标识的对应关系。
具体的,控制设备在接收到第二中断请求后,可以从N个CPU中分别获取这N个CPU的负载值,进而根据所述N个CPU的负载值,将负载值最小的CPU作为该第一CPU,专门用于处理第一TCP连接上传输的数据。
又或者,控制设备在接收到第二中断请求后,还可以接收TOE发送的第一TCP连接的配置信息,该配置信息可以用于指示第一TCP连接的优先等级,具体的,如表2所示,该配置信息可以具体包括该第一TCP连接的四元组信息(即源IP地址、目的IP地址、源端口地址以及目的端口地址)、发送端的MAC地址、该第一TCP连接的起始序号、确认序号,本地窗口值以及远端窗口值等。
表2
控制设备可以根据第一TCP连接的配置信息确定第一TCP连接的优先等级,例如,根据第一TCP连接的四元组信息和MAC地址,确定第一TCP连接是基于telnet协议的实时通讯连接,由于该实时通讯连接对实时性要求很高,因此,可将该第一TCP连接的优先等级设置为1(即高优先级的TCP连接),这样,TOE便可以将负载值最小的CPU作为该第一CPU,用于处理第一TCP连接上传输的数据。相应的,如果第一TCP连接的优先等级为2(即低优先级的TCP连接),那么,TOE便可以将占用率较高的CPU作为第一CPU,例如,在负载值在50%至70%的多个CPU中随机选择一个CPU作为该第一CPU。
当然,控制设备从N个CPU中确定一个CPU为第一CPU的方法可以有根多种,本发明对此不作任何限定,例如,控制设备可以设置每个CPU处理100条TCP连接上传输的报文数据,那么,当控制设备在接收到第二中断请求后,可随机选择处理不足100条TCP连接上传输的报文数据的CPU作为该第一CPU。
本发明的实施例提供一种数据传输方法,TOE接收在第一TCP连接上传输的第一TCP报文后,由于在本地存储的连接信息表中包括有第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系,其中,第一CPU的标识用于指示处理第一TCP连接上传输的报文数据的CPU,第一地址信息为第一CPU预先确定的用于指示通过第一TCP连接传输的报文数据在内存中的存储位置,因此,TOE可以在连接信息表中查找与第一TCP连接对应的第一CPU的标识和第一地址信息,进而将第一TCP报文中的数据存储在第一地址信息指示的存储位置中,并向第一CPU发起第一中断请求,触发第一CPU根据第一地址信息从内存中获取第一TCP报文中的数据,这样,由于在建立该第一TCP连接时已经将第一TCP连接上传输的报文数据的CPU与第一TCP连接建立了对应关系,因此,TOE在处理第一TCP连接上传输的报文数据时,可直接根据与第一TCP连接对应的第一CPU的标识向第一CPU发送中断请求,也就是说,不同的TCP连接上处理报文数据的中断请求可以与不同的CPU对应,避免了在多核应用场景中,TCP连接上处理报文数据的中断请求均需与统一的CPU进行中断操作,而导致该统一的CPU资源占用率过高的问题,同时提高了其他CPU的资源利用率,使多核系统中的多个CPU的负载趋于均衡。
实施例2
本发明的实施例提供一种数据传输方法,如图5所示,包括:
301、TOE从发送端获取建立第一TCP连接的配置信息。
302、若根据配置信息得到的第一CID没有存储在TOE中,TOE则向控制设备发送第二中断请求。
303、控制设备接收到第二中断请求后,从N个CPU中确定一个CPU作为第一CPU,该第一CPU用于处理第一TCP连接上传输的数据。
304、控制设备向第一CPU发送指示信息,该指示信息用于指示第一CPU处理在第一TCP连接上传输的数据。
305、第一CPU根据指示信息确定第一地址信息,该第一地址信息用于指示第一TCP连接传输的报文数据在内存中的存储位置。
306、第一CPU将第一地址信息和第一CPU的标识发送至TOE。
307、TOE将第一CID与第一CPU的标识的对应关系,以及第一CID与第一地址信息的对应关系存储至连接信息表中,以建立第一CPU与第一TCP连接的对应关系,以及第一地址信息与第一TCP连接的对应关系。
308、TOE生成SYN报文和ACK报文,并发送至发送端,若接收到发送端发送的ACK报文,TOE则确认第一TCP连接建立完成。
309、TOE在已建立的第一TCP连接上接收传输的第一TCP报文。
310、TOE在本地存储的连接信息表中查找与第一TCP连接对应的第一CPU的标识和第一地址信息,该连接信息表中包括第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系。
311、TOE将第一TCP报文中的数据存储在第一地址信息指示的存储位置中。
312、TOE根据第一CPU的标识向第一CPU发起第一中断请求,触发第一CPU根据第一地址信息从内存中获取第一TCP报文中的数据。
在步骤301中,由于TOE需要与发送端建立第一TCP连接后,才能在第一TCP连接上传输数据,因此,发送端会根据三次握手的机制,向TOE(本发明实施例中涉及的TOE均以接收端的TOE为例)发送SYN(Synchronize Sequence Numbers,同步序列编号)报文,TOE接收到SYN报文后对SYN报文进行报文解析,获取SYN报文中携带的建立第一TCP连接的配置信息,该建立第一TCP连接的配置信息的具体描述可参见步骤201。
其中,所谓的三次握手的机制,是指为了提供可靠的数据传送,接收端和发送端对每次数据的传输进行协商,使数据的发送和接收同步。如图6所示,第一次握手是指,在建立TCP连接时,发送端发送SYN报文到接收端,该数据包中包含本次TCP连接的配置信息,以使得接收端根据配置信息进行初始化配置。第二次握手是指,接收端进行初始化配置后发送响应信息(即SYN报文+ACK(Acknowledgement,确认字符)报文)指示发送端该TCP连接的配置完成。第三次握手是指,发送端收到接收端的响应信息后发送确认信息,指示接收端该TCP连接已经建立,准备传输数据。
基于上述的三次握手的机制,TOE在获取到发送端发送SYN报文(即第一次握手)后,解析得到第一TCP连接的配置信息,进而根据第一TCP连接的配置信息使用hash算法得到第一TCP连接的第一CID,此时,TOE查找自身是否存储有第一CID,如果没有存储第一CID,则说明第一CID对应的第一TCP连接还没有建立,那么,TOE则执行步骤302至308以建立该第一TVP连接;如果存储第一CID,则说明第一CID对应的第一TCP连接已经建立完成,那么,TOE则执行步骤309至312。
在步骤302中,若根据配置信息得到的第一CID没有存储在TOE中,TOE则向控制设备发送第二中断请求,触发控制设备从N个CPU中确定处理第一TCP连接上传输的数据的CPU为第一CPU。
在步骤303中,控制设备接收到TOE发送的第二中断请求后,从N个CPU中确定处理第一TCP连接上传输的数据的CPU为第一CPU,这样,第一CPU或者控制设备便可以把第一CPU的标识发送至TOE中,以使得TOE将第一CPU的标识和第一CID存储至连接信息表中,以建立第一TCP连接和第一CPU的标识的对应关系。
其中,控制设备从N个CPU中确定处理第一TCP连接上传输的数据的CPU为第一CPU的方法可参见实施例1中步骤201中的相关描述,此处不再详述。
在步骤304中,控制设备确定了第一CPU之后,向第一CPU发送指示信息,该指示信息用于指示第一CPU处理在第一TCP连接上传输的数据。也就是说,控制设备确定了第一CPU之后,将处理在第一TCP连接上传输的数据的全部任务下发至第一CPU。
在步骤305中,第一CPU根据步骤304中控制设备发送的指示信息,确定第一地址信息,该第一地址信息用于指示第一TCP连接传输的报文数据在内存中的存储位置。
具体的,第一CPU获取到指示信息后,主动向内存发送地址申请,该地址申请用于在内存中,请求存放第一TCP连接传输的报文数据在内存中的存储位置,内存根据地址申请划分一定大小的内存块用于存放第一TCP连接传输的报文数据,并生成第一地址信息发送至第一CPU。
在步骤306中,第一CPU将第一CPU的标识和步骤305中确定的第一地址信息发送至TOE。
在步骤307中,TOE接收到第一CPU的标识和第一地址信息后,将第一CID与第一CPU的标识的对应关系,以及第一CID与第一地址信息的对应关系存储至连接信息表中,以建立第一CPU与第一TCP连接的对应关系,以及第一地址信息与第一TCP连接的对应关系。
通过步骤301至307,TOE完成了建立第一TCP连接时,对第一TCP连接对应的第一CPU和第一地址信息的配置过程,因此,在步骤308中,TOE生成SYN报文和ACK报文,并发送至发送端以完成第二次握手过程,进一步地,若TOE接收到发送端发送的ACK报文(即第三次握手过程),TOE则确认第一TCP连接建立完成,可以在第一TCP连接上以TCP报文的形式传输数据。
进一步地,TOE可以执行步骤309至312在第一TCP连接上接收第一TCP报文,其中,步骤309至312的具体方法可参见步骤101至104,此处不再详述。
可以看出,在本发明中,在建立第一TCP连接时,通过TOE与控制设备的交互,可以指定任一个CPU作为第一CPU处理在第一TCP连接上传输的数据,这样,TOE和控制设备可以将处理各个TCP连接上传输的数据的任务分配到各个CPU上,使多核系统中的多个CPU的负载趋于均衡。
本发明的实施例提供一种数据传输方法,TOE接收在第一TCP连接上传输的第一TCP报文后,由于在本地存储的连接信息表中包括有第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系,其中,第一CPU的标识用于指示处理第一TCP连接上传输的报文数据的CPU,第一地址信息为第一CPU预先确定的用于指示通过第一TCP连接传输的报文数据在内存中的存储位置,因此,TOE可以在连接信息表中查找与第一TCP连接对应的第一CPU的标识和第一地址信息,进而将第一TCP报文中的数据存储在第一地址信息指示的存储位置中,并向第一CPU发起第一中断请求,触发第一CPU根据第一地址信息从内存中获取第一TCP报文中的数据,这样,由于在建立该第一TCP连接时已经将第一TCP连接上传输的报文数据的CPU与第一TCP连接建立了对应关系,因此,TOE在处理第一TCP连接上传输的报文数据时,可直接根据与第一TCP连接对应的第一CPU的标识向第一CPU发送中断请求,也就是说,不同的TCP连接上处理报文数据的中断请求可以与不同的CPU对应,避免了在多核应用场景中,TCP连接上处理报文数据的中断请求均需与统一的CPU进行中断操作,而导致该统一的CPU资源占用率过高的问题,同时提高了其他CPU的资源利用率,使多核系统中的多个CPU的负载趋于均衡。
实施例3
附图7示出的是本发明提供的TOE01的硬件示意图。
其中,所述TOE01包括控制模块01、与控制模块01均相连的TOE接收端100和TOE发送端200,其中,TOE接收端100具体包括报头解析模块02、第一DMA控制器03、第一处理引擎04以及第一缓存05,TOE发送端200具体包括封装模块06、第二DMA控制器07、第二处理引擎08以及第二缓存09。
控制模块01,是所述TOE01的控制中心,控制模块01通过对TOE接收端100或TOE发送端200接收到的指令和数据进行处理,执行所述控制模块01的各项功能。其中,控制模块01中存储有第一TCP连接和第一CPU的标识的对应关系,以及所述第一TCP连接和所述第一地址信息的对应关系,其中,所述第一CPU的标识用于指示处理所述第一TCP连接上传输的报文数据的CPU,所述第一地址信息为第一CPU预先确定的用于指示通过所述第一TCP连接传输的报文数据在内存中的存储位置。
报头解析模块02,可用于对在第一TCP连接上接收到的TCP报文进行解析,获得所述第一TCP连接传输的报文数据。
第一DMA控制器03和第二DMA控制器07,可以在没有用CPU参与的情况下,使得TOE01和内存之间进行双向数据传输。
第一处理引擎04和第二处理引擎08,可以对控制模块01进行驱动,以使得控制模块01执行TOE01的各项功能。
封装模块06,可用于对在第一TCP连接上需要发送的TCP报文数据进行封装,获得封装后的TCP报文。
第一缓存05和第二缓存09,用于分别存放TOE接收端100和TOE发送端200接收到或待发送的数据和指令。
具体的,在本发明的实施例中,报头解析模块02接收到在第一TCP连接上传输的第一TCP报文后进行报文解析,获得第一TCP连接的CID并发送至第一处理引擎04;第一处理引擎04查找与该CID对应的TCP连接为第一TCP连接后上报至控制模块01,控制模块01在存储的连接信息表中查找与所述第一TCP连接对应的第一CPU的标识和第一地址信息;进而调用第一DMA控制器03将所述第一TCP报文中的数据存储在所述第一地址信息指示的存储位置中;同时,控制模块01据所述第一CPU的标识,驱动第一处理引擎04根向所述第一CPU发起第一中断请求,触发所述第一CPU根据所述第一地址信息从所述内存中获取所述第一TCP报文中的数据。
进一步地,在报头解析模块02接收到在第一TCP连接上传输的第一TCP报文之前,还可以包括步骤:控制模块01驱动第一处理引擎04向控制设备发送第二中断请求,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识;进而,第一处理引擎04获取到所述第一CPU的标识后,将所述第一CPU的标识与所述第一TCP的连接关系存储至控制模块01中的连接信息表中,以建立所述第一TCP连接与所述第一CPU的对应关系。
进一步地,在控制模块01驱动第一处理引擎04向控制设备发送第二中断请求之后,还可以包括步骤:控制模块01驱动第一处理引擎04将建立所述第一TCP连接所需的配置信息发送至所述控制设备,所述配置信息用于指示所述第一TCP连接的优先等级;
此时,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识,可以具体包括步骤:触发所述控制设备根据所述配置信息确定所述第一TCP连接的优先等级,以便于所述控制设备根据所述第一TCP连接的优先等级确定与所述第一TCP连接对应的所述第一CPU的标识。
进一步地,在控制模块01驱动第一处理引擎04向控制设备发送第二中断请求,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识之后,还可以包括步骤:第一DMA控制器接收所述第一CPU发送的所述第一地址信息并发送至第一处理引擎04;第一处理引擎04将所述第一地址信息和所述第一TCP连接的对应关系存储至控制模块01中的连接信息表中,以建立所述第一地址信息与所述第一TCP连接的对应关系。
进一步地,当所述TOE01需要在所述第一TCP连接上发送第二TCP报文时,所述方法还可以包括步骤:第二DMA控制器07接收所述第一CPU发送的第二地址信息并发送至控制模块01,所述第二地址信息用于指示待发送数据在所述内存中的存储位置;控制模块01根据所述第二地址信息驱动第二处理引擎08从所述内存中获取所述待发送数据,并发送至封装模块06;封装模块06将所述待发送数据封装成所述第二TCP报文,以使得第二处理引擎08在所述第一TCP连接上发送所述封装模块06生成的第二TCP报文。
附图8示出的是本发明的提供的一种控制设备02的硬件示意图。
该控制设备02可应用于包含多个CPU的多核应用场景,例如,SOC系统或者包含TOE01网卡的多核服务器中。
如图8,所述控制设备02包括CPU21、通信接口22、控制设备存储器23以及总线24。
其中,CPU21、通讯接口22、控制设备存储器234通过总线24相连接并进行通信。
CPU21,是所述控制设备02的控制中心,CPU21通过对通讯接口22接收到的中断请求进行中断处理,并调用控制设备存储器23中的软件或程序,执行所述控制设备02的各项功能。
通信接口22,可以由光通讯接口,电通讯接口,无线通讯接口或其任意组合实现。例如,光通讯接口可以是小封装可插拔(英文:smallform-factor pluggable transceiver,缩写:SFP)通讯接口(英文:transceiver),增强小封装可插拔(英文:enhanced small form-factorpluggable,缩写:SFP+)通讯接口或10吉比特小封装可插拔(英文:10Gigabit small form-factor pluggable,缩写:XFP)通讯接口。电通讯接口可以是以太网(英文:Ethernet)网络接口控制器(英文:networkinterface controller,缩写:NIC)。无线通讯接口可以是无线网络接口控制器(英文:wireless network interface controller,缩写:WNIC)。接收端中可以有多个通信接口22。
控制设备存储器23,可用于存储软件程序或数据,CPU21通过运行存储在控制设备存储器23的软件程序或数据,从而执行所述控制设备02的各种功能应用以及数据处理。
具体的,在本发明的实施例中,若通讯接口22接收到TOE01发送的第二中断请求,通讯接口22将所述第二中断请求发送至CPU21,CPU21接收到第二中断请求后,从N个CPU中确定一个CPU为第一CPU,所述第一CPU用于处理第一TCP连接上传输的数据,N≥1;进而,CPU21调用通讯接口22向第一CPU发送指示信息,所述指示信息用于指示所述第一CPU处理在所述第一TCP连接上传输的数据。
进一步地,CPU21从N个CPU中确定一个CPU为第一CPU,可以具体包括以下步骤:CPU21调用通讯接口22获取所述N个CPU的负载值;CPU21根据所述N个CPU的负载值,将负载值最小的CPU作为所述第一CPU。
进一步地,在CPU21从N个CPU中确定一个CPU为第一CPU之前,可以包括以下步骤:通讯接口22接收所述TOE01发送的配置信息并发送至CPU21,所述配置信息用于指示所述第一TCP连接的优先等级。
此时,CPU21从N个CPU中确定一个CPU为第一CPU,可以具体包括以下步骤:CPU21根据所述配置信息确定所述第一TCP连接的优先等级;并调用通讯接口22获取所述N个CPU的负载值;若第一TCP连接的优先等级高于阈值,CPU21则将负载值最小的CPU作为所述第一CPU。
进一步地的,如图9所示,上述TOE01和控制设备02可以集成在一个多核系统300中,该多核系统300具体包括:TOE01、控制设备02、内存03、N个CPU(该N个CPU中包括第一CPU)以及总线04,其中,TOE01、控制设备02、内存03与N个CPU的具体交互方法可参见上述实施例1至3中的详细描述,故此处不再赘述。
需要说明的是,在图9中,控制设备02中的控制设备存储器23可以不集成在控制设备内部02,其可以作为内存03存在,即控制设备存储器23和内存03为同一个存储介质,此时,控制设备02调用的应用程序存储于内存03中。
本发明的实施例提供一种数据传输装置,TOE接收在第一TCP连接上传输的第一TCP报文后,由于在本地存储的连接信息表中包括有第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系,其中,第一CPU的标识用于指示处理第一TCP连接上传输的报文数据的CPU,第一地址信息为第一CPU预先确定的用于指示通过第一TCP连接传输的报文数据在内存中的存储位置,因此,TOE可以在连接信息表中查找与第一TCP连接对应的第一CPU的标识和第一地址信息,进而将第一TCP报文中的数据存储在第一地址信息指示的存储位置中,并向第一CPU发起第一中断请求,触发第一CPU根据第一地址信息从内存中获取第一TCP报文中的数据,这样,由于在建立该第一TCP连接时已经将第一TCP连接上传输的报文数据的CPU与第一TCP连接建立了对应关系,因此,TOE在处理第一TCP连接上传输的报文数据时,可直接根据与第一TCP连接对应的第一CPU的标识向第一CPU发送中断请求,也就是说,不同的TCP连接上处理报文数据的中断请求可以与不同的CPU对应,避免了在多核应用场景中,TCP连接上处理报文数据的中断请求均需与统一的CPU进行中断操作,而导致该统一的CPU资源占用率过高的问题,同时提高了其他CPU的资源利用率,使多核系统中的多个CPU的负载趋于均衡。
实施例4
本发明的实施例提供一种TOE,如图10所示,包括:
接收单元31,用于接收在第一TCP连接上传输的第一TCP报文;
查找单元32,用于在本地存储的连接信息表中查找与所述接收单元31中的第一TCP连接对应的第一CPU的标识和第一地址信息,所述连接信息表中包括所述第一TCP连接和第一CPU的标识的对应关系,以及所述第一TCP连接和所述第一地址信息的对应关系,其中,所述第一CPU的标识用于指示处理所述第一TCP连接上传输的报文数据的CPU,所述第一地址信息为第一CPU预先确定的用于指示通过所述第一TCP连接传输的报文数据在内存中的存储位置;
存储单元33,用于将接收单元31中所述第一TCP报文中的数据存储在所述查找单元32中的第一地址信息指示的存储位置中;
中断触发单元34,用于根据所述查找单元32中第一CPU的标识向所述第一CPU发起第一中断请求,触发所述第一CPU根据所述第一地址信息从所述内存中获取所述第一TCP报文中的数据。
进一步地,所述中断触发单元34,还用于向控制设备发送第二中断请求,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识;
所述接收单元31,还用于获取所述第一CPU的标识;
所述存储单元33,还用于将所述接收单元31中第一CPU的标识与所述第一TCP的连接关系存储至所述连接信息表中,以建立所述第一TCP连接与所述第一CPU的对应关系。
进一步地,如图11所示,所述TOE还包括发送单元35,其中,
所述发送单元35,用于将建立所述第一TCP连接所需的配置信息发送至所述控制设备,所述配置信息用于指示所述第一TCP连接的优先等级;
所述中断触发单元34,具体用于向控制设备发送第二中断请求,触发所述控制设备根据所述发送单元35中的配置信息确定所述第一TCP连接的优先等级,以便于所述控制设备根据所述第一TCP连接的优先等级确定与所述第一TCP连接对应的所述第一CPU的标识。
进一步地,所述接收单元31,还用于接收所述第一CPU发送的所述第一地址信息;
所述存储单元33,还用于将所述接收单元31中的所述第一地址信息和所述第一TCP连接的对应关系存储至所述连接信息表中,以建立所述第一地址信息与所述第一TCP连接的对应关系。
进一步地,如图12所示,所述TOE还包括封装单元36,其中,
所述接收单元31,还用于接收所述第一CPU发送的第二地址信息,所述第二地址信息用于指示待发送数据在所述内存中的存储位置;并根据所述第二地址信息从所述内存中获取所述待发送数据;
所述封装单元36,用于将所述接收单元31中的所述待发送数据封装成所述第二TCP报文;
所述发送单元35,还用于在所述第一TCP连接上发送所述封装单元36中的所述第二TCP报文。
本发明的实施例提供一种控制设备,如图13所示,包括:
确定单元41,用于在接收到传输控制协议卸载引擎TOE发送的第二中断请求之后,则从N个CPU中确定一个CPU为第一CPU,所述第一CPU用于处理第一传输控制协议TCP连接上传输的数据,N≥1;
指示单元42,用于向所述确定单元41中确定的所述第一CPU发送指示信息,所述指示信息用于指示所述第一CPU处理在所述第一TCP连接上传输的数据。
进一步地,如图14所示,所述CPU还包括获取单元43,其中,
所述获取单元43,用于获取所述N个CPU的负载值;
所述确定单元41,具体用于根据所述获取单元43中所述N个CPU的负载值,将负载值最小的CPU作为所述第一CPU。
进一步地,所述获取单元43,还用于接收所述TOE发送的配置信息,所述配置信息用于指示所述第一TCP连接的优先等级;并获取所述N个CPU的负载值;
所述确定单元41,具体用于若所述获取单元43中所述第一TCP连接的优先等级高于阈值,则将负载值最小的CPU作为所述第一CPU。
本发明的实施例提供一种数据传输装置,TOE接收在第一TCP连接上传输的第一TCP报文后,由于在本地存储的连接信息表中包括有第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系,其中,第一CPU的标识用于指示处理第一TCP连接上传输的报文数据的CPU,第一地址信息为第一CPU预先确定的用于指示通过第一TCP连接传输的报文数据在内存中的存储位置,因此,TOE可以在连接信息表中查找与第一TCP连接对应的第一CPU的标识和第一地址信息,进而将第一TCP报文中的数据存储在第一地址信息指示的存储位置中,并向第一CPU发起第一中断请求,触发第一CPU根据第一地址信息从内存中获取第一TCP报文中的数据,这样,由于在建立该第一TCP连接时已经将第一TCP连接上传输的报文数据的CPU与第一TCP连接建立了对应关系,因此,TOE在处理第一TCP连接上传输的报文数据时,可直接根据与第一TCP连接对应的第一CPU的标识向第一CPU发送中断请求,也就是说,不同的TCP连接上处理报文数据的中断请求可以与不同的CPU对应,避免了在多核应用场景中,TCP连接上处理报文数据的中断请求均需与统一的CPU进行中断操作,而导致该统一的CPU资源占用率过高的问题,同时提高了其他CPU的资源利用率,使多核系统中的多个CPU的负载趋于均衡。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种数据传输方法,其特征在于,包括:
传输控制协议卸载引擎TOE接收在第一传输控制协议TCP连接上传输的第一TCP报文;
所述TOE在本地存储的连接信息表中查找与所述第一TCP连接对应的第一CPU的标识和第一地址信息,所述连接信息表中包括所述第一TCP连接和第一CPU的标识的对应关系,以及所述第一TCP连接和所述第一地址信息的对应关系,其中,所述第一CPU的标识用于指示处理所述第一TCP连接上传输的报文数据的CPU,所述第一地址信息为第一CPU预先确定的用于指示通过所述第一TCP连接传输的报文数据在内存中的存储位置;
所述TOE将所述第一TCP报文中的数据存储在所述第一地址信息指示的存储位置中;
所述TOE根据所述第一CPU的标识向所述第一CPU发起第一中断请求,触发所述第一CPU根据所述第一地址信息从所述内存中获取所述第一TCP报文中的数据。
2.根据权利要求1所述的方法,其特征在于,在所述TOE获取第一TCP连接上的第一TCP报文之前,还包括:
所述TOE向控制设备发送第二中断请求,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识;
所述TOE获取所述第一CPU的标识,并将所述第一CPU的标识与所述第一TCP的连接关系存储至所述连接信息表中,以建立所述第一TCP连接与所述第一CPU的对应关系。
3.根据权利要求2所述的方法,其特征在于,在所述TOE向控制设备发送第二中断请求之后,还包括:
所述TOE将建立所述第一TCP连接所需的配置信息发送至所述控制设备,所述配置信息用于指示所述第一TCP连接的优先等级;
其中,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识,包括:
触发所述控制设备根据所述配置信息确定所述第一TCP连接的优先等级,以便于所述控制设备根据所述第一TCP连接的优先等级确定与所述第一TCP连接对应的所述第一CPU的标识。
4.根据权利要求2所述的方法,其特征在于,在所述TOE向控制设备发送第二中断请求,触发所述控制设备确定与所述第一TCP连接所绑定的所述第一CPU的标识之后,还包括:
所述TOE接收所述第一CPU发送的所述第一地址信息;
所述TOE将所述第一地址信息和所述第一TCP连接的对应关系存储至所述连接信息表中,以建立所述第一地址信息与所述第一TCP连接的对应关系。
5.根据权利要求1至4中任一种所述的方法,其特征在于,当所述TOE需要在所述第一TCP连接上发送第二TCP报文时,所述方法还包括:
所述TOE接收所述第一CPU发送的第二地址信息,所述第二地址信息用于指示待发送数据在所述内存中的存储位置;
所述TOE根据所述第二地址信息从所述内存中获取所述待发送数据;
所述TOE将所述待发送数据封装成所述第二TCP报文;
所述TOE在所述第一TCP连接上发送所述第二TCP报文。
6.一种数据传输方法,其特征在于,包括:
在控制设备接收到传输控制协议卸载引擎TOE发送的第二中断请求之后,所述控制设备则从N个CPU中确定一个CPU为第一CPU,所述第一CPU用于处理第一传输控制协议TCP连接上传输的数据,N≥1;
所述控制设备向所述第一CPU发送指示信息,所述指示信息用于指示所述第一CPU处理在所述第一TCP连接上传输的数据。
7.根据权利要求6所述的方法,其特征在于,所述控制设备则从N个CPU中确定一个CPU为第一CPU,包括:
所述控制设备获取所述N个CPU的负载值;
所述控制设备根据所述N个CPU的负载值,将负载值最小的CPU作为所述第一CPU。
8.根据权利要求6所述的方法,其特征在于,在所述控制设备则从N个CPU中确定一个CPU为第一CPU之前,还包括:
所述控制设备接收所述TOE发送的配置信息,所述配置信息用于指示所述第一TCP连接的优先等级;
其中,所述控制设备则从N个CPU中确定一个CPU为第一CPU,包括:
所述控制设备根据所述配置信息确定所述第一TCP连接的优先等级;
所述控制设备获取所述N个CPU的负载值;
若第一TCP连接的优先等级高于阈值,所述控制设备则将负载值最小的CPU作为所述第一CPU。
9.一种传输控制协议卸载引擎TOE,其特征在于,包括:
接收单元,用于接收在第一传输控制协议TCP连接上传输的第一TCP报文;
查找单元,用于在本地存储的连接信息表中查找与所述接收单元中的第一TCP连接对应的第一CPU的标识和第一地址信息,所述连接信息表中包括所述第一TCP连接和第一CPU的标识的对应关系,以及所述第一TCP连接和所述第一地址信息的对应关系,其中,所述第一CPU的标识用于指示处理所述第一TCP连接上传输的报文数据的CPU,所述第一地址信息为第一CPU预先确定的用于指示通过所述第一TCP连接传输的报文数据在内存中的存储位置;
存储单元,用于将接收单元中所述第一TCP报文中的数据存储在所述查找单元中的第一地址信息指示的存储位置中;
中断触发单元,用于根据所述查找单元中第一CPU的标识向所述第一CPU发起第一中断请求,触发所述第一CPU根据所述第一地址信息从所述内存中获取所述第一TCP报文中的数据。
10.根据权利要求9所述的TOE,其特征在于,
所述中断触发单元,还用于向控制设备发送第二中断请求,触发所述控制设备确定与所述第一TCP连接对应的所述第一CPU的标识;
所述接收单元,还用于获取所述第一CPU的标识;
所述存储单元,还用于将所述接收单元中第一CPU的标识与所述第一TCP的连接关系存储至所述连接信息表中,以建立所述第一TCP连接与所述第一CPU的对应关系。
11.根据权利要求10所述的TOE,其特征在于,所述TOE还包括发送单元,其中,
所述发送单元,用于将建立所述第一TCP连接所需的配置信息发送至所述控制设备,所述配置信息用于指示所述第一TCP连接的优先等级;
所述中断触发单元,具体用于向控制设备发送第二中断请求,触发所述控制设备根据所述配置信息确定所述第一TCP连接的优先等级,以便于所述控制设备根据所述第一TCP连接的优先等级确定与所述第一TCP连接对应的所述第一CPU的标识。
12.根据权利要求10所述的TOE,其特征在于,
所述接收单元,还用于接收所述第一CPU发送的所述第一地址信息;
所述存储单元,还用于将所述接收单元中的所述第一地址信息和所述第一TCP连接的对应关系存储至所述连接信息表中,以建立所述第一地址信息与所述第一TCP连接的对应关系。
13.根据权利要求9至12中任一项所述的TOE,其特征在于,所述TOE还包括封装单元,其中,
所述接收单元,还用于接收所述第一CPU发送的第二地址信息,所述第二地址信息用于指示待发送数据在所述内存中的存储位置;并根据所述第二地址信息从所述内存中获取所述待发送数据;
所述封装单元,用于将所述接收单元中的所述待发送数据封装成所述第二TCP报文;
所述发送单元,还用于在所述第一TCP连接上发送所述封装单元中的所述第二TCP报文。
14.一种控制设备,其特征在于,包括:
确定单元,用于在接收到传输控制协议卸载引擎TOE发送的第二中断请求之后,则从N个CPU中确定一个CPU为第一CPU,所述第一CPU用于处理第一传输控制协议TCP连接上传输的数据,N≥1;
指示单元,用于向所述确定单元中确定的所述第一CPU发送指示信息,所述指示信息用于指示所述第一CPU处理在所述第一TCP连接上传输的数据。
15.根据权利要求14所述的控制设备,其特征在于,所述CPU还包括获取单元,其中,
所述获取单元,用于获取所述N个CPU的负载值;
所述确定单元,具体用于根据所述获取单元中所述N个CPU的负载值,将负载值最小的CPU作为所述第一CPU。
16.根据权利要求14所述的控制设备,其特征在于,
所述获取单元,还用于接收所述TOE发送的配置信息,所述配置信息用于指示所述第一TCP连接的优先等级;并获取所述N个CPU的负载值;
所述确定单元,具体用于若所述获取单元中所述第一TCP连接的优先等级高于阈值,则将负载值最小的CPU作为所述第一CPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510115405.4A CN106034084B (zh) | 2015-03-16 | 2015-03-16 | 一种数据传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510115405.4A CN106034084B (zh) | 2015-03-16 | 2015-03-16 | 一种数据传输方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106034084A true CN106034084A (zh) | 2016-10-19 |
CN106034084B CN106034084B (zh) | 2020-04-28 |
Family
ID=57150075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510115405.4A Active CN106034084B (zh) | 2015-03-16 | 2015-03-16 | 一种数据传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106034084B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789708A (zh) * | 2016-12-06 | 2017-05-31 | 中国电子科技集团公司第三十二研究所 | Tcp/ip卸载引擎中的多通道处理方法 |
CN107147734A (zh) * | 2017-06-05 | 2017-09-08 | 国家计算机网络与信息安全管理中心 | 一种基于两级转发的网络流量线程级动态负载均衡方法及系统 |
CN107704421A (zh) * | 2017-09-12 | 2018-02-16 | 新华三信息安全技术有限公司 | 一种多核处理器及报文处理方法 |
CN107888710A (zh) * | 2017-12-26 | 2018-04-06 | 新华三信息安全技术有限公司 | 一种报文转发方法及装置 |
CN110166373A (zh) * | 2019-05-21 | 2019-08-23 | 优刻得科技股份有限公司 | 源物理机向目的物理机发数据的方法、装置、介质和系统 |
WO2020063298A1 (zh) * | 2018-09-27 | 2020-04-02 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
CN111277600A (zh) * | 2020-01-21 | 2020-06-12 | 中科驭数(北京)科技有限公司 | 数据传输方法及装置 |
CN111277660A (zh) * | 2020-01-22 | 2020-06-12 | 中国银联股份有限公司 | 一种用于组成dmz区域的系统及方法 |
CN112019645A (zh) * | 2020-07-06 | 2020-12-01 | 中科驭数(北京)科技有限公司 | 基于toe的网络地址管理方法及装置 |
CN112154633A (zh) * | 2018-05-16 | 2020-12-29 | 华为技术有限公司 | 用于tcp通信的接收装置和传输装置 |
CN113238977A (zh) * | 2021-07-12 | 2021-08-10 | 深之蓝(天津)水下智能科技有限公司 | 数据传输方法、装置、系统、电子设备及存储介质 |
WO2022257587A1 (zh) * | 2021-06-08 | 2022-12-15 | 中兴通讯股份有限公司 | 数据处理方法、toe硬件及计算机可读存储介质 |
WO2024011708A1 (zh) * | 2022-07-15 | 2024-01-18 | 黄策 | 一种在多个cpu之间传输数据的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004096247A (ja) * | 2002-08-29 | 2004-03-25 | Ntt Docomo Inc | データ通信システム、データ通信方法、通信端末及び中継装置 |
CN101453452A (zh) * | 2007-12-07 | 2009-06-10 | 国际商业机器公司 | 基于多核的sip消息处理方法及装置 |
CN101546276A (zh) * | 2008-03-26 | 2009-09-30 | 国际商业机器公司 | 多核环境下实现中断调度的方法及多核处理器 |
CN102571912A (zh) * | 2010-12-08 | 2012-07-11 | 中国科学院声学研究所 | 一种实现基于多核处理器和混合操作系统的卸载协议栈的方法 |
CN103019835A (zh) * | 2011-09-26 | 2013-04-03 | 同方股份有限公司 | 一种多核处理器中断资源优化处理系统和方法 |
CN103309842A (zh) * | 2013-05-23 | 2013-09-18 | 北京航空航天大学 | 消除SMP系统上Linux内核TCP连接非亲和性的方法 |
CN103457853A (zh) * | 2013-09-06 | 2013-12-18 | 华为数字技术(苏州)有限公司 | 通信方法与设备 |
CN103546424A (zh) * | 2012-07-10 | 2014-01-29 | 华为技术有限公司 | 一种tcp数据传输方法、tcp卸载引擎及系统 |
-
2015
- 2015-03-16 CN CN201510115405.4A patent/CN106034084B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004096247A (ja) * | 2002-08-29 | 2004-03-25 | Ntt Docomo Inc | データ通信システム、データ通信方法、通信端末及び中継装置 |
CN101453452A (zh) * | 2007-12-07 | 2009-06-10 | 国际商业机器公司 | 基于多核的sip消息处理方法及装置 |
CN101546276A (zh) * | 2008-03-26 | 2009-09-30 | 国际商业机器公司 | 多核环境下实现中断调度的方法及多核处理器 |
CN102571912A (zh) * | 2010-12-08 | 2012-07-11 | 中国科学院声学研究所 | 一种实现基于多核处理器和混合操作系统的卸载协议栈的方法 |
CN103019835A (zh) * | 2011-09-26 | 2013-04-03 | 同方股份有限公司 | 一种多核处理器中断资源优化处理系统和方法 |
CN103546424A (zh) * | 2012-07-10 | 2014-01-29 | 华为技术有限公司 | 一种tcp数据传输方法、tcp卸载引擎及系统 |
CN103309842A (zh) * | 2013-05-23 | 2013-09-18 | 北京航空航天大学 | 消除SMP系统上Linux内核TCP连接非亲和性的方法 |
CN103457853A (zh) * | 2013-09-06 | 2013-12-18 | 华为数字技术(苏州)有限公司 | 通信方法与设备 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789708B (zh) * | 2016-12-06 | 2020-10-09 | 中国电子科技集团公司第三十二研究所 | Tcp/ip卸载引擎中的多通道处理方法 |
CN106789708A (zh) * | 2016-12-06 | 2017-05-31 | 中国电子科技集团公司第三十二研究所 | Tcp/ip卸载引擎中的多通道处理方法 |
CN107147734A (zh) * | 2017-06-05 | 2017-09-08 | 国家计算机网络与信息安全管理中心 | 一种基于两级转发的网络流量线程级动态负载均衡方法及系统 |
CN107704421B (zh) * | 2017-09-12 | 2021-04-27 | 新华三信息安全技术有限公司 | 一种多核处理器及报文处理方法 |
CN107704421A (zh) * | 2017-09-12 | 2018-02-16 | 新华三信息安全技术有限公司 | 一种多核处理器及报文处理方法 |
CN107888710A (zh) * | 2017-12-26 | 2018-04-06 | 新华三信息安全技术有限公司 | 一种报文转发方法及装置 |
CN112154633B (zh) * | 2018-05-16 | 2021-12-17 | 华为技术有限公司 | 用于tcp通信的接收装置和传输装置 |
CN112154633A (zh) * | 2018-05-16 | 2020-12-29 | 华为技术有限公司 | 用于tcp通信的接收装置和传输装置 |
WO2020063298A1 (zh) * | 2018-09-27 | 2020-04-02 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
CN110958213A (zh) * | 2018-09-27 | 2020-04-03 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
CN110958213B (zh) * | 2018-09-27 | 2021-10-22 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
US11489945B2 (en) | 2018-09-27 | 2022-11-01 | Huawei Technologies Co., Ltd. | TCP packet processing method, toe component, and network device |
CN110166373A (zh) * | 2019-05-21 | 2019-08-23 | 优刻得科技股份有限公司 | 源物理机向目的物理机发数据的方法、装置、介质和系统 |
CN110166373B (zh) * | 2019-05-21 | 2022-12-27 | 优刻得科技股份有限公司 | 源物理机向目的物理机发数据的方法、装置、介质和系统 |
CN111277600B (zh) * | 2020-01-21 | 2021-07-30 | 中科驭数(北京)科技有限公司 | 数据传输方法及装置 |
CN111277600A (zh) * | 2020-01-21 | 2020-06-12 | 中科驭数(北京)科技有限公司 | 数据传输方法及装置 |
CN111277660A (zh) * | 2020-01-22 | 2020-06-12 | 中国银联股份有限公司 | 一种用于组成dmz区域的系统及方法 |
CN111277660B (zh) * | 2020-01-22 | 2021-09-14 | 中国银联股份有限公司 | 一种用于组成dmz区域的系统及方法 |
CN112019645A (zh) * | 2020-07-06 | 2020-12-01 | 中科驭数(北京)科技有限公司 | 基于toe的网络地址管理方法及装置 |
CN112019645B (zh) * | 2020-07-06 | 2021-07-30 | 中科驭数(北京)科技有限公司 | 基于toe的网络地址管理方法及装置 |
WO2022257587A1 (zh) * | 2021-06-08 | 2022-12-15 | 中兴通讯股份有限公司 | 数据处理方法、toe硬件及计算机可读存储介质 |
CN113238977A (zh) * | 2021-07-12 | 2021-08-10 | 深之蓝(天津)水下智能科技有限公司 | 数据传输方法、装置、系统、电子设备及存储介质 |
WO2024011708A1 (zh) * | 2022-07-15 | 2024-01-18 | 黄策 | 一种在多个cpu之间传输数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106034084B (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106034084A (zh) | 一种数据传输方法及装置 | |
EP3352431B1 (en) | Network load balance processing system, method, and apparatus | |
CN103902486B (zh) | 一种远端直接内存访问实现方法、装置及系统 | |
EP2755363B1 (en) | Data-fast-distribution method and device | |
CN106664290A (zh) | 一种光电混合网络的数据传输方法及装置 | |
CN113014528B (zh) | 报文处理方法、处理单元及虚拟专用网络服务器 | |
US11954530B2 (en) | Method and system of processing data based on QUIC protocol stack, device and storage medium | |
US8539089B2 (en) | System and method for vertical perimeter protection | |
CN114647602B (zh) | 一种跨芯片访问控制的方法、装置、设备及介质 | |
EP2568689B1 (en) | Download method and system based on management data input/output interface | |
CN104618365A (zh) | 协议报文处理方法、装置及终端 | |
US11177969B2 (en) | Interface device and data communication method | |
CN113347017B (zh) | 一种网络通信的方法、装置、网络节点设备及混合网络 | |
US9485114B2 (en) | MAC abstraction sub-layer and MAC table for a communication system and related communication device | |
KR102303424B1 (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
US20150199298A1 (en) | Storage and network interface memory share | |
US8799519B2 (en) | Network-to-network bridge | |
CN109168185B (zh) | 一种基于网络命名空间的网络扫描方法及装置 | |
CN106059724B (zh) | 一种报文传输方法和装置 | |
CN106372013A (zh) | 远程内存访问方法、装置和系统 | |
CN111240867B (zh) | 一种信息通讯系统及方法 | |
JP2006260543A (ja) | データをネットワークに送信する方法及び装置並びにデータをネットワークから受信する方法及び装置 | |
EP3229145A1 (en) | Parallel processing apparatus and communication control method | |
EP3076743A1 (en) | Data transmission method, device and system | |
CN105763519A (zh) | 一种一致性控制方法,装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |