您好,登录后才能下订单哦!
作为一个典型的分析记录,分享给需要者。
一、OSPF协议描述
OSPF(Open ShortestPath First)开放最短路径优先协议为IETF开发的一种开放式的动态路由协议,该协议根据当前链路状态进行SPF算法,通过将大型网络进行逻辑层级划分,提升网络收敛速度以及可以有效避免环路产生。
OSPF数据包通信地址为组播地址:224.0.0.5和224.0.0.6。
二、OSPF-Packet类型
OSPF数据包类型主要分为Hello数据包、DBD数据包、LSR数据包、LSU数据包、LSAck数据包。
1、Hello数据包:充当OSPF-Router之间保活角色;
2、DBD数据包:OSPF-Database描述信息;
3、LSR数据包:链路状态请求;
4、LSU数据包:链路状态更新;
5、LSAck数据包:链路状态请求确认;
三、OSPF-NET类型
OSPF网络类型主要分为P-to-P(Point-to-Point)点到点网络、MA(multi-access)/Broadcast多路访问/广播网络、NBMA(Non-broadcastmulti-access)非广播多路访问网络、P-to-MP(Point-to-Multipoint)点到多点网络、以及Virtual-links(虚链路)网络。
1、P-to-P:使用串行链路连接单独一对路由器的点到点网络;
2、MA/Broadcast:包括以太网等多址访问的网络;
3、NBMA:可以连接两台以上路由器,但是没有广播数据包的能力;
4、P-to-MP:一种点到点链路的集合;
5、Virtual-links:没有编号的点到点网络。
四、OSPF-Router类型
OSPF路由器类型分为DR(Designated Router)指定路由器、BDR(Backup Designated Router)备用指定路由器、DR-other其他类路由器。特别说明的一点是OSPF-Router类型并非按照路由器来进行划分,而是按照相同区域中的接口来进行划分,因此DR、BDR以及DR-other只是OSPF接口的属性。
1、DR:与BDR和DR-other形成邻接关系,收集并分发LSA信息给同一MA网络中的BDR和DR-other路由器,用以减少同一区域内LSA数量,避免不必要的泛洪扩散;
2、BDR:与DR和DR-other形成邻接关系,与DR和DR-other交互LSA信息,当DR失效后能够在第一时间取代DR位置;
3、DR-other:与DR和BDR形成邻接关系,将自身的链路状态数据库传送至DR和BDR的链路状态数据库中,并保证本地数据库与DR和BDR的链路状态数据库实时同步。
五、OSPF的DR以及BDR选举规则
在初始状态下,一个路由器的活动接口设置DR和BDR为0.0.0.0,这意味着没有DR和BDR被选举出来。同时设置WaitTimer,其值为RouterDeadInterval,其作用是如果在这段数时间里还没有收到有关DR和BDR的宣告,那么它就宣告自己为DR或BDR。经过Hello协议交换过程后,每一个路由器获得了希望成为DR和BDR的那些路由器的信息,按照下列步骤选举DR和BDR:
1、在路由器同一个或多个路由器建立双向的通信以后,就检查每个邻居Hello包里的优先级、DR和BDR域。列出所有符合DR和BDR选举的路由器(他们的优先级要大于0,接口状态要大于双向通信),列出所有的DR,列出所有的BDR;
2、从这些合格的路由器中建立一个没有宣称自己为DR的子集(因为宣称为DR的路由器不能选举成为BDR);
3、如果在这个子集里有一个或多个邻居(包括它自己的接口)在BDR域宣称自己为BDR,则选举具有最高优先级的路由器,如果优先级相同,则选择具有最高Router ID的那个路由器为BDR;
4、如果在这个子集里没有路由器宣称自己为BDR,则在它的邻居里选择具有最高优先级的路由器为BDR,如果优先级相同,则选择具有最大Router ID的路由器为BDR;
5、在宣称自己为DR的路由器列表中,如果有一个或多个路由器宣称自己为DR,则选择具有最高优先级的路由器为DR,如果优先级相同,则选择具有最大Router ID的路由器为DR;
6、如果没有路由器宣称为DR,则将最新选举的BDR作为DR;
7、如果是第一选举某个路由器为DR/BDR或没有DR/BDR被选举,则要重复2到6步,然后是第8步。
8、将选举出来的路由器的端口状态作相应的改变,DR的端口状态为DR,BDR的端口状态为BDR,否则的话为DR other。
在多路访问网络中,DR和BDR与该网络内所有其它的路由器建立邻接关系,这些邻接关系也是该网络内全部的邻接关系。
由于DR和BDR的引入,简化了网络的逻辑拓扑结构,将一个网状网络转变成一个星型网络,使协议包的扩散,计算变的简单,并有效防止了邻接关系震荡的发生。
在实际过程中一个路由器是先选出BDR的,但此时的BDR不会被写入接口数据库,而是会立刻将此BDR提升到了DR的地位并写入数据库,然后会再看看是否有人声称他自己是BDR,如果没有人声称的话,他会再次进行BDR的选举,并写入接口数据库中向外发通告。
当一个路由器新接入一个多路访问网络的时候,他会先等待waittime计时器到期,然后将按DR/BDR选举原则进行选举,而其之所以要先等待waittime计时器到期是因为它刚刚接入此网络,不知道此网络的状况,因此他需要收集hello包进行分析。如果其收集到的hello包有证据表明此网络已经稳定,即DR/BDR选举已完成,此时就算再接入一台具有更高Router-id的路由器时也并不会再次触发选举。
六、在同一MA-NET中最高RouterID非DR的原因探究
在实际运行中常常遇见在同一广播网络中具有最高Router-id的路由器并未被选举为DR。
造成此类现象的根本原因是:在一个MA网络上,最先初始化启动的两台具有DR选举资格的路由器将成为DR和BDR路由器。
两台具有选举资格的路由器各自的OSPF进程的启动时间间隔只要不超过Wait Timer时间,那么路由器将相互监听Hello包中的DR和BDR字段中的信息,并且服从优先级原则,在一定程度上体现出了公平原则;但是如果前后启动的时间超过Wait Timer时间,那么首先启动的路由器极有可能成为DR,不管其Router-id是否更高。
综上所述在实际的MA网络环境中,即使是40秒内同时起进程的情况也少见,更多的情况是是率先启动OSPF进程的路由器就很有可能成为DR,第二个启动的就很有可能成为BDR,考虑到路由器故障或者重启等情况,实际的运行效果是“活”得最久的路由器将成为DR,在一定程度上提升了网络的稳定性。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。