ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OSPF(Open Shortest Path First)——基于链路状态的内部网关协议详解

2021-05-10 15:35:32  阅读:195  来源: 互联网

标签:状态 网关 报文 发送 邻居 Path OSPF DD


OSPF简介

OSPF是基于链路状态的内部网关路由协议,OSPF可以解决网络扩容带来的问题。

当网络上路由器越来越多,路由信息流量急剧增长的时候,OSPF可以将每个自治区域划分为多个区域,并限制每个区域的范围。

OSPF的优点

1、无环路

2、收敛快

3、扩展性好

4、支持认证

OSPF原理介绍

OSPF协议规定每个运行OSPF的路由器都需要对整个网络的链路状态信息和路由信息有了解,这样才能计算出到达目的网关的最优距离,通过LSA(Link State Advertisement) 链路状态通告泛洪开始,LSA中包含了路由器的接口IP地址、掩码、开销和网络类型等信息,并通过LSA信息建立自己的LSDB,并再LSDB的基础上通过SPF算法计算出到达目的网络的最优路由,并将其加入到路由表中。

OSPF报文

OSPF共五类报文

1、Hello报文:

Hello报文的作用是发现和维护邻居关系,在NBMA网络和广播中选举DR和BDR。

2、DD(DataBase Description)报文

DD报文用于在LSDB同步的过程中,DD报文来描述自身的LSDB DD报文存放着LSA的信息头部,可以减少路由器之间的协议报文流量。

3、LSR(Link State Request)报文

LSR报文用于LSDB数据同步结束后 请求获取对方拥有的而本地没有的LSA信息,LSR报文只包含了LAS的摘要信息

4、LSU(Link State Update)报文

LSU报文用于发送对方请求的LSA信息

5、LSACK报文

LSACK报文用来对接收到的LSU报文进行确认

邻居状态

OSPF共五种状态

1、Down状态:

这是邻居的初始状态,表示在邻居失效时间内未收到邻居发送的Hello报文

2.1、Attempet状态:

此状态只在NMBA网络上存在,表示没有接到任何邻居消息,但是已经周期性的向邻居发送报文,如果RouterDeadInterval间隔内未收到Hello报文,则转为Down状态

2、Init状态:

Init状态表示已经收到邻居发送的Hello包,但自己不在所收到的hello报文的邻居列表中,未形成双向通信

3、2-Way状态:

此状态表示已经和邻居建立双向通信,在接收到的hello报文邻居列表中

4、ExStart状态:

此状态是形成邻接关系的第一个步骤,表示LSDB同步的初始状态,这时会发送DD报文,但不包含链路状态信息,主从状态和初始化DD序列号均在此步骤完成

5、ExChange状态:

状态开始互相发送DD报文,描述本地LSDB的内容

6、Loading状态:

相互发送LSR报文请求LSA,发送LSU报文通告LSA

7、Full状态:

完成LSDB同步。

Router ID、邻居和邻接

Router是一个32位的值 和IP地址构成一样,它标志了一个自治系统的路由器,如果未手动指定,默认使用逻辑接口中最大的IP地址作为Router ID

运行OSPF的路由器直接需要交换链路状态信息和路由信息,在交换这些信息之前需建立邻接关系

邻居(Neighbor)

OSPF路由器启动后,便会通过OSPF接口想外发送Hello报文用于发现邻居。收到Hello报文的OSPF路由器会检查报文中的一些参数,如果参数一致,就会彼此形成邻居关系。

邻接(Adjacency)

只有双方交换DD报文,完成LSDB同步后才可称之为邻接

邻居发现

Hello报文重要字段解析

Network Mask:发送Hello报文的接口的子网掩码

Hello Interval:发送Hello报文的间隔时间

Options:可选功能

Router Prioripty:路由优先级 用于选举DR和DBR

Router Dead Interval:路由失效时间 一般为4倍的Hello Interval,为40

数据库同步

1、建立完邻居关系后,RTA向RTB发送DD报文,DD序列号被设置为X,RTA宣告自己是为主路由器

2、RTB也向RTA发送DD报文,在报文中,DD序列号被设置为Y,RTB也宣告自己为主路由器,由于RTB的Router ID比RTA的大,所以RTB是真正的主路由器

3、RTA发送一个新的DD报文,DD序列号为Y,因此RTB将邻居状态改变为ExChange。

4、变为ExChange后,RTB发送一个新的DD报文,DD序列号为Y+1

5、即使RTA不需要新的DD报文来描述自己的LSDB,但是作为从路由器,要向主路由器发送的每一个DD报文做确认,所以RTA发送一个内容为空的DD报文,发送完最后一个报文的时候,RTA将邻居状态改变为Loading;RTB收到最后一个DD报文之后,改变状态为FULL

建立完全邻接关系

1、邻居状态变为loading之后,RTA开始对RTB发送LSR报文,请求LSA信息

2、RTB收到LSR报文后,向RTA发送LSU报文

3、RTA收到LSU报文后,切换至FULL状态

4、RTA向RTB发送LSACK报文,用于对已接收LSU报文的确认

5、此时、RTA和RTB之间的邻居状态变为FULL,表示达到完全邻接状态

DR&BDR选举

DR和BDR可以减少网络中邻接关系的数量,从而减少链路状态信息和路由信息的交换次数,节省带宽

一个广播上所有路由器都必须连接DR和BDR

DR和BDR是基于端口优先级选举的,如果优先级相同时,则根据Router id来选举

OSPF区域

OSPF开销

OSPF的开销公式为:带宽参考值/带宽

 

标签:状态,网关,报文,发送,邻居,Path,OSPF,DD
来源: https://www.cnblogs.com/xiaowangtongxue/p/14751203.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有