一种数据传输方法及装置的制造方法

文档序号:10666361阅读:348来源:国知局
一种数据传输方法及装置的制造方法
【专利摘要】本发明的实施例提供一种数据传输方法及装置,涉及通信技术领域,解决了在多核应用场景中,多个CPU的资源利用率较低的问题。该方案包括:接收在第一TCP连接上传输的第一TCP报文;在本地存储的连接信息表中查找与第一TCP连接对应的第一CPU的标识和第一地址信息,连接信息表中包括第一TCP连接和第一CPU的标识的对应关系,以及第一TCP连接和第一地址信息的对应关系;将第一TCP报文中的数据存储在第一地址信息指示的存储位置中;根据第一CPU的标识向第一CPU发起第一中断请求,触发第一CPU根据第一地址信息从内存中获取第一TCP报文中的数据。
【专利说明】
一种数据传输方法及装置
技术领域
[0001] 本发明涉及通信技术领域,尤其涉及一种数据传输方法及装置。
【背景技术】
[0002] TOE (Transmission Control Protocol Offload Engine,传输控制协议卸载引擎, 简称TCP卸载引擎)用于将CPU上关于TCP/IP的部分处理任务转移到专门的单元上进行。 以集成有TOE的网卡为例,参考图1,通过采用配有TOE的TOE网卡,包括TCP层和IP层在 内的四层处理任务都可以从主机CPU转移到该TOE网卡,大大减轻了主机CPU的处理负担。
[0003] 在包含多个CPU的多核系统中,例如Soc(system on chip,片上系统)或设有多 个CPU的服务器中,如图2所示,通常TOE挂载在发送端或接收端的系统总线上,分别与存 储器和多个CPU进行通信。在这种应用场景下,需要发送端与接收端之间建立TCP连接进 行数据传输,此时,发送端与接收端内的TOE单元通过中断的方式触发CPU进行相关应用的 数据处理,而这个中断通常是绑定在某一个CPU上进行的,当传输的数据非常多时,中断所 绑定的CPU的资源占用率就非常高,导致整个多核应用场景的数据性能都受制于单个CPU。
[0004] 为解决上述问题,以发送端请求建立一条TCP连接为例,在发送端的TOE与接收端 经过三次握手建立TCP连接后,发送端的TOE上报中断给绑定的CPUl,以使得CPUl在该TCP 连接上发送数据,由于执行各种数据传输的TCP连接的中断均绑定在CPUl上,当CPUl的占 用率达到阈值后,CPUl通过预置的任务调度算法,将CPUl内的部分数据传输进程迀移到其 他CPU上,完成CPUl的负载均衡,然而,CPUl使用任务调度算法仍然需要消耗额外的CPUl 的资源,而且,在CPUl的占用率未达到阈值前,只能使用CPUl处理所有TCP连接的中断请 求,无法充分利用多核系统中其他CPU的资源,降低了多核系统中CPU的资源利用率。

【发明内容】

[0005] 本发明的实施例提供一种数据传输方法及装置,解决了在多核应用场景中,由于 在各种数据传输的连接上传输数据均需与统一的CPU绑定进行中断操作,而导致CPU的资 源利用率降低的问题。
[0006] 为达到上述目的,本发明的实施例采用如下技术方案:
[0007] 第一方面,本发明的实施例提供一种数据传输方法,包括:
[0008] 传输控制协议卸载引擎TOE接收在第一传输控制协议TCP连接上传输的第一 TCP 报文;
[0009] 所述TOE在本地存储的连接信息表中查找与所述第一 TCP连接对应的第一 CPU的 标识和第一地址信息,所述连接信息表中包括所述第一 TCP连接和第一 CPU的标识的对应 关系,以及所述第一 TCP连接和所述第一地址信息的对应关系,其中,所述第一 CPU的标识 用于指示处理所述第一 TCP连接上传输的报文数据的CPU,所述第一地址信息为第一 CPU预 先确定的用于指示通过所述第一 TCP连接传输的报文数据在内存中的存储位置;
[0010] 所述TOE将所述第一 TCP报文中的数据存储在所述第一地址信息指示的存储位置 中;
[0011] 所述TOE根据所述第一 CPU的标识向所述第一 CPU发起第一中断请求,触发所述 第一 CPU根据所述第一地址信息从所述内存中获取所述第一 TCP报文中的数据。
[0012] 结合第一方面,在第一方面的第一种可能的实现方式中,在所述TOE获取第一 TCP 连接上的第一 TCP报文之前,还包括:
[0013] 所述TOE向控制设备发送第二中断请求,触发所述控制设备确定与所述第一 TCP 连接对应的所述第一 CPU的标识;
[0014] 所述TOE获取所述第一 CRJ的标识,并将所述第一 CPU的标识与所述第一 TCP的 连接关系存储至所述连接信息表中,以建立所述第一 TCP连接与所述第一 CPU的对应关系。
[0015] 结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式 中,在所述TOE向控制设备发送第二中断请求之后,还包括:
[0016] 所述TOE将建立所述第一 TCP连接所需的配置信息发送至所述控制设备,所述配 置信息用于指示所述第一 TCP连接的优先等级;
[0017] 其中,触发所述控制设备确定与所述第一 TCP连接对应的所述第一 CPU的标识,包 括:
[0018] 触发所述控制设备根据所述配置信息确定所述第一 TCP连接的优先等级,以便于 所述控制设备根据所述第一 TCP连接的优先等级确定与所述第一 TCP连接对应的所述第一 CPU的标识。
[0019] 结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式 中,在所述TOE向控制设备发送第二中断请求,触发所述控制设备确定与所述第一 TCP连接 所绑定的所述第一 CPU的标识之后,还包括:
[0020] 所述TOE接收所述第一 CPU发送的所述第一地址信息;
[0021 ] 所述TOE将所述第一地址信息和所述第一 TCP连接的对应关系存储至所述连接信 息表中,以建立所述第一地址信息与所述第一 TCP连接的对应关系。
[0022] 结合第一方面以及第一方面的第第一至三种可能的实现方式中的任一种可能的 实现方式,在第一方面的第四种可能的实现方式中,当所述TOE需要在所述第一 TCP连接上 发送第二TCP报文时,所述方法还包括:
[0023] 所述TOE接收所述第一 CPU发送的第二地址信息,所述第二地址信息用于指示待 发送数据在所述内存中的存储位置;
[0024] 所述TOE根据所述第二地址信息从所述内存中获取所述待发送数据;
[0025] 所述TOE将所述待发送数据封装成所述第二TCP报文;
[0026] 所述TOE在所述第一 TCP连接上发送所述第二TCP报文。
[0027] 第二方面,本发明的实施例提供一种数据传输方法,包括:
[0028] 在控制设备接收到传输控制协议卸载引擎TOE发送的第二中断请求之后,所述控 制设备则从N个CPU中确定一个CPU为第一 CPU,所述第一 CPU用于处理第一传输控制协议 TCP连接上传输的数据,N彡1 ;
[0029] 所述控制设备向所述第一 CPU发送指示信息,所述指示信息用于指所述内存中获 取所述第一 TCP报文中的数据。
[0030] 结合第三方面,在第三方面的第一种可能的实现方式中,
[0031] 所述中断触发单元,还用于向控制设备发送第二中断请求,触发所述控制设备确 定与所述第一 TCP连接对应的所述第一 CPU的标识;
[0032] 所述接收单元,还用于获取所述第一 CPU的标识;
[0033] 所述存储单元,还用于将所述第一 CPU的标识与所述第一 TCP的连接关系存储至 所述连接信息表中,以建立所述第一 TCP连接与所述第一 CPU的对应关系。
[0034] 结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式 中,所述TOE还包括发送单元,其中,
[0035] 所述发送单元,用于将建立所述第一 TCP连接所需的配置信息发送至所述控制设 备,所述配置信息用于指示所述第一 TCP连接的优先等级;
[0036] 所述中断触发单元,具体用于向控制设备发送第二中断请求,触发所述控制设备 根据所述配置信息确定所述第一 TCP连接的优先等级,以便于所述控制设备根据所述第一 TCP连接的优先等级确定与所述第一 TCP连接对应的所述第一 CPU的标识。
[0037] 结合第三方面的第一种可能的实现方式,在第三方面的第三种可能的实现方式 中,
[0038] 所述接收单元,还用于接收所述第一 CPU发送的所述第一地址信息;
[0039] 所述存储单元,还用于将所述接收单元中的所述第一地址信息和所述第一 TCP连 接的对应关系存储至所述连接信息表中,以建立所述第一地址信息与所述第一 TCP连接的 对应关系。
[0040] 结合第三方面以及第三方面的第一至第三种可能的实现方式中的任一种可能的 实现方式,在第三方面的第四种可能的实现方式中,所述TOE还包括封装单元,其中,
[0041] 所述接收单元,还用于接收所述第一 CPU发送的第二地址信息,所述第二地址信 息用于指示待发送数据在所述内存中的存储位置;并根据所述第二地址信息从所述内存中 获取所述待发送数据;
[0042] 所述封装单元,用于将所述接收单元中的所述待发送数据封装成所述第二TCP报 文;
[0043] 所述发送单元,还用于在所述第一 TCP连接上发送所述封装单元中的所述第二 TCP报文。
[0044] 第四方面,本发明的实施例提供一种控制设备,包括:
[0045] 确定单元,用于在接收到传输控制协议卸载引擎TOE发送的第二中断请求之后, 则从N个CPU中确定一个CPU为第一 CPU,所述第一 CPU用于处理第一传输控制协议TCP连 接上传输的数据,N多1 ;
[0046] 指示单元,用于向所述确定单元中确定的所述第一 CPU发送指示信息,所述指示 信息用于指示所述第一 CPU处理在所述第一 TCP连接上传输的数据。
[0047] 结合第四方面,在第四方面的第一种可能的实现方式中,所述CPU还包括获取单 元,其中,
[0048] 所述获取单元,用于获取所述N个CPU的负载值;
[0049] 所述确定单元,具体用于根据所述获取单元中所述N个CPU的负载值,将负载值最 小的CPU作为所述第一 CPU。
[0050] 结合第四方面,在第四方面的第二种可能的实现方式中,
[0051] 所述获取单元,还用于接收所述TOE发送的配置信息,所述配置信息用于指示所 述第一 TCP连接的优先等级;并获取所述N个CPU的负载值;
[0052] 所述确定单元,具体用于若所述获取单元中所述第一 TCP连接的优先等级高于阈 值,则将负载值最小的CPU作为所述第一 CPU。
[0053] 本发明的实施例提供一种数据传输方法及装置,TOE接收在第一 TCP连接上传输 的第一 TCP报文后,由于在本地存储的连接信息表中包括有第一 TCP连接和第一 CPU的标 识的对应关系,以及第一 TCP连接和第一地址信息的对应关系,其中,第一 CPU的标识用于 指示处理第一 TCP连接上传输的报文数据的CPU,第一地址信息为第一 CPU预先确定的用于 指示通过第一 TCP连接传输的报文数据在内存中的存储位置,因此,TOE可以在连接信息表 中查找与第一 TCP连接对应的第一 CPU的标识和第一地址信息,进而将第一 TCP报文中的 数据存储在第一地址信息指示的存储位置中,并向第一 CPU发起第一中断请求,触发第一 CHJ根据第一地址信息从内存中获取第一 TCP报文中的数据,这样,由于在建立示所述第一 CPU处理在所述第一 TCP连接上传输的数据。
[0054] 结合第二方面,在第二方面的第一种可能的实现方式中,所述控制设备则从N个 CPU中确定一个CPU为第一 CPU,包括:
[0055] 所述控制设备获取所述N个CPU的负载值;
[0056] 所述控制设备根据所述N个CPU的负载值,将负载值最小的CPU作为所述第一 CPUo
[0057] 结合第二方面,在第二方面的第二种可能的实现方式中,在所述控制设备则从N 个CPU中确定一个CPU为第一 CPU之前,还包括:
[0058] 所述控制设备接收所述TOE发送的配置信息,所述配置信息用于指示所述第一 TCP连接的优先等级;
[0059] 其中,所述控制设备则从N个CPU中确定一个CPU为第一 CPU,包括:
[0060] 所述控制设备根据所述配置信息确定所述第一 TCP连接的优先等级;
[0061 ] 所述控制设备获取所述N个CPU的负载值;
[0062] 若第一 TCP连接的优先等级高于阈值,所述控制设备则将负载值最小的CPU作为 所述第一 CPU。
[0063] 第三方面,本发明的实施例提供一种Τ0Ε,包括:
[0064] 接收单元,用于接收在第一传输控制协议TCP连接上传输的第一 TCP报文;
[0065] 查找单元,用于在本地存储的连接信息表中查找与所述接收单元中的第一 TCP连 接对应的第一 CPU的标识和第一地址信息,所述连接信息表中包括所述第一 TCP连接和第 一 CPU的标识的对应关系,以及所述第一 TCP连接和所述第一地址信息的对应关系,其中, 所述第一 CPU的标识用于指示处理所述第一 TCP连接上传输的报文数据的CPU,所述第一地 址信息为第一 CPU预先确定的用于指示通过所述第一 TCP连接传输的报文数据在内存中的 存储位置;
[0066] 存储单元,用于将接收单元中所述第一 TCP报文中的数据存储在所述查找单元中 的第一地址信息指示的存储位置中;
[0067] 中断触发单元,用于根据所述查找单元中第一 CPU的标识向所述第一 CPU发起第 一中断请求,触发所述第一 CPU根据所述第一地址信息从该第一 TCP连接时已经将第一 TCP 连接上传输的报文数据的CPU与第一 TCP连接建立了对应关系,因此,TOE在处理第一 TCP 连接上传输的报文数据时,可直接根据与第一 TCP连接对应的第一 CPU的标识向第一 CPU 发送中断请求,也就是说,不同的TCP连接上处理报文数据的中断请求可以与不同的CPU对 应,避免了在多核应用场景中,TCP连接上处理报文数据的中断请求均需与统一的CPU进行 中断操作,而导致该统一的CPU资源占用率过高的问题,同时提高了其他CPU的资源利用 率,使多核系统中的多个CPU的负载趋于均衡。
【附图说明】
[0068] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0069] 图1为普通网卡与TOE网卡的结构示意图;
[0070] 图2为SOC系统的架构示意图;
[0071] 图3为本发明实施例提供的一种数据传输方法的流程示意图一;
[0072] 图4为本发明实施例提供的一种数据传输方法的流程示意图二;
[0073] 图5为本发明实施例提供的一种数据传输方法的流程示意图三;
[0074] 图6为现有技术中三次握手的流程示意图;
[0075] 图7为本发明实施例提供的一种TOE的硬件示意图;
[0076] 图8为本发明实施例提供的一种控制设备的硬件示意图;
[0077] 图9为本发明实施例提供的一种多核系统的结构示意图;
[0078] 图10为本发明实施例提供的一种TOE的结构示意图一;
[0079] 图11为本发明实施例提供的一种TOE的结构示意图二;
[0080] 图12为本发明实施例提供的一种TOE的结构示意图三;
[0081] 图13为本发明实施例提供的一种控制设备的结构示意图一;
[0082] 图14为本发明实施例提供的一种控制设备的结构示意图二。
【具体实施方式】
[0083] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之 类的具体细节,以便透彻理解本发明。然而,本领域的技术人员应当清楚,在没有这些具体 细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的装置、电路以及 方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0084] 实施例1
[0085] 本发明的实施例提供一种数据传输方法,如图3所示,包括:
[0086] 101、TOE接收在第一 TCP连接上传输的第一 TCP报文。
[0087] 102、T0E在本地存储的连接信息表中查找与第一 TCP连接对应的第一 CPU的标识 和第一地址信息,该连接信息表中包括第一 TCP连接和第一 CPU的标识的对应关系,以及第 一 TCP连接和第一地址信息的对应关系。
[0088] 103、TOE将第一 TCP报文中的数据存储在第一地址信息指示的存储位置中。
[0089] 104、TOE根据第一 CPU的标识向第一 CPU发起第一中断请求,触发第一 CPU根据 第一地址信息从内存中获取第一 TCP报文中的数据。
[0090] 在步骤101中,TOE可以在已经建立好的第一 TCP连接上接收发送端发送的第一 TCP报文,进而通过中断请求的形式与CPU进行交互,使得CPU获取到该第一 TCP报文中的 TCP报文数据。
[0091] 具体的,本发明实施例提供的数据传输方法,可以应用在包括TOE和多个CPU的多 核系统中,例如,在使用含有TOE的多核手机进行即时通讯时,手机与网络侧的服务器需要 建立TCP连接后,才能在已建立好的TCP连接上传送数据,可以看出,一个含有TOE的多核 手机可能会建立很多条TCP连接分别传输不同应用程序的数据,而在现有技术中,处理多 条TCP连接上传输的报文数据的CPU是固定的,也就是说,TOE只能向已经固定的某个CPU 发送中断请求,触发该唯一的CPU处理多条TCP连接上传输的报文数据,显而易见的,对于 包含多个CPU的多核系统而言,这种CPU与TOE的交互方式可能会导致某一 CPU的资源占 用率过高,同时降低了其他CPU的利用率。
[0092] 进一步地,在TOE接收在第一 TCP连接上传输的第一 TCP报文之前,TOE还可以接 收建立该第一 TCP连接所需的配置信息,并通过三次握手的机制与发送端建立该第一 TCP 连接,该第一 TCP连接的建立方法将在实施例2中详细阐述,故此处不再赘述。
[0093] 需要说明的是,在建立该第一 TCP连接时,TOE会根据第一 TCP连接的配置信息使 用hash算法得到第一TCP连接的CID (Connection IDentifier,连接标识符),也就是说,每 一条TCP连接都由唯一的一个CID所确定。因此,在TOE接收到第一 TCP报文后,会对第一 TCP报文的报头进行解析得到第一 TCP报文所对应的第一 CID,TOE查找自身是否存储有第 一 CID,如果没有存储第一 CID,则说明第一 CID对应的第一 TCP连接还没有建立,进而TOE 会通过三次握手的机制与发送端建立上述第一 TCP连接,如果存储第一 CID,TOE则执行步 骤 102〇
[0094] 在步骤102中,当TOE获得已建立的第一TCP连接上传输的第一 TCP报文之后,TOE 可以在本地存储的连接信息表中,查找与第一 TCP连接对应的第一 CPU的标识和第一地址 信息。
[0095] 其中,该连接信息表中包括第一 TCP连接和第一 CPU的标识的对应关系,以及第一 TCP连接和第一地址信息的对应关系。该第一 CPU的标识用于指示处理第一 TCP连接上传 输的报文数据的CPU,而该第一地址信息为第一 CPU预先确定的用于指示通过第一 TCP连接 传输的报文数据在内存中的存储位置,其中,第一地址信息可以包括报文数据在内存中的 起始指针位置以及数据大小等信息。
[0096] 示例性的,如表1所示,该连接信息表中可以包括,第一 CID和第一 CPU的标识的 对应关系,以及第一 CID和第一地址信息的对应关系,由于每个CID可以确定唯一的一条 TCP连接,因此,可以用一个CID表示一条TCP连接。
[0097] 表 1

[0099] 具体的,仕建H该弟一 TUP迕按町,TUE η」以W与弟一 (J1U对吆的第一 CPU的标识 存储在该连接信息表中,以建立第一 TCP连接和第一 CPU的标识的对应关系;类似的,在建 立该第一 TCP连接时,TOE也可以将与第一 CID对应的第一地址信息存储在该连接信息表 中,以建立第一 TCP连接和第一地址信息的对应关系。其中,建立该第一 TCP连接的方法将 在实施例2中详细阐述,故此处不在赘述。
[0100] 在步骤103中,当TOE通过步骤102中从连接信息表获取到与第一 TCP连接对应 的第一地址信息后,TOE根据第一地址信息中指示的第一 TCP连接传输的报文数据在内存 中的存储位置,将第一 TCP报文中的数据存储在该存储位置处。
[0101] 例如,第一地址信息中指示第一 TCP连接传输的报文数据在内存中的起始指针为 0020,数据大小为IM的内存块中,那么,TOE便可以将第一 TCP报文中的数据写入起始指针 为0020,数据大小为IM的内存块中。
[0102] 在步骤104中,在TOE将第一 TCP报文中的数据存储在第一地址信息指示的存储 位置之后,TOE便可以根据步骤102中获取到的第一 CPU的标识,向所述第一 CPU发起第一 中断请求,由于第一地址信息为第一 CPU预先确定的用于指示通过第一 TCP连接传输的报 文数据在内存中的存储位置,也就是说,第一 CPU已经预先获知第一 TCP连接传输的报文数 据在内存中的存储位置,因此,在接收到第一终端请求后,便可以直接根据第一地址信息从 内存中获取第一 TCP报文中的数据。
[0103] 当TOE需要在第一 TCP连接上发送第二TCP报文时,与TOE在第一 TCP连接上接 收第一 TCP报文类似的,TOE首先接收第一 CPU发送的第二地址信息,该第二地址信息用于 指示待发送数据在内存中的存储位置,这样,TOE根据该第二地址信息从内存中获取待发送 数据;并将待发送数据封装成第二TCP报文;最终,TOE在该第一 TCP连接上发送封装后的 第二TCP报文。
[0104] 可以看出,由于在建立该第一 TCP连接时已经将第一 CPU的标识与第一 TCP连接 建立了对应关系,因此,TOE在处理第一 TCP连接上传输的报文数据时,可直接根据与第一 TCP连接对应的第一 CPU的标识向第一 CPU发送中断请求,也就是说,不同的TCP连接上处 理报文数据的中断请求可以与不同的CPU对应,避免了在多核应用场景中,TCP连接上处理 报文数据的中断请求均需与统一的CPU进行中断操作,而导致该统一的CPU资源占用率过 高的问题。
[0105] 本发明的实施例提供一种数据传输方法,如图4所示,包括:
[0106] 201、在接收到TOE发送的第二中断请求之后,控制设备则从N个CPU中确定一个 CPU为第一 CPU,第一 CPU用于处理第一 TCP连接上传输的数据,N多1。
[0107] 202、控制设备向第一 CPU发送指示信息,该指示信息用于指示第一 CPU处理在第 一 TCP连接上传输的数据。
[0108] 在步骤201中,在建立该第一 TCP连接时,可参见步骤101的描述,TOE会对接收 到的第一 TCP报文的报头进行解析,得到第一 TCP报文所对应的第一 CID,TOE查找自身是 否存储有第一 CID,如果没有存储第一 CID,则说明第一 CID对应的第一 TCP连接还没有建 立,此时,TOE向控制设备发送第二中断请求,控制设备接收到第二中断请求后,从N个CPU 中确定一个CPU为第一 CPU,该第一 CPU用于处理第一 TCP连接上传输的数据,N多1。
[0109] Τ0Ε、控制设备以及N个CPU可以组成一个多核系统,控制设备接收到TOE发送的 第二中断请求后,从N个CPU中确定处理第一 TCP连接上传输的数据的CPU为第一 CPU,这 样,第一 CPU或者控制设备便可以把第一 CPU的标识发送至TOE中,以使得TOE将第一 CPU 的标识和第一 CID存储至连接信息表中,以建立第一 TCP连接和第一 CPU的标识的对应关 系。
[0110] 具体的,控制设备在接收到第二中断请求后,可以从N个CPU中分别获取这N个 CHJ的负载值,进而根据所述N个CPU的负载值,将负载值最小的CPU作为该第一 CPU,专门 用于处理第一 TCP连接上传输的数据。
[0111] 又或者,控制设备在接收到第二中断请求后,还可以接收TOE发送的第一 TCP连接 的配置信息,该配置信息可以用于指示第一 TCP连接的优先等级,具体的,如表2所示,该配 置信息可以具体包括该第一 TCP连接的四元组信息(即源IP地址、目的IP地址、源端口地 址以及目的端口地址)、发送端的MAC地址、该第一 TCP连接的起始序号、确认序号,本地窗 口值以及远端窗口值等。
[0112] 表 2
[0114] 控制设备可以根据第一 TCP连接的配置信息确定第一 TCP连接的优先等级,例如, 根据第一 TCP连接的四元组信息和MAC地址,确定第一 TCP连接是基于telnet协议的实时 通讯连接,由于该实时通讯连接对实时性要求很高,因此,可将该第一 TCP连接的优先等级 设置为1 (即高优先级的TCP连接),这样,TOE便可以将负载值最小的CPU作为该第一 CPU, 用于处理第一 TCP连接上传输的数据。相应的,如果第一 TCP连接的优先等级为2 (即低优 先级的TCP连接),那么,TOE便可以将占用率较高的CPU作为第一 CPU,例如,在负载值在 50 %至70 %的多个CPU中随机选择一个CPU作为该第一 CPU。
[0115] 当然,控制设备从N个CPU中确定一个CPU为第一 CPU的方法可以有根多种,本发 明对此不作任何限定,例如,控制设备可以设置每个CPU处理100条TCP连接上传输的报文 数据,那么,当控制设备在接收到第二中断请求后,可随机选择处理不足100条TCP连接上 传输的报文数据的CPU作为该第一 CPU。
[0116] 本发明的实施例提供一种数据传输方法,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的负载趋于均衡。
[0117] 实施例2
[0118] 本发明的实施例提供一种数据传输方法,如图5所示,包括:
[0119] 301、TOE从发送端获取建立第一 TCP连接的配置信息。
[0120] 302、若根据配置信息得到的第一 CID没有存储在TOE中,TOE则向控制设备发送 第二中断请求。
[0121] 303、控制设备接收到第二中断请求后,从N个CPU中确定一个CPU作为第一 CPU, 该第一 CPU用于处理第一 TCP连接上传输的数据。
[0122] 304、控制设备向第一 CPU发送指示信息,该指示信息用于指示第一 CPU处理在第 一 TCP连接上传输的数据。
[0123] 305、第一 CPU根据指示信息确定第一地址信息,该第一地址信息用于指示第一 TCP连接传输的报文数据在内存中的存储位置。
[0124] 306、第一 CPU将第一地址信息和第一 CPU的标识发送至Τ0Ε。
[0125] 307、TOE将第一 CID与第一 CPU的标识的对应关系,以及第一 CID与第一地址信 息的对应关系存储至连接信息表中,以建立第一 CPU与第一 TCP连接的对应关系,以及第一 地址信息与第一 TCP连接的对应关系。
[0126] 308、TOE生成SYN报文和ACK报文,并发送至发送端,若接收到发送端发送的ACK 报文,TOE则确认第一 TCP连接建立完成。
[0127] 309、TOE在已建立的第一 TCP连接上接收传输的第一 TCP报文。
[0128] 310、T0E在本地存储的连接信息表中查找与第一 TCP连接对应的第一 CPU的标识 和第一地址信息,该连接信息表中包括第一 TCP连接和第一 CPU的标识的对应关系,以及第 一 TCP连接和第一地址信息的对应关系。
[0129] 311、TOE将第一 TCP报文中的数据存储在第一地址信息指示的存储位置中。
[0130] 312、TOE根据第一 CPU的标识向第一 CPU发起第一中断请求,触发第一 CPU根据 第一地址信息从内存中获取第一 TCP报文中的数据。
[0131] 在步骤301中,由于TOE需要与发送端建立第一 TCP连接后,才能在第一 TCP连接 上传输数据,因此,发送端会根据三次握手的机制,向TOE (本发明实施例中涉及的TOE均以 接收端的TOE为例)发送SYN(Synchronize Sequence Numbers,同步序列编号)报文,TOE 接收到SYN报文后对SYN报文进行报文解析,获取SYN报文中携带的建立第一 TCP连接的 配置信息,该建立第一 TCP连接的配置信息的具体描述可参见步骤201。
[0132] 其中,所谓的三次握手的机制,是指为了提供可靠的数据传送,接收端和发送端对 每次数据的传输进行协商,使数据的发送和接收同步。如图6所示,第一次握手是指,在建 立TCP连接时,发送端发送SYN报文到接收端,该数据包中包含本次TCP连接的配置信息, 以使得接收端根据配置信息进行初始化配置。第二次握手是指,接收端进行初始化配置后 发送响应信息(即SYN报文+ACK (Acknowledgement,确认字符)报文)指示发送端该TCP 连接的配置完成。第三次握手是指,发送端收到接收端的响应信息后发送确认信息,指示接 收端该TCP连接已经建立,准备传输数据。
[0133] 基于上述的三次握手的机制,TOE在获取到发送端发送SYN报文(即第一次握手) 后,解析得到第一 TCP连接的配置信息,进而根据第一 TCP连接的配置信息使用hash算法 得到第一 TCP连接的第一 CID,此时,TOE查找自身是否存储有第一 CID,如果没有存储第一 CID,则说明第一 CID对应的第一 TCP连接还没有建立,那么,TOE则执行步骤302至308以 建立该第一 TVP连接;如果存储第一 CID,则说明第一 CID对应的第一 TCP连接已经建立完 成,那么,TOE则执行步骤309至312。
[0134] 在步骤302中,若根据配置信息得到的第一 CID没有存储在TOE中,TOE则向控制 设备发送第二中断请求,触发控制设备从N个CPU中确定处理第一 TCP连接上传输的数据 的CPU为第一 CPU。
[0135] 在步骤303中,控制设备接收到TOE发送的第二中断请求后,从N个CPU中确定处 理第一 TCP连接上传输的数据的CPU为第一 CPU,这样,第一 CPU或者控制设备便可以把第 一 CPU的标识发送至TOE中,以使得TOE将第一 CPU的标识和第一 CID存储至连接信息表 中,以建立第一 TCP连接和第一 CPU的标识的对应关系。
[0136] 其中,控制设备从N个CPU中确定处理第一 TCP连接上传输的数据的CPU为第一 CPU的方法可参见实施例1中步骤201中的相关描述,此处不再详述。
[0137] 在步骤304中,控制设备确定了第一 CPU之后,向第一 CPU发送指示信息,该指示 信息用于指示第一 CPU处理在第一 TCP连接上传输的数据。也就是说,控制设备确定了第 一 CPU之后,将处理在第一 TCP连接上传输的数据的全部任务下发至第一 CPU。
[0138] 在步骤305中,第一 CPU根据步骤304中控制设备发送的指示信息,确定第一地址 信息,该第一地址信息用于指示第一 TCP连接传输的报文数据在内存中的存储位置。
[0139] 具体的,第一 CPU获取到指示信息后,主动向内存发送地址申请,该地址申请用于 在内存中,请求存放第一 TCP连接传输的报文数据在内存中的存储位置,内存根据地址申 请划分一定大小的内存块用于存放第一 TCP连接传输的报文数据,并生成第一地址信息发 送至第一 CPU。
[0140] 在步骤306中,第一 CPU将第一 CPU的标识和步骤305中确定的第一地址信息发 送至Τ0Ε。
[0141] 在步骤307中,TOE接收到第一 CPU的标识和第一地址信息后,将第一 CID与第一 CPU的标识的对应关系,以及第一 CID与第一地址信息的对应关系存储至连接信息表中,以 建立第一 CPU与第一 TCP连接的对应关系,以及第一地址信息与第一 TCP连接的对应关系。
[0142] 通过步骤301至307, TOE完成了建立第一 TCP连接时,对第一 TCP连接对应的第 一 CPU和第一地址信息的配置过程,因此,在步骤308中,TOE生成SYN报文和ACK报文,并 发送至发送端以完成第二次握手过程,进一步地,若TOE接收到发送端发送的ACK报文(即 第三次握手过程),TOE则确认第一 TCP连接建立完成,可以在第一 TCP连接上以TCP报文 的形式传输数据。
[0143] 进一步地,TOE可以执行步骤309至312在第一 TCP连接上接收第一 TCP报文,其 中,步骤309至312的具体方法可参见步骤101至104,此处不再详述。
[0144] 可以看出,在本发明中,在建立第一 TCP连接时,通过TOE与控制设备的交互,可以 指定任一个CPU作为第一 CPU处理在第一 TCP连接上传输的数据,这样,TOE和控制设备可 以将处理各个TCP连接上传输的数据的任务分配到各个CPU上,使多核系统中的多个CPU 的负载趋于均衡。
[0145] 本发明的实施例提供一种数据传输方法,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的负载趋于均衡。
[0146] 实施例3
[0147] 附图7示出的是本发明提供的T0E01的硬件示意图。
[0148] 其中,所述T0E01包括控制模块01、与控制模块01均相连的TOE接收端100和TOE 发送端200,其中,TOE接收端100具体包括报头解析模块02、第一 DMA控制器03、第一处理 引擎04以及第一缓存05, TOE发送端200具体包括封装模块06、第二DMA控制器07、第二 处理引擎08以及第二缓存09。
[0149] 控制模块01,是所述T0E01的控制中心,控制模块01通过对TOE接收端100或TOE 发送端200接收到的指令和数据进行处理,执行所述控制模块01的各项功能。其中,控制 模块01中存储有第一 TCP连接和第一 CPU的标识的对应关系,以及所述第一 TCP连接和所 述第一地址信息的对应关系,其中,所述第一 CPU的标识用于指示处理所述第一 TCP连接上 传输的报文数据的CPU,所述第一地址信息为第一 CPU预先确定的用于指示通过所述第一 TCP连接传输的报文数据在内存中的存储位置。
[0150] 报头解析模块02,可用于对在第一 TCP连接上接收到的TCP报文进行解析,获得所 述第一 TCP连接传输的报文数据。
[0151] 第一 DM控制器03和第二DM控制器07,可以在没有用CPU参与的情况下,使得 T0E01和内存之间进行双向数据传输。
[0152] 第一处理引擎04和第二处理引擎08,可以对控制模块01进行驱动,以使得控制模 块01执行T0E01的各项功能。
[0153] 封装模块06,可用于对在第一 TCP连接上需要发送的TCP报文数据进行封装,获得 封装后的TCP报文。
[0154] 第一缓存05和第二缓存09,用于分别存放TOE接收端100和TOE发送端200接收 到或待发送的数据和指令。
[0155] 具体的,在本发明的实施例中,报头解析模块02接收到在第一 TCP连接上传输的 第一 TCP报文后进行报文解析,获得第一 TCP连接的CID并发送至第一处理引擎04 ;第一 处理引擎04查找与该CID对应的TCP连接为第一 TCP连接后上报至控制模块01,控制模 块01在存储的连接信息表中查找与所述第一 TCP连接对应的第一 CPU的标识和第一地址 信息;进而调用第一 DM控制器03将所述第一 TCP报文中的数据存储在所述第一地址信息 指示的存储位置中;同时,控制模块01据所述第一 CPU的标识,驱动第一处理引擎04根向 所述第一 CPU发起第一中断请求,触发所述第一 CPU根据所述第一地址信息从所述内存中 获取所述第一 TCP报文中的数据。
[0156] 进一步地,在报头解析模块02接收到在第一 TCP连接上传输的第一 TCP报文之 前,还可以包括步骤:控制模块01驱动第一处理引擎04向控制设备发送第二中断请求,触 发所述控制设备确定与所述第一 TCP连接对应的所述第一 CPU的标识;进而,第一处理引擎 04获取到所述第一 CPU的标识后,将所述第一 CPU的标识与所述第一 TCP的连接关系存储 至控制模块01中的连接信息表中,以建立所述第一 TCP连接与所述第一 CPU的对应关系。
[0157] 进一步地,在控制模块01驱动第一处理引擎04向控制设备发送第二中断请求之 后,还可以包括步骤:控制模块01驱动第一处理引擎04将建立所述第一 TCP连接所需的配 置信息发送至所述控制设备,所述配置信息用于指示所述第一 TCP连接的优先等级;
[0158] 此时,触发所述控制设备确定与所述第一 TCP连接对应的所述第一 CPU的标识, 可以具体包括步骤:触发所述控制设备根据所述配置信息确定所述第一 TCP连接的优先等 级,以便于所述控制设备根据所述第一 TCP连接的优先等级确定与所述第一 TCP连接对应 的所述第一 CPU的标识。
[0159] 进一步地,在控制模块01驱动第一处理引擎04向控制设备发送第二中断请求, 触发所述控制设备确定与所述第一 TCP连接对应的所述第一 CPU的标识之后,还可以包括 步骤:第一 DM控制器接收所述第一 CPU发送的所述第一地址信息并发送至第一处理引擎 04 ;第一处理引擎04将所述第一地址信息和所述第一 TCP连接的对应关系存储至控制模块 01中的连接信息表中,以建立所述第一地址信息与所述第一 TCP连接的对应关系。
[0160] 进一步地,当所述T0E01需要在所述第一 TCP连接上发送第二TCP报文时,所述方 法还可以包括步骤:第二DM控制器07接收所述第一 CPU发送的第二地址信息并发送至控 制模块01,所述第二地址信息用于指示待发送数据在所述内存中的存储位置;控制模块01 根据所述第二地址信息驱动第二处理引擎08从所述内存中获取所述待发送数据,并发送 至封装模块06 ;封装模块06将所述待发送数据封装成所述第二TCP报文,以使得第二处理 引擎08在所述第一 TCP连接上发送所述封装模块06生成的第二TCP报文。
[0161] 附图8示出的是本发明的提供的一种控制设备02的硬件示意图。
[0162] 该控制设备02可应用于包含多个CPU的多核应用场景,例如,SOC系统或者包含 T0E01网卡的多核服务器中。
[0163] 如图8,所述控制设备02包括CPU21、通信接口 22、控制设备存储器23以及总线 24。
[0164] 其中,CPU21、通讯接口 22、控制设备存储器234通过总线24相连接并进行通信。
[0165] CPU21,是所述控制设备02的控制中心,CPU21通过对通讯接口 22接收到的中断 请求进行中断处理,并调用控制设备存储器23中的软件或程序,执行所述控制设备02的各 项功能。
[0166] 通信接口 22,可以由光通讯接口,电通讯接口,无线通讯接口或其任意组合 实现。例如,光通讯接口可以是小封装可插拔(英文:small form-factor pluggable transceiver,缩写:SFP)通讯接口(英文transceiver),增强小封装可插拔(英文: enhanced small form-factor pluggable,缩写:SFP+)通讯接口或10吉比特小封装可插拔 (英文:l〇Gigabit small form-factor pluggable,缩写:XFP)通讯接口。电通讯接口可以 是以太网(英文:Ethernet)网络接口控制器(英文:network interface controller,缩 写:NIC)。无线通讯接口可以是无线网络接口控制器(英文:wireless network interface controller,缩写:WNIC)。接收端中可以有多个通信接口 22。
[0167] 控制设备存储器23,可用于存储软件程序或数据,CPU21通过运行存储在控制设 备存储器23的软件程序或数据,从而执行所述控制设备02的各种功能应用以及数据处理。
[0168] 具体的,在本发明的实施例中,若通讯接口 22接收到T0E01发送的第二中断请求, 通讯接口 22将所述第二中断请求发送至CPU21,CPU21接收到第二中断请求后,从N个CPU 中确定一个CPU为第一 CPU,所述第一 CPU用于处理第一 TCP连接上传输的数据,N多1 ;进 而,CPU21调用通讯接口 22向第一 CPU发送指示信息,所述指示信息用于指示所述第一 CPU 处理在所述第一 TCP连接上传输的数据。
[0169] 进一步地,CPU21从N个CPU中确定一个CPU为第一 CPU,可以具体包括以下步骤: CPU21调用通讯接口 22获取所述N个CPU的负载值;CPU21根据所述N个CPU的负载值,将 负载值最小的CPU作为所述第一 CPU。
[0170] 进一步地,在CPU21从N个CPU中确定一个CPU为第一 CPU之前,可以包括以下步 骤:通讯接口 22接收所述T0E01发送的配置信息并发送至CPU21,所述配置信息用于指示 所述第一 TCP连接的优先等级。
[0171] 此时,CPU21从N个CPU中确定一个CPU为第一CPU,可以具体包括以下步骤:CPU21 根据所述配置信息确定所述第一 TCP连接的优先等级;并调用通讯接口 22获取所述N个 CPU的负载值;若第一 TCP连接的优先等级高于阈值,CPU21则将负载值最小的CPU作为所 述第一 CPU。
[0172] 进一步地的,如图9所示,上述T0E01和控制设备02可以集成在一个多核系统300 中,该多核系统300具体包括:T0E01、控制设备02、内存03、N个CPU (该N个CPU中包括第 一 CPU)以及总线04,其中,T0E01、控制设备02、内存03与N个CPU的具体交互方法可参见 上述实施例1至3中的详细描述,故此处不再赘述。
[0173] 需要说明的是,在图9中,控制设备02中的控制设备存储器23可以不集成在控制 设备内部02,其可以作为内存03存在,即控制设备存储器23和内存03为同一个存储介质, 此时,控制设备02调用的应用程序存储于内存03中。
[0174] 本发明的实施例提供一种数据传输装置,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的负载趋于均衡。
[0175] 实施例4
[0176] 本发明的实施例提供一种Τ0Ε,如图10所示,包括:
[0177] 接收单元31,用于接收在第一 TCP连接上传输的第一 TCP报文;
[0178] 查找单元32,用于在本地存储的连接信息表中查找与所述接收单元31中的第一 TCP连接对应的第一 CPU的标识和第一地址信息,所述连接信息表中包括所述第一 TCP连接 和第一 CPU的标识的对应关系,以及所述第一 TCP连接和所述第一地址信息的对应关系,其 中,所述第一 CPU的标识用于指示处理所述第一 TCP连接上传输的报文数据的CPU,所述第 一地址信息为第一 CPU预先确定的用于指示通过所述第一 TCP连接传输的报文数据在内存 中的存储位置;
[0179] 存储单元33,用于将接收单元31中所述第一 TCP报文中的数据存储在所述查找单 元32中的第一地址信息指示的存储位置中;
[0180] 中断触发单元34,用于根据所述查找单元32中第一 CPU的标识向所述第一 CPU 发起第一中断请求,触发所述第一 CPU根据所述第一地址信息从所述内存中获取所述第一 TCP报文中的数据。
[0181] 进一步地,所述中断触发单元34,还用于向控制设备发送第二中断请求,触发所述 控制设备确定与所述第一 TCP连接对应的所述第一 CPU的标识;
[0182] 所述接收单元31,还用于获取所述第一 CPU的标识;
[0183] 所述存储单元33,还用于将所述接收单元31中第一 CPU的标识与所述第一 TCP的 连接关系存储至所述连接信息表中,以建立所述第一 TCP连接与所述第一 CPU的对应关系。
[0184] 进一步地,如图11所示,所述TOE还包括发送单元35,其中,
[0185] 所述发送单元35,用于将建立所述第一 TCP连接所需的配置信息发送至所述控制 设备,所述配置信息用于指示所述第一 TCP连接的优先等级;
[0186] 所述中断触发单元34,具体用于向控制设备发送第二中断请求,触发所述控制设 备根据所述发送单元35中的配置信息确定所述第一 TCP连接的优先等级,以便于所述控制 设备根据所述第一 TCP连接的优先等级确定与所述第一 TCP连接对应的所述第一 CPU的标 识。
[0187] 进一步地,所述接收单元31,还用于接收所述第一 CPU发送的所述第一地址信息;
[0188] 所述存储单元33,还用于将所述接收单元31中的所述第一地址信息和所述第一 TCP连接的对应关系存储至所述连接信息表中,以建立所述第一地址信息与所述第一 TCP 连接的对应关系。
[0189] 进一步地,如图12所示,所述TOE还包括封装单元36,其中,
[0190] 所述接收单元31,还用于接收所述第一 CPU发送的第二地址信息,所述第二地址 信息用于指示待发送数据在所述内存中的存储位置;并根据所述第二地址信息从所述内存 中获取所述待发送数据;
[0191] 所述封装单元36,用于将所述接收单元31中的所述待发送数据封装成所述第二 TCP报文;
[0192] 所述发送单元35,还用于在所述第一 TCP连接上发送所述封装单元36中的所述第 二TCP报文。
[0193] 本发明的实施例提供一种控制设备,如图13所示,包括:
[0194] 确定单元41,用于在接收到传输控制协议卸载引擎TOE发送的第二中断请求之 后,则从N个CPU中确定一个CPU为第一 CPU,所述第一 CPU用于处理第一传输控制协议TCP 连接上传输的数据,N多1 ;
[0195] 指示单元42,用于向所述确定单元41中确定的所述第一 CPU发送指示信息,所述 指示信息用于指示所述第一 CPU处理在所述第一 TCP连接上传输的数据。
[0196] 进一步地,如图14所示,所述CPU还包括获取单元43,其中,
[0197] 所述获取单元43,用于获取所述N个CPU的负载值;
[0198] 所述确定单元41,具体用于根据所述获取单元43中所述N个CPU的负载值,将负 载值最小的CPU作为所述第一 CPU。
[0199] 进一步地,所述获取单元43,还用于接收所述TOE发送的配置信息,所述配置信息 用于指示所述第一 TCP连接的优先等级;并获取所述N个CPU的负载值;
[0200] 所述确定单元41,具体用于若所述获取单元43中所述第一 TCP连接的优先等级高 于阈值,则将负载值最小的CPU作为所述第一 CPU。
[0201] 本发明的实施例提供一种数据传输装置,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的负载趋于均衡。
[0202] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能 模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模 块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功 能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过 程,在此不再赘述。
[0203] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以 通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或 单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元 或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所 显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的 间接耦合或通信连接,可以是电性,机械或其它的形式。
[0204] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显 示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个 网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目 的。
[0205] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单 元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0206] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用 时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上 或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式 体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机 设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各 个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储 器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光 盘等各种可以存储程序代码的介质。
[0207] 以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【主权项】
1. 一种数据传输方法,其特征在于,包括: 传输控制协议卸载引擎TOE接收在第一传输控制协议TCP连接上传输的第一 TCP报 文; 所述TOE在本地存储的连接信息表中查找与所述第一 TCP连接对应的第一 CPU的标识 和第一地址信息,所述连接信息表中包括所述第一 TCP连接和第一 CPU的标识的对应关系, 以及所述第一 TCP连接和所述第一地址信息的对应关系,其中,所述第一 CPU的标识用于指 示处理所述第一 TCP连接上传输的报文数据的CPU,所述第一地址信息为第一 CPU预先确定 的用于指示通过所述第一 TCP连接传输的报文数据在内存中的存储位置; 所述TOE将所述第一 TCP报文中的数据存储在所述第一地址信息指示的存储位置中; 所述TOE根据所述第一 CPU的标识向所述第一 CPU发起第一中断请求,触发所述第一 CHJ根据所述第一地址信息从所述内存中获取所述第一 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. 一种传输控制协议卸载引擎T0E,其特征在于,包括: 接收单元,用于接收在第一传输控制协议TCP连接上传输的第一 TCP报文; 查找单元,用于在本地存储的连接信息表中查找与所述接收单元中的第一 TCP连接对 应的第一 CPU的标识和第一地址信息,所述连接信息表中包括所述第一 TCP连接和第一 CPU 的标识的对应关系,以及所述第一 TCP连接和所述第一地址信息的对应关系,其中,所述第 一 CPU的标识用于指示处理所述第一 TCP连接上传输的报文数据的CPU,所述第一地址信息 为第一 CPU预先确定的用于指示通过所述第一 TCP连接传输的报文数据在内存中的存储位 置; 存储单元,用于将接收单元中所述第一 TCP报文中的数据存储在所述查找单元中的第 一地址信息指示的存储位置中; 中断触发单元,用于根据所述查找单元中第一 CPU的标识向所述第一 CPU发起第一中 断请求,触发所述第一 CPU根据所述第一地址信息从所述内存中获取所述第一 TCP报文中 的数据。10. 根据权利要求9所述的T0E,其特征在于, 所述中断触发单元,还用于向控制设备发送第二中断请求,触发所述控制设备确定与 所述第一 TCP连接对应的所述第一 CPU的标识; 所述接收单元,还用于获取所述第一 CPU的标识; 所述存储单元,还用于将所述接收单元中第一 CPU的标识与所述第一 TCP的连接关系 存储至所述连接信息表中,以建立所述第一 TCP连接与所述第一 CPU的对应关系。11. 根据权利要求10所述的T0E,其特征在于,所述TOE还包括发送单元,其中, 所述发送单元,用于将建立所述第一 TCP连接所需的配置信息发送至所述控制设备, 所述配置信息用于指示所述第一 TCP连接的优先等级; 所述中断触发单元,具体用于向控制设备发送第二中断请求,触发所述控制设备根据 所述配置信息确定所述第一 TCP连接的优先等级,以便于所述控制设备根据所述第一 TCP 连接的优先等级确定与所述第一 TCP连接对应的所述第一 CPU的标识。12. 根据权利要求10所述的TOE,其特征在于, 所述接收单元,还用于接收所述第一 CPU发送的所述第一地址信息; 所述存储单元,还用于将所述接收单元中的所述第一地址信息和所述第一 TCP连接的 对应关系存储至所述连接信息表中,以建立所述第一地址信息与所述第一 TCP连接的对应 关系。13. 根据权利要求9至12中任一项所述的TOE,其特征在于,所述TOE还包括封装单元, 其中, 所述接收单元,还用于接收所述第一 CPU发送的第二地址信息,所述第二地址信息用 于指示待发送数据在所述内存中的存储位置;并根据所述第二地址信息从所述内存中获取 所述待发送数据; 所述封装单元,用于将所述接收单元中的所述待发送数据封装成所述第二TCP报文; 所述发送单元,还用于在所述第一 TCP连接上发送所述封装单元中的所述第二TCP报 文。14. 一种控制设备,其特征在于,包括: 确定单元,用于在接收到传输控制协议卸载引擎TOE发送的第二中断请求之后,贝lj从N 个CPU中确定一个CPU为第一 CPU,所述第一 CPU用于处理第一传输控制协议TCP连接上传 输的数据,N多1 ; 指示单元,用于向所述确定单元中确定的所述第一 CPU发送指示信息,所述指示信息 用于指示所述第一 CPU处理在所述第一 TCP连接上传输的数据。15. 根据权利要求14所述的控制设备,其特征在于,所述CPU还包括获取单元,其中, 所述获取单元,用于获取所述N个CPU的负载值; 所述确定单元,具体用于根据所述获取单元中所述N个CPU的负载值,将负载值最小的 CHJ作为所述第一 CPU。16. 根据权利要求14所述的控制设备,其特征在于, 所述获取单元,还用于接收所述TOE发送的配置信息,所述配置信息用于指示所述第 一 TCP连接的优先等级;并获取所述N个CPU的负载值; 所述确定单元,具体用于若所述获取单元中所述第一 TCP连接的优先等级高于阈值, 则将负载值最小的CPU作为所述第一 CPU。
【文档编号】H04L12/803GK106034084SQ201510115405
【公开日】2016年10月19日
【申请日】2015年3月16日
【发明人】祝磊, 张振兴, 李东皤
【申请人】华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1