×

【2022争霸赛*干货满满】网络技术动态路由协议之开放式最短路径优先OSPF(Open Shortest Path First)基础篇二
  

山东_朱文鑫 2163

{{ttag.title}}
大家好,我是大白,正所谓只要功夫深,铁杵磨成针优质的帖子也在尽力中提供,也希望各位道友多多支持,让我引劫渡劫成功哈哈哈。

大白队口号就是:砸锅卖铁我最行,拼死拼活就要赢!!!!!!!!!!!!

今天延续昨天发的基础篇一进行继续完成OSPF的基础分享,今天分享的是网络技术动态路由协议之开放式最短路径优先OSPF(Open Shortest Path First)基础篇二,基础篇一结尾时分享了OSPF的报文结构信息,今天我们继续分享OSPF报文的基础知识。

OSPF报文的类型:


        Type=1为Hello报文,用来建立和维护邻居关系,邻居关系建立之前,路由器之间需要进行参数协商。

        Type=2为数据库描述报文(DD),用来向邻居路由器描述本地链路状态数据库,使得邻居路由器识别出数据库中的LSA是否完整。

        Type=3为链路状态请求报文(LSR),路由器根据邻居的DD报文,判断本地数据库是否完整,如不完整,路由器把这些LSA记录进链路状态请求列表中,然后发送一个LSR给邻居路由器。

        Type=4为链路状态更新报文(LSU),用于响应邻居路由器发来的LSR,根据LSR中的请求列表,发送对应LSA给邻居路由器,真正实现LSA的泛洪与同步。

       Type=5为链路状态确认报文(LSAck),用来对收到的LSA进行确认,保证同步过程的可靠性。

DD、LSR、LSU、LSAck与LSA的关系:

         DD报文中包含LSA头部信息,包括LS Type、LS ID、Advertising Router 、LS Sequence Number、LS Checksum
         LSR中包含LS Type 、LS ID和Advertising Router
         LSU中包含完整的LSA信息。
         LSAck中包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum



         RIP设置了Request和Response两种报文来完成路由信息的同步,OSPF路由器之间为了完成LSA的同步,可以直接把本地所有LSA发给邻居路由器,但是邻居路由器直接同步LSA并不是最好的方式。

         更快速、更高效的方式是先在邻居路由器之间传送关键信息,路由器基于这些关键信息识别出哪些LSA是没有的、哪些是需要更新的,然后向邻居路由器请求详细的LSA内容。对于OSPF来说,需要有比RIP更高效、更可靠的方式来完成路由器之间的信息同步。

OSPF的LSDB同步:



状态含义:
         ExStart:邻居状态变成此状态以后,路由器开始向邻居发送DD报文。Master/Slave关系是在此状态下形成的,初始DD序列号也是在此状态下确定的。在此状态下发送的DD报文不包含链路状态描述。

          Exchange:在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD报文。

        Loading:在此状态下,路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文。

         Full:LSDB同步过程完成,路由器与邻居之间形成了完全的邻接关系。

LSDB同步过程如下:

          RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2并且二者已建立了邻居关系。当RTA的邻居状态变为ExStart后,RTA会发送第一个DD报文。此报文中,DD序列号被随机设置为X,I-bit设置为1,表示这是第一个DD报文,M-bit设置为1,表示后续还有DD报文要发送,MS-bit设置为1,表示RTA宣告自己为Master。

          当RTB的邻居状态变为ExStart后,RTB会发送第一个DD报文。此报文中,DD序列号被随机设置为Y(I-bit=1,M-bit=1,MS-bit=1,含义同上)。由于RTB的Router ID较大,所以RTB将成为真正的Master。收到此报文后,RTA会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange。

          当RTA的邻居状态变为Exchange后,RTA会发送一个新的DD报文,此报文中包含了LSDB的摘要信息,序列号设置为RTB在步骤2中使用的序列号Y,I-bit=0,表示这不是第一个DD报文,M-bit=0,表示这是最后一个包含LSDB摘要信息的DD报文,MS-bit=0,表示RTA宣告自己为Slave。收到此报文后,RTB会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange。

          当RTB的邻居状态变为Exchange后,RTB会发送一个新的DD报文,此报文包含了LSDB的摘要信息,DD序列号设置为Y+1, MS-bit=1,表示RTB宣告自己为Master。

          虽然RTA不需要发送新的包含LSDB摘要信息的DD报文,但是作为Slave,RTA需要对Master发送的每一个DD报文进行确认。所以,RTA向RTB发送一个新的DD报文,序列号为Y+1,该报文内容为空。发送完此报文后,RTA产生一个Exchange-Done事件,将邻居状态变为Loading。RTB收到此报文后,会将邻居状态变为Full(假设RTB的LSDB是最新最全的,不需要向RTA请求更新)。



          RTA开始向RTB发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息。

          RTB向RTA发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。RTA在完成LSU报文的接收之后,会将邻居状态从Loading变为Full

          RTA向RTB发送LSAck报文,作为对LSU报文的确认。RTB收到LSAck报文后,双方便建立起了完全的邻接关系

*从建立邻居关系到同步LSDB的过程较为复杂,错误的配置或设备链路故障都会导致无法完成LSDB同步。为了快速排障,最关键的是要理解不同状态之间切换的触发原因。


OSPF状态机:



这是形成邻居关系的过程和相关邻居状态的变换过程:【这里非常重要!!!!】

          Down:这是邻居的初始状态,表示没有从邻居收到任何信息。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和Router DeadInterval间隔相同。

          Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果Router DeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。

          Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中

          2-Way Received:此事件表示路由器发现与邻居的双向通信已经开始(发现自己在邻居发送的Hello报文的邻居列表中)。Init状态下产生此事件之后,如果需要和邻居建立邻接关系则进入ExStart状态,开始数据库同步过程,如果不能与邻居建立邻接关系则进入2-Way

          2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。

          1-Way Received:此事件表示路由器发现自己没有在邻居发送Hello报文的邻居列表中,通常是由于对端邻居重启造成的

          ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的;初始DD序列号是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。

          Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容

          Loading:相互发送LS Request报文请求LSA,发送LS Update通告LSA

          Full:两台路由器的LSDB已经同步

LAS头部:



       LSA(Link State Advertisement)是路由器之间链路状态信息的载体。LSA是LSDB的最小组成单位,也就是说LSDB由一条条LSA构成的。【后面会讲到LAS类型这里一定要好好看】

所有的LSA都拥有相同的头部,关键字段的含义如下:

       LS age:此字段表示LSA已经生存的时间,单位是秒

       LS type:此字段标识了LSA的格式和功能。常用的LSA类型有五种

       Link State ID:此字段是该LSA所描述的那部分链路的标识,例如Router ID等。

       Advertising Router:此字段是产生此LSA的路由器的Router ID

       LS sequence number:此字段用于检测旧的和重复的LSA

       LS type,Link State ID和Advertising Router的组合共同标识一条LSA

       LSDB中除了自己生成的LSA,另一部分是从邻居路由器接收的。邻居路由器之间相互更新LSA必然需要一个“通道”。

MA网络中的问题:



由上图可以发现:


       在一个有n个路由器的网络,会形成(n×(n−1))/2 个邻居关系。

       邻居间LSA的泛洪扩散混乱,相同的LSA会被复制多份,如RTA向其邻居RTB、RTC、RTD分别发送一份自己的LSA,RTB与RTC、RTC与RTD、RTB与RTD之间也会形成邻居关系,也会发送RTA的LSA。

DR与BDR作用:



        DR(Designated Router)即指定路由器其负责在MA网络建立和维护邻接关系并负责LSA的同步

        DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息。这样就大大减少了MA网络中的邻接关系数量及交换链路状态信息消耗的资源。

       DR一旦出现故障,其与其他路由器之间的邻接关系将全部失效,链路状态数据库也无法同步。此时就需要重新选举DR,再与非DR路由器建立邻接关系,完成LSA的同步。为了规避单点故障风险,通过选举备份指定路由器BDR,在DR失效时快速接管DR的工作

       伪节点是一个虚拟设备节点,其功能需要某台路由器来承载,下面将介绍DR/BDR的选举规则。


DR与BDR选举:



选举规则:DR/BDR的选举是基于接口的。

        接口的DR优先级越大越优先。

        接口的DR优先级相等时,Router ID越大越优先。


OSPF区域:



        OSPF支持将一组网段组合在一起,这样的一个组合称为一个区域

        划分OSPF区域可以缩小路由器的LSDB规模,减少网络流量。

        区域内的详细拓扑信息不向其他区域发送,区域间传递的是抽象的路由信息,而不是详细的描述拓扑结构的链路状态信息。每个区域都有自己的LSDB,不同区域的LSDB是不同的。路由器会为每一个自己所连接到的区域维护一个单独的LSDB。由于详细链路状态信息不会被发布到区域以外,因此LSDB的规模大大缩小了。

        Area 0为骨干区域,为了避免区域间路由环路,非骨干区域之间不允许直接相互发布路由信息。因此,每个区域都必须连接到骨干区域。

        运行在区域之间的路由器叫做区域边界路由器ABR(Area Boundary Router)它包含所有相连区域的LSDB自治系统边界路由器ASBR(Autonomous System Boundary Router)是指和其他AS中的路由器交换路由信息的路由器,这种路由器会向整个AS通告AS外部路由信息

        在规模较小的企业网络中,可以把所有的路由器划分到同一个区域中,同一个OSPF区域中的路由器中的LSDB是完全一致的。OSPF区域号可以手动配置,为了便于将来的网络扩展,推荐将该区域号设置为0,即骨干区域


邻居与邻接关系:



        邻居(Neighbor)关系与邻接(Adjacency)关系是两个不同的概念。OSPF路由器之间建立邻居关系后,进行LSDB同步,最终形成邻接关系。

        在P2P网络及P2MP网络上,具有邻居关系的路由器之间会进一步建立邻接关系

        在广播型网络及NBMA网络上,非DR/BDR路由器之间只能建立邻居关系,不能建立邻接关系,非DR/BDR路由器与DR/BDR路由器之间会建立邻接关系,DR与BDR之间也会建立邻接关系。

        邻接关系建立完成,意味着LSDB已经完成同步,接下来OSPF路由器将基于LSDB使用SPF算法计算路由



以上就是本次的网络技术动态路由协议之开放式最短路径优先OSPF(Open Shortest Path First)基础篇二,截止基础篇二,OSPF的基本知识点就已经完成分享,OSPF的知识基本都是知识点,大家一定要坚持去记忆,后续开始分享OSPF的域内路由‘感谢大佬们的参阅,此贴先到这里后续会带上更加实用的帖子,感谢大家!

励志分享超清壁纸语句~~:



读书时,我愿在每一个美好思想的面前停留,就像在每一条真理面前停留一样。——爱默生


好的今天就到这里,老样子,感谢各位大神的参阅,孩子为了挣豆子不容易,孩子家里穷没豆子吃饭了!!!

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

打赏
2人已打赏

339015 发表于 2022-10-17 21:43
  
感谢楼主分享,文章介绍了ospf协议有关原理,,内容丰富,期待更多优秀的分享
日出 发表于 2023-4-17 19:17
  

感谢楼主无私奉献,学习一下
焱燚 发表于 2023-4-17 19:17
  

感谢楼主无私奉献,学习一下
飞飞侠 发表于 2023-4-17 19:14
  

感谢楼主无私奉献,学习一下
德德 发表于 2023-4-17 19:13
  

感谢楼主无私奉献,学习一下
小小胖 发表于 2023-4-17 19:10
  

感谢楼主无私奉献,学习一下
小霞米 发表于 2023-4-17 19:10
  

感谢楼主无私奉献,学习一下
梦境人生 发表于 2023-4-17 19:06
  

感谢楼主无私奉献,学习一下
蔺嘉宾 发表于 2023-4-17 19:06
  

感谢楼主无私奉献,学习一下
鲤鲤 发表于 2023-4-17 19:05
  

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

本版版主

12
185
6

发帖

粉丝

关注

121
315
352

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人