网站首页  词典首页

请输入您要查询的论文:

 

标题 基于模板的网络设备配置系统
范文

    牟亿++赵钦++马严

    

    

    

    摘要:随着互联网的逐步发展,网络的复杂性在不断的增加,系统的异构性变得越来越普遍,从而使得网络管理变的越来越困难。由于使用不同的设备,需要工作人员手动配置,这种方式不仅效率低,而且容易出现人为操作失误。研究一种统一的网络设备的配置技术对于网络管理技术的发展具有重要意义。基于模板的配置系统将各种设备的数据进行抽象存放于数据库,将各种配置命令模板化,将数据库中的数据和对应的模板进行结合,通过Pexpect编程接口与设备进行交互,就能完成相应设备的配置,有极大的扩展性。同时探索上层接口,实现多种方式的数据导入。可完成网络拓扑及网络设备的快速构建,提高工作人员及资源的使用效率。

    关键词:软件工程;网络设备配置;设计与实现;模板;Pexpect

    中图分类号:TP311.1

    文献标识码:A

    DOI:10.3969/j.issn.1003-6970.2015.11.014

    0 引言

    在目前网络系统的异构性变得越来越普遍的情况下,传统的网络控制方式已经不能满足对网络多层次控制管理的要求。网管人员希望能够通过一种统一的方式对设备进行集中管理,不再关注不同厂商以及不同设备之间的差异。

    在目前主流的配置技术中,SNMP基于TCP/IP协议工作,采用UDP进行交互,需要应用层本身进行差错控制来保证可靠性,安全机制简单,无法在可靠性和扩展性上满足现有的网络管理需求,大多是将其用于网络中设备的发现及其信息的采集,很少用于实际配置。CLI(命令行管理方式)是目前在网络管理中最主要使用的方。但是命令行方式主要采用人工进行操作,不同设备的命令受制于生产厂商,容错性差,对人员专业技能要求较高。WEB服务方式是最近厂商广泛采用的一种配置方式,基于图形化界面,界面易懂,操作简单,后端多通过将页面收集的配置信息转化成CLI命令对相应设备进行配置。但这种方式同样存在支持设备单一,主要由设备厂商提供,没有扩展性,无法标准化,不支持设备信息模型的构建和白定义。

    本文基于广泛使用的CLI方式,将复杂繁琐的配置命令模板化,借助于Python良好的操作数据库和模板表的能力,设计并实现了一套具有良好扩展性的网络设备配置系统。

    1 网络配置系统核心问题分析

    为了改善目前网络管理面临的困境,业界也在不断发展新技术和改进现有技术,SDN(软件定义网络)正蓬勃发展,但是受限于网络环境中已经存在的庞大的设备数量,这些设备不能通过简单的系统升级来支持新技术和新功能,而且网络设备的生命周期长,在可预见的未来更新换代的频率低。要改善目前的困境,需要探索一种通用的网络配置技术,必须对现有的方式进行深度挖掘和创新来解决以下的问题:

    1)承载协议的可靠性.保证配置数据传输的高可靠性。

    2)互操作能力的增强.支持网管系统和被管设备之间进行互操作。

    3)配置数据模型自描述能力增强。能准确地描述日益复杂的网管数据。

    4)编程实现能力强,易于支持网管系统。

    目前,市面上存在部分软件能够提供类似的对于网络设备的配置功能,但其更多的是专注于同一类型或者同一系列的设备,且多由设备厂商提供,相比较传统的手工操作,一般不提供培训等,具有一定的隐蔽性。使得现有的软件或协议都无法从根本上全部满足这些问题。针对这些问题,需要对网络设备和相应的配置命令进行合理的抽象,使之能够覆盖到多种设备,降低系统与需求间的耦合度。设计良好的上层接口,使得数据的导入导出方便快捷。合理的配置方式和传输协议,能够可靠的实现配置信息的下发和反馈以及故障的发现和处理。

    2 系统分析与设计

    2.1 系统架构

    系统分为三个功能模块,分别为数据库模块,任务调度模块和配置模块,所有模块均可以部署在单台或者多台服务器上,其结构关系如图1所示:

    其中数据库模块负责配置数据和任务信息的存储,是配置系统提供给用户的接口;任务调度模块负责对任务信息的轮询,判断所需调用的脚本,根据配置的需求,将任务下发给对应配置模块;配置模块由脚本模块和模板模块组成,两个模块负责将配置信息组合成配置命令下发到各个网络设备,完成网络的组建。

    2.2 系统工作流程

    网络设备配置系统的工作流程分为四步,其具体过程如图2所示:

    其中第一步,用户向数据库中存入相应的配置数据;第二步,任务调度程序定期轮询数据库,当发现有新任务时,提取相应任务,如配置某型号路由器或者交换机等;第三步,将任务下发给相应的任务执行单元;第四步,任务执行单元收到调度请求后,从数据库获取相应的数据,分析数据,将数据和对应模板进行结合,通过Pexpect脚本的方式下发组合好的配置命令,同时收集配置过程中的反馈信息。当执行完所有任务后,对应的任务执行单元修改任务状态为完成。

    3 系统实现与部署

    网络设备配置系统整体基于Python实现,数据库采用MYSQL,模板存储方式使用EXCEL,所有模块运行在Ubuntu14.04版本系统。

    3.1 数据库实现

    数据库是配置系统的核心部分之一,不仅是配置任务处理的起点也是与上层程序交互的枢纽。数据库表主要存放的是抽象后的网络设备信息,是对网络设备的建模。根据不同的网络复杂程度,可以不断的扩充表项,使其能够支持更多的设备,具有良好的扩展性。对于路由器来说,端口信息会抽象出如表1所示的数据库表:

    其中Port_speed代表接口的速率。Port_ip_mask代表接口地址和掩码等。通过抽象,不同设备商生产的路由器的接口信息都可以存放进这一张表里,通过Router_id来确定该端口归属于哪一台路由器。数据库表项对应相应的端口属性。对于上层程序而言,只需要对数据库进行支持即可完成对配置系统的适配。

    3.2 任务调度模块实现

    任务调度模块基于Gearman实现,Gearman是一个应用于分布式环境下的任务分派程序。在Gearman框架下,提供了多语言的接口,不用担心Client或者Worker是否是同一种语言,并且可以将任务分发到不同的机器当中,可以实现系统的负载均衡。Client可以通过同步或异步的方式向Job Server提交工作任务,实现任务的定时执行,能够在网络设备使用率较低的时候完成配置任务。Job Server负责将该任务分派给注册了该任务的后台Worker执行后,将执行结果返回给Client,Client脚本修改数据库中对应任务的完成状态。其具体流程如图3所示:

    其中第一步,向数据库存入相应的配置信息以后,会通过一个Client脚本文件向Job Server发起任务;第二步,Job Server向调度服务器发送调度请求;第三步,调度服务器分析数据,根据数据内容或者配置服务器负载情况反馈给Server需要调用哪些Worker进程;接下来Job Server调用相应的配置脚本完成配置任务。

    3.3 模板实现

    模板基于EXCEL表的形式存在,存放的是抽象过后的配置命令,每张表对应的是具有相同功能命令集的设备。根据厂商的不同分系列存储,方便查询和修改。每个EXCEL文件存放具有同一类操作系统的网络设备的配置模板,由表名进行区分。当任务调度程序通过轮询发现有新任务进入队列,分析任务信息,判断设备所属厂商和类型,然后调用对应的脚本,脚本读取数据库和模板信息,将数据库中的对应项数据替换模板命令集中的通配符即可完成配置命令的组合。CISCO路由器配置端口地址抽象出的命令如表2所示:

    其中$name、$ip、$mask对应数据库表项的name、ip、mask项。以此类推,所有CLI方式能够进行的功能配置都可以通过模板来定义,需要扩展时只需要对数据库表项和模板命令集做相应的扩展或者修改,同时在脚本文件中将命令集中的通配符与数据库表项对应。

    3.4 配置模块实现

    目前,自动化工具最流行的编程语言是Python,通过Python实现的网管脚本既可以确保可预测的结果,又可以充分的复用代码。同时Python能够实现良好的数据库和EXCEL模板操作。Pecpect是EXPECT脚本语言的Python实现包,通过类似于EXPECT这种基于TCL的程序,能够通过SSH连接来与服务器或者网络设备实现类似于人机交互的操作方式。模拟人工手动操作,实现复杂的可重复的任务。SSH协议是目前较为可靠的传输协议,利用SSH协议可以有效的防止配置过程中的信息泄漏,适用于多种平台,几乎得到所有网络设备的支持,能够保证安全的进行数据交换。配置模块主要由三部分组成,其流程如图4所示:

    其中1.响应脚本作为Gearman注册的Worker,响应服务器调度,根据调度信息,查询数据库,判断需要使用的模板,调用命令组合脚本;2.命令组合脚本根据响应脚本传递的模板信息,读取相应的模板,遍历模板,通过通配符的名字查询对应的数据表项,有值的存储,没有的跳过,将配置命令和期望回复分别存为两个文件,调用配置下发脚本;3.配置下发程序调用Pexpect提供的API,与被管设备建立连接,读取存储的配置命令,通过Pexpect提供的send和expect命令分条下发配置命令,并且对被管设备的反馈进行对应的匹配,相符则继续进行配置下发,若不符合,则调用错误处理机制,回滚到上次保存的系统配置。

    4 系统测试

    4.1 系统对核心问题满足分析

    在上文中,提到了网管系统需要满足的4个核心问题,我们来对比系统对四大核心问题的满足情况:

    1)承载协议的可靠性。SSH协议面向连接,是目前最为可靠的传输方式之一。通过SSH协议,不仅可以对数据进行加密,解决传输过程中的信息泄漏问题或者“中间人”攻击问题,还能够有效的防止DNS欺骗和IP欺骗问题,额外的,通过SSH方式传输数据,会对数据进行压缩,加快传输数据。

    2)与网管设备之间的互操作问题。通过Python实现的类似于人机交互的功能,可以在模板中定义不同期望返回信息,当不满足时调用错误处理机制。可以灵活的实现与被管设备的互动。

    3)配置数据的自描述能力。配置脚本主要基于模板来实现,要描述复杂的配置任务时,都可以拆分成不同的配置命令,在数据库中创建对应的数据项,可以描述任意人工操作能完成的配置任务,扩展性和适应性强。

    4)编程能力强。系统基于Python语言实习,Python语言简单易懂,能通过较少的代码实现复杂的功能,对数据库和模板支持良好

    综上所诉,可见系统能够很好的满足网管配置软件的核心需求,并且采用的技术都是z前流行的,得到广泛使用和支持的技术,能实现对大多数设备的常用配置支持,另外只需要在模板方面狠下功夫,就能扩展很多高阶的配置功能,满足网络管理更深层次的需求。

    4.2 系统测试

    原型系统由3台路由器,2台HTPC搭建的Openv Switch和若干虚拟机组成。受限于实验设备,路由器选用CISCO的C7200。其逻辑拓扑如图5所示:

    其中,为了完成网络环境的构建,需要在C7200上完成端口地址配置,DHCP协议启用和配置,启用OSPF协议实现路由器间的通信。OVS为纯二层交换机,下面的虚拟机通过路由器的DHCP协议获得分配的地址,完成网络的构建。Routerl和OVS间采用20.0.0.0/25网段,Routerl和Router2之间使用30.0.0.0/24网段,Router2和Router3之间使用40.0.0.0/24网段,Router3和OVS之间使用50.0.0.0/24网段。在Routerl和3上启用DHCP服务,分配对应网段的地址。

    如图6所示,是Routerl的配置结果截图,Routerl已经与Router3建立了连接,并且DHCP已经给VM1分配了20.0.1.4/24的地址,网络已经初步构建完成。

    由此,可以发现系统有实际运行的能力,并且能够实现复杂的繁琐的配置任务,通过对不同设备手工配置命令的深挖,能够不断扩展系统的使用范围,完成复杂的网络环境的构建。

    5 结束语

    基于模板的网络设备配置系统为网管工具的发展提供了一种思路,目前网络环境越来越异构化,但是针对同一操作系统的网络设备来说,手工配置命令总是相同或者有极少的差别,而差别也总是体现在对一些功能的支持而不是命令集的改变,基于模板的方式能够极大的减轻网管人员学习的负担和成本。另外,针对目前飞速发展的支持NETCONF和OpenFlow的设备,NETCONF协议没有定义内容层,在标准化以后也能够通过模板的方式进行配置,然后通过一些开源软件例如Libnetconf程序完成配置后XML文档的下发;对于OpenFlow交换设备,主要是流表的下发,也能够通过模板化的方式实现,集成到配置系统中。随着研究的不断深入,不断完善功能集和设备的扩充,系统具有相当的发展潜力。

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/11 3:04:37