不是ospf hello报文交互的目的是什么 ospf报文交互过程_华为路由器时间同步


OSPF邻居关系如何建立?

1.使用hello报文建立邻居关系

2.OSPF中利用设备上的主地址来发送hello报文

3.OSPF是直接封装于ip报文中,协议号89,证明IPV4和OSPF协议存在相辅相成的关系

4.OSPF是一种运行与IP层之上的路由协议,网络层之上

5.OSPFv2本身依赖于IPV4的环境

-------------------------------------------------

OSPF的头部是由两部分组成:头部+报文类型

OSPF的报头为8个字段:


不是ospf hello报文交互的目的是什么 ospf报文交互过程_序列号_02


1.版本--OSPF的版本 V1 V2 V3

2.Message type:消息类型,hello=1,DBD=2,LSR=3,LSU=4,LSACK=5

3.Packet length:描述报文的总长度

4.Sorurce OSPF router:发送OSPF报文的源路由器的RID

5.Area ID:OSPF路由器接口所在的区域

6.checksum:校验和

7.Auth Type:认证类型,null-无认证=0,明文认证=1,密文MD5认证=2

8.Auth data:认证信息

-----------------------------------------------------


不是ospf hello报文交互的目的是什么 ospf报文交互过程_OSPF_03


OSPF的hello报文:


不是ospf hello报文交互的目的是什么 ospf报文交互过程_链路_04


1.network mask:网络掩码

2.hello interval:hello报文发送周期,默认MA,P2P为10s,P2MP,NBMA默认为30s

3.Router priority:OSPF路由器接口优先级,用于在MA,NBMA网络下选举DR和BDR,默认为1,取值范围为0-255

4.dead interval:邻居失效时间,为hello interval的4倍

5.DR:本网段DR所在接口的ip地址,P2P,P2MP该字段为0.0.0.0

6.BDR:该链路上DR接口的ip地址,P2P,P2MP该字段为0.0.0.0

7.options:所有bit位置1时代表支持该特性,置0代表不支持。

1.DN位:用于MPLS VPN双归中防止环路。

2.O位:始发路由器支持Opaque LSA(类型9,类型10和类型11,mpls多协议标签环境)

3.DC位:代表始发路由器支持按需链路上的OSPF的能力,置为1.

4.EA位:当始发路由器具有接收和转发external-attributes-LSA(type8 LSA,BGP外部属性)的能力时,该位被置位。

5.N位,只用在hello数据包中,N=1表明路由器支持7类LSA,N=0表明该路由器不接收和发送NSSA LSA.

6.P位:只用在NSSA LSA,该位将告诉NSSA区域的ABR实现7转5操作。

7.MC位:当始发路由器支持转发组播数据包能力时,置位,目前已被淘汰MOSPF

8.E位:当始发路由器具有接受外部LSA的能力时,被置位,在所有5类LSA和始发于骨干区域以及非末节区域的LSA中,该位置1;始发于末节区域的LSA中,该位置为0,如果hello报文中该位置为1代表该路由器接口具有接收和发送5类LSA的能力

9.MT位:表示始发路由器支持多拓扑OSPF

-------------------------------------------------------

OSPF建立邻居的条件:

1.router-id不能冲突

2.area ID要一致

3.auth type auth data要一致

4.hello interval要一致

5.dead interval要一致

6.ebit,nbit位要一致

--------------------------------------------

特定场景下对其他参数的要求:

1.P2P链路不要求对端接口ip地址和自己在一个网段,不要求掩码一致。

2.broadcast,NBMA要求地址必须在一个网段,掩码必须相同。

3.P2MP要求地址必须同一个网段,默认情况下要求掩码一致,但可以通过命令忽略对掩码的限制。

4.其他报文对邻居关系的影响:DBD报文中ip mtu值要一致,默认情况下华为设备不对DBD报文中的mtu做检测,华为设备DBD报文中的ip mtu默认为0,如果开启mtu检测功能,默认为1500。

5.开启了mtu检测功能以后,当设备收到DBD报文时,会检测DBD报文中的ip mtu值是否小于自身接口的ip mtu,如果小于则处理,如果大于则丢弃报文。(思科设备默认开启ip mtu检测,默认接口ip mtu值为1500)

6.接口下ospf mtu-enable的作用是:对接收的DBD报文做ip mtu检测;对自身发送的DBD报文,ip mtu值设置为自身接口的ip mtu值。

------------------------------------------------

OSPF的邻居建立过程:

状态:

down:代表没有发现任何存在的邻居,没有收到任何邻居的hello

init:收到邻居的hello包,但hello包中没有发现自己的RID,此时代表了发现了邻居的存在,邻居没有发现你的存在one-way,单向邻居

Two-way:收到邻居hello包,并且在hello包中看到了自己的RID。

------三次握手既可以达到双向邻居关系,是OSPF可靠性的一种体现

Two-way状态之后,drothers之间就知道2-way状态,不进行LSDB的同步,其他情况会继续往下进行LSDB的同步,进入exstart状态


不是ospf hello报文交互的目的是什么 ospf报文交互过程_华为路由器时间同步_05


exstart状态:做主从选举,为实现可靠的DBD同步做准备。

1.exstart发送的DBD报文只做主从选举,而不会携带任何的LSDB中LSA的头部信息,

2.并各自表达自身是初次发送DBD报文,后续还希望继续发送DBD报文,并宣告自身为master,随机生成DBD序列号。

3.彼此交换DBD报文后,根据RID的大小选举出master(RID大的成为master,RID小的成为slave)完成主从选举。

4.主从选举完成后,进入exchange状态。

5.I=1-代表这是第一个DBD报文,M=1代表后面还有更多的DBD报文,MS=1代表自己是主设备。

---------------------------------------

exchange状态:

1.salve设备开始发送携带自身LSDB中LSA的头部信息的DBD报文,并使用master设备提供的序列号作为改DBD报文的序列号。

2.master设备收到以后,也会发送DBD报文给对方,并且以收到的对方发来的DBD报文携带的序列号加1的方式向对端做隐式确认。

3.如果对端没有收到本设备发送的DBD报文,那么就不能进行基于未收到的DBD报文携带的序列号做加1的操作,也就是说发送这个DBD报文的设备无法收到隐式拒绝的DBD报文,则会认为对方没有收到,需要进行重传,默认重传间隔为5s。

4.从设备总是使用主设备的序列号发送DBD报文,主设备收到以后总是以序列号加1的方式进行隐式确认,如果从设备还有后续还有DBD报文,将继续使用主设备发过来的确认报文中的序列号再次发哦是那个DBD报文,以此类推,保障DBD报文交互过程中的可靠性。

5.彼此互相都要做确认,保证可靠。

6.为什么要采用隐式确认?原因DD报文携带自身LSDB中所有LSA的头部信息,信息比较多,确认处理起来比较繁琐,消耗设备资源,影响邻居收敛速度,所以采用相对简单的隐式确认机制。

--------------------

1.exchange状态完成后,邻居根据DBD报文中的头部信息和自身LADB的头部信息做比较,进行LSDB同步。

2.同步的规则:交换彼此没有的,或者替换老旧的LSA,实现LSDB的一致性,最终双方的LSDB达到统一个状态(FULL)


不是ospf hello报文交互的目的是什么 ospf报文交互过程_OSPF_06


3.为了实现同步,对LSA的数据结构做出定义需要满足以下条件:

1.唯一的区分一条LSA

2.对LSA的新旧进行判断

4.DBD报文通过携带LSA的头部信息来唯一的区分和判断LSA的新旧(exstart状态下DBD报文不携带LSA的头部信息)

5.LSA通过以下6个参数来标识自身的头部信息和新旧程度:


不是ospf hello报文交互的目的是什么 ospf报文交互过程_华为路由器时间同步_07


1.LSA的老化时间

2.链路状态的类型(LSA的类型)

3.链路状态ID

4.ADV router

5.序列号

6.校验和

-------------其中

1.链路状态的类型(LSA的类型)

2.链路状态ID

3.通告路由器

--------------------用于唯一标识一条LSA,当对端收到以后,发现自己的LSDB中没有该LSA,则会通过LSR进行请求,LSR报文中携带的就是这三要素,三个参数相同则认为是同一条LSA


不是ospf hello报文交互的目的是什么 ospf报文交互过程_华为路由器时间同步_08


-----------------------------------

如果彼此都有这条LSA,则需要进行新旧程度判断,用新的去替代旧的,如何实现新旧判断?

通过以下三个参数来判断LSA的新旧程度:

1.LSA的Seq

2.LSA的checksum

3.LSA的老化时间

A:首先比较序列号,越大越新

B:如果Seq相同,比较checksum,越大越新

C:如果checksum相同,比较LSA age时间,是否等于3600s,如果等于3600s,则认为最新,并用新的替换掉旧的LSA,然后由于老化时间到期,删除这条LSA。

D:LSA age如果都不等于3600s,则比较LSA age,如果大于900s,则最小的LSA age为最新,如果都LSA age都小于900s,则认为这条LSA是同一条LSA。

------通过DBD中携带的LSA的头部信息,完成LSDB的差异比较,向邻居发送LSR,请求自身需要的LSA。(按需同步)


不是ospf hello报文交互的目的是什么 ospf报文交互过程_华为路由器时间同步_09