【论文翻译】为什么网络需要自动驾驶?

SDN in China

2018年1月30日

技术译文

论文作者:Nick Feamster,普林斯顿大学;Jennifer Rexford,普林斯顿大学
论文译者:云杉网络

概述

随着网络设备、系统和应用程序的激增,使得网络管理比以往任何时候都更为重要。不断增长的对网络安全性、可用性和性能的需求使得日益复杂的网络管理问题必须在一张复杂的交互协议和系统中实时解决。网络管理的重要性越来越突出,但网络却复杂得几乎不能管理,在新的网络时代,网络管理需要一种全新的方法。网络运营商不再是基于单个协议的闭合形式分析的优化,而是需要基于机器学习模型、数据驱动的端到端和基于高级策略的应用性能目标以及基础组件的整体视图。运营商需要使用分类和检测算法来进行实时的闭环分析,而不是采用离线的异常检测算法。网络需要学会自动运行。本文将探讨这一概念,讨论如何通过更紧密地将测量与实时控制耦合,并通过学习推理和预测网络应用或系统来实现这一目标,而不是对单个协议进行闭合式分析。

%e6%9c%aa%e5%91%bd%e5%90%8d_%e5%ae%98%e6%96%b9%e5%85%ac%e4%bc%97%e5%8f%b7%e9%a6%96%e5%9b%be44444

1、简介

现代网络应用程序正以前所未有的规模和范围运转,虚拟现实和增强现实应用要求实时响应,以及使用容器部署的微服务都带来了流量负载的快速变化。而物联网(IoT)的发展带来了接入设备数量的大幅攀升,同时也带来了新的安全和隐私问题。虚拟世界与现实生活的广泛融合提高了网络管理的门槛,实时响应、高可用、安全、予取予与的接入都是评价用户体验的指标。网络管理不应再是一个网络领域的边缘角色,而应当成为舞台的主角。

然而,网络管理是一项魔高一尺道高一丈的工作。网络运营商即便开发并使用脚本和工具来帮助他们规划、排除故障并保护网络,也无法适应用户需求和网络复杂性的高速增长网络研究人员迫切希望通过调整、设计和测量网络协议来改善境况,但随着协议和网络条件的变化以及它们与用户体验质量之间的关系变得越来越复杂,网络管理手段一直落后于实际的网络需求。二十年前,我们成功地创造出各种干净闭合式(closed-form)协议、应用程序和系统,时至今日,他们对闭合分析来说都太复杂。诸如确定缓存位置如何影响搜索查询响应时间的问题都更适合于使用基于测量数据的统计分析和机器学习的方法解决。

为了使网络管理变得更加容易,我们必须改变网络。这是一个老生常谈的话题,但仍未得到解决。一部分原因是因为我们仍在试图设计、理解,调整某个协议——专注更好的BGP模型、优化TCP、QUIC、DNS或某些当红协议。事实上,协议不是关键问题。相较于单独的某个协议,无法创建全局性的网络系统模型才使得运营商很难理解网络中正在发生的事情。软件定义网络(SDN)通过提供可编程性和集中控制来提供助益,而控制器应用程序仍然依靠收集自己关心的数据并在交换机中安装底层匹配操作规则,SDN并没有解决使用闭合模型分析真实网络系统太过复杂的问题。

作为网络研究人员,我们必须改变应对这些问题的思路。一个理想中的网络管理目标是自动运行的网络,其中(1)网络测量是任务驱动的,并与网络控制紧耦合;(2)网络控制依赖于针对整个网络系统,而不是某个协议的学习和大规模数据分析。最近的研究已经提出了网络管理高层次目标,即与自动驾驶车辆相类比的自动驾驶的网络,可以做出管理不确定性和降低风险的决策以实现一些任务目标。本文详细探讨了这一目标,提出了自动驾驶网络的技术要求和性质,并概括了一个广泛的、跨学科的研究议程,可以通过社区的努力使我们进一步接近这一目标。

学术界多年来一直致力于搜集网络全景的拼图,从应用性能的预测模型到基于网络流量分析和统计异常的入侵检测算法。然而,最新的技术仅仅为打造一个自动驾驶的网络提供了基础。今天,测量仍然没有与网络控制耦合,并且不可避免地将人引入网络控制流程,由此造成了网络控制的不确定性和错误。将我们现有的技术转换为实时分布性的技术,在网络和更广泛的计算机科学领域都引入了全新的挑战:

从高级策略中细分出测量、推论和控制策略:一个自动驾驶的网络应该把比如与性能或安全相关的高层次的目标作为输入,结合之后导出(1)网络应该收集的测量数据;(2)应该执行的推断;(3)网络最终应该执行的决策。本文第二节描述了如何通过编程语言抽象和网络可编程控制的新方法最终实现这些能力。

执行自动化的实时推断:过去十年来,在使用机器学习来检测和预测网络攻击方面展现出巨大的发展潜力。我们必须在网络管理自动推断工作的基础上,将其整合到一个能够实现更多自动化决策的控制回路中。本文第三节描述了这一挑战的两个层面:(1)使用学习改进网络管理;(2)设计网络以提高学习算法的输入数据的质量。在自动驾驶的网络中,数据质量(QoD)是服务质量(QoS)以及最重要的用户体验质量(QoE)的先决条件。

数据平面运营扩展:网络社区已经开始实现完全可编程的协议无关数据平面(例如Barefoot Tofino芯片组和Netronome网卡)以及语言(例如P4)。通过这些进步,数据平面现在逐渐开始支持带内测量。再加上分布式流量分析平台,为自动网络控制在转发方面(SDN已实现)之外的测量数据搜集方面也提供巨大的潜力。本文第四节描述了这些领域的研究挑战和机遇。

运营商一直希望网络更容易管理,在算法、机器学习、编程语言和硬件设计方面的发展促使我们考虑尽可能地减少甚至完全消除运营人员的负担。确实,可以帮助我们完成拼图的工具和技术正在出现,但我们甚至还没有搜集全所有的拼图碎片。例如,对自动化控制或推理的需求对机器学习算法提出了新的要求。因此,自动驾驶的网络对于网络和广泛的计算机科学而言都是一个巨大的挑战。当我们的一切都在互联网上时,这是我们必须面对的挑战。

2、规划

自动驾驶网络的第一个组成部分是规划,即网络运营商指定高级策略,运行时(run-time)系统生成相应的测量、预测和控制操作。自动驾驶网络应该建立在一个统一的架构之上,进行指定SLA、网络级资源优化和数据包转换的操作,运行时的系统能够生成在异构网络设备上运行的集成测量、推理和控制的分布式程序。

2.1 生成复杂的网络策略

我们设想一个网络,网络运营商可以规定(1)用户的期望(例如对延迟和抖动的保证)(2)全网目标(例如,最小化拥塞)(3)网络应该满足的应用功能和服务(例如网络地址转换、访问控制、入侵检测)。

用户期望(服务水平协议,SLA):网络运营商应该根据对网络指标(如延迟、抖动和DDoS响应时间)的保证或针对例如VoIP流量,页面加载时间的用户体验质量标准(如平均意见评分,MOS)来指定服务水平协议(SLA)。每一个SLA都应该对应特定的一部分流量,由数据包报头的字段指定,或者由更高级别的网站名称(如www.netflix.com)或应用程序(如视频流应用)指定。交互式应用可以确保数据包延迟将在99.9%的时间内小于10毫秒。SLA可以对应于与用户的合同协议中的条款,并且可以推动监控(检测网络何时处于质量无法保证的风险中)、适应(短期内缓解问题)以及学习(学习如何在充分利用网络的前提下选择配置以满足SLA)。今天,服务提供商不能标准化地指定SLA,尽管一些初步的研究提出了用于指定SLA的标准语言,但这些工作在自动监控、适应和学习方面没有突破。

网络目标(资源优化):除了满足SLA之外,网络运营商还致力于满足全网的高效可靠运行目标。这些目标可以自然地表示为优化问题,包括目标(如最小化拥塞)和限制(如流量保护或路径长度限制)。管理员应该能够直接将这些目标指定为需要优化的问题。例如一个常见的流量工程目标是最小化所有链路利用率函数f()之和。网络运营商只需要指定目标和限制,或者更好地,从一个选项库中选择这些目标,而不是直接配置流量测量和路由。网络运营商应该能够在与其他策略目标(例如SLA和应用服务)集成的架构中指定这些优化目标,而不是使用单独的流量工程工具。近期的工作在这个方向上取得了重要进展,但仍未将SLA策略或自动执行网络测量与推断决策相结合。

服务和功能(流量转换):网络策略不仅是对负载、性能和可靠性的量化测量,还包括对单个数据包执行的操作。网络策略可以涉及各种分组转换,包括网络地址转换和访问控制,以及对分组有效载荷(例如转码和加密)的操作。在当今的网络中,这些操作发生在特定的中间件上,这使得运营人员不能在广泛的网络目标中思考。网络运营商应该能够在高层指定流量转换策略,并且可以通过运行时系统将特定操作分发至网元,包括网络交换机、软件虚拟机,以及具有用于特定操作的硬件加速器的服务器。最近,研究人员开发了高级语言来指定基于头字段及其位置的数据包转换,其中包括关于有状态(stateful)操作的工作。最近的研究工作也展示了如何对网络设备(如OpenFlow或P4交换机)进行分布式配置,以在考虑全网优化目标的同时实现这些策略。这些发展是自动驾驶网络更宏大的目标的重要组成部分,这也需要(1)指定更普遍的转换形式,对数据包有效载荷或跨数据包边界进行操作(例如转码、压缩、加密);(2)自动将这些形式“编译”成异构的网络设备集合的操作策略。

2.2 驱动测量、推理和控制

自动驾驶网络的运行时系统应该从一个高层需求自动生成测量查询和操作策略,而不是要求网络运营商分别指定。运行时系统应尽可能直接在数据平面上实现组合功能。下面,我们概述了三个可以从测量和控制更紧密集成中受益的示例场景。

最大限度地减少网络拥塞:可以规定一个最小化网络拥塞,即链路利用率函数之和,的优化目标。链路利用率本身是网络路由和流量矩阵的函数。给定这样一个需求,运行时系统应该自动确定它需要测量的流量矩阵,并通过求解优化问题来配置路由。实际上,运行时系统必须决定多久收集一次测量结果(以及精确程度)、改变路由(以及如何最小化改动)的频率,以及如何执行路由决策(基于网络设备的能力)。

从拥塞的对等点迁移流量:当特定对等链路上的流量超过阈值时,运营商可能希望超出的流量迁移备用互连链路。根据这个策略,运行时系统应该监控第一个链路上的流量负载,并决定是否以及如何平衡流量负载。与其依靠静态阈值,决策还可以依赖更高级别的QoE测量(例如MOS,或者是来自应用程序的关于视频比特率或重新缓冲的直接信令),从而触发相关业务的QoE监控。

检测并阻断恶意流量:运营商可能提出一个需求来检测和迁移拒绝服务(DoS)攻击,该策略可以指定网络应该对接收到来自许多不同发送者的特定类型的DNS响应消息的目的地流量进行速率限制。基于此策略,运行时系统应该生成必要的监控策略,并根据监控的结果对可疑流量进行速率限制。该策略可以指定识别攻击的检测技术(如端口扫描检测的连续假设测试),而不是使用特定的阈值检测DoS攻击。

3、在动态环境中导航

网络的复杂性和其底层进程的动态性使机器学习算法成为检测、诊断和缓解中断的天然工具。之前的工作已经应用了机器学习和用户交互两种方式来改进网络安全和性能的某些特定方面。但是,迄今为止,这些技术主要是在现有的设计上的扩充, 而不是直接结合到网络的结构体系中。例如,机器学习在网络安全方面的很多应用,都涉及大流量跟踪算法的开发和测试;下一步自然的是将这些控制算法整合到网络的决策和控制结构中。即使应用现有的学习算法很困难,部分原因是现有的网络协议和技术很难给数据样本加标签。另一方面,今天的机器学习算法通常不适用于大容量、分布式和快速发展的网络数据;现有算法也很难在监督学习算法中迭代进行特征发现或者执行复杂的时间序列分析。

在本节中,我们将描述机器学习和用户交互的技术,以及如何通过以下方式推动自动驾驶的网络:(1)将基于机器学习的推断结合到网络中,使得在很多情况下网络能够自动运行、避免网络管理员的介入(第3.1节);(2)整合来自应用程序和用户的输入,以更好地改进用以学习的数据(第3.2节)。

3.1 通过学习改进运营

在面对网络中断时,网络应该使用自动和半自动的方式保障高可用性、良好的应用性能和安全性。与过去仅针对故障点(例如防火墙等中间件)的方法不同,我们提议将这些盒子所提供的功能看成一个网络整体。我们将讨论适合于自动驾驶网络运营的两个网络管理领域:(1)满足性能需求和服务水平协议;(2)自动检测和迁移不需要的流量(例如垃圾邮件、DoS攻击)。

性能:应用程序和服务水平协议。提供良好的网络性能,包括对短时间内网络条件的变化作出反应。为某些应用程序提供良好的网络性能需要了解应用程序级别的度量(如,视频比特率、重新缓存)与网络流量的可测量数据的关系。另外,运营商的业务可能会涉及到服务水平协议(SLA)的合约条款,包括确定何种网络条件下SLA会出现变动。当网络比较简单的时候,有可能使用闭合分析去分析一个TCP连接的行为,以及预测某些网络变化(例如路由协议权重的变化)如何影响一个T应用的性能。在当今的网络中,这种闭合形式的分析不再适用,主要受到网络部署的复杂性和很多共同作用于网络和应用性能的交互式网络组件的影响。

通过收集、存储和分析附加数据的能力,网络可以在较低级别的指标(如利用率)和更高级的指标(如流媒体应用程序性能)之间建立更复杂的的模型。例如,之前的工作已经证实,可以在特定的网络利用决策和网页搜索响应时间之间建模。之前的工作已经证明有可能学习底层网络特征和应用性能指标之间的关系。这些算法的飞速发展和完善,再结合数据平面可编程性的进步表明,我们应该考虑将这些技术扩展到监视和控制实时性能的问题上,包括应用级性能保证和SLA监控。

安全性:不应出现的流量。近年来,机器学习在统计异常检测中的应用取得了显著的进展。研究已经开发了学习算法检测(甚至预测)网络攻击。这些算法基于对网络流量(从数据包追踪到IPFIX记录)、DNS查询和域名注册,甚至BGP路由消息的分析。然而,这些异常检测算法大部分仅在离线流量上得到了证明,这样的演示对于识别运行在独立网络设备上的异常检测算法的特征是有用的;自动驾驶网络的前景带来了更多的挑战和机遇。一个挑战涉及到定制这些算法以适用于实时环境并实时作用于网络,例如轻量级特征的简单回归模型可以在支持可定制特征提取和计算的可编程交换机中执行(例如,基于Barefoot Tofino芯片组),我们将在4.2节进一步讨论这个挑战。另一个挑战是开发一类新的机器学习算法,可以基于轻量特征(例如,基于元数据或粗统计的特征)执行初始粗略分类,并在分类不确定的情况下收集更多细粒度的特征,我们将在下一节中更详细地探讨这种可能性。

3.2 用更好的数据改善学习

也应该量身定制网络用来产出更高质量的数据给实施推断和预测算法。例如,用于网络安全的机器学习算法(例如入侵检测)经常用带标签的数据训练。然而,在网络安全领域中获取带标签的数据是非常困难的:攻击是罕见的、威胁是动态的,新的威胁和攻击类别不断涌现。同样,用户网络体验也通常需要来自应用程序、用户或两者共同的输入。在本节中,我们讨论未来的网络如何与学习算法共同设计,以提高算法的准确性,并改善算法输入数据的质量和数量。

3.2.1 提高模型的准确性

从高级策略和拓扑依赖关系输入:传统的机器学习算法对网络数据进行离线分析,很少或根本没有关于网络结构依赖的信息,因此必须在推断出任何有用的信息之前推断大部分已知的信息。新的机器学习技术可以通过结合来自网络拓扑(例如共享风险链接组)和高级策略的输入来更好地诊断网络问题。例如探测网络失效故障的情况。可惜的是,虽然网络提供了大量的数据,但是他们缺少一个合成异构数据的架构来提出关于潜在原因的假设。例如,单个链接的失败可能会导致链接警报,路由更改和流量转移。自动驾驶的网络可以利用有关网络拓扑结构的信息,而不是通过强制机器学习算法从故障事件中推断这些依赖性。

收集额外的数据,以提高模型的准确性:推理模型的准确性也取决于可用数据的类型和数量,在很多情况下,推理算法可用通过附加数据样本以及不同类型或粒度的数据来改进。网络可以使用基于相对轻量级或易于收集的网络数据(例如,采样的IPFIX日志、SNMP)的粗略检测算法来开发一个分类器,且具有高于可接受的误报率。这个分类器的输出可能会触发额外的测量,可能是对网络不同部分的主动测量,也许是更加高成本的数据包抓取,从而可以提供有关流量的更精确的信息(例如,DNS查询日志,时间信息)。诸如带内网络遥测等技术的出现不仅可以将更多的细粒度信息写入数据包,而且还可以根据需要产生探针流量。如果一个算法需要这些信息,则可以从端到端或从网络内部进行主动和被动测量。

3.2.2 提高数据质量

增加标签数据的数量:将机器学习应用于网络性能和安全问题的挑战之一是缺少标记数据来训练这些算法。缺乏标签数据是当今网络的基本要求,原因如下:很多事件是:(1)罕见的(即频繁程度不足以产生合理的训练集合)(2)新兴的(即它们反映了以前不曾见到的新一类威胁或攻击)(3)动态的。在网络失效的情况下,例子很少:当网络失效时,通常是网络设备配置错误,并且与网络上的其他设备交互。其他网络失效可能因为物理硬件发生故障或特定流量模式触发一个BUG。因为每次失效本质上是独特的,所以基于过去的失效例子的训练可能不会产生能够检测和诊断未来网络失效的分类器。网络可以直接从运营商、网络配置甚至用户或应用中学习并整合信息,以增加用来训练检测和推理算法的标签数据量。

用户输入:来自最终用户的反馈可以驱动网络中额外的被动和主动测量。网络运营商通常可以看到网络本身的指标,但这些指标有时很难映射到用户体验。我们预计通过用户的明确反馈,这些指标将能够更好的与用户体验耦合,从而引发额外的被动或主动测量。例如Web浏览器可以有一个按钮,用户可以明确地反馈不良的用户体验。此反馈可以在数据包中添加标记,触发交换机进行额外的被动或主动测量。

应用程序开发者偶尔会通过经验抽样技术向用户询问个别应用程序的体验与经验抽样相关的一个问题是何时对用户进行调查:过少的抽样会导致关于应用程序性能的数据不足;而另一方面,过于频繁的调查可能会惹恼用户或给出轻率的回答。一个可行的研究路线是使用网络测量来自动化驱动体验采样调查。例如,网络中的可编程交换机或者感知化的OS内核可能感知到网络环境的劣化,比如更高的数据包丢失率、更高的时延,或吞吐量下降;与之类似,服务器可能会发现TCP流中丢包或时延增大。这些条件可以作为用户体验调查的自动触发器;通过适当的集成,网络设备或服务器可以生成一个能被操作系统或浏览器解析的数据包来自动触发调查。

从应用程序和操作系统输入:最终用户应用程序通常具有其当前性能的精确信息(例如,是否发生了重缓存,视频比特率发生了改变),但通常无法将该信息传达给网络。类似的,操作系统可以获取关于用户使用的额外信息,诸如应用程序是否在前台运行,甚至是用户是否正在使用应用程序。综合应用程序性能信息和用户使用信息可以更高效地利用网络资源。操作系统可以将关于应用状态的信息整合进网络业务流,随后网络可以使用该信息将业务流量分配到更高或更低的优先级队列。例如,网络可以确定它能安全地将用户没在观看的高吞吐量视频流优先级降低,即使视频流仍在传输,这种功能非常有用。来自应用程序和操作系统的附加信息,比如TCP统计,也可用于标记流量,以作为查询时的属性。

4 对速度的需求

前几节中的功能依赖于实时监控和预测,大量网络流量的流式分析,以及从简单功能(例如聚合)到更复杂的功能(如推理和预测)的线速处理能力。在设计和应用这些用于自动驾驶网络的构建模块时,存在很多研究挑战,特别是在这些功能的可扩展性、分布式和实时性方面。

4.1 数据平面中的流量分析

灵活的数据包解析、匹配转发以及在交换机和包头中状态维护的能力可以使网络支持高级测量抽象。

紧凑数据结构:可编程交换机可以执行算数运算并在表中维护状态,允许交换机支持用以维护网流统计信息的紧凑数据结构。这些数据结构可以支持对数据的更高级抽象,例如集合(Bloom filters)、计数(Bloom filter计数或count-min sketch)或独特项目的计数(distinct sketch计数)。近期的研究已表明如何在新型的交换机上支持这种数据结构,但在计算资源优化和带宽占用控制方面还有很多工作要做。

在数据包上携带状态:很多网络任务需要多跳传输才能完成。标记包状态并在随后的跳转中更新状态使数据平面能够支持一系列强大的抽象。例如,包头可以携带应用于该数据包的网络策略的版本(支持一致性策略更新、集合或序列(灵活指定下一跳、路径、中间件));用有限状态自动机的状态评估一个数据包的属性和它通过网络路径的常规表达式,并以属性测量控制流量,或者路径上流量统计的聚合,来收集路径层面的度量,例如最大链路利用率或总排队延迟。

简化与其他数据集的连接:分析通常需要将流量统计与其他数据关联,例如,可以将数据包的目标地址与其自治系统(通过加入路由表数据)、网站或应用程序(通过加入DNS查询日志)或最终用户(通过加入认证服务器数据)相关联。可以基于更高层的策略聚合测量数据、路由和流量调度信息以及访问控制信息等等。在今天的网络中,这些关联是繁琐的,通常依赖于来自不同位置的粗粒度时间戳。数据平面可以通过两种方式简化关联过程。首先数据平面可以自己完成关联,通过实时结合数据包和相关的数据集内容来维护高效的数据储存结构(例如,某类认证用户对应的IP地址表)。其次,交换机可以标记数据包,例如数据包出现的位置和时间戳,来简化后续的关联过程。

4.2 数据平面中的预测模型

正如第三节中所讨论的,机器学习已经被广泛应用于性能监控到安全监控中的各类监控任务。然而,迄今为止,很多机器学习模型仅仅以纯粹离线的方式进行了演示和部署:流量以抓包的形式收集,IPFIX记录或DNS查询日志用于训练检测模型,同时离线评估。然而,很多模型都包含了简单的特征,通常是一些可以从单个数据包中计算或推断出来的特征。可编程交换机可以从数据平面中的数据包中提取这些特征,甚至可以基于这些学习模型计算回归函数,从而实质上实时计算预测并决定网络中的流量状态,而无需离线分析。

考虑一种基于机器学习的垃圾邮件过滤器,这种垃圾邮件过滤器基于网络层面的特征,如源IP地址所在的自治系统以及同样发送了邮件的相邻IP地址的数量。可编程交换机可以实时计算这些特征,并计算各个特征的加权线性组合,以计算出邮件是垃圾邮件的概率。另一个例子涉及基于DNS查找的僵尸网络检测:分类器检测异常功能,例如查找(在其他功能中)按字典序靠拢,短时突发,并托管在具有已知不良信誉的权威DNS服务器上。可编程交换机可以解析DNS查询来提取这些特征,并在交换机内直接检测相关的恶意活动,无需进行离线分析。

5 结论

现代网络应用不断增长的性能、可靠性、可用性和安全性要求正在使网络管理变得前所未有的重要。与此同时,网络本身已经变得太复杂,无法使用现今的方法进行管理,这些方法依赖于单独协议和设备闭合的网络行为和性能模型。作为社区中的一员,我们必须考虑一种全新的网络管理方法:(1)依靠底层度量数据驱动的模型来预测端到端的网络性能;(2)将测量与实时控制相结合,尽可能地将运维人员从管理控制回路中排除。过去的十年,从统计异常检测、基于机器学习的故障排除工具到可编程网络,以及用于线速算法的紧凑型数据结构等技术都为设计自动驾驶网络奠定了基础。我们应该使用这些模块构建应用程序所需的自动驾驶网络。

 

如有需要下载论文原文和译文,点击这里

uuuu

Related Posts

[Gartner报告解读] 开放网络岂乏明时?

SDN in China

2017年11月27日

技术译文

解读Gartner报告《OpenStack Is Coming; Is Your Data Center Network Ready?》

Read More