我听说网络工程师倾向于避免策略路由。例如,我正在考虑源地址相关路由。策略路由是不好的做法吗?如果是这样,为什么?
策略路由不好吗?
通常,路由器仅根据目的地址转发数据包。这显然是非常简单和高效的。
基于策略的路由意味着路由器现在正在查看其他因素来确定如何转发每个数据包。这些其他因素可能包括源地址、协议或其他可以从标头或有效载荷中收集到的东西。
基于此类策略路由流量的最明显缺点是路由器现在必须检查所有数据包以找到匹配项。这给 CPU 和可能的 TCAM 带来了以前不存在的负载。在大多数硬件上添加少量策略路由应该没问题,但添加的越多,CPU 的负载总是越大。
如果我有选择,我会避免策略路由的第二个原因是它使管理有点棘手。根据我的经验,在实现这样的东西时,很容易破坏某些东西,而想出所有可能的场景来测试有些困难。当需要对连接问题进行故障排除时,您现在可以考虑这些细粒度的策略路由,而不是传统的目标地址路由。
策略路由(基于源地址、协议等)是某些场景所需的方法。与许多其他技术一样,最好避免,但有时也不能没有。如果您忘记了 PBR,它可能会使您的网络严重复杂化,并且您会自己站稳脚跟。它的好坏取决于它的具体用途。
请注意,源路由通常意味着不同的东西:让源主机确定路由路径(而不是路径中的路由器)的大部分已过时的IP 选项。
IP 和数据包交换的原始前提是路由是动态的,这意味着路径可以根据条件的变化而变化。每一端都不需要知道或关心流量如何到达另一端。例如,如果您与另一个城市的另一台机器连接,并且发生了一些灾难(光纤切断、飓风、龙卷风、火灾、炸弹等),IP 和路由的设计方式将自动重新路由流量,几乎不会无中断或丢包。
如果您专门配置路由,无论是 PBR 还是源路由,您都会完全破坏 IP 路由和数据包交换的动态特性。例如,如果您定义了一类流量(IP 地址、传输协议等),并将其设置为仅在特定方向上发送该流量,则如果该路径中存在问题,则无法动态重新路由到不同的路径,然后您将失去该流量。
在某些情况下,您必须使用 PBR,但在配置之前需要很好地理解它,因为您失去了灵活性。此外,源路由实际上已被弃用,因为让发送方确定路径几乎总是失败,并且作为网络工程师,您需要解决一些您几乎没有信息或控制权的问题。
关键是让流量自然地通过最佳路径并自动故障转移到下一个最佳路径是 IP 路由的设计方式,对该范式的任何更改都可能导致难以发现的问题、次优路由等。
前面的回答都是对的,不过既然是网络工程的站点,那就从工程的角度再多说一个吧:
您将在网络上花费的大部分精力将用于操作和维护它:改进、扩展、故障排除、修复等。在网络的整个生命周期中,这种努力比设计或构建它所花费的时间要大得多。
鉴于这一事实,设计网络以使维护和故障排除尽可能容易是有意义的。为此,您使用最简单的技术来完成工作。复杂或“聪明”的设计很难维护。当出现故障时,需要很长时间才能弄清楚它“应该如何工作”,而变化可能会以意想不到的方式破坏事情。这个想法可以概括为:“简单胜于复杂”。
PBR 比简单的路由更复杂(它通过访问列表、路由映射等高度定制)并且更难理解或修改。出于这个原因,如果您不需要,您宁愿不使用它。
底线是,没有“好”或“坏”技术之类的东西。如果您需要 PBR 来完成工作,那么使用它是正确的。知道何时使用它,或何时找到解决问题的更简单的方法是工程的全部意义所在。