OSPF邻居的八种状态
- 格式:doc
- 大小:49.00 KB
- 文档页数:3
OSPF状态机OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。
Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来⾃邻居路由器的Hello数据包。
Attempt:该状态仅发⽣在NBMA⽹络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复Hello报⽂。
此时路由器依然每发送轮询Hello报⽂的时间间隔(poll interval)向对端发送Hello报⽂。
Init:收到Hello报⽂后状态为Init。
2-way:收到的Hello报⽂中包含有⾃⼰的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进⼊Exstart状态。
Exstart:开始协商主从关系,并确定DD的序列号,此时状态为Exstart。
Exchange:主从关系协商完毕后开始交换DD报⽂,此时状态为Exchange。
Loading:DD报⽂交换完成即Exchange done,此时状态为Loading。
Full:LSR重传列表为空,此时状态为Full。
接下来,我们来聊聊⼏个主要的状态:1、Init每台路由器只与启⽤了OSPF,接⼝宣告到OSPF进程,就会开始发OSPF报⽂。
当收到别⼈发过来的Hello报⽂,⼀开始,R5收到R4发过来的Hello包,查看,只看到R4的router id 4.4.4.4 ,没有看到⾃⼰,所以状态置为init状态,并且R5已发现⾃⼰有个邻居是R4。
R4收到R5发过来的Hello包,查看,只看到R5的router id 5.5.5.5 ,没有看到⾃⼰,所以状态置为init状态,并且R4已发现⾃⼰有个邻居是R5。
R5再次收到R4发过来的Hello包,查看,看到R4的router id 4.4.4.4,还看到⾃⼰R5的router id 5.5.5.5 ,认为双向通信没问题,所以状态置为2-way。
Init:收到hello参数协商成功,但是没有看到自己的router-id 。
同时发送携带对端router-id 的Hello2-way:参数协商成功,看到了自己的router-id 。
同时发送携带对端router-id的Hello 双向到达2-WAY后会周期性发送HELLO来维护邻居关系。
Exstart:发送空DD报文,前两个DD报文用于进行Master/salve ,此时DD报文不含任何LSA 信息为什么要建议主从关系?目的是为了保证后续exchange交互DD报文的可靠性和可控性。
为什么DD报文的交互需要可靠性和可控性?可靠性:OSPF协议是直接封装在IP报文之上的,但是IP报文本身是不保证报文可靠传递的网络层协议,所以OSPF协议必须设计自身的可靠性机制,必须实现自身的可靠性。
可控性:DD报文是用于交换LSDB的摘要信息,可能需要发送多个DD报文才能交换完毕,需要表明何时开始发送,何时表明发送完毕,需要有个控制能力。
可靠性:通过DD的seq完成的可控性:通过DD报文的I 、M 、MS来完成。
Exstart路由器会随机生成seq ,并且I \M \MS都置1I = 1 代表第一次发DD报文0 代表不是第一次发M= 1 代表还没发完,后面还要发0代表已经发完MS= 1 代表我为主0 代表我为从何为mster/何为salve :router-id大的为master ,小的为salve这也是router-ID不能冲突的原因,一样后会导致后续exstrat主从选举无法进行。
后续邻居也就建立不起来。
M/S选举完毕后就会进入Exchange状态Exchang:此时发送DD报文就会携带LSDB中LSA的摘要信息(LSA的头部信息)LSA的头部信息是用于唯一的标识一条LSA以及用于判断LSA的新旧。
所谓LSDB同步就是指邻居之间交换彼此没有的LSA以及用新的LSA替换掉旧的LSA,从而使邻居LSDB保持一致。
ospf实验知识点总结1. OSPF基本概念OSPF是一种开放式协议,它使用链路状态路由算法确定网络中的路径。
OSPF使用的是Dijkstra算法,它通过以链路为单位计算最短路径,然后构建路由表。
OSPF协议支持VLSM(Variable Length Subnet Mask)和CIDR(Classless Inter-Domain Routing)等技术,可以根据网络的实际需要进行划分,提高网络的利用率。
2. OSPF的邻居关系在OSPF中,路由器之间通过建立邻居关系来交换LSA信息。
OSPF邻居状态主要包括:Down、Init、2-Way、Exstart、Exchange和Full。
在邻居关系建立时,需要满足一定的条件,如OSPF邻居的IP地址必须在同一个网络中,两台路由器的Hello和Dead Interval必须一致等。
3. OSPF的路由计算过程OSPF协议使用Dijkstra算法计算最短路径,首先在链路状态数据库中收集链路状态信息,然后使用Dijkstra算法计算出最短路径。
在路由计算过程中,需要对收集到的链路状态信息进行处理,包括链路状态更新、链路状态同步等步骤。
4. OSPF的状态OSPF邻居状态主要包括:Down、Init、2-Way、Exstart、Exchange和Full。
在邻居状态的转换过程中,需要满足一定的条件,如Hello和Dead Interval的一致性、路由器的ID号等。
5. OSPF的优化在实际网络中,为了提高网络性能和减少路由器的负担,可以采用一些优化技术。
例如,可以利用区域的划分减少Link State Advertisement的传播范围,减轻网络的负担;可以使用Stub区域和Totally Stubby Area等技术减少LSA数量;可以使用路由汇总技术减少路由表的大小等。
6. OSPF的故障排除在部署和维护OSPF协议时,需要及时排除网络故障。
故障排除的步骤主要包括:检查OSPF邻居状态;检查网络的连通性;检查OSPF路由表;检查OSPF链路状态数据库;检查路由器的配置信息等。
OSPF 邻居关系不能正常的原因和解决方法1、接口上没有激活ospf就是在network语句的时候没有匹配清楚,比如配置了错误的反掩码不对,在show ip ospf interface 的时候不会显示你希望激活的接口使用show ip ospf interface来验证这时候的邻居表是空的R2#show ip ospf neighborR2#2、物理层或者是数据链路层协议down.使用show ip int brief 或者是show int type nomber会导致ospf packet 封装失败。
3、建立邻居的接口被passive掉R2#show ip ospf interface Ethernet 0Ethernet0 is up, line protocol is upInternet Address 131.108.1.2/24, Area 0Process ID 1, Router ID 131.108.1.2, Network Type BROADCAST, Cost: 10Transmit Delay is 1 sec, State DR, Priority 1Designated Router (ID) 131.108.1.2, Interface address 131.108.1.2No backup designated router on this networkTimer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5No Hellos (Passive interface)Neighbor Count is 0, Adjacent neighbor count is 0Suppress hello for 0 neighbor(s)4、OSPF的hello组播地址被ACL BlockR1#interface Ethernet0ip address 131.108.1.1 255.255.255.0ip access-group 100 in!access-list 100 permit tcp any anyaccess-list 100 permit udp any anyaccess-list 101 permit ip 131.108.1.0 0.0.0.255 host 224.0.0.5R2#interface Ethernet0ip address 131.108.1.2 255.255.255.0ip access-group 100 in!access-list 100 permit tcp any anyaccess-list 100 permit udp any anyaccess-list 101 permit ip 131.108.1.0 0.0.0.255 host 224.0.0.5R2#debug ip packet 101 detailIP packet debugging is on (detailed) for access list 101IP: s=131.108.1.2 (Ethernet0), d=224.0.0.5, len 68, access denied, proto=89这时候的邻居关系是INITR2#show ip ospf neighborNeighbor ID Pri State Dead Time Address Interface131.108.2.1 1 INIT/- 00:00:33 131.108.1.1 Ethernet0R1#show access-list 101Extended IP access list 101permit ip 131.108.1.0 0.0.0.3 host 224.0.0.5 (8 matches)R1#debug ip packet 101 detailIP packet debugging is on (detailed) for access list 101R1#IP: s=131.108.1.1 (local), d=224.0.0.5 (Ethernet0), len 60, sending broad/multicast,proto=89 IP: s=131.108.1.2 (Ethernet0), d=224.0.0.5, len 82, access denied, proto=89IP: s=131.108.1.1 (local), d=224.0.0.5 (Ethernet0), len 60, sending broad/multicast,proto=89 IP: s=131.108.1.2 (Ethernet0), d=224.0.0.5, len 82,access denied, proto=895、在broadcast链路上的子网掩码不匹配6、Hello/dead 间隔不匹配7、认证方式或者是认证密码不匹配使用debug ip ospf adj 来查看,可以自己使用不同的情况来验证8、两台路由器处于不同的AREAR1#debug ip ospf adjOSPF adjacency events debugging is onR1#OSPF: Rcv pkt from 131.108.1.2, Ethernet0, area 0.0.0.0mismatch area 0.0.0.1 in the headerR2#show log%OSPF-4-ERRRCV: Received invalid packet: mismatch area ID, from backbone area must bevirtual-link but not found from 131.108.1.1, Ethernet09、Stub/transit/NSSA 区域类型不匹配,这个是常常不小心会被忘记的。
OSPF的邻接关系建⽴需要经历7种状态OSPF的邻接关系建⽴需要经历7种状态DOWN—>INIT—>TWO WAY—>EXSTART—>EXCHANGE—>LODING—>FULL下⾯具体描述这7个状态的发⽣过程:DOWN——运⾏OSPF协议的接⼝还没有收到hello包时的状态,此时不会发⽣任何建⽴邻居关系的动作INIT——当双⽅收到hello包时将进⼊INIT状态,前提是hello包中必须匹配4个条件,分别为:①hello和dead的时间间隔要相同②area ID要相同③认证⽅式认证⼝令要相同④末节区域标⽰要相同TOW WAY——当收到了邻居发送过来的hello包并且在hello包中看到⼰⽅的RouterID时,将进⼊TOWTOW WAY——当收到了邻居发送过来的hello包并且在hello包中看到⼰⽅的RouterID时,将进⼊TOWEXSTART状态之间进⾏EXSTART——此状态将在邻居之间选择MASTER和SLAVE⾓⾊,⽤于交换DBD信息,拥有⾼RouterID的EXSTART——此状态将在邻居之间选择MASTER和SLAVE⾓⾊,⽤于交换DBD信息,拥有⾼RouterID的MASTER的⾓⾊,因为其RouterID为2.2.2.2,⼤于R1的1.1.1.1。
另,如果邻居之间的MTU值不匹配,将卡在EXSTART状态,这也是唯⼀⼀个卡在EXSTART状态的原因Exchange--当经过Exstart状态选出master和slave⾓⾊后将进⼊Exchange状态,⾸先由master和slave同步DBD信息,最终将完成双⽅DBD信息的同步。
Loading--当DBD信息同步完成后双⽅开始加载LSDB,此状态下将发送LSR和LSU。
Full--此时LSDB构建完成,双⽅数据库保持⼀致,⾄此可以说双⽅已经进⼊了逻辑上的邻接关系,同区域的OSPF路由器维护同⼀张LSDB。
OSPF卡在各种状态的原因1.OSPF 邻居停滞于Attempt状态只有在NBMA中才会出现ATTEMPT状态,ATTEMPT状态是路由器在NBMA模式中必须经过的一个普通状态。
如果路由器如果一直停滞于ATTEMPT状态,则表明路由器发送了Hello分组给一个邻居,但是没有收到回应。
这个问题仅仅在定义了neighbor语句的NBMA网络中才会出现。
①Neighbor指向了错误的邻居②在NBMA中单播连接中断。
例如:ACL 阻止了单播2.OSPF邻居停滞于INIT状态路由器收到第一个分组将使路由器进入正常的INIT状态。
当一个路由器从邻居收到一个OSPF Hello 分组的时候,它在Hello分组中包含进邻居的路由器ID并发送这个Hello分组。
如果它不包含邻居的路由器ID,那么邻居将停滞于INIT状态。
① 验证只在某一边启用。
② ACL在某一边阻止了Hello分组。
3.OSPF邻居停滞于2-WAY状态正常情况下,在MA网络等广播介质中,Drother之间的邻居状态是2-WAY状态,Drother 与DR和BDR之间形成FULL状态。
停滞于 2-WAY 状态的原因:路由器上都配置了优先级0,DRother与DR/BDR关系都为full ,DRother与DRother之间全部都是2-way4.OSPF邻居停滞于EXSTART / EXCHANGE状态在EXSTART / EXCHANGE 状态阶段:路由器选择一个主设备、一个从设备、一个初始序列号。
(EXSTART状态)整个数据库交换。
(EXCHANGE状态)停滞于EXSTART / EXCHANGE状态的原因:①不匹配的接口MTU 。
(邻居关系还没有建立好时)重传25次后DOWN掉后,等待一分钟,然后再次建立邻居关系结论:1.如果邻居建不起来(2-way 状态之前)网络类型为NBMA,邻居表显示一边是ATTEMPT状态,一边是INIT状态;网络类型为point-to-multipoint NBMA,邻居表显示一边是DOWN状态;一边是INIT状态。
OSPF详解Open Shortest Path First(⼀)OSPF协议是由Internet⼯程任务组(Internet Engineering Task Force)开发的路由选择协议,且来替代存在⼀些问题的RIP协议。
OSPF协议是IETF 组织建议使⽤的内部⽹关协议(IGP)。
OSPF使⽤Dijkstra的最短路径优先(SPF)算法,其的发展经过了⼏个RFC,所有的RFC都是由John Moy撰写。
RFC1131详细说明了OSPF协议版本1,这个版本从来没有在实验平台以外使⽤过,OSPF协议版本2,也就是现在IPv4协议仍然使⽤的版本,最初是在RFC1247中说明的,最新是在RFC2328中说明的。
(⼀)OSPF基本原理与实现OSPF的基本特性:·OSPF属于IGP,是Link-State协议,基于IP Pro 89。
·采⽤SPF算法(Dijkstra算法)计算最佳路径。
·快速响应⽹络变化。
·以较低频率(每隔30分钟)发送定期更新,被称为链路状态刷新。
·⽹络变化时是触发更新。
·⽀持等价的负载均衡。
·OSPF协议将IP头部的TTL值设置为1,并且把优选位设置成互连⽹络控制OSPF的邻居与邻接关系:OSPF中路由器之间的关系分两种:1、邻居2、邻接·OSPF路由器可与它直连的邻居建⽴邻居关系。
·P2P链路上,邻居可以到达FULL状态,形成邻接关系·MA⽹络,所有路由器只和DR/BDR(Backup Designated Router)到达FULL状态。
形成邻接·路由器只和建⽴了邻接关系的邻居才可以到达FULL状态。
·路由更新只在形成FULL状态的路由器间传递。
·OSPF路由器只会与建⽴了邻接关系的路由器互传LSA。
同步LSDBR2#sh ip os neiNeighbor ID Pri State Dead Time Address Interface1.1.1.1 0 FULL/ - 00:00:35 12.1.1.1 Serial1/03.3.3.3 0 FULL/ - 00:00:38 23.1.1.3 Serial1/1⼀台OSPF路由器对其他OSPF路由器的跟踪需要每台路由器都提供⼀个路由器ID,路由器ID在OSPF区域内惟⼀标识⼀台路由器的IP地址,Cisco路由器通过下⾯的⽅法得到它的路由器ID:1)⼿⼯指定Route-ID x.x.x.x(可任意,但区域内不能重复) 2)⾃动选择最⼤的Loopback IP作route-id 3)⾃动选择最⼤的物理接⼝IP(接⼝必须是激活状态)推荐⼿⼯指定的router-id这⾥,使⽤Loopback接⼝作为路由器ID有两个好处:(1):Loopback接⼝⽐任何其他物理接⼝更稳定,只有整个路由器失效进它才会失效(2):⽹络管理只在预先分配和识别作为路由器ID的地址时有更多的回旋余地其实,Loopback接⼝的⼀个主要好处在于它具有更好控制路由器ID能⼒.OSPF开销值计算:·OSPF Cost = 10^8/BW (bps)⼏种常⽤接⼝的COST值:1、环回⼝的COST值是12、serial⼝的COST值是643、标准以太接⼝是104、快速以太接⼝是1SPF算法:最短路径优先算法1、在⼀个区域内的所有路由器有同样的LSDB2、每⼀个路由器在计算时都将⾃已做为树根3、具有去往⽬标的最低cost值的路由是最好的路径4、最好的路由被放⼊转发表·OSPF的报⽂:1:数据包头部:所有OSPF数据包都是由⼀个24个⼋位组字节的头部开始的,如下图所⽰:这⾥,如果认证类型=2。
OSPF邻接关系建立过程:分两大步骤七种状态:1、建立邻居关系:建立双向通信:DOWN:没有检测到活动邻居INIT:路由器(R2)收到对方(R1)的hello包,并将R1加入到R2的邻居表中,R2成为INIT状态Two-way:收到hello的R2将单播回复R1一个hello,其中包含R2的所有邻居路由器,包括路由器R1。
R1收到来自R2的hello后,发现其中包含有自己的信息,则R1将R2加入到自己的邻居列表中。
R1,R2都处于Two-way状态。
第一步完成后,R1,R2形成邻居关系!2、建立邻接关系:R1,R2成为邻居后,如果在多路访问的广播网络中,R1,R2便选举DR,BDR。
注:新网络的DR,BDR的选举是在two-way状态后完成的,并且DR,BDR是非抢占的,并且DRother只能与DR或BDR建立邻接关系,DRother之间只能建立邻居关系(Two-way状态)。
建立邻接关系的机制是为了减少路由形成的冗余度,成为邻接关系最终是为了能够形成路由,能够转发数据包,所以就要进行发现网络路由和添加链路状态条目1)、发现网络路由:Exstart:确立主从关系,在DR和BDR,DR和DRother,BDR 和DRother之间确立主从关系,Router ID大的为主路由器。
Exchange:发送DBD(LSDB摘要),发现需要更新的LSA的条目2)、添加链路状态条目:Load:交换LSR,LSU以填充LSDB,完成链路状态条目更新。
Full:完全邻接状态。
LSA:链路状态通告DR:制定路由器,只作用于接口,因为邻接关系是基于接口的,而DR是为邻接关系服务的。
也就是说,DR是链路级的,每个网段(MA网络)都有自己DR和BDR。
BDR:备用DR。
OSPF邻居的八种状态
OSPF在邻居路由器之间创建邻接体关系来交换路由信息,其邻居的建立过程一共可能出现八种状态,每种状态代表的具体含义如下:
Down 没有从邻居处收到hello数据包。
Attempt 用于NBMA网络的连接,并表明没有新的信息从这个邻居处收到。
Init 从另外的路由器收到hello报文,但是在此hello报文中没有看到自己的router ID。
2way从邻居处接收到的hello报文的邻居字段中包含有自己的rout er ID。
这个状态下选举DR和BDR。
ExStart 建立主/从关系并决定初始的DD序号以便准备交换DD报文。
带有最高router ID的路由器将成为主路由器。
Exchange 路由器通过发送DD报文向邻居描述它自己的完整的链路状态数据库,同时,路由器也可以发送LSR报文来请求更新的LSA。
Loading 路由器将发送LSR给邻居请求在Exchange状态下发现的新的LSA,并接收对请求的LSA的响应报文(LSU)。
Full 建立起邻接的邻居中所有LSA信息都是同步的。