如图所示拓扑图,R1、R2、R4运行了RIP路由协议,R2、R3、R4运行了OSPF路由协议,R2的回环路由通告到RIP路由协议之中,R4的回环路由通告到OSPF路由协议之中,IP地址的规划为:
R1路由器的loopback 0口R1(config-if)#ip address 1.1.1.1 255.255.255.0
R1路由器的serial1/1口R1(config-if)#ip address 12.1.1.1 255.255.255.0
R1路由器的serial1/2口R1(config-if)#ip address 14.1.1.1 255.255.255.0
R2路由器的loopback 0口R2(config-if)#ip address 2.2.2.2 255.255.255.0
R2路由器的serial1/0口R2(config-if)#ip address 12.1.1.2 255.255.255.0
R2路由器的serial1/1口R2(config-if)#ip address 23.1.1.1 255.255.255.0
R3路由器的loopback 0口R3(config-if)#ip address 3.3.3.3 255.255.255.0
R3路由器的serial1/0口R3(config-if)#ip address 23.1.1.2 255.255.255.0
R3路由器的fastEthernet0/0口R3(config-if)#ip address 34.1.1.1 255.255.255.0
R4路由器的loopback 0口R4(config-if)#ip address 4.4.4.4 255.255.255.0
R4路由器的fastEthernet0/0口R4(config-if)#ip address 34.1.1.2 255.255.255.0
R4路由器的serial1/2口R4(config-if)#ip address 14.1.1.4 255.255.255.0
现在R2、R4路由器上进行双点双向重发布的操作:
R2(config)#router ospf 100
R2(config-router)#redistribute rip subnets
R2(config)#router rip
R2(config-router)#redistribute ospf 100 metric 1
R4(config)#router rip
R4(config-router)#redistribute ospf 100 metric 1
R4(config)#router ospf 100
R4(config-router)#redistribute rip subnets
重发布完成之后,首先查看R2、R4路由器上的路由条目是否正确:
如图所示,我们可以发现R2路由器去往14.1.1.0网段的路由应当是RIP路由协议传递过来的路由加表的,而进行双点双向重发布后选择了OSPF路由协议传递过来的路由。
如图所示,我们可以发现R4路由器没有一条路由是通过RIP路由协议学习到的,去往1.1.1.0、2.2.2.0、12.1.1.0网段的路由应当是RIP路由协议传递过来的路由加表的,而进行双点双向重发布后选择了OSPF路由协议传递过来的路由。
紧接着,我们来查看一下R1、R3路由器上的路由表是否正确:
如图所示,我们可以发现R1路由器去往所有网段的路由都是负载均衡的,根据拓扑图我们很快可以发现问题,R1路由器去往3.3.3.0网段负载均衡是应当的;而去往2.2.2.0和23.1.1.0网段应该走的是12.1.1.2这个下一跳,去往4.4.4.0和34.1.1.0网段应当走的是14.1.1.4这个下一跳而不是负载均衡。
如图所示,我们可以发现R3路由器上没有一条负载均衡路由的存在,R3去往1.1.1.0网段的路由应当是负载均衡的。
综上分析得,R1、R2、R3、R4都路由表都不正确,这是因为进行了双点双向重发布之后出现了路由回馈以及次优路径等问题。
解决方案分析:
1.做路由过滤,例如在R4路由器上OSPF向RIP进行重发布时进行路由过滤,这样可以解决路由的回馈问题,但是R4上还是收到了来自R2传递过来的OE2路由,R4路由器上的路由条目还是不正确的;在R3与R4之间做过滤,可以利用Distribute-list,只能针对R4路由器在in方向上进行过滤,那么R3传递过来的OE2路由R4学但是不会加入到路由表之中的。
做路由过滤的缺点:缺少冗余路径,举个例子来说,如拓扑图所示,假设R1、R4之间的线路出现了故障,那么因为R4上进行了过滤,R3传递给R4路由器R1的路由无法加表,那么R4路由器也就无法到达R1路由器上存在的网段。
2.在R4路由器上调整R2路由器传过来的OE2路由的AD值,将值调大到大于RIP的AD值,那么传递过来的路由R4会学习,但不会加表,因为AD值的原因R4会选择RIP传递过来的路由,R4路由表正确,解决R4上的路由回馈问题;R2上也要将R4传递过来的OE2路由的AD值调整来解决R2上的路由回馈问题。
R4(config)#router ospf 100
R4(config-router)#distance 121 ?
A.B.C.D IP Source address //这个代表的是源Route-id
R4(config-router)#distance 121 2.2.2.2 0.0.0.0 ? //后边可以根据需求挂上ACL
<1-99> IP Standard access list number
<1300-1999> IP Standard expanded access list number
WORD Standard access-list name
R4(config)#access-list 1 permit 1.1.1.0
R4(config)#access-list 1 permit 12.1.1.0
R4(config)#access-list 1 permit 2.2.2.0
R4(config)#router ospf 100
R4(config-router)#distance 121 2.2.2.2 0.0.0.0 1
如图所示,我们可以发现,1.1.1.0、12.1.1.0网段均已争取的选择RIP传递过来的路由加表,但是2.2.2.0网段却还是已OE2形式加表的,这就说明了R1并没有将2.2.2.0网段传递给R4路由器,否则AD值120小于121,应当是RIP传递的路由加表,这是因为R2传递给R1路由器的度量值是1而R2路由器重发布后2.2.2.0网段从R4路由器重发布进入RIP路由协议之中的种子度量值也是1,那么R1路由器到达2.2.2.0网段就负载均衡了,所以R1不会将2.2.2.0网段传递给R4路由器。解决方案:1.在R4路由器上针对R2路由器传递过来的2.2.2.0网段的路由在重发布过程中的种子度量值改大;2.R4和R1之间做Distribute-list针对2.2.2.0网段进行过滤;3.R4和R1之间利用Offset-list(偏移列表)针对2.2.2.0网段增加度量。
R1(config)#access-list 1 permit 2.2.2.0
R1(config-router)#offset-list 1 in 2 serial 1/2
如上图所示,R4路由器的路由表正常,但是现在你查看R2的路由表会发现R2的路由表还是存在着很大的问题的,因为R4上将RIP的路由重发布到了OSPF之中。
如图所示,R2路由器上的两条OE2路由,应当是走RIP的,却选择来R4重发布进入的OE2路由。解决方案:R2路由器上修改针对R4路由器重发布进入的1.1.1.0和14.1.1.0网段的AD值,得到如下图所示的结果,R2路由器路由表正确。
R2(config)#access-list 1 permit 1.1.1.0
R2(config)#access-list 1 permit 14.1.1.0
R2(config)#router ospf 100
R2(config-router)#distance 121 4.4.4.4 0.0.0.0 1
至此,R2、R4两台重发布路由器的路由表正确,路由回馈问题解决。
3.通过路径优选调整次优路径问题,距离矢量型路由协议可以通过偏移列表修改metric、重发布过程中利用Distribute-list或Route-map实施过滤;
以R1路由器为例:如图所示,4.4.4.0与34.1.1.0网段应当是通过14.1.1.4为下一跳优选的,我们在R1、R2之间通过Offset-list来达到增大R2传递给R1的这两个网段的Metric值以达到目的。
R2(config)#access-list 2 permit 4.4.4.0
R2(config)#access-list 2 permit 34.1.1.0
R2(config)#router rip
R2(config-router)#offset-list 2 out 3 s
R2(config-router)#offset-list 2 out 3
我们可以发现,3.3.3.0网段负载均衡是应该的,而现在唯独23.1.1.0网段负载均衡是不正确的,所以我们应当在R1、R4之间将23.1.1.0网段的度量值增大或者过滤,这里我们利用分发列表实施过滤,结果如下图所示,R1的路由表正确。
R4(config)#ip prefix-list a1 deny 23.1.1.0/24
R4(config)#ip prefix-list a1 permit 0.0.0.0/0 le 32
R4(config)#router rip
R4(config-router)#distribute-list prefix a1 out ospf 100
最终我们来处理R3的路由表,如上图所示,R3的所有OSPF路由都是以34.1.1.2为下一跳加表的,这是不合理的,1.1.1.0网段以R4为下一跳加表,这是因为R4与R3之间是以太网线路,12.1.1.0和2.2.2.0网段应当是以23.1.1.2为下一跳进行加表的。
链路状态型路由协议解决次优路径应当是通过:1.把R2重发布给R3的针对12.1.1.0和2.2.2.0网段的种子度量值降低;2.把R4重发布给R3的针对12.1.1.0和2.2.2.0网段的种子度量值增大;3.修改OSPF重发布进入的路由类型为OE1,OE1永远优于OE2.
这里我们采用两种方式来进行验证(2.2.2.0网段修改种子度量,12.1.1.0网段修改重发布进入的路由类型):
![R2(config)#ip prefix-list c1 permit 2.2.2.0/24
R2(config)#ip prefix-list c2 permit 12.1.1.0/24
R2(config)#route-map c1 permit 10
R2(config-route-map)#match ip address prefix-list c1
R2(config-route-map)#set metric-type type-1
R2(config)#route-map c1 permit 20
R2(config-route-map)#match ip address prefix-list c2
R2(config-route-map)#set metric 19
R2(config)#route-map c1 permit 30
R2(config)#router ospf 100
R2(config-router)#redistribute rip subnets route-map c1](https://img-blog.csdnimg.cn/20190116011101484.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1poYW5nUGVuZ0ZlaVRvV2lubmVy,size_16,color_FFFFFF,t_70)
至此,次优路径以及路由回馈问题解决完毕,整个拓扑图的选路正确。
总结:
1.做route-map一定要加空语句,否则会拒绝所有。
2.OSPF路由控制,修改相同方式路由的AD值是不可行的,修改AD值,要么修改router-id大的生效,要么修改router-id小的生效(只能选一个,不同的IOS特性结果也不同),但是若生效则同时生效,所以不能修改AD控制OSPF的选路。
3.OE2选路注意cost值,OE2的种子度量值是20,沿途累加的不会显示在路由表之中,但是选路的时候它会给算上的,所以比较坑,大家应当着重注意,并且种子度量值是优于沿途累计度量值的。