大规模sip信令存储、查询和实时跟踪的实现

11 篇文章 0 订阅
4 篇文章 0 订阅

15年前运营商的核心网还是七号信令(SS7),那时候的信令采集、监控和检测系统还很落后,基本上就是给交换部门一个实时跟踪呼叫的工具,尤其是查询历史信令,很麻烦,需要将某日的原始数据导入进数据库,再进行查询,相当麻烦而且查询速度超慢。当时一个朋友想挖掘呼叫的数据,于是我在本地网已经收敛好的信令上,做了一个信令采集、存储和快速检索系统,性能远超当时的中创信测系统,颇得运营商搞交换的弟兄好评。现在的IMS核心网已经是SIP了,如果重新设计一个类似的系统,可能吗?

信令采集系统需要采集全部的信令消息,其特点是数据很大,除了呼叫相关的信令消息还有注册消息,堪称海量。以10万注册分机的中等规模电力IMS为例,每日呼叫数约40万次,达320万个呼叫消息。注册及相关的消息更大,每天高达近7千万条消息。

最容易想到的是使用通用数据库,普通做企业应用的程序员(一般使用java),经常使用关系型数据库,但随着数据量的急剧增加,插入和检索的性能都很受影响,哪怕购买最强悍的硬件,也很难达到性能上的要求,最后的结果只能是限制时间,比如只能存储一个月的数据或者各种分表,不但可用性极差,存储和查询的性能也很难达到要求。实际上原先就运行了这么一个用Java+MySQL实现的系统:采集和存储使cpu达400%--全部跑满,查询慢如蜗牛,几分钟才出结果。

当然,也可以使用nosql类型的数据库,这个可能会好一点,不能彻底解决问题,而且换取一点性能提升仍然需要高成本的硬件投入,有没有一种更完美的解决方案呢?答案是肯定的。

让我们先来分析信令数据的特点:

1、数据只会增加,一旦生成了不会回过头去修改也不会逐条删除;因此关系型数据库的update、delete是不需要的操作,只要insert。关系型数据库可以排除。

2、sip信令消息都是文本,但不等长,每条消息数百字节到上千字节不等。

3、历史数据检索,一般是限定日期时间段,指定某个关键字进行检索,如主叫号码或被叫号码,呼叫ID、拒接码等。

根据这几个特点,我设定了目标:

1、使用自己设计的文件存储,简单,可扩展,不够加硬盘就可以。仅需一两台普通PC服务器,不需要特别大的硬件投入。

2、检索要很快,要在1秒内返回结果。

3、支持web查询,实时信令监控支持websocket推送。

设计方法简要列举一下:

1、使用C/C++开发,底层开发,保持高效率。

2、对应呼叫数据,从底层到上层可抽象为:原始信令文件,信令记录文件,CDR文件,CDR类似话单,话单一般接通了生成,CDR只要呼叫了就会生成,无论呼叫成功还是失败。CDR数据提供接口,可以导出到关系型数据库进行复杂的检索分析。

3、非呼叫数据,如分机注册数据,只有两个抽象:原始信令文件,信令记录文件

4、索引文件,简单的平坦单一索引,不使用B+数等更复杂的结构。

5、按记录条数来生成数据记录文件和索引,这样可避免单个的文件太大。

6、核心存储模块和查询检索模块分成两个进程,保证各自的稳定性。尤其是核心模块,对实时性要求比较高,需要稳定运行。

7、核心模块的信令采集和存储处理之间采用无锁的环形队列,保证高并发性和实时性。

上述设计在电力的IMS通信网中已经实现,效果相当不错。

七号信令分析软件 2.0 一.实现功能及解决问题 1.增加对ISUP消息的分析统计功能; 2.解决DISMSU执行出现非法操作的错误,主要是对ISUP的INF消息和TUP的GSM消息处理有误; 3.解决打开扩展名为大写的“TXT”当作二进制文件分析的错误; 4.更新用户手册,主要增加ISUP消息中的失败原因值的列表 5.解决七号信令分析软件判断跟踪消息的信令点编码为24位还是14位的问题,估计跟踪消息中的一个标志位判断。不需要用户配置。 6.增加打印功能; 7.统计结果的排序问题,可以按数字排序; 8.解决通过滚动条无法看到最后一条记录的问题; 9.主被叫号码长度超过29位导致“内部不正确”提示的问题。 10.可以对旧格式的信令文件进行处理后,用此软件进行分析。 具体使用方法见“UserMannua20.lwp”或从程序组中打开“用户手册”。 二.目前已经存在的问题,但难以解决的有: 1.相关信令查询 当点击某个呼叫时,在出现相关的信令消息之前会有短时间的白屏现象。这是因为程序调用了一个DISMSU.EXE文件产生包含信令消息的文件。但是因为执行之间的同步问题,如果调用DISMSU.EXE结束后立刻打开信令消息文件显示,往往打开的是上一次的结果。所以在显示之前SLEEP 2秒钟。请教过UI的高手,通过在某一个文件中设置标志位来充当信号量,但在实现中发现仍然是老问题。 2.统计速度 对信令消息的统计速度比较慢,可能要忍受一下。我测试用的文件比较小,执行起来还比较快。主要原因可能在于以前的版本只支持TUP消息统计,消息参数都比较少,所以数组开了100个字节的空间。考虑到ISUP消息最长为272个,但转换为文本的字符表示,还要加空格,基本上是3倍的关系。所以目前的消息长度定位600。这样内存和写文件操作时间都会比较长。 3.不能统计自环消息 目前七号信令分析软件不支持对自环消息的统计,或者说自环统计中认为是成功的呼叫,在用此软件分析后会认为没有后向的应答消息而设置状态为不成功。 三.安装路径 setup目录下存放的是七号信令分析软件 2.0版本的安装盘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值