OSPF七种状态详解
OSPF 七种状态详解
(转至http://553847981.blog.51cto.com)
OSPF 在完全邻接之前, 所经过的几个状态:
1. Down :此状态还没有与其他路由器交换信息。首先从其ospf 接口向外发送hello 分组,还并不知道DR(若为广播网络) 和任何其他。发送hello 分组是,使用组播地址224.0.0.5。
2. Attempt :只适于NBMA 网络,在NBMA 网络中邻居是手动指定的,在该状态下,将使用HelloInterval 取代PollInterval 来发送Hello 包。
3. Init :在DeadInterval 里收到了Hello 包,2-Way 通信还没有建立起来的状态。
4. two-way :双向会话建立,而RID 彼此出现在对方的邻居列表中。(若为广播网络:例如:以太网。在这个时候应该**DR,BDR。)
5. ExStart :信息交换初始状态,在这个状态下,本地路由器和邻居将建立Master/Slave关系,并确定DD Sequence Number ,ID 大的的成为Master 。
6. Exchange :信息交换状态:和邻居交换一个或多个DBD 分组(也叫DDP) 。DBD 包含有关LSDB 中LSA 条目的摘要信息。
7. Loading :信息加载状态:收到DBD 后,使用LSACK 分组确认已收到DBD 。将收到的信息同LSDB 中的信息进行比较。如果DBD 中有更新的链路状态条目,则想对方发送一个LSR ,用于请求新的LSA 。
8. Full :完全邻接状态,这种邻接出现在Router LSA 和Network LSA 中。
为了模拟出OSPF 的基本网络环境,这里有两种配置,一种为普通p2p 加上MA 的网络,另一种为NBMA 网络。
基本链路配置:
R1:
interface Loopback0
ip address 1.1.1.1255.255.255.255
!
interface Serial1/0
ip address 12.1.1.1255.255.255.0
serial restart-delay 0
clock rate 64000
!
R2:
interface Loopback0
ip address 2.2.2.2255.255.255.255
!
interface FastEthernet0/0
ip address 23.1.1.2255.255.255.0
speed auto
duplex auto
!
interface Serial1/1
ip address 12.1.1.2255.255.255.0
serial restart-delay 0
!
R3:
interface Loopback0
ip address 3.3.3.3255.255.255.255
!
interface FastEthernet0/0
ip address 23.1.1.3255.255.255.0
speed auto
duplex auto
!
NBMA 基本链路配置:
R1:
interface Loopback0
ip address 1.1.1.1255.255.255.255
!
interface Serial1/0
ip address 13.1.1.1255.255.255.0
encapsulation frame-relay
no fair-queue
serial restart-delay 0
frame-relay map ip 13.1.1.3103broadcast
no frame-relay inverse-arp
!
R2:
frame-relay switching
!
interface Serial1/0
no ip address
encapsulation frame-relay
no fair-queue
serial restart-delay 0
clock rate 64000
frame-relay lmi-type ansi
frame-relay intf-type dce
frame-relay route 301interface Serial1/1103
!
interface Serial1/1
no ip address
encapsulation frame-relay
serial restart-delay 0
clock rate 64000
frame-relay lmi-type ansi
frame-relay intf-type dce
frame-relay route 103interface Serial1/0301
!
R3:
interface Loopback0
ip address 3.3.3.3255.255.255.255
!
interface Serial1/1
ip address 13.1.1.3255.255.255.0
encapsulation frame-relay
serial restart-delay 0
frame-relay map ip 13.1.1.1301broadcast
no frame-relay inverse-arp
!
所有上OSPF 协议均采用以下配置:
router ospf 10
router-id x.x.x.x (x 编号)
network 0.0.0.0255.255.255.255area 0
1. Attempt :
只适于NBMA 网络,如果一台路由器的OSPF 一直”卡“在Attempt 状态:表明该路由器已发送一个Hello 报文,但是没有接到邻居的回应。通常,这个问题出现在使用了neighbor 命令指定邻居的NBMA 网络中。
a. 某一台上(R1)指定一个错误的邻接地址:
R1:
router ospf 10
router-id 1.1.1.1
network 0.0.0.0255.255.255.255area 0
neighbor 13.1.1.2
!
R1#showip os neighbor
Neighbor ID Pri State Dead Time Address
Interface
N/A
Serial1/00ATTEMPT /DROTHER00:00:4613.1.1.2
b. 使用ACL 阻止了Hello 分组:
R1:
interface Serial1/0
ip access-group 10in
!
access-list 10deny 13.1.1.00.0.0.255
access-list 10permit any
!
R1#showip os neighbor
Neighbor
Interface
N/A
Serial1/0ID Pri State Dead Time Address 0ATTEMPT /DROTHER00:01:5413.1.1.3
另外,当一端指定了neighbor ,另一端没有指定neighbor 时,OSPF 会经历一个比较长的周期才能建立FULL 的邻接关系,这种情况也会与种类及平台有关,并不是统一的结论。
2. INIT :
收到第一个OSPF Hello 分组就进入到Init 状态:首先发送拥有自身ID 信息的Hello 报文。与之相邻的路由器如果收到这个Hello 报文,就将这个报文内的ID 信息加入到自己的Hello 报文内。
如果的某端口收到从其他发送的含有自身ID 信息的Hello 报文,则它根据该端口所在网络类型确定是否可以建立邻接关系。
a. 使用ACL 在其中一台(R1)上面阻止OSPF Hello 分组:
interface Serial1/0
ip access-group 100in
!
access-list 100deny ip 12.1.1.00.0.0.255host 224.0.0.5access-list 100permit ip any any
!
于是,在另一台路由(R2)上查看OSPF neighbor 信息
R2#showip os nei
Neighbor
Interface
1.1.1.1
Serial1/1ID Pri State Dead Time Address 0INIT /-00:00:3112.1.1.1
b. NBMA 中手动指定ip 映射时,没有加入”broadcast ”参数
R1:
interface Serial1/0
ip ospf network broadcast
frame-relay map ip 13.1.1.3103broadcast
no frame-relay inverse-arp
!
R3:
interface Serial1/1
ip ospf network broadcast
frame-relay map ip 13.1.1.1301
no frame-relay inverse-arp
!
R3#showip os neighbor
Neighbor
Interface
1.1.1.1
Serial1/1ID Pri State Dead Time Address 1INIT /DROTHER00:00:3513.1.1.1
注意:这种情况仅在某些特定的IOS 中会出现,现在一些较新的IOS ,测试用IOS C720012.2(33)SRC一端配置为非broadcast 网络,最终仍然能形成FULL 邻接关系,但是链接会不太稳定,OSPF neighbor 关系抖动。
3. TWO-WAY :
双向会话建立,而RID 彼此出现在对方的邻居列表中。
在广播型链路中,两个DROTHER 之间停留在two-way 状态,DROTHER 分别于DR 和BDR 形成FULL 的邻接关系。
停滞在two-way 状态的两个,可能是两端均配置了priority 为0。
R2:
interface FastEthernet0/0
ip ospf priority 0
!
R3:
ip ospf priority 0
!
R2#showip os neighbor
Neighbor
Interface
3.3.3.3ID Pri State Dead Time Address 02WAY /DROTHER00:00:3423.1.1.3FastEthernet0/0
R3#showip os neighbor
Neighbor
Interface
2.2.2.2ID Pri State Dead Time Address 02WAY /DROTHER00:00:3423.1.1.2FastEthernet0/0
4. EXSTART/EXCHANGE:
信息交换初始状态:在这个状态下,本地和邻居将建立Master/Slave关系,并确定DD Sequence Number ID 大的的成为Master 。
信息交换状态:本地路由器和邻居交换一个或多个DBD 分组(也叫DDP) 。DBD 包含有关LSDB 中LSA 条目的摘要信息。
a. 接口MTU 不匹配:
在拓扑中某一路由器上修改其端口MTU
R3:
ip mtu 1499
!
R3#showip os neighbor
Neighbor
Interface
2.2.2.2ID Pri State Dead Time Address 1EXSTART /DR00:00:3923.1.1.2FastEthernet0/0
R2#showip os neighbor
Neighbor
Interface
3.3.3.3ID Pri State Dead Time Address 1EXCHANGE /BDR00:00:3723.1.1.3FastEthernet0/0
解决方案有两种:
I.
R3(config)#intfa0/0
R3(config-if)#ip mtu 1500
II.
R3(config)#intfa0/0
R3(config-if)#ip ospf mtu-ignore
5. LOADING :
信息加载状态:收到DBD 后,使用LSACK 分组确认已收到DBD 。将收到的信息同LSDB 中
的信息进行比较。如果DBD 中有更新的链路状态条目,则想对方发送一个LSR ,用于请求新的LSA 。
无法设计实验使OSPF ”卡“在该状态。
6. FULL
网上一些说法说的两端认证配置不一样,会使OSPF 停留在某些状态,但是实际的测试中并没有实验出现结果。
另外,两台路由器之间的router-id 重复也会造成OSPF 出现故障,停留在哪种状态因厂商而已,这里不做详细讨论。
以上实验均基于思科IOS 平台,其他平台现象暂时不做讨论。