1.1.6 LSDB同步

news/2025/3/15 1:11:44/

邻接关系

 

邻接建立过程

 

讲完了报文之后我们具体来看一下是怎么同步的,我们可以看到下图是我们LSDB的过程:

 

注意:

我们要注意,在到达同步过程之前我们先要达到2-way的状态,就是我们首先要有邻居状态的建立,才有可能有下面的这些步骤。

 

 

首先第一个是ExStart状态

 

在Exstart状态中,是用于选举我们的主从的,这里我们可以看到,选举主从主要是用到了DD报文。

对于最前面的这三个DD报文,实际上是不携带任何的路由摘要消息的,此时有人会问不携带路由摘要,那么这个DD报文的作用是什么?

 

现在我们来看一下它是如何去选举主从的,首先对于RTA而言,它会发送一个DD报文。

 

  • 这里有一个Seq,我们可以想象X是一个随机数,它的任意取值都是没有关系的,可以取任意的值。
  • 第二个I代表的是这个是否是我的第一个DD报文,很明显是。
  • 而M代表我是不是Master,此时也就是我是不是主,RTA在这里并不知道RTB的情况肯定以为自己是主,那么同样是置为1,认为自己是MASTER。
  • 而MS是代表后面还没有响应选举的DD报文,这里后面还是要去选举DD的,还是要去发送报文信息,所以也是置为1。

 

对于RTB来说也是一样的,RTB收到了DD报文也是去比较我们的Router ID。

 

这里对于DD报文,Router ID越大则会成为一个Master,此时RTB就知道自己已经是MASTER。

 

回复一个DD报文,Seq=Y,这个就是随机数,我们不用管他。

Y表示是不是我的第一个DD报文。

M表示自己是否为MASTER,现在认为自身是MASTER,所以也置为1。

MS表示后面还有没有相应的选举报文,这里是有的,同样也是置1。

 

此时RTA收到了DD报文之后,发现RTB的Router ID确实是比我大,那么RTB就可以作为一个MASTER。

 

此时路由器就从ExStart变为Exchange状态,也就是说代表主从去选举完毕了。但是这里RTA就会去回复一个DD报文

 

这里的这个DD报文,可以看到它的SEQ就是遵从于我的RTB的SEQ的值了,也就是说之后再去传递任何的DD报文,都是以Y为基础。

 

在Y上面进行加一、加二等等,第一次传输就是加一,第二次传输就是加二。它在这里就是以y为基础去传送我们的路由消息已经传送我们的DD报文了。

 

这里其实就可以去保证我们的可靠性了,这个也是选举出主从的意义,为了保证双方设备的可靠性。

 

这个时候RTA认定RTB是我的DD报文,这个时候SEQ可以理解为一个会话ID,就置为y,它对于I、M、MS这三个参数在我们的报文中还是有的,但是只不过这三个参数都是置0。

 

  • 因为I首先并不是我的第一个报文了,此时置为0。
  • 现在RTA很明显不是Master,是从,所以M也置为0。
  • 现在因为是最后一个参与主从选举的DD报文了,所以也是置为0了。

 

表示去认可RTB主从的地位。肯定RTBRTA的主了,此时RTB收到了这个报文之后,就会从Exstart状态变为Exchange

 

而在Exchange状态中它们就会开始正式的交互相应的摘要信息了,此时RTB将我们相应的DD报文的摘要信息发给RTA。

 

  • 这个时候我们的Seq等于Y+1,这是RTB第一次传输摘要信息的报文。
  • 这个时候它后面跟着一个MS,表示后面还跟着其他的一些MS的报文。

 

然后对于Exchange状态,RTA现在已经从Exchange状态,到达了loading状态

 

同时它也会发送Seq=Y+1的报文,在这里的话也就相应的去发送路由摘要的信息给RTB。

那么RTB假如收到了这个路由的摘要信息之后,发现RTA在这里的路由信息我完全在之前已经都学习完成了,已经对所有的摘要信息在我自己的LSDB链路状态数据库都存放好了。

 

那么这个时候我并没有重新要从RTA中重新获取的信息了,我就会直接从Exchange状态变为Full状态

 

表示我不需要再去学习任何的路由消息了。

 

 

对于RTA来说,假如说RTA在这里有一些路有消息需要去学习,此时就会去发送LSR去请求响应的路由消息

 

比如:

现在我想去学习2.2.2.2这个loopback口,即我去请求2.2.2.2这个32位的路由的消息,同时这里只是一个目的网段和一个掩码的摘要信息。

 

对于RTB就会回复一个详细的路由信息LSU

 

包括Cost值、出接口等。

 

对于RTA。现在我收到了一个信息的话,我就会去回复一些ACK的状态。假如说RTARTB之间,RTA已经完全学习了RTB的全部路由消息之后已经到了Full状态

 

到了Full状态之后就代表了邻接关系的建立,这个就是整体的过程。

 

OSPF邻居状态机

 

 

对于OSPF状态机的描述,我们可以看一下:

 

首先第一个是Down状态,对于Down状态就代表我刚刚去发送Hello报文

 

如果接收到了Hello报文就会进入到Init状态。

这里我们要注意有一个Attempt状态。

 

Attempt状态是在对应的NBMA网络中,如果是NBMA网络就会是Attempt状态,即尝试去建立。

 

然后进入到了Init状态

 

如果收到了对端的Hello报文我们会到达下一个状态,即2-way状态。

 

有部分的路由器邻居关系会卡在2way状态,当然有部分的路由器就可以进入到下一个状态,即ExStart状态

 

Exstart状态会去选举主从,主从选举完成就会进入Exchange状态

 

对于Exchange状态就会去开始交互DD报文。(完整则直接变为Full,不完整则进入Loading状态去请求路由)

 

这里的DD报文就携带了响应的路由摘要信息,知道了对方的路由摘要之后就会开始去互相学习路由。

 

我们要注意,这里的学习路由并不是1s、或者很短的时间内可以学习完成,肯定是需要一个过程的:

 

我想要去发送LSR请求,LSU收到相应的信息,然后我再去确认。

 

此时我们在学习路由的这个过程就是一个Loading状态

 

最后,两边的路由报文已经学习完成之后,我们就进入到了最后的状态,即Full状态


http://www.ppmy.cn/news/829316.html

相关文章

位同步

一、几个概念的区分 对于基本概念的认识是非常重要的,比如说:码元、比特、波特、帧,以及由此产生的码元速率、比特率、波特率,还有位同步(比特同步)、帧同步等等信息。 1、码元和码元速率 一个数字脉冲称…

提交代码到Gitlab自动同步备份到Gitee

一.明确需求,日常工作中使用的代码管理工具是Gitlab,但是我们需要Gitee也要有一份跟Gitlab代码库中的同样的代码并且Gitlab有新的提交就自动同步到Gitee。 二.入坑前准备工作 ①分别注册gitlab账户和gitee账户 ②需要在gitlab添加一个SSH密钥&#xff…

ntpdate同步更新时间

ntpdate同步更新时间 知识预览 1、安装ntpdate2、date命令3、ntpdate命令4、ntp常用服务器5、加入crontab Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机…

多传感器时间同步

时间同步 第一次谈及时间同步,可能会有点懵逼。其实这在我们生活中是很常见的,小时候应该都用过那种电子手表,这种电子手表往往隔一段时间就会不准确,需要手动进行校准。这种手动校准的过程就可以认为是时间同步。想想看&#xff…

时间同步原理

时间同步原理 一.同步原理 如上图所示,同步两个不同系统的时间,两个系统的时间偏差为 Δ \Delta Δ ,即: t B − t A Δ t_B-t_A\Delta tB​−tA​Δ 上图对应的公式如下: t B 1 t A 1 Δ τ 1 ; ( 1 ) t A 2 t B 2 − Δ τ 2 ; (…

从QQ同步助手上导出的短信文件*.csv中读取短信,并运用在Qt程序中

登陆"QQ同步助手"的网页,我们可以将里面的短信信息批量导出到本地存为*.csv文件。该文件可以用Excel打开,看到里面的短信信息。 在用Qt编写一个小程序的时候我想提取这里面的短信信息。作为一个小程序来说,不管是用连接数据…

Javamail使用IMAP同步QQ自定义文件夹问题

前言 最近使用Javamail同步QQ文件夹的时候发现,在QQ web端建立的文件夹,在手机端javamail却抛出FolderNotFoundExcetion的异常,这个困扰我几天了,我一度认为是javamail的bug.直到今天不经意间的一个发现,才解决了这个问题,以此来记录下! 不经意间的发现,验证截图:

怎么设置qq信息同步服务器,王者荣耀QQ消息同步功能是什么 王者荣耀QQ消息同步功能介绍...

王者荣耀QQ消息同步功能是什么?王者荣耀QQ消息同步功能在4月8日起以逐步开启,不日将于各服务器中实装,但想必还有不少玩家对QQ消息同步功能不是很了解,不知道QQ消息同步功能是的作用和使用方法,下面小编带来了王者荣耀QQ消息同步…