OSPF原理概述补充文章

OSPF原理概述补充文章

祝愿各位都能赚大钱

前言

OSPF 和ISIS一样都是链路状态协议,OSPF和ISIS是有着共同之处的。他们传递的都是自身特殊格式而形成的链路状态信息,这不能被ACL所抓取到,他们都是有区域划分,都有虚节点。OSPF主要搞清楚他6个LSA,邻居状态过程,基本上就OK了,不难的。

1、邻接建立及握手过程

1.1 概述

待补充

1.2 OSPF报文头部

OSPF封装于IP层,协议号89。OSPF分为五个报文:HELLO、DD、LSR、LSU和LSAck。五种报文具有相同的报文头格式,长度为24字节。

图:OSPF报文头部

OSPF头部长度24 Byte,字段讲解如下:

字段

含义

version

版本号,目前OSPF版本号为2

Message Type

消息类型,Hello为1,DD为2,LSR为3,LSU为4 LSA为5

Packet Leng

OSPF长度,包括OSPF头部字段

Sou OSPF Route

发送报文的OSPF路由器标识

Area

区域ID

Check

校验和

Authe Type/Data

认证类型和认证数据

1.3 网络类型及不同类型间建立邻居

OSPF接口根据链路类型可分成四种网络类型:

  • Point-to-point networks:当链路层协议为PPP、HDLC和帧中继(仅P2P类型子接口)时。缺省OSPF认为是P2P点到点网络

  • broadcast networks:当链路层协议为Ethernet时。缺省OSPF认为是Broadcast广播网络

  • NotBroadcast Multi-Access Networks:当链路层协议为帧中继和ATM时。缺省OSPF认为是NMBA

  • Point-to-Multipoint networks:无缺省认为,只会被强制修改成该类型。常见为将非全连通的NMBA修改成P2MP形式

不同的网络类型,可使OSPF按不同的方式来工作,具体如下:

网络类型

报文的发送

广播类型

组播发送HELLO、LSU和LSAck,单播发送DD和LSR

P2MP

组播发送HELLO,单播发送其他

NMBA

全单播

P2P

全组播

说明: LSAck报文在做回应时,对于接收到的LSU报文,若LSU报文为单播,则单播回复,LSU为组播,则组播回复。且采用组播回复时,若自身为DRother,那么目的地址为224.0.0.6。为DR和BDR或点到点类型网络,则为224.0.0.5。

不同的接口网络类型的邻居间时可以正常建立邻居关系的,但需要注意的时Hello/Dead时间需要相同。具体不同邻居之间的建立,如下所示:

网络类型

邻居关系

邻接

路由计算

NMBA+其他类型

不可以

-

-

P2MP+广播

调整时间间隔后可以

可以

无法计算出对方路由

P2MP+P2P

可以

可以

可以

P2P+广播

可以

可以

无法计算出对方路由

说明: P2P和P2MP对广播可以建立邻接关系,可以进行LSDB数据库同步,但是在路由的计算上无法形成,这是由于画逻辑拓扑时,广播类型需要连接到虚节点,但P2P网络需要和邻居节点直连,所以在逻辑拓扑上,二者无法连接到一起,这就导致了计算路由时,互相都无法计算出各自节点后面的路由。

1.4 邻居建立过程

OSPF通过hello报文来发现和维护邻居关系,邻居关系不同于邻接,邻居给关系是指达到2-way状态,在2way状态之后,是邻接关系。

hello报文在不同的网络类型的接口上,发送间隔与目的地址不同。

  • 在广播和点到点网路中,hello是每10秒发送一次,在NMBA和P2MP中,每30秒发送一次。dead时间为4倍的hello时间

  • 在广播、P2P和P2MP中,OSPF通过组播的HELLO自动发现邻居,目的地址是224.0.0.5(所有OSPF路由器)而在NBMA网络中,需要手工指定邻居。

说明:目前网络大多都是以太网,也就是网络类型为Broadcast,而PPP/HDLC/帧中继,P2P子接口则被看成P2P类型网络。非广播的帧中继。X.25和ATM等可以配置成NBMA和P2MP网络类型。

在建立邻居关系是时,双方路由器互相发送HELLO报文,以下参数必须匹配才能够形成邻居,否则丢弃。

  1. hello/dead时间一致

  1. 直连路由器Router-ID无冲突

  1. 区域ID一致

  1. 区域类型相同 (options字段相同)

  1. 认证类型和密钥一致

图:Hello报文

OSPF共有八种状态,分别是:Down、Attempt、Init、2-Way、Exstat、Exchange、Loading和Full。

邻居关系的建立是为了保证OSPF路由器间的双向邻居成功建立。邻居关系的状态由Down到Attmpt到Init到2-WAY

  1. Down,邻居会话初始阶段,邻居的RID未存在自身的邻居列表里。

  1. Attmpt,NBMA中存在,表明对端在邻居失效时间超时后仍然没有回复hello。此时依旧向对端发送hello

  1. Init,收到邻居发来的hello且该hello中的Active Nei字段未包含自身路由器的R-ID,则将邻居状态置位INIT

  1. 2-WAY,再次收到邻居发来的hello且hello中的Active Nei字段中包含自身的R-ID,则将邻居状态置位2-WAY

此时开始就是邻接状态了,需要注意的是,在广播和非广播中,邻接关系在DR/BRR选择完成之后。

Router-ID建立过程:

每台OSPF路由器都需要配置一个Router-ID来标识自身,Router-id有以下方法形成

1、手工配置Router-ID

2、自动选择设备中活跃的最大地址的环回接口,若不存在环回接口,则选择活跃物理接口中地址最大的。

1.5 邻接建立过程

邻接关系的建立是邻居路由器间为完成同步而发生的LSA交互过程,也是邻居路由器间初次通告LSA,快速同步的过程。同步完成后,最终是FULL状态。邻接关系的状态由Exstart到Exchange到Loading到FULL最终状态。

说明: 广播和非广播情况下(即需要选择DR/BDR的情况下)Drother之间会一致保持在2-WAY状态,Drother同DR/BDR是FULL状态。

**信息交换初始状态ExStart:**在该状态下,本地和邻居路由器互传空DD报文。ExStart作用:

  • 确定主从关系

  • 确定DD的初始序列号

  • 比较接口MTU(可选)

在该状态下,路由器互相发送空DD报文中 I(Initalize),M(More)及MS(Master/Salve)位。

  • I位,初始化位,仅头两份DD报文中置位,代表同步过程开始。

  • M位,More更多,如果M=0,则代表后续DD报文中无LSA Summary要传递。任何一方M位不置为0,Master就要继续发送DD报文,Slave收到之后,不论是否还有LSA Summary要传递,都要回应DD报文。

初始双方都认为自身是Master,所有M/S均置位,双方收到对方的DD报文,RID高者成为Master,此后过程中,M/S会一直置位,Master会一直发送DD报文,Slave一直会回应DD报文,Slave回应的DD报文是对Master发送的DD报文的确认。此过程持续到双方的LSA头部交换完成。

**说明:**由于Exstart未开启MTU比较,所以报文中的MTU值默认为0,即不比较。

信息交换状态ExChange:

选举完Master后,Slave路由器主动向Master回送DD报文,其中包含LSDB的LSA头(LSA Summary)列表,Slave发送的DD中,Seq序列号采用Master发过来时的序列号。Master也会把自身的头列表用DD发送,同时Seq+1,Slave设备收到了,会用相同序列号,来做回应。

任何一侧只要还有未传递完的LSA 头,M位就还是置位,Master就一定会产生DD报文来让Slave回应

Slave:选举完Master后,Slave主动向Master会送DD报文,Seq采用Master相同的

Master:每次发DD都会seq+1,根据收到的DD是否和自己发送的DDseq相同来判断是否DD回送正常

此时LSDB同步完成后,将会进入Loading状态,并且收到DD的路由器会和自己的链路状态数据库作对比,确定需要哪些LSA的完整信息,就会发送LSR请求给邻居。

**信息加载状态Loading:**在这一状态下,本地路由器会继续向它的邻居路由器发送链路状态请求数据包LSR,以请求本地LSDB中没有的完整的LSA。收到LSR的报文,路由器会用包含完整的被请求的LSA的LSU做回应。

请求方收到LSU后,如果无误,则采用LSAck确认该LSU。一份LSAck可同时为多份LSU做确认。所有确认的都完成,就进入FULL状态,至此,LSA同步过程完毕,邻居状态成为FULL

总结:

1、Down:邻居会话的初始阶段,

2、Attempt

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beluga

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值