掌桥专利:专业的专利平台
掌桥专利
首页

一种基于多核处理器的移动信令监测方法及系统

文献发布时间:2024-04-18 19:58:26


一种基于多核处理器的移动信令监测方法及系统

技术领域

本发明涉及移动通信技术领域,尤其涉及一种基于多核处理器的移动信令监测方法及系统。

背景技术

在4G/5G移动通信中,SCTP、UDP、TCP等协议大量应用于控制面,对于移动信令监测系统,需要对SCTP、UDP、TCP等协议进行解析、处理,提取接口内关联索引、重要元数据等信息,识别出同一个用户在多个接口(比如:4G S1、4G S11、4G S6a、5G N1、5G N2、5G N4等接口)的同一会话,从而按用户、按会话流程输出单接口信令XDR(呼叫详细记录)、合成信令XDR。

由于移动信令监测的数据吞吐量越来越高,基于多核处理器实现移动信令监测系统是业界流行的实现方式。对于SCTP(Stream Control Transmission Protocol)协议,其多归属特性已在网络中广泛应用,通信两端的一个SCTP偶联可以配置多个IP地址,即一个SCTP偶联有多条通信通道,包括一条主通道、多条备用通道,当主通道出现故障时,切换到备用通道,主通道恢复后,通信通道再次从备用通道切回主用通道。在某些情况下,请求消息在通道1,所对应的应答消息在道通2。SCTP层用同一个偶联屏蔽多个通信通道,使上层应用(S1AP、NGAP、Diameter等)无需关注底层通信通道的变化。

现有基于多核处理器的移动信令监测系统,处理器分发原则通常基于IP五元组的源、目的IP分发,通常一级分发消息后直接处理,不会有二级分发。SCTP同一偶联数据由于源或目的IP的不同,会被分发到不同处理器处理,多线程分布在多个处理器上,共享内存由各个线程竞争使用,某一线程开始使用时加锁,停止使用时解锁,解锁后下一个排队线程才能使用。同时,并未对多核处理器功能分类、多核处理器分发规则、多线程共享内存分配、接口内关联索引、SCTP多归属特性等作统一和优化的设计,不考虑多核处理器的多级分发,不考虑同一会话数据所使用的网口、内存、处理器所属Socket的一致性,同一会话的关联数据会在跨Socket的网口、跨Socket的处理器、跨Socket的内存进行处理,共享内存也会频繁加锁/解锁,会造成数据处理效率低、延时大、SCTP多归属通道部分消息被丢弃等问题。

发明内容

本发明的目的是提供一种基于多核处理器的移动信令监测方法及系统,以解决上述问题。

为实现上述目的,采用以下技术方案:

一种基于多核处理器的移动信令监测方法,包括如下步骤:

S1:对接收网口、一级分发处理器、二级分发处理器、工作处理器、共享内存和发送网口,以Socket ID进行分类配置;

S2:通过每一接收网口,将数据分发到与该接收网口连接的若干个一级分发处理器;

S3:通过一级分发处理器,从数据中分离出SCTP协议数据、非SCTP协议数据,并将SCTP协议数据分发至二级分发处理器,将非SCTP协议数据分发至工作处理器;

S4:通过二级分发处理器,识别SCTP协议数据,并计算出SCTP偶联序列号,再把SCTP偶联序列号与原始数据一起发给工作处理器;

S5:对于SCTP协议数据,通过工作处理器提取SCTP偶联序列号,并使用SCTP偶联序列号+应用ID作为接口内消息关联索引;对于非SCTP协议数据,工作处理器使用IP地址+应用层ID作为接口内消息关联索引。

进一步地,所述S1具体包括如下步骤:

S11:读取处理器配置数据,与系统当前可用处理器做交集,得到当前所有的空闲多核处理器,然后根据Socket ID分类,得到各个Socket ID的空闲处理器列表;

S12:根据配置的接收网口列表、一级分发处理器数量、二级分发处理器数量、工作处理器数量,通过接收网口从系统获得对应Socket ID,在Socket ID的空闲处理器列表中分配处理器;

S13:根据接收网口Socket ID,使用同一网卡不同网口,或者调整发送网卡物理插槽,以确保该Socket ID至少对应有一个发送网口。

进一步地,所述S2中,每一接收网口采用随机分配或轮询的方式,对数据进行分发。

进一步地,所述S3中,对于非SCTP协议数据,一级分发处理器根据IP五元组分发到工作处理器;对于SCTP协议数据,一级分发处理器解码出SCTP消息类型、特定消息的特定参数,并将特定参数封装到消息头,与原始数据一起发送给二级分发处理器。

进一步地,所述S4中,二级分发处理器是根据消息头识别SCTP协议数据,并根据Socket ID、二级分发处理器ID两个维度创建、更新、删除3类哈希表,并通过哈希表数值计算出SCTP偶联序列号,再把SCTP偶联序列号封装到消息头,与原始数据一起发送给工作处理器。

进一步地,3类哈希表包括:

第1类哈希表:“IP地址+端口”哈希表;

第2类哈希表:“源IP地址+源端口+目的IP地址+目的端口”哈希表;

第3类哈希表:“Verification Tag+源端口+目的端口”哈希表。

进一步地,3类哈希表在分配内存时,以Scoket ID、二级分发处理器ID两个维度组织数据进行分配。

进一步地,所述一级分发处理器处理数据的步骤具体包括:

S31:从接收网口队列接收数据;

S32:解码IP层数据,判断是否为SCTP协议数据,若是转至S33,若不是转S35;

S33:解码SCTP协议数据,得到消息类型,若是INIT、INIT_ACK消息,解码得到IPv4/IPv6参数列表;若不是INIT、INIT_ACK消息,解码得到Verification Tag参数;把消息类型、IPv4/IPv6参数列表、Verification Tag参数封装到消息头,转S34;

S34:依据“协议类型+源端口+目的端口”,分发“消息头+原始数据“到二级分发处理器,并转S36;

S35:根据数据中的IP五元组,分发原始数据到工作处理器;

S36:结束。

进一步地,所述二级分发处理器处理数据的步骤具体包括:

S41:二级分发处理器线程从队列接收数据,判断消息类型,若是SCTP INIT或SCTPINIT_ACK,则转S42;若是SCTP DATA,则转S43;若是SCTP SHUTDOWN COMPLETE,则转S49;若是SCTP SHUTDOWN、SCTP SHUTDOWN ACK、SCTP ABORT或非SCTP协议数据,则转S411;若是其它SCTP协议数据,则转S410;

S42:根据IPv4/IPv6参数列表、源端口,创建第1类哈希表,哈希表的IP地址填当前消息的源IP地址,时间戳填当前时间,转S47;

S43:使用消息中源IP、源端口、目的IP、目的端口,在第1类哈希表查找,若查找到数据转S44;若没查到,转S45;

S44:获取哈希表中IP地址,使用该两个IP地址生成SCTP连接序列号,更新哈希表时间戳,转S46;

S45:创建或更新第2类、第3类哈希表,更新这2类哈希表时间戳,使用Verification Tag生成SCTP连接序列号,转S46;

S46:把SCTP偶联序列号封装到消息头,与原始数据一起发给工作处理器,转S47;

S47:检查3类哈希表的数据存活时间,是否超过配置的老化时间,如果超过转S48;若没超过,转S411;

S48:删除需要老化的哈希表项,转S411;

S49:获取IP地址、端口、Verification Tag参数,删除3类哈希表的对应数据,转S411;

S410:获取IP地址、端口、Verification Tag参数,更新3类哈希表的时间戳,转S411;

S411:结束。

还提供一种基于多核处理器的移动信令监测系统,包括流量预处理设备,还包括接收网口、一级分发处理器、二级分发处理器、工作处理器、发送网口;所述流量预处理设备用于接收外部输入的流量,并把流量分类后输出到接收网口;所述流量预处理设备的流量输出方式被配置为:协议类型+源端口+目的端口。

采用上述方案,本发明的有益效果是:

1)通过流量预处理设备对流量预处理(按协议类型归类)、多核处理器按功能分类、多核处理器两个层级分发(第一层级分发分离出SCTP协议数据、非SCTP协议数据,第二层级分发分离出每个SCTP偶联),让同一用户、同一接口、同一会话流程的数据被调度到同一个处理器处理,相关的内存读写、网口数据收发也不会跨NUMA节点,提高数据处理效率、减小延时;

2)通过流量预处理、分发方式的设置,不同处理器的共享内存访问都是无锁操作,多线程无需加锁/解锁,可快速并行处理数据,提高数据处理效率、减小延时;

3)接口内消息索引的有效设计,在SCTP多归属通道倒换时能找到同一个偶联连接号,不会造成消息被丢弃,提高XDR的关联率和内容准确度。

附图说明

图1为本发明的系统的原理性框图;

图2为本发明的方法的流程性框图;

图3为本发明的一级分发处理器处理数据的流程图;

图4为本发明的二级分发处理器处理数据的流程图。

具体实施方式

以下结合附图和具体实施例,对本发明进行详细说明。

参照图1至4所示,本发明提供一种基于多核处理器的移动信令监测方法,包括如下步骤:

S1:对接收网口、一级分发处理器、二级分发处理器、工作处理器、共享内存和发送网口,以Socket ID进行分类配置。

在该步骤中,流量预处理设备可接收从外部输入的流量,并把流量分类后输出到接收网口。为了提高数据处理效率,本发明把流量预处理设备的输出方式配置为:“协议类型+源端口+目的端口”,流量按协议类型分类,把同一接口、同一会话相关联的所有信令都集中到同一个网口,可为后续的高效数据处理、内存无锁操作做准备。在本发明中,对于多核处理器分为3类,即一级分发处理器,二级分发处理器,工作处理器。

对于SCTP协议数据,本发明的处理过程为:接收网口→一级分发处理器→二级分发处理器→工作处理器→发送网口;

对于非SCTP协议数据,处理过程为:接收网口→一级分发处理器→工作处理器→发送网口。

目前多核处理器通常使用NUMA(Non Uniform Memory Access)架构,Socket ID(Socket 0、Socket 1)表示NUMA节点,在多核处理器功能分类时,一个外部输入流所使用的资源,包括接收网口、一级分发处理器、二级分发处理器、工作处理器、共享内存、发送网口,这些资源以Socket ID归类,避免跨NUMA节点的收发数据、内存读写等操作,具体包括:

S11:读取处理器配置数据,与系统当前可用处理器做交集,得到当前所有的空闲多核处理器,然后根据Socket ID分类,得到各个Socket ID的空闲处理器列表;

S12:根据配置的接收网口列表、一级分发处理器数量、二级分发处理器数量、工作处理器数量,通过接收网口从系统获得对应Socket ID,在Socket ID的空闲处理器列表中分配处理器;

S13:根据接收网口Socket ID,使用同一网卡不同网口,或者调整发送网卡物理插槽,以确保该Socket ID至少对应有一个发送网口,可避免跨NUMA节点的数据传递操。

至此,一个接收网口对应的一级分发处理器、二级分发处理器、工作处理器、发送网口,全部属于同一个Socket ID。

S2:通过每一接收网口,将数据分发到与该接收网口连接的若干个一级分发处理器。

在该步骤中,接收网口采用随机分配或轮询的方式,对数据进行分发。

S3:通过一级分发处理器,从数据中分离出SCTP协议数据、非SCTP协议数据,并将SCTP协议数据分发至二级分发处理器,将非SCTP协议数据分发至工作处理器。

在该步骤中,一级分发处理器会分离出SCTP协议数据、非SCTP协议数据,其有两个输出目的地:二级分发处理器、工作处理器。一级分发处理器解码、识别IP协议类型(SCTP、UDP、TCP等),对于非SCTP协议数据,根据IP五元组分发到工作处理器;对于SCTP协议数据,解码出SCTP消息类型,特定消息的特定参数,并将参数封装到消息头,与原始数据一起发给二级分发处理器。

本发明中,参照图3所示,一级分发处理器处理数据的步骤具体为:

S31:一级分发处理器线程从接收网口队列接收数据;

S32:解码IP层数据,判断是否为SCTP协议数据,若是转至S33,若不是转S35;

S33:解码SCTP协议数据,得到消息类型,若是INIT、INIT_ACK消息,解码得到IPv4/IPv6参数列表;若不是INIT、INIT_ACK消息,解码得到Verification Tag参数;把消息类型、IPv4/IPv6参数列表、Verification Tag参数封装到消息头,转S34;

S34:依据“协议类型+源端口+目的端口”,分发“消息头+原始数据“到二级分发处理器,并转S36;

S35:根据数据中的IP五元组,分发原始数据到工作处理器;

S36:结束。

S4:通过二级分发处理器,识别SCTP协议数据,并计算出SCTP偶联序列号,再把SCTP偶联序列号与原始数据一起发给工作处理器。

由上可知,一级分发处理器分发数据至二级分发处理器的分发方式为:SCTP协议数据,协议类型+源端口+目的端口。因此,二级分发处理器仅处理SCTP协议数据,不处理其它协议。

在该步骤中,二级分发处理器根据消息头识别SCTP协议数据,根据Socket ID、二级分发处理器ID两个维度创建、更新、删除3类哈希表,让该二级分发处理器线程只操作自己的哈希表,不必和其它处理器竞争哈希表访问权,通过哈希表数值计算出SCTP偶联序列号,把SCTP偶联序列号封装到消息头,与原始数据一起发给工作处理器。

3类哈希表包括:

第1类哈希表:“IP地址+端口”哈希表,HASH1[Socket ID][处理器ID]{IP地址+端口}→(IP地址,时间戳);

第2类哈希表:“源IP地址+源端口+目的IP地址+目的端口”哈希表,HASH2[SocketID][处理器ID]{源IP地址+源端口+目的IP地址+目的端口}→(SCTP Verification Tag,时间戳);

第3类哈希表:“Verification Tag+源端口+目的端口”哈希表,HASH3[Socket ID][处理器ID]{Verification Tag+源端口+目的端口}→(SCTP Verification Tag,时间戳)。

以上3种哈希表在分配内存时,以Scoket ID、二级分发处理器ID两个维度组织数据,根据本发明处理器的分发方式,每个二级分发处理器线程只操作自己的数据(属于该线程的、特定会话的关联数据),不操作其它同类线程的数据,从而实现共享内存的无锁操作。

本发明中,参照图4所示,二级分发处理器处理数据的步骤具体为:

S41:二级分发处理器线程从队列接收数据,判断消息类型,若是SCTP INIT或SCTPINIT_ACK,则转S42;若是SCTP DATA,则转S43;若是SCTP SHUTDOWN COMPLETE,则转S49;若是SCTP SHUTDOWN、SCTP SHUTDOWN ACK、SCTP ABORT或非SCTP协议数据,则转S411;若是其它SCTP协议数据,则转S410;

S42:根据IPv4/IPv6参数列表、源端口,创建第1类哈希表,哈希表的IP地址填当前消息的源IP地址,时间戳填当前时间,转S47;

S43:使用消息中源IP、源端口、目的IP、目的端口,在第1类哈希表查找,若查找到数据转S44;若没查到,转S45;

S44:获取哈希表中IP地址,使用该两个IP地址生成SCTP连接序列号,更新哈希表时间戳,转S46;

S45:创建或更新第2类、第3类哈希表,更新这2类哈希表时间戳,使用Verification Tag生成SCTP连接序列号,转S46;

S46:把SCTP偶联序列号封装到消息头,与原始数据一起发给工作处理器,转S47;

S47:检查3类哈希表的数据存活时间,是否超过配置的老化时间,如果超过转S48;若没超过,转S411;

S48:删除需要老化的哈希表项,转S411;

S49:获取IP地址、端口、Verification Tag参数,删除3类哈希表的对应数据,转S411;

S410:获取IP地址、端口、Verification Tag参数,更新3类哈希表的时间戳,转S411;

S411:结束。

S5:对于SCTP协议数据,通过工作处理器提取SCTP偶联序列号,并使用SCTP偶联序列号+应用ID作为接口内消息关联索引;对于非SCTP协议数据,工作处理器使用IP地址+应用层ID作为接口内消息关联索引。

如上所述,一级分发处理器将数据分发至工作处理器的分发方式为:非SCTP协议数据、IP五元组;二级分发处理器将数据分发至工作处理器的分发方式为:SCTP协议数据,SCTP偶联序列号。

而对于SCTP协议数据,工作处理器使用“SCTP偶联序列号+应用层ID”关联接口内同一用户、同一会话的消息,比如5G N2接口的接口内索引是:“SCTP偶联序列号1+gNB UENGAP ID”、“SCTP偶联序列号2+AMF UE NGAP ID”,4G S6a接口的接口内索引是:“SCTP偶联序列号1+SCTP偶联序列号2+hop-by-hop ID+end-to-end ID”。

对于非SCTP协议数据,工作处理器使用“IP地址+应用层ID”关联接口内同一接口、同一会话的数据。

本发明中,工作处理器处理数据的步骤具体为:

S51:工作处理器线程从队列接收数据,如果是SCTP协议数据,提取SCTP偶联序列号,使用“SCTP偶联序列号+应用ID”作为接口内消息关联索引,转S53;

S52:对于非SCTP协议数据(UDP、TCP等),使用“IP地址+应用层ID”作为接口内消息关联索引,转S53;

S53:结束。

综上,通过以上设计可以提高整个移动信令监测系统处理的数据吞吐量,有利于降低产品成本,提升产品竞争力。

一实施例中,还提供一种基于多核处理器的移动信令监测系统,包括流量预处理设备,还包括接收网口、一级分发处理器、二级分发处理器、工作处理器、发送网口;所述流量预处理设备用于接收外部输入的流量,并把流量分类后输出到接收网口;所述流量预处理设备的流量输出方式被配置为:协议类型+源端口+目的端口,基于该系统可实施上述的方法,在此不再赘述。

以上仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种在多核处理器中提升内存访问效率的方法及系统
  • 一种基于多核系统的打印驱动方法、多核系统及终端设备
  • 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备
  • 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备
技术分类

06120116489436