张多英,伍伟池,焦文华
(1.暨南大学 信息科学技术学院 电子工程系,广州510632;2.中国电信广东互联网及增值运营中心,广州510080)
随着3G业务的推广和普及,移动互联网时代已经来临,用户可以随时随地、随心所欲地访问互联网,通过3G网络享受各种增值服务。但与此同时,盗用问题也日益严重。自CDMA2000 EVDO(中国电信3G制式)系统应用以来,利用运营商漏洞盗用他人数据信息、复制他人用户识别模块(User Identity Model,UIM)卡等盗用的行为频频发生,个别用户被盗用的无线上网费甚至高达一个月3万多元,这给用户和运营商都带来了极大的损失。维护人员也曾利用各网元平台自身的一些功能对盗用行为进行限制和预警,但因相应的功能作用有限,均收效甚微。因此,在用户UIM卡信息被盗用后及时发现、及时预警,尽力避免用户蒙受损失,提升用户的满意度,已经成为中国电信运营3G业务重点关注的问题。由于各种制式的移动技术在网元设计和流程设计上都有不同,例如GSM技术里面就没有AAA(Authentication,Authorization,Accounting)网元,其他运营商在处理相关问题时采用的方法也是不同的。而CDMA网络在联通运营时期,对于盗用行为也没有太多的办法,仅仅是采用上网费用减免的方式来处理。在中国电信承接CDMA网络后,无线宽带上网被盗用的问题再次凸显出来。本文对盗用问题进行了专题分析和深入探讨,最终确定了以AAA平台为切入点,设计出相关功能模型,有效地解决了盗用问题。
为防止盗用问题的发生,CDMA2000分组域中的各个网元根据自身的功能和技术条件,制定了一些防盗用的策略,但实施后仍存在漏洞,有3个主要原因。
(1)PDSN以集群的机制运行。广东全省100多台PDSN被划分为3个集群,每个集群可视为一台PDSN,在PDSN集群配置session限制策略,同一个号码只允许一个session接入。这样的设置有效地限制了省内的盗号行为,但存在以下问题:第一,因为划分了3个集群,故并不能100%地限制;第二,98%以上的盗用行为发生在外省,省内PDSN的限制作用有限。
(2)HLR对用户鉴权时,需要校验三码,即IMSI、ESN和AKEY。当用户鉴权信息中的三码与HLR保存的数据一致时,才被允许接入,但存在的问题有:IMSI和ESN号可以直接从UIM卡读出的;AKEY虽保密性高,但不排除有人会泄漏用户数据;只有1X和CAVE算法的EVDO用户才会到HLR鉴权,MD5(Message-Digest Algorithm 5)算法的EVDO用户不需要去HLR鉴权,三码校验对MD5算法的EVDO用户是无效的。
(3)专业计费平台根据出账话单,剔除出超大流量、超大时长的话单,并根据计费规则进行“流量封顶”或“时长封顶”。存在的问题:此方法虽然能找出被盗用的号码,并通过费用减免来降低用户损失,但核查结果的时效性不高,高额的上网费用依然要由用户和运营商来承担。
可以看出,PDSN、HLR和专业计费在对盗用行为的限制和预警方面虽然都有其积极的作用,但同时也存在局限性。结合上述网元的优缺点,以C网分组域中AAA平台作为切入点,深入了解无线宽带的话单格式和字段含义,结合CDMA网络承接期积累的故障处理经验,基于AAA[1]的原始计费话单提出话单分析模型,通过数据挖掘,找出可疑话单。
图1为计费报文交互过程,当用户通过鉴权并建立起PPP会话后,PDSN向AAA发送Accounting-Start报文。AAA接收到Accounting-Start报文后,解析并提取出与计费相关的字段信息,如 IMSI、NAI、IP-Address等,然后根据话单规范将字段填充进话单中的对应位置,生成一条上网话单。
图1 计费报文交互过程Fig.1 Billing message interaction process
用户下网时,PCF拆除与PDSN的PPP会话连接,同时PDSN向AAA发送Accounting-Stop报文。AAA接收到Accounting-Stop报文后,同样进行解析和字段提取,并记录进话单中,生成一条下网话单。与上网话单不同的是,下网话单记录了用户的累计上网时长和累计上网流量[2]。
如果用户持续在线并在一定时间范围内产生了数据流量,PDSN就会向AAA发送Interim-Update报文[3],用于记录某个时间段内用户的上网行为,如该统计时间段内用户的激活时长以及上网流量。AAA接收到Interim-Update报文后,对应生成一条中间话单。
在理想的情况下,AAA在用户的一次上网过程中会依次收到一个Accounting-Start报文和一个Accounting-Stop报文,或者收到一个Accounting-Start报文、若干个Interim-Update报文和一个Accounting-Stop报文。但是在现网环境中,因设备配置、网络时延、用户行为习惯等原因,会使情况变得复杂化。下面根据各种实际场景,列举3种特殊的原始计费话单。
(1)休眠话单
在现网中当用户连续30 s没有产生任何流量,PCF会缓存用户的会话session,释放空口资源,拆除与PDSN的PPP会话,此时PDSN会向AAA发送Ac-counting-Stop报文;当用户再次产生流量,PCF重新与PDSN建立PPP会话,PDSN会向AAA发送Accounting-Start报文。需要注意以下几点:上下网产生的Accounting报文由Correlation ID进行标识;休眠产生的Accounting报文由Account Session ID进行标识;在一对上下网产生的Accounting报文中间,AAA可能会收到若干对休眠产生的Accounting报文;所有休眠产生的Accounting报文的Correlation ID与上下网产生的Accounting报文的Correlation ID一致;每一对休眠产生的Accounting报文的Account Session ID都是不相同的。
(2)交叉话单
用户在跨地市、跨省份的时候,容易发生PDSN切换。此类切换属于硬切换,切换时用户网络会发生中断,需要重新拨号才能登陆网络。例如用户一开始接入PDSN-1,在移动过程中发生了切换,用户断网后重新拨号接入PDSN-2。此时PDSN-1的PPP会话仍然存在,PDSN-1未向AAA发送Accounting-Stop报文;而PDSN-2因PPP会话已经建立成功,向AAA发送Accounting-Start报文;10 min后因用户没有产生任何流量,PDSN-1判断用户已断线,主动拆除PPP会话并向AAA发送Accounting-Stop报文,这样就产生了交叉话单。一般情况下交叉话单的交叠时长不会超过10 min。
(3)重复话单
因网络时延大或者主机响应时间超长,导致PDSN的Accounting-Request得不到及时响应,PDSN会向AAA重发Accounting报文[4],这样就有可能导致AAA收到多条相同的Accounting报文。由于原始计费话单的写入机制没有去重功能,所以重复的报文也会被如实记录进原始计费话单。
AAA每10 min在指定目录下生成原始计费话单文件,每个原始计费话单文件由一条或多条话单记录组成。每条记录占一行,记录之间以换行符分隔。
AAA产生话单记录的原则[5]:
(1)所有话单记录都是采用CDR(呼叫详细记录)格式产生;
(2)所有话单记录都是以ASCII编码格式进行编码,话单内的字段域按顺序排列;
(3)各类话单记录独立为一个记录,不同类的话单记录不能合并生产。
每个CDR记录由多个域构成,每个域对应一个字段,域之间以“/t”分隔。字段可以有子类型,子类型之间以“ ”分隔。各字段及子类型按规范定义的顺序排列,如果相应的属性值为空,则直接用分隔符分开,分隔符之间无其他符号。
PDSN将UDR的信息通过RADIUS消息发给AAA,AAA产生原始计费话单。由于计费系统采集的是AAA产生的原始计费话单记录,因此AAA产生的每一条原始计费话单必须符合《中国电信CDMA1x工程AAA话单格式》中的字段定义。
根据《中国电信CDMA1x工程AAA话单格式》的描述,AAA的原始计费话单共包括59个字段。其中RoamFlag是由AAA收到PDSN的Accounting报文后,根据PDSN IP判断用户是否漫游,然后由AAA填充进原始计费话单中;PaidType和MDN是由AAA根据Accounting报文中的IMSI查询AAA数据库的IMSI关联数据得到,并由AAA填充进原始计费话单中。其他字段均由AAA根据Accounting报文的内容,直接填充进原始计费话单的对应字段中。
图2是现网的原始计费话单,3条记录从上到下依次为上网话单、下网话单和中间话单。从现网话单中可以看到,每一条记录均不满59个字段,这个与现网PCF、PDSN的配置有关。
图2 现网的原始计费话单记录Fig.2 The original billing communication detail records
上网费用异常的故障申告包括话单对应的时间段内用户并没有上网行为,多条话单记录在时间上存在交叠部分,以及在一段时间话单记录来自多台PDSN等。
每天5 000多万条原始计费话单记录,每条记录有59个字段,数据量如此庞大的文本数据,需要采用数据挖掘技术对数据进行分析和过滤。
数据挖掘就是从大量数据中获取有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程。数据挖掘的广义观点:数据挖掘就是从存放在数据库、数据仓库或其他信息库中的大量的数据中“挖掘”有趣知识的过程。数据挖掘又称为数据库中知识发现(Knowledge Discovery in Database,KDD)。
神经网络是仿照生理神经网络结构的非线性预测模型,通过学习进行模式识别,它用一种较为简单有效的方法解决了复杂度相对大的一些问题。它常用于两类问题:分类和回归。在结构上,可以把一个神经网络划分为输入层、输出层和隐含层。神经网络结构如图3所示。输入层的每个节点对应一个个的预测变量。输出层的节点对应目标变量,可有多个。在输入层和输出层之间是隐含层(对神经网络使用者来说不可见),隐含层的层数和每层节点的个数决定了神经网络的复杂度。
除了输入层的节点,神经网络的每个节点都与很多它前面的节点连接在一起,每个连接对应一个权重。调整节点间连接的权重就是在建立神经网络时要做的工作。决定神经网络拓扑结构的是隐含层及其所含节点的个数,以及节点之间的连接方式[8]。
图3 神经网络结构示意图Fig.3 Schematic drawing of neural network structure
决策树是一个类似于流程图的树结构,其中每个非叶节点均表示考察数据项目的测试或决策,每个分枝代表一个测试输出,而每个叶子节点代表类或类的分布。树的最顶层节点是根节点。为了分类一个特定数据项目,我们从根节点开始,一直向下判定,直到达到一个叶子节点为止。这样,一个决策树就形成了。
决策树分类算法是应用最广的归纳推理算法之一,它是一种逼近离散值函数的方法,对噪声数据有很好的健壮性。用决策树算法进行分类要分两个步骤:第一步是利用训练集建立并精简一棵决策树,建立决策树模型,这个过程实际上是一个从数据中获取知识,进行机器学习的过程;第二步是利用生成的决策树模型对输入的数据进行分类,对输入的记录,从根节点依次测试记录的属性值,直到到达某个叶子节点,从而找到该记录所在的类。
根据AAA原始计费话单生成的规则和特定情况下话单的生成规律,运用神经网络和决策树的算法知识构筑分类模型和判断条件模型。
以话单记录的计费标识为分类条件,对话单进行归类分析。分析模型如图4所示。
(1)上、下网话单做为输入项,通过特定条件进行合并,可以得到描述完整上网过程的话单;
(2)以完整话单与上网话单作为输入项,在设定的条件下进行比较,得到重叠话单;
(3)最后通过特殊处理,得到异常话单作为结果输出。
图4 神经网络分析模型Fig.4 Neural network analysismodel
通过神经网络算法可以得到一个话单分析的基本过程,但如何对每个节点的产生进行条件限制,以使最终的输出结果有较高的准确率?这需要采用决策树算法对规则条件进行补全。决策树分析模型图如图5所示。
图5 决策树分析模型Fig.5 The decision tree analysismodel
通过上述数据挖掘算法得到的分析模型,可以构建出原始计费话单分析模型如下。
(1)创建分区表
1)创建主分区表。主分区表中字段的名称、类型和长度等定义与《中国电信CDMA 1x工程AAA话单格式》的字段定义保持一致。为了数据输出后查看核对方便,在主分区表末尾增加一个时间戳的转换字段。
2)创建子分区表和复合分区表。以用户类型、时间戳等字段为分类条件,创建子分区表和复合分区表,符合分类条件的话单记录归入对应的表中,不符合条件的话单记录归入Default表中。
(2)数据导入
1)对原始计费话单进行预处理,清理掉话单记录中的空字段,并将话单记录转化为可以导入数据库的文本格式。使用脚本将处理后的原始计费话单导入数据库的分区表中。
2)将时间戳(Eventtime)转换为时间串(Datestr)格式,导入到分区表的对应字段中。
(3)创建索引表空间和索引
索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。通过建立索引,可以快速访问数据库表中的特定信息。
(4)创建比对所需要的临时表
1)以IMSI、Correlation ID 和PDSN IP 为条件,对数据进行排序。
2)以IMSI和Correlation ID为匹配条件,找出话单中Eventtime为最大值和最小值的记录进行合单,并记录到临时表a和b中。
(5)设定原始计费话单分析条件
1)以IMSI为匹配条件,对临时表 a、b中同一个IMSI的记录进行比对;
2)临时表a和b的Correlation ID不一致。针对同一个IMSI,检索出两个表中在同一时间内不同的上网过程,作为识别盗用行为的条件之一:
情况一:话单包含。临时表b的starttime大于(即晚于)临时表a的starttime,临时表b的endtime小于(即早于)临时表a的 endtime。需要考虑因PDSN切换而导致的话单重叠;
情况二:话单交叉。临时表b的starttime大于(即晚于)临时表 a的 starttime,临时表 b的starttime小于(即早于)临时a的endtime。需要考虑因PDSN切换而导致的话单重叠。
(1)在Oracle数据库中创建一张有60个字段的分区表,该表最后一个字段是时间戳的转换字段。格式是“yyyymmddhh24miss” ,例如“20090605094332”。其他字段请参照《中国电信CDMA 1x工程AAA话单格式》的字段定义。
(2)将原始计费话单记录转换为可导入数据库的文本格式,并对记录中的空字段进行处理,去除噪声数据。以2009年8月24日9点50分的话单为例,读取此话单记录,将其中的` t'字符全部找出来,并用分隔符`,'进行替换,最后输出到文本文件aaa-200908240950.txt。程序代码如下:
more AAA-01-20090824-0950-2008.TXT tr′ t′′,′ sed′s/ $/,,/′>../aaa-200908240950.txt;
(3)编辑数据导入控制文件。部分程序代码如下:
load data
infile′aaa-200908240950.txt′//需要导入的文本文件名//
append into table aaa-acct//被导入数据的分区表名//
fields terminated by′,′//字段以′,′作为终结//
(4)数据导入。
sqlldraaa/aaa direct=y errors=99999999 control='aaa-acct.ctl';
//调用控制文件aaa-acct.ctl对导入过程进行控制。参数项Direct=y独占锁表,可以使导入速度加快;参数项errors=99999999,可以忽略因文本文件中文件头等格式不规则而引起的报错//
(5)创建转换函数,将数据库的eventtimes(时间戳)的值转换为“yyyymmddhh24miss”格式,并插入到分区表的datestr字段中。
end to-oradate;//创建时间戳转换函数//
update aaa-acct set datestr=to-char(to-oradate(eventtime),′yyyymmddhh24miss′);
//将转换后的时间串插入到分区表的datestr字段中//
(6)创建索引表空间和索引。
CREATE TABLESPACE acct-idx//创建索引表空间//
create index aaa-acct-idx1 on aaa-acct//创建索引//
(7)执行查询、分析的SQL语句。
本文基于数据挖掘技术并通过编写分析脚本设计了一种原始计费话单分析模型,为了评估本模型的效果,我们对其进行了测试。
(1)在AAA随机选取一段时间的话单进行分析:AAA-05-20090714-2*.TXT,选取时间为2009年7月14日20点00分至23点59分。
转换原始计费话单文件,并导入数据库,过程见图6,导入数据共764 115条。
图6 原始计费话单导入Fig.6 Import of original billing communication detail records
(2)执行设定的SQL语句,结果显示“3820 rows selected.”。
(3)实验中,随机抽取10个IMSI记录进行检查,结果见表1。
表1 原始计费话单分析结果Table 1 The analysis results of original billing communication detail records
(4)根据分析结果,省内外的盗用行为都存在。省外的盗用特点是在线时间长,各盗用连接互有交叠。省内的盗用行为多发生在不同PDSN集群之间,从在线时间的交叉以及在线时间不短可以判断出来;也有发生在同一集群的,但从在线时间可以看出盗用者刚上线就立即被PDSN断开了。
测试结果表明,原始计费话单分析模型满足设计预想,能够完成原始计费话单的分析工作,并从中发现异常话单。
本文针对CDMA2000 EVDO移动网络中的盗用问题,根据实际处理超量上网费用问题时积累的经验,采用数据挖掘的理论和技术,通过编写分析脚本,设计了一种基于AAA平台原始计费话单分析的模型。利用广东电信现网数据进行分析,对该模型进行了验证。测试结果显示,原始计费话单分析模型能够完成原始计费话单的分析工作,并从中找出异常的话单,满足设计预想。该模型能够应用于CDMA2000移动网络中,可有效地发现省内外的盗用行为,进一步提升网络的安全性,但在未来工作过程中仍需要不断优化检索语句。
[1]RFC2903,Generic AAA Architecture[S].
[2]RFC2865,Remote Authentication Dial In User Service(RADIUS)[S].
[3]RADIUS Interim Update at Call Connect[S].
[4]RFC1122,Requirements for Internet Hosts-Communication Layers[S].
[5]中国电信CDMA 1x工程AAA话单格式[S].China telecom CDMA 1x engineering AAA single format[S].(in Chinese)
[6]胡可云,田凤占,黄厚宽.数据挖掘理论与应用[M].北京:清华大学出版社,2008.HU Ke-yun,TIAN Feng-zhan,HUANG Hou-kuan.Data Mining Theory and Application[M].Beijing:Tsinghua U-niversity Press,2008.(in Chinese)
[7]Han J W,Kamber M.数据挖掘概念与技术[M].范明,孟小峰,译.北京:机械工业出版社,2007.Han J W,Kamber M.Data Mining Concepts and Techniques[M].Translated by FAN Ming,MENG Xiao-feng.Beijing:Mechanical Industry Press,2007.(in Chinese)
[8]段云峰,吴唯宁,李剑威,等.数据仓库及其在电信领域中的应用[M].北京:电子工业出版社,2003:94-95.DUAN Yun-feng,WU Wei-ning,LI Jian-wei,et al.Data warehouse and the application in telecommunications[M].Beijing:Publishing House of Electronic Industry,2003:94-95.(in Chinese)
[9]王晓龙.计算机自然语言处理[M].北京:清华大学出版社,2005:152-155.W ANG Xiao-long.Computer natural language processing[M].Beijing:T singhua University Press,2005:152-155.(in Chinese)
[10]郑岩.数据仓库与数据挖掘原理及应用[M].北京:清华大学出版社,2011.ZHENG Yan.Datawarehouse and data mining principle and application[M].Beijing:Tsinghua University Press,2011.(in Chinese)