网络测量和网络监控在拓扑发现、安全监测与网络异常方面占有举足轻重的地位,已成为开展互联网技术研究的重要支撑。但是随着互联网的逐步扩大,对测量位置的要求也越来越高,开展大规模的网络测量变得越来越困难。LG(LookingGlass)是由国内外的运营商提供的部署在主干网或者AS(AutonomousSystem)边界的测量点,提供了ping、traceroute、bgp等丰富的测量功能,用户可以通过LG网址发起测量任务,解决调试连接性等一系列性能方面的问题。LG主要有两个优点,第一,良好的测量位置与广阔的分布。第二,LG网址提供可视化的界面和丰富的测量功能,能使用户更全面地了解网络的状况。尽管如此,它并不适用于系统的可重复的测量。其一,每个LG都是由运营商独自拥有并运营的,没有统一的模板;其二,LG网址没有标准的输入输出;其三,为了减少Dos的攻击,LG的运营商还会配置查询速率设置。
面对LG存在的上述问题,尤其是统一调度问题,Periscope可谓是提出LG统一调度平台的先驱。Periscope是由互联网数据分析合作协会(CooperativeAssociationforInternetDataAnalysis,CAIDA)设计的一个LG的统一调度平台,具有自动发现和使用LG能力。但是,它具有以下不足:
1.需身份认证,用户需要进行身份验证才能创建测量,未经认证的用户只能查询测量结果,我们尝试联系该机构进行身份认证,并未收到回复,因此periscope可能只服务于特定机构,不对大众开放。
2.缺乏普适性,只提供了主流的6种LG网址模板,未对所有的LG网址进行适配。3.缺乏高效性,由于只提供可用的LG资源,并未对其进行整体评估,无法推荐高效可靠的LG资源。
鉴于LG的问题,北京邮电大学设计并实现一个统一的开放资源调度平台UniteLGs。首先,通过爬虫技术自动爬取LG网址并利用模块技术自动生成相应的模板;其次,利用统一调度的API,获取全球可用的LG网址并得到统一格式的输出结果;进一步,采用分布式的调度策略以解决查询速率限制的问题;最后,提出一种通过加权单次调用评分得到整体评分的LG网址评分机制,进而可推荐给用户高可用性的LG网址。
同时,为了解决Periscope的不足,UniteLGs也做了相关的努力。例如,不用需要系统授权便可使用,提供了统一调度API接口和配置UniteLGs的docker,用户可以自己搭建统一调度平台,也可以直接使用UniteLGs进行测量。其次,此平台采用爬虫技术,自动适配网页参数,填充LG网址模板,因此能适配更多的LG网址,并且对每次测量进行评分,周期性的对所有LG网址进行整体性评估,推荐给用户高效的网址,提高测量结果的准确性。
图1系统API调度模型系统设计与调度流程
下文主要从UniteLGs系统架构与调度流程展开,对系统的各个模块进行介绍,最后设计了一种评分模型,用来推荐高可用性的开放资源。图2模板自动生成机制
图3系统架构API接口
用户可以通过API接口获取所有的开放资源列表以及详细信息。核心控制器屏蔽了所有系统流程,用户只需要填充表单,下发任务即可得到任务结果,如图1所示。
系统流程如下:首先用户获取开放资源列表,选择合适的开放资源并填充请求JSON,然后调用系统的API,此时核心控制器会收到相应的参数并根据用户选择的网址,提取网页模板,填充测量参数,执行测量任务,最后把结果解析后返回给用户。
针对于用户的不同需求,UniteLGs提供了两种任务结果返回形式:(1)原生的任务结果,即页面得到的原始测量结果,核心控制器不对其做任何处理;(2)序列化的JSON,根据任务结果提取相应的参数,以JSON格式返回给用户。这样系统可以根据用户的需求匹配结果,同时提供了标准化的输入接口,便于程序的直接调用。
模板生成
系统模板生成机制是基于网络爬虫技术,通过爬取网址,分析网页源代码,提取相应的字段,生成相应的网站模板。同时测试模板的可用性,当测试通过即表示当前网址可以供用户调度。如图2所示。
由于LG并没有一个统一的公示网站,UniteLGs从traceroute.org、bgplookingglass、lookingglass三个网站获取可用于测量的源网址,自动检测HTML网页代码是否包含LG界面,若包含LG界面则提取该网页并自动生成模板。UniteLGs分析了主流LG网站的测量提交机制进而发现:绝大多数LG都是通过FORM表单方式提交。主要参数如表1所示。
对于每一个网址,通过分析LG网页源代码,提取query、addr、protocol、router四个参数(其中包括提交的四个字段的名称与支持的内容),提取完毕后,通过任务执行模块自动填充各个字段执行测量。如果有返回结果,则证明模板可用,对该开放资源进行可用标记,供用户下次使用。如果返回错误或无返回结果,则证明模板不可用,对该开放资源进行不可用标记,供系统管理员进行模板的升级或手工配置。
调度流程
用户下达测量任务后,所有的处理流程都由核心控制器完成。核心控制器主要包括任务队列、消息队列、客户端连接池三个部分,如图3所示。
任务队列用来存储用户的任务,系统将每次到达的新任务放入任务队列;消息队列用于不同模块之间的通信;客户端连接池主要存储客户端的连接,当将任务发送给客户端的连接时,相应的客户端便接收到任务。新创建的任务首先会发送到任务队列,当轮到它执行时,核心控制器会通过消息队列通知客户端连接池,并通过特定的算法确定要调用的客户端,通过调用此客户端的回调函数,让客户端去执行测量任务。当获取任务结果后,系统提取页面结果,返回给核心控制器,核心控制器存储结果,同时将任务结果返回给相应的用户。
由于大多数LG网址存在查询速率限制,所以UniteLGs使用了分布式调度客户端去执行相应的测量任务。目前系统中有一百多个客户端可以供UniteLGs调用,同时用户可以通过下载UniteLGs提供的客户端源代码,运行程序加入到系统的连接池。当任务交给核心控制器时,核心控制器会挑选一个可对此网址调度的客户端进行任务测量并标记客户端访问LG网址的时间,当下次访问时,UniteLGs会从客户端的连接池中寻找最近未访问该网址的客户端去执行测量任务。这样既能够保证查询速率不会受到影响,又能够保证多用户的并发测量。
周期性检测
由于大多数LG是由运营商提供,具有不稳定性与易变性,为此UniteLGs实现了开放资源的周期性检测。系统加入了定时任务,检测开放资源的可用性以及其可供调用的路由与测量类型,若发生变化,则变更数据库存储,以保证提供给用户的网址都是可调度的。
网址评分
为了提高每次测量的准确率与反应速度,UniteLGs提出了一种LG网址评分策略。通过分析每次测量返回的数据,确定单次测量评分,最后通过贝叶斯加权统计得到网址的综合评分。单次测量评分根据每次测量花费时间,以及开放资源的可用率,通过算法(1)计算得出。评分同时,更新此开放资源的可用率。其中当测量无结果或错误时不进行评分;对于网址的综合评分,根据算法(2)对所有单次测量评分进行贝叶斯加权统计,同时考虑测量评分的时间,以及系统支持测量类型的数量和可用探测点的个数,进行计算。为了确保评分结果的偏离值不会过大,系统设定了一个平均分。评分算法如下所示:
各个参数指标说明如表2所示。
系统测试
本文以用户访问TOP100网站为测量对象,根据网络的拓扑情况选取了几十个测量点,以覆盖网络中不同层面。利用可视化的视图展示,观察了时延、抖动、丢包等性能指标,准确的定位出网络拥堵的时间。
在UniteLGs中,用户可以通过API接口或页面的形式进行测量。API接口主要有两个,/opensourcelist接口用于获取LG网址信息,/LGtask接口会调度相应的LG网址,并返回结果。网页会提供一个可用的开放资源的列表,每个LG会展示国家、城市、AS域等基本信息,同时按照系统评分结果进行排序。这样既提高了LG信息的准确性,又能推荐高效的LG网址。点击网页中的某一LG网址会弹出测量相关的参数,填充query、protocol、router、address四个字段,点击提交按钮,任务结果将会在测量完成后显示在右侧的结果区,如图4所示。
本次选择了在墨西哥的LG网址中rt1.msk资源,对166.111.9.229进行类型为IPV4的ping测试,测量能在5s之内返回原始的测量结果,证明了系统评分的高效性以及系统的可靠性。
当任务结果返回后,我们提供了更直观的任务展示视图。我们利用图4选用的LG网址,对166.111.9.229网址进行了时间间隔为5分钟的周期任务,最后用可视化视图方式将结果展示出来,如图5所示。
视图可以更直观的展示出某一个测量点对某一个目标一段时间内的持续测量结果,能够快速地定位异常点,由图中可以发现,166.111.9.229这个网址在19日、20日、22日这三天凌晨4点半左右的连续半个小时内时延增大,同时伴随着丢包,疑似发生Dos攻击。系统管理员发现此问题后,可以在此时段对主机进行监控,来确定具体的原因。
综上所述,网络测量是了解网络运行状况和进行网络监控管理的有效手段。本平台实现了对LG开放资源的统一调度,扩大了网络的监控能力,同时给出统一的API接口和评分机制,方便用户使用而且提高用户体验。以较小的投入整合了大量的分布广泛的资源,对解决网络测量中测量点覆盖的难题起到了一定的减缓作用。今后的工作重点主要是对该软件进行扩充,优化开放资源的动态评分功能,提高用户测量的精准性,获取更好的使用体验。
(责编:陶春)
(作者单位为北京邮电大学网络技术研究院)
图4系统演示
图5测量结果