ospf协议建立邻接的过程中有多少个状态

Posted

tags:

篇首语:本文由小常识网(cha138.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后,将收到的信息同LSDB中的信息进行比较。如果DBD中有更新的链路状态条目,则向对方发送一个LSR,用于请求新的LSA。

8.Full: 完全邻接状态,邻接间的链路状态数据库同步完成,通过邻居链路状态请求列表为空且邻居状态为Loading判断。
参考技术A OSPF

wireshark抓取OSPF协议交互的5种报文分析OSPF路由协议建立邻接关系的过程

技术图片
前言

上一章节根据5种报文和8种邻居状态机给大家介绍了OSPF协议的基本工作原理。5种报文、8种邻居状态机详解OSPF工作原理

今天我们做一个简单的OPSF实验,抓取OSPF协议交互的5种报文分析下OSPF路由协议建立邻接关系的过程。

正文

1 OSPF 5种 报文头格式
OSPF用IP报文直接封装协议报文,协议号为89。OSPF分为5种报文,Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。

OSPF报文头格式:

OSPF这五种报文具有相同的报文头格式,长度为24字节。

技术图片

1、Type: 1字节 ,表示OSPF报文的类型,有下面几种类型:Hello报文;DD报文;LSR报文;LSU报文;LSAck报文。

2、Packet length :2字节,OSPF报文的总长度,包括报文头在内,单位为字节。

3、Router ID :4字节,发送该报文的路由器标识。

4、Area ID: 4字节 ,发送该报文的所属区域。

5、Checksum :2字节,校验和,包含除了认证字段的整个报文的校验和。

6、AuType :2字节 ,验证类型值有如下几种表示, 0表示不验证;1表示简单认证;3表示MD5认证。

7、Authentication :8字节 ,鉴定字段,其数值根据验证类型而定。当验证类型为0时未作定义;类型为1时此字段为密码信息;类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。

OSPF Hello报文格式

Hello报文是最常用的一种报文,其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。

技术图片

报文的字段解释上一章解已经介绍过:5种报文、8种邻居状态机详解OSPF工作原理

OSPF DD 报文格式

两台路由器在邻接关系初始化时,用DD报文(Database Description

Packet)来描述自己的LSDB,进行数据库的同步。报文内容包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA)。

LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。

在两台路由器交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。

技术图片

1、Interface MTU: 16比特 ,在不分片的情况下,此接口最大可发出的IP报文长度。

2、Options: 8比特 ,可选项

3、DD sequence number :32比特 DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。

4、LSA Headers :可变 ,该DD报文中所包含的LSA的头部信息。

OSPF LSR报文格式

两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的和哪些LSA是已经失效的,这时需要发送LSR报文(Link State Request Packet)向对方请求所需的LSA。内容包括所需要的LSA的摘要。

LSR报文格式如下图所示,其中LS type、Link State ID和Advertising Router可以唯一标识出一个LSA,当两个LSA一样时,需要根据LSA中的LS sequence number、LS checksum和LS age来判断出所需要LSA的新旧。

技术图片

1、LS type:32比特,LSA的类型号。

2、Link State ID:32比特,根据LSA中的LS Type和LSA description在路由域中描述一个LSA。

3、Advertising Router:32比特,产生此LSA的路由器的Router ID。

OSPF LSU报文格式

用来向对端Router发送其所需要的LSA或者泛洪自己更新的LSA,内容是多条LSA(全部内容)的集合。

LSU报文(Link State Update Packet)在支持组播和广播的链路上是以组播形式将LSA泛洪出去。为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认。对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。

技术图片

Number of LSAs:32比特,LSA的数量。

OPSF LSAck报文格式

用来对接收到的LSU报文进行确认。内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。

LSAck(Link State Acknowledgment Packet)报文根据不同的链路以单播或组播的形式发送。

技术图片

LSAs Headers:可变,通过LSA的头部信息确认收到该LSA。

2 搭建ENSP实验通过wireshark抓取ospf的5种报文

实验拓扑以及配置:

如图所示:PC1和PC2通过OSPF路由协议实现互通,所有路由器都划分为骨干区域area 0。

技术图片

下面我们看下每台路由器的配置:


R2:

#

interface Ethernet0/0/0     //配置PC1的网关

ip address 192.168.1.1 255.255.255.0

#

interface GigabitEthernet0/0/0   //配置和R1的互联IP

ip address 10.1.1.1 255.255.255.252

#

interface LoopBack0          //配置loopback作为router id

ip address 2.2.2.2 255.255.255.255

#

ospf 1 router-id 2.2.2.2    //配置OSPF的进程号为1,手动配置router id 为2.2.2.2

area 0.0.0.0                 //进入area 0视图

network 192.168.1.0 0.0.0.255

network 2.2.2.2 0.0.0.0

network 10.1.1.0 0.0.0.3

#

R1:

#

interface GigabitEthernet0/0/0

ip address 10.1.1.2 255.255.255.252

#

interface GigabitEthernet0/0/1

ip address 10.1.2.1 255.255.255.252

#

interface LoopBack0

ip address 1.1.1.1 255.255.255.255

#

ospf 1 router-id 1.1.1.1

area 0.0.0.0

network 1.1.1.1 0.0.0.0

network 10.1.1.0 0.0.0.3

network 10.1.2.0 0.0.0.3

#

R3:

#

interface Ethernet0/0/0

ip address 192.168.2.1 255.255.255.0

#

interface GigabitEthernet0/0/0

ip address 10.1.2.2 255.255.255.252

#

interface LoopBack0

ip address 3.3.3.3 255.255.255.255

#

ospf 1 router-id 3.3.3.3

area 0.0.0.0

network 3.3.3.3 0.0.0.0

network 192.168.2.0 0.0.0.255

network 10.1.2.0 0.0.0.3

配置完成后,查看邻居状态:可以看到邻居状态都达到FULL状态了。

技术图片
技术图片
技术图片

配置完成后,查看路由表

技术图片
技术图片
技术图片

ping测试:可以看到PC1可以ping 通PC2

技术图片

在路由器R1的g0/0/0上进行抓包

看下路由器R1和R2的交互过程;

第一阶段:R1和R2通过Hello报文交互建立邻居关系以及DR/BDR选举,状态从down-init-2-way

A、路由器R1和R2初始状态为down,配置了ospf后,会向组播地址224.0.0.5发送hello报文。

技术图片

如图所示为R1发送的hello报文,R2发送的hello报文类似:

从IP报文头可以得到:

1、Hello报文的源是R1的g0/0/0接口IP 10.1.1.2,目的IP是组播地址224.0.0.5.

2、Protocol字段为89,表示上层是OSPF报文。

从ospf 报文中可以得到:

  1. 该报文类型为OSPF报文

2、OSPF报文的总长度为44字节。

3、发送该报文的路由器Router ID为1.1.1.1 。

4、发送该报文的所属区域Area ID为 0.0.0.0。

6、认证类型表示不验证;

B、路由器R2收到了邻居R1发送的第一个hello报文,状态变为init,并且向R1发送一个hello报文,hello报文的邻居中加入1.1.1.1。(R1收到该报文状态变为2-way)

技术图片

C、路由器R1收到R2发送的第一个hello报文后,状态变为init,并会向R2发送一个hello报文,hello报文中邻居中加入2.2.2.2。(R2收到该报文状态变为2-way)

技术图片

D、通过hello报文选取DR和BDR,图中可以看到DR为10.1.1.1 BDR为10.1.1.2. (R1和R2的hello报文为1,R1的router id 为1.1.1.1 ,R2的routerID wei 2.2.2.2 .优先级相同时,则比较Router ID,值越大越优先被选举为DR,因此R2为BR,R1为BRD)

技术图片
技术图片

第二阶段:R1和R2通过DD报文交互进行主从路由器的选举和数据库摘要信息的交互,状态从exstart-exchange。

A、R2邻居状态变为ExStart以后,R2向R1发送第一个DD报文,在这个报文中,DD序列号被设置为345724,R2宣告自己为主路由器。

技术图片

B、R1也向R2发送第一个DD报文,在这个报文中,DD序列号被设置为345726。R1也宣告自己为主路由器。

技术图片

由于R2的Router ID比R1的大,所以R2应当为真正的主路由器。

C、R2发送一个新的DD报文,序列号设置为345724。表示经过协商后R2 是主路由器.

技术图片

D、R1发送一个新的DD报文,在这个新的报文中包含LSDB的摘要信息,序列号设置为R2第一次发送时使用的序列号(表示承认R2为真正的主路由器),因此R1将邻居状态改变为Exchange。

技术图片

E、邻居状态变为Exchange以后,R2发送一个新的DD报文,该报文中包含LSDB的描述信息,DD序列号设为345725(上次使用的序列号加1)。

技术图片

F、即使R1不需要新的DD报文描述自己的LSDB,但是作为从路由器,R1需要对主路由器R2发送的每一个DD报文进行确认。所以,R1向R2发送一个内容为空的DD报文,序列号为345725(R2上次使用的序列号加1)。

技术图片

第三阶段:R1和R2通LSR/LSU/LSACK报文交互建立完全邻接关系,状态从loading-FULL。

1、发送完最后一个DD报文之后,R1将邻居状态改变为Loading;邻居状态变为Loading之后,R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。

技术图片

2、R2收到LSR报文之后,向R1发送LSU报文,在LSU报文中,包含了那些被请求的链路状态的详细信息。R1收到LSU报文之后,将邻居状态从Loading改变成Full。

技术图片

3、R1向R2发送LSACK报文,用于对已接收LSA的确认。

技术图片

以上是关于ospf协议建立邻接的过程中有多少个状态的主要内容,如果未能解决你的问题,请参考以下文章

wireshark抓取OSPF协议交互的5种报文分析OSPF路由协议建立邻接关系的过程

OSPF邻居/邻接建立(3)

OSPF 距离矢量路由协议和链路状态路由协议相比

ospf协议有四个主要工作过程是?

OSPF路由基础

ospf建立邻居关系必须有的哪4个条件