文/李向龙 位军营 刘淑霞 杨贵福
为确保校园网络运行稳定和顺畅,有效保证教学、科研和服务信息化所需网络环境,多数学校都选择两个以上运营商接入校园网,保障关键业务稳定和师生用网体验,达到提高校园网络可用性的目的。文章研究多个运营商接入条件下,布置多个测速点模拟师生上网行为,分别通过不同运营商访问同一个目的地址;根据访问耗时结果调整路由表,有效保证了师生访问互联网的路径最优,时间最短;路由表的调整可以动态在线实施,能保证总是选择最快ISP出口。
随着互联网应用的快速发展,师生对于网络可用性要求越来越高。为保证路由表始终处于最优状态,高校需要对比不同路由下访问同一目标网页的加载时间,根据加载时间长短持续优化路由表。因此,技术路线设计如下:依据源地址设定路由表,通过不同运营商循环访问特定的目的地址,将页面加载时间计入数据库,通过数据分析,将特定网址的路由指定到耗时最短的运营商链路上,可以有效提高师生用网体验。该技术路线可分解为以下三个部分:
第一部分,在用户侧布置测速点,依据源地址指定不同的运营商链路,测速点循环模拟师生网络访问行为,记录特定网页加载时间并写入数据库。
第二部分,对同一页面在不同链路的加载时间分别进行汇总分析,通过简单的均值比较得出耗时最短的运营商链路。
第三部分,根据数据分析结果,将特定网页的路由表规划结果以指令形式自动发送给路由器,实现按地址智能调整路由的目的。
为了降低各部分之间的耦合度,便于未来扩展和维护,可将以上三个部分划分为三个相互关联又各自独立的松耦合模块。
第一个模块为数据获取模块,主要是利用测速点获取不同运营商链路的网络访问时间并将结果写入数据库中。
此功能模块的难点在于如何获取最接近师生的网络访问数据。为此,本文设计利用普通PC执行定时任务,循环访问师生访问量较多的网站首页,将网页从开始加载到加载结束的时间作为访问时间存入数据库。
第二个模块是数据分析模块,对测速点获取并存储到数据库中的数据进行汇总分析,随着数据的增多,分析结果会越来越精准地指导路由表调整。
此功能模块的难点在于如何分析汇总的数据。由于影响网络访问时间的因素很多,包括链路介质、终端性能、访问时间、目的可达性和网页内嵌元素等,所以将超过3分钟仍未加载完的网页标记为不可达。
第三个模块是路由表变更模块。通过解析路由器当下配置文件,与第二个模块的规划结果进行匹配,若路由表一致,则保持路由器配置不变;如不一致,则自动发送指令更新路由表,并使之生效。
此功能模块的难点在于如何抽取实际运行设备上的路由配置文件,并将配置文件与规划的路由表进行比较,根据比较结果决定是否触发路由更新的指令。
为获取最接近师生的网络访问数据,需要在最接近师生的网络环境中部署数据获取设备,即测速点,网络拓扑如图1所示。
图1 数据采集系统网络拓扑
数据获取模块是系统中最基础的模块,获取的数据直接关系到后续数据分析和路由调整的效果,因此测速点的数量和位置尤为关键。图1的示例中,在两个楼宇的网络设备间布置两个测速点,分别为PC1和PC2,可根据需要随时增加测速点,在路由器上根据源地址路由设置测速点PC1走ISP1链路,设置测速点PC2走ISP2链路,在PC1和PC2上分别跑同样的脚本,用来轮询测量通过各自ISP链路访问同一目标网站序列所需的每个页面加载时间,然后将获取到的数据存入数据库。数据库的表结构见表1。
表1 数据获取模块数据库的表结构
数据分析模块是为了计算出网络访问的最优时间,从而为路由调整提供支持和依据,达到提高用户体验的目的。此功能模块实现过程如下:
遍历存储在数据库中的数据,分域名查找出对应的URL和Time值;
分别计算出在最近一段时间跨度范围内,通过不同ISP链路访问同一URL的Time平均值,取较小值对应的ISP作为对应URL的最优链路,结果表示为list
根据URL与IP的对应关系,将最优链路结果输出为list
表2 URL与IP的对应关系
1.如何实现
路由变更模块主要是获取当下的路由表,与计算出的最优路由表比较,根据比较结果决定是否更新路由表。此功能模块实现过程如下:
(1)系统通过tftp协议下载路由器配置文件;
(2)利用ANTLR开发文件解析程序,对下载的路由器配置文件进行解析得到路由表的语法树;
(3)对比抽取出的路由表项与实测和分析所得的最优路由表项是否一致,主要对比路由条目和路由指向;
(4)根据对比结果决定是否变更路由器中的路由配置。如果两个路由表一致,则不变更路由表,如果两个路由表不一致,则系统模拟登录路由器,发送路由删改指令,将路由器的路由配置变更为计算所得的最优路由表。
程序解析和运行时的数据流如图2所示,数据流(文件内容)介绍如下:
图2 路由变更模块的数据流
(1)Confg.g4:根据思科路由表语法编写的词法语法文件,利用ANTLR可以生成对应的解析器,将思科路由配置文件中的路由表部分解析为路由表的语法树;
(2)cisco-confg:思科路由器配置文件,通过tftp协议从路由器获取;
(3)EvalVisitor.java:将解析完成的路由表的语法树存储到ArrayList中;
(4)GetIpaddressRange.java:获取一条路由记录的网络范围;
(5)MatchandAdd.java:匹配并且增加或者修改路由记录;
(6)Router.java:功能模块的主函数,调用子函数完成计划的功能,实现编码目的。
2.如何执行
(1)编写语法词法文件Confg.g4。运行ANTLR的包,对Confg.g4进行翻译,将其翻译为可编译的JAVA文件,把路由器配置文件中的路由表部分解析成语法树;
(2)将路由表的语法树存储到ArrayList中;
(3)与数据分析模块中得到的最优链路输出结果list
(4)规划路由变更条目,将增删的路由表项输出到ASCII文件中;
(5)系统模拟登录路由器,将最新路由表项更新到路由器配置文件中,完成路由表项的智能变更。
本文以思科路由器7606为例,IOS版本 Version 15.1(2)SY2, RELEASE SOFTWARE(fc3),在客户端机器上用tracert命令进行测试路由更改情况。对于路由器等网络交换设备,没有类似SQL语法的修改(update)指令,对路由表项操作只能是增加(ip route)或删除(no ip route)。
文章通过模拟师生上网行为获取网络消耗时间,对多次消耗时间进行汇总分析,在确定条件下对比不同链路的数据质量,获得最优的网络出口路由表,从而对路由表进行调整。随着数据量的增多,包括提高采集频率、增加测速点数量、增加被测目的地址数量等,计算结果一定会越来越精准,也越来越接近师生的真实体验,从而使得路由智能变得更加完备,带宽利用更加充分,师生用网体验更好。