“选出出口和IP下一跳后,ARP邻居解析再取得该接口上的目的MAC。表从哪里来则另看距离向量、链路状态和BGP路径向量与策略:它们分别展开旧估计回传、混合数据库版本和局部偏好不收敛的轨迹,不能…”
两个出口都能到同一前缀时,一家网络可能优先选自己的客户或约定的出口,而不是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便选直接路径。对其他两点同理。
令
代入前两式得
一条公平执行会重复同一状态
采用逐节点更新模型:每次所选节点读到邻居目前选择,完成重算并让邻居得到新通告,再开始下一事件。状态按节点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)简单路径向量协议及振荡轨迹:允许路径、局部排序与稳定赋值的区分;本文按坏例的循环偏好原理重述,使用自编编号、布尔检验与事件表