> 文档中心 > 【重识云原生】第四章云网络4.3.4.3节——OSPF协议工作原理

【重识云原生】第四章云网络4.3.4.3节——OSPF协议工作原理

 《重识云原生系列》专题索引:

  1. 第一章——不谋全局不足以谋一域
  2. 第二章计算第1节——计算虚拟化技术总述
  3. 第三章云存储第1节——分布式云存储总述
  4. 第四章云网络第一节——云网络技术发展简述
  5. 第四章云网络4.2节——相关基础知识准备
  6. 第四章云网络4.3节——重要网络协议
  7. 第四章云网络4.3.1节——路由技术简述
  8. 第四章云网络4.3.2节——VLAN技术
  9. 第四章云网络4.3.3节——RIP协议
  10. 第四章云网络4.3.4节——OSPF协议
  11. 第四章云网络4.3.4.3节——OSPF协议工作原理
  12. 第四章云网络4.3.4.4节——[转载]OSPF域内路由
  13. 第四章云网络4.3.4.5节——[转载]OSPF外部路由
  14. 第四章云网络4.3.4.6节——[转载]OSPF特殊区域之Stub和Totally Stub区域详解及配置
  15. 第四章云网络4.3.4.7节——[转载]OSPF特殊区域之NSSA和Totally NSSA详解及配置
  16. 第四章云网络4.3.5节——EIGRP协议
  17. 第四章云网络4.3.6节——IS-IS协议
  18. 第四章云网络4.3.7节——BGP协议
  19. 第四章云网络4.3.7.2节——BGP协议概述
  20. 第四章云网络4.3.7.3节——BGP协议实现原理
  21. 第四章云网络4.3.7.4节——高级特性
  22. 第四章云网络4.3.7.5节——实操
  23. 第四章云网络4.3.7.6节——MP-BGP协议
  24. 第四章云网络4.3.8节——策略路由
  25. 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术

3 工作原理

3.1 OSPF工作原理简述

(1)了解自身链路

        每台路由器了解其自身的链路,即与其直连的网络。 

(2)寻找邻居

        不同于RIP,OSPF协议运行后,并不立即向网络广播路由信息,而是先寻找网络中可与自己交换链路状态信息的周边路由器。可以交互链路状态信息的路由器互为邻居。 

(3)创建链路状态数据包

        路由器一旦建立了邻居关系,就可以创建链路状态数据包。 

(4)链路状态信息传递

        路由器将描述链路状态的LSA泛洪到邻居,最终形成包含网络完整链路状态信息的链路状态数据库LSDB(Link State Database)。 

(5)计算路由

        路由区域内的每台路由器基于LSDB通过SPF算法,计算得到一棵以自己为根的SPT(Shortest Path Tree),再以SPT为基础计算去往各目的网络的最优路由,并形成路由表。

3.2 邻居关系和邻接关系演变

3.2.1 邻居发现

        OSPF的邻居发现过程是基于Hello报文来实现的,我们说首先刚开启OSPF的时候,路由器处于down的状态啊,然后路由器通过Hello报文来发现邻居。

3.2.2 Hello报文

        如果路由器发现所接收的合法Hello报文的邻居列表中有自己的Router ID,则认为已经和邻居建立了双向连接,表示邻居关系已经建立。(可重提)

        验证一个接收到的Hello报文是否合法包括:

  • 如果接收端口的网络类型是广播型,点到多点或者NBMA,所接收的Hello报文中Network Mask字段必须和接收端口的网络掩码一致,如果接收端口的网络类型为点到点类型或者是虚连接,则不检查Network Mask字段;
  • 所接收的Hello报文中Hello Interval字段必须和接收端口的配置一致;
  • 所接收的Hello报文中Router Dead Interval字段必须和接收端口的配置一致;
  • 所接收的Hello报文中Options字段中的E-bit(表示是否接收外部路由信息)必须和相关区域的配置一致。

3.2.3 数据库同步

        路由器在建立完成邻居关系之后,路由器下一个状态就到ExStart。这时候便开始进行数据库同步。

        路由器使用DD报文来进行主从路由器的选举和数据库摘要信息的交互。(DD报文的作用:选举主从关系、DD报文包含LSA的头部信息,用来描述LSDB的摘要信(告诉别人我有什么))

        数据库同步详细步骤:

  1. 邻居状态变为ExStart以后,RTA向RTB发送第一个DD报文,在这个报文中,DD序列号被设置为X(假设),RTA宣告自己为主路由器。
  2. RTB也向RTA发送第一个DD报文,在这个报文中,DD序列号被设置为Y(假设)。RTB也宣告自己为主路由器。由于RTB的Router ID比RTA的大,所以RTB应当为真正的主路由器。
  3. 主从关系选举完成
    1. 选举条件:
      1. 接口优先级(接口优先级一样则看Router ID)
      2. Router ID:越大越优先
  4. (开始信息的交互)
  5. RTA发送一个新的DD报文 (从),在这个新的报文中包含LSDB的摘要信息,序列号设置为RTB在步骤2里使用的序列号,因此RTB将邻居状态改变为Exchange。
  6. 邻居状态变为Exchange以后,RTB发送一个新的DD报文 (主) ,该报文中包含LSDB的描述信息,DD序列号设为Y+1(上次使用的序列号加1)。
  7. 即使RTA不需要新的DD报文描述自己的LSDB,但是作为从路由器,RTA需要对主路由器RTB发送的每一个DD报文进行确认。所以,RTA向RTB发送一个内容为空的DD报文,序列号为Y+1。
  8. 发送完最后一个DD报文之后,RTA将邻居状态改变为Loading;RTB收到最后一个DD报文之后,改变状态为Full(假设RTB的LSDB是最新最全的,不需要向RTA请求更新)。

3.2.4 建立完全邻接关系

步骤:

  1. 假设RTB的LSDB是最新最全的,不需要向RTA请求更新,那么RTB直接进入Full状态。
  2. RTA邻居状态变为Loading之后,RTA开始向RTB发送LSR报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。
  3. RTB收到LSR报文之后,向RTA发送LSU报文,在LSU报文中,包含了那些被请求的链路状态的详细信息。RTA收到LSU报文之后,将邻居状态从Loading改变成Full。
  4. RTA向RTB发送LSAck报文,用于对已接收LSA的确认。
  5. 若此时RTA一直不发送LSAck报文,则RTB会一直向RTA发送LSU报文
  6. 此时,RTA和RTB之间的邻居状态变成Full,表示达到完全邻接状态。

        以上就是OSPF一个完整的发现、建立邻居和邻接关系的工作工程。

3.3 DR&DBR机制

3.3.1 背景:MA网络中的问题

        在运行OSPF的MA网络包括广播型网络和NBMA网络,都会存在两个问题:

  1. 在一个有n个路由器的网络,会形成(n×(n−1))/2个邻接关系。
  2. 邻居间LSA的泛洪扩散混乱,相同的LSA会被复制多份,如RTA向其邻居RTB、RTC、RTD分别发送一份自己的LSA,RTB与RTC、RTC与RTD、RTB与RTD之间也会形成邻居关系,也会发送RTA的LSA。

        这样的工作效率显然是很低的,消耗资源的。作为高级的路由协议,OSPF是怎样解决这些问题的呢?

3.3.2 DR&DBR方案

        OSPF中设置了DR,当指定了DR后,所有的路由器都与DR建立起邻接关系,DR成为该广播网络上的中心点。

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

  • DR(Designated Router),指定路由器
  • BDR(Backup Designated Router),备份指定路由器
  • DROther(Designated Router Other),成员路由器

DR&BDR作用:

  1. 减少邻接关系
  2. 降低OSPF协议流量

3.3.3 DR与BDR的选举

-选举规则:DR/BDR的选举是基于接口的。(也可说是基于网段的)

规则:

  1. 接口的DR优先级越大越优先,优先级默认为1,范围:0~255
  2. 优先级为0:不参加选举
  3. 接口的DR优先级相等时,Router ID越大越优先。
  4. 稳定大于一切原则:谁先配置谁就是DR。之后配置的路由器不抢占DR。(最开始配置的路由器,网络中只有它一台,所以它认为自己是老大)

        注意:P2P网络不需要选举因为只有两个路由器

 参考链接

OSPF协议介绍_zzjieee的博客-CSDN博客_ospf协议

组播扩展OSPF_百度百科

OSPF路由协议_百度百科

OSPF协议详解 - stardsd - 博客园

万字15图详解OSPF路由协议

OSPF(一)OSPF协议简介_Skye_Zheng的博客-CSDN博客_ospf协议

OSPF(二)DR与BDR选举_Skye_Zheng的博客-CSDN博客_ospf中dr和bdr的选举

OSPF(三)OSPF域内路由_Skye_Zheng的博客-CSDN博客_ospf域内路由

OSPF(四)OSPF域间路由_Skye_Zheng的博客-CSDN博客_ospf域间路由

OSPF(五)OSPF外部路由_Skye_Zheng的博客-CSDN博客_ospf外部路由优先级

OSPF(六)OSPF特殊区域之Stub和Totally Stub区域详解及配置_Skye_Zheng的博客-CSDN博客_stub区域

OSPF(七)OSPF特殊区域之NSSA和Totally NSSA详解及配置_Skye_Zheng的博客-CSDN博客_nssa totally

OSPF(八)OSPF的LSA总结_Skye_Zheng的博客-CSDN博客

OSPF(九)OSPF的其他特性:区域间路由汇总、外部路由汇总、OSPF更新、认证机制_Skye_Zheng的博客-CSDN博客_ospf区域间路由汇总