设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 950|回复: 11
收起左侧

[求助] 想问下关于DR与BDR的选举问题

[复制链接]
发表于 2017-7-8 17:21:38 | 显示全部楼层 |阅读模式
5鸿鹄币
大家好,我想理清楚一下DR与BDR的一些选举概念 DR.png

我用的是这幅图来做实验的
R2.png


这个是R2截图

背景:这个是一个全局是 区域1 进程1的OSPF拓扑 RID都是 R1为 1.1.1.1 以此类推。所以有几个问题想问一下
1、DR与BDR的个数是以区域还是一个网络(这里我用的是以太广播网络)
(这里我貌似用show ip ospf nei 来查看,发现有许多的DR与BDR)
2、DR或者DBR的选举是不是以优先级与RID大小(书上说是RID大的优先)来决定的?

(如果按照最大的话这里的RID4.4.4.4是最大的,如果用R1与R2{参考R2截图}之间的网络 1.1.1.1 2.2.2.2来比较的话 2.2.2.2为大,那么为什么这里1.1.1.1选举为DR呢)
谢谢大神们,帮忙解释下


最佳答案

查看完整内容

1. DR/BDR简介 在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。 如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步。这需要较长 ...
发表于 2017-7-8 17:21:39 | 显示全部楼层
1. DR/BDR简介  在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。  如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router,备份指定路由器)的概念。  BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。  DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。  如图7所示,用实线代表以太网物理连接,虚线代表建立的邻接关系。可以看到,采用DR/BDR机制后,5台路由器之间只需要建立7个邻接关系就可以了。
  图7 DR和BDR示意图  2. DR/BDR选举过程  DR和BDR是由同一网段中所有的路由器根据路由器优先级、Router ID通过HELLO报文选举出来的,只有优先级大于0的路由器才具有选取资格。 进行DR/BDR选举时每台路由器将自己选出的DR写入Hello报文中,发给网段上的每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时,路由器优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。 需要注意的是:  只有在广播或NBMA类型接口才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。  DR是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。  路由器的优先级可以影响一个选取过程,但是当DR/BDR已经选取完毕,就
算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经选取的DR/BDR成为新的DR/BDR。  DR并不一定就是路由器优先级最高的路由器接口;同理,BDR也并不一定就是路由器优先级次高的路由器接口。   DR/BDR详细选举过程       版权声明:原创作品,谢绝转载!否则将追究法律责任。   关于DR/BDR的选举似乎一直没有定论,卷一中所写的选举过程实为引用的RFC2328,而其内容用“过程”来定义似乎是不太容易理解的,准确来说,应该是状态的触发,我们想想可知,OSPF协议选举DR/BDR过程的代码不会是这些步骤的顺序实现,所以我们在分析的时候要找到每一个步骤的触发点,下面我具体分析一下,事先声明这不是翻译。

1.  After two-way communication has been established with .e or more neighbors, examine the Priority, DR, and BDR fields of each neighbor's Hello. List all routers eligible for election (that is, routers with priority greater than 0 and whose neighbor state is at least two-way); all routers declaring themselves to be the DR (their own interface address is in the DR field of the Hello packet); and all routers declaring themselves to be the BDR (their own interface address is in the BDR field of the Hello packet). The calculating router will include itself . this list unless it is ineligible.     在广播型链路上,所有OSPF路由器之间进入Two-Way状态后开始触发选举过程,这个状态下,每一台路由器的邻居ID字段都包含其他所有的路由器的ID,这是选举公平的保证。     下一个关键点是,选举初始化时,所有的路由器在一开始都宣称自己是DR和BDR,这里涉及到RFC中的两个英文单词 declare 和 claim,很多人认为这上面有文章,其实这两个单词都有宣称的意思,只不过declare用于更为正式的场合,试想一台OSPF路由器会有这等人性的思考?所以用词我觉得作者可能都没有怎么考虑,因为在路由器上实现所谓的“宣称自己是DR/BDR”就是将自己的路由器ID写入Hello包中DR ID字段中和BDR ID字段中。    2.  From the list of eligible routers, create a subset of all routers not claiming to be the DR (routers declaring themselves to be the DR cannot be elected BDR).     第2步很有意思,似乎与第1步冲突,既然都声称自己是DR,那么不声称自己是DR的子集一定为空啊? 其实这是思维定势,因为一个选举的代码是要始终有效的,而不是仅仅用于初始化的选举。
关键点就一句话:能进入这个子集的条件是,这台路由器的DR ID字段里写的不是自己的ID,这第2步是为下一步选举BDR做准备的!     具体我们分析一下:在初始化状态下,即网络中没有DR,所有人都宣称自己是DR,也宣称自己是BDR,根据原则,这个子集为空,这时会直接跳到第5步,先去选举DR,在DR选举出以后,也就是网络中存在DR,现象是这样:除了DR在DR ID字段的写的是自己的ID以外,别的路由器都不是写的自己,而是选举出的那个DR的ID,那么这时就符合进入子集的条件了,除DR外的所有路由器都会进入这个子集,进行下一步,即BDR的选举。    3.  If .e or more neighbors in this subset include its own interface address in the BDR field, the neighbor with the highest priority will be declared the BDR. In a tie, the neighbor with the highest Router ID will be chosen.     第3步,在选举BDR的时候,大家都在BDR ID字段写的自己的ID,选举结果明确后,只有BDR发的Hello包中写的是自己的ID,子集里其余的路由器都不是写的自己ID,而是选举出来的BDR的ID。    4.  If no router in the subset claims to be the BDR, the neighbor with the highest priority will become the BDR. In a tie, the neighbor with the highest Router ID will be chosen.     第4步应该这样理解:如果这个子集没有路由器说自己是BDR,那就意味着BDR死掉了(本来就他一个说自己是BDR,死了就说不出来了),BDR会重新选举。    5.  If .e or more of the eligible routers include their own address in the DR field, the neighbor with the highest priority will be declared the DR. In a tie, the neighbor with the highest Router ID will be chosen.     第5步是DR的选举过程,没有所谓的子集概念,也不是第2步以后的步骤,而是不满足第2步的条件直接跳到这一步。选举DR的资格是:在DR ID字段中写的是自己的ID    6.  If no router has declared itself the DR, the newly elected BDR will become the DR.     第6步中说到的如果没有人宣称自己是DR对应的情景是这样,别人都说A是DR,A也应该说自己是DR,可是他死了,死人是不会说话的,所以BDR成为DR,其实这一条就是说,如果DR当掉,BDR会成为新的DR。而如果这时BDR还没有选出来,还是会先进行BDR的选举,然后BDR成为DR,为什么,因为大家的DR字段里还是写的那个死了的DR,不符合选举DR的条件,第5步无法执行
7.  If the router performing the calculation is the newly elected DR or BDR, or if it is no longer the DR or BDR, repeat steps 2 through 6.     其实这一步就是说明了这个程序不仅仅是为初始化的选举用的,当稳定的角色分配出现问题时,依然能通过这些原则使角色重新定义。     总结:    其实DR/BDR选举就是“字段游戏”,DR的选举资格:在Hello包中的DR ID写的是自己的ID,BDR的选举资格:在Hello包中的BDR ID写的是自己的ID 且在 DR ID字段写的不是自己的ID,具体选举还要看接口优先级和最高Router-id

评分

参与人数 1好评度 +1 收起 理由
Harley_li + 1 赞一个!

查看全部评分

沙发 2017-7-8 17:21:39 回复 收起回复
回复

使用道具 举报

发表于 2017-7-8 17:36:55 | 显示全部楼层
其实你问的这个问题应该在NA里面就已经解决的的哈,下面我还是说明下哈
板凳 2017-7-8 17:36:55 回复 收起回复
回复

使用道具 举报

发表于 2017-7-8 17:46:43 | 显示全部楼层
地板 2017-7-8 17:46:43 回复 收起回复
回复

使用道具 举报

发表于 2017-7-8 21:41:20 | 显示全部楼层
1、以区域
5# 2017-7-8 21:41:20 回复 收起回复
回复

使用道具 举报

 楼主| 发表于 2017-7-9 10:08:58 | 显示全部楼层
李壑彝 发表于 2017-7-8 17:36
其实你问的这个问题应该在NA里面就已经解决的的哈,下面我还是说明下哈

你好,针对我上面第二个问题,引用这句话“如果优先级相等,则Router ID大者胜出。”,为什么1.1.1.1的RID会大于2.2.2.2RID呢?1.1.1.1选为DR。麻烦指导一下,谢谢!
6# 2017-7-9 10:08:58 回复 收起回复
回复

使用道具 举报

发表于 2017-7-9 10:17:47 | 显示全部楼层
7# 2017-7-9 10:17:47 回复 收起回复
回复

使用道具 举报

 楼主| 发表于 2017-7-9 13:51:14 | 显示全部楼层
wangbin2010jy 发表于 2017-7-9 10:08
你好,针对我上面第二个问题,引用这句话“如果优先级相等,则Router ID大者胜出。”,为什么1.1.1.1的RID ...

大神,我明白了,原来我在敲配置的时候线都连好了,然后先配置了R1的OSPF配置,然后在依次配置其他的,可能依照在没有选举DR之前,都声称自己是DR,可能因为这样。我刚才故意把R1与R2之间的线断了,让他妈重新选举,发现R2成了DR R1成了BDR。谢谢大神指导啊
8# 2017-7-9 13:51:14 回复 收起回复
回复

使用道具 举报

发表于 2017-7-10 07:52:53 | 显示全部楼层
wangbin2010jy 发表于 2017-7-9 13:51
大神,我明白了,原来我在敲配置的时候线都连好了,然后先配置了R1的OSPF配置,然后在依次配置其他的,可 ...

嗯嗯,技术都不难哈,哈哈,只要多看文档就好了
9# 2017-7-10 07:52:53 回复 收起回复
回复

使用道具 举报

发表于 2017-7-10 10:04:01 | 显示全部楼层
你这图,明显都是点到点的链路,故DR和BDR绝对不会超出一条链路两端的设备之外。也就是说,R1和R2之间会选举DR和BDR,同样,R2和R3之间也会选举DR和BDR,R3与R4也是如此,与前两者没任何关系。

评分

参与人数 1好评度 +1 收起 理由
陳罐西 + 1 赞一个!

查看全部评分

10# 2017-7-10 10:04:01 回复 收起回复
回复

使用道具 举报

发表于 2017-7-10 13:42:01 | 显示全部楼层
wangbin2010jy 发表于 2017-7-9 13:51
大神,我明白了,原来我在敲配置的时候线都连好了,然后先配置了R1的OSPF配置,然后在依次配置其他的,可 ...

嗯 对的。导致实验与理论出现差错。就是因为 前提条件的问题。一个是点到点,另一个就是设备起来的先后顺序。
有时候,思科说的是按照谁的什么大,谁优先。结果是按照谁先起来,谁优先。
11# 2017-7-10 13:42:01 回复 收起回复
回复

使用道具 举报

发表于 2017-7-10 13:42:06 | 显示全部楼层
wangbin2010jy 发表于 2017-7-9 13:51
大神,我明白了,原来我在敲配置的时候线都连好了,然后先配置了R1的OSPF配置,然后在依次配置其他的,可 ...

嗯 对的。导致实验与理论出现差错。就是因为 前提条件的问题。一个是点到点,另一个就是设备起来的先后顺序。
有时候,思科说的是按照谁的什么大,谁优先。结果是按照谁先起来,谁优先。
12# 2017-7-10 13:42:06 回复 收起回复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-3-29 18:22 , Processed in 0.073905 second(s), 16 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表