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. 背景&动机

网络验证器让操作人员能够主动推理网络的转发行为,以避免潜在的问题。验证任务需要验证器能够:

  1. Reason about a network’s behavior across a large header space and/or failure space. 例如,数据包头空间是$2{104}$,故障空间是$2$。
  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 符号化地执行网络控制和数据平面,来发现数据包头和故障之间的转发行为的相关性。
  1. SRE 执行一个控制平面模型,其中故障(即,链路状态)是符号化的,以推导每个路由的FEC。
  2. SRE 执行一个数据平面模型,其中数据包头和故障都是符号化的。

当符号化执行到数据平面时,SRE 使FECs成为转发规则中(除IP前缀外)的一个匹配字段,以将控制平面执行过程中发现的FECs带到数据平面。因此,数据平面执行过程中,故障场景和数据包头共同确定一组转发路径,每个路径对应于乘积空间中的一个等价类,成为数据包故障等价类(PFECs)。

2.2 Workflow of SRE

操作人员希望192.0.0.0/2的流量经过路由器B。

  1. Symbolic route computation(SRC) 以配置和拓扑为输入,为每个路由器计算符号化RIBs。符号化RIB维护在链路/节点故障时可能成为最佳路由的所有路由。每个符号化RIB中的路由对应一个拓扑条件——编码该路由能够成为最佳路由的故障场景。SRE使用BDDs编码拓扑条件,其中每个决策顶点对应链路状态的布尔变量,虚线边表示该变量为False,实线边表示该变量为True。
  2. Symbolic packet forwarding(SPF) 以符号化RIBs作为输入,通过网络转发符号化数据包生成一组PFECs。SRE将符号化RIB转换成符号化FIB,其中每个FIB条目都匹配相应的路由前缀和拓扑条件。

通过SRC和SPF,SRE共同探索数据包头空间和故障空间,并且不知道特定的验证任务。

2.3 Property Analysis with SRE

SRE 支持对各种属性(如,可达性、陆航点、隔离性和负载均衡)进行三种类型的分析:

  1. failure tolerance: compute the maximum number of failures that a property can tolerate;
  2. probabilistic: estimate the probability that a property holds under probabilistic failures;
  3. 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计算:

  1. import routes from neighboring routers;
  2. rank all imported routes with existing routes and install the best routes into its RIB;
  3. export the best routes to neighboring routers.

当存在路由依赖——如,iBGP依赖OSPF建立的邻居关系,SRE首先计算iBGP peers之间的数据平面可达性的拓扑条件,然后将这些条件作为iBGP peers之间的连接条件。也就是说,SRE将iBGP之间的连接视为虚拟链接,其条件是基于OSPF的数据平面可达性分析计算出来的。

3.2 Symbolic Packet Forwarding

  1. 生成符号化FIBs。先计算每个端口的谓词,然后保证谓词不重叠。
  2. 转发数据包。形成PFECs。

3.3 Forwarding Property Analysis

Workflow:

  1. Computing property BDD.
  2. Extracting topology BDDs and packet BDDs.
  3. 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采用的优化对概率相关验证有误差。

posted @   chamomilenc  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示