机房360首页
当前位置:首页 » 数据中心 » 通过SDN实现自动化网络设备的配置

通过SDN实现自动化网络设备的配置

来源:机房360 作者:litao984lt编译 更新时间:2014/10/9 9:10:17

摘要:现在,软件定义的网络(SDN)的功能继续扩大,包括,诸如配置的自动化和业务流程。而这些任务并不是严格意义上的SDN,但事实是软件已经被用来定义这两种情况下的网络基础设施的某些方面了,因此供应商们都积极的扩展到混合的SDN定义配置自动化和业务流程平台。

  自动化是SDN迁移旅程的一个合乎逻辑的下一步骤。

  现在,软件定义的网络(SDN)的功能继续扩大,包括,诸如配置的自动化和业务流程。而这些任务并不是严格意义上的SDN,但事实是软件已经被用来定义这两种情况下的网络基础设施的某些方面了,因此供应商们都积极的扩展到混合的SDN定义配置自动化和业务流程平台。在这一过程中,某些之前的界线也变得模糊,一些现代业务流程系统使用编程接口来代替传统的配置工具,如SSH或SNMP。

  在许多企业中,自动化网络设备的配置是“SDN”最初被采用的驱动因素。这种驱动力很简单:配置网络设备非常复杂。由于供应商内置了更多的功能到他们的路由器,交换机,防火墙和应用交付控制器,用来配置这些设备的命令行语法和句法的载入选项变得越来越多。基于Web的GUI(图形用户界面)通常是CLI可替代的,但导航很慢。Web界面也有一种方式将其隐藏在不可见的网页来模糊功能,使他们能够访问到一系列的点击。

  传统的网络设备配置的通用性问题是人为操作的问题:无论其使用的是CLI或是GUI。不管人为操作具备多少优点,我们人类都无法做到具备电脑一样的语法能力,能够完全输入一长串的数据,或记忆住一项复杂任务的每一步。在我的经验看来,人为操作是造成网络中断的头号原因。

  让一名网络工作人员改变生产网络就类似于让一名汽车驾驶司机车上改变空气过滤器。此时汽车的发动机正在运行,而同时汽车又正以每小时70英里的速度行驶在公路上。

  这能实现吗?是的,能实现。但我们应该这样做吗?嗯,似乎有点冒险。然而,相当一部分的企业每天都在经历着这些风险,他们经常通过定期维修来减轻风险。然而,即便是有定期的维护,也并不能改变面临相关风险的事实,现代网络预计将高达100%的正常运行时间。

  多年来,服务器管理员已经用各种不同的工具实现了自动化,来代替可重复和复杂的任务。虽然网络设备不是服务器,但是近来,一些服务器领域的工具也正在被网络设备领域广泛使用。这些工具被用来解决设备配置过程中的复杂性和人为错误的问题。这些工具还可以进一步考虑用在部署SDN的过程中。虽然配置自动化并不是纯粹的SDN,但其可以让企业更接近于这种状态。下面,就让我们来看看这方面的一些工具,来介绍一下这一新兴的趋势吧。

  Python。Python编程语言在此列表中位列第一,就是因为它是最被广泛使用的,最流行,且被许多人认为是容易使用的。此外,一些其他可用于网络配置的工具也是用Python编写的。因此,Python可以说是一个灵活的,多用途的工具,网络工程师已经在直接或间接的使用其帮助他们进行相关的网络配置。

  使用编程语言来创建网络设备配置背后最大的理念是,一款程序既可以确保可预测的结果,又可以通过重复任务进行迭代。例如,假设一家企业需要配置100台交换机,除了诸如主机名,以及VLAN成员的详细信息之外,配置都是相同的。这样,一款程序可以用Python语言来编写,实现一遍又一遍的再次生成所需的配置,代以每次迭代的特定交换机的唯一要素。而无需让工程师手动进行每台交换机的创建,复制和粘贴的配置工作,并确保了根据需要独特的比特交换,一款程序就能够完成所有这些工作。

  Python远非是能够执行这样的工作的唯一的编程语言。对于如上述那样的简单任务,可以有着各种选项。但是,Python的优势在于,其有一个强大的库来访问网络设备,并使得其能够以比较容易的方式不仅实现了创建配置,而且还能够应用这些配置。

  值得注意的是,网络厂商正在为他们的设备编写API,以支持Python。例如,思科的onePK支持Python,Arista的EOS-API可以使用Python访问,Juniper发布了“PyEZ”库,允许通过Python访问Junos设备。

  Jinja2。Python的扩展的一个例子便是jinja2。jinja2是一个Python库,作为一个模板引擎。模板是用于重复的比特代码,也许只是一些从设备到设备的变量的变化。在网络工程中,模板是用于配置大的代码块,以识别所有设备上的某一类是相同的代码,例如一个路由器,或描述代码段的设备接口,VLAN,VRF,等等。

  jinja2添加了模板的功能到Python,使得网络工程师能够通过设备上的所有接口实现迭代,为每一个接口添加了独特的描述和VLAN分配,而无需分别手动配置每个接口。鉴于大多数数据中心都有一套标准的用于所有接口的命令,jinja2模板既节省时间,同时又减少了生成Python配置时潜在的错误。

  Puppet。对于那些不想学一种编程语言的而言,在服务器领域也有几种相当流行的配置工具,可以考虑进行网络设备的配置。Puppet,Chef,Ansible和Salt是最常见的工具。在网络社区,Puppet和Ansible具有最多的粉丝。

  Puppet是一种模型驱动的配置工具,依赖于一个客户端-服务器架构提供的配置来控制服务器向客户端设备的配置。

  在网络世界里,Puppet服务器需要跟一个运行在客户端系统上的Puppet代理进行沟通是一个挑战。代理需要排除许多网络设备,这是由于Puppet代理不适用于大多数网络设备。在网络空间采用Puppet最初的驱动因素是为了能够延伸已经部署在许多企业以管理服务器的相关工具的功能。那么,既然企业已经有了Puppet,为什么还要使用不同的工具进行网络设备的配置呢?

机房360微信公众号订阅
扫一扫,订阅更多数据中心资讯

本文地址:http://www.jifang360.com/news/2014109/n611762161.html 网友评论: 阅读次数:
版权声明:凡本站原创文章,未经授权,禁止转载,否则追究法律责任。
转载声明:凡注明来源的文章其内容和图片均为网上转载,非商业用途,如有侵权请告知,会删除。
相关评论
正在加载评论列表...
评论表单加载中...
  • 我要分享
推荐图片