【重识云原生】第四章云网络4.3.4.1-2节——OSPF协议
《重识云原生系列》专题索引:
- 第一章——不谋全局不足以谋一域
- 第二章计算第1节——计算虚拟化技术总述
- 第三章云存储第1节——分布式云存储总述
- 第四章云网络第一节——云网络技术发展简述
- 第四章云网络4.2节——相关基础知识准备
- 第四章云网络4.3节——重要网络协议
- 第四章云网络4.3.1节——路由技术简述
- 第四章云网络4.3.2节——VLAN技术
- 第四章云网络4.3.3节——RIP协议
- 第四章云网络4.3.4节——OSPF协议
- 第四章云网络4.3.4.3节——OSPF协议工作原理
- 第四章云网络4.3.4.4节——[转载]OSPF域内路由
- 第四章云网络4.3.4.5节——[转载]OSPF外部路由
- 第四章云网络4.3.4.6节——[转载]OSPF特殊区域之Stub和Totally Stub区域详解及配置
- 第四章云网络4.3.4.7节——[转载]OSPF特殊区域之NSSA和Totally NSSA详解及配置
1 OSPF协议概述
1.1 前言
OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯彻(Dijkstra)算法被用来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。
- OSPF的流量使用IP协议号89。
- OSPF工作在单个AS,是个绝对的内部网关路由协议(Interior Gateway Protocol,即IGP)。
- OSPF对网络没有跳数限制,支持 Classless Interdomain Routing (CIDR)和Variable-Length Subnet Masks (VLSMs),没有自动汇总功能,但可以手工在任意比特位汇总,并且手工汇总没有任何条件限制,可以汇总到任意掩码长度。
- OSPF支持认证,并且支持明文和MD5认证;OSPF不可以通过Offset list来改变路由的metric。
- OSPF并不会周期性更新路由表,而采用增量更新,即只在路由有变化时,才会发送更新,并且只发送有变化的路由信息;事实上,OSPF是间接设置了周期性更新路由的规则,因为所有路由都是有刷新时间的,当达到刷新时间阀值时,该路由就会产生一次更新,默认时间为1800秒,即30分钟,所以OSPF路由的定期更新周期默认为30分钟。
- OSPF所有路由的管理距离(Ddministrative Distance)为110,OSPF只支持等价负载均衡。
- 距离矢量路由协议的根本特征就是自己的 路由表是完全从其它路由器学来的,并且将收到的路由条目一丝不变地放进自己的路由表,运行距离矢量路由协议的路由器之间交换的是路由表,距离矢量路由协议 是没有大脑的,路由表从来不会自己计算,总是把别人的路由表拿来就用;而OSPF完全抛弃了这种不可靠的算法,OSPF是典型的链路状态路由协议,路由器之间交换的并不是路由表,而是链路状态,OSPF通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。
1.2 OSPF协议主要优点
(1)OSPF 适合在大范围的网络:OSPF 协议当中对于路由的跳数,它是没有限制的,所以 OSPF 协议能用在许多场合,同时也支持更加广泛的网络规模。只要是在组播的网络中,OSPF协议能够支持数十台路由器一起运作。
(2)组播触发式更新:OSPF 协议在收敛完成后,会以触发方式发送拓扑变化的信息给其他路由器,这样就可以减少网络宽带的利用率;同时,可以减小干扰,特别是在使用组播网络结构,对外发出信息时,它对其他设备不构成其他影响
(3)收敛速度快:如果网络结构出现改变,OSPF 协议的系统会以最快的速度发出新的报文,从而使新的拓扑情况很快扩散到整个网络;而且,OSPF 采用周期较短的 HELLO 报文来维护邻居状态。
(4)以开销作为度量值:OSPF 协议在设计时,就考虑到了链路带宽对路由度量值的影响。OSPF 协议是以开销值作为标准,而链路开销和链路带宽,正好形成了反比的关系,带宽越是高,开销就会越小,这样一来,OSPF 选路主要基于带宽因素。
(5)OSPF 协议的设计是为了避免路由环路:在使用最短路径的算法下,收到路由中的链路状态,然后生成路径,这样不会产生环路。
(6)应用广泛:广泛的应用在互联网上,其他会有大量的应用实例。证明这是使用最广泛的IGP 之一。
2 OSPF协议基础概念
2.1 工作原理简述
OSPF简单地说就是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。整个过程使用了五种报文、三个阶段、四张表。
2.1.1 五种报文
- Hello报文:建立并维护邻居关系。
- DBD报文:发送链路状态头部信息。
- LSR报文:把从DBD中找出需要的链路状态头部信息传给邻居,请求完整信息。
- LSU报文:将LSR请求的头部信息对应的完整信息发给邻居。
- LSACK:收到LSU报文后确认该报文。
2.1.2 三个阶段
- 邻居发现:通过发送Hello报文形成邻居关系。
- 路由通告:邻居间发送链路状态信息形成邻接关系。
- 路由计算:根据最短路径算法算出路由表。
2.1.3 四张表
- 邻居表:主要记录形成邻居关系路由器。
- 链路状态数据库:记录链路状态信息。
- OSPF路由表:通过链路状态数据库得出。
- 全局路由表:OSPF路由与其他比较得出。
2.2 OSPF报文格式
OSPF报文封装在IP报文头部,协议号为89。
更新方式:
- 单播:单播更新为特殊情况,要手工配置
- 组播:默认更新方式
2.3 报文类型
OSPF报文类型有5种,每种报文都使用相同的OSPF报文头部。分别是:
注意:DD、LSU、LSR、LSACK。只有LSU携带LSA的详细信息,其他都只是头部信息。
2.4 OSPF支持的网络类型
- 缺省情况下,OSPF认为以太网的网络类型是广播类型,PPP、HDLC的网络类型是点到点类型。
- 缺省情况下,OSPF认为帧中继、 ATM的网络类型是NBMA。
- OSPF可以在不支持广播的多路访问网络上运行,此类网络包括在hub-spoke拓扑上运行的帧中继(FR)和异步传输模式(ATM)网络,这些网络的通信依赖于虚电路。OSPF定义了两种支持多路访问的网络类型:非广播多路访问网络(NBMA)和点到多点网络(Point To Multi-Points)。
- NBMA:在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置。NBMA方式要求网络中的路由器组成全连接。
- P2MP:将整个网络看成是一组点到点网络。对于不能组成全连接的网络应当使用点到多点方式,例如只使用PVC的不完全连接的帧中继网络。
扩展
- MA网络是指multiple access多路访问网络。(MA=NBMA+广播式网络),多路访问是指在一条链路上有多个访问点,区别于点到点(P2P)或点到多点(P2MP)的网络。
2.5 邻居状态机
总结:八种状态,除了Attempt有点特殊,我们作为了解。其他的我们来看一下。首先路由器开启了OSPF之后,最开始处于down状态,然后到2-Way状态这段过程种,路由器都处于邻居的关系中,这个阶段只发送Hello报文。之后三个状态,路由器都处于形成邻接状态的路上。然后到最后Full状态的时候,完成邻接状态。(具体邻居、邻接关系后面还会详细讲到)
2.6 Router ID、邻居与邻接
2.6.1 Router ID
概念:OSPF路由器在本AS(自治系统)内的唯一标识(不能重复,重复则一直报错,不能建立邻居关系)。
组成:32个比特,写法与IP地址相同(点分十进制),但是Router ID可以是路由器没有的ID
配置:可手动配置;若不手动配置则自动配置。(通常建议手动配置,以防因为地址改变发生的id改变)
自动配置规则:
- Router id会自动获取你配置的第一个IP地址
- 如果设备存在多个逻辑接口地址,则路由器使用逻辑接口中最大的IP地址作为Router ID;
- 如果没有配置逻辑接口,则路由器使用物理接口的最大IP地址作为Router ID
- 在为一台运行OSPF的路由器配置新的Router ID后,可以在路由器上通过重置OSPF进程来更新Router ID
在实际情况中,Router ID的变化采取稳定大于一些的原则:在设置好了Router ID之后,再去修改,不生效。
2.6.2 邻居与邻接
邻居(Neighbor)
概念:相连的路由器,互相知道对方的存在
状态2-Way的时候建立成邻居关系
邻接(Adjacency)
概念:相连的路由器,LSDB进行了同步
只有当双方成功交换DD报文,并同步LSDB后,才形成真正意义上的邻接关系。
2.7 LSA(链路状态广播)
LSA(链路状态广播,Link State Advertisement)是链接状态协议使用的一个分组,它包括有关邻居和通道成本的信息,是路由器之间链路状态信息的载体,被路由器接收用于维护它们的路由选择表,也就是说LSDB由一条条LSA构成的。
2.7.1 LSA报文头结构
所有的LSA都有相同的头部,关键字段的含义如下:
2.7.2 常见LSA分类
2.8 OSPF区域
OSPF 中划分区域的目的就是在于控制链路状态信息LSA 泛洪的范围、减小链路状态数据库LSDB的大小、改善网络的可扩展性、达到快速地收敛。
当网络中包含多个区域时,OSPF 协议有特殊的规定,即其中必须有一个 Area 0,通常也叫做骨干区域(Backbone Area),当设计 OSPF 网络时,一个很好的方法就是从骨干区域开始,然后再扩展到其他区域。骨干区域在所有其他区域的中心,即所有区域都必须与骨干区域物理或逻辑上相连,这种设计思想的原因是 OSPF 协议要把所有区域的路由信息引入骨干区,然后再依次将路由信息从骨干区域分发到其它区域中。
OSPF 将区域划分为几种类型:
- 骨干区域 :作为中央实体,其他区域与之相连,骨干区域编号为 0,在该区域中,各种类型的 LSA 均允许发布。
- 标准区域 :除骨干区域外的默认的区域类型,在该类型区域中,各种类型的 LSA 均允许发布。
- 末梢区域 :即 STUB 区域,该类型区域中不接受关于 AS外部的路由信息,即不接受类型 5 的 AS 外部LSA,需要路由到自治系统外部的网络时,路由器使用缺省路由(0.0.0.0),末梢区域中不能包含有自治系统边界路由器 ASBR。[2]
- 完全末梢区域 :该类型区域中不接受关于 AS 外部的路由信息,同时也不接受来自 AS 中其他区域的汇总路由,即不接受类型 3、类型 4、类型 5 的 LSA,完全末梢区域也不能包含有自治系统边界路由器 ASBR。
参考链接
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区域间路由汇总