[每日一记2]第7天 OSPF原理
  

玖零网络 1202

{{ttag.title}}
本帖最后由 玖零网络 于 2019-12-17 07:10 编辑


OSPF原理

    开放式最短经优先OSPF(Open Shortest Path First) 协议是一种基于链路状态的内部网关路由协议。
     OSPF要求每台运行OSPF的路由器都了解整个网络的链路状态信息,这样才能计算出到达目的地的最优路径。 OSPF的收敛过程由链路状态公告LSA(Link State Advertisement)泛洪开始,LSA中包含了路由器已知的接口IP地址、 掩码、 开销和网络类型等信息。收到LSA的路由器都可以根据LSA提供的信息建立自己的链路状态数据库LSDB(LinkState Database),并在LSDB的基础上使用SPF算法进行运算,建立起到达每个网络的最短路径树。最后,通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。
  OSPF直接运行在IP协议之上,使用IP协议号89。
  OSPF有五种报文类型,每种报文都使用相同的OSPF报文头。
  Hello报文:最常用的一种报文,用于发现、 维护邻居关系。并在广播和NBMA(None-Broadcast Multi-Access)类型的网络中选举指定路由器DR(Designated Router)和备份指定路由器 BDR(Backup Designated Router)。
   DD报文:两台路由器迚行LSDB数据库同步时,用DD报文来描述自己的LSDB。DD报文的内容包括LSDB中每一条LSA的头部(LSA的头部可以唯一标识一条LSA)。LSA头部只占一条LSA的整个数据量的一小部分,所以,这样就可以减少路由器之间的协议报文流量。
   LSR报文:两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地LSDB所缺少的,这时需要収送LSR报文向对方请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。
   LSU报文:用来向对端路由器収送所需要的LSA。
   LSACK报文:用来对接收到的LSU报文迚行确认。
报文头部


OSPF直接运行在IP协议之上,使用IP协议号89。
version:版本,默认=2
Type:ospf报文类型
Packet Length:整个OSPF报文长度
Router ID:生成此报文的路由器的Router ID
Area ID:此报文需要通告到的区域
Checksum:校验整个OSPF报文
Auth Type:认证类型(1、明文;2、MD5)
Authentication:认证信息
邻居状态机
建立邻居的过程:
Down:邻居的初始状态,表示没有从邻居收到任何信息。
Attempt:只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居収送报文。发送间隔为HelloInterval。 如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
Init:已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。
2-Way Received:表示路由器发现与邻居双向通信已经建立,如需要建立邻接关系则进入Exstart开始同步LSDB,如不需要建立邻接关系进入2-WAY
2-Way:双向通信已经建立,但是没有与邻居建立邻接关系。 这是建立邻接关系以前的最高级状态。
1-WAY Received:自己不在邻居的邻居列表中,通常为对端邻居重启造成。
建立邻接关系的过程
ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。 主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。 在此状态下収送的DD报文不包含链路状态描述。
Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
Loading:相互収送LSR报文请求LSA,収送LSU报文通告LSA。
Full:路由器的LSDB已经同步。邻居之间形成了完全的邻接关系
Router ID、邻居和邻接
   Router ID是一个32位的值,它唯一标识了一个自治系统内的路由器,可以为每台运行OSPF的路由器上可以手动配置一个Router ID,或者指定一个IP地址作为Router ID。 如果设备存在多个逻辑接口地址,则路由器使用逻辑接口中最大的IP地址作为Router ID;如果没有配置逻辑接口,则路由器使用物理接口的最大IP地址作为Router ID。

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

    邻接(Adjacency):形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,并能交换LSA之后,才形成真正意义上的邻接关系。
邻居发现
OSPF的邻居収现过程是基于Hello报文来实现的,Hello报文中的重要字段解释如下
Network Mask:发送Hello报文的接口的网络掩码。
HelloInterval:发送Hello报文的时间间隔,单位为秒。
Options:标识发送此报文的OSPF路由器所支持的可选功能。 具体的可选功能已超出这里的讨论范围。
Router Priority:发送Hello报文的接口的Router Priority,用于选举DR和BDR。
RouterDeadInterval:失效时间。 如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效;单位为秒,通常为四倍HelloInterval。
Designated Router:发送Hello报文的路由器所选举出的DR的IP地址。 如果设置为0.0.0.0,表示未选举DR路由器。
Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。 如果设置为0.0.0.0,表示未选举BDR。
Neighbor:邻居的Router ID列表,表示本路由器已经从这些邻居收到了合法的Hello报文。
DR/BDR选择
在广播和NBMA网络中为了减少连接的数量,减轻网络负荷通过选举DR/BDR
在邻居収现完成之后,路由器会根据网段类型迚行DR选举。在广播和NBMA网络上,路由器会根据参不选举的每个接口的优先级迚行DR选举。优先级取值范围为0-255,值越高越先。缺省情况下,接口优先级为1。如果一个接口优先级为0,那么该接口将不会参不DR戒者BDR的选举。如果优先级相同时,则比较Router ID,值越大越优先被选举为DR。
为了给DR做备份,每个广播和NBMA网络上还要选举一个BDR。BDR也会与网络上所有的路由器建立邻接关系。为了维护网络上邻接关系的稳定性,如果网络中已经存在DR和BDR,则新添加进该网络的路由器不会成为DR和BDR,不管该路由器的Router Priority是否最大。 如果当前DR发生故障,则当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR发生故障,则DR不变,重新选举BDR。 这种选举机制的目的是为了保持邻接关系的稳定,使拓扑结构的改变对邻接关系的影响尽量小。
区域划分
划分OSPF区域可以减少LSDB规模,节约链路带宽,减轻路由负荷。
每个区域都要维护一个独立的LSDB.
Area 0 骨干区域,为了避免区域间路由环路,非骨干区域之间不允许直接相互发布路由信息。 因此,每个区域都必须连接到骨干区域。
ABR 区域边界路由器,运行在区域之间的路由器,它包含所有相连区域的LSDB。
ASBR 自治系统边界路由器,是指和其他AS中的路由器交换路由信息的路由器,这种路由器会向整个AS通告AS外部路由信息。
OSPF的开销
OSPF基于接口带宽计算开销,计算公式为:接口开销=带宽参考值÷带宽。


打赏鼓励作者,期待更多好文!

打赏
4人已打赏

发表新帖
热门标签
全部标签>
每日一问
2024年技术争霸赛
干货满满
技术笔记
技术盲盒
新版本体验
GIF动图学习
信服课堂视频
通用技术
秒懂零信任
功能体验
产品连连看
2023技术争霸赛专题
安全攻防
标准化排查
自助服务平台操作指引
技术咨询
答题自测
网络基础知识
在线直播
玩转零信任
技术晨报
齐鲁TV
华北区交付直播
每周精选
畅聊IT
专家问答
技术圆桌
MVP
安装部署配置
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
北京区每日一练

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人