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

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

  1. 第一章——不谋全局不足以谋一域
  2. 第二章计算第1节——计算虚拟化技术总述
  3. 第二章计算第2节——主流虚拟化技术之VMare ESXi
  4. 第二章计算第3节——主流虚拟化技术之Xen
  5. 第二章计算第4节——主流虚拟化技术之KVM
  6. 第二章计算第5节——商用云主机方案
  7. 第二章计算第6节——裸金属方案
  8. 第三章云存储第1节——分布式云存储总述
  9. 第三章云存储第2节——SPDK方案综述
  10. 第三章云存储第3节——Ceph统一存储方案
  11. 第三章云存储第4节——OpenStack Swift 对象存储方案
  12. 第三章云存储第5节——商用分布式云存储方案
  13. 第四章云网络第一节——云网络技术发展简述
  14. 第四章云网络4.2节——相关基础知识准备
  15. 第四章云网络4.3节——重要网络协议
  16. 第四章云网络4.3.1节——路由技术简述
  17. 第四章云网络4.3.2节——VLAN技术
  18. 第四章云网络4.3.3节——RIP协议
  19. 第四章云网络4.3.4节——OSPF协议
  20. 第四章云网络4.3.4.3节——OSPF协议工作原理
  21. 第四章云网络4.3.4.4节——[转载]OSPF域内路由
  22. 第四章云网络4.3.4.5节——[转载]OSPF外部路由
  23. 第四章云网络4.3.4.6节——[转载]OSPF特殊区域之Stub和Totally Stub区域详解及配置
  24. 第四章云网络4.3.4.7节——[转载]OSPF特殊区域之NSSA和Totally NSSA详解及配置
  25. 第四章云网络4.3.5节——EIGRP协议
  26. 第四章云网络4.3.6节——IS-IS协议
  27. 第四章云网络4.3.7节——BGP协议
  28. 第四章云网络4.3.7.2节——BGP协议概述
  29. 第四章云网络4.3.7.3节——BGP协议实现原理
  30. 第四章云网络4.3.7.4节——高级特性
  31. 第四章云网络4.3.7.5节——实操
  32. 第四章云网络4.3.7.6节——MP-BGP协议
  33. 第四章云网络4.3.8节——策略路由
  34. 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术
  35. 第四章云网络4.3.10节——VXLAN技术
  36. 第四章云网络4.3.10.2节——VXLAN Overlay网络方案设计
  37. 第四章云网络4.3.10.3节——VXLAN隧道机制
  38. 第四章云网络4.3.10.4节——VXLAN报文转发过程
  39. 第四章云网络4.3.10.5节——VXlan组网架构
  40. 第四章云网络4.3.10.6节——VXLAN应用部署方案
  41. 第四章云网络4.4节——Spine-Leaf网络架构
  42. 第四章云网络4.5节——大二层网络
  43. 第四章云网络4.6节——Underlay 和 Overlay概念
  44. 第四章云网络4.7.1节——网络虚拟化与卸载加速技术的演进简述
  45. 第四章云网络4.7.2节——virtio网络半虚拟化简介
  46. 第四章云网络4.7.3节——Vhost-net方案
  47. 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
  48. 第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
  49. 第四章云网络4.7.6节——virtio-blk存储虚拟化方案
  50. 第四章云网络4.7.8节——SR-IOV方案
  51. 第四章云网络4.7.9节——NFV
  52. 第四章云网络4.8.1节——SDN总述
  53. 第四章云网络4.8.2.1节——OpenFlow概述
  54. 第四章云网络4.8.2.2节——OpenFlow协议详解
  55. 第四章云网络4.8.2.3节——OpenFlow运行机制
  56. 第四章云网络4.8.3.1节——Open vSwitch简介
  57. 第四章云网络4.8.3.2节——Open vSwitch工作原理详解
  58. 第四章云网络4.8.4节——OpenStack与SDN的集成
  59. 第四章云网络4.8.5节——OpenDayLight
  60. 第四章云网络4.8.6节——Dragonflow
  61. 第四章云网络4.9.1节——网络卸载加速技术综述

  62. 第四章云网络4.9.2节——传统网络卸载技术

  63. 第四章云网络4.9.3.1节——DPDK技术综述

  64. 第四章云网络4.9.3.2节——DPDK原理详解

  65. 第四章云网络4.9.4.1节——智能网卡SmartNIC方案综述

  66. 第四章云网络4.9.4.2节——智能网卡实现

  67.  《云原生进阶之容器》专题第六章容器6.1.1节——容器综述

  68. 【云原生进阶之PaaS中间件】第一章Redis-1.1简介

  69. 【云原生进阶之PaaS中间件】第二章Zookeeper-1-综述

  70. 【云原生进阶之PaaS中间件】第三章Kafka-1-综述

  71. 【云原生进阶之PaaS中间件】第四章RabbitMQ-1-简介及工作模式

  72. 【云原生进阶之数据库技术】第一章MySQL-1-基础概述

  73. 【云原生进阶之数据库技术】第二章-Oracle-1-简介

  74. 【云原生进阶之数据库技术】第三章-PostgreSQL-1-综述

  《云原生进阶之容器》专题索引:

  1. 第一章Docker核心技术1.1节——Docker综述

  2. 第一章Docker核心技术1.2节——Linux容器LXC

  3. 第一章Docker核心技术1.3节——命名空间Namespace

  4. 第一章Docker核心技术1.4节——chroot技术

  5. 第一章Docker核心技术1.5.1节——cgroup综述

  6. 第一章Docker核心技术1.5.2节——cgroups原理剖析

  7. 第一章Docker核心技术1.5.3节——cgroups数据结构剖析

  8. 第一章Docker核心技术1.5.4节——cgroups使用

  9. 第一章Docker核心技术1.6节——UnionFS

  10. 第一章Docker核心技术1.7节——Docker镜像技术剖析

  11. 第一章Docker核心技术1.8节——DockerFile解析

  12. 第一章Docker核心技术1.9节——docker-compose容器编排

  13. 第一章Docker核心技术1.10节——Docker网络模型设计

  14. 第二章——Kubernetes概述

  15. 第二章Controller Manager原理剖析--2.1节Controller Manager综述

  16. 第二章Controller Manager原理2.2节--client-go剖析

  17. 第二章Controller Manager原理2.3节--Reflector分析

  18. 第二章Controller Manager原理2.4节--Informer机制剖析

  19. 第二章Controller Manager原理2.5节--DeltaFIFO剖析

  20. 第二章Controller Manager原理2.6节--Informer controller

  21. 第二章Controller Manager原理2.7节--Indexer剖析

  22. 第二章Controller Manager原理2.8节--Resync机制

  23. 第三章List-Watch机制3.1节-- List-Watch机制剖析

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区域间路由汇总

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江中散人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值