自智网络简介

简介: 自智网络简介

概要


随着人们日常生活中依赖的网络设备、系统和应用程序越来越多,对网络的管理比以往任何时候都更加重要。应用程序对网络安全、可用性和性能的要求越来越高,并且要求在跨越不同协议和系统的复杂网络上实时解决网络问题,使得对网络的管理越来越困难。就在网络管理的重要性日益提升的时候,网络却已经变得如此复杂以至于似乎无法管理。在这样一个新时代,网络管理需要有根本性变更,而不只是闭合优化分析个别协议。网络运营商需要数据驱动,基于机器学习的端到端模型,基于高级策略目标的应用程序性能优化,以及底层组件的整体视图。运营商需要能够基于分类和检测算法做出实时闭环决策,而不只是对网络检测数据执行离线分析异常检测算法。换句话说,网络应该学会自我驱动。这篇论文探讨了这一概念,并讨论应该如何实现这一目标。达成这一雄心勃勃的目标需要将测量和实时控制更紧密耦合在一起,并依靠学习对网络应用和系统进行推理和预测,而不是对个别协议进行闭合分析。


1. 简介


现代网络应用已经运行在一个前所未见的规模和范围上。虚拟现实和增强现实需要实时响应,使用容器部署的微服务带来了流量负载的快速变化,物联网(IoT)显著增加了连接设备的数量,同时也带来了新的安全和隐私问题。这些应用深入了我们的日常生活中,提高了对实时交互、高可用性、抵御攻击的弹性、无处不在的访问和大规模的期望,因此无形中提高了网络管理的门槛。网络管理一直是一项值得努力的工作,但现在更为关键。


然而,网络管理仍然是一项西西弗斯式的任务。随着用户需求和网络复杂性的持续增长,网络运营商开发并使用脚本和工具来帮助他们规划、排除故障和保护网络。网络研究人员努力改进网络协议、优化设计、测量性能,但却始终无法跟上网络的要求,因为不同的协议、动态的网络条件,以及它们与用户体验之间的关系正变得越来越复杂。20 年前,我们曾希望(并成功的)创建干净、封闭的单一协议、应用程序和系统模型[4,24]。而今天,网络已经过于复杂,无法进行闭合分析。预测问题,如确定搜索查询响应时间将如何随缓存的位置而变化,更适合基于测量数据的统计推理和机器学习[29]。


当然,我们必须对网络做出改变,使网络管理更容易,类似的话已经说了很多年,但仍然没有达到期望的目标。问题的部分原因在于业界持续关注于个别协议的设计、理解和调整,我们专注于更好的 BGP 模型,对 TCP、QUIC、DNS 或目前流行的协议进行优化。事实上,问题不在于协议,与单个协议相比,无法对整体网络系统进行建模,使得运营商很难理解网络中正在发生的事情。软件定义网络(SDN)提供了更强的可编程性和集中控制,但控制器仍然依赖于收集自己需要的数据,并在交换机中配置低级匹配规则,而 SDN 并不能改变现实的网络化系统过于复杂、无法用闭合模型进行分析的事实。


作为网络研究人员,必须改变解决这些问题的方法。网络管理的一个雄心勃勃的目标是自智网络(self-driving network) ,其中(1)网络测量由任务驱动,并与网络控制紧密结合,(2)网络控制依赖整个网络的学习和大规模数据分析,而不是单个协议的封闭模型。最近的倡议提出了这一高级目标[14,28],并与自动驾驶汽车进行类比,自动驾驶汽车可以做出决策,管理不确定性并降低风险,以完成某些任务(例如,前往某个目的地的交通)。本文详细探讨了这一目标,开发了自智网络的技术要求和特性,并概述了一个广泛的、跨学科的研究议程,可以让我们离实现这一目标更近。


多年来,网络界始终致力于解决这一难题,从应用程序性能的预测模型[19,29]到基于网络流量分析的统计异常和入侵检测算法[2,7],不一而足。然而,目前的技术水平只是为创建真正的自智网络这一更为雄心勃勃的计划奠定了基础。如今,测量仍然与网络控制分离,并不可避免的将网络运维人员置于控制回路中,从而引入了不确定性以及造成误差的可能性。如何利用我们所拥有的技术,并使其既能够实时控制又具有分布式的优点,在网络(以及更广泛的计算机科学)领域带来了全新的挑战:


从高级策略中派生测量、推理和控制的规则: 自智网络应该将与性能或安全性相关的高级目标作为输入,并共同得出(1)该网络应该收集的测量数据,(2)该网络应该执行的推理,以及(3)该网络最终应该执行的决策。第 2 节介绍的编程语言抽象和对网络的程序化控制的新方向,最终可能实现这些功能。


自动执行,实时推理: 过去十年证明了机器学习在检测和预测网络攻击方面的巨大潜力,我们必须在网络管理中不断增加的自动化推理工作的基础上,最终将其集成到一个控制回路中,从而实现更自动化的决策。第 3 节介绍了这一挑战的两个方面: (1)基于学习改善网络管理,(2)设计网络提高为学习算法提供数据的质量。在自智网络中,数据质量(Quality of Data, QoD)是服务质量(Quality of service, QoS)的前提,并最终是用户体验质量(Quality of experience, QoE)的前提。


可扩展的数据面运维: 网络社区已经开始为这方面奠定基础,通过完全可编程的、独立于协议的数据平面(例如,Barefoot Tofino 芯片集[5]和 Netronome 网卡[30])以及为它们编程的语言(例如,P4[6])。通过这些进步,数据面现在开始支持带内测量,再加上分布式流分析平台,程序化网络控制的潜力巨大,不仅包括转发(已启用 SDN),还包括测量数据的收集。第 4 节介绍了这些领域的研究挑战和机遇。


运营商一直希望网络更容易管理,算法、机器学习、形式化方法、编程语言和硬件的发展,鼓励我们考虑更大的目标,即尽可能减轻运维人员的负担,甚至可能完全不需要人工运维。实际上,能够帮助我们实现这些目标的工具和技术正在出现,但我们还没有这一拼图的所有碎片,例如,对自动化控制或推理的需求对机器学习算法提出了新的要求。因此,自智网络对网络乃至计算机科学都是巨大的挑战。由于我们做的几乎所有事情都依赖于互联网,我们必须接受这一挑战。


2. 准备开始


自智网络的第一个组成部分是规划,网络运维人员指定高级策略,运行时系统生成相应的测量、推理和控制操作。自智网络应该依赖统一的框架来指定 SLA、全网范围的资源优化和包交互,以及可以生成运行在异构网络设备集上的分布式程序的运行时,以集成测量、推理和控制。

2.1 定义复杂网络策略

设想有这么一个网络,运营商可以指定 (1)客户期望(例如,延迟和抖动的统计保证); (2)全网目标(例如,尽量减少拥塞); (3)应用功能和业务(如:网络地址转换、访问控制、入侵检测)。


客户期望(服务水平协议)。 网络运营商应指定服务水平协议(SLA)在保证网络指标(例如,延迟、抖动和 DDoS 响应时间)或用户体验质量指标(如 VoIP 的 MOS 或网页浏览加载时间)。每个 SLA 应该对应于流量的一个特定子集,该子集由数据包报头字段以及地点指定,或者更好的是,基于 Web 站点(如 www.netflix.com)或应用程序(如视频流)的更高级别名称指定。交互式应用程序可以确保包延迟至少在 99.9%的时间内小于 10 毫秒。SLA 可能对应于与客户的合同协议,并可以驱动监控(检测网络何时有违反保证的风险)、适应(在短期内缓解问题)和学习("学习"如何选择满足 SLA 的配置,同时避免浪费网络资源)。今天,服务提供商只是非正式的指定 SLA。尽管一些初步研究提出了用于指定 SLA 的语言[16,18],但这些工作在自动监控、适应和学习方面没有完成闭环。


网络目标(资源优化)。 网络运营商除了要满足客户的服务承诺外,亦要满足整个网络的目标,使其网络能高效、可靠的运作。这些目标可以自然的表达为优化问题,具有目标(objectives, 如最小化拥堵)和约束(constraints, 如节约流量或限制路径长度),管理员应该能够将这些目标直接指定为优化问题。例如,一个常见的流量工程目标是最小化所有链路上某个链路利用率凸函数f()的总和(例如,lf(ul/cl)),其中链路利用率取决于流量矩阵(vij,从入口 i 到出口 j 的负载)和路由(rij),从入口 i 到出口 j 的流量中穿过链路l的百分比)。也就是说,链路利用率是遵循遍历链路路径的所有流量矩阵的和(ul=ijrijlvij)。从而通过求解这一优化问题得到网络(rijl)。实践中,运行时必须决定多久收集一次测量指标(以及精确到什么程度)、改变路由的频率以及如何表示路由决策(基于网络设备的功能)。


从拥挤的对端转移流量。 当某一特定链路上的流量超过阈值时,运营商可能希望将多余流量转移到另一条互连链路上。基于此策略,运行时系统应该监测第一条链路上的流量负载,并决定是否以及如何平衡负载,而不只是依赖于静态阈值。相关决策也可能依赖于更高级别的 QoE 要求监控关联流量获得的指标(如 MOS,甚至是来自应用程序的关于视频比特率或重新缓冲的直接信令)。


检测、拦截非预期流量。 运营商可以制定某个策略来检测和缓解拒绝服务攻击(DoS),该策略可能要求网络应该对从许多不同的发送方接收特定 DNS 响应消息的目的地的流量进行限流。基于此策略,运行时应该生成必要的监控查询,并根据监控结果对可疑流量进行限速,而不是等待检测到 DoS 攻击时的特定阈值,从而通过该策略可以指定某种检测技术(例如,通过端口扫描的顺序假设测试)来识别攻击。


3. 适应动态环境


网络的复杂性及其底层过程的动态特性使机器学习算法成为检测、诊断和缓解中断的天然工具。之前的工作应用了机器学习和用户交互技术,以改善网络安全[2,7,9]和性能[19,29]的具体方面。然而到目前为止,这些技术主要还是基于现有设计,而不是直接整合到网络控制中。例如,机器学习在网络安全方面的许多应用都涉及到大规模流量跟踪算法的开发和(通常是离线的)测试,下一步自然是将这些类型的推理和控制算法集成到网络决策和控制中。即使是应用现有的学习算法也经常遇到很多困难,部分原因是基于现有网络协议和技术不容易获得数据样本标签。另外,现在的机器学习算法往往不是为大容量、分布式和快速发展的网络数据量身定制的,现有算法也使得迭代精炼监督学习算法中使用的特征(对于大容量网络流量跟踪可能需要)或执行复杂的时间序列分析变得困难。


本节我们将介绍机器学习和用户交互技术如何在自智网络领域提供帮助: (1)基于机器学习促进自智网络,在许多情况下,网络可以学习自己运行,避免由运维人员做出决定(第 3.1 节); (2)结合应用程序和人类用户的输入从而更好的改进学习算法(第 3.2 节)。


3.1 通过学习改善运维


网络应该提供高可用性、良好的应用程序性能,以及基于自动化和半自动化来应对中断,从而提升安全性。过去使用单点解决方案(例如,防火墙和垃圾邮件过滤器等中间体)来修补现有网络,与此相反,我们建议让网络内建这些中间体提供的功能。我们将讨论两个适合自智网络的管理领域: (1)满足性能要求和服务水平协议; (2)自动检测和减少不必要的通信(例如,垃圾邮件、DoS 攻击)。


性能: 应用程序和服务水平协议。 要提供良好的网络性能,需要在短时间内对不断变化的网络条件做出反应。为某些应用程序提供良好的网络性能,需要理解应用级指标(例如,视频比特率,再缓冲事件)以及通过网络流量可以测量什么之间的关系。在其他情况下,运营商的任务可能涉及确定服务水平协议(SLA),包括确定网络条件何时可能导致违反 SLA。当网络比较简单的时候,可以使用闭合分析来模拟(比如)TCP 连接的行为,以及预测特定网络的变化(例如,路由协议权重的变化)可能会对应用程序性能的影响。然而,在今天的网络中,不再容易进行这种闭合分析,因为网络的复杂性以及许多相互作用的网络组件共同影响了网络和应用程序的性能。


通过收集、存储和分析附加数据的能力,网络可以生成模型,在利用率等较低级别指标和流媒体应用性能等较高级别指标之间建立更复杂的关系。例如,以前的工作已经建立了对特定配置决策如何最终影响网络搜索响应时间[29]建模的可能性。过去的工作已经证明,了解低级别网络特性(如往返延迟)和应用程序性能指标(如搜索响应时间)之间的关系是可能的。随着算法速度和复杂性的发展,加上数据平面可编程性的进步,应该考虑将这些技术扩展到有关实时性能监控的问题上来,包括应用级性能保证和 SLA 监控。


安全: 非必要流量。 近年来,机器学习在统计异常检测中的应用取得了重大进展。研究人员开发出了新的学习算法,通过分析网络流量(从报文跟踪到 IPFIX 记录)[17]、DNS 查询[2]和域注册[8],甚至 BGP 路由消息[15]来检测(甚至预测)攻击。然而,这些异常检测算法大多只在离线流量跟踪数据上进行了演示,这样的演示对于识别运行在独立网络设备上的异常检测算法的特征非常有用,从而为自智网络的前景带来了更多的挑战和机遇。其中一个挑战涉及到对这些算法进行调整,使其实时运行,并能够结合实时操作。例如,基于轻量级特征的简单回归模型可以在支持可定制特征提取和计算的可编程交换机中执行(例如基于 Barefoot Tofino 芯片组[5]),我们将在第 4.2 节进一步讨论。另一个挑战涉及开发新的机器学习算法,基于轻量级特征(例如基于元数据或粗统计)执行粗分类,并当分类不确定时触发更重量级特征的收集(例如来自数据包),我们将在下一节中更详细探讨这种可能性。


3.2 用更好的数据改善学习


网络也应该量身定制,以提高提供给实时推理和预测算法的输入数据的质量。例如,用于网络安全的机器学习算法,如入侵检测,经常需要在标记数据上进行训练。然而,对于网络安全领域来说,获取标签数据是非常困难的,因为攻击比较罕见,而威胁是动态的,不断出现新的威胁和攻击类别。类似的,识别体验质量的降级通常需要来自应用程序和用户两者的输入。在本节中,我们将讨论未来的网络可能如何与学习算法共同设计,以提高算法的准确性,并提高为这些算法提供输入的数据的质量和数量。


3.2.1 提高模型精度


来自高级策略和拓扑依赖关系的输入。 传统机器学习方法在离线网络跟踪数据之上运行,几乎没有关于网络结构依赖关系的信息,因此,在做出任何有用的推理之前,必须推断出许多已知的信息。新的机器学习技术可能通过结合来自网络拓扑结构(例如,共享风险链接组)和高级策略的输入来更好的诊断网络问题。例如考虑检测影响可用性的网络故障的情况,尽管网络提供了丰富的数据,但缺乏单一框架综合处理异构数据,以形成关于潜在原因的假设。例如,当一条链路故障时,会产生链路告警、路由变化、流量漂移等问题。自智网络可以利用网络拓扑信息,而不是强迫机器学习算法从故障事件的观察中推断这些依赖关系。


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


3.2.2 提高数据质量


增加标记数据的数量。 将机器学习应用于网络性能和安全问题的挑战之一是缺乏用于训练这些算法的标记数据。缺乏标记数据是当今网络的现状,其原因如下: 许多有趣的事件(1)是罕见的(即发生频率不够高,无法生成合理的训练集)、(2)新兴(即反映了某种以前未见过的新威胁或攻击)的或(3)动态的。在网络发生故障时,通常是由于网络设备的"一次性"错误配置造成的,该配置以意想不到的(以前没有观察到的)方式与网络上的其他设备交互。其他网络故障可能发生在物理硬件故障或特定的通信模式触发实现错误或配置错误时。不幸的是,由于每个故障本质上都是唯一的,基于过去的故障示例的训练可能无法产生能够检测和诊断未来故障的分类器。一个可以学习的网络可以直接从运维人员、网络配置,甚至可能从用户或应用程序吸收信息,以增加检测和推理算法可以用来训练的标记数据的数量。


从用户输入。 来自最终用户的反馈可以帮助推动网络中额外的被动和主动测量。网络运营商通常可以看到网络本身的指标,但这些指标有时很难映射为用户体验。我们设想,通过用户的明确反馈,这些数据可能会更好的结合在一起,从而触发触发额外的被动或主动测量。例如,一种可能性是,Web 浏览器等应用程序有一个按钮,用户可以通过该按钮显式的指示应用程序性能较差(一个"我很沮丧"按钮)。这种反馈可能体现在应用程序流量中的包注释上,从而触发来自交换机的额外被动或主动测量。


应用程序开发人员偶尔会通过一种被称为体验抽样的技术,对终端用户就单个应用程序的性能进行调查(例如,"您上次视频通话的体验如何?")。与经验抽样相关的一个挑战是何时对用户体验进行调查,偶尔的抽样可能导致应用程序性能数据不充分,而过于频繁的采样可能会激怒用户或导致用户提交不满意的回复。一个可能的研究方向是使用网络测量来驱动和自动化经验采样。例如,网络中的可编程交换机或仪表化的 OS 内核可能表明在某些条件下的退化,例如更高的丢包或延迟,或吞吐量的降低,类似的,服务器可能会在 TCP 流中看到较高的丢包或延迟。这些条件可以作为自动触发器来轮询用户的应用体验,通过适当集成,网络设备或服务器可以生成一个包,用户的操作系统或浏览器可以自动解析这个包来触发采样。


从应用或操作系统输入。 终端用户应用程序通常有关于他们正在经历的性能精确信息(例如,是否发生了重新缓存事件,视频比特率是否发生改变),但通常没有办法将这些信息传递给网络。类似的,操作系统可能有关于用户参与的额外信息,例如应用程序是否在前台运行,甚至可能用户是否在操作应用程序(或设备)。将有关应用程序性能和用户参与的信息传递给网络可以更有效的促进网络资源的使用。操作系统可以将有关应用程序状态的信息包含到网络流量中,网络随后可以使用这些信息将流量分配给更高或更低的优先级队列。例如,即使视频仍在继续,但网络可以安全的确定降低用户不再观看的高吞吐量视频流的优先级。来自应用程序和操作系统的附加信息,比如 TCP 统计信息,也可以用来标记数据流,可以用作今后查询数据流的属性。


4. 越快越好


前几节中的功能依赖于实时监控和预测、对大量网络流量的流分析以及线速处理能力,从聚合等简单功能到推理和预测等更复杂的功能。在自智网络的设计和应用方面,还有许多研究挑战,尤其是在使这些功能可扩展、分布式和实时化方面。


4.1 数据平面流量分析


灵活的包解析、匹配操作流水线以及在交换机和数据包头上维护状态的能力可以使网络支持高级度量抽象。


紧凑的数据结构。 可编程交换机可以执行算术操作和维护表中的状态,允许交换机支持紧凑的数据结构,维护关于包流的统计信息。这些数据结构可以支持更高层次的抽象,例如维护集合(例如,布隆过滤器),计数(例如,计数布隆过滤器或 Count-Min Sketch),或计算非重复数据(例如,count distinct sketch)。最近研究表明,在新兴交换机上支持这类数据结构[20,26,31]、优化有限状态、计算资源和控制带宽方面还有很多工作要做。


在数据包上承载状态。 许多网络任务需要跨越多点进行操作。使用状态标记数据包并在后续节点上更新状态的能力使数据平面能够支持一系列强大的抽象。例如,报头可以携带应用于该包的网络策略版本(例如,支持一致的策略更新[25],集合或序列(例如,下一跳,网络路径,或灵活的流量代理[21])。或者携带确定性有限自动机的状态,用于评估包属性及其通过网络路径上的正则表达式,以基于这些属性测量或控制流量[23]。或者携带跨路径流量统计聚合,以收集路径级指标,如最大链路利用率或总排队延迟[13]。


简化与其他数据集的连接。 分析常常需要将流量统计数据与其他数据集结合起来。例如,将报文目的地址与其自治系统(通过连接路由表数据)、网站或应用程序(通过连接 DNS 查询日志)或最终用户(通过连接认证服务器数据)相关联。这些信息可以促进测量数据的聚合、流量的路由及调度,以及基于更高级别策略的访问控制。在今天的网络中,这些关联非常繁琐,通常依赖于来自不同位置的粗粒度时间戳。数据平面可以通过两种方式简化关联过程。首先,数据平面可以通过同时分析和合并数据集,或者通过维护第二个数据集的有效表示(例如,一个与特定类中经过身份验证的用户相关联的 IP 地址表)来完成关联。其次,交换机可以标记数据包,例如,表示网络中的某个位置和相关的时间戳,这些信息可以简化后续的关联。


4.2 数据平面预测模型


如第 3 节所讨论的,机器学习已经应用于各种各样的网络监控任务,从性能监控到安全。然而,到目前为止,其中很多模型已经以纯离线的方式进行了演示和部署,流量以包的形式被捕获,IPFIX 记录或 DNS 查询以日志的形式从网络中收集,并用于训练检测模型,而模型也是在脱机状态下进行评估的。然而,这些模型中有许多包含了简单的特性,这些特性通常可以从单个数据包中计算或推断出来。可编程交换机可以从数据平面数据包中提取这些特征,甚至根据这些学习到的模型计算回归函数,本质上是在线计算预测函数,并对网络中的流量性质做出实时决策,而不需要离线分析。


考虑基于机器学习的垃圾邮件过滤器,它依赖网络级别的特性,例如发送 IP 地址的自治系统,以及同时发送邮件的相邻 IP 地址的数量[9]。可编程交换机可以内联计算这些特征,并计算单个特征的加权线性组合,以计算消息是垃圾邮件的总体可能性。另一个例子涉及到基于 DNS 查找僵尸网络,通过分类器检测异常特征,例如在字典顺序上非常接近的查询,在短时间间隔内发生大量流量,并且托管在劣迹斑斑的 DNS 服务上。可编程交换机可以解析 DNS 查询来提取这些特性,并在交换机上检测与恶意活动相关的 DNS 查找,而不需要离线分析。


5. 结论


现代网络应用对性能、可靠性、可用性和安全性的要求不断提高,使得网络管理比以往任何时候都更加重要。与此同时,网络本身已经变得过于复杂,无法使用最先进的方法来管理,这些方法依赖基于单一协议和设备级别上的网络行为和性能的闭合模型。作为一个社区,我们必须考虑全新的网络管理方法: (1)依赖于数据驱动的模型,可以从较低级别指标预测端到端网络性能; (2)将测量与实时控制相结合,尽可能将运维人员从管理控制回路中排除。过去十年为设计自智网络奠定了基础,从统计异常检测和基于学习的故障排除工具到可编程网络和线速算法的紧凑数据结构,我们应该基于这些组件来构建现代应用所需的自智网络。


参考文献

[1] C. J. Anderson, N. Foster, A. Guha, J.-B. Jeannin, D. Kozen, C. Schlesinger, and D. Walker. NetKAT: Semantic foundations for networks. In ACM Principles of Programming Languages, pages 113–126, Jan. 2014.


[2] M. Antonakakis, R. Perdisci, D. Dagon, W. Lee, and N. Feamster. Building a Dynamic Reputation System for DNS. In USENIX Security Symposium, pages 273–290, 2010.


[3] M. T. Arashloo, Y. Koral, M. Greenberg, J. Rexford, and D. Walker. SNAP: Stateful network-wide abstractions for packet processing. In ACM SIGCOMM, Aug. 2016.


[4] M. Arlitt, B. Krishnamurthy, and J. C. Mogul. Predicting shorttransfer latency from TCP arcana: A trace-based validation. In SIGCOMM Internet Measurement Conference, 2005.


[5] Barefoot Tofino. https://barefootnetworks.com/technology/#tofino.


[6] P. Bosshart, D. Daly, G. Gibb, M. Izzard, N. McKeown, J. Rexford, C. Schlesinger, D. Talayco, A. Vahdat, G. Varghese, and D. Walker. P4: Programming protocol-independent packet processors. ACM Computer Communications Review, 44(3):87–95, July 2014.


[7] G. Gu, R. Perdisci, J. Zhang, and W. Lee. BotMiner: Clustering Analysis of Network Traffic for Protocol-and StructureIndependent Botnet Detection. In USENIX Security Symposium, volume 5, pages 139–154, 2008.


[8] S. Hao, A. Kantchelian, B. Miller, V. Paxson, and N. Feamster. PREDATOR: Proactive Recognition and Elimination of Domain Abuse at Time-of-Registration. In ACM Conference on Computer and Communications Security (CCS), pages 1568–1579, 2016.


[9] S. Hao, N. A. Syed, N. Feamster, A. G. Gray, and S. Krasser. Detecting Spammers with SNARE: Spatio-temporal Networklevel Automatic Reputation Engine. In USENIX Security Symposium, volume 9, 2009.


[10] V. Heorhiadi, M. K. Reiter, and V. Sekar. Simplifying software-defined network optimization applications using SOL. In USENIX Networked Systems Design and Implementation, 2016.


[11] P. Kazemian, G. Varghese, and N. McKeown. Header space analysis: Static checking for networks. In USENIX Networked Systems Design and Implementation, 2012.


[12] A. Khurshid, X. Zou, W. Zhou, M. Casesar, and P. Godfrey. VeriFlow: Verifying network-wide invariants in real time. In USENIX Networked Systems Design and Implementation, 2013.


[13] C. Kim, P. Bhide, E. Doe, H. Holbrook, A. Ghanwani, D. Daly, M. Hira, and B. Davie. In-band network telemetry (INT), June 2016. http://p4.org/wp-content/uploads/fixed/INT/INT-current-spec.pdf.


[14] K. Kompella. The Self-Driving Network: How to Realize It. North American Network Operators Group (NANOG), June 2017. https://www.nanog.org/sites/default/files/1_Kompella_The_Networking_Grand_Challenge.pdf.


[15] M. Konte, R. Perdisci, and N. Feamster. ASwatch: An AS Reputation System to Expose Bulletproof Hosting ASes. ACM SIGCOMM Computer Communication Review, 45(4):625–638, 2015.


[16] K. Kritikos, B. Pernici, P. Plebani, C. Cappiello, M. Comuzzi, S. Benbernou, I. Brandic, A. Kertesz, M. Sztaki, M. Parkin, and M. Carro. A survey on service quality description. ACM Computing Surveys, 46(1), Oct. 2013.


[17] A. Lakhina, M. Crovella, and C. Diot. Diagnosing Networkwide Traffic Anomalies. In ACM SIGCOMM Computer Communication Review, volume 34, pages 219–230, 2004.


[18] D. Lamanna, J. Skene, and W. Emmerich. SLAng: A languagefor defining service-level agreements. In IEEE Workshop on Future Trends of Distributed Computing Systems, pages 100–106, 2003.


[19] Z. Li, M. Zhang, Z. Zhu, Y. Chen, A. G. Greenberg, and Y.-M. Wang. WebProphet: Automating Performance Prediction for Web Services. In USENIX Symposium on Networked Systems Design and Implementation (NSDI), volume 10, pages 143–158, 2010.


[20] Z. Liu, A. Manousis, G. Vorsanger, V. Sekar, and V. Braverman. One sketch to rule them all: Rethinking network flow monitoring with UnivMon. In ACM SIGCOMM, Aug. 2016.


[21] R. MacDavid, R. Birkner, O. Rottenstreich, A. Gupta, N. Feamster, and J. Rexford. Concise encoding of flow attributes in SDN switches. In ACM Symposium on SDN Research, pages 48–60, 2017.


[22] J. McGlurg, H. Hojjat, N. Foster, and P. Cerny. Event-driven network programming. In ACM Programming Languages Design and Implementation, June 2016.


[23] S. Narayana, M. Tahmasbi, J. Rexford, and D. Walker. Compiling path queries. In Networked Systems Design and Implementation, Mar. 2016.


[24] J. Padhye, V. Firoiu, D. Towsley, and J. Kurose. Modeling TCP Throughput: A Simple Model and Its Empirical Validation. ACM SIGCOMM Computer Communication Review, 28(4):303–314, 1998.


[25] M. Reitblatt, N. Foster, J. Rexford, C. Schlesinger, andD. Walker. Abstractions for network update. In ACM SIGCOMM, Aug. 2012.


[26] V. Sivaraman, S. Narayana, O. Rottenstreich, S. Muthukrishnan, and J. Rexford. Heavy-hitter Detection Entirely in theData Plane. In Symposium on SDN Research (SOSR), pages 164–176, 2017.


[27] R. Soule, S. Basu, P. J. Marandi, F. Pedone, R. Kleinberg, E. G. Sirer, and N. Foster. Merlin: A language for provisioning network resources. In ACM CoNEXT Conference, Dec. 2014.


[28] Designing self-driving networks workshop, Apr. 2017. http://forum.stanford.edu/events/2017selfdriving.php.


[29] M. Tariq, A. Zeitoun, V. Valancius, N. Feamster, and M. Ammar. Answering what-if deployment and configuration questions with WISE. In ACM SIGCOMM, volume 38, pages 99–110, 2008.


[30] B. Vinnakota. Netronome and P4: A brief history and a roadmap. https://www.netronome.com/blog/netronome-and-p4-a-brief-history-and-aroadmap/.


[31] M. Yu, L. Jose, and R. Miao. Software Defined Traffic Measurement with OpenSketch. In Networked Systems Design and Implementation, volume 13, pages 29–42, 2013.

目录
相关文章
|
2月前
|
消息中间件 Kubernetes 网络协议
Cilium 系列 -15-7 层网络 CiliumNetworkPolicy 简介
Cilium 系列 -15-7 层网络 CiliumNetworkPolicy 简介
|
3月前
|
消息中间件 NoSQL Linux
workFlow c++异步网络库编译教程与简介
搜狗公司C++服务器引擎,编程范式。支撑搜狗几乎所有后端C++在线服务,包括所有搜索服务,云输入法,在线广告等,每日处理数百亿请求。这是一个设计轻盈优雅的企业级程序引擎,可以满足大多数后端与嵌入式开发需求。 编程范式 结构化并发与任务隐藏回调与内存回收机制
53 0
|
11天前
|
网络协议 Java API
Python网络编程基础(Socket编程)Twisted框架简介
【4月更文挑战第12天】在网络编程的实践中,除了使用基本的Socket API之外,还有许多高级的网络编程库可以帮助我们更高效地构建复杂和健壮的网络应用。这些库通常提供了异步IO、事件驱动、协议实现等高级功能,使得开发者能够专注于业务逻辑的实现,而不用过多关注底层的网络细节。
|
19天前
|
数据采集 网络协议 API
python中其他网络相关的模块和库简介
【4月更文挑战第4天】Python网络编程有多个流行模块和库,如requests提供简洁的HTTP客户端API,支持多种HTTP方法和自动处理复杂功能;Scrapy是高效的网络爬虫框架,适用于数据挖掘和自动化测试;aiohttp基于asyncio的异步HTTP库,用于构建高性能Web应用;Twisted是事件驱动的网络引擎,支持多种协议和异步编程;Flask和Django分别是轻量级和全栈Web框架,方便构建不同规模的Web应用。这些工具使网络编程更简单和高效。
|
1月前
|
缓存 网络协议 网络虚拟化
网络技术基础(15)——DHCP简介与配置
【3月更文挑战第3天】刚加完班又去南京出差了,实在是太忙了。。。。网络基础笔记(加班了几天,中途耽搁了,预计推迟6天),这篇借鉴了之前师兄的笔记。
|
6月前
|
网络协议 程序员 API
[笔记] Microsoft Windows网络编程《一》WinSock简介(四)
[笔记] Microsoft Windows网络编程《一》WinSock简介(四)
|
2月前
|
网络协议 物联网 Linux
WireGuard 系列文章(五):Netmaker 简介 - 创建和管理 WireGuard 网络的平台
WireGuard 系列文章(五):Netmaker 简介 - 创建和管理 WireGuard 网络的平台
|
8月前
|
数据可视化 算法 数据库
GUI、多线程编程、网络编程简介
GUI 是 Graphical User Interface 的缩写,含义为图形用户界面。它是一种计算机操作界面,通过图形、图标和视觉化元素与用户进行交互。相比于命令行界面(CLI),GUI 提供了更直观、更易用的方式让用户与计算机系统进行交互。
91 0
|
4月前
|
Kubernetes Linux Docker
容器网络简介
容器网络简介
|
4月前
|
网络虚拟化 虚拟化 云计算
云计算——网络虚拟化简介
云计算——网络虚拟化简介
113 0

热门文章

最新文章