CN109391522A - 一种基于rdma的网络流量确定方法及装置 - Google Patents
一种基于rdma的网络流量确定方法及装置 Download PDFInfo
- Publication number
- CN109391522A CN109391522A CN201710693896.XA CN201710693896A CN109391522A CN 109391522 A CN109391522 A CN 109391522A CN 201710693896 A CN201710693896 A CN 201710693896A CN 109391522 A CN109391522 A CN 109391522A
- Authority
- CN
- China
- Prior art keywords
- packet
- tail
- data
- data packet
- analysis server
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/302—Route determination based on requested QoS
- H04L45/306—Route determination based on the nature of the carried application
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0888—Throughput
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- 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
- H04L49/355—Application aware switches, e.g. for HTTP
Abstract
一种基于RDMA的网络流量确定方法及装置。转发设备接收第一终端设备的网卡针对一个数据块划分得到的多个数据包中的一个后,判断所述数据包是否为所述多个数据包中的目标数据包,若是则复制所述数据包,将复制得到的数据包发送给分析服务器,并将所述数据包转发给第二终端设备;否则不执行复制所述数据包的处理,将所述数据包转发给所述第二终端设备。这样可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。本发明实施例用以解决现有技术中分析服务器对终端设备之间的基于RDMA的网络流量进行分析时导致的分析服务器的存储容量被大量占用,转发设备和分析服务器之间的传输资源被浪费的问题。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种基于远程直接数据存取(remote directmemory access,RDMA)的网络流量确定方法及装置。
背景技术
RDMA技术是通过网络将数据从一个终端设备的存储器直接快速移动到远程的另一个终端的存储器中,以消除对处理器的性能的影响的技术。RDMA的主要过程是:第一终端设备通过自身的网卡直接将自身存储器中的数据发送给网络中的转发设备,所述转发设备将所述数据转发给第二终端设备,所述第二终端设备的网卡直接将接收的数据存储到所述第二终端设备的存储器中,这样无需两个终端设备的处理器参与数据存取过程,以减少对终端设备的处理器性能的影响。在上述过程中,所述转发设备在将接收的数据转发给所述第二终端设备的同时,也会将所述数据复制并发送给分析服务器,以使所述分析服务器根据所述数据确定网络流量,以便网络管理员根据所述分析服务器确定的网络流量进行后续网络管理。
通常情况下,第一终端设备将待传输的数据块划分成多个数据包(packet)进行传输。因此,目前通常采用如下方法确定网络流量:转发设备将接收到的多个数据包均复制并发送给分析服务器;所述分析服务器在转发设备发送的多个数据包中确定归属于同一数据块的所有数据包,并将确定的所有数据包的大小总和作为对应该同一数据块的网络流量。
目前,越来越多的终端设备之间基于RDMA传输数据,进而转发设备复制并发送大量的数据包到分析服务器,从而导致对分析服务器的存储容量的大量占用,并且浪费转发设备和分析服务器之间的传输资源。
发明内容
本申请提供一种基于RDMA的网络流量确定方法及装置,用以避免现有技术中分析服务器对终端设备之间的基于RDMA的网络流量进行分析时导致的分析服务器的存储容量被大量占用,转发设备和分析服务器之间的传输资源被浪费的问题。
第一方面,本申请提供了一种基于RDMA的网络流量确定方法。
转发设备接收第一终端设备的网卡对一个数据块划分得到的多个数据包中的一个,并判断所述数据包是否为所述多个数据包中的目标数据包,若所述数据包为所述多个数据包中的目标数据包,所述转发设备则复制所述数据包,将复制得到的数据包发送给分析服务器,并将所述数据包转发给第二终端设备;若所述数据包不是所述多个数据包中的目标数据包,所述转发设备不执行复制所述数据包的处理,将所述数据包转发给所述第二终端设备;其中,所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给所述第二终端设备的数据块,所述数据包中包括所述数据包的长度和所述数据包的序列号。
通过上述方法,转发设备只需复制并发送针对一个数据块划分的多个数据包中的目标数据包到分析服务器,所述转发设备对所述多个数据包中除目标数据包以外的数据包不执行复制并发送给分析服务器的处理,以使所述分析服务器根据目标数据包确定对应该数据块的网络流量,这样可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
在一个可能的设计中,所述数据包的长度通过所述数据包中的载荷(payload)字段体现,所述数据包的序列号通过所述数据包中的包序列号(packet sequence number,PSN)字段体现。
在一个可能的设计中,所述转发设备可以但不限于为交换机或者路由器等。
在一个可能的设计中,所述目标数据包可以为所述多个数据包中的尾包,在这种场景下,所述转发设备判断所述数据包是否为所述多个数据包中的目标数据包,具体方法可以为:所述转发设备识别所述数据包中的操作码(opcode)的值,若所述opcode的值为尾包对应的opcode的值,则所述转发设备确定所述数据包为尾包;若所述opcode的值不为尾包对应的opcode的值,则所述转发设备确定所述数据包不是尾包。
通过上述方法,所述转发设备可以准确地识别出所述多个数据包中的尾包,以使所述转发设备复制识别出的尾包并发送给所述分析服务器,进而使所述分析服务器通过所述尾包确定对应所述数据块的网络流量。
在一个可能的设计中,所述目标数据包可以为所述多个数据包中的首包或尾包,在这种场景下,所述转发设备判断所述数据包是否为所述多个数据包中的目标数据包,具体方法可以为:所述转发设备识别所述数据包中的opcode的值,若所述opcode的值为首包对应的opcode的值,则所述转发设备确定所述数据包为首包;若所述opcode的值为尾包对应的opcode的值,则所述转发设备确定所述数据包为尾包。
通过上述方法,所述转发设备可以准确地识别出所述多个数据包中的首包或尾包,以使所述转发设备复制识别出的首包或尾包并发送给所述分析服务器,进而使所述分析服务器后续通过所述首包和尾包确定对应所述数据块的网络流量。
在一个可能的设计中,所述转发设备中配置访问控制列表(access controllist,ACL),所述ACL中存储opcode的值与首包的对应关系,以及opcode的值与尾包的对应关系。
通过上述方法,所述转发设备可以通过查询所述ACL中的opcode的值与首包的对应关系,以及opcode的值与尾包的对应关系,判断接收到的数据包是否为首包或尾包。
在一个可能的设计中,RDMA方式可以分为发送(send)、写(write)和读(read)三种,进而所述转发设备可以判断所述数据包为发送首包(send_first)或者发送尾包(send_last);所述转发设备也可以判断所述数据包为写首包(write_first)或者写尾包(write_last);所述转发设备还可以判断所述数据包为读首包(read_first)或者读尾包(read_last)。相应地,所述分析服务器可以统计出被发送的数据块,被写入的数据块或被读出的数据块对应的网络流量。
第二方面,本申请还提供了另一种基于RDMA的网络流量确定方法。
分析服务器接收转发设备发来的针对一个数据块划分得到的多个数据包中的尾包,所述尾包中包括所述尾包的长度和所述尾包的序列号;然后,所述分析服务器根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量;其中,所述数据块为第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块。
通过上述方法,分析服务器只需接收转发设备发来的每个数据块划分得到的多个数据包中的尾包,可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
在一个可能的设计中,所述分析服务器还可以接收所述转发设备发来的针对所述数据块划分得到的所述多个数据包中的首包;其中,所述首包中包括所述首包的长度和所述首包的序列号。在这种场景下,所述分析服务器根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量,具体可以包括以下步骤:所述分析服务器根据所述尾包的序列号和所述首包的序列号,确定所述首包和所述尾包之间的数据包的个数后,所述分析服务器根据所述首包的长度、所述首包和所述尾包之间的数据包的个数、所述尾包的长度,确定对应所述数据块的网络流量。
通过上述方法,所述分析服务器可以根据所述首包和所述尾包确定对应所述数据块的网络流量,并且在此过程中,转发设备只需复制并发送针对数据块划分的多个数据包中的首包和尾包到分析服务器,对多个数据包中除首包和尾包以外的数据包不执行复制并发送给分析服务器的处理,这样可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
在一个可能的设计中,所述分析服务器用所述尾包的序列号减去所述首包的序列号后再减去1,可以得到确定的所述首包和所述尾包之间的数据包的个数。
在一个可能的设计中,所述分析服务器根据所述首包的长度、确定的所述首包和所述尾包之间的数据包的个数、所述尾包的长度,确定对应所述数据块的网络流量,可以采用以下公式:
L=Len2+(N+1)*Len1
其中,L为对应所述数据块的网络流量,Len1为所述首包的长度,Len2为所述尾包的长度,N为所述首包和所述尾包之间的数据包的个数。
在一个可能的设计中,所述分析服务器接收到所述多个数据包中的首包后,识别所述首包的五元组和QP并记录;所述分析服务器根据所述记录的五元组和QP,确定接收到的与所述记录的五元组和QP相同的尾包,并将所述尾包作为所述数据块的所述多个数据包中的尾包;其中,所述首包的五元组和QP用于指示所述多个数据包所属的所述数据块的五元组和QP。
通过上述方法,所述分析服务器可以准确地识别出所述数据块的首包和尾包,以使后续所述分析服务器根据所述首包和所述尾包确定对应所述数据块的网络流量。
在一个可能的设计中,所述分析服务器根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量,具体可以包括以下步骤:
所述分析服务器识别所述尾包中的五元组和队列对QP,并根据保存的五元组和QP与最大传输单元MTU的值的对应关系,确定所述尾包的五元组和QP对应的MTU的值;然后,所述分析服务器确定设定的所述多个数据包的起始序列号,并根据所述尾包的序列号和设定的所述多个数据包的起始序列号,确定所述尾包之前的数据包的个数;最后,所述分析服务器根据所述尾包之前的数据包的个数、所述尾包的五元组和QP对应的MTU的值、所述尾包的长度,确定对应所述数据块的网络流量。
通过上述方法,分析服务器只需接收转发设备发来的每个数据块划分得到的多个数据包中的尾包,可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
在一个可能的设计中,所述分析服务器确定设定的所述多个数据包的起始序列号的方法可以为:
当所述第一终端设备将设定的多个数据包的起始序列号携带在发送的数据包中时,所述分析服务器通过所述转发设备发来的数据包获取所述起始序列号;
或者,所述分析服务器获取预存的所述第一终端设备针对一个数据块划分得到多个数据包时设定的起始序列号。
通过上述方法,所述分析服务器可以准确地确定设定的多个数据包的起始序列号,以使所述分析服务器后续确定所述尾包之前的数据包的个数。
在一个可能的设计中,所述分析服务器用所述尾包的序列号减去设定的所述起始序列号,得到所述尾包之前的数据包的个数。
在一个可能的设计中,所述分析服务器根据所述尾包之前的数据包的个数、所述尾包的五元组和QP对应的MTU的值、所述尾包的长度,确定对应所述数据块的网络流量时,可以采用以下公式:
T=Len+K*MTU
其中,T为对应所述数据块的网络流量,MTU为所述尾包的五元组和QP对应的MTU的值,Len为所述尾包的长度,K为所述尾包之前的数据包的个数。
第三方面,本申请实施例还提供了一种转发设备,该转发设备具有实现上述方法实例中转发设备行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,所述转发设备的结构中包括通信接口、处理器和存储器,所述通信接口用于接收和发送数据,所述处理器被配置为支持所述转发设备执行上述第一方面中的方法中相应的功能。所述存储器与所述处理器耦合,其保存所述转发设备必要的程序指令和数据。
第四方面,本申请实施例还提供了一种分析服务器,该分析服务器具有实现上述方法实例中分析服务器行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,所述分析服务器的结构中包括通信接口、处理器和存储器,所述通信接口用于接收和发送数据,所述处理器被配置为支持所述分析服务器执行上述第二方面中的方法中相应的功能。所述存储器与所述处理器耦合,其保存所述分析服务器必要的程序指令和数据。
第五方面,本申请实施例还提供了一种网络流量确定系统,该网络流量确定系统中包括多个终端设备、多个转发设备和分析服务器,所述多个转发设备中的任一个转发设备为上述第三方面的转发设备,所述分析服务器为上述第四方面的分析服务器。
第六方面,本申请实施例还提供了一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令在被所述计算机调用时用于使所述计算机执行上述任一种方法。
第七方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一种方法。
本申请实施例的技术方案中,转发设备接收第一终端设备的网卡针对一个数据块划分得到的多个数据包中的一个,判断所述数据包是否为所述多个数据包中的目标数据包,若是,则复制所述数据包,将复制得到的数据包发送给分析服务器,并将所述数据包转发给第二终端设备;否则所述转发设备不执行复制所述数据包的处理,仅将所述数据包转发给所述第二终端设备;其中,所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给所述第二终端设备的数据块。在该方法中,转发设备只需复制并发送针对数据块划分的多个数据包中的目标数据包到分析服务器,对多个数据包中除目标数据包以外的数据包不执行复制并发送给分析服务器的处理,以使所述分析服务器根据目标数据包确定对应该数据块的网络流量,这样可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
附图说明
图1a为本申请提供的数据包的示意图;
图1为本申请提供的一种网络流量确定系统的架构示意图;
图2为本申请提供的一种基于RDMA的网络流量确定方法的流程示意图;
图3为本申请提供的一种转发设备的结构示意图;
图4为本申请提供的一种分析服务器的结构示意图;
图5为本申请提供的一种转发设备的结构图;
图6为本申请提供的一种分析服务器的结构图。
具体实施方式
下面将结合附图对本申请作进一步地详细描述。
本申请实施例提供一种基于RDMA的网络流量确定方法及装置,用以避免现有技术中分析服务器对终端设备之间的基于RDMA的网络流量进行分析时导致的分析服务器的存储容量被大量占用,转发设备和分析服务器之间的传输资源被浪费的问题。其中,本申请所述方法和装置基于同一发明构思,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
以下,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1)、转发设备,为转发数据的设备,例如,交换机、路由器等。
2)、第一终端设备和第二终端设备,为采用RDMA方式传输数据的设备,例如,可以为具有无线连接功能的手持式设备、车载设备、可穿戴设备、计算设备、移动台(mobilestation,MS)或连接到无线调制解调器的其他处理设备等,以及经接入网与一个或多个核心网进行通信的移动终端。
3)、分析服务器,可以为用于数据分析的大数据分析平台或主机,用于根据一个数据块的尾包,确定对应所述数据块的网络流量。
4)、第一终端设备的网卡和第二终端设备的网卡,为所述第一终端设备和所述第二终端设备之间采用RDMA方式的通信时,数据发送方和数据接收方的通信执行主体。具体的,两个网卡之间通过自身的队列对(queue pair,QP)进行通信,其中每个网卡的QP分为接收QP和发送QP,分别用于数据接收和发送。
5)、数据包,为终端设备将待传输的数据块划分得到的,可以分为首包、中间数据包和尾包。图1a为数据包的示意图,其中,所述数据包中包含的载荷(payload)字段表示所述数据包的长度;数据包的基础传输头(Base Transport Header,BTH)中的操作码(opcode)字段标识数据包的类型(即首包、尾包或者中间数据包),QP字段标识需要接收所述数据包的终端设备的网卡的QP,PSN标识所述数据包的序列号。数据包中的其它字段的具体含义,由于在本申请中未具体涉及,因此不再赘述。
其中,众所周知RDMA方式分为send、write和read三种,所以所述opcode具体可以标识所述数据包是send方式下的首包、中间数据包或者尾包,还是write方式下的首包、中间数据包或者尾包,还是read方式下的首包、中间数据包或者尾包。
6)、多个,是指两个或两个以上。
7)、在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
为了更加清晰地描述本申请实施例的技术方案,下面结合附图,对本申请实施例提供的基于RDMA的网络流量确定方法及装置进行详细说明。
图1示出了本申请实施例提供的基于RDMA的网络流量确定方法适用的一种可能的网络流量确定系统,所述网络流量确定系统包括:多个终端设备、多个转发设备和分析服务器。其中,所述多个终端设备之间通过所述多个转发设备实现RDMA方式的通信。
所述多个终端设备,如图1所示的终端设备A、终端设备B和终端设备C和终端设备D,包括多个采用RDMA方式通信的终端设备对,即多个发送数据的终端设备和多个接收数据的终端设备,其中,任一个发送数据的终端设备(记为第一终端设备)用于将待传输的数据块划分得到多个数据包,并通过自身的网卡将所述多个数据包发送给所述多个转发设备(如图1所示的转发设备A、转发设备B和转发设备C)中的一个转发设备,以使该转发设备将接收到的所述多个数据包转发给接收数据的终端设备(记为第二终端设备);所述第二终端设备接收该转发设备转发的所述多个数据包后,所述接第二终端设备的网卡将接收的所述多个数据包直接存储到自身的存储器。其中,所述多个数据包中的每个数据包中均包括长度和序列号,所述多个数据包包括一个首包、M个中间数据包和一个尾包,M为大于或者等于0的整数;所述首包的长度和所述M个中间数据包的长度相同,均为所述第一终端设备和所述第二终端设备的传输路径中可以传输的最大传输单元(maximum transmission unit,MTU)的值,所述尾包的长度小于或者等于所述首包的长度。
例如,基于图1所示的网络流量确定系统,假设所述终端设备A和所述终端设备B之间通过所述多个转发设备中的任一个转发设备采用RDMA方式传输数据,所述终端设备C和终端设备D之间通过所述多个转发设备中的任一个转发设备采用RDMA方式传输数据,即所述终端设备A和所述终端设备B为一个采用RDMA方式通信的终端设备对,所述终端设备C和所述终端设备D为一个采用RDMA方式通信的终端设备对。以所述终端设备A和所述终端设备B之间通过所述转发设备A采用RDMA方式传输数据为例,对终端设备之间采用RDMA方式的通信的过程详细说明:所述终端设备A将待传输的数据块划分得到多个数据包,通过自身网卡将所述多个数据包发送给所述转发设备A,所述转发设备A再将所述多个数据包转发给所述终端设备B,所述终端设备B的网卡将所述多个数据包直接存储到自身的存储器。这样,所述终端设备A和所述终端设备B之间完成数据传输。
现有技术中,所述多个转发设备中的任一个转发设备,用于在接收到所述多个终端设备中的任一个终端设备的网卡发送的多个数据包后,将所述数据包转发给另一个终端设备的同时,还要将所述多个数据包复制并发送给所述分析服务器,以使所述分析服务器确定所述多个数据包所属的数据块对应的网络流量。
而在本申请中,为了减少对所述分析服务器的存储容量的占用,以及节省转发设备和分析服务器之间的传输资源,所述多个转发设备可以不复制所有数据包,只复制多个数据包中的目标数据包。具体的,所述多个转发设备中的任一个转发设备对从第一终端设备接收到每个数据包进行如下判断:判断所述数据包是否为多个数据包中的目标数据包,若是,则复制所述数据包,将复制得到的数据包发送给分析服务器,并将所述数据包转发给第二终端设备;否则不执行复制所述数据包的处理,仅将所述数据包转发给第二终端设备。其中,所述目标数据包可以为所述多个数据包中的尾包,或者为所述多个数据包中的首包和尾包。
所述分析服务器,用于确定任一个终端设备发送的数据块对应的网络流量,并将确定的网络流量显示在显示界面(如图1中的显示界面)上,以使网络管理员根据所述分析服务器确定的网络流量进行后续网络管理。在本申请中,所述分析服务器确定网络流量具体包括:接收转发设备发送的针对一个数据块划分得到的多个数据包中的目标数据包,并根据所述目标数据包中包括的长度和序列号,确定对应所述数据块的网络流量。
通过本申请提供的上述方法,转发设备只将一个数据块划分成的多个数据包中的目标数据包复制并发送给所述分析服务器,而对除目标数据包以外的其他数据包不执行复制并发送给所述分析服务器的处理,从而可以减少对所述分析服务器的存储容量的占用,同时还可以节省所述转发设备和所述分析服务器之间的传输资源。
本申请实施例提供的一种基于RDMA的网络流量确定方法,适用于如图1所示的网络流量确定系统。参阅图2所示,该方法的具体流程包括:
步骤201、转发设备接收第一终端设备发送的数据包,所述数据包为所述第一终端设备的网卡对一个数据块划分得到的多个数据包中的一个;所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块。
通常情况下,终端设备之间采用RDMA方式传输数据时,待传输的数据块会被划分成多个数据包在网络中传输。具体传输时,作为发送方的第一终端设备的网卡将针对一个数据块划分得到的多个数据包发送给转发设备,以使转发设备将所述多个数据包转发给另一个终端设备,从而完成数据传输。
其中,所述多个数据包中的每个数据包中均包括所述数据包的长度和所述数据包的序列号,具体的,所述数据包的长度通过所述数据包中的载荷(payload)字段(如图1a所示的数据包中的载荷字段)体现,所述数据包的序列号通过所述数据包中的PSN字段(如图1a所示的数据包中的BTH中的PSN字段)体现。
一种可选的实现方式,所述转发设备可以但不限于为交换机或者路由器等。
步骤202、所述转发设备判断所述数据包是否为所述多个数据包中的目标数据包,若所述数据包为所述多个数据包中的目标数据包,则复制所述数据包,执行步骤203,若所述数据包不是所述多个数据包中的目标数据包,不执行复制所述数据包的处理,执行步骤204。
由于所述多个数据包中的每个数据包中还包括操作码(opcode)字段(如图1a所示的数据包中的BTH中的操作码字段),用于表征每个数据包的数据包类型,即每个数据包中的opcode的值表示所述数据包是首包、中间数据包或者尾包。由于所述目标数据包可以为尾包或者首包或尾包,因此,可选的,当所述目标数据包为所述多个数据包中的尾包时,所述转发设备判断所述数据包是否为所述多个数据包中的目标数据包,具体方法可以为:所述转发设备识别所述数据包中的操作码opcode的值,若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包;若所述opcode的值不为尾包对应的opcode的值,则确定所述数据包不是尾包。当所述目标数据包为所述多个数据包中的首包或尾包时,所述转发设备判断所述数据包是否为所述多个数据包中的目标数据包,可以为:所述转发设备识别所述数据包中的操作码opcode的值,若所述opcode的值为首包对应的opcode的值,则确定所述数据包为首包,若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包。
一种可选的实现方式,所述转发设备中配置ACL,所述ACL中存储opcode的值与首包的对应关系,以及opcode的值与尾包的对应关系。这样所述转发设备可以通过查询所述ACL中的opcode的值与首包的对应关系,以及opcode的值与尾包的对应关系,判断接收到的数据包是否为首包或尾包。
通过上述方法,所述转发设备可以成功识别到针对一个数据块划分得到的多个数据包中的尾包,或者首包和尾包,进而后续复制所述尾包,或者所述首包和所述尾包后,将复制得到的数据包发送给所述分析服务器,以使所述分析服务器通过所述尾包,或者所述首包和所述尾包确定对应所述数据块的网络流量。
由于实际中RDMA方式分为send、write和read三种,在每种方式下的首包对应的opcode的值均不同,尾包对应的opcode的值也均不同,因此,可选的,所述转发设备可以通过识别所述数据包中的opcode判断所述数据包具体为哪种RDMA方式下的首包或者尾包。例如,所述转发设备可以判断所述数据包为发送首包(send_first)或者发送尾包(send_last);可以判断所述数据包为写首包(write_first)或者写尾包(write_last);还可以判断所述数据包为读首包(read_first)或者读尾包(read_last)。
步骤203、所述转发设备将复制得到的数据包发送给分析服务器,并将所述数据包转发给所述第二终端设备。
其中,如图2所示的步骤203a,所述转发设备将所述数据包转发给所述第二终端设备,以使所述第二终端设备的网卡将所述数据包存储到所述第二终端设备的存储器,从而实现了所述第一终端设备和所述第二终端设备采用RDMA方式的数据传输。
同时,如图2所示的步骤203b,所述转发设备将复制得到的数据包(目标数据包)发送给所述分析服务器,以使所述分析服务器后续只存储针对一个数据块划分得到的多个数据包中的目标数据包,这样所述分析服务器的存储容量的占用可以较少。
步骤204、所述转发设备将所述数据包转发给所述第二终端设备。
在步骤204中,所述转发设备向所述第二终端设备发送的所述数据包,是所述第一终端设备的网卡针对一个数据块划分得到的多个数据包中的除目标数据包以外的数据包。这样,由于所述转发设备对所述多个数据包中的除目标数据包以外的数据包不执行复制处理,只将所述多个数据包中的除目标数据包以外的数据包发送给所述第二终端设备,避免了将所述多个数据包中的除目标数据包以外的数据包复制并发送到所述分析服务器,因此可以避免所述分析服务器存储所述多个数据包中的除目标数据包以外的数据包,从而可以减少对所述分析服务器的存储容量的占用,并且可以节省所述转发设备和所述分析服务器之间的传输资源。
步骤205、所述分析服务器根据所述目标数据包的长度和所述目标数据包的序列号,确定对应所述数据块的网络流量。
可选的,所述分析服务器执行步骤205时,可以采用以下两种方法:
其中,第一种方法中,该目标数据包包括所述多个数据包的首包和尾包,所述方法可以分为以下三个步骤:
A1、所述分析服务器接收所述转发设备发来的针对所述数据块划分得到的多个数据包中的首包;其中,所述首包中包括所述首包的长度和所述首包的序列号。
A2、所述分析服务器根据所述尾包的序列号和所述首包的序列号,确定所述首包和所述尾包之间的数据包的个数。
A3、所述分析服务器根据所述首包的长度、所述首包和所述尾包之间的数据包的个数、所述尾包的长度,确定对应所述数据块的网络流量。
第二种方法中,该目标数据包包括所述多个数据包的尾包,所述方法可以分为以下三个步骤:
B1、所述分析服务器识别所述尾包中的五元组和QP,并根据保存的五元组和QP与MTU的值的对应关系,确定所述尾包的五元组和QP对应的MTU的值。
其中,所述五元组包括源因特网协议(Internet Protocol,IP)地址、目的IP地址、源端口、目的端口以及传输协议;所述QP为每个数据包中包括的QP字段(如图1a所示的QP字段),用于标识需要接收所述数据包的终端设备的网卡的QP。
B2、所述分析服务器确定设定的所述多个数据包的起始序列号,并根据所述尾包的序列号和设定的所述多个数据包的起始序列号,确定所述尾包之前的数据包的个数。
B3、所述分析服务器根据所述尾包之前的数据包的个数、所述尾包的五元组和QP对应的MTU的值、所述尾包的长度,确定对应所述数据块的网络流量。
在一种可选的实现方式中,由于所述多个数据包在发送时是从首包到尾包的顺序发送,所述转发设备会先识别到所述多个数据包中的首包,然后将所述首包复制并发送给所述分析服务器,因此,在上述第一种方法中,为了确定所述数据块的首包和尾包,所述分析服务器还执行以下操作:
所述分析服务器接收到所述多个数据包中的首包后,识别所述首包的五元组和QP并记录;其中,所述首包的五元组和QP用于指示所述多个数据包所属的所述数据块的五元组和QP;
所述分析服务器根据所述记录的五元组和QP,确定接收到的与所述记录的五元组和QP相同的尾包,并将所述尾包作为所述数据块的所述多个数据包中的尾包。
通过上述方法,所述分析服务器接收到一个数据块的首包后,通过记录所述数据块的五元组和QP(即记录所述数据块的标识),识别到后续转发设备发来的归属于所述数据块的尾包,这样就准确地确定了所述数据块的首包和尾包,进而可以根据所述数据块中的所述首包和所述尾包确定对应所述数据块的网络流量。
进一步地,所述分析服务器可以通过上述方法确定多个数据块中的每个数据块分别包括的首包和尾包,进而确定对应所述多个数据块中的每个数据块的网络流量。
具体的,在上述第一种方法中,所述分析服务器执行步骤A2时,用所述尾包的序列号减去所述首包的序列号后再减去1,可以得到确定的所述首包和所述尾包之间的数据包的个数。
众所周知,所述首包的长度与所述首包和所述尾包之间的数据包的长度相同。因此,具体的,所述分析服务器执行步骤A3时,可以采用以下公式:
L=Len2+(N+1)*Len1
其中,L为对应所述数据块的网络流量,Len1为所述首包的长度,Len2为所述尾包的长度,N为所述首包和所述尾包之间的数据包的个数。
可选的,在第一终端设备的网卡针对一个数据块划分得到的多个数据包的起始序列号(即首包的序列号的值)为设定值时,所述分析服务器可以采用上述第二种方法执行步骤205。
可选的,在上述第二种方法的步骤B1中,所述分析服务器保存着五元组和QP与MTU的值的对应关系,所述分析服务器根据该对应关系确定所述尾包的五元组和QP对应的MTU的值,即确定了所述数据块的所述多个数据包中首包和中间数据包的长度。例如,所述分析服务器保存的五元组和QP与MTU的值的对应关系可以如下表1所示:
表1五元组和QP与MTU的值的对应关系
其中,表1中的源IP地址、源端口、目的IP地址、目的端口、传输协议为五元组;源QP和目的QP分别表示为发送数据的终端设备和接收数据的终端设备的网卡中的QP,具体的,所述分析服务器查找所述尾包的五元组和QP对应的MTU的值时,所述分析服务器确定所述尾包中的QP符合所述表1中的源QP和目的QP中的任一个即可。
一种可选的实现方式,所述分析服务器要实时更新保存的五元组和QP与MTU的值的对应关系。由于通常情况下,第一终端设备和第二终端设备在进行数据传输之前,第一终端设备要先通过转发设备向第二终端设备发送连接请求报文,然后所述第二终端设备通过所述转发设备返回连接应答报文,所述连接请求报文中包括所述第一终端设备和所述第二终端设备之间可以传输的MTU的值,以及所述第一终端设备的网卡的QP;所述连接应答报文中包括所述第二终端设备的网卡的QP。所述转发设备可以将所述连接请求报文和所述连接应答报文复制并发送给所述分析服务器。因此,所述分析服务器可以根据所述连接请求报文的五元组、所述连接请求报文中包括的MTU的值、QP以及所述连接应答报文的五元组和所述连接应答报文中包括的QP,得到五元组和QP(包括第一终端设备的网卡的QP和第二终端设备的网卡的QP)与MTU的值的对应关系,然后将得到的对应关系存储到所述分析服务器中,即完成了五元组和QP与MTU的值的对应关系的更新。
可选的,在上述步骤B2中,所述分析服务器确定设定的所述多个数据包的起始序列号的方法可以为:
当所述第一终端设备将设定的多个数据包的起始序列号携带在发送的数据包中时,所述分析服务器通过所述转发设备发来的数据包获取所述起始序列号;或者
所述分析服务器获取预存的所述第一终端设备针对一个数据块划分得到多个数据包时设定的起始序列号。
进一步地,在上述步骤B2中,所述分析服务器根据所述尾包的序列号和设定的所述多个数据包的起始序列号,确定所述尾包之前的数据包的个数,具体方法为:所述分析服务器用所述尾包的序列号减去设定的所述起始序列号,得到所述尾包之前的数据包的个数。
例如,当所述始序列号为0时,所述分析服务器确定的所述尾包之前的数据包的个数等于所述尾包的序列号;当所述始序列号为1时,所述分析服务器确定的所述尾包之前的数据包的个数等于所述尾包的序列号减去1得到的值。
具体的,所述分析服务器执行上述步骤B3时,可以采用以下公式:
T=Len+K*MTU
其中,T为对应所述数据块的网络流量,MTU为所述尾包的五元组和QP对应的MTU的值度,Len为所述尾包的长度,K为所述尾包之前的数据包的个数。
采用本申请实施例提供的基于RDMA的网络流量确定方法,转发设备接收第一终端设备的网卡针对一个数据块划分得到的多个数据包中的一个,判断所述数据包是否为所述多个数据包中的目标数据包,若是,则复制所述数据包,将复制得到的数据包发送给分析服务器,并将所述数据包转发给第二终端设备;否则所述转发设备不执行复制所述数据包的处理,仅将所述数据包转发给所述第二终端设备;其中,所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给所述第二终端设备的数据块。在该方法中,转发设备只需复制并发送针对数据块划分的多个数据包中的目标数据包到分析服务器,对多个数据包中除目标数据包以外的数据包不执行复制并发送给分析服务器的处理,以使所述分析服务器根据目标数据包确定对应该数据块的网络流量,这样可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
基于以上实施例,本申请实施例还提供了一种转发设备,该转发设备应用于如图1所示的网络流量确定系统,用于实现如图2所示的基于RDMA的网络流量确定方法中转发设备的功能。参阅图3所示,该转发设备300包括:接收单元301、处理单元302和发送单元303,其中:
所述接收单元301,用于接收第一终端设备发送的数据包,所述数据包为所述第一终端设备的网卡对一个数据块划分得到的多个数据包中的一个;所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块;
所述处理单元302,用于判断所述数据包是否为所述多个数据包中的目标数据包,若所述数据包为所述多个数据包中的目标数据包,则复制所述数据包,控制所述发送单元303将复制得到的数据包发送给分析服务器,并控制所述发送单元303将所述数据包转发给所述第二终端设备;若所述数据包不是所述多个数据包中的目标数据包,不执行复制所述数据包的处理,控制所述发送单元303将所述数据包转发给所述第二终端设备;
其中,所述数据包中包括所述数据包的长度和所述数据包的序列号。
可选的,所述目标数据包为所述多个数据包中的尾包,所述处理单元302,在判断所述数据包是否为所述多个数据包中的目标数据包时,具体用于:
识别所述数据包中的操作码opcode的值,若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包;若所述opcode的值不为尾包对应的opcode的值,则确定所述数据包不是尾包。
可选的,所述目标数据包为所述多个数据包中的首包或尾包,所述处理单元302,在判断所述数据包是否为所述多个数据包中的目标数据包时,具体用于:
识别所述数据包中的opcode的值,若所述opcode的值为首包对应的opcode的值,则确定所述数据包为首包;若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包。
可选的,所述转发设备300为交换机或者路由器。
采用本申请实施例提供的转发设备,接收第一终端设备的网卡针对一个数据块划分得到的多个数据包中的一个,判断所述数据包是否为所述多个数据包中的目标数据包,若是,则复制所述数据包,将复制得到的数据包发送给分析服务器,并将所述数据包转发给第二终端设备;否则所述转发设备不执行复制所述数据包的处理,仅将所述数据包转发给所述第二终端设备;其中,所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给所述第二终端设备的数据块。这样,转发设备只需复制并发送针对数据块划分的多个数据包中的目标数据包到分析服务器,对多个数据包中除目标数据包以外的数据包不执行复制并发送给分析服务器的处理,以使所述分析服务器根据目标数据包确定对应该数据块的网络流量,这样可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
基于以上实施例,本申请实施例还提供了一种分析服务器,该分析服务器应用于如图1所示的网络流量确定系统,用于实现如图2所示的基于RDMA的网络流量确定方法中分析服务器的功能。参阅图4所示,该分析服务器400包括:接收单元401和处理单元402,其中:
所述接收单元401,用于接收转发设备发来的针对一个数据块划分得到的多个数据包中的尾包,其中,所述数据块为第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块;所述尾包中包括所述尾包的长度和所述尾包的序列号;
所述处理单元402,用于根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量。
可选的,所述接收单元401,还用于:
接收所述转发设备发来的针对所述数据块划分得到的多个数据包中的首包;其中,所述首包中包括所述首包的长度和所述首包的序列号;
所述处理单元402,在根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量时,具体用于:
根据所述尾包的序列号和所述首包的序列号,确定所述首包和所述尾包之间的数据包的个数;
根据所述首包的长度、所述首包和所述尾包之间的数据包的个数、所述尾包的长度,确定对应所述数据块的网络流量。
可选的,所述处理单元402确定对应所述数据块的网络流量时,采用以下公式:
L=Len2+(N+1)*Len1
其中,L为对应所述数据块的网络流量,Len1为所述首包的长度,Len2为所述尾包的长度,N为所述首包和所述尾包之间的数据包的个数。
可选的,所述处理单元402,在根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量时,具体用于:
识别所述尾包中的五元组和队列对QP,并根据保存的五元组和QP与最大传输单元MTU的值的对应关系,确定所述尾包的五元组和QP对应的MTU的值;
确定设定的所述多个数据包的起始序列号,并根据所述尾包的序列号和设定的所述多个数据包的起始序列号,确定所述尾包之前的数据包的个数;
根据所述尾包之前的数据包的个数、所述尾包的五元组和QP对应的MTU的值、所述尾包的长度,确定对应所述数据块的网络流量。
可选的,所述处理单元402确定对应所述数据块的网络流量时,采用以下公式:
T=Len+K*MTU
其中,T为对应所述数据块的网络流量,MTU为所述尾包的五元组和QP对应的MTU的值,Len为所述尾包的长度,K为所述尾包之前的数据包的个数。
可选的,所述处理单元402,还用于:
在所述接收单元401接收到所述多个数据包中的首包后,识别所述首包的五元组和QP并记录;其中,所述首包的五元组和QP用于指示所述多个数据包所属的所述数据块的五元组和QP;
根据所述记录的五元组和QP,确定接收到的与所述记录的五元组和QP相同的尾包,并将所述尾包作为所述数据块的所述多个数据包中的尾包。
可选的,所述转发设备为交换机或者路由器。
采用本申请实施例提供的分析服务器,接收转发设备发来的针对一个数据块划分得到的多个数据包中的尾包后,根据所述尾包的长度和序列号,确定对应所述数据块的网络流量。这样,分析服务器只需接收转发设备发来的每个数据块划分得到的多个数据包中的尾包,可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
基于以上实施例,本申请实施例还提供了一种转发设备,所述转发设备应用于如图1所示的网络流量确定系统,用于实现如图2所示的基于RDMA的网络流量确定方法中转发设备的功能。参阅图5所示,所述转发设备500包括:通信接口501、处理器502以及存储器503,其中:
所述通信接口501、所述处理器502以及所述存储器503之间相互连接。可选的,所述通信接口501、所述处理器502以及所述存储器503通过总线504相互连接;所述总线504可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述转发设备500在实现如图2所示的基于RDMA的网络流量确定方法时:
所述通信接口501,用于接收和发送数据;
所述处理器502,用于控制所述通信接口501接收第一终端设备发送的数据包,所述数据包为所述第一终端设备的网卡对一个数据块划分得到的多个数据包中的一个;所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块;
判断所述数据包是否为所述多个数据包中的目标数据包,若所述数据包为所述多个数据包中的目标数据包,则复制所述数据包,控制所述通信接口501将复制得到的数据包发送给分析服务器,并控制所述通信接口501将所述数据包转发给所述第二终端设备;若所述数据包不是所述多个数据包中的目标数据包,不执行复制所述数据包的处理,控制所述通信接口501将所述数据包转发给所述第二终端设备;
其中,所述数据包中包括所述数据包的长度和所述数据包的序列号。
可选的,所述目标数据包为所述多个数据包中的尾包,所述处理器502,在判断所述数据包是否为所述多个数据包中的目标数据包时,具体用于:
识别所述数据包中的操作码opcode的值,若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包;若所述opcode的值不为尾包对应的opcode的值,则确定所述数据包不是尾包。
可选的,所述目标数据包为所述多个数据包中的首包或尾包,所述处理器502,在判断所述数据包是否为所述多个数据包中的目标数据包时,具体用于:
识别所述数据包中的opcode的值,若所述opcode的值为首包对应的opcode的值,则确定所述数据包为首包;若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包。
可选的,所述转发设备500为交换机或者路由器。
所述存储器503,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。所述存储器503可能包括RAM,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。所述处理器502执行所述存储器503所存放的应用程序,实现上述功能,从而实现如图2所示的基于RDMA的网络流量确定方法。
采用本申请实施例提供的转发设备,接收第一终端设备的网卡针对一个数据块划分得到的多个数据包中的一个,判断所述数据包是否为所述多个数据包中的目标数据包,若是,则复制所述数据包,将复制得到的数据包发送给分析服务器,并将所述数据包转发给第二终端设备;否则所述转发设备不执行复制所述数据包的处理,仅将所述数据包转发给所述第二终端设备;其中,所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给所述第二终端设备的数据块。这样,转发设备只需复制并发送针对数据块划分的多个数据包中的目标数据包到分析服务器,对多个数据包中除目标数据包以外的数据包不执行复制并发送给分析服务器的处理,以使所述分析服务器根据目标数据包确定对应该数据块的网络流量,这样可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
基于以上实施例,本申请实施例还提供了一种分析服务器,所述分析服务器应用于如图1所示的网络流量确定系统,用于实现如图2所示的基于RDMA的网络流量确定方法中分析服务器的功能。参阅图6所示,所述分析服务器600包括:通信接口601、处理器602以及存储器603,其中:
所述通信接口601、所述处理器602以及所述存储器603之间相互连接。可选的,所述通信接口601、所述处理器602以及所述存储器603通过总线604相互连接;所述总线604可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述分析服务器600在实现如图2所示的基于RDMA的网络流量确定方法时:
所述通信接口601,用于接收和发送数据;
所述处理器602,用于控制所述通信接口601接收转发设备发来的针对一个数据块划分得到的多个数据包中的尾包,其中,所述数据块为第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块;所述尾包中包括所述尾包的长度和所述尾包的序列号;
根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量。
可选的,所述处理器602,还用于:
控制所述通信接口601接收所述转发设备发来的针对所述数据块划分得到的多个数据包中的首包;其中,所述首包中包括所述首包的长度和所述首包的序列号;
所述处理器602,在根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量时,具体用于:
根据所述尾包的序列号和所述首包的序列号,确定所述首包和所述尾包之间的数据包的个数;
根据所述首包的长度、所述首包和所述尾包之间的数据包的个数、所述尾包的长度,确定对应所述数据块的网络流量。
可选的,所述处理器602确定对应所述数据块的网络流量时,采用以下公式:
L=Len2+(N+1)*Len1
其中,L为对应所述数据块的网络流量,Len1为所述首包的长度,Len2为所述尾包的长度,N为所述首包和所述尾包之间的数据包的个数。
可选的,所述处理器602,在根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量时,具体用于:
识别所述尾包中的五元组和队列对QP,并根据保存的五元组和QP与最大传输单元MTU的值的对应关系,确定所述尾包的五元组和QP对应的MTU的值;
确定设定的所述多个数据包的起始序列号,并根据所述尾包的序列号和设定的所述多个数据包的起始序列号,确定所述尾包之前的数据包的个数;
根据所述尾包之前的数据包的个数、所述尾包的五元组和QP对应的MTU的值、所述尾包的长度,确定对应所述数据块的网络流量。
可选的,所述处理器602确定对应所述数据块的网络流量时,采用以下公式:
T=Len+K*MTU
其中,T为对应所述数据块的网络流量,MTU为所述尾包的五元组和QP对应的MTU的值,Len为所述尾包的长度,K为所述尾包之前的数据包的个数。
可选的,所述处理器602,还用于:
控制所述通信接口601接收到所述多个数据包中的首包后,识别所述首包的五元组和QP并记录;其中,所述首包的五元组和QP用于指示所述多个数据包所属的所述数据块的五元组和QP;
根据所述记录的五元组和QP,确定接收到的与所述记录的五元组和QP相同的尾包,并将所述尾包作为所述数据块的所述多个数据包中的尾包。
可选的,所述转发设备为交换机或者路由器。
所述存储器603,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。所述存储器603可能包括RAM,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。所述处理器602执行所述存储器603所存放的应用程序,实现上述功能,从而实现如图2所示的基于RDMA的网络流量确定方法。
采用本申请实施例提供的分析服务器,接收转发设备发来的针对一个数据块划分得到的多个数据包中的尾包后,根据所述尾包的长度和序列号,确定对应所述数据块的网络流量。这样,分析服务器只需接收转发设备发来的每个数据块划分得到的多个数据包中的尾包,可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
综上所述,通过本申请实施例提供的基于RDMA的网络流量确定方法及装置,转发设备接收第一终端设备的网卡针对一个数据块划分得到的多个数据包中的一个,判断所述数据包是否为所述多个数据包中的目标数据包,若是,则复制所述数据包,将复制得到的数据包发送给分析服务器,并将所述数据包转发给第二终端设备;否则所述转发设备不执行复制所述数据包的处理,仅将所述数据包转发给所述第二终端设备;其中,所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给所述第二终端设备的数据块。在该方法中,转发设备只需复制并发送针对数据块划分的多个数据包中的目标数据包到分析服务器,对多个数据包中除目标数据包以外的数据包不执行复制并发送给分析服务器的处理,以使所述分析服务器根据目标数据包确定对应该数据块的网络流量,这样可以减少对分析服务器的存储容量的占用,并且可以节省转发设备和分析服务器之间的传输资源。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包括有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。
Claims (19)
1.一种基于远程直接数据存取RDMA的网络流量确定方法,其特征在于,包括:
转发设备接收第一终端设备发送的数据包,所述数据包为所述第一终端设备的网卡对一个数据块划分得到的多个数据包中的一个;所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块;
所述转发设备判断所述数据包是否为所述多个数据包中的目标数据包,若所述数据包为所述多个数据包中的目标数据包,则复制所述数据包,将复制得到的数据包发送给分析服务器,并将所述数据包转发给所述第二终端设备;若所述数据包不是所述多个数据包中的目标数据包,所述转发设备不执行复制所述数据包的处理,将所述数据包转发给所述第二终端设备;
其中,所述数据包中包括所述数据包的长度和所述数据包的序列号。
2.如权利要求1所述的方法,其特征在于,所述目标数据包为所述多个数据包中的尾包,所述转发设备判断所述数据包是否为所述多个数据包中的目标数据包,包括:
所述转发设备识别所述数据包中的操作码opcode的值,若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包;若所述opcode的值不为尾包对应的opcode的值,则确定所述数据包不是尾包。
3.根据权利要求1所述的方法,其特征在于,所述目标数据包为所述多个数据包中的首包或尾包,所述转发设备判断所述数据包是否为所述多个数据包中的目标数据包,包括:
所述转发设备识别所述数据包中的操作码opcode的值,若所述opcode的值为首包对应的opcode的值,则确定所述数据包为首包,若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包。
4.一种基于远程直接数据存取RDMA的网络流量确定方法,其特征在于,包括:
分析服务器接收转发设备发来的针对一个数据块划分得到的多个数据包中的尾包,其中,所述数据块为第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块;所述尾包中包括所述尾包的长度和所述尾包的序列号;
所述分析服务器根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
所述分析服务器接收所述转发设备发来的针对所述数据块划分得到的所述多个数据包中的首包,所述首包中包括所述首包的长度和所述首包的序列号;
所述分析服务器根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量,包括:
所述分析服务器根据所述尾包的序列号和所述首包的序列号,确定所述首包和所述尾包之间的数据包的个数;
所述分析服务器根据所述首包的长度、所述首包和所述尾包之间的数据包的个数、所述尾包的长度,确定对应所述数据块的网络流量。
6.如权利要求5所述的方法,其特征在于,所述分析服务器确定对应所述数据块的网络流量时,采用以下公式:
L=Len2+(N+1)*Len1
其中,L为对应所述数据块的网络流量,Len1为所述首包的长度,Len2为所述尾包的长度,N为所述首包和所述尾包之间的数据包的个数。
7.如权利要求4所述的方法,其特征在于,所述分析服务器根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量,包括:
所述分析服务器识别所述尾包中的五元组和队列对QP,并根据保存的五元组和QP与最大传输单元MTU的值的对应关系,确定所述尾包的五元组和QP对应的MTU的值;
所述分析服务器确定设定的所述多个数据包的起始序列号,并根据所述尾包的序列号和设定的所述多个数据包的起始序列号,确定所述尾包之前的数据包的个数;
所述分析服务器根据所述尾包之前的数据包的个数、所述尾包的五元组和QP对应的MTU的值、所述尾包的长度,确定对应所述数据块的网络流量。
8.如权利要求7所述的方法,其特征在于,所述分析服务器确定对应所述数据块的网络流量时,采用以下公式:
T=Len+K*MTU
其中,T为对应所述数据块的网络流量,MTU为所述尾包的五元组和QP对应的MTU的值,Len为所述尾包的长度,K为所述尾包之前的数据包的个数。
9.如权利要求5或6所述的方法,其特征在于,所述方法还包括:
所述分析服务器接收到所述多个数据包中的首包后,识别所述首包的五元组和QP并记录;其中,所述首包的五元组和QP用于指示所述多个数据包所属的所述数据块的五元组和QP;
所述分析服务器根据所述记录的五元组和QP,确定接收到的与所述记录的五元组和QP相同的尾包,并将所述尾包作为所述数据块的所述多个数据包中的尾包。
10.一种转发设备,其特征在于,包括:
存储器,用于存储程序指令;
通信接口,用于接收和发送数据;
处理器,用于调用存储在所述存储器中的程序指令以执行下述方法:
控制所述通信接口接收第一终端设备发送的数据包,所述数据包为所述第一终端设备的网卡对一个数据块划分得到的多个数据包中的一个;所述数据块为所述第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块;
判断所述数据包是否为所述多个数据包中的目标数据包,若所述数据包为所述多个数据包中的目标数据包,则复制所述数据包,控制所述通信接口将复制得到的数据包发送给分析服务器,并控制所述通信接口将所述数据包转发给所述第二终端设备;若所述数据包不是所述多个数据包中的目标数据包,不执行复制所述数据包的处理,控制所述通信接口将所述数据包转发给所述第二终端设备;
其中,所述数据包中包括所述数据包的长度和所述数据包的序列号。
11.如权利要求10所述的转发设备,其特征在于,所述目标数据包为所述多个数据包中的尾包,所述处理器,在判断所述数据包是否为所述多个数据包中的目标数据包时,具体用于:
识别所述数据包中的操作码opcode的值,若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包;若所述opcode的值不为尾包对应的opcode的值,则确定所述数据包不是尾包。
12.如权利要求10所述的转发设备,其特征在于,所述目标数据包为所述多个数据包中的首包或尾包,所述处理器,在判断所述数据包是否为所述多个数据包中的目标数据包时,具体用于:
识别所述数据包中的操作码opcode的值,若所述opcode的值为首包对应的opcode的值,则确定所述数据包为首包;若所述opcode的值为尾包对应的opcode的值,则确定所述数据包为尾包。
13.一种分析服务器,其特征在于,包括:
存储器,用于存储程序指令;
通信接口,用于接收和发送数据;
处理器,用于调用存储在所述存储器中的程序指令以执行下述方法:
控制所述通信接口接收转发设备发来的针对一个数据块划分得到的多个数据包中的尾包,其中,所述数据块为第一终端设备采用RDMA方式通过所述转发设备传输给第二终端设备的数据块;所述尾包中包括所述尾包的长度和所述尾包的序列号;
根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量。
14.如权利要求13所述的分析服务器,其特征在于,所述处理器,还用于:
控制所述通信接口接收所述转发设备发来的针对所述数据块划分得到的多个数据包中的首包;其中,所述首包中包括所述首包的长度和所述首包的序列号;
所述处理器,在根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量时,具体用于:
根据所述尾包的序列号和所述首包的序列号,确定所述首包和所述尾包之间的数据包的个数;
根据所述首包的长度、所述首包和所述尾包之间的数据包的个数、所述尾包的长度,确定对应所述数据块的网络流量。
15.如权利要求14所述的分析服务器,其特征在于,所述处理器确定对应所述数据块的网络流量时,采用以下公式:
L=Len2+(N+1)*Len1
其中,L为对应所述数据块的网络流量,Len1为所述首包的长度,Len2为所述尾包的长度,N为所述首包和所述尾包之间的数据包的个数。
16.如权利要求13所述的分析服务器,其特征在于,所述处理器,在根据所述尾包的长度和所述尾包的序列号,确定对应所述数据块的网络流量时,具体用于:
识别所述尾包中的五元组和队列对QP,并根据保存的五元组和QP与最大传输单元MTU的值的对应关系,确定所述尾包的五元组和QP对应的MTU的值;
确定设定的所述多个数据包的起始序列号,并根据所述尾包的序列号和设定的所述多个数据包的起始序列号,确定所述尾包之前的数据包的个数;
根据所述尾包之前的数据包的个数、所述尾包的五元组和QP对应的MTU的值、所述尾包的长度,确定对应所述数据块的网络流量。
17.如权利要求16所述的分析服务器,其特征在于,所述处理器确定对应所述数据块的网络流量时,采用以下公式:
T=Len+K*MTU
其中,T为对应所述数据块的网络流量,MTU为所述尾包的五元组和QP对应的MTU的值,Len为所述尾包的长度,K为所述尾包之前的数据包的个数。
18.如权利要求14或15所述的分析服务器,其特征在于,所述处理器,还用于:
控制所述通信接口接收到所述多个数据包中的首包后,识别所述首包的五元组和QP并记录;其中,所述首包的五元组和QP用于指示所述多个数据包所属的所述数据块的五元组和QP;
根据所述记录的五元组和QP,确定接收到的与所述记录的五元组和QP相同的尾包,并将所述尾包作为所述数据块的所述多个数据包中的尾包。
19.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令在被所述计算机调用时用于使所述计算机执行权利要求1-9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710693896.XA CN109391522B (zh) | 2017-08-14 | 2017-08-14 | 基于rdma的网络流量确定方法、转发设备、分析服务器和存储介质 |
PCT/CN2018/096210 WO2019033891A1 (zh) | 2017-08-14 | 2018-07-19 | 一种基于rdma的网络流量确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710693896.XA CN109391522B (zh) | 2017-08-14 | 2017-08-14 | 基于rdma的网络流量确定方法、转发设备、分析服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109391522A true CN109391522A (zh) | 2019-02-26 |
CN109391522B CN109391522B (zh) | 2021-04-20 |
Family
ID=65361744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710693896.XA Active CN109391522B (zh) | 2017-08-14 | 2017-08-14 | 基于rdma的网络流量确定方法、转发设备、分析服务器和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109391522B (zh) |
WO (1) | WO2019033891A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113194045A (zh) * | 2020-01-14 | 2021-07-30 | 阿里巴巴集团控股有限公司 | 数据流量分析方法、装置、存储介质及处理器 |
CN113381939A (zh) * | 2020-03-10 | 2021-09-10 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
CN113886295A (zh) * | 2020-07-02 | 2022-01-04 | 北京瀚海云星科技有限公司 | 一种标签数据高效且低延时的传输方法及相关装置、系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114090495A (zh) * | 2019-03-01 | 2022-02-25 | 华为技术有限公司 | 数据处理的方法、网卡和服务器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005099375A2 (en) * | 2004-04-05 | 2005-10-27 | Ammasso, Inc. | System and method for placement of rdma payload into application memory of a processor system |
US7342934B1 (en) * | 2004-03-29 | 2008-03-11 | Sun Microsystems, Inc. | System and method for interleaving infiniband sends and RDMA read responses in a single receive queue |
CN101931588A (zh) * | 2009-06-23 | 2010-12-29 | 丛林网络公司 | 发现路径最大传输单元尺寸 |
CN103944775A (zh) * | 2014-03-14 | 2014-07-23 | 广州源典科技有限公司 | 一种网络流量采集分析及展示输出的方法 |
CN105099730A (zh) * | 2014-04-23 | 2015-11-25 | 北京奇虎科技有限公司 | 终端设备、基于终端设备的网络流量统计方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6094683A (en) * | 1997-08-29 | 2000-07-25 | Intel Corporation | Link bundling in a network |
CN103441937A (zh) * | 2013-08-21 | 2013-12-11 | 曙光信息产业(北京)有限公司 | 组播数据的发送方法和接收方法 |
CN106411739B (zh) * | 2015-07-31 | 2019-06-21 | 华为技术有限公司 | 一种数据转发方法及装置 |
CN105933453A (zh) * | 2016-06-28 | 2016-09-07 | 广州华多网络科技有限公司 | 一种传输数据的方法和系统 |
CN106953797B (zh) * | 2017-04-05 | 2020-05-26 | 苏州浪潮智能科技有限公司 | 一种基于动态连接的rdma数据传输的方法与装置 |
-
2017
- 2017-08-14 CN CN201710693896.XA patent/CN109391522B/zh active Active
-
2018
- 2018-07-19 WO PCT/CN2018/096210 patent/WO2019033891A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7342934B1 (en) * | 2004-03-29 | 2008-03-11 | Sun Microsystems, Inc. | System and method for interleaving infiniband sends and RDMA read responses in a single receive queue |
WO2005099375A2 (en) * | 2004-04-05 | 2005-10-27 | Ammasso, Inc. | System and method for placement of rdma payload into application memory of a processor system |
CN101931588A (zh) * | 2009-06-23 | 2010-12-29 | 丛林网络公司 | 发现路径最大传输单元尺寸 |
CN103944775A (zh) * | 2014-03-14 | 2014-07-23 | 广州源典科技有限公司 | 一种网络流量采集分析及展示输出的方法 |
CN105099730A (zh) * | 2014-04-23 | 2015-11-25 | 北京奇虎科技有限公司 | 终端设备、基于终端设备的网络流量统计方法及系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113194045A (zh) * | 2020-01-14 | 2021-07-30 | 阿里巴巴集团控股有限公司 | 数据流量分析方法、装置、存储介质及处理器 |
CN113194045B (zh) * | 2020-01-14 | 2023-11-17 | 阿里巴巴集团控股有限公司 | 数据流量分析方法、装置、存储介质及处理器 |
CN113381939A (zh) * | 2020-03-10 | 2021-09-10 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
CN113381939B (zh) * | 2020-03-10 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
CN113886295A (zh) * | 2020-07-02 | 2022-01-04 | 北京瀚海云星科技有限公司 | 一种标签数据高效且低延时的传输方法及相关装置、系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109391522B (zh) | 2021-04-20 |
WO2019033891A1 (zh) | 2019-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109391522A (zh) | 一种基于rdma的网络流量确定方法及装置 | |
EP3588881A1 (en) | Technologies for reordering network packets on egress | |
CN106341338B (zh) | 一种报文的转发方法及装置 | |
CN103188042B (zh) | 一种ip数据包的匹配方法和匹配加速器 | |
WO2018094743A1 (zh) | 处理报文的方法和计算机设备 | |
CN113986791B (zh) | 一种智能网卡快速dma设计方法、系统、设备及终端 | |
US8194561B2 (en) | Packet relay device and method for transferring packet therein | |
CN103703441A (zh) | 一种硬盘和数据处理方法 | |
CN108199942A (zh) | 汽车诊断方法、装置、设备、系统和诊断连接设备 | |
CN114430394B (zh) | 报文处理方法、装置、电子设备及可读存储介质 | |
CN109743291A (zh) | 一种基于循环队列的遥测数据实时处理系统及方法 | |
CN106411924B (zh) | 一种创建会话转发表项的方法、转发报文的方法及装置 | |
CN108270520A (zh) | 报文传输方法、装置、存储介质及计算机设备 | |
CN109117386A (zh) | 一种网络远程读写二级存储的系统及方法 | |
CN106105098A (zh) | 交换机及业务请求报文的处理方法 | |
JP7046983B2 (ja) | パケット伝送方法及び装置 | |
CN104317716A (zh) | 分布式节点间的数据传输方法及分布式节点设备 | |
CN105635000A (zh) | 一种报文存储转发方法和电路及设备 | |
CN109361749B (zh) | 报文处理方法、相关设备及计算机存储介质 | |
CN113014510B (zh) | 惯导系统分布式测试中数据缓存方法及装置 | |
CN112398754A (zh) | 数据传输方法、装置、介质、电子设备及网络接入设备 | |
CN103558995A (zh) | 一种存储控制芯片及磁盘报文传输方法 | |
CN112422485A (zh) | 一种传输控制协议的通信方法及装置 | |
CN104780106B (zh) | 多实例实现方法及装置 | |
CN107332839B (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 |