1. OSPF邻居建立不成功的因素
- hello包间隔不匹配,dead时间不匹配,OSPF中的Dead时间默认是hello包时间的4倍关系,也可以手动设置。
- mtu不匹配(可以通过dis ospf brief查看)。
- router id不匹配。
① 如果要运行OSPF协议,必须存在Router ID。Router ID是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识。
② Router ID一般分手动设置和自动设置,优先选择手动设置。如果没有手动设置,优先会从LOOPBACK地址中选择最大的IP地址作为Router ID。如果没有设置LOOPBACK IP,从接口地址中选择最大的IP作为Router ID。
③ Router ID可以用于DR、BDR选举,如果同区域的OSPF Router ID冲突,无法有效的进行DR,BDR选举,无法建立OSPF邻居关系。
④ 如果Router ID 在区域中不唯一,将有可能造成路由抖动,无法有效的建立OSPF邻居关系。 - area区域不匹配。不在同一个area区域。
- 认证方式或认证密码不匹配。
- ospf的hello组播地址被acl过滤(224.0.0.6)。
- 物理链路down。
- stub/NSSA 区域类型不匹配。
2.OSPF Router ID选择、作用、冲突
1. OSPF Router ID选择
① 如果通过命令设置了Router ID,则选择此作为Router ID。
② 如果没通过命令设置routerID,若有loopback地址,则选择最大的loopback地址作为router ID;若无loopback地址,则选择其他接口中地址最大的作为router ID。
2. OSPF Router ID刷新规则
① 当且仅当被选举为routerID的接口的地址被删除或修改,才会触发选举过程,此过程需要reset OSPF进程才生效。
② 被选择的接口状态改变(比如UP变为DOWN)、新配置更大的loopback或其他接口地址,均不会导致Router id重新选举。
③ Router ID不可以是0.0.0.0 或 255.255.255.255,但是Router ID只是32比特无符号整数,可以为0.0.0.1等和IP地址不相关的数字。
3. OSPF Router ID作用
① 作为区域内本路由器的唯一标识
② DR、BDR选举中,在优先级相同的时候,Router ID大的选举为DR。
4. Router ID冲突问题
① R1,R2均在area 0,R1,R2具有相同的Router ID。R1与R2直连,R1与R2之间无法建立邻居关系。R1发送hello包后,R2接受到R1的hello包,发现Router ID与自己的一致,邻居无法建立。
② R1,R2,R3处于area 0。R1和R2相连,R1和R3相连,R2和R3不互联,R2与R3之间Router ID相同。
【结果】
- R1和R2,R1和R3分别能建立OSPF邻居。
- R1能学到R2或者R3的路由,但是路由会不停的抖动,一会学到R2的,一会学到R3的。
- R2,R3之间无法学习到对方路由。
【分析】
OSPF是以(LS type、LS id、advrouter)来识别LSA,以(age、seq num、checksum)标识一个LSA实例,当收到相同的LSA的多个实例(LS类型、LS标识、宣告路由器相同)的时候,比较(age、seq num、checksum)来确定哪一个LSA是最新的。
a. 比较LSA实例的序列号,越大的越新。
b. 如果序列号相同,就比较校验和,越大越新。
c. 如果校验和也相同,就比较老化时间,如果只有1个LSA拥有MaxAge(3600秒)的老化时间,它就是最新的。
d. 如果上述都无法区分,则认为这2个LSA是相同的。R3发送的LSA,R1泛洪,R2收到该LSA。
R2检查收到的R3发送的LSA,发现(LS type、LS id、adv router)与自己一致,认为是自己始发的LSA。
R2比较(age、seq num、checksum),发现该LSA比自身存的数据库更新,则seq num+1,回复LSA。
R1收到R2的LSA后,发现(LS type、ls id、adv router)与自己数据库的R3的一致,认为是一条LSA;再比较(age、seq num、checksum),发现seqnum更大,LSA更新,则泛洪。
R3收到R1转发的R2的LSA,(type、ls id、advrouter)一样,(age、seq num、checksum)更新,跟R2一样。
-
R3/R1/R2之间不停地传递LSA,不断循环。
故:R1一会儿学到R3的路由,一会儿学到R2的路由。R2、R3之间无法互相学到路由。(因此在发生OSPF中发生路由抖动问题时,优先考虑是否Router ID冲突)[1]
③ R1和R2相连,为area 0,R2和R4相连,为area 1,R1与R4的Router ID相同。
【结果】
- area0,R1能与R2建立邻居关系。
- area1,R2能与R4建立邻居关系。
- R1、R4能互相学到路由。
【分析】
- R1发送LSA,R2收到后,向area1发送3类LSA:LS ID为路由前缀,R2为ABR,adv Router为R2的Router ID。
- R4收到3类LSA后,发现是新的router id,与自己不同,纳入LSDB,并提交路由表。
- R4发送的LSA,R2、R1相同处理,均能学到路由。
3.OSPF DR/BDR的选举规则
1. 在运行OSPF的MA网络中包括广播型和NBMA网络会存在两个问题
① 在一个有n个路由器的网络中,会形成(n*(n-1))/2邻居关系。
② 邻居间LSA的泛洪扩散混乱,相同的LSA会被复制多份
2. DR与BDR的作用
① DR(designated router)即指定路由,其负责在MA网络建立和维护邻接关系并负责LSA的同步。
② DR与其他所有的路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息,这样就大大减少了MA网络中的邻接关系数据 及交换链路状态信息消耗的资源。
③ DR一旦出现故障,其与其他路由器之间的邻接关系将全部失效,链路状态数据库也无法同步,此时就需要重新选举DR、再与非DR路由器建立邻接关系,完成LSA的同步,为了规避单点故障风险,通过选举备份指定路由器BDR,在DR失效时快速接管DR的工作。
3. DR与BDR的选举规则
① DR/BDR的选举是基于接口的。
② 接口的DR优先级越大越优先。接口的DR优先级相等时,router ID越大越优先。
③ 接口DR优先级相等时,router ID越大越优先。
④ 接口DR优先级为0,表示不参与选举,router priority最大不一定是DR/BDR。
在P2P网络及P2MP网络上具有邻居关系的路由器之间会进一步建立邻接关系。但在广播型及NBMA网络上,非DR BDR路由器之间只能建立邻居关系,不能建立邻接关系。非DR/BDR路由器与DR/BDR路由器之间会建立邻接关系,DR与BDR之间也会建立邻接关系。
4. DR和BDR的选举需要注意以下四点
① 只有在广播或NBMA类型接口时才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
② DR是指某个网段的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。
③ 若DR、BDR已经选择完毕,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
④ DR并不一定就是DR优先级最大的路由器;同理,BDR也并不一定就是DR优先级第二大的路由器。
【注意】0-255 是优先级的范围,默认是1,优先级高就可以成为DR,0是没资格选举成DR和BDR。
-
华为模拟器实验表明:这种情况循环多次后,R1/R3会重新选举一个routerID发起OSPF邻居建立过程,邻居建立后,R1能学到R2、R3的路由。 ↩