简述ospf的基本工作过程。

 我来答
电脑网络小达人

2021-03-19 · TA获得超过1125个赞
知道小有建树答主
回答量:1579
采纳率:70%
帮助的人:113万
展开全部
一、OSPF是什么?
Open Shortest Path First, 开放最短路径优先协议,是一种开源的使用最短路径优先(SPF)算法的内部网关协议(IGP)。常用于路由器的动态选路。
二、OSPF常见的几个概念
1. 邻居(Neighbor):宣告OSPF的路由器(也可能是通过quagga软件配置的普通服务器)从所有启动OSPF协议的接口上发出Hello数据包。如果两台路由器位于同一条数据链路上,并且它们根据互相的hello消息中指定的某些信息(比如id等)协商成功,那么它们就成为了邻居(Neighbor)。
2. 邻接关系(Adjacency):两台邻居路由器之间构成的一条点到点的虚链路,邻接关系的建立是由交换hello信息的路由器类型和网络类型决定的。
3. 链路状态通告(Link State Advertisement,LSA):每一台路由器都会在所有形成邻接关系的邻居之间发送链路状态通告LSA。LSA描述了路由器所有的链路、接口、邻居等信息。ospf定义了许多不同的LSA类型。

三、OSPF原理概括
1. 当这些路由器的LSDB完全相同时,每一台路由器都会以自身为根结点,使用最短路径优先(Shortest Path First,SPF)算法计算一个无环路的拓扑图,这个拓扑图就是SPF算法树。每台路由器都会从自己的SPF算法树中构建出自己的路由表,用于动态选路。
2. 当区域内所有节点的LSDB状态都已同步后,ospf协议将会变的平静下来,邻居之间根据配置固定时间交换hello数据包作为心跳消息,并且每隔30分钟重传一次LSA。如果网络拓扑稳定,那么ospf那将是稳定的。如果网络拓扑发生了变化,比如有节点故障或者新增节点,那么将重新开始交换信息并计算路由。
3. OSPF拓扑中的节点可以分为两类:传输节点和末梢节点。传输节点指网络链路中的中转路由器,它一般两端与其他ospf邻居相连,作用仅是转发数据包,而数据包的源网络和目的网络往往都不同于传输节点所在的网络;末梢节点指网络链路中的末端路由器,也可能是通过quagga软件配置的服务器,它一般只有一端与ospf邻居相连,作为数据包的源头或者目的地。OSFP协议在末梢节点宣告主机路由(也就是子网掩码为255.255.255.255的路由),这样拓扑中其他节点要访问末梢节点就可以在LSDB中查到对应的信息,并通过SPF算法生成的最短路径进行访问。

4. 链路状态数据库(LSDB):每一台收到来自邻居路由器发出的LSA的路由器都会把这些LSA信息记录在它的LSDB中,并且发送一份LSA的拷贝给该路由器的其他所有邻居。这样当LSA传播到整个区域后,区域内所有的路由器都会形成同样的LSDB。

OSPF运行原理
OSPF组播的方式在所有开启OSPF的接口发送Hello包,用来确定是否有OSPF邻居,若发现了,则建立OSPF邻居关系,形成邻居表,之后互相发送LSA(链路状态通告)相互通告路由,形成LSDB(链路状态数据库)。再通过SPF算法,计算最佳路径(cost最小)后放入路由表。
设计要求:1.必须配置骨干区域0
2.其他区域连接到骨干区域
好处: 1.减小路由表(通过域间汇总)
2.本地拓扑变化值影响一个区域(也是通过汇总)
3.某些LSA之子本地泛红,不泛洪到其他区域

OSPF区域及路由器身份
OSPF区域
骨干区域(区域0):骨干区域必须连接所有的非骨干区域,而且骨干区域不可分割,有且只有一个,一般情况下,骨干区域内没有终端用户。
非骨干区域(非0区域):非骨干区域一般根据实际情况而划分,必须连接到骨干区域(不规则区域也需通过tunnel或virtual-link连接到骨干区域)。一般情况下,费骨干区域主要连接终端用户和资源。

OSPF身份
DR(Designated Router):指定路由器,OSPF协议启动后开始选举而来
BDR(Back-up Designated Router):备份指定路由器,同样是由OSPF启动后选举而来
DRothers:其他路由器,非DR非BDR的路由器都是DRothers。

ABR(Area Border Routers):区域边界路由器,连接不同OSPF区域。
ASBR(Autonomous System Boundary Router):自治系统边界路由器,位于OSPF和非OSPF网络之间。
骨干路由器:至少有一个借口连接到骨干区域(区域0)。

OSPF邻居建立
邻居的两个状态
Neighbors:邻居
Adjacency:邻接

邻居不一定是邻接,邻接一定是邻居,只有交互了LSA的OSPF邻居才成为OSPF的邻接,之交互Hello包的支撑位邻居,
在点对点网络中,所有邻居都能成为邻接。
MA(广播多路访问网络,比如以太网)网络类型中,DR,BDR,DRothers三者关系为:
DR、BDR与所有的邻居形成邻接,DRothers之间只是邻居而不交换LSA
影响OSPF邻居建立的原因:

Hello与Dead Time时间不一致(改Hello的话Dead自动*4,单改Dead的话Hello不变)
区域ID必须一致
认证(password一致)
Stub标识一致(与特殊区域有关,之后介绍)
MTU-携带在DBD报文中,两端口必须一致
掩码,如12.1.1.1/30——12.1.1.2/24 这种情况是可以ping通的,但邻居关系起不来
(OSPF对环回口,无论掩码多少位,都按32位处理,所以建议环回口直接/32,或者在环回口下还原真实掩码)
ACL(是否放行OSPF)
OSPF更新
OSPF是一种触发更新的机制。一旦拓扑发生变化便会更新。
OSPF也有周期性更新(30分钟一次)
当收到一条LSA之后:
首先查看是否在LSDB中,若没有则假如LSDB,回复LSACK。继续泛洪出去,并且通过SPF算法计算最佳路径并加入路由表。若存在,则比较谁的更“新”(看序号),序号大者新,若本地不如收到的信更新本地LSDB并泛洪,且通过SPF算法计算最佳路径并加入路由表,若比收到的新,则将本地的泛洪出去。
注:LSA序列号,4字节,16进制
0x80000001-0x7FFFFFFF

OSPF数据包类型
Hello:10秒发送一次,死亡时间40s,4倍关系,可以修改。
DBD:Database Description 仅仅是一个对本地数据库的概念性叙述,供路由器核对数据库是否同步
LSR:Link-State Request 请求链路状态,在数据库同步过程中使用,请求其他角色发送自己失去的LSA最新版本。
LSU:Link-State Update 链路状态更新,LSU包括几种类型的LSA,LSU负责泛洪LSA,和相应LSR。LSA只会发送给之前以LSR请求的LSA的直连邻居,进行泛洪的时候,邻居路由负责把收到的LSA信息重新封装在新的LSU中。
LSACK:链路状态确认,路由器必须对每个收到的LSA进行LSACK确认,但可以用一个LSACK确认多个LSA。
DR、BDR的选举
DR、BDR的选举规则:比较router-id,router-id有以下获得方式:

由工程师指定
这台设备最大的环回口ip
没有环回口的话,物理接口ip地址最大的。
选举规则:

最高优先级值的路由器被选为DR(默认优先级相同:1),次高优先级的为BDR
若优先级相同,则比较router-id,拥有最高router-id的成为DR,次高的成为BDR
优先级被设置为0的不参与选举
OSPF系统启动后,若40s内没有新设备接入就会开始选举,所以为保证DR与BDR的选举不发生意外,建议优先配置想成为DR与BDR的设备。
DR与BDR不可以抢占
当DR小时之后,BDR直升DR,重新选BDR
所有DR,BDR,DRothers说的都是接口,而不是设备
不同网段间选DR,BDR,而不是以OSPF区域为单位
OSPF状态
Down State
Init State:发送了Hello包(还没收到)
Two-way State:收到了一个Hello包且Hello包中包括自己的router-id(对方回复的)
Exstart State:First DBD确认主从关系,router-id大的为主,先发包
Exchange State:交互DBD 相互学习
Loading State:LSR与LSU的交互过程
Full State:所有交互已经完成
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式