Symbolic Router Execution
SIGCOMM'22 | Peng Zhang | https://dl.acm.org/doi/10.1145/3544216.3544264
SRE is a general and scalable network verification engine which supports various analyses that require reasoning about a network’s forwarding behavior across a large space of headers and failures and various failure models.
1. 背景&动机
网络验证器让操作人员能够主动推理网络的转发行为,以避免潜在的问题。验证任务需要验证器能够:
- Reason about a network’s behavior across a large header space and/or failure space. 例如,数据包头空间是$2{104}$,故障空间是$2$。
- Reason about a network’s behavior under different failure models.
网络验证通常需要在不同故障模型(确定性 and/or 概率性)下分析不同空间(数据包头空间、故障空间或它们的乘积)的属性。现有验证器能有效覆盖数据包头或故障空间,但不能同时支持两者;能有效地推理确定性或概率性故障模型,但不能同时支持两者。
2. SRE
Symbolic Router Execution(SRE) 是一个通用的、可扩展的网络验证引擎,它支持不同类型的分析。SRE符号化地运行网络模型来发现packet failure equivalence classes(PFECs) to scale to 数据包头和故障空间的乘积。通过用BDDs符号化数据包头和故障,SRE允许操作人员用基于BDDs的图算法分析属性,该过程忽略了故障模型和网络语义。
2.1 Basic Idea
SRE灵感来自符号执行。
- Symbolic execution of programs. 符号执行是一种通过让输入符号化来抽象地执行程序的方法。当符号执行器遇到一个条件分支(例如,if-else 语句)时,它执行每个分支并更新路径条件,路径条件是在执行期间编码分支决策的一组约束。因此,符号执行最多只探索每个执行路径一次,并可以发现输入的等价类(由路径条件编码)。通常符号执行会承受路径爆炸,并利用许多优化来减轻路径爆炸。
- Symbolic execution of network control plane $\underline{or}$ data plane. HSA 可以被看作数据平面的符号执行:它转发带有符号化的数据包头来发现PECs。Hoyan 可以被看作控制平面的符号执行:它用符号化的链路状态来发现FECs。
- Symbolic execution of network control plane $\underline{and}$ data plane. SRE 符号化地执行网络控制和数据平面,来发现数据包头和故障之间的转发行为的相关性。
- SRE 执行一个控制平面模型,其中故障(即,链路状态)是符号化的,以推导每个路由的FEC。
- SRE 执行一个数据平面模型,其中数据包头和故障都是符号化的。
当符号化执行到数据平面时,SRE 使FECs成为转发规则中(除IP前缀外)的一个匹配字段,以将控制平面执行过程中发现的FECs带到数据平面。因此,数据平面执行过程中,故障场景和数据包头共同确定一组转发路径,每个路径对应于乘积空间中的一个等价类,成为数据包故障等价类(PFECs)。
2.2 Workflow of SRE
操作人员希望192.0.0.0/2的流量经过路由器B。
- Symbolic route computation(SRC) 以配置和拓扑为输入,为每个路由器计算符号化RIBs。符号化RIB维护在链路/节点故障时可能成为最佳路由的所有路由。每个符号化RIB中的路由对应一个拓扑条件——编码该路由能够成为最佳路由的故障场景。SRE使用BDDs编码拓扑条件,其中每个决策顶点对应链路状态的布尔变量,虚线边表示该变量为False,实线边表示该变量为True。
- Symbolic packet forwarding(SPF) 以符号化RIBs作为输入,通过网络转发符号化数据包生成一组PFECs。SRE将符号化RIB转换成符号化FIB,其中每个FIB条目都匹配相应的路由前缀和拓扑条件。
通过SRC和SPF,SRE共同探索数据包头空间和故障空间,并且不知道特定的验证任务。
2.3 Property Analysis with SRE
SRE 支持对各种属性(如,可达性、陆航点、隔离性和负载均衡)进行三种类型的分析:
- failure tolerance: compute the maximum number of failures that a property can tolerate;
- probabilistic: estimate the probability that a property holds under probabilistic failures;
- differential: check for differences in failure tolerance/probability of a property after a configuration change.
计算failure tolerance
假如要判断128/2从A到C的故障容差,即最大故障数量。将C的从A到C的所有PFECs的拓扑条件做析取,得到Figure 1(c) 的拓扑BDD。在这个拓扑BDD中,从根到节点0的最小数是0,这对应违反可达性属性的最小故障数量。
计算failure tolerance问题简化成寻找最短路径问题:给虚线分配权重1,实线分配权重0;计算从根节点到节点0的最短路径长度$k$;the failure tolerance is $k-1$。
计算probabilities
假如要知道128/2从A到C的可达性的概率。在拓扑BDD中,每个truth赋值(从根到节点1的路径)表示一组属性保持的故障场景。
计算概率的问题简化成搜索到图上一个节点的所有路径,并计算这些路径的权重和的问题。
假设每个链路独立并以概率$p$故障,并将权重$p$分配给虚线边,$(1-p)$分配给实线边,权重0和1分配给节点0和1。然后,概率为根节点的权值,它可以从节点1递归计算,根据:每个节点的权重是其子节点的加权和。该示例的结果是0.9*(0.9+0.1*0.9)+0.1*0.9=0.981。
3. 设计细节
3.1 Symbolic Route Computation
A symbolic route is a 2-tuple (route, tc),其中,route是具体的路由(包括协议类型、下一跳、AS path等),tc是拓扑条件。
每个路由器重复三个过程完成symbolic route计算:
- import routes from neighboring routers;
- rank all imported routes with existing routes and install the best routes into its RIB;
- export the best routes to neighboring routers.
当存在路由依赖——如,iBGP依赖OSPF建立的邻居关系,SRE首先计算iBGP peers之间的数据平面可达性的拓扑条件,然后将这些条件作为iBGP peers之间的连接条件。也就是说,SRE将iBGP之间的连接视为虚拟链接,其条件是基于OSPF的数据平面可达性分析计算出来的。
3.2 Symbolic Packet Forwarding
- 生成符号化FIBs。先计算每个端口的谓词,然后保证谓词不重叠。
- 转发数据包。形成PFECs。
3.3 Forwarding Property Analysis
Workflow:
- Computing property BDD.
- Extracting topology BDDs and packet BDDs.
- Analyzing topology BDDs with graph algorithms.
可以进行:Failure tolerance analysis, Probabilistic analysis and Differential analysis.
3.4 优化
- Route Pruning: Hoyan的优化方法。使用由BDD编码的过滤器过滤超过k故障变量的路由。k较小时,优化明显。
- Prefix Pruning: Config2Spec的优化方法。判断节点之间是否时k联通的,如果是才计算。k较大时,优化明显。
- Abstract Interpretation: ShapeShifter的优化方法。抽象路由携带的属性。当网络对称效果较好。
4. 总结
SRE 在执行控制平面时推导每个路由的FEC;在执行数据平面时计算PFECs。
SRE 将属性的不同分析转换成拓扑条件的BDDs上的图算法。
SRE采用的优化对概率相关验证有误差。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)