3.5【OSPF】NP十二班第四天-OSPF接口状态机及DR和BDR选举-1

OSPF接口状态机及DR和BDR选举

OSPF协议:《TCP/IP协议卷一》《OSPF和IS-IS详解》
  研究OSPF这本书好,建议读, 比卷一还好;
  通过上课入门,课后探讨,多 动手实验;自学重要
 
通过什么方式以什么方式记得更牢?
1、隔一段时间经常复习
2、当个讲师把理论知识好好沉淀 
 
华为面试一次5000块钱
 
什么情况下一边down一边Init状态?
Init状态:初始化状态:收到hello报文并且检测通过了
 
通过ACL可以过滤IP包,一端拒绝所有的接收报文但是可以发送;
对端维护本段状态是Init;本段维护对端状态是down状态
选举主从的目的是为了保证DD报文的可靠性
LSACK可以一次确认多个LSA
************************************************************************
OSPF接口状态机
RFC-开发的一个标准化文档
RFC2328
 +----+   UnloopInd   +--------+
                                  |Down|<--------------|Loopback|
                                  +----+               +--------+
                                     |
                                     |InterfaceUp
                          +-------+  |               +--------------+
                          |Waiting|<-+-------------->|Point-to-point|
                          +-------+                  +--------------+
                              |
                     WaitTimer|BackupSeen
                              |
                              |
                              |   NeighborChange
          +------+           +-+<---------------- +-------+
          |Backup|<----------|?|----------------->|DROther|
          +------+---------->+-+<-----+           +-------+
                    Neighbor  |       |
                    Change    |       |Neighbor
                              |       |Change
                              |     +--+
                              +---->|DR|
                                    +--+
 
1、DOWN->LOOPBACK (LOOPBACK接口)
如果一个接口是逻辑口,宣告进OSPF以后,接口 UP会从DOWN变成LOOPBACK状态,
2、DOWN->POINT-TO-POINT(串口、(点到点、点到多点))
如果一个接口是串口,宣告进OSPF以后
3、DOWN->Waiting->(DRBDRDRother) (广播网、非广播网)
 如果一个接口是
 DR:指定路由器(waiting时间超时,从Waiting过渡到DR)
 BDR: 备份的指定路由器(BackupSeen)
 DRother:不是一个指定路由器(没有选举权,不参与选举)
 
Waiting有时间限制,在广播网中,时间是40s
 
接口状态机和邻居状态机没有关系
OSPF算是最复杂 的 IGP协议
 
现在有3台路由器,3台路由器里面会有几个DR?
会有2个DR:DR指的是接口的状态
在一个广播域(网段 )里面只存在一个DR和一个BDR,而Dother可以有多个,现在是有两个网段,有两个DR,主要的作用是为了减少LSA的泛洪。
 
43:25

DR和BDR
 
 
广播网里面有5台设备,1路由器同样的LSA需要通告4次,每一个邻接都要通告一次;同样的LSA需要多次去发送,这样意味着发送的LSA是重复的,重复的LSA会带来性能和带宽的浪费,怎么避免这个问题?让LSA只发送一次其他的设备都能收到?
 
这个方案就是在网络里面去选几台指定设备-DR;大家都和指定设备DR建立邻接关系,其他的设备之间是不建立邻接关系的,由指定设备收集所有的LSA,然后再通告给大家。LSA只发送一次,发给DR,再由DR转发给大家;DR负责收集所有设备的LSA,再由DR统一发送,这样就可以避免LSA的多次发送。可以减少性能的利用率和带宽占用率。
 
同时,在OSPF里面,为了网络可靠性的保证,除了有一个DR,还有一个BDR,BDR相当于DR的备份。DR挂了以后,BDR会升级为DR,会重新选举,选举BDR;DR是必须的,BDR是可以没有的。在一个广播网里面只能有一个DR和一个BDR。
 
所有的设备都会和DR和BDR建立邻接关系,所有的DRother设备之间只能建立邻居关系。如果DR失效,BDR设备会升级为DR,然后重新从DRother中选举BDR。
 
DR和BDR之间也是邻接关系。
 
如何选举DR和BDR?
1、先比较优先级,在HELLO报文里面有一个字段DR Prority 8个比特,默认情况下优先级为1,优先级大的称为DR设备
2、如果优先级一样,比较router-id,大的一段称为DR
//看hello报文
 
DR选举出来,能被抢占吗?
一旦DR和BDR选举之后,不能被抢占:接口优先级为0表示这台设备不能参与选举,没有选举权,会马上进入DRother状态,1是DR,2是DRother,1和2建立完成以后,3优先级调整为10,3状态还是BDR,3还是不能抢占,为了保证OSPF网络的稳定性,因为DR的设备有很关键的作用,它会通告一种LSA(2类LSA):如果DR设备容易被抢占,2类LSA就会由新的DR设备重新发,重新发的话就会影响OSPF网络的整个区域重新执行一次SPF算法,引起不稳定,DR一旦选举出来以后,是不能被抢占的。
 
如果重启的话,3会变成DR
 DR规则:
1.在选举期内,优先级高的成为DR,其次的成为BDR;
2.在选举期内,如果优先级一样,Router-ID高的成为DR,其次的成为
BDR;
3.在选举期外,不存在抢占性;
4.DR失效以后,BDR升级成为DR,重新选举BDR;
5.clear ip ospf process(重启OSPF进程)可以重选;
6.DR正常时,BDR只接收所有信息,转发LSA和同步LSDB的任务由DR完 成,当DR故障时,BDR自动成为DR,完成原DR的工作,并选举新的 BDR
 
实际的选举步骤是先选举BDR,由BDR升级为DR,再去选一个新的BDR,优先级为0表示没有选举权。
 
DR和BDR选举之后,3是后加入的,3是如何知道网络里面是否已经存在DR和BDR?
广播网里面,正常情况下是40s的选举期,选举期内会等待,HELLO报文里面有DR address和BDR address 接口的IP地址;如果网络中存在络DR和BDR,在发送的HELLO报文里面会通告DR和BDR接口的IP地址。
如果DR是携带IP地址的,BDR为空,说明网络里面存在DR不存在BDR;如果DR和BDR都为空,说明网络里面不存在DR和BDR
 
 
在校园网中,router-id自己选举,容易冲突,一定要手动合理去规划router-id
 
DR和BDR是在哪个阶段去选举的?
DR和BDR是接口状态机,和邻居状态机没什么关系,是在2WAY状态,进入邻居状态以后再进行DR和BDR的选举。
(1)有效时间内,接口的waiting-time还没有超时,已经进入2WAY状态,邻居状态以后,    Backupseen触发,可以交互hello报文进行DR和BDR的选举;
(2)有效时间之外进入2WAY状态,一旦有效状态之外过渡到2WAY,说明网络之中已经存在DR了。
 
先宣告1的接口进入OSPF,40s之后再宣告3的接口进OSPF,已知1的优先级为1,3的优先级为10;1和3之间谁是DR,谁是BDR?
1是DR,3是BDR,1已经超时,说明有效时间已经超时了,超时以后在有效时间范围之内都没有选举出来DR,1会认为自己是DR;1再去发送hello报文给3,hello报文里面已经填充了DR设备的接口的IP地址,3收到1的HELLO报文,从这HELLO报文中可以得知,网络中已经存在DR设备,而BDR是空的,由于DR和BDR是不能被抢占的,3只能成为BDR;
 
 
改一下,20s之后把3宣告进OSPF,在有效时间范围内交互HELLO报文,DR和BDR字段都是空的,可以进行正常的选举,3的优先级大于1的优先级,3就会变成DR,1就会变成BDR。
 

2WAY状态会去选举DR和BDR,2没有选举权,1和3是有效优先级;
(1)如果网络里面没有DR和BDR,先选举BDR;先选举BDR,BDR升级为DR,BDR位置空出来,重新选举BDR
(2)如果网络里面存在DR,不存在BDR,直接选举一个BDR
(3)如果网络里面没有DR,存在BDR,由BDR升级为DR,空闲出BDR的位置再去选举一个BDR。
(4)既有DR又有BDR,不用选
网络里面现在没有DR和BDR,先选举BDR,3成为BDR;BDR升级为DR,BDR位置空出来,重新选举BDR
 
为什么这样选?因为RFC规定,在有效时间范围之内,需要先选举BDR再去选举DR,不能一步到位。
 
如果3台设备优先级都为0,则直接变为Dother,都处于2WAY状态

总结:区分开接口状态机和邻居状态机;接口状态机:接口状态UP以后,如果是广播网或者是非广播网,接口状态会从DOWN->Waiting;waiting的时间会等于一个dead的时间,广播网是40s;等待一个DR和BDR的选举,邻居状态机变为2WAY以后才开始选举的过程,如果在waiting的时间范围之内都没有选举出来谁是DR,会认为自己是DR,2WAY等待DR选举出来以后会过渡到exstart.
 
如果加一台设备,在40s选举期间,那台设备会变为DR,新加入者收到HELLO报文,发现DR和BDR都为空,则自己为DR
 
为什么通告DR和BDR填充IP地址而不是router-id?
***************************************************************
什么原因会影响OSPF邻接的建立?
1、MTU不匹配(exstart-exstart或者exstart-exchange)
2、DR P=0,DR的优先级都为0   (2WAY)
3、链路请求列表和重传列表不为空(loading)
**************************************************************
【DR和BDR的选举实验】1:49
2:0
***************************************************************
在一个广播域里面(VLAN划分广播域),只能存在一个DR和一个BDR,其他设备都是DOTHER。
 
在一个广播域里面如何存在两个DRother?一山不容二虎的过渡状态
肯定存在一山二虎的情况的,比如说,弄到不同的 VLAN里面比如R1在VLAN1,R4在VLAN4里面,不通的,不通不能交互HELLO报文,接口UP40秒以后 ,没有选举出DR会认为自己是DR;两端都认为自己是DR以后,再把端口划到同一个VLAN,交互包,这时,同一个广播域里面存在两个老大,就会火拼看谁胜出,通过优先级和router-id来选的;
或者,通过修改hello时间来演示;ip ospf hello-interval 双方都不接收对方发送的hello报文。
****************************************************************
在发送hello报文的时候DR和BDR字段填充的是DR和BDR接口的IP地址,为什么这么做而不是填充router-id?
在广播网中选举DR/BDR是为了减少LSA泛洪,邻居状态进入2WAY状态以后,开始选举DR/BDR,在网络里面需要存在DR,可以没有BDR;选举出来以后,所有的其他设备DRother都需要和DR去交互LSA,发送DD报文。
 
这种交互方式是通告单播去执行的,不是通过组播,现在只需要将LSA交互给DR,由DR分发给大家,需要以单播的方式交互给DR,需要知道目标的IP地址,这就是为什么 填充的是IP地址而不是router-id;(现在处于2WAY状态没有交互LSA,目的是为了去交互LSA)
 
router-id是一个虚拟地址,可以随便配置
 
**********************************************************
组播组地址224.0.0.6 ALLDRouters所有指定路由器
 
只有DR和BDR才会去监听组播组地址,其他设备DRother是不会监听的;DRother会向这个组播组地址去通告报文,而它的目的就是将报文通告给DR和BDR
 
有两种情况:
1.建立邻接关系:DBD LSR LSU(建立邻接之初-下载地图)
2.后续定期维护LSA状态(LSU去维护一个 LSA状态;通过LSU-通告实时路况);后续DRother每隔1800s向这个组播组地址224.0.0.6去通告一个LSU,维护LSA状态;
LSA老化时间3600s,发一次LSA老化时间归0;出问题之后,3600s之后没收到LSU,会将LSA从LSDB中删除掉
 
 
224.0.0.6只有DR/BDR才会监听;224.0.0.5所有的设备都会监听。
所有的 DRother往224.0.0.6发LSU报文,发的是LSU,通告的自己LSDB里的LSA信息;DR/BDR收到这个LSU以后,首先更新自己的LSDB,后续,会将最新的LSA向224.0.0.5发送出去,所有的DRother会收到,做更新。
 这样可以保证LSA只发送 一次,正常情况下DR往224.0.0.5发送。
 
DRother之间建立的是 邻居关系;DR与DRother之间建立的邻接 关系

【实验验证】224.0.0.5/224.0.0.6组播组地址2:40
BDR需要监听224.0.0.6去维护LSDB
 
 
 
 
 
 
 
 
 
 
 
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





附件列表

原文地址:https://www.cnblogs.com/xuxaut-558/p/11254373.html