摘要

  • BGP MED 是可选、非传递而且刻意较弱的度量;低值只在接收方留下的候选集合与本地策略中发挥作用。
  • 在 UPDATE 或 looking glass 中看到预期值,不代表相关路由器都选择了这个入口、写入了转发表,或让生产流量经过这里。
  • 入站结论需要联合回执:通告、导入策略、可比候选、最佳路径、转发状态,以及明确观察窗口内的流量测量。

数字降低,入口没变

设想一次维护窗口:网络在两个互联点中的一个降低 MED。路由收集器很快显示新值。变更单似乎可以关闭——属性已出现,数字更低,而且没有路由撤回。但接口计数器表明,大部分入站流量仍从另一个站点进入。

这并不证明 BGP 忽略了 MED。接收网络可能设置了不同的 LOCAL_PREF,选择了更短的 AS_PATH,在导入时统一改写 MED,只比较来自同一邻接 AS 的路由,或让不同路由器选择不同路径。观察到的 UPDATE 只证明某个说话者展示了某个属性;它没有证明完整的远端决策,更没有证明报文移动。

偏好输入不是远程命令

RFC 4271 把 MULTI_EXIT_DISC 定义为可选、非传递的四字节无符号度量,用来区分通往同一邻接 AS 的多个入口或出口。只有在其他因素相同时,较低值才应优先。这里每个限定都重要:属性并非必有;不得继续传给另一个邻接 AS;默认只在来自同一邻接 AS 的路由之间比较;更强的本地策略可能早已淘汰某条候选路由。

决定权属于接收方。RFC 4271 要求实现提供本地删除 MED 的机制,也允许在选路前改变收到的值。对端可以接受、替换或消除差异。发送方有权表达偏好,却不能因此获得对方网络的选路权。

缺少 MED 也必须写清规则。现行基础规范在规定的比较中把无 MED 路由视为最低可能值。RFC 4451 记录了历史规范与实现曾采用不同处理方式,因此许多运营者在入口统一重设 MED。只显示 50 与 100 的面板并不完整,还必须说明无 MED 路由和改写发生在哪里。

候选集合才是真正的分母

MED 只对走到这一比较步骤的路由有意义。低 MED 可能先输给 LOCAL_PREF、路径长度或其他策略。按基础规则,来自另一个邻接 AS 的路径不在同一次 MED 比较中。启用跨 AS 比较会改变这一前提,还可能把完全不同的度量空间混在一起。

RFC 4451 提醒,MED 的部署差异很大。它还说明路由反射器或联盟结构会暴露比较缺乏全序的问题,并可能导致持续震荡。因此,证据不能只是一张单路由截图,而应包括实际作出决定的路由器看到的完整候选、在更早步骤后仍存续的属性,以及各节点是否得到一致结果。

从最佳路径到真实报文

最佳路径记录比 UPDATE 更强,但仍不是流量回执。下一跳还要进入转发表;等价路径或按流散列可能分开负载;观察期间需求可能变化;撤回、会话重置或拓扑事件也可能与 MED 修改同时推动流量。

应保留推理链:通告证明发送内容,导入状态证明接受或改写内容,决策状态证明某台路由器的选择,FIB 证明实际安装,接口计数或流样本证明某个时间段内报文从哪里经过。前一项不能借用后一项的证明力。

RFC 4451 还给出时间边界。由 IGP 度量动态生成的 MED 会把内部变化扩散成 BGP 更新波动;会话重置也可能改变通告值并突然改变流量。重置之前、单个反射器上的观察不能永久代表全网。

来源