术创新
《微计算机信息》2012年第28卷第10期
120元/年邮局:82-946
《现场总线技术应用200例》
网络与通信
李林广:硕士工程师
基金颁发部门:南京工程学院;项目名称:基于正则表达式匹配的网络设备自动管理模型;编号:KXJ08097基金申请人:李林广
基于正则表达式匹配的网络设备自动管理系统
Network device automatic management system based on regular expression match
(南京工程学院)
李林广张春华
LI Lin-guang ZHANG Chun-hua
摘要:针对采用SNMP 协议开发网络管理系统的缺点,设计了基于正则表达式匹配的网络设备自动管理策略。用户通过定
义特定的网络设备命令序列和相应的判断正则表达式,系统按一定的策略通过设备的命令行用户接口(CLI)运行这些命令序列,通过正则表达式对返回的数据进行智能判断,获取特定的网络设备运行数据,并可根据运行数据执行相应的策略命令,从而实现网络设备的自动管理。
关键词:正则表达式;命令行用户接口;SNMP;网络管理
中图分类号:TP391
文献标识码:A Abstract:The network device automatic management strategy based on regular expression match is shown against the network man -agement system shortcomings with SNMP protocol.Users can define the specific network device command sequence and corresponding regular expression,and the system can run the command sequence through the device command line interface (CLI)according to a certain strategy.We can obtain specific network device operating data thr
ough the intelligence judge of the return data in order to achieve the network device automatic management based on the implementation data to run the strategy command.Key words:regular expression;command line interface(CLI);SNMP;network management;
文章编号:1008-0570(2012)10-0332-03
引言
网络运行管理需要实时采集网络运行数据,并根据这些数据采用相应的策略进行控制。SNMP (Simple Network Manage -ment Protocol)是当前广泛使用的网络管理协议[1-3],通过读取和设置相应的MIB(Management Information Base)库项目就可以了解、管理网络设备的运行,但是因为MIB 库是通用的,为公共管理而设置的,所以这些MIB 库并无法包容所有厂商的被监控的信息。通过SNMP 只能获取或设置常用的数据,设备特有的参数或管理功能,不能够通过公有MIB 库获取或设置。为了解决该问题,当前厂商普遍的做法有两种:(1)设置私有MIB 库,厂商将其特有的参数存入私有MIB 库;(2)仅支持SNMP 公用MIB 库,厂商产品特有功能,通过提供专用程序来支持,如一些专用的负载均衡、流量控制设备等。当前大型的网络一般根据性能、价格等需求选用多厂商设备,使得在一个网络中采用一套基于SNMP 的网络管理软件来有效管理不同厂商和平台的设备是不可能的。针对使用SNMP 协议的缺点,本文提出了基于正则表达式(regular expression)匹配的网络设备自动管理方法,并开发出了相应的应用系统。
1命令行用户接口及其正则表达式匹
配规律
1.1正则表达式
正则表达式技术是ISO 和Opengroup 的正式国际标准[4-5],它被广泛应用于文本信息的处理。
正则表达式是用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串,许多程序设计语言都支持利用正则表达式进行字符串操作。
正则表达式最基本的三种功能是:匹配、替换和提取。使用匹配功能,可以把用特殊字符串表达的匹配模式与数据文件、程序输出等各种目标对象进行比较,确定是否有匹配的字符串。替换文本功能,用于在文档中使用匹配模式来标识特定文字,然后将其删除或进行替换。提取子符串功能,用于根据模式匹配,从字符串中提取一个子字符串。本文中主要用到匹配和提取。
1.2命令行用户接口
当前可管理网络设备普遍支持CLI,通过CLI 网络管理员可以对网络设备进行所有的配置和管理,获取所需数据,运行需要的策略。有多种方法可以连接到网络设备的CLI 接口,如console 、telnet 、ssh 等,
但这些方法本质上都是使用文本进行设备与管理人员的交互,因些可以方便地使用正则表达式对这些文本进行处理。
1.3命令行用户接口的正则表达式匹配
通过对Console 串行通信和telnet 协议[6]学习,并实际进行抓包分析和实际编程测试,得到以下三条规则:
(1)不管使用何种方式连接到CLI,在通讯协议的应用层都是使用ASCII 编码的。
(2)和CLI 通讯,是严格的输入-响应方式。对于简单的指令,输入就能立即得到结果。对于复杂的指令,需要多次询问用户输入特定的参数,然后输出最终的结果,这些输入参数的交互过程也是能遵循人工输入、CLI 响应输出的方式进行人机交互。
(3)CLI 响应的输出内容是可预见的,输出格式是固定的。CLI 的输入最常用有两种:显示命令,用于显示设备的一些参数,特定的设备输出参数格式和位置都是可知的;配置命令,用于设置设备的运行参数,命令是否配置成功,可以从CLI 输出的文本
332--
邮局:82-946120元/年技术创新
网络与通信
《PLC 技术应用200例》
您的论文得到两院院士关注
内容确定,如果发生错误,这些错误的提示信息也是高度可预见的。
(4)实例分析验证
以南京工程学院网络出口使用的负载均衡设备Radware LinkProof3000为例,取自应用系统的真实输入输出日志,为了便于表示,略去了部分的控制字符和部分输出内容,并且系统输入部分用斜体加粗表示:
正则化网络LinkProof Application Switch v5.22User:admin2011
Password:****************Password OK
LinkProof#lp servers router-servers set Farm_Student_Area r_New_TELECOM -om "Regular"-i 250000-o 250000-w 5Updated successfully Farm Name :Farm_Student_Area Router Name :r_New_T
ELECOM …<omit>…Kbits Load :30131762--More--Inbound Kbps Rate :0…<omit>…
Outbound Kbps Limit (-o ):250000LinkProof#system os cpu Device Resource Utilization RS Resource Utilization :9…<omit>…
Maximum Utilization :37
LinkProof#logout You are logging out of the device Are you sure you want to logout?(y/n):y
表1命令行用户接口正则表达式匹配结果表
上面的过程涵盖了Radware LinkProof3000一般管理中的登示、系统配置、显示参数和退出系统过程。可以看出该过程符合1.3总结出的基本规律并且可以确定:根据(1)使用正则表达式进行判断是可能的;根据(2):因为严格的输入-响应方式进行交互,所以只要从输出结果中,使用恰当的正则表达式,就可以从输出的内容判断CLI 的输出是否已完成在等待用户的新输入;根据(3):因为输出内容是可预见的、格式固定的,因此使用适当的正则表达式,对于显示命令,可以从输出结果中得到需要的运行数据,对于配置命令,可以从输出结果判断命令是否正确执行,如果发生错误,也可以预见到发生了哪一种错误。上面的过程用正则表达式进行处理,可以得到如表1所示结果。
表1的“判断输出结束正则表达式”列用于判断当前输出是否结束,如果该正则表达式在输出中有匹配,则
表示输出已结
束,可以进行下一步的输出内容判断。
如果不匹配则需要判断是否出现了分屏提示标志,如表1顺序号为4的命令输出部分较多,一屏不能完全显示,提示“--More--”,用户按空白键后会继续显示,分屏提示标志,一般不同的厂商各不相同,但都可以用正则表达式将它们表达出来,如该设备的分屏提示符表达式可以表示为“\.?More ”。
“期望出现的输出内容”列用于判断输出的内容。如果该正则表达在输出中有匹配,则表示命令执行出现了期望的结果,如表1顺序号为4的输入命令出现了“Updated successfully ”,表示该命令已正确执行,如果错误则会提示为“Error:”或其它相关信息,再如表1顺序号为5的命令用于显示CPU 的负荷,正则表达式“\bRS Resource.*”可以提取出“RS Resource Utilization :9”这
一行,再使用正则表达式
“\d+\.?\d*”可以得到当前用于路由交换的CPU 负荷为9%。因此对于输出的内容使用适当的正则表达式就可以判断执行是否正确,如不正确,是哪种可能的原因,如果是获取数据,则可以方便的提取出数据。
2系统设计
本系统的设计目标是能够实时采集哪些不能通过SNMP 进行采集的设备运行数据,并根据这些数据采用相应的策略进行控制。因此系统大概分为以下三个部分:
数据采集模块:定时通过CLI 接口,运行一定的指令和相应的正则表达式智能匹配,获取特定的设备参数;
判断决策模块:根据时间或获取的参数(参数的表达式)是否触发用户设定的条件,决定是否执行预先设定的决策;
决策执行模块:通过CLI 接口,执行预设决策的指令集,判断执行结果,记入系统日记,如有错误则发送报警信息。
其中数据采集模块和决策执行模块都需要执行的一条或多条与CLI 交换的输入输出组合,以完成特定的功能,下节称此为命令集。如设备登录就是用户名输入和密码输入的组合就是特定的命令集。命令集表的设计与处理是本系统的核心部分,获取设备参数和执行对设备的控制都是一系列命令集组成的。
2.1命令集表设计
命令集表主要包含以下一些字段:
命令集ID:用以唯一标识命令集,如登录命令集、增加带宽命令集等;
命令顺序号:用以标识当前命令在该命令集中的执行顺序,设置该字段的主要是因为有时需要对设备的输出进行判断,根据不同的输出执行相应的输入。类似于计算机语言中goto 语句后接的标签;
输入:用于存储对设备的输入,一般是特定的设备命令或设备需求的命令参数;
结束表达式:用于判断当前CLI 输出是否已结束;
命令集表还需关联一子表:输出枚举表,用于对设备响应指令的输出进行判断及处理。该表主要包含以下一些字段:正则表达式、转移命令顺序号和数据存储sql 语句。对于配置命令,用户应根据需求尽可能详尽的枚举出设备对输入指令的响应结
333--
技术创新
《微计算机信息》2012年第28卷第10期
120元/年邮局:82-946
《现场总线技术应用200例》
网络与通信
果,用适当的正则表达式唯一匹配这一结果,将此正则表达式加入该表,并后接命令顺序号,用于执行相对应的后继指令,每一种可能结果对应该表的一行;对于显示结果的命令,可以设计恰当的正则表达式,来提取数据并用相应的sql 语句进行存储,可以设计多个正则表达式对应该表的多行,以获取多个数据。
2.2命令集表处理
系统决策模块根据用户配置的策略需要采集数据或运行特定命令时就会将相应的设备号和命令集ID 作为过程调用参数传递给命令集处理模块。
命令集处理模块按照设备表的数据对设备进行Socket 连接并初始化相关的设置,然后以命令顺序号升序作为排序条件获取相对应的命令集,选定第一条记录,将输入字段通过Socket 发送给设备,当收到设备的输出时,用结束表达式进行匹配,如果设备输出已结束,则进行下一步的输出处理,否则需要就判断是否因为输出内容已满屏,如果已满屏,则发送让其继续显示的相关输入。如果没有满屏提示,则继续等待设备的输出,直到设备已输出完成。
设备输出完成后,就需要对输出进行处理。对于配置命令,可以通过用户枚举的结果字典进行匹配,从
而确定命令执行的可能结果,获取下次要执行的命令顺序号。对于需要获取数据的命令,通过一系列的正则表达式,获取到相应的数据并进行存储,然后取下一个条记录的命令顺序号作为要执行的命令顺序号。
至此就完成了命令集表中的一行记示,即一次输入输出过程,并且获得了下一条的指令顺序号。如此循环,就可以完整的执行完所有的用户命令。
命令集处理的流程图如下图1所示:
3应用实例
为了解决此问题,研发了基于正则表达式匹配的网络设备自动管理系统。详细研究了两个区域的流量图,根据流量特性,制定了带宽分配曲线,使用本系统在出口路由器上定时动态调整两个区域的带宽分配,并且在拥堵和非拥堵时间段,在流控设备上动态调整每个上网用户的最大带宽。另外,在节假日或有大家注重的电视转播时,系统能定时开通关闭部分网络服务。这些功能都是原设备所不能提供的。
此系统投入运行三年来,不仅节约大量宽带费用,取得较好的经济效益,而且因为能灵活调整网络的运行,使用户的上网感受良好,取得了较好的社会效益,为建设和谐校园作出了应有的贡献。
4结论
因为CLI 是当前网络设备普遍提供的接口,所以该方法适用面广;广大的网络管理员普遍都比较熟悉通过CLI 对网络系
统进行管理,所以该方法特别适合网络管理人员使用,为其提供了一种自动管理网络的辅助技术手段;该方法在对设备的控制方面,远比通过SNMP 更简单方便。在开发该系统时,测试发现该法不仅适用于网络设备管理,对于其它提供CLI 接口的设备,如unix 、windows 服务器,也可以通过这种方法进行自动管理。在实际使用中发现,有些CLI 指令会使网络设备的负荷较高,所以建议使用这些指令时要注意测试。
创新点:设计了基于正则表达式匹配的网络设备自动管理策略。用户通过定义特定的网络设备命令序列和相应的判断正则表达式,系统按一定的策略通过设备的命令行用户接口(CLI)运行这些命令序列,通过正则表达式对返回的数据进行智能判断,获取特定的网络设备运行数据,并可根据运行数据执行相应的策略命令,从而实现网络设备的自动管理。本文无抄袭,作者全权负责版权事宜。参考文献:
[1]A Simple Network Management Protocol (SNMP)[EB/OL],ftp:///
[2]林恒,李华锋.?SNMP 纵论[J].北京工业大学学报,2004(01):71-74
[3]崔冉,华钢.基于SNMP 协议的网络管理系统设计[J].微计算机信息,2009,25(6-3):117-118
[4]Regular Expressions ./onlinepubs/007908799/xbd/re.html
[5]黄光芳.正则表达式在远程网页下载中的应用[J].计算机与信息技术,2007(03):72-74
[6]Telnet Protocol Specification,RFC854[EB/OL].ftp://ftp.rfc-edi -/
[7]袁海峰,张道军,吴银芳.基于Telnet 协议实现网络设备的自动管理[J].苏州科技学院学报(自然科学版),2006(04):69-93[8]卢爱卿,张会勇,赵征.Telnet 协议的实现原理及应用[J].计算机工程,2002(11):268-269
作者简介:李林广(1970-),男,江苏省江都人,南京工程学院工程师,硕士,主要研究方向:网络安全;张春华(1973-),男,江苏泰兴人,工程师,硕士,主要研究方向:网络信息系统.
Biography:LI Lin-guang (1970-),male,Jiangdu,Jiangsu,NanJing Institute of technology,engineer,Master degree,Main Research Areas:Network security 。
(211167江苏南京南京工程学院信息化建设与管理办公室)
李林广张春华
通讯地址:(211167江苏省南京市江宁大学城弘景大道1号网络中心)李林广
(收稿日期:2011.10.28)(修稿日期
:2012.01.28)
334--

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。