OSPF的七种状态机

简介:

Router ID:在一个OSPF域内,用于标识每台路由器的ID。

选举规则:

1.手工指定(建议)

2.如果没有手工指定,使用Loopback接口中最大的IP地址作为Router ID

3.如果没有配置Loopback接口,那么使用物理接口中最大的IP地址作为Router ID


链路状态信息

链路信息包括有:

1.链路的类型

2.接口IP地址和掩码

3,链路上所连接的邻居路由器

4.链路的带宽(开销)


Hello报文:

作用:发现建立并维护邻居关系

OSPF内的路由器在交换链路状态信息时,首先需要建立一个邻居关系,这个关系是通过Hello报文实现的。邻居关系建立之后,Hello报文周期性的发送以实现邻居保持的功能,如果在一定的时间内没有收到Hello报文,则会中断邻居关系。

OSPF邻居建立的过程

状态含义:

Down:没有启用OSPF的状态;邻居失效后变为该状态

Init:初始化状态,第一次收到对端发来的hello包(包含对端route-id)时,将对端的状态设置为init

2-way:邻居状态,相互间周期发送hello的状态(双方建立会话)

Exstart:交换信息的初始化状态

发送DBD(包含本地的LSA的摘要信息)报文,选举主从路由器(利用HELLO报文中的ID和优先权来进行选举,不允许抢占,DR没了,DBDR才能上)

Exchange:交换信息的状态

该状态下,相互间发送DBD,告知对端本地所有的LSA的目录;同时,可以发送 LSR,LSU,LSACK来学习对端的LSA

Loading:加载状态(没有学习完的状态)

发送LSR,LSU,LSACK,专门学习对端的LSA的详细信息

Full:邻接状态(学习完的状态)

彼此的LSDB同步,即所有的LSA相同


成为邻居的6个条件:

1.RID不同

2.特殊区域的flag字段相同

3..子网掩码相同

4.验证相同

5.区域号相同

6.hello/dead相同

邻居建立如下:

1.RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2。RTA启动OSPF后,RTA会发送第一个Hello报文(以组播的方式发送,目的地址为224.0.0.5),此时状态为Down,RTB收到RTA的Hello报文后,状态置为init

wKiom1mOo9SyKUduAABYCPZM86Y211.png-wh_50

上图是RTA首次发送一个Heloo报文。需要主要的是,首次发送hello包的时候不包括邻居字段,包的长度为44。

2.RTB发送Hello报文,RTA收到RTB发送的报文之后,状态为Init

wKiom1mOo_GxoNC5AABBfaKFyGk024.png-wh_50

3.RTB向RTA发送邻居列表为1.1.1.1的Hello报文,Hello报文发送三个周期(也有超过3个周期),RTA在收到RTB发来的报文邻居列表中发现自己的Router ID,而且匹配6个条件(建立邻居的6个条件)成功之后,状态为2-way,也称为邻居状态

wKioL1mOpAPDt5xcAACzw_63HrQ592.png-wh_50

4.RTA向RTB发送邻居列表为2.2.2.2的hello报文,Hello报文发送三个周期(也有超过3个周期),RTB在收到hello报文邻居列表中发现自己的Router ID,而且匹配6个条件(建立邻居的6个条件)成功之后, 状态置为2-way,也称为邻居状态

wKioL1mOpDGSbCJJAACcAeRy3jg873.png-wh_50

OSPF有多种类型的网络(p2p,broadcast,NBMA,P2MP)

首先说一下什么是MA网络:

MA网络就是 Multiaccess 多路访问网络,它分为两种: 一是Broadcast 广播,二是Nonbroadcast Multiacccess(NBMA)非广播的多路访问网络,MA网络在OSPF中需要选出DR和BDR,来减小LSA的泛滥。

broadcast(广播)

两台或者两台以上的路由器通过共享介质互联

支持广播,组播

Hello Interval时间为10s ,Dead Interval时间为40s,选举DR/BDR

NBMA(非广播多路访问):

Hello Interval时间为30s ,Dead Interval时间为120s

在NBMA网络内,因为NBMA默认不支持广播和组播,所以无法发送Hello包,邻居也就无法接受到信息,所以,在这个网络内,需要手工指定邻居,指定邻居之后才能支持DR/BDR。

P2P(点到点):

仅有2台路由器相连

支持广播和组播

Hello Interval时间为10s ,Dead Interval时间为40s,不选举DR/BDR就可以直接达到full状态

P2MP(点到多点):

Hello Interval时间为30s ,Dead Interval时间为120s

支持广播和组播

在P2P网络中,不选举DR/BDR,可以直接达到full状态

一个路由器的接口类型改为broadcast,另一个接口改为P2P,是否能通信呢

wKioL1mOpFuRQzWPAAArkAmaJfw299.png-wh_50

wKiom1mOpHDQ7B7-AACd5sUMjvs667.png-wh_50

可以看出,他们已经建立起了邻居,建立邻居的条件还是那6个条件,他们都能满足,但是他们并不能传递路由,因为broadcast支持DR/BDR,P2P不支持DR/BDR。所以,在建立邻居关系的基础上,同有或者同无DR/BDR,可以传递路由。


发送第一个DBD报文,来协商主从关系

R1

wKioL1mOpKmDcQWdAABeLH8_gmY975.png-wh_50

R2

wKiom1mOpNSihUMeAABLUzOqIOs969.png-wh_50

wKiom1mOpRuwegktAAAazDwH2BA319.png-wh_50

上图的意思是:我是主,这不是我发的第一个报文,以后也没有更多的报文

wKiom1mOpUzSL7K2AAATj3Kv8Vk124.png-wh_50

上图的意思是:我是从,这不是我发的第一个报文,以后也没有更多的报文

这样,DBD交互完成

PS:DBD报文间用序列号进行确认,主发送的序列号递增,从序列号跟主序列号是一样的,来进行确认。这是隐式确认。

收到对方发来的第一个DBD报文,就把对方的状态设成EXSTART。

在EXCHANGE状态下,就开始发送LSR,来请求LSA(请求本地没有的)

wKioL1mOpYTBdqM4AAAxp5qDXws318.png-wh_50

接收到LSR的路由器,会返回一个LSU

wKioL1mOpc3Q7TMcAABLsGSwNeo334.png-wh_50

接收到LSU的路由器之后,不仅会发送LSU,还会发送一个LSACK确认

wKioL1mOpfLCBPEzAABHGq_8MZU329.png-wh_50

当收到对方发来的LSU,并且更新了LSU后,如果学完了,直接进入full状态,如果没有学习完,则进入loading状态。

PS:判断OSPF有没有路由,就看他有没有LSA


1.Link-state Request 链路状态请求包 LSR 可靠

2.Link-state Update 链路状态更新包 LSU 可靠

3.Link-state Acknowledment 链路状态确认包 LSACK

如何去处理一个接收到的LSA?

如果没有,就把它放入LSDB当中,同时用LSACK确认,并且需要LSA的泛洪;通过SPF算法,去计算最优路由。

如果有,而且优于自己的LSA,就把他放入自己的LSDB,同时用LSACK确认,并且需要LSA的泛洪;通过SPF算法,去计算最优路由。

如果次于自己的LSA,OSPF就会把自己的LSA发送给对方,让对方去学习

如果他们接收到的LSA是一样的话,就会忽略掉。



本文转自 towardly 51CTO博客,原文链接:http://blog.51cto.com/brighttime/1955740

相关文章
|
前端开发 定位技术
|
网络协议 算法 数据库
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
3892 12
|
存储 Java 定位技术
SpringBoot整合高德地图完成天气预报功能
本文介绍了如何在SpringBoot项目中整合高德地图API实现天气预报功能。从创建SpringBoot项目、配置依赖和申请高德地图API开始,详细讲解了实体类设计、服务层实现(调用高德地图API获取实时与预报天气数据)、控制器层接口开发以及定时任务的设置。通过示例代码,展示了如何获取并处理天气数据,最终提供实时天气与未来几天天气预报的接口。文章还提供了测试方法及运行步骤,帮助开发者快速上手并扩展功能。
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
弹性计算 固态存储 Linux
阿里云服务器、轻量应用服务器、gpu云服务器收费标准与实时活动价格参考
云服务器ECS、轻量应用服务器和gpu云服务器是阿里云的主要云服务器产品,目前轻量应用服务器2核2G收费标准为60元/月,活动价格只要36元/1年或68元1年,云服务器1核1G包月收费标准最低为24.0元/月,GPU云服务器中gn6i实例4核15G配置月付1681.00/1个月起,gn6v实例8核32G配置月付3817.00/1个月起。本文为大家整理汇总了阿里云服务器、轻量应用服务器、gpu云服务器的最新收费标准与活动价格情况,以表格形式展示给大家,以供参考。
|
网络协议 算法 网络安全
OSPF协议概述
OSPF协议概述
913 0
|
存储 算法
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
407 0
|
测试技术 定位技术 项目管理
一图搞懂,全流程项目管理实践地图,驱动:市场-研发-售后
为了实现市场运营、产品研发与售后服务的有效协作,YesDev项目管理工具提供了一个全面的解决方案。它覆盖从项目成单到交付的全过程,通过清晰地划分市场运营、产品研发和售后服务三个主要阶段,加上组织管理作为基础设施,形成3+1的管理体系。 YesDev提供了一套从市场到售后的全流程管理方案,帮助企业实现跨部门高效协作。
1109 2
|
前端开发 UED 开发者
【前端秘籍】掌握 display: none 与 visibility: hidden 的奥秘,让你的网页设计更上一层楼!
【8月更文挑战第23天】在Web前端开发中,常需控制元素的可见性。本文详细对比了两种主流CSS隐藏方法:`display: none`和`visibility: hidden`。`display: none`彻底移除元素在页面布局中的位置,适用于无需保留空间的隐藏场景;而`visibility: hidden`仅使元素视觉上消失,仍保留其布局位置,适用于需要动画效果或保留布局结构的情况。通过具体示例展示了两种方法的实际应用,帮助开发者根据项目需求选择最合适的方式,提升用户体验。
531 0