OSPF,开放式最短路径优先协议,属于自治区域内部使用的网关协议之一,他是基于链路状态制定的。
ospf有5种网络类型:
1.点对点类型,由思科提出的,自动发现邻居,不选举DR/BDR,hello报文发布时间为10s。
2.广播类型:由思科提出的网络类型,自动发现邻居,选举DR/BDR,hello报文发布时间为10s。
3.非广播型网络,由RFC提出的网络类型,手工配置邻居,选举DR/BDR,hello报文发布时间30s。
4.点到多点网络 ,由RFC提出,自动发现邻居,不选举DR/BDR,hello报文发布时间30s。
5.点到多点非广播,由cisco提出的网络类型,手动配置邻居,不选举DR/BDR,hello报文发布时间30s。
因为点对点网络类型比较好了解,所以本片文章主要说一下广播型网络类型
在广播型ospf中,DR\BDR出现之前,由于任何路由器和他的邻居都要建立邻接关系,这样路由器之间就会形成很多的邻接关系,这样就会发送太多的LSA,而且在广播型中还存在自己发给邻居的LSA又从邻居那重新发回来,导致网络中产生很多的重复的信息,因此,产生了DR|BDR。
DR|BDR的任务是:
1. 描述这个多址网络和该网络上剩下的其他相关路由器
2. 管理这个多址网络上的flooding过程.
3. 同时为了冗余性,还会选取一个BDR,作为双备份之用.
DR|BDR的选取规则
1.路由器的每个路由端口都有优先级,优先级共8为,范围是0-255,端口的默认优先级是1,当优先级变成0时将无法被选举成DR|BDR,设置端口的优先级的代码是:ip ospf priority
2.hello报文中包含了端口的优先级,还有可能成为DR|BDR的端口的ip地址
3.当端口在多路路由中初次启动时,它把DR|BDR设置成0.0.0.0,同时设置等待计时器的值等于路由器无效间隔
路由器的路由标识的定义:
1.可以在ospf中自己设定路由标识
2.如果没有定义路由标识,而且路由器定义了loopback,那么选择ip地址***的loopback端口当做路由标识
3.如果这些都没有,那么将使用ip地址***的物理端口的ip地址作为路由标识
DR|BDR选取过程:
1.路由器在和邻居建立双向通信之后,检查邻居hello报文中的primary、DR和BDR字段,列出所有可能参与选举DR|BDR的邻居(primary为0除外)
2.如果有多台路由器宣告自己是BDR(即在hello报文将自己表示成BDR),将选举优先级大的作为BDR,如果优先级都相同,则选择路由器标识大的作为BDR。如果没有路由器宣告自己是BDR,则选择优先级大的作为BDR(同时排除宣告自己是DR的路由器),如果优先级都相同,则根据路由器标识判断。
3.如果一个或者多个路由器宣告自己是DR,那么就从这些路由器中选择优先级高的作为DR,如果优先级相同,选择路由器标识大的作为DR;如果没有路由器宣告自己是DR,那么将上一步中选举出的新的BDR当做DR。
4.如果路由器新晋成为DR或者BDR,或者路由器新的退出DR或者BDR,重复步骤2和3,然后结束选举,这样做是防止一台路由器同时宣告DR和BDR
5.在ospf中不存在抢占,即当ospf选举出新的DR和BDR之后,即使有 一个优先级更高的路由器,也不进行重新选举。
6.DR/BDR选举完成后,DRother只和DR/BDR形成邻接关系.所有的路由器将组播Hello包到AllSPFRouters地址 224.0.0.5以便它们能跟踪其他邻居的信息,即DR将泛洪update packet到224.0.0.5;DRother只组播update packet到AllDRouter地址224.0.0.6,只有DR|BDR能够监听这个地址