Fast Control Plane Analysis Using an Abstract Representation
SIGCOMM'16 | Aaron Gember-Jacobson | https://dl.acm.org/doi/10.1145/2934872.2934876
本文描述了一种新的路由控制平面抽象ARC,它能够在任意故障场景下快速验证关键属性。
1. 基本准备
1.1 背景
控制平面配置复杂。网络的路由控制平面使用一个或多个分布式路由协议(如,OSPF、RIP和BGP)生成数据平面(即,转发表)。现有工作表明路由协议交互在现代网络中可能相当复杂。因此,控制平面容易出现配置错误,并危及网络安全性、可用性和性能。
主动分析控制平面。许多控制平面错误只表现在故障期间,并可能产生毁灭写的影响;重构网络时需要主动分析控制平面。
现有验证工具不足。Batfish为每个可能的感兴趣的故障场景生成完整的数据平面。如果需要在任意故障下验证某些安全性和可用性不变量,Batfish必须生成指数级数量的数据平面,这是不现实的。
1.2 验证属性
- 为了避免在故障场景下出现不良结果,操作人员要求网络中关键的安全性和可用性不变量始终保持(即使在任意故障下)。
- 在某些情况下,操作人员会重构网络的控制平面以简化设备配置和提高可管理性。他们希望:在任意故障下,新旧控制平面应该生成相同的数据平面。
2. 方法说明
2.1 观察
生成详细的数据平面并不总是必要的。
- 主动分析任务通常需要计算路径的属性,而不是路径本身。例如,I1-I4关注路径是否存在;I5依赖路径集合(证明计算实际路径时不必要的)。
- 许多企业和数据中心网络只使用少数的路由协议,这些协议以特定的方式进行交互。
2.2 Abstract Representation Control planes(ARC)
网络的ARC是一个数据结构,它包含每个流量类(即,源-目的地子网对)一个有向加权图。每个有向图建模控制平面中路由实例/协议的行为,以及它们之间的交互。顶点对应路由进程,包含一个入(I)和出(O)顶点。有向边表示进程之间的路由信息交换而实现的数据流量流。
- 在任何故障下,真实转发路径被证明包含在ARC的有向图中。验证I1-I4可以归结为计算ARC的简单图特征,如顶点连通性和最大流(多项式时间算法)。
- 使用ARC生成违反I1-I4的反例,反例包含一个故障场景和一个违反不变量的路径。
- 通过简单地比较新旧配置的ARC,对满足限制的网络进行等价性测试。
2.3 ARC的特性
- Pathset-equivalent graphs. ARC中每个有向图包含实际网络中使用的源到目的地的每一条路径,并且不包含任意故障下实际网络中不可行的路径。
- Path-equivalent graphs. 为每个有向图中的边分配权值,保证在删除故障链接对应的边后,源到目的地之间的最小代价路径是实际网络中采用的。
前者允许将I1-I4转换成图的特征,后者允许模拟网络转发状态。
3. 设计细节
3.1 构建ARC
为建模协议和功能,本文引入extended topolgoy graph(ETG)。
ETG的构建:顶点、边和边权重的计算。
3.2 使用ARC
I1-I4表示为图的特征,这些特征可以使用多项时间图算法在pathset-equivalent的ETG上计算。
- I1: Always blocked. 在任意故障情况下,ETG中不存在从SRC顶点到DST顶点的路径。通过从SRC开始遍历(如深度优先或广度优先)ETG来价差路径的存在。如果DST顶点保持未访问,则该属性保持不变。否则,提供一个最短路径作为反例。
- I2: Always reachable with $< k$ failures. 根据Menger定理,有向图中从s到d的边不相交路径的最大数等于使s和d分离所需移除的最小边数。因此,只要ETG从s到d至少由k条边不相交的路径,则d总是可以从s到达。在任意有向无环图中寻找边不相交路径的个数是NP-Complete。在单位权重图中,该问题简化为计算max-flow/min-cut。当ETG的max-flow$\ge k+1$,网络满足该不变量。当不变量违反时,产生一个的反例边的集合,该集合形成一个大小$\le k$的cut。
- I3: Always isolated. 出于安全性或性能原因,操作人员可能希望两个不相交的流量类($s_1\to d_1$和$s_2\to d_2$;$s_1\neq s_2, d_1\neq d_2$)永远不能同时遍历同一条链路。因此,在任何情况下,$s_1\to d_1$的首选路径不能与$s_2\to d_2$的首选路径重叠。在检查此属性前,递归地删除所有入度或出度为0地顶点(不包括SRC和DST),这些顶点是死胡同。删除这些顶点时,也会删除它们的入边。如果修剪后的ETG由任何共同的边,返回公共边的集合作为反例。
- I4: Always traverse a waypoint. 当网络包含中间盒(如,防火墙)时,操作人员可能希望流量在任意故障场景下始终穿越中间盒的某个实例(即,waypoint)。从ETG中删除所有的waypoints顶点,并检查是否存在从SRC顶点到DST顶点的路径。如果存在这样的路径,那么就有一些可能不穿越waypoint的路径,将此路径作为反例返回。
I5与其他不变量不同:1. I5设计多个ARCs;2. 需要path-equivalent的ARC,因为网络采取的实际路径是需要检查的属性;3. 通过比较ETGs实现,而不是计算ETGs的图特征。
在比较来自不同的ETGs之前,对ETGs进行两个转换:
- Convert process-based ETGs to interface-based ETGs. 两个控制平面可能使用一组不同的路由实例,从而导致它们的ETGs包含一组不同的顶点和边。我们关注的是转发行为是否不同,不关注协议如何配置,因此将process-based ETGs转换成interface-based ETGs。
- Convert edge weights to canonical weights. 有些ARC的边权重只是在尺度上不同,在所有故障场景下,这些边权重将生成相同的数据平面,因此它们是等价的。因此,我们将所有边权值减小成规范权值。换句话说,计算ARC中每条边的最低的可能的权值。
在应用上述变换后,通过检查两个控制平面的ARCs是否具有相同的顶点、边和边的权值来检验它们的等价性。
4. 总结
ARC能够快速验证故障场景下的不变量正确性,因为它分析图特征而不是生成具体的数据平面;ARC不支持iBGP和高级的协议属性(如,BGP local preference)。此外,ARC对ACLs的支持不足,它无法考虑流量优先通过由于ACL而移除的边的情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现