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

山东_朱文鑫 9171人觉得有帮助

{{ttag.title}}
本帖最后由 山东_朱文鑫 于 2022-10-13 22:03 编辑

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

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

今天依旧不做案例技术分享,今天分享的是网络技术动态路由协议之开放式最短路径优先OSPF(Open Shortest Path First)基础篇一,鉴于之前发布的STP生成树协议的呼声较高,越来越多的小伙伴私信我让我继续出关于网络基础的一些分享贴,对分享贴的调整我也将专一发布深信服产品的案例贴调整到穿插发布网络技术的发布模式,来给大家奉上所需要的技术基础知识。

OSPF(Open Shortest Path First)开放式最短路路径优先,相比较于之前的STP知识点将更加多,学习的过程也将更加的漫长,希望在开始新篇章的起始,各位学习的小伙伴也能做好思想准备,坚持下去。

好的我们步入正题:

首先我们要了解什么是OSPF?它是用来干什么的?

       OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。适用于IPv4的OSPFv2协议定义于RFC 2328,RFC 5340定义了适用于IPv6的OSPFv3

       开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。但如果使用时不结合具体网络应用环境,不做好细致的规划,OSPF协议的使用效果会大打折扣,甚至引发故障。

       OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新

       OSPF出世要解决的问题就是在其之前的RIP协议是基于距离矢量算法的路由协议,应用在大型网络中存在收敛速度慢、度量值不科学、可扩展性差等问题。

OSPF面世的背景:



网络规模扩大:

      企业新业务层出不穷,且业务呈现大集中趋势,使得网络规模不断扩大。

网络可靠性要求提高:

      各种应用程序对网络可靠性要求越来越高,网络发生故障后,需要在更短的时间内恢复正常。

网络异构化,多厂商设备互联需求:

       在日常的运营维护中,硬件设备不断升级或更新,不同设备之间性能差异较大,设备间互连链路带宽也存在一定的差异。

       需要一种各厂商均支持的开放路由协议。

RIP在大型网络中部署所面临的问题:



逐跳收敛:

        如图所示,N1网络发生变化,RTA向RTB发出更新,RTB收到更新之后进行本地计算,完成计算后再向RTC发送路由变化通知,如此循环。逐跳收敛的方式,造成了网络收缓慢的问题。

传闻路由更新机制:

        RIP在计算路由完全依赖于从邻居路由器收到的路由信息,RTE仅依靠从RTD获取的信息计算路由,对RTA、RTB和RTC之间的网络情况并不了解。RIP在计算路由时,缺少对全局网络拓扑的了解。

以“跳数”为度量:

         因为RIP基于跳数的度量方式,所以N1与N2网络互访时会选择RTA->RTB->RTD->RTE作为最优路径。显然RTB->RTC->RTD之间的以太链路要比RTB->RTD的串行链路带宽要高的多。

如何解决RIP带来的问题?

        在 “收到更新”、“计算路由”、“发送更新”的路由收敛过程中,RIP的局限性在于路由器需要在完成路由计算之后才可以向邻居发送路由变化通知。如果将这个过程调整为:“收到更新”、 “发送更新”、“计算路由”,即路由器从邻居收到路由更新后立刻向其他邻居路由器转发,然后再本地计算新的路由。这样的收敛方式可以大大降低全网路由收敛的时间。

        因为RIP路由器仅从邻居路由器获取路由信息,所以对于非最优或者错误路由信息,RIP路由器并不能识别或屏蔽。解决此问题的关键最佳方式是路由器收集全网的信息,并基于这些信息独立计算路由。

       基于跳数的度量方式并没有考虑数据包的链路转发延迟,如果采用以累积带宽为选路参考依据,可以更好的规避选择次优路径的风险。

OSPF(Open Shortest Path First)开放式最短路路径优先:



       所谓Link State(链路状态)指的就是路由器的接口状态。在OSPF中路由器的某一接口的链路状态包含了如下信息:接口的IP地址及掩码;接口的带宽;接口所连接的邻居等等。【LSDB就是链路状态数据库,这个LSDB会单独拿出来讲,现在先简单了解一下就可以

       OSPF作为链路状态路由协议,不直接传递各路由器的路由表,而传递链路状态信息,各路由器基于链路状态信息独立计算路由。

       所有路由器各自维护一个链路状态数据库。邻居路由器间先同步链路状态数据库,再各自基于SPF(Shortest Path First)算法计算最优路由,从而提高收敛速度。

       在度量方式上,OSPF将链路带宽作为选路时的参考依据。 “累计带宽”是一种要比“累积跳数”更科学的计算方式。

OSPF工作过程 :



OSPF的路由计算过程可以简化描述为:

       路由器之间发现并建立邻居关系。

       每台路由器产生并向邻居泛洪链路状态信息,同时收集来自其他路由器链路状态信息,完成LSDB(Link State Database)的同步。

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


OSPF的邻居建立过程:



企业网中的设备少则几台多则几十台甚至几百台,每台路由器都需要有一个唯一的ID用于标识自己

Router ID是一个32位的无符号整数,其格式和IP地址的格式是一样的,Router ID选举规则如下:

      手动配置OSPF路由器的Router ID(通常建议手动配置);
      如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
      如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID

OSPF的路由器Router ID重新配置后,可以通过重置OSPF进程来更新Router ID。


发现并建立邻居 - Hello报文

OSPF路由器之间在交换链路状态信息之前,首先需要彼此建立邻居关系,通过Hello报文实现。

        OSPF协议通过Hello报文可以让互联的路由器间自动发现并建立邻居关系,为后续可达性信息的同步作准备。

        在形成邻居关系过程中,路由器通过Hello报文完成一些参数的协商。

        邻居关系建立后,周期性的Hello报文发送还可以实现邻居保持的功能,在一定时间内没有收到邻居的Hello报文,则会中断路由器间的OSPF邻居关系。



状态含义:

       Down:这是邻居的初始状态,表示没有从邻居收到任何信息。

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

        2-Way:在此状态下,路由器发现自己的Router ID存在于收到的Hello报文的邻居列表中,已确认可以双向通信。

邻居建立过程如下:

       RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2。当RTA启动OSPF后,RTA会发送第一个Hello报文。此报文中邻居列表为空,此时状态为Down,RTB收到RTA的这个Hello报文,状态置为Init。

       RTB发送Hello报文,此报文中邻居列表为空,RTA收到RTB的Hello报文,状态置为Init。

       RTB向RTA发送邻居列表为1.1.1.1的Hello报文,RTA在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。

       RTA向RTB发送邻居列表为2.2.2.2的Hello报文,RTB在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。

*因为邻居都是未知的,所以Hello报文的目的IP地址不是某个特定的单播地址。邻居从无到有,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。

如果网络不支持组播,那么如何实现邻居的建立?



      对于不支持组播的网络可以通过手动配置实现邻居的发现与维护。

      当网络规模越来越大或者设备频繁更新,相关联的OSPF路由器都需要更改静态配置,手动更改配置的工作量变大且容易出错。除了特殊场景,一般情况下不适用手动配置的方式。

      OSPF路由器之间建立邻居关系是为了同步链路状态信息,接下来学习OSPF如何实现链路状态数据库的同步。


链路状态信息:



链路信息主要包括:链路的类型;接口IP地址及掩码;链路上所连接的邻居路由器;链路的带宽(开销)

       区别于RIP路由器之间交互的路由信息,OSPF路由器同步的是最原始的链路状态信息,而且对于邻居路由器发来的链路状态信息,仅作转发。最终所有路由器都将拥有一份相同且完整的原始链路状态信息。

OSPF丰富数据链路层支持能力:



       网络技术的发展包含了设备、链路以及通信协议的发展。设备性能日趋提高,互联链路也从串行链路、ATM、帧中继发展到当前的以太网、xPON、SDH、MSTP、OTN等。技术升级不是一蹴而就的,而是一个循序渐进的过程。各种不同的物理链路各具特点,也正因为如此,一个成熟的路由协议必须能够根据不同物理链路特性进行适配。

网络类型-P2P网络



       OSPF划分了四种网络类型并以此来组成拓扑信息的一部分。
       P2P网络连接了一对路由器,广播、组播数据包都可以转发。
       P2P网络的例子:两台通过PPP(Point-to-Point Protocol)链路相连的路由器网络。

网络类型 - 广播型网络




       广播型网络支持两台及两台以上的设备接入同一共享链路且可以支持广播、组播报文的转发,是OSPF最常见的网络类型。

广播型网络的例子:通过以太网链路相连的路由器网络。

       同时因为一个广播型网络中存在多台设备,邻居关系建立以及链路信息同步方面,OSPF都有对应的特性来减少同一网络多台设备带来的不利影响。

以上两种网络类型是最常见的,此外,还有两种少见的网络类型。


网络类型 - NBMA网络



       与广播型网络不同的是NBMA网络默认不支持广播与组播报文的转发。在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置。

        NBMA(non-broadcast multiple access)型网络的例子:通过全互连的帧中继链路相连的路由器网络。

        在现在的网络部署中,NBMA网络已经很少了。

        与广播型网络不同的是NBMA网络默认不支持广播与组播报文的转发。在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置

NBMA(non-broadcast multiple access)型网络的例子:通过全互连的帧中继链路相连的路由器网络。

        在现在的网络部署中,NBMA网络已经很少了。

        一个NBMA类型的网络可以改为广播类型的条件是:任意两台路由器之间都有一条虚电路直接可达,或者说,这个网络是全连通的。如果网络不满足这个条件,必须将接口的网络类型改为点到多点。这样,两台不能直接可达的路由器之间可以通过一台与两者都直接可达的路由器来交换路由信息。接口的网络类型改为点到多点后,就不必再配置邻居路由器。

         如果同一网段内只有两台路由器运行OSPF协议,也可以将接口的网络类型改为点到点。

         OSPF协议不支持NULL接口的配置。

网络类型 - P2MP网络



        将一个非广播网络看成是一组P2P网络,这样的非广播网络便成为了一个点到多点(P2MP)网络。在P2MP网络上,每个路由器的OSPF邻居可以使用反向地址解析协议(Inverse ARP)来发现。P2MP可以看作是多个P2P的集合,P2MP可以支持广播、组播的转发。

        没有一种链路层协议默认属于P2MP类型网络,也就是说必须是由其他的网络类型强制更改为P2MP。常见的做法是将非完全连接的帧中继或ATM改为P2MP的网络

此外OSPF的链路状态信息中的开销值是如何度量的呢?


       接口的网络类型为NBMA或使用本命令将接口的网络类型手工改为NBMA时,必须使用命令peer (OSPF)来配置邻接点

       一般情况下,链路两端的OSPF接口的网络类型必须一致,否则双方不可以建立起邻居关系。

        当且仅当链路两端的OSPF接口的网络类型一端是广播网而另一端是P2P时,双方仍可以正常的建立起邻居关系,但互相学不到路由信息

OSPF的度量方式




      OSPF在计算接口的cost时,cost=参考带宽/实际带宽,默认参考带宽为100M。当计算结果有小数位时,只取整数位;结果小于1时,cost取1。

若需要调整接口cost值有两种方式:

      直接在接口下配置,需要注意的是,配置的cost是此接口最终的cost值,作用范围仅限于本接口

      修改OSPF的默认参考带宽值,作用范围是本路由器使能OSPF的接口。建议参考整个网络的带宽情况建立参考基线,所有路由器修改相同的参考带宽值,从而确保选路的一致性。

      OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和,以RTA访问RTC Loopback 1接口192.168.3.3为例,其cost=G1’s cost+G3’s cost。

      相比于RIP,OSPF的度量方式不仅考虑“跳数”,而且还考虑了“带宽”,比RIP更可靠的选择最优的转发路径



OSPF的报文:



       RIP路由器之间是基于UDP 520的报文进行通信,OSPF也有其规定的通信标准。OSPF使用IP承载其报文,协议号为89

在OSPF Packet部分,所有的OSPF报文均使用相同的OSPF报文头部:

       Version :对于当前所使用的OSPFv2,该字段的值为2。
       Type:OSPF报文类型。
       Packet length:表示整个OSPF报文的长度,单位是字节。
       Router ID:表示生成此报文的路由器的Router ID。
       Area ID:表示此报文需要被通告到的区域。
       Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部。
       Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证。
       Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同。

以上就是本次的网络技术动态路由协议之开放式最短路径优先OSPF(Open Shortest Path First)基础篇一,因为OSPF基础知识点较多,我们分篇进行完成,方便大家去看,后续也会尽快完成基础篇二的总结,感谢大佬们的参阅,此贴先到这里后续会带上更加实用的帖子,感谢大家!

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





古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼


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

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

打赏
3人已打赏

339015 发表于 2022-10-17 00:48
  
感谢楼主分享,文章介绍了ospf的有关原理,比较清晰,期待更多优秀的分享
Kane4828 发表于 2022-10-13 22:24
  

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

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人