双向多点路由重分布--如何防止路由环路以及次优路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双向多点路由重分布--如何防止路由环路以及次优路径相关的知识,希望对你有一定的参考价值。

拓扑图
技术分享图片

实验要求:

  1. R1上有一个环回口,1.1.1.0/24,通告在ISIS中。 R5上有一条引入的外部路由5.5.5.0/24.
  2. 在R2和R3上进行双向重分布
  3. 要求采用防环和防次优路径的措施,以保障在网络不出现环路和次优路径。

实验步骤:
分别在五台路由器上配置好IGP,并在R5上引入直连的5.5.5.0的路由,cost类型为2,metric值为5。 在R2 和 R3上进行重分布。

一、 解决环路问题:通过路由标记来完成。
现在查看2.2.2.0的路由表。R4上显示下一跳为R3,R3显示下一跳为R1,R1指向R2,R2指向R4,这样就产生了环路。为什么会产生环路:
站在R4的立场,首先它从R5学习到了ASE的路由,类型为E2,Cost为5,外部路由的优先级是150. 这条路由经过R2和R3会传递到ISIS区域,再从ISIS传递回到OSPF区域,从ISIS传递回来的路由,优先级150,类型为E2,Cost为1。所以它会优选从ISIS传递过来的5.5.5.0的路由。
怎么解决这个问题呢?有两个思路:

  1. 一个是使用route-policy匹配对应协议产生的路由,当OSPF重分发到ISIS时,只允许将始发为OSPF的路由发布到OSPF。当ISIS重分发到OSPF时,只允许将始发为ISIS的路由。
  2. 另一个方法是使用TAG,在R2和R3上进行重分发时,对路由做上TAG。具体做法:A. 在R2上将OSPF重分发到ISIS时,打上TAG10 B.在R3上将ISIS重分布到OSPF时,打上TAG15 ,并且拒绝TAG为10的流量回流。 C. 在R2上拒绝将TAG为15的流量重分发到ISIS中。 接着反向再来一圈TAG。 TAG的最终做为:在R2和R3上,将OSPF引入到ISIS时,拒绝TAG为15的流量;允许其它流量,并将流量打上TAG10. 将ISIS引入OSPF时,拒绝TAG为10的流量;允许其它流量 ,将将流量打上TAG15。 这样,为流量打上TAG就可以防止环路的产生了。
    
    ============================================================================
    R2和R3上的TAG配置:
    ospf 110 router-id 2.2.2.2 
    import-route isis 1 route-policy isistoospf     //在引入ISIS路由到OSPF中时调用Policy

route-policy isistoospf deny node 10
if-match tag 10 //将打上了TAG10的路由拒绝,不能重分布到OSPF中

route-policy isistoospf permit node 20
apply tag 15 //重分布到OSPF中的路由,打上TAG15

=============================================================================
isis 1
is-level level-2
cost-style wide // 使用Wide类型的度量值,才能识别TAG
network-entity 49.0123.0000.0000.2222.00
import-route ospf 110 route-policy ospftoisis

route-policy ospftoisis deny node 10 // 将OSPF重分布到ISIS时,拒绝TAG为15的路由
if-match tag 15

route-policy ospftoisis permit node 20
apply tag 10 //OSPF重分布到ISIS时,将路由打上TAG10

=============================================================================


在R2和R3上做了TAG以后,现在就没有环路了。 R3到5.5.5.0指向R1, R1指向R2,R2指向R4,R4指向R5. 现在没有环路了。
<R3>display ip routing-table 5.5.5.0
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        5.5.5.0/24  ISIS-L2 15   20          D   13.1.1.1        GigabitEthernet0/0/1

<R1>display ip routing-table 5.5.5.0
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        5.5.5.0/24  ISIS-L2 15   10          D   12.1.1.2        GigabitEthernet0/0/0

<R2>display ip routing-table 5.5.5.0
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        5.5.5.0/24  O_ASE   150  5           D   24.1.1.4        GigabitEthernet0/0/1

<R4>display ip routing-table 5.5.5.0
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        5.5.5.0/24  O_ASE   150  5           D   45.1.1.5        GigabitEthernet0/0/2

二、 这个时候,再来看看是否存在次优路由。还是5.5.5.0的路由。上面实验中,在R3上去往5.5.5.0的路由,下一跳指向R1,按照正常情况下来看,5.5.5.0的路由是R4传递过来的,下一跳要指向R4才是最优的。为什么R3上的5.5.5.0的路由指向了R1,同样还是因为从R1的ISIS协议传递过来的协议优先值要低。

下一跳 管理距离 Cost 优选

下一跳 管理距离 Cost   优选
R1          15          20    √
R4         150         5  

那我们怎么来解决次优路径的问题呢,其实也有两种办法:
1. 可以使用fileter-policy在入方向过滤路由,在R2和R3的协议进程下,使用fileter过滤从ISIS学习到的2.2.2.0的路由。
2. 可以针对这条路由修改其协议优先级的值大于从OSPF协议学习到的优先级的值。那么路由器会优选从协议优先级小的路由协议学习到的路由。需要在R2和R3上都完成操作。

=============================================================================
ip ip-prefix 55 index 10 permit 5.5.5.0 24 #

route-policy pref permit node 10
if-match ip-prefix 55
apply preference 188

isis 1
preference route-policy pref



改完了协议优先级的值以后,就解决了次优路径的问题。到此为止,问题得到解决。总结一下:
1. 多点双向重分布,可能产生环路问题,环路可以通过对路由打标记来实现路由过滤,这种方法可以解决环路问题。
2. 对于因为协议优先级而带来的次优路径问题,可以手动针对特定的路由修改优先级。
3. 对于因为Cost而导致的问题,也可以修改Cost。
4. 路由器选路,如果有多条路径,不同路由协议之间通过比较协议优先级,协议优先级值小的协议优先;对于从同种路由协议学习到的路由,比较Cost值,值小的优先
5. 对于ISIS路由协议,如果需识别TAG,它的cost样式需要为wide。

以上是关于双向多点路由重分布--如何防止路由环路以及次优路径的主要内容,如果未能解决你的问题,请参考以下文章

理解:对OSPF引入路由进行过滤以及如何实现对OSPF发布的路由进行过滤

路由重分发

双点双向重发布

OSPF基本概述及配置

3.22上

路由重分布的一些总结