数据包处理方法、装置、计算机设备和存储介质转让专利

申请号 : CN202111366826.6

文献号 : CN114244850B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑敏捷邹军

申请人 : 深圳市领创星通科技有限公司深圳金信诺高新技术股份有限公司

摘要 :

本申请涉及一种数据包处理方法、装置、计算机设备和存储介质。所述方法包括:通过用户面网元的控制面接收至少两个报文转发控制协议消息;创建至少两个第一处理协程,基于第一处理协程依次对报文转发控制协议消息进行解码,得到创建请求消息和控制数据;基于创建请求消息和会话标识构建会话上下文;根据会话上下文中的检测执行规则信息生成流表信息;当接收到数据包时,创建至少两个第二处理协程,以使用户面网元的数据面利用第二处理协程,基于流表信息对数据包进行数据处理。采用本方法能够提高数据包处理能力。

权利要求 :

1.一种数据包处理方法,其特征在于,所述方法包括:通过用户面网元的控制面接收至少两个报文转发控制协议消息;

创建至少两个第一处理协程,基于所述第一处理协程依次对所述报文转发控制协议消息进行解码,得到创建请求消息和控制数据;所述创建请求消息包括通道端标识、终端的IP地址中至少一个,所述控制数据用于激活对应的包检测规则;

基于所述创建请求消息和会话标识构建会话上下文;

根据所述会话上下文中的检测执行规则信息生成流表信息;所述检测执行规则用于指示用户面网元对数据包进行检测和分类;

当接收到数据包时,创建至少两个第二处理协程,以使所述用户面网元的数据面利用所述第二处理协程,基于所述流表信息对所述数据包进行数据处理。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将至少两个所述报文转发控制协议消息保存到消息队列中;

所述基于所述第一处理协程依次对所述报文转发控制协议消息进行解码,得到创建请求消息和控制数据包括:通过所述第一处理协程,从所述消息队列中提取所述报文转发控制协议消息,以及对提取出的所述报文转发控制协议消息进行解码,得到创建请求消息和控制数据。

3.根据权利要求1所述的方法,其特征在于,所述基于所述创建请求消息和会话标识构建会话上下文包括:当基于所述创建请求消息确定需构建会话时,判断所述会话标识对应的会话是否存在;

若不存在时,根据所述会话标识构建会话上下文;

所述方法还包括:若对下一时刻接收的报文转发控制协议消息进行解码得到会话消息,更新所述会话上下文。

4.根据权利要求1所述的方法,其特征在于,所述流表包括第一哈希映射流表和第二哈希映射流表;所述根据所述会话上下文中的检测执行规则信息生成流表信息包括:基于所述会话上下文中的检测执行规则信息,对所述会话上下文进行遍历,得到会话的包检测规则表项;

对所述包检测规则表项进行排列,得到有序的包检测规则表;

基于通道标识、所述会话标识和有序的所述包检测规则表,生成第一哈希映射流表;

基于终端的IP地址、所述会话标识和有序的所述包检测规则表,生成第二哈希映射流表。

5.根据权利要求4所述的方法,其特征在于,所述数据包包括上行数据包或下行数据包;

所述基于所述第二处理协程对所述数据包进行数据处理包括:当所述数据包为所述上行数据包时,基于所述第一哈希映射流表对所述上行数据包进行转发;

当所述数据包为所述下行数据包时,基于所述第二哈希映射流表对所述下行数据包进行转发。

6.根据权利要求1所述的方法,其特征在于,所述创建至少两个第二处理协程之后,所述方法还包括:对所述第二处理协程的数量进行设置;

当所述数据包的数量超过第一预设阈值时,继续创建至少一个所述第二处理协程,以增加所述第二处理协程的数量;

当所述数据包的数量低于第二预设阈值时,删除至少一个所述第二处理协程,以减少所述第二处理协程的数量。

7.一种数据包处理装置,其特征在于,所述装置包括:接收模块,用于通过用户面网元的控制面接收至少两个报文转发控制协议消息;

解码模块,用于创建至少两个第一处理协程,基于所述第一处理协程依次对所述报文转发控制协议消息进行解码,得到创建请求消息和控制数据;所述创建请求消息包括通道端标识、终端的IP地址中至少一个,所述控制数据用于激活对应的包检测规则;

构建模块,用于基于所述创建请求消息和会话标识构建会话上下文;

生成模块,用于根据所述会话上下文中的检测执行规则信息生成流表信息;所述检测执行规则用于指示用户面网元对数据包进行检测和分类;

处理模块,用于当接收到数据包时,创建至少两个第二处理协程,以使所述用户面网元的数据面利用所述第二处理协程,基于所述流表信息对所述数据包进行数据处理。

8.根据权利要求7所述的装置,其特征在于,所述装置还包括:设置模块,用于对所述第二处理协程的数量进行设置;当所述数据包的数量超过第一预设阈值时,继续创建至少一个所述第二处理协程,以增加所述第二处理协程的数量;当所述数据包的数量低于第二预设阈值时,删除至少一个所述第二处理协程,以减少所述第二处理协程的数量。

9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。

10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。

说明书 :

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

技术领域

[0001] 本申请涉及网络通信技术领域,特别是涉及一种数据包处理方法、装置、计算机设备和存储介质。

背景技术

[0002] 随着5G网络的发展,用户对带宽的要求越来越高,需要更高性能的数据包处理能力。在传统的用户面网元中,采用linux中的socket版本进行转发,其性能依赖于linux内核转发数据包的效率,因为该技术需要在内核态和用户态之间切换,不能实现业务层数据包的零拷贝,所以采用传统技术方案已经不能满足日益增长的高性能数据包处理需求。

发明内容

[0003] 基于此,有必要针对上述技术问题,提供一种能够提高数据包处理能力的数据包处理方法、装置、计算机设备和存储介质。
[0004] 一种数据包处理方法,所述方法包括:
[0005] 通过用户面网元的控制面接收至少两个报文转发控制协议消息;
[0006] 创建至少两个第一处理协程,基于所述第一处理协程依次对所述报文转发控制协议消息进行解码,得到创建请求消息和控制数据;
[0007] 基于所述创建请求消息和会话标识构建会话上下文;
[0008] 根据所述会话上下文中的检测执行规则信息生成流表信息;
[0009] 当接收到数据包时,创建至少两个第二处理协程,以使所述用户面网元的数据面利用所述第二处理协程,基于所述流表信息对所述数据包进行数据处理。
[0010] 在其中一个实施例中,所述方法还包括:将至少两个所述报文转发控制协议消息保存到消息队列中;所述基于所述第一处理协程依次对所述报文转发控制协议消息进行解码,得到创建请求消息和控制数据包括:通过所述第一处理协程,从所述消息队列中提取所述报文转发控制协议消息,以及对提取出的所述报文转发控制协议消息进行解码,得到创建请求消息和控制数据。
[0011] 在其中一个实施例中,所述基于所述创建请求消息和会话标识构建会话上下文包括:当基于所述创建请求消息确定需构建会话时,判断所述会话标识对应的会话是否存在;若不存在时,根据所述会话标识构建会话上下文;所述方法还包括:若对下一时刻接收的报文转发控制协议消息进行解码得到会话消息,更新所述会话上下文。
[0012] 在其中一个实施例中,所述流表包括第一哈希映射流表和第二哈希映射流表;所述根据所述会话上下文中的检测执行规则信息生成流表信息包括:基于所述会话上下文中的检测执行规则信息,对所述会话上下文进行遍历,得到会话的包检测规则表项;对所述包检测规则表项进行排列,得到有序的包检测规则表;基于通道标识、所述会话标识和有序的所述包检测规则表,生成第一哈希映射流表;基于终端的IP地址、所述会话标识和有序的所述包检测规则表,生成第二哈希映射流表。
[0013] 在其中一个实施例中,所述数据包包括上行数据包或下行数据包;所述基于所述第二处理协程对所述数据包进行数据处理包括:当所述数据包为所述上行数据包时,基于所述第一哈希映射流表对所述上行数据包进行转发;当所述数据包为所述下行数据包时,基于所述第二哈希映射流表对所述下行数据包进行转发。
[0014] 在其中一个实施例中,所述创建至少两个第二处理协程之后,所述方法还包括:对所述第二处理协程的数量进行设置;当所述数据包的数量超过第一预设阈值时,继续创建至少一个所述第二处理协程,以增加所述第二处理协程的数量;当所述数据包的数量低于第二预设阈值时,删除至少一个所述第二处理协程,以减少所述第二处理协程的数量。
[0015] 一种数据包处理装置,所述装置包括:
[0016] 接收模块,用于通过用户面网元的控制面接收至少两个报文转发控制协议消息;
[0017] 解码模块,用于创建至少两个第一处理协程,基于所述第一处理协程依次对所述报文转发控制协议消息进行解码,得到创建请求消息和控制数据;
[0018] 构建模块,用于基于所述创建请求消息和会话标识构建会话上下文;
[0019] 生成模块,用于根据所述会话上下文中的检测执行规则信息生成流表信息;
[0020] 处理模块,用于当接收到数据包时,创建至少两个第二处理协程,以使所述用户面网元的数据面利用所述第二处理协程,基于所述流表信息对所述数据包进行数据处理。
[0021] 在其中一个实施例中,所述解码模块,还用于将至少两个所述报文转发控制协议消息保存到消息队列中;通过所述第一处理协程,从所述消息队列中提取所述报文转发控制协议消息,以及对提取出的所述报文转发控制协议消息进行解码,得到创建请求消息和控制数据。
[0022] 在其中一个实施例中,所述构建模块,还用于当基于所述创建请求消息确定需构建会话时,判断所述会话标识对应的会话是否存在;若不存在时,根据所述会话标识构建会话上下文;若对下一时刻接收的报文转发控制协议消息进行解码得到会话消息,更新所述会话上下文。
[0023] 在其中一个实施例中,所述流表包括第一哈希映射流表和第二哈希映射流表;所述生成模块,还用于基于所述会话上下文中的检测执行规则信息,对所述会话上下文进行遍历,得到会话的包检测规则表项;对所述包检测规则表项进行排列,得到有序的包检测规则表;基于通道标识、所述会话标识和有序的所述包检测规则表,生成第一哈希映射流表;基于终端的IP地址、所述会话标识和有序的所述包检测规则表,生成第二哈希映射流表。
[0024] 在其中一个实施例中,所述数据包包括上行数据包或下行数据包;所述处理模块,还用于当所述数据包为所述上行数据包时,基于所述第一哈希映射流表对所述上行数据包进行转发;当所述数据包为所述下行数据包时,基于所述第二哈希映射流表对所述下行数据包进行转发。
[0025] 在其中一个实施例中,所述装置还包括:
[0026] 设置模块,用于对所述第二处理协程的数量进行设置;当所述数据包的数量超过第一预设阈值时,继续创建至少一个所述第二处理协程,以增加所述第二处理协程的数量;当所述数据包的数量低于第二预设阈值时,删除至少一个所述第二处理协程,以减少所述第二处理协程的数量。
[0027] 一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述数据包处理方法的步骤。
[0028] 一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述数据包处理方法的步骤。
[0029] 上述数据包处理方法、装置、计算机设备和存储介质,通过用户面网元的控制面接收至少两个报文转发控制协议消息;创建至少两个第一处理协程,基于第一处理协程依次对报文转发控制协议消息进行解码,得到创建请求消息和控制数据;基于创建请求消息和会话标识构建会话上下文;根据会话上下文中的检测执行规则信息生成流表信息;当接收到数据包时,创建至少两个第二处理协程,以使用户面网元的数据面利用第二处理协程,基于流表信息对数据包进行数据处理。通过多个协程对报文转发控制协议消息以及数据包进行处理,可以提高并发处理能力,同时生成易于执行的流表,可以提高数据包的转发效率,所以上述方法可以提高数据包处理能力。

附图说明

[0030] 图1为一个实施例中数据包处理方法的应用环境图;
[0031] 图2为一个实施例中数据包处理方法的流程示意图;
[0032] 图3为一个实施例中用户面网元和会话管理功能的示意图;
[0033] 图4为一个实施例中用户面网元架构的示意图;
[0034] 图5为一个实施例中超时重传机制的示意图;
[0035] 图6为一个实施例中生成流表的流程示意图;
[0036] 图7为一个实施例中数据包处理装置的结构框图;
[0037] 图8为另一个实施例中数据包处理装置的结构框图;
[0038] 图9为一个实施例中计算机设备的内部结构图。

具体实施方式

[0039] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0040] 本申请提供的数据包处理方法,可以应用于如图1所示的应用环境中。在该应用环境中,包括终端102和用户面网元104。
[0041] 用户面网元104通过用户面网元的控制面接收至少两个报文转发控制协议消息;创建至少两个第一处理协程,用户面网元104基于第一处理协程依次对报文转发控制协议消息进行解码,得到创建请求消息和控制数据;用户面网元104基于创建请求消息和会话标识构建会话上下文;用户面网元104根据会话上下文中的检测执行规则信息生成流表信息;
当用户面网元104接收到数据包时,创建至少两个第二处理协程,以使用户面网元的数据面利用第二处理协程,基于流表信息对数据包进行数据处理。
[0042] 其中,终端102可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
[0043] 用户面网元104可以是独立的物理服务器,也可以是区块链系统中的服务节点,该区块链系统中的各服务节点之间形成组成点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。
[0044] 此外,用户面网元104还可以是多个物理服务器构成的服务器集群,可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
[0045] 终端102与用户面网元104之间可以通过蓝牙、USB(Universal Serial Bus,通用串行总线)或者网络等通讯连接方式进行连接,本申请在此不做限制。
[0046] 在一个实施例中,如图2所示,提供了一种数据包处理方法,以该方法应用于图1中的用户面网元为例进行说明,包括以下步骤:
[0047] S202,通过用户面网元的控制面接收至少两个报文转发控制协议消息。
[0048] 其中,用户面网元指的是3GPP(第三代合作伙伴计划,3rd  Generation Partnership Project)定义的5G(5th Generation Mobile Communication Technology)核心网系统架构中的基本网元,从4G核心网中SGW‑U和PGW‑U演进而来。如图3所示,用户面网元受一个或多个会话管理功能控制管理,依据会话管理功能下发的各种策略执行业务,业务包括:业务流的识别、数据包处理和计费等。
[0049] 在一个实施例中,用户面网元根据处理业务的不同,分离为控制面和数据面。其中控制面包括处理N4接口的报文转发控制协议消息的协议处理模块、会话上下文管理模块、包检测规则模块。另外,数据面的个数可以为一个或多个,数据面处理的业务包括数据包的转发等。如图4所示,用户面网元通过N4层与会话管理功能进行信息交互,其中N4层通过会话上下文得到会话管理功能下发的包检测规则,用户面网元利用DPDK和NFF架构,对N3口和N6口的数据包进行收发操作,其中数据包可以发送到基站或数据网络,同时也可以从基站或数据网络进行接收。UdsfAgent负责和UDSF(Unstructured Data Storage Function,无结构化数据存储功能)之间进行通信,通过redis(Remote Dictionary Server,远程字典服务)来实现无状态,UdsfAgent即redis的客户端,使用事件触发机制。
[0050] 在一个实施例中,用户面网元通过控制面的N4层启动了用户数据包协议8805端口对连接请求进行监听,当收到会话管理功能的连接请求时,用户面网元会建立一个N4节点实例,通过这个N4节点来管理与会话管理功能之间的连接信息,用户面网元通过实时机制监控这个N4节点的连接状态。
[0051] 例如,用户面网元在N4节点创建成功后,启动一个预设时间的监控定时器,在等待监控定时器的预设时间后,用户面网元会发送一个实时消息,当用户面网元收到来自N4节点的响应消息时,重置监控定时器,以此循环往复,直至N4节点释放,用户面网元关闭监控定时器。其中,N4节点的响应消息可以为N4节点内的任何消息,但不包括N4节点释放消息。具体地,当监控定时器的预设时间为3秒时,用户面网元在N4节点创建成功后,启动一定时3秒的监控定时器,在等待3秒后,用户面网元发送实时消息到N4节点,当收到N4节点的响应消息时,重置监控定时器,开始倒计时3秒。
[0052] 在一个实施例中,用户面网元的控制面在接收报文转发控制协议消息后,将报文转发控制协议消息保存到消息队列中,控制面可以同时接收多个报文转发控制协议消息。其中,消息队列的长度为预设长度,具体地,当消息队列的预设长度为10000时,控制面可以同时接收10000个报文转发控制协议消息,将这10000个报文转发控制协议消息保存到消息队列中。
[0053] S204,创建至少两个第一处理协程,基于第一处理协程依次对报文转发控制协议消息进行解码,得到创建请求消息和控制数据。
[0054] 其中,协程运行在线程之上,当一个协程执行完成后,可以选择主动让出,让另一个协程运行在当前线程之上,协程与协程之间的切换在用户态完成。协程的创建并不会增加线程的数量,只是在线程的基础之上通过分时复用的方式运行多个协程。
[0055] 另外,报文转发控制协议(Packet Forwarding Control Protocol,PFCP)采用请求‑响应的交互消息模式,报文转发控制协议消息分为节点相关的消息和会话相关的消息,其中会话相关的报文转发控制协议消息包括消息类型、消息长度、会话标识、优先级等。报文转发控制协议消息解码后得到的创建请求消息中携带通道端标识、终端的IP(Internet Protocol)地址等相关信息,并且报文转发控制协议消息解码后得到的控制数据可以激活对应的包检测规则。
[0056] 在一个实施例中,用户面网元通过第一处理协程,从消息队列中提取报文转发控制协议消息,以及对提取出的报文转发控制协议消息进行解码,得到创建请求消息和控制数据。其中,第一处理协程的数量由用户面网元进行预设,具体地,当预设数量为3时,用户面网元可以启动3个第一处理协程,从消息队列中提取报文转发控制协议消息,以及对提取出的报文转发控制协议消息进行解码。
[0057] S206,基于创建请求消息和会话标识构建会话上下文。
[0058] 在一个实施例中,当基于创建请求消息确定需构建会话时,用户面网元判断会话标识对应的会话是否存在;若不存在时,根据会话标识构建会话上下文,并将控制数据保存到会话上下文;若对下一时刻接收的报文转发控制协议消息进行解码得到会话消息,则根据会话标识查询会话标识对应的会话上下文,用户面网元根据控制数据,对会话上下文进行更新,其中更新包括对会话上下文进行修改和对会话上下文进行清理。
[0059] 在一个实施例中,如图5所示,会话管理功能通过UDP(User Datagram Protocol,用户数据报协议)连接发送报文转发控制协议消息到用户面网元,其中用户面网元可以受一个或多个会话管理功能控制管理,因此用户面网元通过N4节点上下文得到用户面网元与多个会话管理功能连接的dstip(会话管理功能的IP地址)和dstport(会话管理功能的端口);当用户面网元通过N4层的第一处理协程接收到会话管理功能发送的报文转发控制协议消息后,会对报文转发控制协议消息进行解码并且向会话管理功能发送响应消息。
[0060] 例如,会话管理功能发送报文转发控制协议消息后,会启动预设时间的重传定时器,当用户面网元向会话管理功能发送响应消息并且被会话管理功能接收后,会话管理功能关闭重传定时器。若在等待预设时间后,会话管理功能依然没有接收到用户面网元发送的响应消息,则会话管理功能会重新发送报文转发控制协议消息。当会话管理功能重新发送多次报文转发控制协议消息后,仍然没有接收到用户面网元发送的响应消息,会话管理功能会向管理员上报响应失败,其中重新发送报文转发控制协议消息的次数为预设次数。
[0061] 具体地,当重新发送报文转发控制协议消息的预设次数为3次,且重传定时器的预设时间为500毫秒时,会话管理功能发送报文转发控制协议消息后,会启动时间周期为500毫秒的重传定时器,当用户面网元向会话管理功能发送响应消息并且被会话管理功能接收后,会话管理功能关闭重传定时器。若在等待500毫秒后,会话管理功能依然没有接收到用户面网元发送的响应消息,则会话管理功能会重新发送报文转发控制协议消息。当会话管理功能重新发送3次报文转发控制协议消息后,仍然没有接收到用户面网元发送的响应消息,会话管理功能会向管理员上报响应失败。
[0062] S208,根据会话上下文中的检测执行规则信息生成流表信息。
[0063] 其中,检测执行规则信息用于指示用户面网元对数据包进行检测和分类,包括包检测规则信息、转发行为规则信息、Qos(Quality of Service,服务质量)实施规则信息、使用报告规则信息等,另外,流表包括第一哈希映射流表和第二哈希映射流表。
[0064] S210,当接收到数据包时,创建至少两个第二处理协程,以使用户面网元的数据面利用第二处理协程,基于流表信息对数据包进行数据处理。
[0065] 其中,数据包是指GPRS(General packet radio service,通用无线分组业务)隧道协议数据包,该数据包中除了封装传输控制协议数据,还可以包括用户数据报协议数据和因特网控制报文协议数据。数据包的数据处理包括GPRS隧道协议封装和GPRS隧道协议解封装、转发、缓存和QoS控制等。
[0066] 在一个实施例中,数据包包括上行数据包或下行数据包;当数据包为上行数据包时,基于第一哈希映射流表对上行数据包进行转发;当数据包为下行数据包时,基于第二哈希映射流表对下行数据包进行转发。
[0067] 其中,上行数据包指的是由N3口向用户终端方向进行转发的数据包,下行数据包指的是由N6口向外部数据网络方向进行转发的数据包。
[0068] 在一个实施例中,用户面网元利用DPDK(Data Plane Development Kit,数据平面开发套件)和NFF(nff‑go)框架对数据包进行高速转发,用户面网元可以利用DPDK对队列进行设置,实现多队列的数据包收发。其中,DPDK是一个开源的数据平面开发工具集,是为了解决数据包处理性能问题而提供的一个用户空间下的高效数据包处理函数库和驱动集。
[0069] 在一个实施例中,用户面网元利用go语言和NFF框架对第二处理协程的数量进行设置;实现第二处理协程的数量按需自动变化。当数据包的数量较多时,用户面网元会自动创建更多的第二处理协程对数据包进行数据处理,当数据包的数量较少时,用户面网元会自动减少第二处理协程的数量,同时,当第二处理协程的数量进行变化时,用户面网元会修改数据包分发机制,其中,数据包分发机制指的是数据包分发到对应的第二处理协程的分发规则。
[0070] 例如,当数据包的数量超过第一预设阈值时,用户面网元继续创建至少一个第二处理协程,以增加第二处理协程的数量;当数据包的数量低于第二预设阈值时,用户面网元删除至少一个第二处理协程,以减少第二处理协程的数量。具体地,当第一预设阈值为500且第二预设阈值时为100时,若数据包的数量为600,则用户面网元可以创建多一个第二处理协程,若数据包的数量为700时,用户面网元可以创建多两个第二处理协程;若数据包的数量为80时,用户面网元可以减少一个第二处理协程,若数据包的数量为60时,用户面网元可以减少两个第二处理协程。
[0071] 上述数据包处理方法中,通过用户面网元的控制面接收至少两个报文转发控制协议消息;创建至少两个第一处理协程,基于第一处理协程依次对报文转发控制协议消息进行解码,得到创建请求消息和控制数据;基于创建请求消息和会话标识构建会话上下文;根据会话上下文中的检测执行规则信息生成流表信息;当接收到数据包时,创建至少两个第二处理协程,以使用户面网元的数据面利用第二处理协程,基于流表信息对数据包进行数据处理。通过多个协程对报文转发控制协议消息以及数据包进行处理,可以提高并发处理能力,同时生成易于执行的流表,可以提高数据包的转发效率,所以上述方法可以提高数据包处理能力。
[0072] 在一个实施例中,如图6所示,S208包括:
[0073] S602,基于会话上下文中的检测执行规则信息,对会话上下文进行遍历,得到会话的包检测规则表项。
[0074] 在一个实施例中,用户面网元基于会话上下文中的检测执行规则信息,对会话上下文进行遍历,通过遍历会得到多条规则信息,规则信息包括包检测规则信息、转发行为规则信息、Qos实施规则信息、使用报告规则信息等,这些规则信息组成了会话的包检测规则表项。
[0075] S604,对包检测规则表项进行排列,得到有序的包检测规则表。
[0076] 在一个实施例中,用户面网元对包检测规则表项中的优先级进行排列,若包检测规则表项的优先级相同,则按照过滤规则进行排列,过滤规则指的是按照字段数的多少进行排列,其中字段包括源IP地址、目的IP地址、源端口、目的端口和IP协议类型。具体地,用户面网元对包检测规则表项中的优先级按照升序进行排列,例如,将优先级分为1到255个等级,等级越高则排列顺序越前;等级越低,则排列顺序越后。当两个包检测规则表项的优先级相同时,则字段数越多,则排列顺序越前;字段数越少,排列顺序越后。
[0077] S606,基于通道标识、会话标识和有序的包检测规则表,生成第一哈希映射流表。
[0078] 其中,用户面网元的数据面通过N3口将上行数据包使用第一哈希映射流表进行转发,上行数据包通过通道标识对第一哈希映射流表进行查询,得到该上行数据包对应的包检测规则,从而得到上行路径。
[0079] S608,基于终端的IP地址、会话标识和有序的所述包检测规则表,生成第二哈希映射流表。
[0080] 其中,用户面网元的数据面通过N6口将下行数据包使用第二哈希映射流表进行转发,下行数据包通过终端的IP地址对第二哈希映射流表进行查询,得到该下行数据包对应的包检测规则,从而得到下行路径。
[0081] 本实施例中,通过对包检测规则表项进行排序,生成易于执行的第一哈希映射流表和第二哈希映射流表,能够提高数据包的转发效率。
[0082] 应该理解的是,虽然图2、6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、6中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0083] 在一个实施例中,如图7所示,提供了一种数据包处理装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:接收模块702、解码模块704、构建模块706、生成模块708和处理模块710,其中:
[0084] 接收模块702,用于通过用户面网元的控制面接收至少两个报文转发控制协议消息;
[0085] 解码模块704,用于创建至少两个第一处理协程,基于第一处理协程依次对报文转发控制协议消息进行解码,得到创建请求消息和控制数据;
[0086] 构建模块706,用于基于创建请求消息和会话标识构建会话上下文;
[0087] 生成模块708,用于根据会话上下文中的检测执行规则信息生成流表信息;
[0088] 处理模块710,用于当接收到数据包时,创建至少两个第二处理协程,以使用户面网元的数据面利用第二处理协程,基于流表信息对数据包进行数据处理。
[0089] 在一个实施例中,解码模块704,还用于将至少两个报文转发控制协议消息保存到消息队列中;通过第一处理协程,从消息队列中提取报文转发控制协议消息,以及对提取出的报文转发控制协议消息进行解码,得到创建请求消息和控制数据。
[0090] 在一个实施例中,构建模块706,还用于当基于创建请求消息确定需构建会话时,判断会话标识对应的会话是否存在;若不存在时,根据会话标识构建会话上下文;若对下一时刻接收的报文转发控制协议消息进行解码得到会话消息,更新会话上下文。
[0091] 在一个实施例中,流表包括第一哈希映射流表和第二哈希映射流表;生成模块708,还用于基于会话上下文中的检测执行规则信息,对会话上下文进行遍历,得到会话的包检测规则表项;对包检测规则表项进行排列,得到有序的包检测规则表;基于通道标识、会话标识和有序的包检测规则表,生成第一哈希映射流表;基于终端的IP地址、会话标识和有序的包检测规则表,生成第二哈希映射流表。
[0092] 在一个实施例中,数据包包括上行数据包或下行数据包;处理模块710,还用于当数据包为上行数据包时,基于第一哈希映射流表对上行数据包进行转发;当数据包为下行数据包时,基于第二哈希映射流表对下行数据包进行转发。
[0093] 在一个实施例中,如图8所示,装置还包括:
[0094] 设置模块712,用于对第二处理协程的数量进行设置;当数据包的数量超过第一预设阈值时,继续创建至少一个第二处理协程,以增加第二处理协程的数量;当数据包的数量低于第二预设阈值时,删除至少一个第二处理协程,以减少第二处理协程的数量。
[0095] 关于数据包处理装置的具体限定可以参见上文中对于数据包处理方法的限定,在此不再赘述。上述数据包处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0096] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储流表数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据包处理方法。
[0097] 本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0098] 在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0099] 在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0100] 在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
[0101] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
[0102] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0103] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。