雏鹰部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6279|回复: 11

OSPF实验2:DR/BDR的选取

[复制链接]
发表于 2007-12-11 11:41:34 | 显示全部楼层 |阅读模式
OSPF实验2:DR/BDR的选取

情况一:

   我们都知道OSPF选取DR的过程是首先比较优先级,在优先级相同的情况下选择RID较高的为DR,但是我多次实验后发现在很多时候DR并非RID最高的路由器,这是什么原因呢?

    在翻阅了卷一有关OSPF DR选取的介绍时,发现了这么一句话:“在一个多址网络上,最先初始化启动的两台具有DR选取资格的路由器将成为DR和BDR路由器。”这是我总结了非最高RID而成为DR的实验,发现这些路由器都是我在进行OSPF配置的时候首先启动ospf的路由器,那会不会是因为这些路由器首先启动了OSPF,然后把自己设置为DR导致其他路由器启动OSPF后就不再进行DR的选取了呢?于是我做了下面的这个实验。


    实验的topo很简单,我就不画了,就是两台路由器通过fa0/0口相连接。
R1:
conf t
ho R1
int lo0
ip add 1.1.1.1 255.255.255.0
int fa0/0
ip add 172.1.1.1 255.255.255.0
no sh
router ospf 10
net 172.1.1.1 0.0.0.0 a 0

R2:
conf t
ho R2
int lo0
ip add 2.2.2.2 255.255.255.0
int fa0/0
ip add 172.1.1.2 255.255.255.0
no sh

R1启动ospf进程后,我们在R2上暂时先不开启ospf,在R1上发现了以下信息:

R1#sho ip ospf int
FastEthernet0/0 is up, line protocol is up
  Internet Address 172.1.1.1/24, Area 0
  Process ID 10, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 1
  Transmit Delay is 1 sec, State DR, Priority 1
  Designated Router (ID) 1.1.1.1, Interface address 172.1.1.1
  No backup designated router on this network
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:01
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 0, maximum is 0
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor ** is 0, Adjacent neighbor ** is 0
  Suppress hello for 0 neighbor(s)

    我们看到R1已经把自己设定为DR了,按照OSPF的规则,新加入的路由器即使RID比DR高,也不会替换DR。这就说明了为什么在有些时候DR并非RID最高的路由器。

    当然这个实验也顺便验证了ospf中DR选取结束后,除非DR路由器出现故障,否则就是有更高优先级或者RID的路由器进入OSPF进程,也是无法改变DR的。既DR是不可以抢夺的!

情况二(本实验参照了ITAA实验室Netfish的实验):
    ospf中有一个Wait Timer计时器,在这个计时器所限定的时间内起来的OSPF可以视为同时起机。

  TCP/IP卷1第292页对于这个时间间隔是这样定义的:
    Wait Timer:在开始选举DR和BDR之间,路由器等待邻居路由器的Hello数据包通告DR和BDR的时长。长度就是RouterDeadInterval的时间。

    本实验拓扑与情况一相同,不同的地方在于当我们在R1上启动OSPF后,迅速(一定要迅速,非常迅速!40s之内)在R2上也启动ospf,通过debug信息可以看到以下情况:
R1#debug ip ospf adj
OSPF adjacency events debugging is on
R1#debug ip ospf ev
OSPF events debugging is on
*Aug 14 00:56:19.047: OSPF: Interface FastEthernet0/0 going Up
*Aug 14 00:56:19.051: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 ** 172.1.1.1
*Aug 14 00:56:19.551: OSPF: Build router LSA for area 0, router ID 1.1.1.1, seq 0x80000001
*Aug 14 00:56:19.555: OSPF: Rcv hello ** 2.2.2.2 area 0 ** FastEthernet0/0 172.1.1.2
*Aug 14 00:56:19.555: OSPF: End of hello processing
R1(config-router)#
*Aug 14 00:56:29.051: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 ** 172.1.1.1
*Aug 14 00:56:29.451: OSPF: Rcv hello ** 2.2.2.2 area 0 ** FastEthernet0/0 172.1.1.2
*Aug 14 00:56:29.455: OSPF: 2 Way Communication to 2.2.2.2 on FastEthernet0/0, state 2WAY
*Aug 14 00:56:29.455: OSPF: End of hello processing
R1(config-router)#
*Aug 14 00:56:39.051: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 ** 172.1.1.1
*Aug 14 00:56:39.427: OSPF: Rcv hello ** 2.2.2.2 area 0 ** FastEthernet0/0 172.1.1.2
*Aug 14 00:56:39.427: OSPF: End of hello processing
R1(config-router)#
*Aug 14 00:56:49.051: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 ** 172.1.1.1
*Aug 14 00:56:49.447: OSPF: Rcv hello ** 2.2.2.2 area 0 ** FastEthernet0/0 172.1.1.2
*Aug 14 00:56:49.447: OSPF: End of hello processing
R1(config-router)#
*Aug 14 00:56:59.051: OSPF: end of Wait on interface FastEthernet0/0
*Aug 14 00:56:59.051: OSPF: DR/BDR election on FastEthernet0/0
*Aug 14 00:56:59.051: OSPF: Elect BDR 2.2.2.2
*Aug 14 00:56:59.055: OSPF: Elect DR 2.2.2.2
*Aug 14 00:56:59.055:        DR: 2.2.2.2 (Id)   BDR: 2.2.2.2 (Id)

*Aug 14 00:56:59.055: OSPF: Send DBD to 2.2.2.2 on FastEthernet0/0 seq 0x826 opt 0x52 flag 0x7 len 32
*Aug 14 00:56:59.059: OSPF: Send hello to 224.0.0.5 area 0 on FastEthernet0/0 ** 172.1.1.1
*Aug 14 00:56:59.459: OSPF: Rcv hello ** 2.2.2.2 area 0 ** FastEthernet0/0 172.1.1.2
*Aug 14 00:56:59.463: OSPF: Neighbor change Event on interface FastEthernet0/0
*Aug 14 00:56:59.463: OSPF: DR/BDR election on FastEthernet0/0
*Aug 14 00:56:59.463: OSPF: Elect BDR 1.1.1.1
*Aug 14 00:56:59.467: OSPF: Elect DR 2.2.2.2
*Aug 14 00:56:59.467: OSPF: Elect BDR 1.1.1.1
*Aug 14 00:56:59.467: OSPF: Elect DR 2.2.2.2
*Aug 14 00:56:59.471:        DR: 2.2.2.2 (Id)   BDR: 1.1.1.1 (Id)

这个时候我们发现两个路由器进行了DR/BDR的选取,并且结论和书上介绍的完全一致。

从Debug信息的时间上来看,从启动OSPF进程到开始选举DR和DBR的时间间隔是40秒,在这个时间段内,无论R1还是R2并没有选举DR和DBR。

在RFC2328中对这个时间间隔的定义如下:
Wait Timer
        A single shot timer that causes the interface to exit the
        Waiting state, and as a consequence ** a Designated Router
        on the network.  The length of the timer is RouterDeadInterval
        seconds.

因为在广播链路中的RouterDeadInterval是40秒,所以我们看到的这个时间间隔为40秒。

结论:
      并不是先启动OSPF进程的路由器就是DR,而是有一个时间间隔让路由器来等待其他路由器,在这个时间间隔内,路由器相互监听Hello包中的DR和DBR字段中的信息,并且服从优先级原则,可以这样认为——选举是公平的。


实际情况:
     在实际的网络中,即使是40秒内同时起进程的情况也少见;实际情况下是率先启用ospf进程的路由器就很有可能成为DR,第二个启动的就很有可能成为BDR,考虑到路由器故障或者重启等情况,实际的运行效果是:“活”得最久的路由器成为DR(比多长时间不重起) .
发表于 2007-12-11 13:15:48 | 显示全部楼层
没有错,特别是在FR Hup-Spoke环境中,要是起OSPF,并将接口模式改成ip ospf-network brocast,
没有在希望它成为DR的Router上面先起OSPF的话,会造成很多令人迷惑眩晕的结果~~~
发表于 2007-12-11 14:14:49 | 显示全部楼层
还是来晚了一步...可惜啊...这么多东西啊???好好研究一下..
发表于 2008-4-17 17:19:56 | 显示全部楼层
trrrrrrrtttttttttttttttttttttttttttttttttt
发表于 2008-4-18 15:13:10 | 显示全部楼层

该顶就要顶

该看就要看,该顶就要顶
发表于 2009-2-12 21:50:36 | 显示全部楼层
又学了一些东西。谢咯
发表于 2009-2-13 03:36:50 | 显示全部楼层

路过

路过, 呵呵,o(∩_∩)o...

空调 全直流e涡流变频,能效比高达6.09,省电60%*(以26型为例)
空调 ±0.5℃*温差,恒温舒适;
空调 风道全球化,内外双静音;
空调 第二代光化等离子,除菌更高效;
空调 健康负氧离子,清爽怡人;
发表于 2009-2-17 20:55:10 | 显示全部楼层
学习了,顶
发表于 2009-4-21 20:23:18 | 显示全部楼层
对DR/BDR的选举总是似懂非懂,现在又进一步明了 谢谢
发表于 2009-6-18 12:08:20 | 显示全部楼层
好东西阿!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|熊猫同学技术论坛|小黑屋| 网络工程师论坛 ( 沪ICP备09076391 )

GMT+8, 2024-11-22 18:58 , Processed in 0.077056 second(s), 19 queries , Gzip On.

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