zoukankan      html  css  js  c++  java
  • Sigcomm20 Hoyan 阅读笔记

    由于网络中路由协议执行的时序不一致原因,产生了例如经典的route update racing问题,最后产生多种可能的数据平面行为,为网络的验证带来不确定性;此外,网络验证中对于K-failure问题,一些工具例如Batfish采用枚举验证的方式,对于大规模网络存在scalability问题,效率不高;因此这篇文章针对这样两个问题,设计了Hoyan这一网络验证工具。

    TopoCond

    在BGP路由传播过程中,用四元组((Subnet, AS Path, Nexthop, TopoCond))来表示Rib,前三个属性的含义和变化过程与常规的路由学习一致,因此(routingPolicy)(routingSelection)其实只涉及到这三个属性. 最后一个属性(TopoCond)是一个逻辑表达式,用来记录路由更新到达当前节点所需要满足的链路状态,由一系列的(a_i)表示,如果(a_i)为true,表示(Link_i)能够传播此路由更新; 使用这种表达方式能够记录所有链路状态下的路由更新情况, 方便处理(K\_failure)(route update racing)问题;

    例如,在上图的例子中,每个节点在RibOut时,将当前的(TopoCond and)路由传播所经过的边(过程1,2,3);然后每个节点收到邻居发过来的路由消息后,根据路由协议,利用((Subnet, ASPath, Nexthop))路由属性计算BestRoute,同时根据同一前缀的路由优先级,按照下面公式进行更新:

    [TopoCond_{new} = lnot[{prefR_1.tc or prefR_2.tc or ...or prefR_k.tc}]and TopoCond_{old} ]

    含义是对于同一前缀的多条路由消息,按照路由优先级排序后,其中任一路由启用的前提条件是比它优先级更高的路由(TopoCond)不成立;此外,hoyan的方案设计里,为了验证所有可能的数据平面状态,并没有按照“接收所有邻居的路由更新,计算最优路由,并只传播最优路由”的原则来执行路由协议,而是将携带着(TopoCond)的所有路由消息都进行了传播(过程6)。

    Route Update Racing

    Route Update Racing是在同样的控制平面状态下,路由传播的时序不同导致不同数据平面状态的一种现象。例如下图中,A和B都要接收来自同一个子网的两台设备C和D的路由消息,并计算出最优路由再传播;

    上图的例子中,C、D、A都针对前缀(10.0.1.0/24)配置了Route Map Out,不同的路由到达顺序将导致Route Map的执行结果不一样:在A处,如果C发送的Rib先于D到达,那么A处的Route Map被执行,B从A处接收的Rib将拥有更高的weight,根据优先级排序,该Rib会覆盖B从D处接收的Rib,最后A和B发往子网(10.0.1.0/24)的路由都将选择发给节点C;

    另一种情况下,在A处,如果D发送的Rib先于C到达,拥有更高Local_Pref的该路由将覆盖随后从C处接收的Rib,尽管A在最优路由计算之后依然往邻居传播,A出的Route Map依然被执行,但是这条具有更高Weight的Rib由于BGP防环机制,并不会被B接收,因此,最后A和B发往子网(10.0.1.0/24)都将选择发给节点D;

    传统的路由协议执行的结果无法覆盖上述两种情形,hoyan里保留了所有路径传播下的Rib,根据对这些Rib的路径信息进行编码,通过SAT求解找到所有成立的结果;

    K-failure

    K-failure问题是假设网络中最多出现K条链路故障的条件下,网络属性是否依然成立的一类问题;基于上述内容,通过判断保留Rib的TopoCond的K-failure条件下的满足性,可以很快得到路由可达的可满足性。具体来说,由于保留了所有带有(TopoCond)的Rib, 对于某个节点去往某个前缀的所有转发规则(r_i) 和这些规则里的链路状态(R(r_i)), 只需要求出逻辑表达式(R(r_1) or ... or R(r_n)=False)时,表达式中(a_i=False)的最少个数,然后和K比较就能得到Rib在K-failure下的可满足性。



    纵使疾风起,人生不言弃!
  • 相关阅读:
    归并排序(Merge Sort)
    AtCoder AGC035D Add and Remove (状压DP)
    AtCoder AGC034D Manhattan Max Matching (费用流)
    AtCoder AGC033F Adding Edges (图论)
    AtCoder AGC031F Walk on Graph (图论、数论)
    AtCoder AGC031E Snuke the Phantom Thief (费用流)
    AtCoder AGC029F Construction of a Tree (二分图匹配)
    AtCoder AGC029E Wandering TKHS
    AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)
    AtCoder AGC035E Develop (DP、图论、计数)
  • 原文地址:https://www.cnblogs.com/geekHao/p/15298135.html
Copyright © 2011-2022 走看看