互联网出口质量自动拨测系统研究与实践
2019-09-28王新成
王新成
【摘 要】互联网行业快速发展,天津铁通为了更好地满足互联网用户不断提升的服务质量要求,不断优化互联网出口质量以满足用户更好的上网体验。
【关键字】互联网出口;出口质量;多线程;C#
中图分类号: F752.62;F626 文献标识码: A 文章编号: 2095-2457(2019)24-0100-002
DOI:10.19694/j.cnki.issn2095-2457.2019.24.046
【Abstract】With the rapid development of the Internet industry, Tianjin Tietong is constantly optimizing the quality of Internet exports to meet the continuous improvement of service quality requirements of Internet users.
【Key words】Internet export; Export quality; Multithreading
1 研究背景和可行性分析
在本项目开发前,互联网出口质量监测主要依靠互联网网管中心的PRTG流量软件监控,该软件不具备对租用其他资源的二级出口商的监控识别功能,无法发现次优路由等网络问题;虽然通过PRTG流量图可反映各出口的流量情况,发现异常流量,但是只有在流量出现大幅度变化时才能反映出网络问题,无法精细反映互联网出口的各项质量指标。由于在出口质量监测方面存在的不足使我们在互联网出口质量优化工作中遇到过很多棘手问题,最主要体现在三个方面:首先,用户体验下降,出口质量下降导致用户投诉忙时上网速度慢;其次,出口投入使用前,只能通过人工手动测试或者少量导入部分用户流量的方式对其进行质量测试,由于测试目的地址的基数太小往往无法反应出口的实际质量;第三,出口存在绕转问题,网络延时和丢包率高,导致出口质量没有保障,故障处理延时长。
上述这些问题,维护人员通过现有监控手段很难及时发现,本次软件研发要实现自动化测试,研发一套针对三方出口和游戏出口综合质量指标的自动化监控系统,从而帮助分公司从网络质量指标、出口供应商合同履行情况、网络路由优化等多个维度对互联网出口的质量进行有效监控。
2 数据处理和流程设计
2.1 数据处理
实现软件系统需求,要解决三个主要问题:一是测试IP地址样本,二是实现自动拨测,三是自动生成报表。
首先,需要确定测试IP地址样本。它应满足:覆盖全国主流网站、游戏、邮件等服务器IP地址。我们经过分析研究后,互联网网管中心核心路由器存储了大量的出网IP地址记录,于是通过英诺威尔数据网管系统的netflow功能将记录的所有出网目的IP地址,以5分钟间隔生成一份日志文本文件,通过ftp模式将这些文件批量导出,再经过数据预处理、数据转换、去重处理、IP地址分类等,我们获得了400多万活跃联通IP地址和200多万活跃电信IP地址。将这些数据导入至ORACLE数据库的电信/联通测试IP地址样本表中。这为系统提供了极其丰富的IP地址测试资源,大数量级的压力测试使这套系统更能准确反映各个出口的实际质量,使测试结果更具有说服力。
其次,实现自动拨测程序。对这些测试IP地址样本进行大数量级随机测试,使用C#语言针对Windows系统的API接口开发出可以与测试服务器操作系统交互信息的拨测模块。该模块根据程序定义的拨测动作自动调用Windows系统cmd模式进行“ping”、“tracert”等测试,并通过交互接口将测试结果采集、汇总最终写入数据库的测试结果表。
最后,实现系统自动生成Excel报表。对测试结果,按照制定的路由规则和算法进行计算、统计、分析获得互联网出口的质量指标值,最终实现自动生成互联网出口质量报表。
解决上述三个主要数据处理问题,从而实现互联网出口质量自动拨测,完成我们的研究目标。
2.2 流程设计
3 详细设计和关键技术实现
3.1 数据库设计和关键技术
为了满足自动拨测系统高效率、高可靠性、高吞吐量数据库的需求,更好的支撑系统运行,本项目采用优秀的Oracle数据库进行搭建。通過对数据源分析、数据流程和系统功能模块的梳理,最终规划和定义数据库结构,数据库包括测试地址池表(分电信出口、联通出口和游戏出口IP地址表)、现网出口资源信息表、ping测试结果表、tracert测试结果表、路由匹配表等一系列数据库表,并对每张表进行优化,所有字段名称及属性做出了详细定义,形成数据字典。在数据库设计过程中,我们使用了Oracle数据库的序列、触发器和视图等关键技术。
3.2 测试IP地址样本导入数据库和关键技术
为了将测试IP地址样本导入数据库,采用C#编程技术开发Winform程序读取文本文件,使用StreamReader以流的方式将文本文件内容读取并保存到内存表中,再利用内存表高性能的优势批量写入数据库测试IP地址样本表中。此处使用了内存表关键技术。
3.3 随机获取测试IP地址和关键技术
为了保证测试IP地址样本的平均分布,每次对获取测试IP地址采用了随机函数以摇号的方式提取,保证测试样本在地域上的随机分布。并且针对电信出口、联通出口、游戏出口分别提取后,二次进行随机排序,保证各个出口测试在时间轴上的随机分布。此处使用了Oracle数据库随机函数关键技术。
Oracle随机函数:即dbms_random是oracle提供的一个随机函数包,函数包提供了一系列随机值获取函数以及相关存储过程。随机函数保证了样本的随机分布。
3.4 自动拨测和关键技术
为了实现系统自动拨测,项目使用C#语言开发了探针模块,部署在探针服务器上。探针模块实现以下功能:添加测试任务,定制周期化测试任务;随机抽取测试IP地址添加到测试IP地址池;启动64线程(可定制线程数量)测试任务,调用操作系统API接口执行Ping命令测试;采集Ping命令的测试结果,写入数据库表;调用操作系统API接口执行Tracert命令测试;采集Tracert测试结果,写入数据库表;执行路由规则分析,判断路由归属、路由走向、是否违规;生成路由质量汇总表;检测测试任务运行状态,判断是否有临期任务,是否有任务正在运行,是否有任务需要结束,并做出相应的处理动作。此处使用了API接口调用、多线程、内存表、LINQ、正则表达式、大数据分析和自主研发路由绕行算法等关键技术。
API接口调用:即Application Programming Interface,是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。
多线程:线程(Thread)是进程中的基本执行单元,是操作系统分配CPU时间的基本单位,一个进程可以包含若干个线程,在进程入口执行的第一个线程被视为这个进程的主线程。多线程即除了主线程外,程序還拥有一个或者多个线程。使用多线程的优点:可以同时完成多个任务;可以使程序的响应速度更快;可以让占用大量处理时间的任务或当前没有进行处理的任务定期将处理时间让给别的任务;可以随时停止任务;可以设置每个任务的优先级以优化程序性能。
大数据分析:是指对规模巨大的数据进行分析。大数据作为时下最火热的IT行业的词汇,随之而来的数据仓库、数据安全、数据分析、数据挖掘等等围绕大数据的商业价值的利用逐渐成为行业人士争相追捧的利润焦点。随着大数据时代的来临,大数据分析也应运而生。
路由绕行算法:制定两种路由绕行算法,第一是出口提供商未按要求提供直接接入电信/联通汇聚层的违规情况;第二是网络次优路径情况,如因路由指向不合理导致电信/联通IP地址从联通/电信出口发送,造成过大的网络延时和丢包等情况。此算法不但可以有效监控出口资源是否存在级联或绕行接入等违规情况,还可以实现对现网存在的次优路由的自动监测。
3.5 自动生成报表和关键技术
自动拨测完成后,对数据结果进行报表,通过调用预先定义好的固定格式的报表模板,依次将测试结果中数据写入到报表模板中,再转存生成新的Excel报表文件。此处使用API接口调用Excel关键技术。
3.6 实时查看任务状态和Queue技术
系统在测试过程中,可以实时监控软件运行状态,利用C#语言中的队列Queue类,封装一些处理方法,实现实时对任务状态跟踪。此处我们使用了Queue关键技术。
4 研发应用和实践总结
本文通过对系统基本原理进行分析,通过制定绕行算法、分析测试结果和列举自动生成报表等关键技术最终完成系统开发的研究。软件开发完成后我们进行了应用实践,均圆满地完成了测试任务。互联网出口质量自动拨测系统依靠自主研发,深入分析网络现状和用户不断提升的服务质量需求,是真正大数量级互联网出口自动拨测,填补了压力测试的空白,为互联网游戏出口测试、出口提供商违规行为监测、大数量级自动拨测、网络次优路由发现、新出口入网测试这五方面提出了全新的解决方案。