大家好,我是大白,即使在把眼睛盯着大地的时候,那超群的目光仍然保持着凝视太阳的能力。优质的帖子也在尽力中提供,也希望各位道友多多支持,让我引劫渡劫成功哈哈哈。
大白队口号就是:砸锅卖铁我最行,拼死拼活就要赢!!!!!!!!!!!!
今天继续完成OSPF的知识分享,今天分享的是开放式最短路径优先OSPF(Open Shortest Path First)区域间路由案例详解集锦分享第一部,本次OSPF的区域间路由案例集锦还是比较有学习的价值,建议没有完成OSPF基础篇的小伙伴完成基础篇再进行区域间路由案例的学习会更加容易理解。
域间路由的关键理论知识:
OSPF协议中有一些定义、规定,这些东西是规定好的,必须要遵守的。
比如1,为了防止区域间的环路等问题,在设计OSPF区域结构时,有2个重要的规则:①所有非骨干区域必须和骨干区域相连;②骨干区域不能被分割。下面分别阐述这两个规则的意义以及如何防止打破这两个规则。
(1)规则一:所有非骨干区域必须和骨干区域相连
在区域结构设计时,OSPF规定,所有非骨干区域必须和骨干区域相连(直接相连或使用V-link,如果不能直接相连,可以使用V-link使逻辑上相连)。但有时,因为人为或意外等原因,非骨干区域没有和骨干区域相连,这可能会导致环路(结合集锦中的案例2阐述)。如何保证这一规定即使被打破,也不会产生区域间环路?OSPF是通过“ABR的定义及3类LSA”保证的。(ABR的定义:至少属于两个区域,且其中一个区域必须是骨干区域;3类LSA是由ABR产生的)
(2)规则二:骨干区域不能被分割
在区域结构设计时,OSPF规定:骨干区域不能被分割(物理上被分割,可以使用V-link确保逻辑上连续)。但有时,因为人为或意外等原因,骨干区域被分割了,这可能会导致环路(结合下图阐述)。如何保证这一规定即使被打破,也不会产生区域间环路?OSPF是通过“ABR不会计算从非骨干区域收到的3类LSA(会接收,在LSDB中有此3类LSA,但不会计算相关路由)”来保证的。
为什么非骨干区域和骨干区域必须相连?
解释:非骨干区域之间交换数据必须通过骨干区域,区域之间的路由通过ABR将一个区域内已计算出来的路由封装成3类LSA发送到另外一个区域中,传递路由信息。3类LSA不再是链路状态信息,而是纯粹的路由信息。因为D-V算法无法保证消除路由自环,自环产生原因为生成该条路由的ABR不会加入生成者信息,每一条路由信息都无法知道最初由谁生成,OSPF生成LSA时将自己的RID加入LSA,如果该信息传递超过两个区域则失去最初生成者信息。解决的办法就是所有ABR将本区域内的路由信息封装成LSA后,统一发给一个特定的区域,再由该区域将信息转发到其它区域,特定区域内,每条LSA都确切知道生成者信息,非骨干区域之间传递都会发送至特定区域,所以不会发生路由自环。
(疑问:D-V算法是什么?路由自环具体如何产生的?为什么D-V算法无法保证消除路由自环?“该路由信息传递超过两个区域则失去最初生成者信息”怎么理解?)
比如2,3类LSA的度量(即携带的Metric取值),是目的网络到ABR的入接口开销之和。
比如3,3类LSA的传递特性也一定程度上避免了区域间环路。(3类LSA可在非骨干区域和骨干区域之间传递,修改后再传递,水平分割不传回)
案例1:该案例的特点是“非骨干区域没有和骨干区域相连”
OSPF的区域结构设计有一个原则就是“非骨干区域必须和骨干区域相连”,如果没有相连会怎样?(结合本案例实验)
如果非骨干区域没有和骨干区域相连,这个非骨干区域就没有ABR(ABR的定义),也就不会产生3类LSA,不能将这个非骨干区域的路由信息通告出去,同时该非骨干区域也不能获得其它区域的路由信息,最终导致这个非骨干区域被孤立。
案例2:该案例的特点是“非骨干区域没有和骨干区域相连,且在物理结构上存在环路”
(1)该网络拓扑存在什么问题?
与案例1相同,该网络拓扑违背了OSPF区域设计原则“非骨干区域必须和骨干区域相连”。违背这一原则,导致的问题:如果非骨干区域不和骨干区域相连,非骨干区域的路由信息就不能通告出去,同时该非骨干区域也不能获得其它区域的路由信息,该非骨干区域被孤立了。
(2)该网络拓扑在物理结构上存在环路,但在数据通信中存在环路吗?
不存在。根据ABR的定义可以看出,R3、R4都不是ABR,所以R3、R4也不会通告3类LSA,区域0、1、3内的路由器也就不会有区域2内的路由,同样区域2内的路由器也不会有区域0、1、3的路由,所以数据通信中不会存在环路。
但如果没有ABR的定义以及一系列的规则,也是存在潜在环路的。
(以下内容是假设,这种假设在现实中是不成立的,但对于理解潜在环路的形成有借鉴意义)
假设:R3、R4是ABR,发布3类LSA;ABR也会计算从非骨干区域接收到的3类LSA。
可能存在如下情况:R3将loopback0的3类LSA发给R2,R2再发给R1,R1再发给R4。如果某个时刻loopback0接口down了,在R3将loopback0接口down(Update消息)告诉给R4之前,R4把它接收到的关于loopback0接口的3类LSA又发给了R3,R3就会认为loopback0接口可以通过R4到达,这时环路就产生了。
总结:如何找出网络中存在的潜在环路?
首先,应该搞清楚网络中存在环路和网络中潜在环路的区别是什么?个人觉得,网络中存在环路是指网络在现行状况下存在数据通信环路,而网络中存在潜在环路是指网络在某种情况下会出现环路。
关于如何寻找潜在环路,有如下几点可以参考:1、存在物理环路的网络中可能产生数据通信潜在环路;2、可以从引发潜在环路的特殊情况入手,比如可以从故障网络连接的路由器入手;3、常见的一种潜在环路产生的情况是“某路由器在通告不可达信息之前又收到了可达的路由信息”。
案例3:该案例的特点是“非骨干区域没有和骨干区域直接相连,而是建立了一条虚链路”
(1)与案例1比较
该案例在案例1的基础上增加了一个虚链路,使区域2不再是孤立的。R4成为了ABR,区域2的路由器有其它区域的路由,其它区域的路由器也有区域2的路由。
(2)虚链路的通信原理
通过虚链路,两台ABR之间传递OSPF报文信息,它们之间的路由器只是起到一个转发报文的作用,由于目的IP不是中间路由器,所以这些报文对于中间路由器来说是透明的,它们只是把它当做普通的IP报文进行转发。
(3)观察各区域的3类LSA
建立虚链接后,观察区域0、区域1和区域2的LSDB发现:区域0 LSDB中3类LSA有R2通告的LSID=23.1.1.0、LSID=34.1.1.0,R4通告的LSID=23.1.1.0,LSID=34.1.1.0,LSID=45.1.1.0;区域1 LSDB中的3类LSA有R2通告的LSID=12.1.1.0、R4通告的LSID=45.1.1.0;区域2 LSDB中的3类LSA有R4通告的LSID=12.1.1.0、LSID=23.1.1.0、LSID=34.1.1.0。
为什么会出现如上的结果?从“R2属于区域0、1,R4属于区域0、1、2”来理解熟记。
建立虚链接后,R2仍然是区域0和区域1的ABR,R4变成了区域0、区域1和区域2的ABR。因为R4是区域0、区域1、区域2的ABR,所以会向3个区域通告3类LSA,R4向区域0通告的3类LSA有LS ID=23.1.1.0、LS ID=34.1.1.0和LS ID=45.1.1.0;向区域1通告的3类LSA有LS ID=45.1.1.0;向区域2通告的3类LSA有LS ID=12.1.1.0、LS ID=23.1.1.0和LS ID=34.1.1.0。所以会得出如上LSDB。
特别说明:为什么R4不向区域1通告LS ID=12.1.1.0的3类LSA?简单来说,是因为3类LSA的水平分割特性。具体分析:因为R4与R2配置了虚链路,所以实际上,R4是通过接口G0/0/1从区域1获得的该3类LSA,又因为3类LSA水平分割特性,所以,R4不会将该3类LSA通过G0/0/1接口通告出去。
总结:某区域内的3类LSA有哪些?从3类LSA的产生者ABR入手,阐述每个ABR产生的3类LSA有哪些(具体再细分,从区域入手阐述;特别注意,3/4/7类LSA水平分割特性)。
案例4:该案例的特点是“骨干区域、两个非骨干区域,这3个区域通过一个ABR相连”
(1)关于三类LSA的度量(Metric值)
三类LSA的度量(即携带的metric取值),是指ABR到目的网络的出接口的开销之和(或目的网络到ABR所经过的路由器的入接口的开销之和)。
默认情况下,OSPF接口开销值计算的参考带宽为100M,所以默认情况下千兆口的接口开销值是100M/1000M=0.1,取值为1,串口的开销值为48。
环回口的开销值规定为0。
(2)R2、R6的LSDB中的3类LSA的度量(Metric值)
R2的LSDB中,LSID=4.4.4.4的3类LSA的metric值为1,LSID=46.1.1.0的3类LSA的metric值为2,LSID=14.1.1.0的metric值为1,为什么?
答:LSID=4.4.4.4的3类LSA,由R1产生并通告进区域1,metric值为:loopback0接口开销值+R1 G0/0/2接口开销值,即为1;LSID=46.1.1.0的3类LSA,由R1产生并通告进区域1,metric值为:R4 G0/0/1接口的开销值+ R1 G0/0/2接口的开销值,即为2;LSID=14.1.1.0的3类LSA,由R1产生并通告进区域1,metric值为:R1 G0/0/2接口开销值,即为1。
R6的LSDB中,LSID=12.1.1.0的3类LSA的metric值为1,为什么?R6又是如何计算到12.1.1.0这一网络的路由花费的?
答:LSID=12.1.1.0的3类LSA,由R1产生并通告进区域2,metric取值为1。当它将此LSA通告给区域2的任一路由器时,并不会改变metric的值。所以R6接收到的该3类LSA的metric值依然为1。R6计算到达12.1.1.0这一网络的路由条目的路由花费时,认为:该COST=该3类LSA的metric值+R6到产生该3类LSA的ABR R1的出接口的开销值。
案例5:该案例的特点是“非骨干区域与骨干区域有两个ABR相连”
(1)3类LSA的传递性
关于3类LSA的传递性,可总结为:非骨干与骨干之间传递,修改再传递,水平分割不传回(个人认为,3类LSA的水平分割是基于区域的,即从区域X学来的3类LSA不再传回区域X)。
如何理解这句话?如上图所示,在多区域的环境,R2会把area1的网络以3类LSA的形式通告给area0,位于area0和area2边界的R5会对这些3类LSA进行修改并传递给area2,修改的内容是把里面的ADV Router替换成自己的Router ID,并且维持原先的LSID不变,这就是“修改再传递”;但是,位于area0和area1边界的R2不会对这些3类LSA进行修改,更不会传回area1,这就是“水平分割不传回”。
一般来说,一个区域的3类LSA保存着本区域以外的所有其他区域的网络。
(2)R3、R4、R5的LSDB中3类LSA情况
观察R3的LSDB,发现:因为R3是ABR,同时属于区域0和区域1,所以R3同时维护两个LSDB,分别是区域0-LSDB和区域1-LSDB。区域0-LSDB中的3类LSA组成是“R3产生的区域1的3类LSA+R2通告过来的区域1的3类LSA+R5通告过来的区域2的3类LSA”; 区域1-LSDB中的3类LSA组成是“R3产生的区域0和区域2的3类LSA+R2通告过来的区域0和区域2的3类LSA”。
观察R5的LSDB,发现:因为R5是ABR,同时属于区域0和区域2,所以R5同时维护两个LSDB,分别是区域0-LSDB和区域2-LSDB。区域0-LSDB中的3类LSA组成是“R5产生的区域2的3类LSA+R2通告过来的区域1的3类LSA+R3通告过来的区域1的3类LSA”;区域2-LSDB中的3类LSA组成是“R5产生的区域0和区域1的3类LSA”。
观察R4的LSDB,发现:3类LSA共有10个,但其中5个是R2通告的,另外5个是R3通告的。
(3)本例中会不会存在潜在环路?
个人认为,会。比如,依据一类、二类LSA,R2知道到达3.3.3.3这一网络的路由。当R2把3.3.3.3的3类LSA通告给区域0之前,R3的loopback0口突然down了。正常来说,R3会发送3.3.3.3网络不可达的消息(update)给区域0,但发给区域0之前,R3收到了R2关于3.3.3.3的3类LSA。R3就会认为通过R2可以到达3.3.3.3,R2又知道通过R4、R3可以到达3.3.3.3,而R3认为通过R2可以到达3.3.3.3,这时环路就产生了。
会不会存在这么一种机制来防止这种环路的产生?
机制:只有当区域内的网络收敛后,才会向外发送3类LSA。
(4)假如没有“ABR不会计算从非骨干区域收到的3类LSA(会接收,在LSDB中有,但不会计算)”这一规定,那如下关于潜在环路的描述是否正确?
举例说明潜在环路的存在:关于15.1.1.0这一网络的3类LSA,R2会通告给区域1内的路由器R4和R3,如果这时15.1.1.0这一网络故障不可达了,在R1将不可达信息(承载于update消息内)传给R3之前,R3将15.1.1.0的3类LSA发给了R1,R1会认为从R3能够到达15.1.1.0,而R3认为从R2能够到达15.1.1.0,R2又认为从R1能够到达15.1.1.0,这样环路就产生了。
(对吗?个人感觉不对,感觉R3不可能将15.1.1.0的3类LSA发给R1)
如果存在“ABR不会计算从非骨干区域收到的3类LSA(会接收,在LSDB中有,但不会计算)”这一规定,那么R3虽然有R2通告过来的去往15.1.1.0的3类LSA,但R3不会计算,也就不会有经过R2到达15.1.1.0的路由,也就不会存在潜在环路。
以上就是本次的OSPF(Open Shortest Path First)区域间路由案例详解集锦分享第一部,知识点也是比较多,案例较多,后续还有第二部进行完结本篇,感谢大佬们的参阅,此贴先到这里后续会带上更加实用的帖子,感谢大家!
励志分享超清壁纸语句~~:
立身以立学为先,立学以读书为本。——欧阳修
好的今天就到这里,老样子,感谢各位大神的参阅,孩子为了挣豆子不容易,孩子家里穷没豆子吃饭了!!! |