关于每台路由器的lsdb不同的信息
本篇文章给大家谈谈每台路由器的lsdb不同,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、OSPF骨干区的所有路由器的LSDB相同为什么是错的???
2、两台路由器之间建立邻接关系过程:OSPF
3、OSPF邻居/邻接建立(3)
4、ospf中路由器有多少个区域就有多少个lsdb,不同区域的链路状态描述信息放在彼此独立的lsdb,对吗?
5、ospf中同一area的路由器为什么要发LSR?他们的LSDB不是一样的吗?
OSPF骨干区的所有路由器的LSDB相同为什么是错的???
有一种特殊情况,area0连接nssa,在asbr的lsdb里有type7 lsa,注入area0时,type7转化为type5。
所以area0里其他路由器lsdb只有type5
两台路由器之间建立邻接关系过程:OSPF
两台路由器之间建立邻接关系过程:OSPF
在学习OSPF建立邻居关系之前我们再来回忆一下RIP协议建立邻居的过程。在运行RIP协议的路由器A启动之后会向邻居路由器B发送一个请求报文,邻居收到后回应一个确认报文。然后路由器A将自己已知的所有报文发送给路由器B,并且每隔30秒周期性的向自己的邻居发送。那么这样一个看似简单的过程有什么弊端呢?首先,RIP协议每个30秒周期性的发送是为了确保一台路由器发生故障后能够更新路由表。所以这每隔30秒周期性的发送报文包含了大量的路由信息实际上是一种浪费。因为如果网络没有发生变化,这些报文是没有实际意义的。OSPF把维护路由信息报文和更新的路由报文这两种报文分开来发送。如下图所示:
RT1启动之后发送一个Hello报文,Hello报文中包含了DR的地址,以及是否发现了邻居。在此图中,Neighbors Seen=0说明还没有发现邻居。RT2收到RT1发送来的Hello报文后,也向RT1发送一个Hello报文,这个报文中告诉RT1,DR为RT2,同时告诉RT1已经发现了RT1是自己的邻居。RT1收到RT2发回来的回应报文后,这种状态我们称之为邻居关系。在建立了邻居关系后,RT1就开始向网络发送LSA.但实际上,在网络连接起来后,每台路由器中的大部分路由都是相同的,这个时候如果RT1仍旧将自己所知的所有LSA发送给RT2那么也会造成浪费。
所以,在RT1向RT2发送LSA之前,会告诉RT2那些路由是自己需要的,那些是自己不需要的。在前面我们讲到过在OSPF发送报文的时候会在LSA报文前加一个Head,在这个Head中包含了LSA的标示,就可以区分每条LSA.所以,RT1只需要向RT2发送Head就可以了,从而大大减少了发送的信息量。当RT2收到所有的Lsa的Head后会与自己本地的LSA中的Head进行比较,如果有不同的则向RT1发送请求(请求报文只发送Head报文)。
然而, LSA报文是基于IP的报文,IP的.特点是不可靠尽力而为的转发。所以LSA必须建议一种机制来确保对方能够准确无误的收到了自己发送的报文。所以LSA建立了一种类似TCP的确认和超时重传机制,来保证报文的准确无误的发送和接收。在图示中,RT1向RT2发送一个DD报文,在第一次发送的DD报文中不包含任何LSA信息,i代表了这时RT1发送给RT2的第一个报文,M代表了后面还有更多的报文,而MS则告诉RT2自己是主发送,而谁的MS大谁就决定了使用谁的发送次序(Sq),只有MS才能够在发送报文是将序号加一,在上图中我们可以发现RT2成为了MS.当发送报文中的字段M=0得时候,就可以确认报文已经发送完。此时,RT1才会向RT2发送LS requese报文。RT2收到LS request报文后,发送LS Update报文,最有由RT1发送LS ack确认报文。通过这一系列的报文发送,每台路由器就可以形成一个相同的LSDB.
OSPF邻居/邻接建立(3)
ospf状态机
一、ospf邻居
二、ospf邻接
三、影响ospf邻居/邻居关系建立的因素:
ospf报头:
(1)Router ID
(2)Area ID
(3)认证
ospf的hello报文:
(4)MA网络的网络掩码
(5)Hello/Dead时间
(6)Option区域类型
(7)MA网络的路由器优先级都为0
ospf的dd报文:
(8)MTU
其它:
(9)ospf的网络类型不一致
(10)silent接口
四、泛洪
1、泛洪
OSPF和距离矢量路由协议不同,OSPF的的路由是根据LSDB中的LSA计算出来的,所以LSDB的一致性及快速同步直接影响OSPF路由的收敛性能;
每台ospf路由器的每个区域都有一个LSDB,LSDB是LSA的集合,这些LSA在区域内泛洪给每台ospf路由器,最终区域内的所有ospf路由器都有一个完全相同的LSDB;
泛洪的过程就是ospf路由器把自己产生或学来的LSA向所有其他邻居或路由器通告的过程,包括初始同步过程中的、周期的、触发的LSU泛洪;
ospf路由器的LSDB包含所有LSA,任何LSA的变化都会触发当前路由器通告LSU/LSAck给邻居路由器并泛洪至所属区域,最终通告到全网络;
LSU和LSAck报文都可包含多个LSA信息,但LSU携带完整的LSA,而LSAck仅包含用来做确认的LSA头;
泛洪过程是个可靠的过程,有确认机制,其中每份泛洪的LSA都必须被确认,确认包括显式确认(ExplicitAck)或隐含确认(ImplicitAck);显式确认使用LSAck做确认,隐含确认使用LSU做确认,如DRother向DR/BDR泛洪LSU更新(224.0.0.6),DR会将LSU更新向所有DRother泛洪(224.0.0.5),而不需要像显式确认那样需要单独发送LSAck进行确认。
当一份LSA被泛洪出去,当前路由器会记录在该接口的所有邻居数量并为之维护重传列表,没有收到显式或隐含确认的LSA会在5s后单播重传更新(不管网络类型是什么);
2、路由器泛洪行为:
(1)每台接收路由器先判断LSDB中是否已有该LSA,没有则存储转发,否则忽略;如果接收时不判断是否已拥有该LSA,会导致LSA在区域内无休止地传递;
(2)一个接口收到LSA,存放到LSDB后,再从其他接口重新泛洪出去,泛洪也有水平分割的行为。DR接口是例外,DR会把从一个DRother收到的LSA通过原接口重新通告给其他DRother路由器;
(3)收到的LSA和重新通告的LSA除LS age增加1外,其他内容一致,如Checksum等;
(4)LSA会泛洪到区域的边界;
3、LSDB
(1)LSDB中的LSA通过LS Type、Link State ID和Advertising Router三个参数进行唯一标识;
(2)区域中会有周期产生(1800s)的新的LSA所致的泛洪或触发产生的新的LSA导致的泛洪,初始同步过程所致的泛洪;
(3)泛洪是把LSA向区域中的每条链路复制并通告的过程;
(4)全区域的泛洪会导致路由器收到多份相同的LSA,旧的LSA会被新的LSA覆盖,LSDB仅保留最新的,路由器仅泛洪最新的LSA;
(5)一旦最新的LSA被所有路由器收到,泛洪就结束了;
(6)LSDB中的LSA有超时机制,LSA的Age超过Max Age(3600s),该LSA会从LSDB中被清除;
LSDB中LSA被清除的两种场景:
(1)超过Max Age被路由器自动清除;
(2)LSA起源路由器产生Max Age的LSA,并向区域内泛洪,收到的路由器会清除LSDB中的该LSA,并继续泛洪Max Age的LSA;
4、判断LSA新旧
泛洪机制把LSA向区域中的每条链路通告,不论LSA从哪条链路泛洪到当前路由器,在路由器的LSDB中仅保存一份最新的LSA;若路由器收到多份相同的LSA(LS Type、Link State ID和Advertising Router三个字段相同),就需要依次比较LSA序列号、LSA校验和、LSA age三个字段,来判定是否继续泛洪该LSA,还是终止泛洪:
(1)序列号越大代表越新;
(2)若序列号相同,Checksum数值越大代表越新;
(3)上述一致的情况下,比较Age:
若LSA的Age为Max Age(3600s),则该LSA最新,用来毒化LSA在LSDB中清除这份LSA;
若LSA之间的Age差额超过15分钟,则该LSA更新,覆盖掉LSDB中旧的LSA,继续泛洪直至区域边界;
若LSA之间的Age差额在15分钟之内,则LSDB中的LSA更新,忽略收到的LSA;
ospf中路由器有多少个区域就有多少个lsdb,不同区域的链路状态描述信息放在彼此独立的lsdb,对吗?
那个满意答案,说了当没说。
每台路由器只有1个LSDB,但同一区域的路由器,其LSDB中关于当前区域的链路状态信息,都是一致的,所以同区域的路由器才能生成相同的带权有向图。
举例:aera 0 和aera 1之间的ABR,LSDB只有1个,但这个LSDB既包含了aera 0的链路状态信息,也包含了aera 1的链路状态信息。
ospf中同一area的路由器为什么要发LSR?他们的LSDB不是一样的吗?
看一下ospf邻居从down到full的过程吧,不可能打个router ospf 10,lsdb就同步了,是有过程的。lsr请求,lsu更新,lsr空则同步。
拓扑变动、邻居抖动等也可能造成再发lsr。
每台路由器的lsdb不同的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、每台路由器的lsdb不同的信息别忘了在本站进行查找喔。