CN103312720B - 一种数据传输方法、设备及*** - Google Patents
一种数据传输方法、设备及*** Download PDFInfo
- Publication number
- CN103312720B CN103312720B CN201310271606.4A CN201310271606A CN103312720B CN 103312720 B CN103312720 B CN 103312720B CN 201310271606 A CN201310271606 A CN 201310271606A CN 103312720 B CN103312720 B CN 103312720B
- Authority
- CN
- China
- Prior art keywords
- transmission
- pcie
- address
- data
- transmitted
- 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
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据传输方法、设备及***,将内核旁路技术应用在IPoPCIe中的数据传输方案中,源节点发送的数据包可以不经过传统的TCP/IP协议栈,而直接通过内核旁路到达PCIe?Switch并进入目的节点,由于数据包在两个节点间传输时无需经过多步协议处理流程和各层间的数据拷贝,可有效减少通信时延,提高通信效率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据传输方法、设备及***。
背景技术
PCIe(PeripheralComponentInterconnectExpress,部件快速互连局部总线)是在节点(如服务器主机)内部用于连接CPU和外设的数据传输总线,其路由机制为:PCIeSwitch(PCIe交换机)通过读取地址信息来寻址,以达到传输数据包的目的,即:CPU初始化PCIe外设时会给外设分配地址信息,并通过地址信息访问外设,而PCIe交换机则根据地址信息进行数据包的路由。
由于PCIe的路由机制要求在一个节点内,分配给各个外设的地址信息是不能重复的,因此,如果将PCIe直接应用到至少两台节点之间的数据传输场景时,会因为节点之间的地址域相互独立,出现无法保证节点之间的地址信息不重复的问题。对此,可在PCIe中引入NTB(Non-TransparentBridge,非透明桥)来解决至少两台节点之间通过PCIe直接互联的问题。
NTB技术是根据预先设置的地址转换规则,把源节点发往目的节点的数据包的地址信息进行转换,确保转换后的地址信息与目的节点内的地址信息不重复,从而实现至少两台节点之间的PCIe数据传输。
目前,节点之间主流的通信协议是TCP/IP(TransmissionControlProtocol/InternetProtocol,传输控制协议/互联网络协议),为了在使用PCIe进行多主机节点互联的网络上更好地兼容TCP/IP,业界提出了IPoPCIe(TCP/IPprotocoloverPCIe,在PCIe网络上兼容TCP/IP协议)这个概念,即:将TCP/IP协议运行在PCIe网络架构上,其示意图如图1所示:
在至少两个节点之间进行PCIe通信时,每个节点内部的PCIe驱动模拟出一个称之为vNIC(VirtualNetworkInterfaceCard,虚拟网络设备接口)的网络设备,对于外界用户而言,vNIC和普通的以太网设备没有差别,也具有配置ip地址、mac地址、mtu等功能,但vNIC的驱动(PCIevNICdriver)可以作为链路层接口接收上层应用(即图1中APP)通过TCP/IP堆栈发送的数据包,以及将其他节点传输至的数据包通过TCP/IP堆栈发送至上层应用。由于上层应用向下的接口是TCP/IP堆栈,对于上层应用而言,并不关心链路层的内容,因此,一个节点内的上层应用可透明地使用IPoPCIe向另一个节点内的上层应用传输数据包。
在至少两个节点之间使用IPoPCIe进行数据包传输时,以使用socket(套接字)技术为例,常规的传输流程为:
源节点内的上层应用发出的数据包经过TCP/IP层到链路层,由PCIevNICdriver将数据包通过PCIeSwitch传输至目的节点,再经过与源节点的逆过程最终进入目的节点的上层应用,数据包在各层间传输时是通过拷贝方式传输的。
由于数据包在两个节点间的传输要经过上述多步协议处理流程和各层间的数据拷贝,因此,节点间通过IPoPCIe传输数据包时会造成通信延时的问题以及数据包在节点间传输效率低的问题。
发明内容
本发明实施例提供了一种数据传输方法、设备及***,用以解决现有技术中存在的节点间通过IPoPCIe传输数据包时有通信延时和输效率低的问题。
第一方面,提供一种数据传输方法,所述方法包括:
源节点确定待传输数据包在部件快速互连局部总线PCIe中传输时所需的传输信息,所述传输信息包括发送窗地址和接收窗地址;
所述源节点根据所述传输信息将所述待传输数据包通过PCIe交换机传输至目的节点。
结合第一方面,在第一种可能的实现方式中,所述方法还包括:
所述源节点根据预设的配置文件,确定所述待传输数据包的传输模式是传输控制协议/互联网络协议TCP/IP传输模式还是内核旁路Kernelbypass传输模式;
在确定所述待传输数据包的传输模式是Kernelbypass传输模式时,确定所述待传输数据包在PCIe中传输时所需的所述传输信息。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,
所述源节点根据所述传输信息将所述待传输数据包传输至目的节点,具体包括:
所述源节点将所述待传输数据包存储至自身在内核空间内的缓冲区中;
所述源节点将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址;
所述源节点将缓冲区中存储的所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,并存储在所述目的节点在内核空间内的缓冲区中。
结合第一方面或第一方面的第一种可能的实现方式,在第三种可能的实现方式中,
所述源节点根据所述传输信息将所述待传输数据包传输至目的节点,具体包括:
所述源节点将生成所述待传输数据包的应用程序的虚拟地址转换为物理地址并映射到PCIe全局空间,以及将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址;
所述源节点从所述应用程序映射到PCIe全局空间的物理地址处获取所述待传输数据包,并将所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,并存储在所述目的节点在内核空间内的缓冲区中,实现在PCIe全局空间内的直接内存访问DMA传输。
第二方面,提供一种节点设备,所述节点设备包括:
套接字管理模块,用于确定待传输数据包在PCIe中传输时所需的传输信息,所述传输信息包括发送窗地址和接收窗地址;
PCIe传输模块,用于根据所述套接字管理模块确定的所述传输信息,将所述待传输数据包通过PCIe交换机传输至其他节点。
结合第二方面,在第一种可能的实现方式中,还包括:
模式选择模块,用于根据预设的配置文件,确定所述待传输数据包的传输模式是TCP/IP传输模式还是Kernelbypass传输模式,在确定所述待传输数据包的传输模式是Kernelbypass传输模式时,触发所述套接字管理模块。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,
所述PCIe传输模块,具体用于将所述待传输数据包存储至自身的内核空间内的缓冲区中,以及将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,并将缓冲区中存储的所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,存储在所述其他节点在内核空间内的缓冲区中。
结合第二方面或第二方面的第一种可能的实现方式,在第三种可能的实现方式中,
所述PCIe传输模块,具体用于将生成所述待传输数据包的应用程序的虚拟地址转换为物理地址并映射到PCIe全局空间、将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,以及,从所述应用程序映射到PCIe全局空间的物理地址处获取所述待传输数据包,并将所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,存储在所述其他节点在内核空间内的缓冲区中,实现在PCIe全局空间内的直接内存访问DMA传输。
第三方面,提供一种数据传输***,所述***包括:
源节点,用于确定待传输数据包在PCIe中传输时所需的传输信息,以及根据所述传输信息将所述待传输数据包通过PCIe交换机传输至目的节点,所述传输信息包括发送窗地址和接收窗地址;
所述目的节点,用于通过PCIe交换机接收来自所述源节点的数据包。
结合第三方面,在第一种可能的实现方式中,所述源节点,还用于根据预设的配置文件,确定所述待传输数据包的传输模式是TCP/IP传输模式还是Kernelbypass传输模式,在确定所述待传输数据包的传输模式是Kernelbypass传输模式时,确定待传输数据包在PCIe中传输时所需的所述传输信息。
结合第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,
所述源节点,具体用于将所述待传输数据包存储至自身的内核空间内的缓冲区中,以及将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,并将缓冲区中存储的所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,并存储在所述目的节点在内核空间内的缓冲区中。
结合第三方面或第三方面的第一种可能的实现方式,在第三种可能的实现方式中,
所述源节点,具体用于将生成所述待传输数据包的应用程序的虚拟地址转换为物理地址并映射到PCIe全局空间、将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,以及,从所述应用程序映射到PCIe全局空间的物理地址处获取所述待传输数据包,并将所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,存储在所述目的节点在内核空间内的缓冲区中,实现在PCIe全局空间内的直接内存访问DMA传输。
本发明实施例将内核旁路技术应用在IPoPCIe中的数据传输方案中,源节点发送的数据包可以不经过传统的TCP/IP协议栈,而直接通过内核旁路到达PCIeSwitch并进入目的节点,由于数据包在两个节点间传输时无需经过多步协议处理流程和各层间的数据拷贝,可有效减少通信时延,提高通信效率。
附图说明
图1为背景技术中IPoPCIe的架构示意图;
图2为本发明实施例一中数据传输方法步骤示意图;
图3(a)和图3(b)为本发明实施例二中数据传输***的结构示意图;
图4为本发明实施例二中数据传输***的工作步骤示意图;
图5为本发明实施例二中数据包的B-Copy传输示意图;
图6为本发明实施例二中数据包的Z-Copy传输示意图;
图7为本发明实施例三中节点设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了减少由于数据包在至少两个节点间的传输要经过多步协议处理流程和各层间的数据拷贝,导致节点间通过IPoPCIe传输数据包时会造成通信延时以及数据包在节点间的传输效率低的问题,本发明实施例提出一种将Kernelbypass(内核旁路)技术应用在IPoPCIe中的数据传输方案,在本实施例的方案中,源节点发送的数据包可以不经过传统的TCP/IP协议栈,而直接通过Kernelbypass到达PCIeSwitch并进入目的节点,由于数据包在两个节点间传输时无需经过多步协议处理流程和各层间的数据拷贝,可有效减少通信时延,提高通信效率。
下面通过具体实施例对本发明方案进行详细说明。
实施例一:
本发明实施例描述一种数据传输方法,如图2所示,包括以下步骤:
步骤101:源节点根据预设的配置文件,确定待传输数据包的传输模式是TCP/IP传输模式还是Kernelbypass传输模式,若是TCP/IP传输模式,则按照现有方案进行数据包的传输;若是Kernelbypass传输模式,则执行步骤102。
本步骤101是实现本发明目的的优选步骤,在本实施例的方案,也不限于源节点直接采用Kernelbypass传输模式进行数据包的传输。
步骤102:源节点确定待传输数据包在PCIe中传输时所需的传输信息。
本步骤102中所涉及的传输信息是指:源节点中发送待传输数据的地址信息和目的节点中接收待传输数据的地址信息,如发送窗地址信息和接收窗地址信息。
步骤103:源节点根据所述传输信息将所述待传输数据包通过PCIeSwitch传输至目的节点,实现数据包的传输。
实施例二:
本实施例一所描述的方法可通过图3(a)所示的数据传输***来实现,所述数据传输***在图1所示的IPoPCIe的基础上,在各节点内新增模式选择模块11和内核旁路通信模块12。本实施例二以图3(a)所示的数据传输***为例,来对实施例一的方案做进一步详细的描述。
图3(a)所示的数据传输***的工作步骤示意图如图4所示,以节点A作为源节点,节点B作为目的节点,节点A向节点B发送数据包为例,数据传输过程包括以下步骤:
步骤201:节点A内的socket应用程序生成待传输数据包。
所述socket应用程序为节点A中上层应用(即图2中APP)中的应用程序。
socket应用程序生成socket数据包时,同时还为该socket数据包创建相应的套接字状态信息,所述套接字状态信息表示传输该socket数据包的传输要求。
例如:响应时限信息,表示该socket数据包传输至目的节点后需返回响应消息的时限。
再例如:数据包大小信息,表示该socket数据包的大小,用于确定在发送以及接收该socket数据包时需为该socket数据包申请的缓冲区大小。
节点A中的上层应用可包含多个socket应用程序,每一个socket应用程序所生成的socket数据包都有其相应的套接字状态信息。
步骤202:节点A内的模式选择模块11受socket应用程序的调用。
在本步骤102中,节点A内的socket应用程序生成待传输数据包后,可调用C库中的socket接口,触发模式选择模块11。
步骤203:节点A内的模式选择模块11根据预设的配置文件,确定所述待传输数据包的传输模式是TCP/IP传输模式还是Kernelbypass传输模式,若是TCP/IP传输模式,则执行步骤204,若是Kernelbypass传输模式,则执行步骤205。
在本步骤203中,模式选择模块11可预设一个配置文件,在所述配置文件中记录每个传输模式的选择条件。
例如:在配置文件中记录数据包的时效要求和传输模式的对应关系,时效性高的数据包配置Kernelbypass传输模式,时效性低的数据包配置TCP/IP传输模式。即:将数据包的时效性划分为多个档次,时效性高于设定档次(含所述设定档次)的数据包配置Kernelbypass传输模式,时效性低于所述设定档次(不含所述设定档次)的数据包配置TCP/IP传输模式。
当模式选择模块11受socket应用程序模块的调用后,根据待传输数据包的时效要求,为该待传输数据包选择合适的传输模式,实现TCP/IP传输模式和Kernelbypass传输模式中的模式切换。
步骤204:节点A将所述待传输数据包经由TCP/IP协议栈传输至节点B,结束本次数据传输过程。
在本步骤204中,待传输socket数据包从TCP/IP的NETCORE(网络核心)到链路层的PCIevNICdriver,最后由PCIevNICdriver将待传输socket数据包通过PCIeSwitch传输至节点B,完成本次数据传输过程。
步骤205:节点A内的内核旁路通信模块12确定待传输数据包在PCIe中传输时所需的传输信息。
如图3(b)所示,所述内核旁路通信模块12中可以包括套接字管理模块21,套接字管理模块21具有执行本步骤205的功能。
优选地,套接字管理模块21还可用于维护socket应用程序创建的套接字状态信息。由于节点A中的上层应用可包含多个socket应用程序,每一个socket应用程序所生成的socket数据包都有其相应的套接字状态信息,因此,套接字管理模块21可通过一个数据结构来维护每个socket应用程序相应的套接字状态信息,该数据结构可称之为套接字结构体。为了提高套接字管理模块21在套接字结构体中查找套接字状态信息的速率,可以列表形式来维护套接字结构体。
模式选择模块11在确定待传输数据包的传输模式为Kernelbypass传输模式时,触发所述套接字管理模块21,套接字管理模块21受到模式选择模块11的触发后,可确定待传输数据包的套接字结构体以及待传输数据包在PCIe中传输时所需的传输信息。所述传输信息包括但不限于:发送窗地址信息和接收窗地址信息,这里发送窗地址信息和接收窗地址信息是指发送窗和接收窗的逻辑地址。
步骤206:节点A内的内核旁路通信模块12根据所述传输信息将所述待传输数据包通过PCIeSwitch传输至节点B,结束本次数据传输过程。
所述内核旁路通信模块12还包括:私有传输接口22和PCIe传输模块23,其中:
在套接字管理模块21确定在PCIe中传输时所需的传输信息后,可调用私有传输接口22。所述私有传输接口22是实现逻辑通信功能的私有接口,通过调用底层的PCIe传输模块23来实现数据包在PCIe中的传输。
PCIe传输模块23受到私有传输接口22的调用后,根据待传输数据包在PCIe中传输时所需的传输信息,将所述待传输数据包通过PCIeSwitch传输至节点B。优选地,PCIe传输模块23还可以根据待传输数据包的套接字状态信息来进行数据包的传输。
具体地,在本步骤206中,包括但不限于以下两种方式来实现数据包的传输:
方式一、在内核旁路中实现数据包的B-Copy(BufferCopy,缓冲拷贝)传输。
如图5所示,为一次数据包的B-Copy传输过程示意图,包括以下内容:
第一步、PCIe传输模块23受到私有传输接口22的调用后,调用数据包发送函数,开始数据包的发送过程。
第二步、PCIe传输模块23可从套接字管理模块21维护的套接字状态信息中读取待传输数据包的套接字状态信息;同时,还在内核空间内开辟一段缓冲区,将待传输数据包存储至所述缓冲区内。
若所述待传输数据包的套接字状态信息中包含数据包大小信息,则可根据所述数据包大小信息开辟缓冲区,使得开辟的缓冲区有足够空间来存储所述待传输数据包。
在本步骤中开辟的缓冲区实际上是节点A的缓冲区。
第三步、PCIe传输模块23将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址。
由于在步骤205中确定的发送窗地址信息和接收窗地址信息是逻辑地址信息,因此,在使用发送窗和接收窗进行数据包传输之前,需要将其逻辑地址转换为在PCIe全局空间内的物理地址,具体转换方式为:
socket应用程序在创建socket数据包时,同时还为该socket数据包创建相应的套接字状态信息,在所述套接字状态信息中可包含逻辑地址和物理地址之间的映射关系,PCIe传输模块23可从待传输数据包的套接字状态信息中获取所述映射关系,并将从套接字管理模块21处获取的发送窗地址信息和接收窗地址信息转换为在PCIe全局空间内的物理地址。
第四步、PCIe传输模块23将节点A的缓冲区中存储的所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,并存储在节点B在内核空间内的缓冲区中。
在本步骤中,PCIe传输模块23依次将节点A的缓冲区中存储的所述待传输数据包从发送窗的物理地址向接收窗的物理地址拷贝,数据包经由接收窗物理地址存储至节点B在内核空间内的缓冲区中。当待传输数据包传输完毕后,PCIe传输模块23可通过中断消息通知节点B,完成本次数据传输过程。之后,节点B在接收到所述中断消息后,确定数据包已缓存在节点B的缓冲区中,可在需要的时候从节点B的缓冲区中读取接收到的数据包,并拷贝至节点B的上层应用中。
通过方式一所描述的B-Copy传输过程,通过在缓冲区中存储并传输待传输数据包,可减少映射的开销,对于小数据包来说是个比较高效的传输方式。
方式二、在内核旁路中实现数据包的Z-Copy(ZeorCopy,零拷贝)传输,图3(a)和图3(b)所示的***示意图即为Z-Copy传输时的***示意图。
如图6所示,为一次数据包的Z-Copy传输过程示意图,包括以下内容:
第一步、PCIe传输模块23受到私有传输接口22的调用后,调用数据包发送函数,开始数据包的发送过程。
第二步、PCIe传输模块23可从套接字管理模块21维护的套接字状态信息中读取待传输数据包的套接字状态信息;同时,还获取生成所述待传输数据包的socket应用程序的虚拟地址。
在本步骤中,可从所述待传输数据包的套接字状态信息中获取生成所述待传输数据包的socket应用程序的虚拟地址。
第三步、PCIe传输模块23将socket应用程序的虚拟地址转换为物理地址并映射到PCIe全局空间,以及将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址。
在本步骤中,在套接字状态信息中可包含逻辑地址和物理地址之间的映射关系,PCIe传输模块23可从待传输数据包的套接字状态信息中获取所述映射关系后,将socket应用程序的虚拟地址、发送窗虚拟地址和接收窗虚拟地址都转换为PCIe全局空间内的物理地址。
第四步、PCIe传输模块23从所述socket应用程序映射到PCIe全局空间的物理地址处获取待传输数据包,并所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,并存储在节点B在内核空间内的缓冲区中,实现在PCIe全局空间内的DMA(Directmemoryaccess,直接内存访问)传输。
在本步骤中,PCIe传输模块23可通过调用NTB中的DMA控制器实现在PCIe全局空间内的DMA传输。
当DMA传输完毕后,PCIe传输模块23可通过中断消息通知节点B,完成本次数据传输过程。之后,节点B在接收到所述中断消息后,确定数据包已缓存在节点B的缓冲区中,可在需要的时候从节点B的缓冲区中读取接收到的数据包,并拷贝至节点B的上层应用中。
通过方式二所描述的Z-Copy传输过程,待传输数据包无需拷贝,而是直接通过DMA传输方式,从生成待传输数据包的socket应用程序处直接传输至节点B,可有效减少数据包传输过程的时延。
需要说明的是,在本实施例二的方案中,节点A内的模块划分方式是实现方案的一种可选方式,本实施例二也不限于其他模块划分方式来实现本实施例的方案;且节点A除了图3(a)和图3(b)中所描述的模块划分方式外,同时还具有接收其他节点传输的数据包,并拷贝至本地的上层应用中的功能模块。
实施例三:
本发明实施例三还描述了一种节点设备,如图7所示,所述节点设备包括处理器31和发射器32,其中:处理器31用于确定待传输数据包在PCIe中传输时所需的传输信息;发射器32用于根据所述处理器31确定的所述传输信息,将所述待传输数据包通过PCIe交换机传输至其他节点。
所述节点设备还包括选择器33,用于根据预设的配置文件,确定所述待传输数据包的传输模式是TCP/IP传输模式还是Kernelbypass传输模式,在确定所述待传输数据包的传输模式是Kernelbypass传输模式时,触发所述处理器31。
所述传输信息包括发送窗地址和接收窗地址。
所述发射器32传输数据包的具体方式包括但不限于以下两种:
方式一:
所述发射器32具体用于将所述待传输数据包存储至自身的内核空间内的缓冲区中,以及将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,并将缓冲区中存储的所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,存储在所述其他节点在内核空间内的缓冲区中。
方式二:
所述发射器32具体用于将生成所述待传输数据包的应用程序的虚拟地址转换为物理地址并映射到PCIe全局空间、将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,以及,从所述应用程序映射到PCIe全局空间的物理地址处获取所述待传输数据包,并将所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,存储在所述其他节点在内核空间内的缓冲区中,实现在PCIe全局空间内的直接内存访问DMA传输。
通过本发明实施例的方案,在基于IPoPCIe的架构下传输socket数据包时,通过内核旁路技术进行数据包的传输,绕开了TCP/IP层和链路层的协议处理过程和数据拷贝操作,可将CPU为协议处理过程和数据拷贝操作所分配的***资源释放出来,降低CPU的负载;同时,由于通信时延是由传输包传输时延和协议处理时延构成,因此,绕开TCP/IP层和链路层的协议处理过程可减少通信时延,提高传输效率;由于减少了CPU开销和降低了通信时延,因此,还可进一步提高传输吞吐量。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitorymedia),如调制的数据信号和载波。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (6)
1.一种数据传输方法,其特征在于,所述方法包括:
源节点确定待传输数据包在部件快速互连局部总线PCIe中传输时所需的传输信息,所述传输信息包括发送窗地址和接收窗地址;
所述源节点根据所述传输信息将所述待传输数据包通过PCIe交换机传输至目的节点,具体包括:
所述源节点将所述待传输数据包存储至自身在内核空间内的缓冲区中;所述源节点将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址;所述源节点将缓冲区中存储的所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,并存储在所述目的节点在内核空间内的缓冲区中;或者
所述源节点将生成所述待传输数据包的应用程序的虚拟地址转换为物理地址并映射到PCIe全局空间,以及将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址;所述源节点从所述应用程序映射到PCIe全局空间的物理地址处获取所述待传输数据包,并将所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,并存储在所述目的节点在内核空间内的缓冲区中,实现在PCIe全局空间内的直接内存访问DMA传输。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述源节点根据预设的配置文件,确定所述待传输数据包的传输模式是传输控制协议/互联网络协议TCP/IP传输模式还是内核旁路Kernelbypass传输模式;
在确定所述待传输数据包的传输模式是Kernelbypass传输模式时,确定所述待传输数据包在PCIe中传输时所需的所述传输信息。
3.一种节点设备,其特征在于,所述节点设备包括:
套接字管理模块,用于确定待传输数据包在PCIe中传输时所需的传输信息,所述传输信息包括发送窗地址和接收窗地址;
PCIe传输模块,用于根据所述套接字管理模块确定的所述传输信息,将所述待传输数据包通过PCIe交换机传输至其他节点;
其中,所述PCIe传输模块,具体用于将所述待传输数据包存储至自身的内核空间内的缓冲区中,以及将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,并将缓冲区中存储的所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,存储在所述其他节点在内核空间内的缓冲区中;或者
所述PCIe传输模块,具体用于将生成所述待传输数据包的应用程序的虚拟地址转换为物理地址并映射到PCIe全局空间、将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,以及,从所述应用程序映射到PCIe全局空间的物理地址处获取所述待传输数据包,并将所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,存储在所述其他节点在内核空间内的缓冲区中,实现在PCIe全局空间内的直接内存访问DMA传输。
4.如权利要求3所述的节点设备,其特征在于,还包括:
模式选择模块,用于根据预设的配置文件,确定所述待传输数据包的传输模式是TCP/IP传输模式还是Kernelbypass传输模式,在确定所述待传输数据包的传输模式是Kernelbypass传输模式时,触发所述套接字管理模块。
5.一种数据传输***,其特征在于,所述***包括:
源节点,用于确定待传输数据包在PCIe中传输时所需的传输信息,以及根据所述传输信息将所述待传输数据包通过PCIe交换机传输至目的节点,所述传输信息包括发送窗地址和接收窗地址;
所述目的节点,用于通过PCIe交换机接收来自所述源节点的数据包;
其中,所述源节点,具体用于将所述待传输数据包存储至自身的内核空间内的缓冲区中,以及将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,并将缓冲区中存储的所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,并存储在所述目的节点在内核空间内的缓冲区中;或者
所述源节点,具体用于将生成所述待传输数据包的应用程序的虚拟地址转换为物理地址并映射到PCIe全局空间、将所述发送窗地址和接收窗地址转换为在PCIe全局空间内的物理地址,以及,从所述应用程序映射到PCIe全局空间的物理地址处获取所述待传输数据包,并将所述待传输数据包从发送窗的物理地址传输至接收窗的物理地址,存储在所述目的节点在内核空间内的缓冲区中,实现在PCIe全局空间内的直接内存访问DMA传输。
6.如权利要求5所述的***,其特征在于,
所述源节点,还用于根据预设的配置文件,确定所述待传输数据包的传输模式是TCP/IP传输模式还是Kernelbypass传输模式,在确定所述待传输数据包的传输模式是Kernelbypass传输模式时,确定待传输数据包在PCIe中传输时所需的所述传输信息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310271606.4A CN103312720B (zh) | 2013-07-01 | 2013-07-01 | 一种数据传输方法、设备及*** |
PCT/CN2014/072209 WO2015000302A1 (zh) | 2013-07-01 | 2014-02-19 | 一种数据传输方法、设备及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310271606.4A CN103312720B (zh) | 2013-07-01 | 2013-07-01 | 一种数据传输方法、设备及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103312720A CN103312720A (zh) | 2013-09-18 |
CN103312720B true CN103312720B (zh) | 2016-05-25 |
Family
ID=49137504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310271606.4A Active CN103312720B (zh) | 2013-07-01 | 2013-07-01 | 一种数据传输方法、设备及*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103312720B (zh) |
WO (1) | WO2015000302A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103312720B (zh) * | 2013-07-01 | 2016-05-25 | 华为技术有限公司 | 一种数据传输方法、设备及*** |
US9672167B2 (en) | 2013-07-22 | 2017-06-06 | Futurewei Technologies, Inc. | Resource management for peripheral component interconnect-express domains |
CN103905453A (zh) * | 2014-04-04 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 一种基于地址映射多路复用的通信模型及方法 |
CN105760319A (zh) * | 2014-12-15 | 2016-07-13 | 中兴通讯股份有限公司 | 数据发送成功的确认方法及装置 |
EP3057275B1 (de) * | 2015-02-10 | 2020-08-05 | TTTech Computertechnik AG | Erweiterte verteilereinheit |
CN104965677B (zh) * | 2015-06-26 | 2018-04-13 | 北京百度网讯科技有限公司 | 存储*** |
CN105681018B (zh) * | 2016-01-14 | 2019-01-15 | 深圳市紫光同创电子有限公司 | 数据发送、接收方法和装置及pcs发送和接收设备 |
CN105721356B (zh) * | 2016-02-03 | 2019-05-10 | 华为技术有限公司 | 存储协议头的方法和网络设备 |
US10348600B2 (en) | 2016-02-09 | 2019-07-09 | Flowtune, Inc. | Controlling flow rates of traffic among endpoints in a network |
WO2017156362A1 (en) | 2016-03-11 | 2017-09-14 | President And Fellows Of Harvard College | Modulating t cell survival by targeting the one-carbon metabolic pathway |
CN111656336B (zh) * | 2018-06-30 | 2022-01-14 | 华为技术有限公司 | 一种pcie发送、接收方法及装置、设备和*** |
CN111314311A (zh) * | 2020-01-19 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种提高交换机性能的方法、***、设备及介质 |
CN111581139B (zh) * | 2020-05-06 | 2022-05-17 | 浙江宇视科技有限公司 | PCIe设备的兼容处理方法、装置、设备及存储介质 |
CN113347017B (zh) * | 2021-04-09 | 2023-07-21 | 中科创达软件股份有限公司 | 一种网络通信的方法、装置、网络节点设备及混合网络 |
CN116010296A (zh) * | 2021-10-21 | 2023-04-25 | 华为技术有限公司 | 一种处理请求的方法、装置及*** |
CN117591462A (zh) * | 2024-01-19 | 2024-02-23 | 成都大征创智科技有限公司 | 一种数字化处理机中基于pcie协议的外设连接方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102497432A (zh) * | 2011-12-13 | 2012-06-13 | 华为技术有限公司 | 一种多路径访问i/o设备的方法、i/o多路径管理器及*** |
CN102821082A (zh) * | 2011-06-10 | 2012-12-12 | 成都市华为赛门铁克科技有限公司 | 一种数据传输方法、装置和*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070297334A1 (en) * | 2006-06-21 | 2007-12-27 | Fong Pong | Method and system for network protocol offloading |
CN102288877B (zh) * | 2011-08-01 | 2014-05-14 | 中煤科工集团重庆研究院 | 基于pci-e技术的矿用电缆网在线故障定位*** |
CN103312720B (zh) * | 2013-07-01 | 2016-05-25 | 华为技术有限公司 | 一种数据传输方法、设备及*** |
-
2013
- 2013-07-01 CN CN201310271606.4A patent/CN103312720B/zh active Active
-
2014
- 2014-02-19 WO PCT/CN2014/072209 patent/WO2015000302A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102821082A (zh) * | 2011-06-10 | 2012-12-12 | 成都市华为赛门铁克科技有限公司 | 一种数据传输方法、装置和*** |
CN102497432A (zh) * | 2011-12-13 | 2012-06-13 | 华为技术有限公司 | 一种多路径访问i/o设备的方法、i/o多路径管理器及*** |
Also Published As
Publication number | Publication date |
---|---|
CN103312720A (zh) | 2013-09-18 |
WO2015000302A1 (zh) | 2015-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103312720B (zh) | 一种数据传输方法、设备及*** | |
KR100890134B1 (ko) | 광대역 네트워크용 컴퓨터 구조를 위한 메모리 보호시스템 및 방법 | |
US8972630B1 (en) | Transactional memory that supports a put with low priority ring command | |
CN100435530C (zh) | 一种多机服务器***中双向负载均衡机制的实现方法 | |
US20070286194A1 (en) | Method and Device for Processing Data Packets | |
CN102088398B (zh) | Web并发事件处理方法及装置 | |
CA2241994A1 (en) | System and method for efficient remote disk i/o | |
JP2019517168A (ja) | 物理ネットワークと仮想ネットワークの間の相互接続 | |
CN105874758B (zh) | 内存访问方法、交换机及多处理器*** | |
US11693690B2 (en) | Method of completing a programmable atomic transaction by ensuring memory locks are cleared | |
JP2016529575A (ja) | ハードディスクおよびデータ処理方法 | |
CN107066340A (zh) | 一种基于linux的无中断线速收包、发包方法及设备 | |
US11650884B2 (en) | I/O to unpinned memory supporting memory overcommit and live migration of virtual machines | |
US10601723B2 (en) | Bandwidth matched scheduler | |
KR20160037792A (ko) | 고 대역폭 피어-투-피어 스위치드 키-밸류 캐싱 | |
CN104468855B (zh) | 地址解析协议arp报文的处理方法和装置 | |
CN106685860A (zh) | 网络虚拟化方法及设备 | |
CN104102550A (zh) | 一种多主机进程间通信的方法 | |
CN106372013B (zh) | 远程内存访问方法、装置和*** | |
CN106713462A (zh) | 一种网络数据包处理方法和装置 | |
CN105786733B (zh) | 一种写入tcam条目的方法及装置 | |
US9716657B1 (en) | TCP connection resiliency in multipath networks | |
WO2016197607A1 (zh) | 一种实现路由查找的方法及装置 | |
WO2013139363A1 (en) | Memory architecture determining the number of replicas stored in memory banks or devices according to a packet size | |
CN115643205B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |