使用单个路由器重新分配路由意味着单个故障可能导致不同路由域中的主机无法连接到网络。重新分配的路由器可能只是发生故障,或者该路由器上的接口或链接可能发生故障。
为了避免单点故障,许多重新分配设计都要求至少两个路由器来执行重新分配,特别是在重新分配功能将永久保留的情况下。
本文研究了路由域之间存在多个重新分配点时发生的各种设计问题。许多设计使用多个重新分配点来实现冗余甚至负载共享。这种冗余会带来一些额外的复杂性。
本文介绍了处理设计问题的方法,包括度量标准,管理距离和路线标签(route-tag)的操作。
多个重新分发点问题
同一两个路由域之间存在两个或多个重新分配点会带来一些复杂性和警告。问题围绕一个概念,即一个域中的路由可以被公告到另一个域中,然后再回到原始路由域中。
下图显示了使用多个重新分配点时的问题之一。在这种情况下,箭头线表示从域2中的路由器到达也位于域2中的子网的最佳路由。但是,请注意,该路由实际上经过域1。
上图显示了从R2通过RD1到R1,再通过RD2返回路由域2的长路由。之所以会出现此长路由,是因为路由通告沿相反的方向流动:由RD2通告到路由域1,然后由RD1通告回到路由域2。
当子网X的两次重新分配的路由以较低的度量值重新分配回原始域时,就会出现问题。这样,两次重新分配的路由比仅在内部向该路由域发布的路由具有更好的度量。
防止使用更高度量标准的路由循环
防止域循环问题的一种简单方法是在重新分配路由时有目的地分配较高的度量值。例如,考虑下图所示的情况,左侧是RIP域,右侧是OSPF。在这种情况下,进行路由重新分配的两个路由器(RD1和RD2)在将路由重新分配到OSPF时分配OSPF度量标准,而将路由重新分配到RIP时分配度量标准值5。
首先,关注RIP域内的路由。如果正常的域内RIP路由从未超过跳数4,则此设计可防止域循环问题路由将数据包从RIP域发送到OSPF,然后再送回。然后,所有路由从RIP重新分配到OSPF,然后再回到RIP,指标至少应为5。
结果,环回RIP域的路由通告将始终比RIP域中的RIP通告具有更少的期望度量。
相同的概念适用于OSPF。对于完全在OSPF域内部的路由,如果最高开销为499,则重新分配度量值为500的外部路由可防止域环路。
例如,存在于OSPF域中的子网可以由RD1通告到RIP中,然后由RD2重新通告回到OSPF域中,但度量值应从500开始。同样,假设所有普通OSPF路由由于外部路由的成本低于500,因此未重新引入,从而解决了域循环问题。
请注意,OSPF实际上在不使用更高指标的情况下克服了域循环问题。OSPF总是喜欢在内部路由 E1线路和E1线路在 E2的路线,甚至考虑的指标之前。
防止具有管理距离的路由环路
每个路由器都将管理距离(AD)与它认为要添加到路由表中的每个路由相关联。当路由器从完全相同的前缀/长度看到来自不同来源的多个路由时,路由器考虑的第一项不是度量标准,而是AD。AD越低,路线越好。
每个路由源都有一个默认的AD。在某些情况下,给定的路由源对于该路由源内的不同类型的路由具有不同的默认值。例如,对于EIGRP内部路由(AD 90)和EIGRP外部路由(AD 170),EIGRP具有不同的AD值。下表列出了Cisco中的AD值。
阻止从EIGRP到OSPF再回到EIGRP的环路
在EIGRP和OSPF之间重新分配时,EIGRP的默认AD设置可解决域循环问题。首先,考虑具有两个重新分配点(路由器RD1和RD2)的EIGRP和OSPF域,如下图所示。该图显示了EIGRP域中存在的子网X的路由通告的一般概念。
注意:为了减少混乱,该图仅显示了影响路由器RD2逻辑的路由公告;两个重新分发路由器上都存在相同的问题。
路由器RD2在左侧听到有关子网X的路由,作为内部EIGRP路由(默认为AD 90)。RD2还听到该子网作为右侧的外部OSPF路由(默认为AD 110)。结果,RD2将做一些重要的事情:
- 由于AD较低,RD2将内部EIGRP路由视为最佳路由,并将该路由放置在其自己的IP路由表中。
- RD2不会将子网X的路由从OSPF重新分配回EIGRP,因为RD2没有子网X的OSPF路由。
第二点特别重要,但很容易错过。请记住,路由器使用IP路由表作为路由重新分配的基础。RD1和RD2都在两个域之间的两个方向上重新分配路由。
但是,路由必须先存在于路由表中,然后才能重新分配。因为RD2的子网X路由将列出其EIGRP路由,所以RD2的从OSPF重新分配到EIGRP的路由将不会重新分配子网X的路由。由于RD2不会将子网X的路由从OSPF通告回EIGRP,因此可以防止域循环。
阻止从OSPF到EIGRP再回到OSPF的环路
相反的情况(更有趣的可能是域循环情况),即从OSPF提取的路由,先通告到EIGRP,再再通告回到OSPF。但是,默认的EIGRP AD设置仍然可以解决域循环问题。
下图显示了一个与上图相似的示例,但是这次在OSPF域中使用了子网Y。和以前一样,该图的重点是到达路由器RD2的路由公告,为避免混乱,省略了其他详细信息。
在这种情况下,路由器RD2听到有关子网Y的路由,该路由为外部EIGRP路由(默认为AD 170)和内部OSPF路由(默认为AD 110)。结果,RD2选择OSPF内部路由作为最佳路由,并将其添加到RD2的路由表中。
由于RD2没有用于子网Y的EIGRP路由,因此RD2不会将子网Y的路由从EIGRP重新分配到OSPF,从而再次克服了域环路问题。
超过两个路由域的域循环问题
仅使用两个路由域,到目前为止看到的解决方案(设置更高的指标和AD值)可以处理域循环问题。但是,对于三个或更多路由域,设置指标和AD值并不总是可以解决域循环问题。
具体来说,当三个或更多个路由域依次连接时,可能会出现问题,如下图所示。在现实世界中可能存在这种情况,即大公司与小公司进行多次合并和收购(运行各种路由协议)。
图中注明的步骤如下:
- 路由器R9将网络172.20.0.0/16的路由从RIP域发布到EIGRP域,在该路由中,该路由被(默认)AD 170视为外部路由。
- 路由器RD1将此EIGRP外部路由重新分发到OSPF,在默认情况下,该路由被视为E2路由AD 110。
- 路由器RD2使用AD 110 E2路由(而不是AD 170 EIGRP外部路由)作为172.20.0.0/16的最佳路由。结果,RD2然后可以将该OSPF路由重新分配回EIGRP,作为外部路由。
- 路由器R4了解172.20.0.0/16的两条外部路由,并且这些路由基于AD(170)进行绑定。R4通过RD2可能有更好的EIGRP度量标准,具体取决于重新分配时使用的度量标准,如图所示,首选通过OSPF域的这条长路由。
这只是此类问题的一种示例情况,但是存在问题,因为显然更好的路由和更长的域循环路由都是外部路由。结果,两条竞争路线并列在AD上。在较早的情况下,只有两个路由域,不会发生此问题。 存在针对此类问题的几种解决方案。除了某些解决方案需要与来自各个路由域的前缀匹配的ACL或前缀列表之外,其他解决方案均不需要大量额外配置 。下一节将介绍如何通过使用路由标签来防止路由循环。
使用分发列表防止域循环
路由标签的用途远不止防止重新分配问题。路由标记是大多数路由协议可以分配给任何给定路由的无单位32位整数。例如,可以通过路由协议distributionlist或redistribute命令引用的路由图来分配它。
标签遵循路由公告并坚持重新分配过程。在路由信息泛洪期间的稍后某个时刻,其他路由器可以使用路由图将路由与给定的路由标签相匹配来做出决定。
在某些情况下,路由标签的想法会造成思维障碍,因为它具有默认值和目的。网络工程师选择路由标签的目的;目的尚未通过特定协议预先确定。创建路由协议的人为我们所有人提供了一个不错的,方便的地方,可以在每个路由中添加便笺。由我们决定注释的含义。
下图显示了路由标签的另一种常见用法,而不是用于解决域循环问题。在图中,使用EIGRP的一家大公司(图的中间)购买了两家较小的公司,都使用OSPF。
较大的公司希望将两个较小的公司连接到较大的网络,但它希望阻止两个较小的公司中的主机知道通往另一个较小的公司的路由。该图仅显示从左到右的路线广告,以保持路线整洁和易于掌握。
路由标签如何防止路由环路
根据上图,左侧的两个路由器分别将较小公司的路由重新分配到EIGRP。路由器将路由标记1应用于从OSPF域1发出的每条路由,并将标记2应用于从OSPF域2重新分发的路由。
实际数字并不重要,只要它们是唯一的即可。在右侧,路由器知道来自OSPF域1的路由具有路由标记1,并且仅应将这些路由重新分配到OSPF域1的另一部分。
因此,当重新分配到OSPF域1中时,路由映射将对路由标记(命令匹配标记1)进行比较,并仅允许这些路由。同样,当重新分配到OSPF域2中时,match tag 2命令将仅用于重新分配带有标签2的路由。要使用路由标签防止域循环问题,可以使用以下策略:
- 选择并设置一个标记值,该标记值用于标识从域X获取并发布到域Y的路由。
- 当以相反的方向重新分配(从域Y到域X)时,请匹配标签值并使用该标签过滤路由。
例如,考虑下图所示的情况,该情况显示了两个路由域之间的常规RD1和RD2,在这种情况下,右侧为EIGRP,左侧为OSPF。工程师计划使用路由标签11来表示“从EIGRP提取并重新分配到OSPF中的路由”。
该图显示了潜在环路的一个方向:从EIGRP到RD1,再到OSPF,再回到RD2,再回到EIGRP。但是,相同的概念也将适用于另一个方向。
第一步(在图中用圆圈1标记)是通常的重新分配,但是使用的路由映射使用标签11标记了从EIGRP重新分配到OSPF的所有路由。RD2使用OSPF学习这些路由。在步骤2,RD2尝试重新分配路由,但选择过滤标记值为11的所有路由。因此,从EIGRP获知的所有路由都不会重新发布回EIGRP。