SDN第3卷

增量SDN:自动化网络设备配置

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

SDN 3.

今天的软件定义网络(SDN)的定义继续扩大,如今包括配置自动化和编排等功能。虽然这些任务不是严格的SDN,但事实是软件用于在这两种情况下定义网络基础架构的某些方面,因此供应商已延长SDN的定义以将配置自动化和编排平台带入混合中。在公平性中,该线条得到模糊,因为一些现代的编排系统使用程序化接口来提供网络而不是SSH或SNMP等传统配置工具。

在许多组织中,自动化网络设备的配置是“SDN”最初获得牵引力的地方。这种推动力很简单:配置网络设备是令人惊讶的复杂性。随着供应商将更多功能构建到路由器,交换机,防火墙和应用程序传递控制器中,配置这些设备所需的命令行语法变得越来越多地加载选项和语法选择。基于Web的GUI通常是CLI替代品,但导航缓慢。Web GUI也有一种通过隐藏在不太可能的页面中的功能混淆函数,可以访问它们一系列令人讨厌的点击。

传统网络设备配置的共同点在于人类——不管他们使用的是CLI还是GUI——而且,尽管我们有很多优点,但我们在语法、完美输入长串数据或记住复杂任务的每个步骤方面都不如计算机。根据我的经验,人类是网络中断的头号原因,网络工程师犯了一个诚实的错误。

向人类提出改变生产网络类似于要求人类改变汽车的空气过滤器。虽然汽车的发动机正在运行。汽车每小时70英里的高速公路沿着高速公路行进。

能做到吗?对。应该这样做吗?嗯。似乎有点冒险。然而,企业每天都要承担这些风险,通常通过定期维护窗口来降低风险。然而,即使是这些窗口也不能改变这样一个事实:一个现代化的网络预计100%的时间都在上升。

多年来,服务器管理员一直自动化具有多个不同工具的可重复和复杂的任务。网络设备不是服务器,但最近,网络社区正在使用来自服务器世界的多个工具。这些工具正在解决设备配置中的复杂性和人为错误问题。这些工具也可以被视为SDN旅程的增量步骤。虽然配置自动化不是纯粹的SDN,但它肯定会使组织更近。让我们来看看一些工具来介绍这种新兴趋势。

蟒蛇。Python编程语言在这个列表中排在第一位,因为它具有广泛的可用性、流行性、良好的文档记录,并且被许多人认为易于使用。此外,可能用于网络配置的其他一些工具是用Python编写的。因此,Python是一个灵活的、多用途的工具,网络工程师一直在使用它来帮助他们直接或间接地进行网络配置。

使用编程语言创建网络设备配置背后的重要思想是,程序既可以确保可预测的结果,又可以迭代执行重复的任务。例如,假设一个组织需要为100个交换机构建配置,除了主机名和VLAN成员身份之类的详细信息之外,这些交换机的配置都是相同的。可以用Python编写一个程序来反复生成所需的配置,在每次迭代中替换特定开关的唯一元素。与工程师手工构建每个交换机、复制和粘贴配置部分并确保在需要时交换唯一的位不同,所有这些工作都是由程序来完成的。

Python远非唯一可以做这种工作的编程语言。有关如上所述的简单任务,可用各种选项。但Python具有强大的文库中的好处,可以访问网络设备,否则不仅可以轻松地创建配置,还可以应用这些配置。

值得注意的是,网络供应商正在为支持Python的设备编写api。Cisco onePK支持Python,例如,可以使用Python访问Arista的EOS-API,Juniper发布了一个“PyEZ”库,可以通过Python访问Junos设备。

金贾2号。Python可扩展性的一个示例是Jinja2。Jinja2是一个作为模板引擎的Python库。模板用于重复的代码位,其中可能只是几个变量从设备变为设备。在网络工程中,模板对于配置在某个类的所有设备(例如路由器)或描述接口,VLAN,VRF等的设备中的代码段落的所有设备上的大块是有用的。

Jinja2向Python添加了模板功能,使网络工程师可以迭代设备上的所有接口,为每个接口添加唯一的描述和VLAN分配,而不必单独手动配置每个接口。由于大多数数据中心在其所有接口上都有一组标准的命令,因此Jinja2模板在使用Python生成配置时既节省了时间,又减少了潜在的错误。雷竞技电脑网站

木偶。对于那些不想学习编程语言的人来说,有几个在服务器世界中流行的配置工具,可以考虑网络设备配置。傀儡,厨师,盐和盐最常见地命名。在网络社区中,Puppet和Ansible有最强大的追随者。

Puppet是一种模型驱动的配置工具,依赖于客户端 - 服务器架构,以将配置从控制服务器传递到正在配置的客户端设备。

在网络世界中,有个足球雷竞技app这是一个挑战,因为傀儡服务器需要与在客户端系统上运行的木偶代理进行交流。代理的要求已经排除了许多网络设备,因为傀儡代理根本不适用于大多数网络装备。网络空间中的Puppet初始驱动器是扩展已部署在许多企业中的工具的功能来管理服务器。如果使用Puppet可用并且已经被组织使用,为什么使用不同的网络设备配置工具?

Puppet使用自己的人性化语言,允许人们描述他们希望如何配置设备。Puppet服务器将该清单转换为适合该设备的配置,从而生成目录。Puppet代理定期轮询Puppet服务器以检索任何新目录,并进行所需的更改。

木偶可用于配置有限数量的思科设备,以及来自杜松,F5,Mellanox,Arista的某些设备,并推测其他其他设备。请注意,“木偶支持”并不意味着傀儡必须支持每个网络设备功能。实际上,大多数网络工程师发现他们实际通过Puppet可以配置的功能是有限的。

木偶可在开源和商业变体中提供。

Ansible。与整体范围的傀儡类似,Ansible正在进行普及,因为设计是无代理推动架构。ANSIBE通过SSH,NETCONF或其他方式与远程网络设备与用于远程设备编写的模块中指定的其他方式交互。经常使用SSH,虽然这不是Ansible消费者必须过度关注的东西。无论手段如何,该模块处理将预期配置获取预期配置的工作。

网络工程师描述了他们希望使用PlayBooks的网络配置。PlayBooks以易于阅读的语言编写,称为YAML。就像Puppet一样有限于特定网络功能,它支持的,Ansible受到设备模块中描述的函数的限制。

除了无代理的性质外,由于报告的易用和灵活性,Ansible正在获得受欢迎程度。像木偶一样,有开源和商业风味的Assible。

一些其他工具网络工程师认为它们希望自动化其网络配置包括:

Github,一个免费的在线代码存储库,包含一个版本控制系统。最近,Github一直是获取网络配置自动化相关代码的站点。Cisco、Arista、Juniper、Mellanox和其他网络供应商维护免费可用的代码,这些代码支持网络设备的配置或与OpenStack等云计算平台的集成。

VAGRANT,用于自动创建虚拟机。由于许多网络设备作为虚拟机可用,因此Vagrant变得有用,以便自动化VirtualBox上的网络设备VMS旋转,VMware和其他虚拟机管理程序。在实例化后,流浪汉还可以呼叫Ansible或Puppet来提供虚拟机。

下一步是什么?

网络消费者对自动化网络设备配置有兴趣的是需要密切关注SDN空间中的新兴技术。API继续增长,提供对SDN控制器的访问,插入控制器的软件模块以及坐在这些控制器下方的网络设备。本土Python程序或今天可以(并且在某些情况下可以在某些情况下)通过软件定义的应用程序进行通信网络所需的配置工作,该控制器需要提供网络设备的控制器。

事实上,一些SDN平台将网络设备配置完全从人类的手中进行。例如,关于网络工程师在NEC ProgrammableFlow开关上执行的唯一工作是将切换点指向控制器的IP地址。其余配置通过控制器本身完成。
换句话说,使用本文中所述的工具自动化网络设备的配置,这是真正的增量。人类仍在阐明MeNutiae等vlan号码和路由配置的细节,但使用比CLI或GUI更好的工具来生成并安装所需的配置。

最终,SDN声称甚至需要这些要求,允许企业将其需求表达为与安全和应用重要性有关的政策。这些抽象的策略描述将导致软件定义的网络设备配置,满足业务需求,并确保用户体验和监管合规性。行业现在正在战斗的战斗是究竟如何抽象,表达和以编程方式如何进行复杂性。目前,使用强大的工具自动化网络配置是组织开始的非常好的地方。

加入网络世界社区有个足球雷竞技appFacebook.linkedin评论是最重要的主题。
有关:

版权所有©2014.Raybet2

IT薪水调查:结果是