OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是由Internet工程任务组开发的路由选择协议,公用协议,任何厂家的设备。那么下面我们给大家分享一些OSPF常见疑难问题吧,认真看噢~
链路状态路由协议(也可以说OSPF)工作原理:
每台路由器通过使用Hello报文与它的邻居之间建立邻接关系
每台路由器向每个邻居发送链路状态通告(LSA),有时叫链路状态报文(LSP). 每个邻居在收到LSP之后要依次向它的邻居转发这些LSP(泛洪)
每台路由器要在数据库中保存一份它所收到的LSA的备份,所有路由器的数据库应该相同
依照拓扑数据库每台路由器使用Dijkstra算法(SPF算法)计算出到每个网络的最短路径,并将结果输出到路由选择表中
OSPF的简化原理:发Hello报文——建立邻接关系——形成链路状态数据库——SPF算法——形成路由表。
1、OSPF特殊区域中如果存在两个ABR,那么这两个ABR都下发缺省路由,不是会形成环路吗?
不会形成环路,当特殊区域中的ABR接收到同一区域ABR发来的带有默认路由的SLA时,它只会将其放入LSDB(LSA Database)里,但不会用其计算路由,从而避免环路。
如果OSPF路由器已经发布了含缺省路由的LSA,就不会再学习其它路由器发布的相同类型的缺省路由LSA(路由计算时不再计算其它路由器发布的相同类型的缺省路由LSA)
如果在一个NSSA区域有两个ABR,他们都会将Type7 LSA转换成Type5 LSA吗?
不会的,RFC3101中规定,当NSSA区域有多个ABR时,只有Router ID最大的ABR负责将Type7 LSA转换成Type5 LSA。
2、Virtual-link和sham-link的区别是什么?
Virtual-link是为了解决OSPF的不规则区域问题而产生的,正常情况下OSPF的所有非骨干区域都要直接和骨干区域(area0)相连,如果由于前期规划问题等原因导致某个非骨干区域必须通过另一个非骨干区域来连接骨干区域的话,就要用到virtual-link。如下图所示:为了让Area2能够和骨干区域相连,需要在R3和R2之间建立一条virtual-link。
OSPF的VPN配置下,PE2通过从远端PE1通过Mbgp学到的路由引入到OSPF后只能还原成3类/5类/7类LSA,如果CE之间存在后门链路,,作为公网mpls链路的备份。则在CE上通过后门链路学到的路由是区域内路由,由于从MBGP学到的路由,这样就导致了数据只能通过后门链路而不会优选MPLS链路,未解决此问题产生了sham-link,sham-link的主要作用是可以还原1类和2类LSA.
3、OSPF支持多进程,那么交换机的一个接口也可以属于不同的OSPF进程吗?
不能。OSPF支持多进程是指在同一台交换机上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立,不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。但是交换机的一个接口只能属于某一个OSPF进程。
补充;几个概念:
OSPF的特征:
1.快速适应网络变化
2.在网络发生变化时,发送触发更新
3.以较低的频率(每30分钟)发送定期更新,这被称为链路状态刷新
4.支持不连续子网和CIDR
5.支持手动路由汇总
6.收敛时间短
7.采用Cost作为度量值
8.使用区域概念,这可有效的减少协议对路由器的CPU和内存的占用.
9.有路由验证功能,支持等价负载均衡
4、OSPF GR
Graceful Restart指的是平缓重启路由器的一种功能,可以保证流量转发不中断,网络不会因为路由器的短时间重启而引起路由震荡。
路由器若不以Graceful Restart方式重启OSPF协议,与它邻接的路由器就会把它从邻居列表中删除,并通知给其他路由器,导致重新计算SPF。如果协议重启的时间很短,就会引起路由震荡。
为了避免不必要的SPF计算,当路由器以Graceful Restart方式重启OSPF协议时,会通知与它邻接的路由器它只是关闭几秒钟,马上就会恢复正常。这样,邻接路由器就不会将进行GR操作的路由器从邻居列表中删除,其他路由器也不会知道有路由器重启,这样就避免了因邻居关系改变而导致的路由震荡。
5、OSPF为什么要划分区域?
在比较大的网络中OSPF的LSA非常庞大,占用大量的存储空间。OSPF是链路状态协议,所以路由器存储的是LSA而不仅仅是路由信息。划分区域后,每个分区内的路由器所需要存储的LSA的数量会大大的减少。
链路状态算法比距离矢量算法复杂的多,在比较大的网络中计算最小生成树耗时大,CPU的负担很重。划分区域后,区域内还是采用链路状态算法,但是区域之间采用的则是距离矢量算法。
在比较大的网络中网络拓扑结构经常发生变化,使得网络经常处于“动荡”之中。网络比较大的时候,网络中拓扑发生变化的概率也会比较大,每次网络拓扑发生变化的时候,都要重新计算最小生成树。划分区域后,ABR相当于一个“大坝”,把不同区域的“动荡”隔离开来。
那么它的网络类型都有什么呢?
运行OSPF的路由器需要一个能够唯一标示自己的Router ID
OSPF的网络类型:
广播型网络, 比如以太网,Token Ring和FDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005;而除了DR/BDR以外的OSPF包的目标地址为224.0.0.6,这个地址叫AllDRouters
NBMA网络, 比如X.25,Frame Relay,和ATM,不具备广播的能力,在这样的网络上要选举DR和BDR,因此邻居要人工来指定
点到多点网络, 是NBMA网络的一个特殊配置,可以看成是点到点链路的集合. 在这样的网络上不选举DR和BDR
点到点网络, 比如T1线路,是连接单独的一对路由器的网络,点到点网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5,这个组播地址称为AllSPFRouters
虚链接,它被认为是没有编号的点到点网络的一种特殊配置.OSPF报文以单播方式发送
OSPF的DR(指定路由)与BDR(备份路由):
通过组播发送Hello报文
具有最高OSPF优先级的路由器会被选为DR(255最高)
如果OSPF优先级相同具有最高路由器ID,路由器会被选为DR
DR与BDR的选举过程?
1. 在和邻居建立双向通信之后,检查邻居的Hello包中Priority,DR和BDR字段,列出所有可以参与DR/BDR选举的邻居.所有的路由器声明它们自己就是DR/BDR(Hello包中DR字段的值就是它们自己的接口地址;BDR字段的值就是它们自己的接口地址)
2. 从这个有参与选举DR/BDR权的列表中,创建一组没有声明自己就是DR的路由器的子集(声明自己是DR的路由器将不会被选举为BDR)
3. 如果在这个子集里,不管有没有宣称自己就是BDR,只要在Hello包中BDR字段就等于自己接口的地址,优先级最高的就被选举为BDR;如果优先级都一样,RID最高的选举为BDR
4. 如果在Hello包中DR字段就等于自己接口的地址,优先级最高的就被选举为DR;如果优先级都一样,RID最高的选举为DR;如果没有路由器宣称自己就是DR,那么新选举的BDR就成为DR
5. 要注意的是,当网络中已经选举了DR/BDR后,又出现了1台新的优先级更高的路由器,DR/BDR是不会重新选举的
6. DR/BDR选举完成后,其他Rother只和DR/BDR形成邻接关系.所有的路由器将组播Hello包到224.0.0.5,以便它们能跟踪其他邻居的信息.其他Rother只组播update packet到224.0.0.6,只有DR/BDR监听这个地址 .一旦出问题,反过来,DR将使用224.0.0.5泛洪更新到其他路由器
以上就是本节课的知识点了,大家都掌握了吗?如果有什么不详细的地方,可以进行补充,虚心请教,更多内容,登录编程学习网教育,我们等着您,期待您的咨询!