边界网关协议(BGP)首先是一种自学习的拓扑维护协议。其目标是维护一组转发表,这些表代表通往每个地址目的地的 “最佳” 路径。
在此上下文中,“最佳” 指的是一个特定属性,即如果没有任何其他本地策略设置,BGP 选择的每条路径都代表一条经过最少数量的自治系统(AS)网络到达目的地的路径。
BGP 不会做的是选择最快的路径、可用容量最大的路径、稳定性最高的路径,或者对每个网络运营商来说财务成本最低的路径。BGP 所做的只是根据 AS 路径长度选择它认为最短的路径。
网络运营商如何改变 BGP 路由通告以产生不同的结果呢?一种方法是通过在不太优选的情况下使 AS 路径变长,有选择地操控不太优选路径上的路由。
下图展示了一个简单的拓扑结构,其中自治系统 E 从 C 和 F 获得多重归属服务。B 通常会更倾向于通过 C 的路径向 A 发送流量,因为这对 B 来说代表着更短的 AS 路径。
如果自治系统E在向自治系统C通告其路由时,在其自身自治系统编号前再额外添加两个实例,那么自治系统B将会看到不同的情况,即通过自治系统D的自治系统路径(AS路径)代表更短的路径(下图)。通过使用选择性前置(prepending),即使自治系统B并非自治系统E的相邻邻居,自治系统E也能够改变自治系统B的路由决策。
结果是,来自自治系统A和自治系统B的流量将通过自治系统D和自治系统F到达自治系统E,而非通过自治系统C。通过这种方式,前置实现了一种远程操作,即非相邻自治系统做出的路由决策能够受到选择性自治系统路径前置的影响。