解决多点双向路由重发布产生的问题(路由修剪)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

先看看在哪些场合会用到路由双向重分布

 

场景一:公司里有2个技术主管,分别管理总部和分部,水平差不多,主管A认为我这边分部路由器性能比较差,用RIP协议已经足够使用了。而总部的主管认为OSPF比较好,非要用OSPF。由于意见上的分歧导致分部使用了RIP而总部使用了OSPF,这里就需要用到路由双向重分布来解决一个公司使用了2种不同的路由协议的问题

 

场景二:对于规模比较大的公司,收购了另外一家公司,由于原来公司使用的是OSPF协议,而被收购的公司使用的是EIGRP协议,为了防止重新部署网络而导致网络网络中断,这就导致了整合2个公司之间的网络就需要用到路由的双向重分布

 

场景三:这就比较偏一点了,可能由于业务上的原因,公司在一些UNIX或者linux上跑了RIP的协议,为了对接公司其它的网络而进行路由重发布(这就不是很常见了)

 

路由重发布有4种:

单点双向重发布

单点单向重发布

多点单向重发布

多点多向重发布

 

此篇博文针对多点双向重发布产生的一些问题进行分析和解决方案

 

 

首先搭建整个所需要的环境(配置接口地址,启用路由这些民工级别的配置为了不浪费版面就不贴出来了,)

 

在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的路由表

L3JSBR){{9YS%E]4J6OH$A8

 

R2的路由表

PGU4E2QY034EL}ZJ5))WC)I

 

R3的路由表

5~~`K~909W4`I9{(UPG{J[0

 

R4的路由表

Y9H{6U2~3UYATWJE1$SARQA

 

通过对比发现以下几个问题

问题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的路由表

89IW_IAVWZ0`PYCE6DZ{DA5

R2的路由表

FVY[_9W87R3IT((N}UW~CLM

R3的路由表

N$G]SH9OS1WM{HU4RQ{{){0

R4的路由表

29B2~)L0ZJ4}~{AZHS8(EDC

 

可以看到,现在的路由是正常了,而且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的路由表

LLNK5BW]7@~MJWW9J]25A%9

这里显示2.2.2.0/24和12.0.0.0/24的路由都是从RIP中学习到的了

再查看下OSPF的外部路由数据库

[PS1{6R8OI5K~2X0TMNH8ZA

发现数据库里还是含有2.2.2.0/24和12.0.0.0/24的数据信息,但是由于已经将这些路由的管理距离设置的比RIP还要大了,所以在路由表里选择了RIP协议

R1也是同样的

而在R4中,查看下路由表

%)J(RV3XWR%X}{UP_B05I06

可以看到12,23,2这3个网段的完整路由

 

这里列举了2中解决方案,还有诸如使用route-map之类的工具可以可以在路由重发布的时候对路由条目进行修剪,只要知道整个路由传递的原理和机制,这些方法也只是你所选择的工具而已。


本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/889890,如需转载请自行联系原作者

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
【实验篇】如何利用BFD与浮动路由联动实现链路自动切换?
【实验篇】如何利用BFD与浮动路由联动实现链路自动切换?
|
5月前
|
负载均衡 算法 定位技术
【专栏】思科私有动态路由协议:EIGRP,一种由Cisco开发的混合路由协议,结合了距离矢量和链路状态协议的优点,提供无环路路由和快速收敛
【4月更文挑战第28天】EIGRP,一种由Cisco开发的混合路由协议,结合了距离矢量和链路状态协议的优点,提供无环路路由和快速收敛。它支持带宽和延迟的度量,实现多路径负载均衡。配置EIGRP涉及启动协议、声明网络和调整参数。在实际应用中,如中型企业网络,EIGRP确保数据通信顺畅,适应网络扩展和变化,展现其高效和灵活的性能。
94 1
|
负载均衡 网络协议 算法
双点双向重分布导致路由环路,你要怎么解?(下)
双点双向重分布导致路由环路,你要怎么解?(下)
357 2
双点双向重分布导致路由环路,你要怎么解?(下)
|
网络协议 网络架构
双点双向重分布导致路由环路,你要怎么解?(上)
双点双向重分布导致路由环路,你要怎么解?
435 1
双点双向重分布导致路由环路,你要怎么解?(上)
|
网络协议 安全 Unix
虚拟路由和转发 (VRF) 表上下文中的多点标签分发协议带内信令
本文档是 Internet 工程任务组 (IETF) 的产品。它代表了 IETF 社区的共识。它已接受公众审查,并已获互联网工程指导小组 (IESG) 批准出版。有关 Internet 标准的更多信息,请参见 RFC 5741 的第 2 节。
425 0
虚拟路由和转发 (VRF) 表上下文中的多点标签分发协议带内信令
|
运维 监控 网络协议
BFD(双向转发检测)理论知识详解
BFD(双向转发检测)理论知识详解
682 0
BFD(双向转发检测)理论知识详解