先看看在哪些场合会用到路由双向重分布linux
场景一:公司里有2个技术主管,分别管理总部和分部,水平差很少,主管A认为我这边分部路由器性能比较差,用RIP协议已经足够使用了。而总部的主管认为OSPF比较好,非要用OSPF。因为意见上的分歧致使分部使用了RIP而总部使用了OSPF,这里就须要用到路由双向重分布来解决一个公司使用了2种不一样的路由协议的问题redis
场景二:对于规模比较大的公司,收购了另一家公司,因为原来公司使用的是OSPF协议,而被收购的公司使用的是EIGRP协议,为了防止从新部署网络而致使网络网络中断,这就致使了整合2个公司之间的网络就须要用到路由的双向重分布数据库
场景三:这就比较偏一点了,可能因为业务上的缘由,公司在一些UNIX或者linux上跑了RIP的协议,为了对接公司其它的网络而进行路由重发布(这就不是很常见了)网络
路由重发布有4种:负载均衡
单点双向重发布ide
单点单向重发布工具
多点单向重发布性能
多点多向重发布学习
此篇博文针对多点双向重发布产生的一些问题进行分析和解决方案优化
首先搭建整个所须要的环境(配置接口地址,启用路由这些民工级别的配置为了避免浪费版面就不贴出来了,)
在R1上对RIP和OSPF进行双向重分布
R1(config)#router rip
R1(config-router)#redistribute ospf 1 metric 1 #注意在RIP和EIGRP这些距离矢量型的路由协议中重发布其它路由协议时必定要加上metric,不加的话默认是无穷大,重分布到RIP中要注意不能大于15,由于RIP最大跳数是16
R1(config)#router ospf 1
R1(config-router)#redistribute rip subnets
在R3上也是如此
R3(config)#router rip
R3(config-router)#redistribute ospf 1 metric 1
R3(config)#router ospf 1
R3(config-router)#redistribute rip subnets
进行重发布后查看下每一个路由器的路由表
R1的路由表
R2的路由表
R3的路由表
R4的路由表
经过对比发现如下几个问题
问题1:在R1上,对于23.0.0.0/24网段应该是RIP内部的路由,这里却以OSPF的外部路由形式学习到了。在R3上也有问题1存在,2.2.2.0/24和12.0.0.0/24本也应该是经过RIP学习到的
问题2:在R4上,去往2.2.2.0/24网段的应该是有2个吓一跳出口的,经过R1和R3进行负载均衡的这里只学习到下一跳是124.0.0.1,经过R1走的一条路由
在这里,分析下这2个问题出现的缘由
咱们知道RIP的管理距离是120,OSPF的管理距离是110,因此相对来讲,RIP的管理距离要比OSPF的要高,路由器会优先选择管理距离比较低的那一个。
而这里出现路由条目混乱的缘由正式因为这个管理距离产生的。
咱们分析下路由通告的走向:
首先,在配置路由重发布以前
R1经过RIP学习到了2.2.2.0/24,12.0.0.0/24,23.0.0.0/24这三条路由,在R3上一样经过RIP学到了这3条路由
而后配置了路由重分布,事情就变得有点不同了。。。。
先分析下R3上的问题
我先是在R1上双向重发布了RIP和OSPF的路由。这样一来,R1就将上述3条路由经过OSPF type2,也就是在路由表上看到的OE2从F0/0通告了出去,而后R3和R4接收到了这条路由信息(OSPF中应该说是同步了数据库。。。这里为了形象点就这么说吧。。。),而后R3就开始犯傻了,由于上述3条路由它既从RIP中学习到,又从OSPF中学习到,而后一对比管理距离,发现OSPF比RIP的要小,因而就选择了经过OSPF学到的那一条,抛弃了RIP。。。。
R1上也是一样的道理
再分析下R4上的负载均衡的问题,罪魁祸首其实仍是和R1,R2一样的
先看下2.2.2.0/24这条路由,在OSPF中,因为我是先在R1上作的双向重发布。因而这条路由是在R1上经过OSPF中通告了出去,R4天然也学习到了这条路由。而在R3上也学习到这条路由后,经过对比管理距离,将RIP中学习到的2.2.2.0/24给抛弃了,因而R3上把这条路由通告出去是已R1上学习到的通告出去的,这条路由的下一跳是R1,因此R4只收到了下一跳是R1的路由。
可能说的有点乱,也能够这么理解,R3本身认为去往2.2.2.0/24的路由下一跳是R1,那么,OSPF数据库同步机制,R4上对于这条路由的下一跳也应该是R1
这样的路由重分布致使了路由的混乱和环路,咱们要经过路由的修剪来对网络进行优化和改善
解决方案:
1:使用发布列表,列表中要写每条须要过滤的路由,比较麻烦
针对上述的环境,我这里经过发布列表的方法来实现路由的修剪
首先先定义访问控制列表,将中RIP的3条路由抓取出来
R1(config)#ip access-list standard DenyFromO2R #在作访问控制列表的时候尽可能使用基于命名的访问控制列表,在ACL多的时候,用名字比较好区分,这里这个名字意识是阻止从OSPF到RIP的条目
R1(config-std-nacl)#deny 12.0.0.0 0.0.0.255
R1(config-std-nacl)#deny 23.0.0.0 0.0.0.255
R1(config-std-nacl)#deny 2.2.2.0 0.0.0.255
R1(config-std-nacl)#permit any
而后进入到OSPF中
R1(config)#router rip
R1(config-router)#distribute-list DenyFromO2R in fastEthernet 0/0 #上述中的缘由在这里,这条命令定义了在OSPF下重发布修剪的规则,将ACL定义的3条路由阻止从OSPF重发布出去。这里要注意的是:在OSPF中使用发布列表的话,是不容许使用OUT,只能使用in。
在R3中一样作好这样的配置
R3(config)#ip access-list standard DenyFromO2R
R3(config-std-nacl)#deny 12.0.0.0 0.0.0.255
R3(config-std-nacl)#deny 23.0.0.0 0.0.0.255
R3(config-std-nacl)#deny 2.2.2.0 0.0.0.255
R3(config-std-nacl)#permit any
R3(config)#router rip
R3(config-router)#distribute-list DenyFromR2O in fastEthernet 0/0
OK
再来看看路由表的状况
R1的路由表
R2的路由表
R3的路由表
R4的路由表
能够看到,如今的路由是正常了,并且R1去往124.0.0.0/24的路由和R4去往2.2.2.0/24的路由也实现了负载均衡
2:使用管理距离来解决
咱们能够看到,以前之因此会产生路由的混乱,是由于经过RIP学到的路由在重发布进OSPF中后,OSPF又从新发布进了RIP,而在R1和R3上由2种不一样的协议学到了相同的路由,选择了那个管理距离小的(即OSPF)的路由。
解决方法是,将从RIP重发布到OSPF的路由,即OSPF的外部路由的管理距离设置为比RIP大一点
首先来看下经常使用几个路由协议的管理距离
EIGRP:90 EIGRP外部路由:170
RIP:120
OSPF内部和外部都是110
咱们先定义好OSPF的外部路由(经过ACL),在OSPF中将这部分的外部路由的管理距离配置为121
首先先定义OSPF的外部路由。
R1(config)#ip access-list standard FromR3 #在R1上定义从R3上学到的OSPF外部路由
R1(config-std-nacl)#permit 12.0.0.0 0.0.0.255
R1(config-std-nacl)#permit 23.0.0.0 0.0.0.255
R1(config-std-nacl)#permit 2.2.2.0 0.0.0.255
R3(config)#ip access-list standard FromR1 #在R3上定义从R1上学习到的OSPF外部路由
R3(config-std-nacl)#permit 12.0.0.0 0.0.0.255
R3(config-std-nacl)#permit 23.0.0.0 0.0.0.255
R3(config-std-nacl)#permit 2.2.2.0 0.0.0.255
R1(config)#router ospf 1
R1(config-router)#distance 121 3.3.3.3 0.0.0.0 FromR3 #这条的意思是:从Router-id为3.3.3.3学习到的路由中,符合列表中的路由的管理距离设置为121
R3(config)#router ospf 1
R3(config-router)#distance 121 1.1.1.1 0.0.0.0 FromR1
查看下R3的路由表
这里显示2.2.2.0/24和12.0.0.0/24的路由都是从RIP中学习到的了
再查看下OSPF的外部路由数据库
发现数据库里仍是含有2.2.2.0/24和12.0.0.0/24的数据信息,可是因为已经将这些路由的管理距离设置的比RIP还要大了,因此在路由表里选择了RIP协议
R1也是一样的
而在R4中,查看下路由表
能够看到12,23,2这3个网段的完整路由
这里列举了2中解决方案,还有诸如使用route-map之类的工具能够能够在路由重发布的时候对路由条目进行修剪,只要知道整个路由传递的原理和机制,这些方法也只是你所选择的工具而已。