CN112583722A - 一种数据处理的方法、装置、云设备和存储设备 - Google Patents

一种数据处理的方法、装置、云设备和存储设备 Download PDF

Info

Publication number
CN112583722A
CN112583722A CN202110213302.7A CN202110213302A CN112583722A CN 112583722 A CN112583722 A CN 112583722A CN 202110213302 A CN202110213302 A CN 202110213302A CN 112583722 A CN112583722 A CN 112583722A
Authority
CN
China
Prior art keywords
identification information
data packet
flow identification
linked list
core
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
Application number
CN202110213302.7A
Other languages
English (en)
Other versions
CN112583722B (zh
Inventor
鲁大欣
侯廷润
张飞平
王晟
王健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ziguang Hengyue Technology Co Ltd
Original Assignee
Ziguang Hengyue Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ziguang Hengyue Technology Co Ltd filed Critical Ziguang Hengyue Technology Co Ltd
Priority to CN202110213302.7A priority Critical patent/CN112583722B/zh
Publication of CN112583722A publication Critical patent/CN112583722A/zh
Application granted granted Critical
Publication of CN112583722B publication Critical patent/CN112583722B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请属于数据处理技术领域,公开了一种数据处理的方法、装置、云设备和存储设备,该方法通过捕获核心,获取接收的数据包的通信属性信息,并基于数据包的通信属性信息,获得数据包的流标识信息;通过分发核心,根据数据包的流标识信息,将数据包分发至流标识信息对应的工作核心;分别通过多个工作核心中的每一工作核心,将每一工作核心分发到的数据包以及相应的流标识信息进行存储。这样,在数据包分流的过程中,采用捕获核心、分发核心以及工作核心多核心并行化操作,极大地提高了数据处理的效率。

Description

一种数据处理的方法、装置、云设备和存储设备
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种数据处理的方法、装置、云设备和存储设备。
背景技术
数据包分流是指按照设定的数据包分流规则,将各数据包进行分类,从而获得不同的流,以便后续数据处理。
随着互联网规模的不断扩大以及5G网络的迅速普及,需要处理的数据包的数据量也不断增大,用户对数据包分流的速度要求也不断提高。
因此,如何在高通量场景下对数据包进行快速分流,是一个需要解决的技术问题。
发明内容
本申请实施例的目的在于提供一种数据处理的方法、装置、云设备和存储设备,用以在高通量场景下进行数据包分流时,提高数据包分流的速率。
一方面,提供一种数据处理的方法,应用于包括捕获核心、分发核心、多个工作核心的云设备中,包括:
通过捕获核心,获取接收的数据包的通信属性信息,并基于数据包的通信属性信息,获得数据包的流标识信息;
通过分发核心,根据数据包的流标识信息,将数据包分发至流标识信息对应的工作核心;
分别通过多个工作核心中的每一工作核心,将每一工作核心分发到的数据包以及相应的流标识信息进行存储。
在上述实现过程中,在数据包分流存储的过程中,采用捕获核心、分发核心以及工作核心多核心并行化操作,极大地提高了数据处理的效率。
较佳的,通信属性信息包括:数据包的源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议。
较佳的,基于数据包的通信属性信息,获得数据包的流标识信息,包括:
将数据包的通信属性信息中包含的各参数,分别赋值到指定结构体的相应成员中,获得第一结构体;
对第一结构体进行哈希运算,获得第一哈希值;
将第一结构体中指定成员中的参数进行交换,获得第二结构体;
对第二结构体进行哈希运算,获得第二哈希值;
基于第一哈希值和第二哈希值,获得数据包的流标识信息。
在上述实现过程中,通过指定成员中的参数交换,可以获得交互的数据包的会话属性信息,进而可以将交互的数据包划分为同一流。
较佳的,将每一工作核心分发到的数据包以及相应的流标识信息进行存储,包括:
获取每一工作核心对应的第一双向链表,第一双向链表用于存储每一工作核心对应的各流标识信息;
根据第一双向链表,获取数据包对应的流标识信息对应设置的第二双向链表,其中,不同流标识信息对应设置的第二双向链表不同;
将数据包以及相应的流标识信息,存储至相应的第二双向链表中。
在上述实现过程中,采用双向链表进行流标识信息以及数据包的存储,可以动态调整流标识信息以及数据包存储的先后顺序,便于数据查找。
较佳的,根据第一双向链表,获取数据包对应的流标识信息对应设置的第二双向链表,包括:
判断数据包对应的流标识信息是否被第一双向链表包含,若是,则确定数据包的流标识信息对应设置的第二双向链表,并将数据包以及相应的流标识信息,存储至确定出的第二双向链表中;
否则,将数据包对应的流标识信息,插入至第一双向链表中,并针对数据包对应的流标识信息,建立一个新的第二双向链表,以及将数据包以及相应的流标识信息,存储至新建的第二双向链表中;
其中,第一双向链表中的各流标识信息是按照流标识信息的数值大小顺序进行排序的。
在上述实现过程中,通过第一双向链表进行流标识信息的查找以及插入,提高了数据处理效率。
一方面,提供一种数据处理的装置,包括:
获得单元,用于通过捕获核心,获取接收的数据包的通信属性信息,并基于数据包的通信属性信息,获得数据包的流标识信息;
分发单元,用于通过分发核心,根据数据包的流标识信息,将数据包分发至流标识信息对应的工作核心;
存储单元,用于分别通过多个工作核心中的每一工作核心,将每一工作核心分发到的数据包以及相应的流标识信息进行存储。
较佳的,通信属性信息包括:数据包的源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议。
较佳的,获得单元用于:
将数据包的通信属性信息中包含的各参数,分别赋值到指定结构体的相应成员中,获得第一结构体;
对第一结构体进行哈希运算,获得第一哈希值;
将第一结构体中指定成员中的参数进行交换,获得第二结构体;
对第二结构体进行哈希运算,获得第二哈希值;
基于第一哈希值和第二哈希值,获得数据包的流标识信息。
较佳的,存储单元用于:
获取每一工作核心对应的第一双向链表,第一双向链表用于存储每一工作核心对应的各流标识信息;
根据第一双向链表,获取数据包对应的流标识信息对应设置的第二双向链表,其中,不同流标识信息对应设置的第二双向链表不同;
将数据包以及相应的流标识信息,存储至相应的第二双向链表中。
较佳的,存储单元用于:
判断数据包对应的流标识信息是否被第一双向链表包含,若是,则确定数据包的流标识信息对应设置的第二双向链表,并将数据包以及相应的流标识信息,存储至确定出的第二双向链表中;
否则,将数据包对应的流标识信息,插入至第一双向链表中,并针对数据包对应的流标识信息,建立一个新的第二双向链表,以及将数据包以及相应的流标识信息,存储至新建的第二双向链表中;
其中,第一双向链表中的各流标识信息是按照流标识信息的数值大小顺序进行排序的。
一方面,提供了一种云设备,包括处理器以及存储器,存储器存储有计算机可读取指令,当计算机可读取指令由处理器执行时,运行如上述任一种数据处理的各种可选实现方式中提供的方法的步骤。
一方面,提供了一种存储设备,其上存储有计算机程序,计算机程序被处理器执行时运行如上述任一种数据处理的各种可选实现方式中提供的方法的步骤。
本申请实施例提供的一种数据处理的方法、装置、云设备和存储设备中,通过捕获核心,获取接收的数据包的通信属性信息,并基于数据包的通信属性信息,获得数据包的流标识信息;通过分发核心,根据数据包的流标识信息,将数据包分发至流标识信息对应的工作核心;分别通过多个工作核心中的每一工作核心,将每一工作核心分发到的数据包以及相应的流标识信息进行存储。这样,在数据包分流的过程中,采用捕获核心、分发核心以及工作核心多核心并行化操作,极大地提高了数据处理的效率。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种云设备的结构示意图;
图2为本申请实施例提供的一种数据处理的方法的实施流程图;
图3为本申请实施例提供的一种双向链表存储的实施流程图;
图4为本申请实施例提供的一种双向链表更新的示意图;
图5为本申请实施例提供的一种数据处理的模块架构图;
图6为本申请实施例提供的一种数据处理的装置的结构框图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
首先对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
终端设备:可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统设备、个人导航设备、个人数字助理、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。还可预见到的是,终端设备能够支持任意类型的针对用户的接口(例如可穿戴设备)等。
五元组:数据包的源互联网协议(Internet Protocol ,IP)地址、目的IP地址、源端口号、目的端口号以及传输层协议。
四元组:数据包的源IP地址、目的IP地址、源端口号、目的端口号。
通信属性信息:与数据包通信相关的信息,如,数据包的源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议等。
数据包分流/数据分流:是指按照设定的数据包分流规则,将各数据包进行分类,从而获得不同的流,以便数据包的后续数据处理。例如,可以根据数据包的五元组将数据包进行分类,获得不同数据包组成的流。
数据平面开发套件(Data Plane Development Kit,DPDK):是一组数据平面开发工具集,可以为数据包处理提供库函数和驱动的支持。通俗的来说,DPDK是一个用来进行包数据处理加速的软件库。DPDK使用了轮询(polling)而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理。
缓存器缓存(Memory buffer,Mbuf):用于数据存储,例如,Mbuf可以保存在进程和网络接口间相互传递的用户数据,也可以存储其它数据。Mbuf在设计理念上可以对应到硬件中各种缓存(Cache)的概念,如,CPU与内存之间有缓存(Cache)。目的是可以减少进程之间的相互等待时间,降低内存分配的额外负担。
结构体:是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,每个成员可以具有不同的类型。结构体通常用来表示类型不同但是又相关的若干数据。
哈希(Hash):是把任意长度的输入信息通过散列算法变换成固定长度的输出信息。
流标识信息(Identity Document,ID):为用于区分不同的流的标识信息。
双向链表:可以简称为双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个节点开始,都可以很方便地访问它的前驱节点和后继节点。
为了在高通量场景下进行数据包分流时,可以提高数据包分流的速率,本申请实施例提供了数据处理的方法、装置、云设备和存储设备。
参阅图1所示,为本申请实施例提供的一种云设备的结构示意图,云设备可以包括:多个处理器110,例如,CPU,至少一个通信接口120,至少一个存储器130和至少一个通信总线140。
其中,不同处理器110的作用可以相同,也可以不同。
本申请实施例中,按照各处理器110的功能,还可以将各处理器110划分为捕获核心、分发核心以及多个工作核心。
其中,通信总线140用于实现这些组件直接的连接通信。本申请实施例中设备的通信接口120用于与其他节点设备进行信令或数据的通信。存储器130可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器130可选的还可以是至少一个位于远离前述处理器的存储装置。存储器130中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器110执行时,云设备执行下述图2所示方法过程。
可以理解地,该云设备可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务以及大数据和人工智能平台等基础云计算服务的云服务器。进一步的,云设备还可以是终端设备,在此不作限制。
参阅图2所示,为本申请实施例提供的一种数据处理的方法的实施流程图,执行主体可以为云设备,该方法的具体实施流程如下:
步骤200:通过捕获核心,获取接收的数据包的通信属性信息。
具体的,通过捕获核心,采用DPDK,接收发送设备发送的数据包,并对接收的数据包进行数据解析,获得相应的通信属性信息。
一种实施方式中,云设备中还可以包括数据包接收模块。数据包接收模块通过捕获核心,采用DPDK,接收发送设备发送的数据包,并通过DPDK将接收的数据包初始化至Mbuf,以及通过Mbuf获取数据包的通信属性信息。
其中,DPDK是一组数据平面开发工具集,可以为数据包处理提供库函数和驱动的支持。通俗的来说,DPDK是一个用来进行包数据处理加速的软件库。DPDK使用了轮询而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理。
与使用Linux默认的数据包接收方式或数据包捕获函数库(LibPcap)捕获方式相比,DPDK采用零拷贝、轮询无中断和CPU亲和等机制,节省了大量的CPU中断时间和内存拷贝时间,可以高速的接收处理数据包,特别适用于高通量的应用场景。此外,DPDK还提供了一套可高效处理数据包和多核心操作的函数,可以极大地提高运作效率。
其中,Mbuf用于数据存储,例如,Mbuf可以保存在进程和网络接口间相互传递的用户数据,也可以存储其它数据。Mbuf在设计理念上可以对应到硬件中各种缓存(Cache)的概念,如,CPU与内存之间有缓存(Cache)。目的是可以减少进程之间的相互等待时间,降低内存分配的额外负担。
其中,每一Mbuf,通常用于存储一个数据包,数据包中包含数据包的通信属性信息。通信属性信息为与数据包通信相关的信息。通信属性信息可以为以下参数中的任意一种或任意组合:源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议。
一种实施方式中,若确定在数据传输的过程中,传输层协议会发生变化,则可以将通信属性信息设置为数据包的五元组信息,即源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议。
例如,用户终端先采用用户数据包协议(UDP,User Datagram Protocol),向云设备发送数据包,然后,采用传输控制协议(TCP,Transmission Control Protocol)向云设备发送数据包,则设置通信属性信息为数据包的五元组信息,即源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议。
这样,就可以将采用不同传输层协议传输的数据包,划分为不同的流。
一种实施方式中,若确定在数据传输的过程中,传输层协议不会发生变化,则可以将通信属性信息设置为数据包的四元组信息,即源IP地址、目的IP地址、源端口号以及目的端口号。
这样,就可以仅用数据包的四元组信息将数据包进行分流,从而提高了数据包分流的效率。
实际应用中,通信属性信息可以根据实际应用场景中的实际需求进行设置,在此不作限制。
可选的,通过Mbuf获取数据包的通信属性信息时,可以采用以下任一方式:
第一种方式为:对Mbuf进行解析,获取数据包的通信属性信息。
这样,可以直接解析数据包。
第二种方式为:通过Mbuf操作数据包,提取数据包的通信属性信息。
这样,就可以通过操作Mbuf,操作数据包。
可选的,发送设备可以为服务器,也可以为终端设备,发送设备还可与接收数据包的云设备为同一设备,在此不作限制。
这样,就可以提取数据包的通信属性信息。
步骤201:通过捕获核心,基于数据包的通信属性信息,获得数据包的流标识信息。
具体的,通过捕获核心,按照预设分流规则,基于数据包的通信属性信息,获得数据包的流标识信息。
一种实施方式中,云设备中还包含分流规则设置模块,分流规则设置模块通过捕获核心,按照预设分流规则,基于数据包的通信属性信息,获得数据包的流标识信息。
其中,获得数据包的流标识信息时,分流规则设置模块可以通过捕获核心,采用以下任意一种方式:
第一种方式为:基于数据包的通信属性信息,确定数据包的流标识信息。
具体的,将数据包的通信属性信息中包含的各参数,分别赋值到指定结构体的相应成员中,获得第一结构体,并对第一结构体进行哈希运算,获得第一哈希值,以及基于第一哈希值,获得数据包的流标识信息。
这样,就可以将数据包的通信属性信息的哈希值,确定为数据包的流标识信息。
第二种方式为:基于数据包的通信属性信息,确定数据包对应的会话属性信息,并通过数据包的通信属性信息和会话属性信息,确定数据包的流标识信息。
具体的,将数据包的通信属性信息中包含的各参数,分别赋值到指定结构体的相应成员中,获得第一结构体,并对第一结构体进行哈希运算,获得第一哈希值,以及将第一结构体中指定成员中的参数进行交换,获得第二结构体,并对第二结构体进行哈希运算,获得第二哈希值,以及基于第一哈希值和第二哈希值,获得数据包的流标识信息。
其中,基于第一哈希值和第二哈希值,获得数据包的流标识信息时,可以采用以下任意一种方式:
第一种方式为:将第一哈希值和第二哈希值的最大值,确定为数据包的流标识信息。
第二种方式为:将第一哈希值和第二哈希值的最小值,确定为数据包的流标识信息。
这是由于在一组会话中,发送数据包的源IP地址和源端口号分别为接收数据包的目的IP地址和目的端口号,接收数据包的源IP地址和源端口号分别为发送数据包的目的IP地址和目的端口号,因此,本申请实施例中,将源IP地址、源端口号、目的IP地址和目的端口号设置为指定成员,并将第一结构体中的源IP地址与目的IP地址交换,源端口号与目的端口号交换,即可获得数据包的会话属性信息。
这样,同一组会话中的各数据包的通信属性信息可能不同,但是,各数据包的会话属性信息是相同的,进而各数据包的流标识信息是相同的,从而可以将会话中交互的数据包标识为同一条流。
一种实施方式中,指定结构体为:
Struct FLOW_RULE
{
uint8_t uiProtoId; // 传输层协议;
uint16_t uiSrcPort; // 源端口号;
uint16_t uiDstPort; // 目的端口号;
uint32_t uiSrcAddr; // 源IP地址;
uint32_t uiDstAddr; // 目的IP地址;
}
一种实施方式中,指定结构体为:
Struct FLOW_RULE
{
uint16_t uiSrcPort; // 源端口号;
uint16_t uiDstPort; // 目的端口号;
uint32_t uiSrcAddr; // 源IP地址;
uint32_t uiDstAddr; // 目的IP地址;
}
其中,结构体可以根据实际应用场景进行设置,在此不作限制。
这样,就可以将数据包的通信属性信息中的各参数分别赋值到指定结构体中的相应成员中,以便可以对通过指定结构体,对通信属性信息进行相应的哈希计算。
其中,哈希是把任意长度的输入信息通过散列算法变换成固定长度的输出信息。
一种实施方式中,将指定结构体作为键,通过DPDK中的哈希值计算函数rte_jhash,计算指定结构体对应的哈希值。
实际应用中,散列算法可以根据实际应用场景进行设置,在此不作限制。
其中,流标识信息(Identity Document,ID)用于区分不同的流。
一种实施方式中,流ID的长度为32位,可区分约40亿条流,足以满足高通量数据包场景。
进一步的,还可以将获得的流标识信息存储至Mbuf中的哈希值字段,并将各Mbuf传递至Ring中。
这样,捕获核心将各Mbuf传递至Ring中后,就可以进行下一轮的数据接收以及流标识信息的计算流程,而不需要在数据包分流结束后才进行下一轮数据接收和流标识信息的计算流程,提高了数据处理的效率。
进一步的,在执行步骤200之前,还可以通过捕获核心,预先设置分流规则。
其中,预设分流规则可以包括:通信属性信息的设置、指定结构体的设置以及流标识信息的确定方式等。
实际应用中,预设分流规则可以根据实际应用场景进行设置,在此不作限制。
这样,就可以分别确定每一数据包的流标识信息。
步骤202:通过分发核心,根据数据包的流标识信息,将数据包分发至流标识信息对应的工作核心。
具体的,确定针对流标识信息设置的工作核心,并将数据包,分发至确定出的相应工作核心。
一种实施方式中,云设备中还设置有数据包分发模块,数据包分发模块从Ring中取出一个Mbuf,并使用DPDK中的分发函数rte_distributor_process,根据该Mbuf的流标识信息,将该Mbuf分发至相应的工作核心。
其中,工作核心分发时,数据包分发模块可以采用以下几种方式:
第一种方式为:获取各工作核心对应的流标识信息,并判断上述各工作核心中,是否存在该Mbuf的流标识信息对应的工作核心,若是,则将该Mbuf分发至确定出的相应工作核心中,否则,将该Mbuf分发至一个新的工作核心,若确定不存在新的工作核心,则根据各工作核心对应的流标识信息的数量,将该Mbuf分发至对应的流标识信息的数量最少的工作核心。
这样,就可以根据各工作核心的空闲状态,将各Mbuf进行均衡分配。
第二种方式为:预先针对每一工作核心,设置对应的流标识信息,并按照工作核心和流标识信息之间的对应关系,确定该Mbuf的流标识信息对应的工作核心,以及将该Mbuf分发至确定出的相应工作核心中。
这样,就可以根据预先设置工作核心和流标识信息之间的对应关系,进行Mbuf的分发。
需要说明的是,工作核心可以为一个,也可以为多个。同一流标识信息的数据包分发至同一工作核心中,不同流标识信息的数据包可以分发至同一工作核心中,也可以分发至不同工作核心中。
一种实施方式中,将同一流标识信息的数据包分发至同一工作核心中,且不同流标识信息的数据包分发至不同工作核心中。由于同一流的流标识信息均相同,因此,同一流的数据包均会被分发至同一工作核心中,避免了多核心互相读取数据而需要加锁的操作,提高了数据处理的效率。
步骤203:分别通过多个工作核心中的每一工作核心,将每一工作核心分发到的数据包以及相应的流标识信息进行存储。
具体的,中还包含数据包存储模块。数据包存储模块,分别通过多个工作核心中的每一工作核心,将每一工作核心分发到的数据包相应的流标识信息存储至第一双向链表中,并将分发到的数据包存储至第二双向链表中。
其中,双向链表可以简称为双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个节点开始,都可以很方便地访问它的前驱节点和后继节点。
需要说明的是,每一工作核心均对应两种双向链表,即用于存储流标识信息的第一双向链表和用于存储Mbuf的第二双向链表。工作核心的第一双向链表用于存储该工作核心对应的各流标识信息。上述第一双向链表中的每一流标识信息均对应设置有一个第二双向链表。不同流标识信息对应设置的第二双向链表不同。一个流标识信息对应的第二双向链表用于存储该流标识信息对应的所有Mbuf。第一双向链表中的各流标识信息是按照流标识信息的数值大小的顺序进行排序的。
这是由于在高通量场景下,流的个数是未知的,每一流中包含的数据包的数量会呈现波动变化,例如,可能在短时间内出现大批量的流,也可能在短时间内某一流中出现大量的数据包,因此,本申请实施例中,采用双向链表的方式进行数据包以及流标识信息的存储,以便可以动态调整流标识信息以及数据包的先后顺序,可以在任意数据包或流标识信息之间插入新的数据包或新的流标识信息,显然,双向链表的结构是明显优于哈希表以及数组等结构的。
这样,通过第一双向链表存储各流标识信息,并分别针对第一双向链表中的每一流标识信息设置第二双向链表,以及通过各第二双向链表存储相应流标识信息的Mbuf,就可以通过第一双向链表,快速查找到待存储的Mbuf对应的第二双向链表,从而可以快速的将Mbuf存储至相应的第二双向链表,极大地提高了Mbuf的存储效率。
一种实施方式中,分别通过多个工作核心中的每一工作核心,执行以下步骤:
S2031:获取工作核心对应的第一双向链表。
具体的,通过工作核心使用rte_distributor_get_pkt从分发核心获取到分发的Mbuf后,获取该工作核心对应的第一双向链表。
S2032:根据第一双向链表,获取数据包对应的流标识信息对应设置的第二双向链表。
具体的,判断数据包对应的流标识信息是否被第一双向链表包含,若是,则确定数据包的流标识信息对应设置的第二双向链表,并将数据包以及相应的流标识信息,存储至确定出的第二双向链表中,否则,将数据包对应的流标识信息,插入至第一双向链表中,并针对数据包对应的流标识信息,建立一个新的第二双向链表,以及将所述数据包以及相应的流标识信息,存储至新建的第二双向链表中。
进一步的,云设备中还可以包含数据包处理模块。数据包处理模块采用工作核心,根据实际应用场景对数据包或流进行进一步处理,如,流的转发、流中数据包的检测或流中数据包的保存等,以及确定处理完成之后,释放相应的Mbuf,从而完成数据包在整个流程中的处理。
本申请实施例中,在高通量场景下,基于DPDK进行数据包的捕获和处理,并采用捕获核心、分发核心以及工作核心多核心并行化操作,极大地提高了数据处理的效率,以及采用双向链表进行流标识信息和数据包的存储,可以动态调整流标识信息以及数据包存储的先后顺序,且便于查找,进一步提高了数据处理的效率,再者,还可以根据数据包所属的会话进行分流,提高了数据包分流的准确性,可以适用于高通常场景下的大批量数据包的分流处理。
下面采用一个具体的实施例,对上述双向链表存储的方法进行进一步详细说明。参阅图3所示,为本申请实施例提供的一种双向链表存储的实施流程图。该方法的具体实施流程如下:
步骤300:工作核心获取Mbuf中包含的流标识信息。
具体的,工作核心获取Mbuf中的哈希值字段中的流标识信息。
步骤301:工作核心判断Mbuf中包含的流标识信息是否被第一双向链表包含,若是,则执行步骤302,否则,执行步骤303。
具体的,双向链表由各节点组成,每一双向链表的节点包含一个插入的流标识信息或Mbuf。双向链表中的节点中还包括头节点、尾节点以及中间节点。头节点表示双向链表中的第一个节点,尾节点表示双向链表中的最后一个节点,中间节点表示双向链表中的中间位置的节点。
为便于说明。本申请实施例中,通过总数变量表示双向链表中包含的节点的总数量,通过中间变量表示双向链表中的中间节点的位置序号,即从头节点到中间节点间的节点个数。
其中,第一双向链表中各节点的流标识信息是有序排序的。可以是按照由小到大的顺序进行排序,也可以是按照由大到小的顺序进行排序。本申请实施例中,仅以第一双向链表的流标识信息按照由小到大的顺序进行排序以及查找为例进行说明,同理,第一双向链表的流标识信息也可以按照由大到小的顺序进行排序以及查找,在此不做赘述。
一种实施方式中,总数变量可以采用uiListNum表示,中间变量可以采用uiHalfNum表示。
需要说明的是,双向链表中插入第一个节点时,该节点既是头节点,也是尾节点,还是中间节点,且uiListNum = uiHalfNum = 1。
其中,确定Mbuf中包含的流标识信息是否被第一双向链表包含时,可以通过工作核心执行以下步骤:
S3011:判断Mbuf中包含的流标识信息是否为头节点的流标识信息、尾节点的流标识信息或者中间节点的流标识信息,若是,则执行S3012,否则,执行S3013。
S3012:确定Mbuf中包含的流标识信息被第一双向链表包含。
这样,就可以确定Mbuf中包含的流标识信息为第一双向链表中的头节点的流标识信息、尾节点的流标识信息或者中间节点的流标识信息。
S3013:若确定Mbuf中包含的流标识信息大于头节点中的流标识信息并小于中间节点中的流标识信息,则执行S3014,若确定Mbuf中包含的流标识信息大于中间节点中的流标识信息并小于尾节点中的流标识信息,则执行S3015。
这样,就可以确定Mbuf中包含的流标识信息,位于第一双向链表中的前半部分,还是后半部分。
S3014:遍历头节点至中间节点之间的所有流标识信息,若确定头节点至中间节点之间的所有流标识信息中存在Mbuf中的流标识信息,则执行S3012,否则,执行S3016。
进一步的,还可以继续查找第一双向链表中的前半部分是否存在Mbuf中的流标识信息,在此不作限制。
S3015:遍历中间节点至尾节点之间的所有流标识信息,若确定中间节点至尾节点之间的所有流标识信息中存在Mbuf中的流标识信息,则执行S3012,否则,执行S3016。
进一步的,还可以继续查找第一双向链表中的后半部分是否存在Mbuf中的流标识信息,在此不作限制。
S3016:确定Mbuf中包含的流标识信息不被第一双向链表包含。
这样,确定第一双向链表中不存在Mbuf中包含的流标识信息,就可以在第一双向链表中新建一个节点,以存储Mbuf中包含的流标识信息,并针对该新建的节点,创建一个新的第二双向链表,以存储Mbuf。
步骤302:工作核心确定Mbuf中包含的流标识信息对应设置的第二双向链表,并将Mbuf存储至确定出的第二双向链表中。
具体的,执行步骤302时,可以通过工作核心采用以下两种方式:
第一种方式为:将Mbuf插入到第二双向链表中的尾节点之后。
一种实施方式中,获取Mbuf中的数据包类型,若数据包类型为第一指定类型,则将Mbuf插入到第二双向链表中的尾节点之后。
其中,第一指定类型为不需要排序的数据包类型,如,数据包类型为UDP数据包。
第二种方式为:获取Mbuf中数据包的序号,并按照序号的大小顺序,将Mbuf插入到第二双向链表中。
一种实施方式中,获取Mbuf中的数据包类型,若数据包类型为第二指定类型,则按照数据包的序号的大小顺序,将Mbuf插入到第二双向链表中。
其中,第二指定类型为需要排序的数据包类型,如,数据包类型为TCP数据包。
实际应用中,第一指定类型和第二指定类型,均可以根据实际应用场景进行设置,在此不作限制。
步骤303:工作核心将Mbuf中包含的流标识信息,插入至第一双向链表中,并针对Mbuf中包含的流标识信息,建立一个新的第二双向链表,执行步骤302。
具体的,执行步骤303时,可以通过工作核心采用以下步骤:
S3031:判断Mbuf中包含的流标识信息是否小于头节点的流标识信息或者大于尾节点的流标识信息,若是,则在执行S3032,否则,执行S3033。
S3032:在头节点之前或尾节点之后插入节点,并更新总数变量以及中间变量。
具体的,在在头节点之前或尾节点之后插入节点时,可以通过工作核心,执行以下步骤:
若确定Mbuf中包含的流标识信息小于头节点的流标识信息,则在头节点之前插入节点。
若确定Mbuf中包含的流标识信息大于尾节点的流标识信息,则在尾节点之后插入节点。
其中,在更新总数变量以及中间变量时,工作核心可以采用以下方式:
若在中间节点之前插入节点,则总数变量加1,如果2*中间变量 > 总数变量,则中间节点需要前移,否则,中间变量加1。
若在中间节点之后插入节点,则总数变量加1,如果2*中间变量< 总数变量,则中间节点需要后移,且中间变量加1。
一种实施方式中,若确定Mbuf中包含的流标识信息小于头节点的流标识信息,则在头节点之前插入节点,并将uiListNum加1,2*uiHalfNum > uiListNum,则中间节点需要前移,否则,uiHalfNum加1。
例如,假设uiListNum为3,uiHalfNum为2,工作核心在头节点之前插入节点,则uiListNum更新为4,由于2*uiHalfNum=4,因此,将uiHalfNum更新为3。
又例如,假设uiListNum为4,uiHalfNum为3,工作核心在头节点之前插入节点,则uiListNum更新为5,由于2*uiHalfNum=6>5,因此,将中间节点需要前移,且uiHalfNum不变,仍为3。
一种实施方式中,若确定Mbuf中包含的流标识信息大于尾节点的流标识信息,则在尾节点之后插入节点,并将uiListNum加1,如果2*uiHalfNum < uiListNum,则中间节点需要后移,且uiHalfNum加1。
例如,假设uiListNum为3,uiHalfNum为2,工作核心在尾节点之后插入节点,则uiListNum更新为4,由于2*uiHalfNum=4,因此,将uiHalfNum不变。
又例如,假设uiListNum为4,uiHalfNum为2,工作核心在尾节点之后插入节点,则uiListNum更新为5,由于2*uiHalfNum=4<5,因此,将中间节点后移,并将uiHalfNum+1=3。
这样,就可以在第一双向链表中插入节点后,更新第一双向链表的总数变量以及中间变量。
S3033:若确定Mbuf中包含的流标识信息大于头节点中的流标识信息并小于中间节点中的流标识信息,则执行S3034,若确定Mbuf中包含的流标识信息大于中间节点中的流标识信息并小于尾节点中的流标识信息,则执行S3036。
这样,就可以判断Mbuf中包含的流标识信息位于第一双向链表的前半部分,还是后半部分。
S3034:遍历头节点至中间节点之间的所有流标识信息,若确定头节点至中间节点之间存在两个相邻节点,前一个节点的流标识信息小于Mbuf中的流标识信息,后一个节点的流标识信息大于Mbuf中的流标识信息,则在上述两个相邻节点之间新建一个节点。
S3035:针对新建的节点,创建相应的第二双向链表。
S3036:遍历中间节点至尾节点之间的所有流标识信息,若确定中间节点至尾节点之间存在两个相邻节点,前一个节点的流标识信息小于Mbuf中的流标识信息,后一个节点的流标识信息大于Mbuf中的流标识信息,则在上述两个相邻节点之间新建一个节点,执行S3035。
进一步的,在插入新的节点之后,更新总数变量以及中间变量,具体步骤参见上述S3032,在此不做赘述。
参阅图4所示,为本申请实施例提供的一种双向链表更新的示意图。假设待插入的节点为流节点M,云设备确定双向链表中的流节点N中的流标识信息小于流节点M中的流标识信息,且流节点N+1中的流标识信息大于节点M中的流标识信息,则将节点M插入至流节点N和流节点N+1之间。其中,N和M均为正整数。
进一步的,在创建第二双向链表之后,就可以向第二双向链表中插入Mbuf。具体的,可以先获取Mbuf中的数据包类型,若确定数据包类型为第二指定类型,则按照数据包的序号的大小顺序,将Mbuf插入到第二双向链表中。
其中,可以采用在第一双向链表中插入节点时相似的原理,将Mbuf插入到第二双向链表中,在此不做赘述。
在高通量场景下,采用这种方式进行节点的查找以及插入,极大地减小了节点查找以及插入的时间复杂度,减少了耗费的时间,提高了数据处理效率。
参阅图5所示,为一种数据处理的模块架构图,云设备包括数据包接收模块501、分流规则设置模块502、数据包分发模块503、数据包存储模块504以及数据包处理模块505。
数据包接收模块501和分流规则设置模块502,使用捕获核心,接收数据包,并基于数据包的通信属性信息,确定数据包流标识信息。具体步骤参见上述步骤200-步骤201,在此不做赘述。
数据包分发模块503,使用分发核心,根据数据包的流标识信息,将数据包分发至流标识信息对应的工作核心。具体步骤参见上述步骤202,在此不做赘述。
数据包存储模块504和数据包处理模块505,使用工作核心,将数据包以及相应的流标识信息存储至相应的双向链表中,以及针对双向链表中的数据包和流,进行后续的数据处理。具体步骤参见上述步骤203,在此不做赘述。
传统技术中,通常采用单核心进行数据处理,这需要将单个数据包或单批数据包从接收至分流存储流程结束后,才能进行下一批次的数据处理,显然,传统技术中的数据包分流处理的效率较低,不能适用于高通量数据包分流的场景。再者,传统技术中,通常采用哈希表结构存储流以及数据包,但是,由于高通量场景下流的数量以及数据包的数量具有不确定的特点,因此,难以对哈希表存储的流和数据包进行查找,给用户带来了不变,进一步降低了数据处理速率。
而本申请实施例中,在高通量场景下,基于DPDK进行数据包的捕获和处理,并采用捕获核心、分发核心以及工作核心多核心并行化操作,极大地提高了数据处理的效率,以及采用双向链表进行流标识信息和数据包的存储,可以动态调整流标识信息以及数据包存储的先后顺序,且便于查找,进一步提高了数据处理的效率,再者,还可以根据数据包所属的会话进行分流,提高了数据包分流的准确性,可以适用于高通常场景下的大批量数据包的分流处理。
基于同一发明构思,本申请实施例中还提供了一种数据处理的装置,由于上述装置及设备解决问题的原理与一种数据处理的方法相似,因此,上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图6所示,其为本申请实施例提供的一种数据处理的装置的结构示意图,包括:
获得单元601,用于通过捕获核心,获取接收的数据包的通信属性信息,并基于数据包的通信属性信息,获得数据包的流标识信息;
分发单元602,用于通过分发核心,根据数据包的流标识信息,将数据包分发至流标识信息对应的工作核心;
存储单元603,用于分别通过多个工作核心中的每一工作核心,将每一工作核心分发到的数据包以及相应的流标识信息进行存储。
较佳的,通信属性信息包括:数据包的源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议。
较佳的,获得单元601用于:
将数据包的通信属性信息中包含的各参数,分别赋值到指定结构体的相应成员中,获得第一结构体;
对第一结构体进行哈希运算,获得第一哈希值;
将第一结构体中指定成员中的参数进行交换,获得第二结构体;
对第二结构体进行哈希运算,获得第二哈希值;
基于第一哈希值和第二哈希值,获得数据包的流标识信息。
较佳的,存储单元603用于:
获取每一工作核心对应的第一双向链表,第一双向链表用于存储每一工作核心对应的各流标识信息;
根据第一双向链表,获取数据包对应的流标识信息对应设置的第二双向链表,其中,不同流标识信息对应设置的第二双向链表不同;
将数据包以及相应的流标识信息,存储至相应的第二双向链表中。
较佳的,存储单元603用于:
判断数据包对应的流标识信息是否被第一双向链表包含,若是,则确定数据包的流标识信息对应设置的第二双向链表,并将数据包以及相应的流标识信息,存储至确定出的第二双向链表中;
否则,将数据包对应的流标识信息,插入至第一双向链表中,并针对数据包对应的流标识信息,建立一个新的第二双向链表,以及将数据包以及相应的流标识信息,存储至新建的第二双向链表中;
其中,第一双向链表中的各流标识信息是按照流标识信息的数值大小顺序进行排序的。
本申请实施例提供的一种数据处理的方法、装置、云设备和存储设备中,通过捕获核心,获取接收的数据包的通信属性信息,并基于数据包的通信属性信息,获得数据包的流标识信息;通过分发核心,根据数据包的流标识信息,将数据包分发至流标识信息对应的工作核心;分别通过多个工作核心中的每一工作核心,将每一工作核心分发到的数据包以及相应的流标识信息进行存储。这样,在数据包分流存储的过程中,采用捕获核心、分发核心以及工作核心多核心并行化操作,极大地提高了数据处理的效率。
本申请实施例中,一种云设备,包括处理器以及存储器,存储器存储有计算机可读取指令,当计算机可读取指令由处理器执行时,实现上述实施例中的各个步骤。
本申请实施例中,一种存储设备,其上存储有计算机程序,计算机程序被处理器执行时,使得通信设备可以执行上述实施例中的各个步骤。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种数据处理的方法,其特征在于,应用于包括捕获核心、分发核心、多个工作核心的云设备中,所述方法包括:
通过捕获核心,获取接收的数据包的通信属性信息,并基于所述数据包的通信属性信息,获得所述数据包的流标识信息;
通过分发核心,根据所述数据包的流标识信息,将所述数据包分发至所述流标识信息对应的工作核心;
分别通过所述多个工作核心中的每一工作核心,将所述每一工作核心分发到的数据包以及相应的流标识信息进行存储。
2.如权利要求1所述的方法,其特征在于,所述通信属性信息包括:
数据包的源互联网协议IP地址、目的IP地址、源端口号、目的端口号以及传输层协议。
3.如权利要求1所述的方法,其特征在于,基于所述数据包的通信属性信息,获得所述数据包的流标识信息,包括:
将所述数据包的通信属性信息中包含的各参数,分别赋值到指定结构体的相应成员中,获得第一结构体;
对所述第一结构体进行哈希运算,获得第一哈希值;
将所述第一结构体中指定成员中的参数进行交换,获得第二结构体;
对所述第二结构体进行哈希运算,获得第二哈希值;
基于所述第一哈希值和所述第二哈希值,获得所述数据包的流标识信息。
4.如权利要求1-3任一项所述的方法,其特征在于,将所述每一工作核心分发到的数据包以及相应的流标识信息进行存储,包括:
获取所述每一工作核心对应的第一双向链表,所述第一双向链表用于存储所述每一工作核心对应的各流标识信息;
根据所述第一双向链表,获取所述数据包对应的流标识信息对应设置的第二双向链表,其中,不同流标识信息对应设置的第二双向链表不同;
将所述数据包以及相应的流标识信息,存储至相应的第二双向链表中。
5.如权利要求4所述的方法,其特征在于,根据所述第一双向链表,获取所述数据包对应的流标识信息对应设置的第二双向链表,包括:
判断所述数据包对应的流标识信息是否被所述第一双向链表包含,若是,则确定所述数据包的流标识信息对应设置的第二双向链表,并将所述数据包以及相应的流标识信息,存储至确定出的第二双向链表中;
否则,将所述数据包对应的流标识信息,插入至所述第一双向链表中,并针对所述数据包对应的流标识信息,建立一个新的第二双向链表,以及将所述数据包以及相应的流标识信息,存储至新建的第二双向链表中;
其中,所述第一双向链表中的各流标识信息是按照流标识信息的数值大小顺序进行排序的。
6.一种数据处理的装置,其特征在于,包括:
获得单元,用于通过捕获核心,获取接收的数据包的通信属性信息,并基于所述数据包的通信属性信息,获得所述数据包的流标识信息;
分发单元,用于通过分发核心,根据所述数据包的流标识信息,将所述数据包分发至所述流标识信息对应的工作核心;
存储单元,用于分别通过多个工作核心中的每一工作核心,将所述每一工作核心分发到的数据包以及相应的流标识信息进行存储。
7.如权利要求6所述的装置,其特征在于,所述获得单元用于:
将所述数据包的通信属性信息中包含的各参数,分别赋值到指定结构体的相应成员中,获得第一结构体;
对所述第一结构体进行哈希运算,获得第一哈希值;
将所述第一结构体中指定成员中的参数进行交换,获得第二结构体;
对所述第二结构体进行哈希运算,获得第二哈希值;
基于所述第一哈希值和所述第二哈希值,获得所述数据包的流标识信息。
8.如权利要求6或7所述的装置,其特征在于,所述存储单元用于:
获取所述每一工作核心对应的第一双向链表,所述第一双向链表用于存储所述每一工作核心对应的各流标识信息;
根据所述第一双向链表,获取所述数据包对应的流标识信息对应设置的第二双向链表,其中,不同流标识信息对应设置的第二双向链表不同;
将所述数据包以及相应的流标识信息,存储至相应的第二双向链表中。
9.一种云设备,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1-5任一所述方法中的步骤。
10.一种存储设备,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时运行如权利要求1-5任一所述方法中的步骤。
CN202110213302.7A 2021-02-26 2021-02-26 一种数据处理的方法、装置、云设备和存储设备 Active CN112583722B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110213302.7A CN112583722B (zh) 2021-02-26 2021-02-26 一种数据处理的方法、装置、云设备和存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110213302.7A CN112583722B (zh) 2021-02-26 2021-02-26 一种数据处理的方法、装置、云设备和存储设备

Publications (2)

Publication Number Publication Date
CN112583722A true CN112583722A (zh) 2021-03-30
CN112583722B CN112583722B (zh) 2021-05-28

Family

ID=75114039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110213302.7A Active CN112583722B (zh) 2021-02-26 2021-02-26 一种数据处理的方法、装置、云设备和存储设备

Country Status (1)

Country Link
CN (1) CN112583722B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312605A (zh) * 2021-04-15 2021-08-27 北京交通大学 一种数据传输方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104734993A (zh) * 2013-12-24 2015-06-24 杭州华为数字技术有限公司 数据分流方法及分流器
US20160105377A1 (en) * 2014-10-14 2016-04-14 Fujitsu Limited Information processing system, control device and control method
US20180014081A1 (en) * 2016-07-11 2018-01-11 Harmonic, Inc. Multiple core software forwarding
CN110505148A (zh) * 2019-07-24 2019-11-26 烽火通信科技股份有限公司 实现加权多路径的方法及系统
CN110609852A (zh) * 2019-07-16 2019-12-24 招联消费金融有限公司 流式数据处理方法、装置、计算机设备和存储介质
CN111859062A (zh) * 2019-04-30 2020-10-30 大唐移动通信设备有限公司 一种基于dpdk的网络数据处理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104734993A (zh) * 2013-12-24 2015-06-24 杭州华为数字技术有限公司 数据分流方法及分流器
US20160105377A1 (en) * 2014-10-14 2016-04-14 Fujitsu Limited Information processing system, control device and control method
US20180014081A1 (en) * 2016-07-11 2018-01-11 Harmonic, Inc. Multiple core software forwarding
CN111859062A (zh) * 2019-04-30 2020-10-30 大唐移动通信设备有限公司 一种基于dpdk的网络数据处理方法和装置
CN110609852A (zh) * 2019-07-16 2019-12-24 招联消费金融有限公司 流式数据处理方法、装置、计算机设备和存储介质
CN110505148A (zh) * 2019-07-24 2019-11-26 烽火通信科技股份有限公司 实现加权多路径的方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312605A (zh) * 2021-04-15 2021-08-27 北京交通大学 一种数据传输方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN112583722B (zh) 2021-05-28

Similar Documents

Publication Publication Date Title
CN108429701B (zh) 网络加速系统
WO2021088964A1 (zh) 推理系统、推理方法、电子设备及计算机存储介质
WO2020164476A1 (zh) 数据下载的方法及相关装置
US20170142454A1 (en) Third-party video pushing method and system
CN109889521B (zh) 存储器、通信通道复用实现方法、装置和设备
CN112751845A (zh) 网络协议解析方法、系统及装置
CN112583722B (zh) 一种数据处理的方法、装置、云设备和存储设备
CN107666474B (zh) 一种网络报文处理方法、装置及网络服务器
CN112188144B (zh) 音频的发送方法及装置、存储介质和电子装置
CN109214855B (zh) 素材接收方法、装置及系统
CN113573093A (zh) 直播数据分析方法、装置、电子设备及存储介质
CN112672381A (zh) 一种数据关联方法、装置、终端设备及介质
CN115718868A (zh) 模型训练方法、装置及系统
CN106716974B (zh) 访问分发方法、装置及系统
WO2022257247A1 (zh) 数据处理方法、装置及计算机可读存储介质
CN111181875B (zh) 带宽调节方法及装置
CN112073215B (zh) 一种实现应用的方法及业务控制器
WO2018159677A1 (ja) データ処理装置、ネットワークシステム、パケット順序制御回路、およびデータ処理方法
US11388210B1 (en) Streaming analytics using a serverless compute system
US20220342524A1 (en) Online conference tools for meeting-assisted content editing and posting content on a meeting board
CN113126958B (zh) 基于信息流的决策调度定制方法和系统
CN114866790A (zh) 直播流调度方法及装置
CN110336758B (zh) 一种虚拟路由器中的数据分发方法及虚拟路由器
CN108769274B (zh) 一种对话式文件传输方法、装置和设备/终端/服务器
US9069625B2 (en) Method of parallel processing of ordered data streams

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