CN113891396B - 数据包的处理方法、装置、计算机设备和存储介质 - Google Patents

数据包的处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN113891396B
CN113891396B CN202111022388.1A CN202111022388A CN113891396B CN 113891396 B CN113891396 B CN 113891396B CN 202111022388 A CN202111022388 A CN 202111022388A CN 113891396 B CN113891396 B CN 113891396B
Authority
CN
China
Prior art keywords
data
processing
packet
queue
thread
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
Application number
CN202111022388.1A
Other languages
English (en)
Other versions
CN113891396A (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.)
Kingsignal Technology Co Ltd
Original Assignee
Kingsignal 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 Kingsignal Technology Co Ltd filed Critical Kingsignal Technology Co Ltd
Priority to CN202111022388.1A priority Critical patent/CN113891396B/zh
Publication of CN113891396A publication Critical patent/CN113891396A/zh
Application granted granted Critical
Publication of CN113891396B publication Critical patent/CN113891396B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/06Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
    • H04W28/065Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information using assembly or disassembly of packets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及一种数据包的处理方法、装置、计算机设备和存储介质。所述方法包括:依次接收不同的数据包,数据包中包括传输控制协议数据;将接收到的各数据包,按照各数据包内的通道端标识存入各队列;基于指针操作分别对存入各队列中的数据包进行解码,得到相应通信协议的目标数据;其中,不同队列中数据包的解码是在对应CPU核的第一线程上完成的,且在解码过程中不拷贝数据包;利用局部变量将目标数据从第一线程传递至CPU核的第二线程,以通过第二线程对目标数据进行处理;其中,局部变量不加锁;将经过处理的目标数据进行封装,并将封装后的目标数据进行转发。采用本方法能够提高业务模块的性能。

Description

数据包的处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及移动通信领域,特别是涉及一种数据包的处理方法、装置、计算机设备和存储介质。
背景技术
随着5G网络的发展,网络带宽的提高,对网络信息传输的速度有着更高的要求。DPDK是一个开源的数据平面开发工具集,是为了解决数据包处理性能问题而提供的一个用户空间下的高效数据包处理函数库和驱动集。5G网络中用户面UPF使用DPDK加速,使得入口收包不再是信息传输速度的瓶颈,这就使得业务处理模块的性能至关重要。
在传统的业务处理模块中,采用基于linux中的socket版本进行转发,其性能依赖于linux内核转发数据包的效率,因为该技术需要在内核态和用户态之间切换,不能实现业务层数据包的零拷贝,所以该技术中业务处理模块的性能不能满足现在的需求。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高业务处理模块的性能的数据包的处理方法、装置、计算机设备和存储介质。
一种数据包的处理方法,所述方法包括:
依次接收不同的数据包,所述数据包中包括传输控制协议数据;
将接收到的各所述数据包,按照各所述数据包内的通道端标识存入各队列;
基于指针操作分别对存入各所述队列中的数据包进行解码,得到相应通信协议的目标数据;其中,不同所述队列中数据包的解码是在对应CPU核的第一线程上完成的,且在解码过程中不拷贝所述数据包;
利用局部变量将所述目标数据从所述第一线程传递至所述CPU核的第二线程,以通过所述第二线程对所述目标数据进行处理;其中,所述局部变量不加锁;
将经过处理的所述目标数据进行封装,并将封装后的目标数据进行转发。
在其中一个实施例中,所述将接收到的各所述数据包,按照各所述数据包内的通道端标识存入各队列之前,所述方法还包括:
利用DPDK开发包和NFF开发包对所述队列进行设置,并通过多队列网卡支持多个所述队列的收发操作;
其中,多个所述队列支持对所述数据包进行收发操作,多个所述队列对应多个所述CPU核。
在其中一个实施例中,所述将接收到的各所述数据包,按照各所述数据包内的通道端标识存入各队列包括:
将各所述数据包内的通道端标识除以所述队列数量,将所得的余数作为相应所述队列的队列索引;
利用所述队列索引,将各所述数据包发送到相同所述队列。
在其中一个实施例中,所述以通过所述第二线程对所述目标数据进行处理包括:
基于所述通道端标识和包检测规则之间的第一哈希映射流表生成上行路径,当首次获取所述包检测规则时,通过所述通道端标识查询所述第一哈希映射流表,以获取到所述第一哈希映射流表中的包检测规则,并将所述包检测规则进行缓存;当非首次获取所述包检测规则时,直接从缓存中获取所述包检测规则;
基于终端的IP地址和所述包检测规则之间的第二哈希映射流表生成下行路径,当首次获取所述包检测规则时,通过所述终端的IP地址查询所述第二哈希映射流表,以获取到所述第一哈希映射流表中的包检测规则,并将所述包检测规则进行缓存,当非首次获取所述包检测规则时,直接从缓存中获取所述包检测规则。
在其中一个实施例中,所述方法还包括:
根据所述包检测规则确定所述数据包的业务类型;
根据所述业务类型对所述数据包进行业务处理;所述业务处理包括ARP处理、ICMP处理、GTP处理或DN处理。
在其中一个实施例中,所述通过所述第二线程对所述目标数据进行处理包括:
当所述第二线程对所述目标数据进行处理时,基于处理函数对所述目标数据进行处理;所述处理函数包括大函数。
一种数据包的处理装置,所述装置包括:
接收模块,用于依次接收不同的数据包,所述数据包中包括传输控制协议数据;
分发模块,用于将接收到的各所述数据包,按照各所述数据包内的通道端标识存入各队列;
解码模块,用于基于指针操作分别对存入各所述队列中的数据包进行解码,得到相应通信协议的目标数据;其中,不同所述队列中数据包的解码是在对应CPU核的第一线程上完成的,且在解码过程中不拷贝所述数据包;
处理模块,用于利用局部变量将所述目标数据从所述第一线程传递至所述CPU核的第二线程,以通过所述第二线程对所述目标数据进行处理;其中,所述局部变量不加锁;
转发模块,用于将经过处理的所述目标数据进行封装,并将封装后的目标数据进行转发。
在其中一个实施例中,所述装置还包括:
设置模块,用于利用DPDK开发包和NFF开发包对所述队列进行设置,并通过多队列网卡支持多个所述队列的收发操作;其中,多个所述队列支持对所述数据包进行收发操作,多个所述队列对应多个所述CPU核。
在其中一个实施例中,所述分发模块,还用于将各所述数据包内的通道端标识除以所述队列数量,将所得的余数作为相应所述队列的队列索引;利用所述队列索引,将各所述数据包发送到相同所述队列。
在其中一个实施例中,所述处理模块,还用于基于所述通道端标识和包检测规则之间的第一哈希映射流表生成上行路径,当首次获取所述包检测规则时,通过所述通道端标识查询所述第一哈希映射流表,以获取到所述第一哈希映射流表中的包检测规则,并将所述包检测规则进行缓存;当非首次获取所述包检测规则时,直接从缓存中获取所述包检测规则;
基于终端的IP地址和所述包检测规则之间的第二哈希映射流表生成下行路径,当首次获取所述包检测规则时,通过所述终端的IP地址查询所述第二哈希映射流表,以获取到所述第一哈希映射流表中的包检测规则,并将所述包检测规则进行缓存,当非首次获取所述包检测规则时,直接从缓存中获取所述包检测规则。
在其中一个实施例中,所述处理模块,还用于根据所述包检测规则确定所述数据包的业务类型;根据所述业务类型对所述数据包进行业务处理;所述业务处理包括ARP处理、ICMP处理、GTP处理或DN处理。
在其中一个实施例中,所述处理模块,还用于当所述第二线程对所述目标数据进行处理时,基于处理函数对所述目标数据进行处理;所述处理函数包括大函数。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述数据包的处理方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述数据包的处理方法的步骤。
上述数据包的处理方法、装置、计算机设备和存储介质,依次接收不同的数据包;数据包中包括传输控制协议数据;将接收到的各数据包,按照各数据包内的通道端标识存入各队列;基于指针操作分别对存入各队列中的数据包进行解码,得到相应通信协议的目标数据;其中,不同队列中数据包的解码是在对应CPU核的第一线程上完成的,且在解码过程中不拷贝数据包;利用局部变量将目标数据从第一线程传递至CPU核的第二线程,以通过第二线程对目标数据进行处理;其中,局部变量不加锁;将经过处理的目标数据进行封装,并将封装后的目标数据进行转发。通过按照各数据包内的通道端标识存入各队列,可以实现消息的有序分发;对队列中的数据包进行指针操作可以实现数据包的零拷贝,从而提高数据包的处理速度;不同队列中数据包的处理有对应的CPU核,可以减少上下文的数据传递;使用局部变量来实现不加锁,减少因为资源竞争所带来的等待时间。因此,通过上述操作可以有效提高业务处理模块的性能。
附图说明
图1为一个实施例中数据包的处理方法的应用环境图;
图2为一个实施例中数据包的处理方法的流程示意图;
图3为一个实施例中设置多队列的示意图;
图4为一个实施例中数据包传输过程的示意图;
图5为一个实施例中业务分类的流程示意图;
图6为一个实施例中业务分类的示意图;
图7为一个实施例中数据包的处理装置的结构框图;
图8为另一个实施例中数据包的处理装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明做进一步详细说明。
本申请提供的数据包的处理方法,可以应用于如图1所示的应用环境中。在该应用环境中,包括终端102和服务器104。
服务器104依次接收不同的数据包,数据包中包括传输控制协议数据;将接收到的各数据包,按照各数据包内的通道端标识存入各队列;基于指针操作分别对存入各队列中的数据包进行解码,得到相应通信协议的目标数据;其中,不同队列中数据包的解码是在对应CPU(central processing unit,中央处理器)核的第一线程上完成的,且在解码过程中不拷贝数据包;利用局部变量将目标数据从第一线程传递至CPU核的第二线程,以通过第二线程对目标数据进行处理;其中,局部变量不加锁;将经过处理的目标数据进行封装,并将封装后的目标数据进行转发。
其中,终端102可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
服务器104可以是独立的物理服务器,也可以是区块链系统中的服务节点,该区块链系统中的各服务节点之间形成组成点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。
此外,服务器104还可以是多个物理服务器构成的服务器集群,可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
终端102与服务器104之间可以通过蓝牙、USB(Universal Serial Bus,通用串行总线)或者网络等通讯连接方式进行连接,本申请在此不做限制。
在一个实施例中,如图2所示,提供了一种数据包的处理方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
S202,依次接收不同的数据包,数据包中包括传输控制协议数据。
其中,数据包是指GPRS(General packet radio service,通用无线分组业务)隧道协议数据包,该数据包中除了封装传输控制协议数据,还可以包括用户数据报协议数据和因特网控制报文协议数据。
在一个实施例中,S202之前,该方法还包括:
服务器利用DPDK(Data Plane Development Kit,数据平面开发套件)开发包和NFF(nff-go)开发包对队列进行设置,并通过多队列网卡支持多个队列的收发操作,如图3。其中,多个队列支持对数据包进行收发操作,多个队列对应多个CPU核,其中对列包括环形队列;多队列网卡包括:intel x710、82599。此外,NFF开发包是网络功能框架,提供CPU多核的动态绑定。
在一个实施例中,服务器可以使用ethtool-l ethX来检查网卡是否支持多队列。其中,ethX指的是网卡名称,ethtool–l ethX指的是网卡ethX的查询指令。例如,当网卡名称为eth0时,服务器使用ethtool-l eth0检查网卡是否支持多队列,当得到结果大于1时,则该网卡可以支持多队列。
在一个实施例中,服务器通过NFF开发包可以对动态增加实例个数的上限进行设置。根据数据包处理线程的数量和队列的数量,选用合理的实例与队列的对应关系,例如,当设置了16个收发队列时,可以设置动态增加实例个数的上限是16,其中实例是指数据包处理线程。
S204,将接收到的各数据包,按照各数据包内的通道端标识存入各队列。
其中,通道端标识是GPRS隧道协议数据包中的重要字段,用于确定GPRS隧道协议数据的传输通道。
在一个实施例中,服务器将各数据包内的通道端标识除以队列数量,将所得的余数作为相应队列的队列索引;利用队列索引,将各数据包发送到相同队列。
在一个实施例中,基于DPDK开发包配置的各队列可以为无锁环形队列,当有两个数据包同时存入同一个队列时,可以使用CAS指令判断是否发生冲突,当有冲突发生时,则数据包存入队列失败,重新进行存入操作。其中CAS(Compare and swap,比较并交换)指令为原子操作,不会被其他线程中断,可以得到最新的入队位置。
S206,基于指针操作分别对存入各队列中的数据包进行解码,得到相应通信协议的目标数据;其中,不同队列中数据包的解码是在对应CPU核的第一线程上完成的,且在解码过程中不拷贝数据包。
在一个实施例中,各队列使用数组构成的环形队列,环形队列里的数组存储的是指向存储数据包的内存地址,环形队列中原先的指针指向存储数据包的内存地址。当收包的时候,服务器会另外申请一个缓存区,将数据包映射至用户空间,随后用指向这个缓存区的指针替换环形队列中原先的指针,使CPU核的第一线程可以直接访问缓存区里的数据包,进行解码,以此实现了零拷贝。当数据包处理完成时,释放该缓存区。
S208,利用局部变量将目标数据从第一线程传递至CPU核的第二线程,以通过第二线程对目标数据进行处理;其中,局部变量不加锁。
其中,对目标数据进行处理时,需要利用控制面的包检测规则来对目标数据进行识别,根据识别结果对应的转发规则,来确定目标数据的上行路径或下行路径。
在一个实施例中,服务器基于通道端标识和包检测规则之间的第一哈希映射流表生成上行路径,当首次获取包检测规则时,通过通道端标识查询第一哈希映射流表,以获取到第一哈希映射流表中的包检测规则,并将包检测规则进行缓存;当非首次获取包检测规则时,直接从缓存中获取包检测规则。
服务器基于终端的IP(Internet Protocol,网际互连协议)地址和包检测规则之间的第二哈希映射流表生成下行路径,当首次获取包检测规则时,通过终端的IP地址查询第二哈希映射流表,以获取到第一哈希映射流表中的包检测规则,并将包检测规则进行缓存,当非首次获取包检测规则时,直接从缓存中获取包检测规则。
在一个实施例中,服务器基于Golang(计算机编程语言)的SyncMap建立第一哈希映射流表和第二哈希映射流表。第一哈希映射流表和第二哈希映射流表的映射关系都由PFCP(Packet Forwarding Control Protocol,数据包转发控制协议)会话流程得到,其中,PFCP会话创建消息中携带通道端标识、终端的IP地址等相关信息,并且PFCP会话可以激活对应的包检测规则。
此外,第一哈希映射流表和第二哈希映射流表是异步更新,当有PFCP会话更新消息时,对第一哈希映射流表和第二哈希映射流表进行更新,并清理之前的缓存数据。
在一个实施例中,当第二线程对目标数据进行处理时,服务器基于处理函数对目标数据进行处理;处理函数包括大函数。其中,大函数指大型函数,大型函数里面包括很多参数和临时变量。
此外,处理函数使用大函数可以减少函数的调用层次,减少处理节点的个数,减少CPU间的数据交换,数据交换是指对处理流程中的上下文信息进行交互,该上下文信息包括用户识别信息、数据网络转发信息、QoS(Quality of Service,服务质量)规则、基站转发信息。
在一个实施例中,目标数据对应的包检测规则会提供一个转发操作规则,该转发操作规则会指示服务器处理已经完成匹配包检测规则的目标数据。处理包括丢弃数据包、转发数据包、缓冲数据包。
S210,将经过处理的目标数据进行封装,并将封装后的目标数据进行转发。
在一个实施例中,包检测规则中的转发操作规则会包含数据包的转发信息,转发信息包括转发目的接口、目标网络实例、是否重定向处理。服务器可以通过这些转发信息,将数据包转发到指定的路径。
这里结合图4对数据包的传输过程进行描述,具体内容包括:
网卡1收到数据包后,数据包通过N3口进入业务处理模块,在数据包完成处理后,数据包通过N6口到达网卡2,网卡2将数据包进行转发,或者,网卡2收到数据包后,数据包通过N6口进入业务处理模块,在数据包完成处理后,数据包通过N3口到达网卡1,网卡1将数据包进行转发。
上述数据包的处理方法中,依次接收不同的数据包;数据包中包括传输控制协议数据;将接收到的各数据包,按照各数据包内的通道端标识存入各队列;基于指针操作分别对存入各队列中的数据包进行解码,得到相应通信协议的目标数据;其中,不同队列中数据包的解码是在对应CPU核的第一线程上完成的,且在解码过程中不拷贝数据包;利用局部变量将目标数据从第一线程传递至CPU核的第二线程,以通过第二线程对目标数据进行处理;其中,局部变量不加锁;将经过处理的目标数据进行封装,并将封装后的目标数据进行转发。通过按照各数据包内的通道端标识存入各队列,可以实现TCP消息的有序分发;对队列中的数据包进行指针操作可以实现数据包的零拷贝,从而提高数据包的处理速度;不同队列中数据包的处理有对应的CPU核,可以减少上下文的数据传递;使用局部变量来实现不加锁,减少因为资源竞争所带来的等待时间。因此,通过上述操作可以有效提高业务处理模块的性能。
在一个实施例中,如图5所示,S208具体还包括:
S502,根据包检测规则确定数据包的业务类型。
其中,业务类型包括寻址业务、返回出错信息业务、传输业务、标识路径业务。
S504,根据业务类型对数据包进行业务处理。
其中,业务处理包括ARP(Address Resolution Protocol,地址解析协议)处理、ICMP(Internet Control Message Protocol,因特网控制报文协议)处理、GTP(GPRSTunneling Protocol,GPRS隧道协议)处理或DN(Distinguished Name,完全限定名)处理,如图6。
例如,当业务类型为寻址业务类时,服务器对数据包的目标的物理地址进行寻找,服务器将包含目标IP地址的物理地址请求信息广播到局域网络上的所有终端,并接收终端返回的消息,通过该信息可以确定目标的物理地址。
上述实施例中,通过确定数据包的业务类型,对数据包进行业务分类,能够提高业务模块的处理性能。
应该理解的是,虽然图2、5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种数据包的处理装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:接收模块702、分发模块704、解码模块706、处理模块708和转发模块710,其中:
接收模块702,用于依次接收不同的数据包,数据包中包括传输控制协议数据;
分发模块704,用于将接收到的各数据包,按照各数据包内的通道端标识存入各队列;
解码模块706,用于基于指针操作分别对存入各队列中的数据包进行解码,得到相应通信协议的目标数据;其中,不同队列中数据包的解码是在对应CPU核的第一线程上完成的,且在解码过程中不拷贝数据包;
处理模块708,用于利用局部变量将目标数据从第一线程传递至CPU核的第二线程,以通过第二线程对目标数据进行处理;其中,局部变量不加锁;
转发模块710,用于将经过处理的目标数据进行封装,并将封装后的目标数据进行转发。
上述实施例中,依次接收不同的数据包;数据包中包括传输控制协议数据;将接收到的各数据包,按照各数据包内的通道端标识存入各队列;基于指针操作分别对存入各队列中的数据包进行解码,得到相应通信协议的目标数据;其中,不同队列中数据包的解码是在对应CPU核的第一线程上完成的,且在解码过程中不拷贝数据包;利用局部变量将目标数据从第一线程传递至CPU核的第二线程,以通过第二线程对目标数据进行处理;其中,局部变量不加锁;将经过处理的目标数据进行封装,并将封装后的目标数据进行转发。通过按照各数据包内的通道端标识存入各队列,可以实现消息的有序分发;对队列中的数据包进行指针操作可以实现数据包的零拷贝,从而提高数据包的处理速度;不同队列中数据包的处理有对应的CPU核,可以减少上下文的数据传递;使用局部变量来实现不加锁,减少因为资源竞争所带来的等待时间。因此,通过上述操作可以有效提高业务处理模块的性能。
在一个实施例中,如图8,装置还包括:
设置模块712,用于利用DPDK开发包和NFF开发包对队列进行设置,并通过多队列网卡支持多个队列的收发操作;其中,多个队列支持对数据包进行收发操作,多个队列对应多个CPU核。
在一个实施例中,分发模块704,还用于将各数据包内的通道端标识除以队列数量,将所得的余数作为相应队列的队列索引;利用队列索引,将各数据包发送到相同队列。
在一个实施例中,处理模块708,还用于基于通道端标识和包检测规则之间的第一哈希映射流表生成上行路径,当首次获取包检测规则时,通过通道端标识查询第一哈希映射流表,以获取到第一哈希映射流表中的包检测规则,并将包检测规则进行缓存;当非首次获取包检测规则时,直接从缓存中获取包检测规则;
基于终端的IP地址和包检测规则之间的第二哈希映射流表生成下行路径,当首次获取包检测规则时,通过终端的IP地址查询第二哈希映射流表,以获取到第一哈希映射流表中的包检测规则,并将包检测规则进行缓存,当非首次获取包检测规则时,直接从缓存中获取包检测规则。
在一个实施例中,处理模块708,还用于根据包检测规则确定数据包的业务类型;根据业务类型对数据包进行业务处理;业务处理包括ARP处理、ICMP处理、GTP处理或DN处理。
在一个实施例中,处理模块708,还用于当第二线程对目标数据进行处理时,基于处理函数对目标数据进行处理;处理函数包括大函数。
关于数据包的处理装置的具体限定可以参见上文中对于数据包的处理方法的限定,在此不再赘述。上述数据包的处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储目标数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据包的处理方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种数据包的处理方法,其特征在于,所述方法包括:
依次接收不同的数据包,所述数据包中包括传输控制协议数据、用户数据报协议数据和因特网控制报文协议数据;
将各所述数据包内的通道端标识除以队列数量,将所得的余数作为相应所述队列的队列索引;
利用所述队列索引,将各所述数据包发送到相同所述队列;其中,所述队列由数组构成,所述数组存储指向所述数据包的内存地址,所述队列中的指针指向所述数据包的所述内存地址;
当接收所述队列中的所述数据包时,申请缓存区,并将所述数据包映射至所述缓存区,将所述指针替换为指向所述缓存区的指针,对应CPU核的第一线程访问所述缓存区中的所述数据包,进行解码,得到相应通信协议的目标数据;其中,在解码过程中不拷贝所述数据包;
利用局部变量将所述目标数据从所述第一线程传递至所述CPU核的第二线程,以通过所述第二线程对所述目标数据进行处理;其中,所述局部变量不加锁;
将经过处理的所述目标数据进行封装,并将封装后的目标数据进行转发。
2.根据权利要求1所述的方法,其特征在于,所述将各所述数据包内的通道端标识除以队列数量,将所得的余数作为相应所述队列的队列索引;利用所述队列索引,将各所述数据包发送到相同所述队列之前,所述方法还包括:
利用DPDK开发包和NFF开发包对所述队列进行设置,并通过多队列网卡支持多个所述队列的收发操作;
其中,多个所述队列支持对所述数据包进行收发操作,多个所述队列对应多个所述CPU核。
3.根据权利要求1所述的方法,其特征在于,所述以通过所述第二线程对所述目标数据进行处理包括:
基于所述通道端标识和包检测规则之间的第一哈希映射流表生成上行路径,当首次获取所述包检测规则时,通过所述通道端标识查询所述第一哈希映射流表,以获取到所述第一哈希映射流表中的包检测规则,并将所述包检测规则进行缓存;当非首次获取所述包检测规则时,直接从缓存中获取所述包检测规则;
基于终端的IP地址和所述包检测规则之间的第二哈希映射流表生成下行路径,当首次获取所述包检测规则时,通过所述终端的IP地址查询所述第二哈希映射流表,以获取到所述第一哈希映射流表中的包检测规则,并将所述包检测规则进行缓存,当非首次获取所述包检测规则时,直接从缓存中获取所述包检测规则。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据所述包检测规则确定所述数据包的业务类型;
根据所述业务类型对所述数据包进行业务处理;所述业务处理包括ARP处理、ICMP处理、GTP处理或DN处理。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述通过所述第二线程对所述目标数据进行处理包括:
当所述第二线程对所述目标数据进行处理时,基于处理函数对所述目标数据进行处理;所述处理函数包括大函数。
6.一种数据包的处理装置,其特征在于,所述装置包括:
接收模块,用于依次接收不同的数据包,所述数据包中包括传输控制协议数据、用户数据报协议数据和因特网控制报文协议数据;
分发模块,用于将各所述数据包内的通道端标识除以队列数量,将所得的余数作为相应所述队列的队列索引;利用所述队列索引,将各所述数据包发送到相同所述队列;其中,所述队列由数组构成,所述数组存储指向所述数据包的内存地址,所述队列中的指针指向所述数据包的所述内存地址;
解码模块,用于当接收所述队列中的所述数据包时,申请缓存区,并将所述数据包映射至所述缓存区,将所述指针替换为指向所述缓存区的指针,对应CPU核的第一线程访问所述缓存区中的所述数据包,进行解码,得到相应通信协议的目标数据;其中,在解码过程中不拷贝所述数据包;
处理模块,用于利用局部变量将所述目标数据从所述第一线程传递至所述CPU核的第二线程,以通过所述第二线程对所述目标数据进行处理;其中,所述局部变量不加锁;
转发模块,用于将经过处理的所述目标数据进行封装,并将封装后的目标数据进行转发。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
设置模块,用于利用DPDK开发包和NFF开发包对所述队列进行设置,并通过多队列网卡支持多个所述队列的收发操作;其中,多个所述队列支持对所述数据包进行收发操作,多个所述队列对应多个所述CPU核。
8.根据权利要求6所述的装置,其特征在于,所述处理模块还用于根据包检测规则确定所述数据包的业务类型;根据所述业务类型对所述数据包进行业务处理;所述业务处理包括ARP处理、ICMP处理、GTP处理或DN处理。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述的方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
CN202111022388.1A 2021-09-01 2021-09-01 数据包的处理方法、装置、计算机设备和存储介质 Active CN113891396B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111022388.1A CN113891396B (zh) 2021-09-01 2021-09-01 数据包的处理方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111022388.1A CN113891396B (zh) 2021-09-01 2021-09-01 数据包的处理方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN113891396A CN113891396A (zh) 2022-01-04
CN113891396B true CN113891396B (zh) 2022-07-26

Family

ID=79011713

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111022388.1A Active CN113891396B (zh) 2021-09-01 2021-09-01 数据包的处理方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN113891396B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115334586B (zh) * 2022-10-17 2023-01-03 深圳市领创星通科技有限公司 数据转发方法、装置、计算机设备和存储介质
TWI826194B (zh) * 2022-12-20 2023-12-11 明泰科技股份有限公司 相容於雲原生虛擬網路層的使用者層功能(upf)封包處理方法及計算裝置
CN116095750B (zh) * 2023-01-13 2023-10-31 广州爱浦路网络技术有限公司 数据面转发方法、装置、电子设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101150486A (zh) * 2007-11-15 2008-03-26 曙光信息产业(北京)有限公司 一种零拷贝缓冲区队列网络数据接收的管理方法
CN101540720A (zh) * 2008-06-06 2009-09-23 曙光信息产业(北京)有限公司 一种支持多类型网卡链路聚合的零拷贝方法
CN106850565A (zh) * 2016-12-29 2017-06-13 河北远东通信系统工程有限公司 一种高速的网络数据传输方法
CN107317821A (zh) * 2017-07-19 2017-11-03 苏睿 一种图像数据的传输方法、装置及系统
CN110866066A (zh) * 2019-11-04 2020-03-06 无锡华云数据技术服务有限公司 一种业务处理方法及装置
CN111767236A (zh) * 2019-03-30 2020-10-13 英特尔公司 用于可配置空间加速器中的存储器接口电路分配的装置、方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104135496B (zh) * 2013-05-02 2017-08-18 华中科技大学 一种同构环境下的rpc数据传输方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101150486A (zh) * 2007-11-15 2008-03-26 曙光信息产业(北京)有限公司 一种零拷贝缓冲区队列网络数据接收的管理方法
CN101540720A (zh) * 2008-06-06 2009-09-23 曙光信息产业(北京)有限公司 一种支持多类型网卡链路聚合的零拷贝方法
CN106850565A (zh) * 2016-12-29 2017-06-13 河北远东通信系统工程有限公司 一种高速的网络数据传输方法
CN107317821A (zh) * 2017-07-19 2017-11-03 苏睿 一种图像数据的传输方法、装置及系统
CN111767236A (zh) * 2019-03-30 2020-10-13 英特尔公司 用于可配置空间加速器中的存储器接口电路分配的装置、方法和系统
CN110866066A (zh) * 2019-11-04 2020-03-06 无锡华云数据技术服务有限公司 一种业务处理方法及装置

Also Published As

Publication number Publication date
CN113891396A (zh) 2022-01-04

Similar Documents

Publication Publication Date Title
CN113891396B (zh) 数据包的处理方法、装置、计算机设备和存储介质
CN107645444B (zh) 用于虚拟机与云服务计算设备之间的快速路由传输的系统、设备和方法
CN107566441B (zh) 用于虚拟机与云服务计算设备之间的快速路由传输的方法及系统
US11240155B2 (en) Technologies for network device load balancers for accelerated functions as a service
WO2017067391A1 (zh) 虚拟机的数据共享方法及装置
US11265235B2 (en) Technologies for capturing processing resource metrics as a function of time
US11025564B2 (en) RDMA transport with hardware integration and out of order placement
WO2023005773A1 (zh) 基于远程直接数据存储的报文转发方法、装置、网卡及设备
US11068412B2 (en) RDMA transport with hardware integration
WO2017000593A1 (zh) 报文处理方法及装置
US11500666B2 (en) Container isolation method and apparatus for netlink resource
US20150088995A1 (en) Method and apparatus for sharing contents using information of group change in content oriented network environment
US11606417B2 (en) Technologies for matching security requirements of function-as-a-service in edge clouds
CN116049085A (zh) 一种数据处理系统及方法
US9015438B2 (en) System and method for achieving enhanced performance with multiple networking central processing unit (CPU) cores
CN116860488B (zh) 一种进程通信方法和相关装置
WO2020187124A1 (zh) 数据处理方法及装置
US20130110968A1 (en) Reducing latency in multicast traffic reception
CN110602262A (zh) 路由器及其处理数据报文的方法
CN109726144B (zh) 一种数据报文的处理方法和装置
JP2020088517A (ja) 通信装置、通信装置の制御方法およびプログラム
CN114979090A (zh) IPv6数据包处理方法、装置、计算机设备和存储介质
CN112422457B (zh) 报文处理方法、装置和计算机存储介质
CN113497767A (zh) 传输数据的方法、装置、计算设备及存储介质
US11966634B2 (en) Information processing system and memory system

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
CP03 Change of name, title or address

Address after: 518051, 1st and 19th floors of Building 1, Jinxinnuo, No. 50 Baolong Second Road, Baolong Community, Baolong Street, Longgang District, Shenzhen City, Guangdong Province

Patentee after: KINGSIGNAL TECHNOLOGY Co.,Ltd.

Country or region after: Zhong Guo

Address before: 518051 26 / F, block B, building 10, Shenzhen Bay science and technology ecological park, No.10, Gaoxin South 9th Road, high tech Zone community, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Patentee before: KINGSIGNAL TECHNOLOGY Co.,Ltd.

Country or region before: Zhong Guo

CP03 Change of name, title or address