目录
1、OSPF简单介绍
OSPF的概念
OSPF(Open Shortest Path First 开放式最短路径优先)是一种动态路由协议,属于内部网关协议(Interior Gateway Protocol,简称 IGP),是基于链路状态算法的路由协议
传统的动态路由协议
传统的动态路由协议有,如RIP(路由信息协议)和IGRP(内部网关路由协议)等,它们在大型网络中会出现路由环路、路由抖动、路由表过大等问题,从而影响网络的可靠性和性能
OSPF的特点
OSPF(Open Shortest Path First)协议是一种用于在IP网络中动态分配路由的开放标准链路状态路由协议。其主要特点可以归纳如下:
1. 分层路由与区域划分
- 分层设计:OSPF协议使用分层设计,将网络划分为多个区域(Area)。每个区域内部使用自己的链路状态数据库计算最短路径,区域之间通过区域边界路由器(ABR)进行信息交换。这种分层设计可以简化网络的管理和维护,提高路由算法的效率。
- 区域划分:通过区域划分,可以限制路由信息的传播范围,降低路由器之间的通信量,特别是在大型网络中,这有助于提高网络的性能和可伸缩性。
2. 快速收敛
- 收敛速度快:OSPF协议采用链路状态路由算法,能够快速检测并通告自治系统内的拓扑变化。当网络出现故障或拓扑结构发生变化时,OSPF协议可以迅速调整路由,保证数据的快速传输。
- 触发更新与周期更新:OSPF支持触发更新,即当链路状态发生变化时立即通知其他路由器;同时,它也支持每30分钟一次的周期更新,确保路由信息的实时性和准确性。
3. 高可靠性和防环机制
- 无环路:OSPF协议从设计上保证了无路由环路。它利用Dijkstra算法计算最短路径,并通过区域间的连接规则确保无路由环路。
- 高可靠性:每个节点都维护一个完整的网络拓扑图,节点之间通过链路状态数据包(LSA)来交换路由信息。这种高度冗余的路由信息可以保证网络的可靠性和稳定性。
4. 良好的扩展性
- 支持多种网络拓扑结构:OSPF协议支持多种网络拓扑结构,如点对点、广播、非广播多路访问等,能够适应不同规模的网络环境。
- 适应大中型网络:当网络上路由器越来越多,路由信息流量急剧增长时,OSPF的分层设计使得其特别适用于大中型网络。
5. 支持多种功能
- 支持虚拟链路:OSPF协议支持虚拟链路技术,可以通过建立虚拟链路来连接不同的区域,使得整个网络结构更加灵活和可靠。
- 支持VLSM:OSPF协议支持可变长度子网掩码(VLSM),可以根据不同子网的规模来分配不同的子网掩码,提高了IP地址的利用率和网络的灵活性。
- 支持认证:OSPF协议支持多种认证方式(如明文、密文等),可以确保路由信息的安全性。通过配置适当的访问控制列表(ACL),可以进一步限制路由信息的传播范围。
6. 开放标准
- 开放标准协议:OSPF协议是一个由IETF(Internet工程任务组)制定和维护的开放标准协议。这意味着任何厂商都可以实现和支持OSPF协议,使得不同供应商的路由器可以在一个网络中互相通信和协作。
综上所述,OSPF协议以其分层路由、快速收敛、高可靠性、良好的扩展性、支持多种功能以及开放标准等特点,在现代计算机网络中发挥着重要作用,特别适用于大型企业网络和互联网服务提供商的内部网络。
2、OSPF的运行机制
1.通过交互Hello报文形成邻居关系
路由器运行OSPF协议后,会从所有启动OSPF协议的接口上发送Hello报文。如果两台路由器共享一条公共数据链路,并且能够成功协商各自Hello报文中所指定的某些参数,就能形成邻居关系。
2.通过泛洪LSA通告链路状态信息
形成邻接关系的路由器之间可以交互LSA。LSA描述了路由器所有的链路、接口、邻居及链路状态等信息。路由器通过交互这些链路信息来了解整个网络的拓扑信息。由于链路的多样性,OSPF协议定义了多种LSA类型。
3.通过组建LSDB形成带权有向图
通过LSA的泛洪,路由器会把收到的LSA汇总记录在LSDB中。最终,所有路由器都会形成同样的LSDB。LSA是对路由器周围网络拓扑结构的描述,而LSDB则是对整个自治系统的网络拓扑结构的描述,LSDB是LSA的汇总。
4.通过SPF算法计算并形成路由
当LSDB同步完成之后,每一台路由器都将以其自身为根,使用SPF算法来计算一个无环路的拓扑图来描述它所知道的到达每一个目的地的最短路径(最小的路径代价)。这个拓扑图就是最短路径树,有了这棵树,路由器就能知道到达自治系统中各个节点的最优路径。
5.维护和更新路由表
根据SPF算法得出最短路径树后,每台路由器将计算得出的最短路径加载到OSPF路由表形成指导数据转发的路由表项,并且实时更新。同时,邻居之间交互Hello报文进行保活,维持邻居关系或邻接关系,并且周期性地重传LSA。
3、区域划分
OSPF 区域设计
区域标识:使用十进制数或类似于IP地址方式
区域的划分:基于接口的(链路的)
两种区域类型:
1.骨干区域:区域0 存在并且唯一
2.非骨干区域:非0区域
OSPF 路由器角色
1.骨干路由器:一个路由器的所有接口都在0区域内
2.非骨干路由器:一个路由器的所有接口都不在0区域内
3.ABR:区域边界路由器,能够产生3类LSA的路由器,有接口属于0区域,还有接口不属于0区域
4.ASBR:自治系统边界路由器,能够产生5类或7类LSA的路由器,把不属于OSPF的路由条目引入到OSPF协议中
OSPF 区域设计原则
规则区域的划分
1.OSPF网络中必须存在并唯一的骨干区域(若OSPF仅仅存在一个区域可以为非0区域)
2.非骨干区域必须与骨干区域直接相连(非骨干不能非骨干直接相连)
星型结构:骨干区域位中心,非骨干为分支 必须存在ABR(区域边界路由器)设备同时工作多个区域内
OSPF区域划分的目的
1.减少LSA数量
2.减少LSA的传播范围
OSPF的不规则区域
不规则区域类型
1、远离骨干的非骨干区域 (非骨干区域没有连接到0区域上)
2、不连续骨干(存在多个0区域)
不规则区域的解决
tunnel隧道
分为GRE和MGRE两种,在0区域与不规则区域边界上启用tunnel,配置tunnel地址,将tunnel接口通告进入OSPF area 0 或不规则区域中,宣告在某个区域就相当于扩大了某个区域
缺点
1.选路不佳
2.还会有周期和触发信息,每次发包都会进行封装,造成资源占用
virtual-link虚链路
穿越某个区域,延长了0区域,在virtual-link两端建立OSPF 邻居,网络中合法的ABR(工作的区域0的ABR),和非法ABR间建立一条虚链路(在OSPF协议中构建,没有新生网段) 由合法ABR授权非法ABR进行区域间路由共享
优点
没有新生链路,故选路正常
缺点
1.做了虚链路就不能做特殊区域
2.通过virtual-link学习的LSA不老化,不可靠,不稳定
多进程重发布
进程号仅具有本地意义,邻居间建立邻居关系时可以使用不同的进程号;若在一台设备上同时启动多个进程,那么不同进程存在自己的邻居关系,生成不同的数据库(不共享);最终将所有数据库计算所得路由加载于同一张路由表中;
优点
1.选路正常
2.无周期信息,但依然可靠(触发更新、邻居关系周期保障)
4、OSPF数据包
OSPF报头
所有数据报文均有的头部信息
版本:OSPFv2、OSPFv3等
类型:HELLO、DBD、LSR、LSU、LSACK
报文长度:报头+数据包本体的总长度
路由器ID:发出数据包的路由器的ID
区域ID:数据包所处区域的ID
校验和:校验数据包完整性
验证类型:OSPF认证类型(空认证、md5认证、简单认证等)
认证数据: 认证携带的数据(账号、密码等)
Hello
用于邻居路由器之间发现和建立邻居关系的一种协议包,里面含有本地路由的路由ID、下一个Hello包的时间间隔、路由状态、网络类型等
DBD
用来建立主、从关系的一种关系包,里面存有LSA的摘要(就是不完整LSA信息)
LSR
向对方请求本地数据库所缺少的LSA完整信息
OSPF靠三元组(链路状态类型、链路状态ID、通告路由器)来表示一条LSA
LSU
根据对方发给我的LSA完整信息,进行本地数据库的更新
LSACK
向对方回应我已经接受到你的LSA并且更新完毕
LSACK的确认,是对每一条请求的LSA进行确认
5、OSPF状态机
状态机
DOWN:本地一旦发出hello包,进入下一状态
INIT:本地接收到的hello包中若存在本地的RID,进入下一状态
2-WAY:邻居关系建立标志
EXSTART:使用类hello 的DBD包进行主从关系选举,RID数值大为主,主优先进入 下一状态
EXCHANGE:使用真正的DBD进行数据库目录的共享,需要ACK
LOADING:使用LSR/LSU/LSack来获取未知的LSA信息
FULL:邻接关系建立的标志
6、OSPF工作过程
7、OSPF接口网络类型
广播类型(Broadcast)
NBMA类型(Non-Broadcast Multl-Access)
隧道环境类型:OSPF中默认识别隧道接口的ospf接口类型为P2P,导致只能存在两台设备,在MGRE环境下,必须修改接口的工作方式使隧道接口可用识别多台设备
点到点P2MP类型(Point to-Multipoint)
点到点P2P类型(point-to-point)
8、OSPF的各LSA
LSA头部信息
1类LSA
router -LSA
功能: 产生本路由器针对某个区域的路由信息和拓信息
传播范围:本区域内传输
Link ID : 产生者的router-id
ADV router: 产生者的router-id
特性: 在单个区域中分别产生一条1类LSA,若存在MA网络,1类LSA不完整,需要配合二类
LSA生成路由信息以及拓扑信息。
1类LSA 内容类型:
2类LSA
network LSA ,网络LSA
功能: 用于在MA网络中,描述本网络路由器的数量以及本MA网络的网络掩码
Link ID:DR接口的IP地址
ADV router:DR所在路由器的router-ID
特性: 只会出现在MA网络,用于补充1类LSA(1.MA网络的掩码 2.MA网络路由器的数量)
3类LSA
summary LSA 汇总LSA
功能:用于在区域之间传递路由信息
link-id :传递路由的网络号
ADV router:默认为所在区域ABR的router-id
特性: 在穿越不同区域时,有其他的ABR重新产生(ADV router 是变化的)
4类LSA
summary ASBR LSA
功能:除了产生5类LSA所在区域,用于通告ASBR位置
Link id:ASBR的router-id
ADV router: 默认ASBR所在区域的ABR的 router-id
特点:在穿越不同区域时,有新的ABR重新产生。(与3类LSA一致)
5类LSA
外部LSA
功能: 用于在整个OSPF中传递外部路由(原本不属于OSPF域)
5类LSA有两种类型: 类型1 类型2(区别:)
Link id :传递外部路由的网络号
ADV router : 产生该LSA的 router-id
传播范围:在整个OSPF域中传输
7类LSA
NSSA LSA
功能: 在NSSA区域中,传递外部路由。
Link id :传递路由网络号
ADV router:产生该LSA的 router-id
特性:默认为类型2 ,度量值为1 。 携带了FA地址(转发地址)
FA: 转发地址,当5类或7类LSA中携带了FA地址,则计算路径开销值时计算的是当前路由器到达FA地址的开销值之和+种子度量值。(若FA地址不可达,则路由不能加表)