Skip to content

模型Model

BGP路径向量与路由策略

BGP path-vector policy · Border Gateway Protocol · BGP策略选择

用AS路径和本地偏好选择可导出的路由,区分路径排环、IP下一跳可达与全网收敛,并构造没有稳定选择的三节点策略例。

两个出口都能到同一前缀时,一家网络可能优先选自己的客户或约定的出口,而不是AS数最少的路线。BGP交换可达前缀及路径属性,让每个自治系统按本地策略选择;这些选择组合起来,未必存在全网都不想再改变的状态。

形式陈述 ​

路径向量携带经过哪些自治系统 ​

自治系统(AS)是作为一个路由管理单位对外交换路径信息的网络集合。BGP的结果最终仍要落到IP前缀转发:某个前缀采用哪个可解析的IP下一跳。AS路径列出管理域的经过顺序,不是逐台路由器的IP转发轨迹。

教学模型令每个AS只有一台边界节点,只研究普通eBGP、线性AS_SEQUENCE路径,不含AS_SET、联盟、iBGP传播或多路径。邻居对每个前缀通告一条当前选择,或撤回此前通告。接收者保存各邻居最新的候选,检查AS_PATH中是否含自身AS;含自身的候选被排除。

每个候选还需通过导入策略,且NEXT_HOP能解析到可用的本地转发路径。本文用以下简化选择顺序:本地偏好值越高越好;相同则AS路径越短越好;再相同按固定邻居ID。最高偏好胜过路径长度,不能先选最短再考虑偏好。这是教学子集,不是RFC4271完整的决策过程。

选择改变后,根据导出策略决定向哪些邻居通告;向外部AS发布所选路径时在前面加入自身AS。LOCAL_PREF代表本AS内部的偏好;普通eBGP通告不把这个值作为要求邻居遵守的全局评分。

稳定要求每个选择互相支持 ​

给定所有邻居目前通告的路径,节点把自己接在允许的邻居路径前面,形成当前可用候选,再取本地最优。稳定路径赋值要求每个节点都已经选中了由这同一份全网赋值支持的最优候选。直接连接目的的固定路径也可作为候选。

一条旧通告可能记录了邻居先前的选择。收到后选出的路径可以合法且没有重复AS,但当邻居已经改变,它就未必由当前全网选择支持。可靠有序的会话传输并不让不同会话上的更新同时生效。

直觉

更长的路径也可能更符合本地目标 ​

路径长度能表达经过多少个AS,却不直接表示费用、带宽、拥塞或行政偏好。本地策略先筛选哪些路线可以使用,再在允许集合中排序。不同AS排序不同,是模型的正常组成部分,不能假设大家都在最小化同一个数字。

AS路径中的自身检查能避免接受一条已经写明会回到自己的路径。它不证明所有在途通告组成一个一致快照,也不保证全网策略有固定点。要讨论收敛,需要检查选择之间的依赖,而不只检查某一条列表有没有重复元素。

例子与边界

三个AS比两个AS更优 ​

AS65010收到到203.0.113.0/24的两个候选。来自65020的路径为[65020,65000],本地赋偏好100;来自65030的路径为[65030,65040,65000],本地赋偏好200。假定两条NEXT_HOP都可解析且通过导入过滤。

65010选择来自65030的长度3路径。向允许的其他外部邻居导出时,路径成为[65010,65030,65040,65000]。邻居可以按自己的政策为它赋不同偏好;65010的200不是沿途统一累加的成本。

若另一个候选为[65020,65010,65000],包含65010自身,就被本模型排除。若最优候选的NEXT_HOP根本无法解析,它也不具备安装资格;AS列表能走通,不等于本地已经知道怎样把IP包交到列出的第一站。

三份各自明确的策略,可能没有共同答案 ​

另开一个四节点模型:0是始终提供目的前缀的起源,1、2、3各自直接连0,也两两互连。只允许下列两条非空路径,左边优于右边;其他路径全部被策略过滤:

节点 更偏好的间接路径I 直接路径D
1 [1,2,0] [1,0]
2 [2,3,0] [2,0]
3 [3,1,0] [3,0]

直接路径一直存在。节点1只有在2当前选直接路径时,才能从2的通告构成允许的[1,2,0];若2选[2,3,0],拼成的[1,2,3,0]不在1的允许集合中,1便选直接路径。对其他两点同理。

令 xi=1 表示节点 i 选间接路径,0表示直接路径。稳定就要求

x1=1−x2,x2=1−x3,x3=1−x1.

代入前两式得 x1=x3,再结合第三式得 x1=1−x1,二值变量无解。直接路径始终可用且优于空路径,所以增加“无路由”状态也不能补出稳定赋值。这是据稳定路径论文中坏例的循环偏好原理作的教学重述:直接路径与更受偏好的邻接路径互相制约。本页重编号并简化允许路径,再自编事件表;它不是对任意实际BGP网络的断言。

一条公平执行会重复同一状态 ​

采用逐节点更新模型:每次所选节点读到邻居目前选择,完成重算并让邻居得到新通告,再开始下一事件。状态按节点1、2、3写为D或I。从DDD开始更新1,得到IDD。之后:

下一更新者 更新后的状态
2 IID
1 DID
3 DII
2 DDI
1 IDI
3 IDD

最后回到IDD,可以重复六事件周期。每轮三个节点都被更新两次,没有靠永远饿死某个节点来制造不收敛;更新也可以由可靠FIFO会话逐次交付实现。表中所有节点选择的AS路径都没有重复,但依赖邻居直接路线的条件不断改变。

本例没有稳定解,因此仅调整发送时机不能创造一个符合所有既定策略的固定点。其他策略系统可能有稳定解却在某些执行中振荡,那需要另作收敛分析,不能从本例一并推出。

推论与应用

分清三种可达性主张 ​

“收到一个前缀通告”表示邻居提供了候选;“本地已安装”还要求导入条件与下一跳解析;“全网已经稳定”又要求各处选择彼此支持且不再变化。AS路径排环只承担其中一部分检查,不构成路径真实性或业务交付的证明。

读一段BGP轨迹时,应同时列候选、过滤理由、偏好、选择、导出和撤回。只保留最后一条最佳路径,会看不出候选为什么突然消失;只看AS长度,则会误判上例偏好200的合法选择。复杂的实际策略需要更强的约束或专门验证,单独的“每台设备都选择了本地最优”不足以保证收敛。

从一帧到收敛中的路由表练习把MAC位置、邻居地址、桥端口角色、距离估计、LSDB版本和AS路径放在各自正确的表里,要求逐次复算更新造成的转发结果。

参考资料
  • Yakov Rekhter、Tony Li、Susan Hares,2006,RFC4271:A Border Gateway Protocol 4,§5.1.2 AS_PATH,§5.1.5 LOCAL_PREF,§9.1.1本地偏好,§9.1.2下一跳解析、AS环检查及选择。本文简化排序不替代完整决策规则
  • Timothy G. Griffin、F. Bruce Shepherd、Gordon Wilfong,The Stable Paths Problem and Interdomain Routing,IEEE/ACM Transactions on Networking 10(2),2002,pp.232–243,原论文,§III(pp.234–235)的稳定路径定义与Fig.2(d) BAD GADGET坏例、§IV(p.236,Fig.6)简单路径向量协议及振荡轨迹:允许路径、局部排序与稳定赋值的区分;本文按坏例的循环偏好原理重述,使用自编编号、布尔检验与事件表
关系图谱3 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组