自治系统路径前置(AS Path prepending)可能是流量工程工具库中的最后手段,因为其他技术的运作方式更具可预测性,而路径前置是一种更为近似的方法。

向选定的BGP(边界网关协议)邻居通告更具体的路由信息会产生更可预测的结果。在BGP转发过程中,更具体的路由总是优先于任何覆盖聚合前缀。一种常见的方法是,作为备用方案,向所有提供商通告覆盖聚合地址前缀,然后向一部分提供商通告更具体的地址前缀,以便传入流量符合本地确定的策略(如传入流量的负载均衡、性能优化、成本最小化等)。在过去二十年中,更具体的路由在IPv4路由表中占据了约52%至55%,而在IPv6中,更具体路由的占比目前已上升至47%。

一种不太常见的技术是自治系统路径中毒(AS Path poisoning)。在这种情况下,自治系统不是将本地自治系统号前置到已前置的自治系统路径中(或除了常规的前置操作之外),而是添加它不想学习该路由的网络的自治系统号。下图中的示例,如果网络E不想让B知道通过C到达E的路径,它不会前置 ,而是会前置 。网络C仍会学习并使用这样的路由,但当它将带有路径 的路由传递给网络B时,B会将该路由视为环路而拒绝。自治系统路径中毒是一种强硬的方法。同样以下图中的配置为例,在常规的前置情况下,如果与网络D或F的连接中断,通过B前置的路径将提供一条备用路径。然而,对于中毒路径,没有备用方案,因为B永远不会知道通过C的替代较不优选的路由。

image.png

BGP团体(BGP Communities)为BGP中的流量工程提供了一种更好的方法。提供商发布一组团体值和相关的路由处理操作。如果客户在通告给提供商的路由中添加特定的团体值,提供商网络内就会触发相关操作。从NTT的服务产品中获取的当前团体值和操作示例可在https://www.us.ntt.net/support/policy/routing.cfm查看。团体不一定具有传递性,并且只能在相邻的自治系统之间起作用。即便如此,与仅通过更具体的路由和自治系统路径操纵所能实现的相比,它们能够对流量提供更高的精度和更大程度的控制。

应该记住,BGP没有反馈回路。BGP不支持为了均匀负载网络并避免热点而尝试将流量分散到多个端到端路径上的负载均衡方法。在一些较大的内部路由域中,特别是在大型内容分发网络中,使用了将实时性能数据集成到流量流管理中的负载管理协议,但将这些动态功能和流管理算法引入域间路由领域,在管理和协议方面都是一个特别艰巨的挑战。我们现有的流量工程工具相当粗糙,自治系统路径前置也不例外。究竟前置多少才能达到预期效果,以及前置多少又会过度,基本上只能靠碰运气。

很难说路由管理员使用路径前置是因为观察到它能按预期工作,还是仅仅希望它能按预期工作!