在配置网络时,工程师通常关注于实现网络服务交付的各个任务。意图驱动的网络则将他们的注意力转移到了整个网络上。
特定的网络服务要求网络工程师投入更大的精力去实现高质量的最终用户体验。对于统一通信和分布式数据库架构等服务而言,工程师需要配置基础架构——通常是逐个设备进行配置,才能保证服务流量的正确处理。
最终,这些服务会面对最终用户。然而,直到最近,之前关注于网络服务交付的专业模式才集中到微配置上,而非服务背后的意图。意图驱动的网络实际上是指告诉网络你想要什么,而不是告诉它去做什么。它有不一样的模式,它抽象各个配置,同时将网络与服务的真正意图更紧密地对齐。
微配置指的是通常与配置网络设备相关的各个任务。这其中包括一些常见任务,如在交换机上配置服务质量(QoS)策略,在防火墙上配置访问控制列表,在数据中心设备上配置巨型帧,在路由器上配置路由语句,以及编制整个网络所需要的全部任务。
这种模式关注于与宏配置完全相反的各种任务,宏配置主要关注于整体技术,而非个体任务。例如,一个宏配置会配置整个网络的QoS,而微配置则指各个类图、策略图、访问控制列表、服务策略及其他实现网络服务交付的操作。
网络工程师可能会无法处理这些任务,从而导致设计、实现和部署后故障修复时间大大延长。网络服务交付变得越来越关注于各个组件的配置,而不是任何的网络编制。最终,网络配置的意图就可能迷失在处理各种琐碎的配置任务上。
这种网络工程实际上完全不是编制,配置意图甚至要比宏配置更加抽象。
意图驱动网络背后的意图是什么?
简单来说,意图是指应用程序准备向最终用户交付什么(服务)。这不同于它将如何交付服务(方式)。例如,一个新的统一通信服务的意图可能是在网络两个终端之间交付高质量的语音和视频。意图(即What)就是指交付高质量语音和视频。而方式就是大多数工程师最熟悉的部分:在各种设备之间配置QoS,打开防火墙的特定端口,或者配置新的虚拟LAN,用于传输特定的流量。
关注于服务交付方式的问题是网络会发生变化。网络资源一直在变动——动态路由会改变流量模式,网络更新会出现新的硬件和软件平台,而网络工程师变动则会影响实现团队配置网络的实际能力。通常,工程师的能力总是有一定的限度,他们总是希望网络或应用程序永远不要变化。
这个动态性恰恰会导致应用程序出现问题。除非一个应用程序本身的用途发生变化,否则它的意图是不会改变的,即使底层网络发生变化也一样。
意图驱动的网络解决这个问题的方法是让一名工程师只操作一个接口——或者是使用某种控制器,由它来告诉整个网络应该部署哪一种服务。然后,网络可以相应地自动完成配置。这个过程完全没有微配置。这归功于网络与工程师之间的意图引擎所实现的完全抽象。这种意图驱动的方法可以在各种各样的硬件平台和软件版本之间实现轻松的编制,完全不依赖于工程师自身的技术水平。此外,这种方法还允许网络在环境发生变化时自己进行重新配置。
这种意图驱动的过程不同于主流的软件定义网络控制器,后者可以通过一个接口来管理网络,同时创建一些实现编制的功能。意图驱动控制器背后的概念是它们可以给工程师提供一个预先配置好的网络应用程序,它能够解析意图并根据需要将它转换为各种语言、协议和语法,从而可配置任何类型的网络设备。工程师不需要单击“在千兆以太网2/3上配置服务策略”的按钮。相反,网络工程师只需要单击相关的意图策略——也称为意图描述,然后软件就会智能地将配置应用到基础架构需要的位置,完全不受平台或软件版本的影响。
这是一种强大的方法,它能简化动态网络分配与调整,从而实现高效的网络服务交付。而且,由于它具有更大的互操作性,因此工程师完全不需要依赖任何一个网络供应商。
实现意图驱动的网络连接
“编写一次,处处运行”,这是意图驱动网络的主要概念。然而,它是一个来自于软件开发的概念,并不是新事物。软件开发者多年以来一直在做这一件事情,以便让他们的程序能够运行在任何操作系统上。例如,Web浏览器开发者必须保证他们的代码能够运行在任何一种操作系统上。将这种与平台无关的接口应用到网络上,看起来来很让人吃惊,但是它也是保证意图驱动网络变成为现实的***挑战。
开源社区目前正在各种项目中构建这一类系统,同时在处理编写跨平台代码的复杂性。但是,这并不是一件轻松的任务。编写能够配置任何平台同时还能够从网络收集和解析数据的的代码是一件难度巨大的工作。OpenStack、开放网络基金会、OpenDaylight和开放网络实验室都在致力于设计能给系统添加这一种处理能力的方法。但是,它还需要很长的时间才能成为一种成熟产品。
编写一个聪明的RESTful API,实现设备的自动分配,是其中一种任务。编写一个完全与供应商无关的接口,用于配置端到端网络服务交付,同时能够在应用程序行为发生变化时智能地动态重新配置网络,这是一个完全不同的任务。
幸好,这个工作并不需要重新编写整个网络堆栈。相反,它只是增加了一层可以慢慢部署的软件,而且一次只会影响一部分的网络。例如,当与意图驱动网络相关的方法和产品日益成熟和丰富时,网络工程师就只需要在数据中心使用它们。
最终,意图驱动网络的目标是扩展网络管理,给基础架构增加真正的智能——所有技术都是为了让数据包到达它们应该到达的位置,同时与业务目标保持一致。工程师最终能够在一个网络上声明一个意图,然后它就能自我配置,我们离这个目标仍然还有很远距离。但是,或许有一天网络工程师就能够像电影里面一样输入一个命令就能够完成网络的配置。