论文部分内容阅读
传统的IP网络将控制逻辑(控制平面)分布到各个硬件转发设备(数据平面,有时也称转发平面)中,以紧耦合的方式提高了整体网络的可靠性。但随着网络规模不断扩大、网络应用不断增多,这样一种方式的弊端变得越来越明显:一是分布式的控制平面使网络运维越来越困难;二是控制平面和数据平面的紧耦合使网络创新难以实现。为此,新兴的软件定义网络(Software-defined Networking,SDN)打破了现有网络设备中垂直整合的结构,将其中的控制逻辑和底层的硬件转发设备分离开,数据平面只负责高效地流量转发,而所有的控制逻辑则由逻辑上集中式的控制器实现。同时控制器对网络管理员开放了可编程的接口,使得网络管理可以通过这些接口实现。这样的一种新型的网络架构能够获得全局的网络视角,极大地简化了网络运维的方式;同时新的网络功能和网络协议可以在控制器上通过模块化的方式添加,大大提高了网络的灵活性,加速了网络创新的实现。作为一项新兴的网络技术,SDN在实际应用中还存在很多问题。本文聚焦于其中的一个关键问题:控制平面和数据平面的转发行为可能存在不一致(以下简称不一致),即:控制平面上的预期转发行为(desired forwarding behavior)和数据平面上的真实转发行为(actual forwarding behavior)不一致,更具体的:控制平面上网络管理员要求的网络策略(networkpolicy),在数据平面上,没有得到网络设备真正的执行。这种不一致一般源于数据平面,例如网络设备中的软件错误和硬件失效等等;同时,这种不一致还可能造成严重的网络故障,包括某些网络地址不可达和网络性能下降等等。因此,验证控制平面和数据平面转发行为的一致性是有必要的。而验证该一致性,通常需要三个步骤:(1)测量数据平面的转发行为;(2)探测控制平面和数据平面转发行为的不一致(即比较两种转发行为是否一致);(3)定位控制平面和数据平面转发行为的不一致。本文基于上述的三个步骤,主要包含以下四部分工作。首先,本文的第一部分工作聚焦于测量:以被动测量的方式去获取数据平面的转发行为。考虑到测量方法的实用性,我们选择了交换机普遍都能支持的sFlow作为被动测量的数据源。考虑到实时性,我们采用了现有的流式处理框架作为海量数据处理的工具。但sFlow采样的机制仍然会使测量变得困难:其一在于sFlow可能在某条数据流的路径上漏采了,那么基于采样的数据,该数据流的路径会是缺失的;其二在于数据流速率的估计一般会采用简单扩展(simple scaling)的方法,该方法在样本数量较少时,误差很大,而现实中,sFlow的采样率是不高的,因此,数据流速率的估计会不准确。为此,针对数据流的路径,我们提出了拓扑信息辅助下的路径计算算法(Topology-assisted Path Computation,Tapco);针对数据流的速率,我们提出了结合数据分组包头信息的方法去提高数据流速率估计的准确度。其次,本文的第二部分工作结合测量和定位:在已知存在控制平面和数据平面转发行为不一致的情况下,通过测量探针的packet history(分组历史),去定位该不一致引起的网络故障。每当不一致引起的网络故障发生时,会有一些数据分组受其影响。如果我们能够获取那些数据分组在网络中具体的传播过程,我们就可以对网络故障进行感知。我们将一个数据分组在网络中具体的传播过程称之为该数据分组的packet history(PH,分组历史),即该数据分组在传播过程中匹配到的规则(rule)以及匹配前后的包头状态。基于此,我们首先在边缘交换机上注入探针去模拟受影响的数据分组,其次去获取探针的PH,最后针对PH进行分析去定位不一致的具体位置。我们实现了获取探针PH的具体方法,并在一个小型的网络中验证了用PH去定位不一致的可行性。再次,本文的第三部分工作结合全部的三个步骤,系统性地提出了基于规则验证(rule verification)的一致性检测方法。由网络设备中的软件错误和硬件失效造成的不一致通常会表现为规则的失效,因此,通过验证每一条规则的有效性,我们就可以验证控制平面和数据平面转发行为的一致性。过去的大部分工作都基于端到端的探针探测(end-to-end probing),这种方式的缺陷在于无法及时地定位不一致发生的具体位置。利用在SDN中普遍存在的带外信道,单跳探针探测(per hop probing)的方式成为可能,这种方式可以在规则级别(rule level)上去比较控制平面的预期转发行为和数据平面的真实转发行为,从而对每一条规则进行验证。为此,针对单个网络设备,我们将其抽象成一棵带状态的多根树(Stateful Multi-Rooted Tree,SMRT),通过遍历该多根树,就可以生成少量的探针去覆盖该设备中的所有规则。我们实现了相应的原型系统,并对探针生成的性能做了测试,同时也在一个小型的网络环境中验证了我们方法的有效性。最后,本文的第四部分工作是第三个工作的拓展。在上一个工作中,我们可以了解到探针的生成在整个规则验证的过程中扮演了很重要的角色,但之前的探针生成方法还存在两个明显的不足:一是单个网络设备式的探针生成会产生额外的探针,如果从全网的角度去考虑,这些额外的探针是可以被避免的;二是不断的网络变化会带来不停的规则更新,如果每遇到一次规则的更新,就要重新生成一次探针,这无疑是既浪费时间也浪费资源的,因此,针对规则的更新,增量式的探针生成方法是有必要的。基于此,我们将上一个研究内容中的SMRT模型推广到全网,称为带状态的有向无圈图(stateful Directed Acyclic Graph,sDAG),并在该网络模型的基础上提出了两种探针生成的方法去解决上述两个不足:一是离线的快速探针生成方法(Fast Probe Generation,FPG),二是在线的增量式探针生成方法(incremental FPG,iFPG)。实验证明,FPG在探针计算时间和生成数量上优于现有的其他方法,iFPG优于其他非增量式的方法(包括FPG在内)。