多点双向路由重发布潜在问题研究

2019-09-23 09:05朱壮普
太原学院学报(自然科学版) 2019年3期
关键词:路由表子网通告

朱壮普

(山西职业技术学院 计算机工程系,山西 太原 030006)

0 引言

随着社会经济的飞速发展,企业的收购重组已成为常见的市场行为,随之而来的是企业网络的合并。因合并前都有各自的网络体系架构,若重新统一规划设计,必然要投入大量的工作。路由重发布是网络合并中首选的技术方案,只需要在两侧对接的设备上进行路由重发布操作,便可实现互通互连,且无需改变各自的网络架构。路由重发布技术的实施需要详细分析网络的通信需求,并针对潜在的问题进行优化设计,保证网络运行的稳定。

1 多点双向路由重发布潜在问题

多点双向路由重发布会造成次优路径和路由环路等问题,严重影响网络的通信。造成这些问题的根本原因是路由的域间循环,即路由从起始路由域通告到另一个路由域后,又被通告到起始路由域[1]。

1.1 次优路径

次优路径是指因循环通告路由导致的低效路径的选择,降低了通信效率。如图1所示,图中有两个路由域,分别是RIP路由域和OSPF路由域,R2和R4充当路由重发布节点,在R2和R4配置路由双向重发布后,发现R4到达子网10.10.10.1/32的路由并没有选择最佳的下一跳指向R1的路径,而是选择了下一跳指向R3的穿越OSPF路由域的次优路径。

问题的本质是路由选路机制导致的。路由器通过路由协议会学习到去往各个目标网络的最佳路径,然后添加到路由表中。当去往同一个目标网络有多个路由源时,首先比较路由源的AD(管理距离)值,AD值越小,路径优先级越高;若AD值相同,即路由源相同,则比较度量值,度量值越小,路径优先级越高;若度量值也相同,则会出现负载分担路径,一起添加到路由表。

结合选路原则,我们分析图1中次优路径产生的过程:

图1 次优路径Fig.1 Suboptimal path

1)R1通过RIP协议将10.10.10.1/32路由通告给R2和R4,R2和R4都会获得一条去往10.10.10.1/32的下一跳为R1的RIP路由。

2)R2配置了路由重发布,会将通过RIP协议学习到的10.10.10.1/32路由以5类LSA的方式通告到OSPF路由域中,R3会学习到10.10.10.1/32的OSPF外部路由,同时通告给R4。

3)R4收到了分别来自R1和R3的去往同一个目标网络10.10.10.1/32的两个路由,依据选路规则先比较AD值,OSPF协议AD值(110)小于RIP协议AD值(120),所以R4认为路由源为OSPF的路径优先级更高,从而将该路径添加到路由表中。很显然R4去往10.10.10.1/32 的路径选择R4-R1更合理。事实上,R4选择的路径是R4-R3-R2-R1,这样次优路由就产生了。

4)同理R2上也会出现去往10.10.10.1/32的次优路径。

1.2 路由环路

路由环路是指到达某个目标网络的路由在相关路由设备上的转发路径构成了环路,造成IP数据包的循环传递,直至TTL值减为0为止,严重消耗了系统资源和通信资源,导致通信效率低下,甚至通信中断[2]。路由环路存在两种情形,一是汇总路由环路,二是子网路由环路,下面就两种情形分别进行分析:

1.2.1汇总路由环路

图2中,R2和R4依然充当路由重发布节点。在路由域RIP的R1设备上挂接1.1.1.1/32-1.1.1.4/32四个子网路由。若为简化路由条目,提高路由转发效率,RIP路由域中的路由器开启路由自动汇总功能。结合选路原则,分析汇总路由环路产生的过程。

图2 汇总路由环路Fig.2 Summarize routing loops

1)R2收到R1发来的1.0.0.0/8的汇总路由,添加到路由表,下一跳指向R1(10.10.12.1),同时向OSPF路由域中发送5类LSA的外部路由通告。

2)R3通过R2学习到了1.0.0.0/8的外部路由,下一跳指向R2(172.16.23.2),同时向R4发送1.0.0.0/8的5类LSA的路由通告。

3)同样,R4通过R3学习到了1.0.0.0/8的外部路由,下一跳指向R3(172.16.34.3),并将该路由发送给R1。

4)R1从R4收到该汇总路由,虽然1.0.0.0/8路由起源于R1,但发送接口和接收接口并非同一接口,并没违反RIPv2默认开启的水平分隔原则。因此,R1会将1.0.0.0/8添加到路由表,下一跳指向R4(10.10.14.4)。

我们通过4台路由器的路由表可以发现,关于1.0.0.0/8路由的转发路径构成了一个环路(R1—R2—R3—R4—R1……)。在访问1.1.1.1/32至1.1.1.4/32时,并不存在问题,因为R1上存在这4个子网的明细路由,能够精确匹配,不会按照汇总路由转发。然而当访问其它的1.0.0.0/8的子网(如1.1.1.5)时,在R1上无法匹配明细路由,会按照1.0.0.0/8的汇总路由转发,这样就构成了如图2所示的通信环路。当然环路的方向也可能相反,取决于R2和R4路由器RIP协议启动的先后顺序。

1.2.2子网路由环路

如图3所示,在图1的基础上,R2和R4之间连接了两条链路,分别归属于RIP路由域和OSPF路由域,R2和R4依然充当路由重发布节点。

图3 子网路由环路Fig.3 Subnet routing loop

我们来分析环路产生的过程:

1)R4从R1获得一条10.10.10.1/32的RIP路由,路由传递经历了1跳,度量值为1,下一跳指向R1(10.10.14.1),同时将该路由以5类LSA的方式通告到OSPF路由域。

2)R2会分别从R1、R4学习到10.10.10.1/32的路由,考虑到AD值,R2会选择来自R4的OSPF外部路由加入到路由表,下一跳指向R4(172.16.24.4),同时将该路由引入到RIP路由域中。

3)R4又从R2获得了一条去往10.10.10.1/32的RIP路由。如果R2在RIP协议下配置引入OSPF路由的度量值为1(redistribute ospf 1 metric 1)时,那么R4就会存在两条去往10.10.10.1/32 的RIP等价路径,下一跳分别指向R1(10.10.14.1)和R2(10.10.24.2),而R2的10.10.10.1/32路由的下一跳指向R4(172.16.24.4),这样就在R2和R4之间形成了去往10.10.10.1/32网络的环路。

2 多点双向路由重发布路径优化

根据前面的分析可以看出,导致多点双向路由重发布路径问题的原因是路由选路机制造成的路由在路由域之间反复循环。因此,解决该问题的关键是如何避免路由的域间循环,常用的解决办法有两种,一种是设置路由的管理距离AD;另一种是采用路由标记进行路由过滤。

2.1 设置路由管理距离避免域间循环

简单归纳路由重发布的原理,即在路由器上将A协议重发布到B协议中,只发布路由表中A协议标记的路由以及运行A协议的接口网段。结合图1我们可以看出,重发布节点R4上将从RIP路由域中引入的路由10.10.10.1/32,又以OSPF路由形式重发布到RIP路由域中,因为在R4路由表中,该路由是以AD值更小的OSPF路由形式出现,那么我们可以在R4上将10.10.10.1/32的OSPF外部路由AD值设置为大于120(RIP协议AD值),使得R4上关于10.10.10.1/32的路由不以OSPF形式出现,自然不会被重发布到RIP路由域中,这样就避免了域间循环。

事实上,OSPF协议支持对域内、域间及外部路由进行AD值的设置,其操作命令为:

distance ospf {externalad-value} {intra-areaad-value}{inter-areaad-value}

花括号中分别是对外部路由、域内路由和域间路由进行AD值设置。

在具体操作中,只需要调整OSPF外部路由的AD值,即可避免RIP-OSPF域间循环问题,切不可将全部OSPF路由AD值都设置为大于120,否则就会出现同样的路径问题。如图4所示,我们将OSPF的外部路由AD值设置为130,则在R4上只出现AD值更小的子网X的RIP路由,就可以避免X子网路由再从OSPF路由域发布到RIP路由域。

基于此思路,可以概括此方案适合于以下的多路由域环境中:

1)至少一种路由协议支持外部路由AD值修改;

2)假设多路由域由A、B协议构成,且A协议支持AD值修改,要满足A协议内部路由AD < B协议AD < A协议外部路由AD。

图4 修改AD值避免路由域间循环Fig.4 Modifying AD values to avoid routing inter-domain loops

常见的多路由域环境如RIP-OSPF、RIP-EIGRP、OSPF-EIFRP就符合上述情况。

2.2 使用路由标记进行过滤以避免域间循环

这种解决方案的思路是,设定一个路由标记值,用来标示来自高AD值路由域的路由,这些标记会随路由一起传递到低AD值的路由域中。当标记路由从低AD值路由域回传到高AD值路由域时将其过滤,以避免路由域间循环[3]。

如图5所示,RIP路由域中的子网X路由通过R2传入到OSPF路由域中时,给其设定一个标记值。当其通过R4回传到RIP路由域时,R4对标记值识别,并进行路由过滤,这样就避免了子网X路由的域间循环。当然子网X路由的反方向传输也需要同样的设置,即在R2和R4上需要同时对子网X进行标记,同时在其回传到RIP路由域时,将其过滤掉。

这种方案涉及到两个技术环节,一是路由标记;二是路由过滤。路由标记采用route tag或route-map(路由映射表)实现,路由过滤是通过distribute-list(分发列表)来实现。distribute-list配置在路由协议下,本身不具备过滤功能,具体过滤哪些路由是由它所调用route-map、ACL或IP前缀列表等工具来定义的。

结合图1拓扑,在R2和R4上采用route tag工具对引入到OSPF路由域中的RIP路由进行标记,标记值设置为120。使用route-map工具定义过滤的路由范围,并在OSPF路由引入到RIP路由域时,滤掉所有标记为120的路由。

图5 过滤标记路由避免路由域间循环Fig.5 Filter tag routing to avoid routing inter-domain loops

具体配置如下:

router ospf 1

redistribute rip subnets tag 120 ①

network 172.16.0.0 0.0.255.255 area 0

distribute-list route-mapFilter-tag120 in ②

route-mapFilter-tag120 deny 10 ③

match tag 120

route-mapFilter-tag120 permit 20

说明:

1)在OSPF协议下引入的所有RIP路由都标记为120;

2)distribute-list调用路由映射表Filter-tag120,OSPF只重发布Filter-tag120中包含的路由;

3)定义路由映射表Filter-tag120,匹配除了路由标记为120的所有路由。

需要注意的是,route-map定义了两条规则,即deny 10和permit 20。前者子语句match tag 120代表匹配标记为120的路由,即所有从RIP路由域中传过来的路由,动作为deny(拒绝)。后者无子语句,代表匹配所有路由,动作为permit(允许)。两者综合起来所定义的路由范围就是除了路由标记为120的所有其它路由。

R2和R4都采用上述配置后就解决了次优路径问题。图6、图7为R2、R4优化后的路由表。当然将此方法应用到图2、图3拓扑中同样可以解决环路问题。

图6 优化后的R2路由表Fig.6 Optimized R2 routing table

图7 优化后的R4路由表Fig.7 Optimized R4 routing table

3 结束语

路由多点双向重发布问题是由路由选路机制所致,造成了路由的域间循环。这些问题具有一定的隐蔽性,产生次优路径依然能够通信,而路由环路需要特定的通信才能触发,所以容易被网络工程师忽视,进而引发了相应的通信问题。

文中基于两个路由域,对多点双向重发布问题进行了阐述,分析了问题产生的原因,并归纳出了常规的解决方案。值得注意的是,两种方案在实施上都存在着局限性,如路由过滤技术在应用上可能会导致原有路径的负载均衡、路由备份等不再有效。实际工程中,尤其是面临更为复杂的多区域环境,在技术应用上需要综合考虑。

猜你喜欢
路由表子网通告
考虑荷电状态的交直流微电网多模式协调控制策略
2021年国家级检验检测机构能力验证结果的通告
国家药监局关于7批次药品不符合规定的通告
基于OSPF特殊区域和LSA的教学设计与实践
研究路由表的查找过程
子网划分问题研究及应用
航天器多子网时间同步系统设计与验证
取消航行通告(NOTAMC)在航行通告(NOTAM)中的应用
IP 路由技术与RIP 协议探析
通告