本发明属于通信
技术领域:
:,具体涉及4g网络环境下的信令面与用户面关联数据维护方法。
背景技术:
::随着技术的进步,移动通信经历了1g、2g、3g时代,目前处于4g时代。相比于2g、3g。4g核心网不再具有电路域cs(circuitswitch,电路交换)部分,只具有分组域epc(evolvedpacketcore,演进分组核心),在epc中,mme(mobilitymanagemententity,移动性管理实体)和sgw(servinggateway,服务网关)一起实现了sgsn(servinggprssupportnode,服务gprs(generalpacketradioservice,是通用分组无线服务技术的简称)支持节点)功能,pgw实现了ggsn(gatewaygprssupportnode,网关gprs支持节点)功能,但4g核心网epc实现了控制面和用户面分离,mme实现控制面功能,sgw实现用户面功能。为了能够实现对用户的上网行为进行管理,需要对用户的上网数据进行提取解析,由于4g核心网epc控制面和用户面分离,控制面数据和用户面数据基于协议不同,所携带信息不同,故需要对用户面提取消息和内容,对控制面数据提取身份信息,将身份信息和上网数据结合起来,形成一条完整的上网信息。目前,有以下技术方案可以实现移动互联网内部信令面和用户面的关联:(1)接入4g网络中的s11接口流量,在创建会话请求(createsessionrequest)和创建会话响应(createsessionresponse)中获取userip(用户ip)、imsi(国际移动用户识别码)、imei(国际移动设备识别码)、msisdn(国际移动台isdn号码);在sgi接口进行分光,获取用户上网流量,根据用户的ip地址,进行信令面和用户面关联。然而用户的ip是由lte中的pgw(pdngatew,pdn网关)分配,因为存在多个pgw,分配的用户ip很可能重复,会造成一定的技术混淆;而且由于sgi处于pgw和互联网之间,无法如实反应sgw等网元信息。(2)对4g网络提取s11侧隧道信息,从4g网络的s1-u接口的数据中提取s1-u接口侧隧道信息,通过s11接口侧隧道信息和s1-u接口侧隧道信息将s11接口信令过程和s1-u接口的用户数据关联起来。该方法仅仅介绍了数据提取点及提取内容,未涉及相关数据处理,在数据量达到一定规模上,未提出合理的解决方案;在处理过程中如果程序宕机,会造成大量关联数据丢失,关联率灾难恢复较慢,无法适用于大型工程项目。(3)现有数据管理方法多采用单哈希表、多哈希表或红黑树的数据结构进行管理,在多线程环境下,即单生产者多消费者或多生产者多消费者同时进行读写操作时,为保证数据一致性通常采用互斥锁或自旋锁的实现方式,这样会引入对临界区的访问竞争导致访问效率低下。为了进一步提升查询并发度,往往采用多桶锁的方案,但该方案在数据量大时,由于数据hash不均匀而导致部分桶长度过长,进而导致整体查询效率降低。技术实现要素:现有方法在管理信令数据时,通常采用单hashtable或双hashtable进行数据的缓存,当有并发操作时,通过锁机制来保证线程安全,因此在发生大量读写操作时,锁机制严重影响了整表的操作效率,导致系统的整体效率下降。信令关联对数据实时性要求十分高,在用户操作移动终端时,根据用户位置不断进行tau(trackingareaupdate,跟踪区更新过程),产生新建、更新、删除等信令操作。现有方法中并未涉及垃圾回收功能,单靠创建会话(createsession)、删除会话(deletesession)、创建承载(createbearer)、修改承载(modifybearer)、删除承载(deletebearer)来进行信令关联表项内容更新。当处理程序长时间运行,会产生冗余数据,对系统性能造成操作影响。在服务器有限的条件下,信令数据管理通常单节点运行,往往不采用分布式的容灾技术进行数据备份和数据恢复,一旦服务器发生异常宕机、停电、进程崩溃等无法避免事件,会造成大量数据的丢失,程序再次启动时,只能通过积累方式进行信令关联。针对上述已有数据管理方法存在的问题,本发明公开了一种4g网络环境下的信令面与用户面关联数据的管理方法,与已公开的方法相比,具有以下优点:1)可高效快速查询,采用hashmap无锁机制;2)具备容灾技术,在实时流处理过程中,程序异常或发生宕机,重启后均可快速恢复;3)垃圾回收机制,一定时间内未使用数据会进行清洗处理。本发明4g网络环境下的信令面与用户面关联数据维护方法,具体步骤包括:(1)初始化参数:本发明设计上行关联数据表和下行关联数据表记录信令面数据。关联数据缓存队列的长度为l;上行关联数据表的最大容量为m(单位为条数);下行关联数据表的最大容量为n(单位为条数);关联数据计数器n置0;关联数据计数器与关联数据的最大容量的比例为r(即n/m或n/n);关联数据的超时时间t(单位为秒);关联数据的超时队列的长度o;(2)本管理系统接收一个从s11核心网获取的数据包,首先根据数据包上携带的标识数据考察关联数据的操作类型,如果是新增操作,转步骤(3);如果是更新操作,转步骤(3),在步骤(3)中再进行判断;如果是删除操作,转步骤(10);(3)本发明设计上行关联数据表和下行关联数据表记录信令面数据,判断该步骤(2)中的数据包的关联数据的数据类型,如果是f-teid(全量隧道端点标识,即fullqualifiedtunnelendpointidentifier的缩写)和enodeb(evolvednodeb,即演进型nodeb,是lte网络中的无线基站)隧道ip地址,转步骤(4);如果是f-teid和pgw隧道ip地址,转步骤(5);(4)在上行关联数据表中查找信令面数据的f-teid和enodeb隧道ip地址,如果能找到与步骤(2)中数据包关联数据的f-teid和enodeb隧道ip地址匹配的信令面数据则转步骤(5),否则转步骤(6);(5)根据步骤(2)中数据包信令面数据从下行关联数据表中找到与其对应的下行数据,对其更新,填入步骤(2)数据包中的信令面数据,包括f-teid和pgw隧道ip地址;(6)新建信令关联存储节点,将上行关联数据插入到上行关联数据表中;(7)在下行关联数据表中查找步骤(2)中数据包信令面数据的f-teid和pgw隧道ip地址,如果能找到则转步骤(8),否则转步骤(9);(8)根据步骤(7)中信令面数据从上行关联数据表中找到与其对应的上行数据,对其更新,包括f-teid和enodeb隧道ip地址。在上行关联数据表中删除原有上行关联数据。(9)新建信令关联存储节点,将上行关联数据插入到下行关联数据表中;(10)在上行关联数据表中查找步骤(2)中数据包信令面数据的f-teid和enodeb隧道ip地址,如果能找到则转步骤(11),否则转步骤(12);(11)在下行关联数据表中删除与步骤(2)中数据包的信令面数据对应的下行关联数据,在上行关联数据表中删除与步骤(2)中数据包的信令面数据对应的上行关联数据,设置下行表超时状态;(12)在上行关联数据表中删除与步骤(2)中数据包的信令面数据对应的上行关联数据,在下行关联数据表中删除与步骤(2)中数据包的信令面数据对应的下行关联数据,设置上行表超时状态;(13)超时管理功能与上述过程同时进行:遍历上行关联数据表与下行关联数据表;遍历上行关联数据表或下行关联数据表中的每一个桶上的每一个信令面关联数据节点,判断当前信令面关联数据节点的定时器,如果当前信令面关联数据节点据上一次访问时间超过超时时间t,则置该信令面关联数据节点超时状态为1,将该信令面关联数据节点加入到关联数据超时队列中;遍历关联数据超时队列,如果当前数据关联节点入队列时间大于1秒,则删除该数据关联节点;(14)用户面数据可以和信令面数据实时无锁完成关联,与上述过程同时进行:步骤(2)中数据包用户面数据解析enodeb和sgw侧隧道地址,分别查询上行关联数据表和下行关联数据表,如果查询命中则完成用户面与信令面的关联;如果查询没有命中,则关联失败。本发明中的灾备方案适用于服务器有限不能采用分布式容灾系统进行数据恢复的情况,具体步骤包括:(1)初始化参数:上述信令关联存储节点所在的服务器宕机重启后,启动灾备流程,录入指定服务器中指定目录下已经缓存好的信令关联存储节点路由文件(动态记录各个节点的ip地址的文件),并对各个信令关联存储节点进行测试,确认路由文件中各个信令关联存储节点的存活状态,剔除发生故障的信令关联存储节点。根据存活的信令关联存储节点的个数n动态开辟n个线程进行数据的恢复工作;(2)节点标记处理:对存活的信令关联存储节点进行编号处理;(3)广播请求数据:各线程给对应临近存活信令关联存储节点发送数据包(包含节点编号),临近信令关联存储节点获取数据包中携带的节点编号num,根据imsi%num和imsi%(num+1)(当num等于存活节点的个数时:imsi%1)获取数据,将其分开做负载均衡,做哈希处理,对获取的各个信令关联存储节点的整体数据也做哈希处理,将数据分别打包返回给请求数据的信令关联存储节点;(4)重复数据的去重:服务器将所接收到的数据做链表处理,取出编号相同的信令关联存储节点数据,对哈希值进行比较,若相同,根据编号顺序将数据进行合并,若不同转到步骤(3);(5)数据的md5验证:对按编号顺序合并好的数据整体求哈希操作,将求取的哈希值与存活信令关联存储节点发送的的哈希值进行比较,若相同,转步骤(6),若不同,转到步骤(3);(6)正常业务的运行:数据重新恢复,开始对数据进行处理。与现有技术相比,本发明的积极效果为:本发明公开了一种4g网络环境下的信令面与用户面关联数据的管理方法,该方法可有效提升信令关联查询效率,与已公开的方法相比,具有如下优点:1)采用无锁机制,在数据量庞大的前提下可明显信令关联表查询效率;2)采用定时垃圾回收机制,减少信令关联冗余数据;3)具备容灾技术,在实时流处理过程中,程序异常或发生宕机断电等,重启后可快速恢复;4)不需要额外的设备。附图说明图1为关联数据管理流程图;图2为灾备流程图;图3为关联数据类型处理图。具体实施方式下面,结合具体的实施例对本发明进行详细说明。图1给出了关联数据管理方法的流程图,关联数据管理方法的具体实施步骤如下:(1)初始化参数:构造上行关联数据表和下行关联数据表记录信令面数据。关联数据缓存队列的长度为l;上行关联数据表的最大容量为m(单位为条数);下行关联数据表的最大容量为n(单位为条数);关联数据计数器n置0;关联数据计数器与关联数据的最大容量的比例为r(即n/m或n/n);关联数据的超时时间t(单位为秒);关联数据的超时队列的长度o;(2)本管理系统接收一个从s11核心网获取的数据包,首先根据数据包上携带的标识数据考察关联数据的操作类型,如果是更新操作,转步骤(3);如果是删除操作,转步骤(10),关联数据类型分类处理流程如图3所示;其中数据包采用从缓存队列中以先进先出的读取关联数据包的方式。(3)设计上行关联数据表和下行关联数据表记录信令面数据,判断关联数据的数据类型,如果是f-teid和enodeb隧道ip地址,转步骤(4);如果是f-teid和sgw隧道ip地址,转步骤(5);(4)在上行关联数据表中查找该信令面数据的f-teid和enodeb隧道ip地址,如果能找到则转步骤(5),否则转步骤(6);在上行关联数据表中查找信令面数据的f-teid和enodeb隧道ip地址的过程如下:采用enodeb+f-teid作为哈希表的key,通过该key值和算法获取所属桶号bucketid,哈希表桶数为bucketlen。计算方法为bucketid=key%bucketlen。每个桶是一颗红黑树(信令面数据与用户面的对应关系),该红黑树以f-teid进行组织,通过查找桶号bucketid对应的红黑树的节点判断是否为目标f-teid和enodeb隧道ip,如果找到匹配节点且该节点的定时器未超时,则查询命中。(5)根据步骤(2)中数据包信令面数据从下行关联数据表中找到与其对应的下行数据,对其更新,包括f-teid和sgw隧道ip地址。在下行关联数据表中删除原有下行关联数据;在删除下行关联数据节点时,仅将该节点的定时器状态设置为超时,并将该节点加入到超时队列中即可,无需释放该节点的内存结构。(6)新建信令关联存储节点,将上行关联数据插入到上行关联数据表中;新建信令关联节点时,需要设置新建信令关联节点的定时器。(7)在下行关联数据表中查找该信令面数据的f-teid和sgw隧道ip地址,如果能找到则转步骤(8),否则转步骤(9);(8)根据步骤(7)中信令面数据从上行关联数据表中找到与其对应的上行数据,对其更新,包括f-teid和enodeb隧道ip地址。在上行关联数据表中删除上行关联数据。(9)新建信令关联存储节点,将下行关联数据插入到下行关联数据表中;(10)在上行关联数据表中查找该信令面数据的f-teid和enodeb隧道ip地址,如果能找到则转步骤(11),否则转步骤(12);(11)在下行关联数据表中删除下行关联数据,在上行关联数据表中删除上行关联数据;在删除下行关联数据节点时,仅将该节点的定时器状态设置为超时,并将该节点加入到超时队列中即可,无需释放该节点的内存结构。(12)在上行关联数据表中删除上行关联数据,在下行关联数据表中删除下行关联数据;在删除上行关联数据节点时,仅将该节点的定时器状态设置为超时,并将该节点加入到超时队列中即可,无需释放该节点的内存结构。(13)超时管理功能与上述过程同时进行:遍历上行关联数据表与下行关联数据表。遍历上行关联数据表或下行关联数据表中的每一个桶上的每一个关联数据节点,判断当前节点的定时器,如果当前节点据上一次访问时间,如果超过阈值t,则置该节点超时状态为1,将该节点加入到关联数据超时队列中。遍历关联数据超时队列,如果当前数据关联节点入队列时间大于1秒,则删除该节点。对于一个超时节点,首先超时管理线程遍历上行关联数据表与下行关联数据表的每一个桶,超时关联线程首先获取一个桶上的桶锁,然后遍历桶中红黑数上的每一个节点,根据节点上的计时器指示的最近一次访问该节点的时间t1,判断当前时间节点t2与t1的时间差是否超过超时阈值t,如果超过阈值t,则置该节点超时状态为1,然后将该节点从红黑树上摘下,按照先进先出的策略将该节点加入到关联数据超时队列中,然后释放桶锁。关联数据超时队列中的数据节点同样通过超时管理线程进行数据存储结构的删除,超时管理线程根据队列尾节点计时器指示的最近一次访问该节点的时间t3,如果满足当前时间t2-t3>1,则释放该节点的内存结构。(14)用户面数据可以和信令面数据实时无锁完成关联,与上述过程同时进行:用户数据解析enodeb和sgw侧隧道地址,分别查询上行关联数据表和下行关联数据表,如果查询命中则完成用户面与信令面的关联;如果查询没有命中,则关联失败。对于一个用户数据的关联查询请求,首先根据f-teid和enodeb隧道ip构造查询上行数据关联表,在查询过程中无需进行加锁、解锁的操作,如果查询到上行数据关联表中存在该节点,且节点的超时状态未超时,则查询命中;否则根据f-teid和sgw隧道ip构造查询下行数据关联表,查询过程如同查询上行数据关联表。图2给出了灾备方法的流程图,具体实施步骤如下:(1)初始化参数:上述信令关联存储节点所在的服务器宕机重启后,启动灾备流程,录入指定服务器中指定目录下已经缓存好的信令关联存储节点路由文件(动态记录各个节点的ip地址的文件),并对各个节点进行测试,确认路由文件中各个节点的存活状态,剔除发生故障的节点。根据存活的节点的个数动态开辟n个线程做数据的恢复工作。假设路由文件中有6个ip地址,通过测试只有5个存活,则开辟5个线程做数据恢复;(2)节点标记处理:对存活的节点进行编号处理。假设有5个节点,节点编号依次为1、2、3、4、5;(3)广播请求数据:将包头编号中的编号字段填入1,发送给第一个ip地址,临近节点获取imsi%1的数据,求取md5的值打包返回,接着获取imsi%2的数据,求取md5的值打包返回,最后求取,整个imsi的md5值打包返回。其余节点均照此法;(4)重复数据的去重:将编号同为1的链表节点的数据取出,做哈希对比,若相同,则数据保留,若不同则返回步骤(3),依次进行,直至数据合并完成;(5)数据的md5验证:将按照编号顺序合并好的数据整体求哈希操作,将求取得哈希值与存活节点的哈希值进行比较,若相同,转步骤(6),若不同,转到步骤(3);(6)正常业务的运行:数据重新恢复,开始对数据进行处理。尽管为说明目的公开了本发明的具体内容、实施算法以及附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。当前第1页12当前第1页12