OSPF : 开放式最短路径优先协议
定义:是一种基于链路状态的路由协议,用于在IP网络中进行路由和转发决策。OSPF 是一种内部网关协议(IGP),主要用于单一自治系统(AS)内部的路由信息的传播和路径选择。
使用范围:IGP
协议算法特点: 链路状态型路由协议,SPF算法
协议是否传递网络掩码:传递网络掩码
协议封装:基于IP协议封装,协议号为 89
一.OSPF 特点
1.OSPF 是一种典型的链路状态型路由协议
2.传递信息称作LSA,LSA 链路状态通告,包含路由信息和拓扑信 息。
路由LSA:描述本路由器上接口的路由信息
拓扑LSA:描述路由器之间的连接状态
3.更新方式: 触发更新+30分钟的链路状态刷新
4.更新地址: 组播和单播更新,组播地址: 224.0.0.5(ALL SPF router) 224.0.0.6 (ALL DR router)
ttl真的不等于1,而是等于10几。但是在rip中按照1来运维。
TTL=1 224.0.0.x
5.支持路由认证
6.支持手工汇总
针对路由lsa汇总,拓扑则是不行。
7.支持区域划分
8.OSPF 比较消耗设备资源
和rip相比非常消耗资源(看和谁相比)
和eigrp等等相比都是非常消耗资源的
二.OSPF 区域
区域划分的意义: 1.减少LSA的数量 2.减少LSA的传播范围
为什么划分区域
为了节省资源
区域的划分是基于接口的(链路的)
区域的标记:使用了32个二进制 1.十进制 2.类似于IP地址 A.B.C.D
区域的分类:
骨干区域: 区域标记为0或0.0.0.0
非骨干区域:区域标记不等于0或0.0.0.0
区域设计原则: 向日葵型网络结构
向日葵型网络结构:
1.OSPF网络中必须存在并唯一的骨干区域(单区域除外)
2.若存在非骨干区域,非骨干区域必须与骨干区域直接相连
OSPF中路由器的角色:
骨干路由器:
非骨干路由器:
ABR:区域边界路由器,能够产生3类LSA的路由器
ABR:
ASBR:自治系统边界路由器,能够产生5类或7类LSA的路由器
ASBR:
三.OSPF 消息数据包
Hello DBD LSR LSU LSACK (除了hello包,其他4个都要确认)
hello: 周期性发送,周期时间10s或30s(根据不同的网络类型默认 10s或30s)
目的:建立并维持OSPF 邻居关系(邻居关系建立之后充当 保活包功能)
DBD:数据库描述数据包;
DBD(Database Description)数据包是 Cisco 发明的一个概念,用于在两个路由器之间建立对等关系时交换数据库信息。DBD 数据包包含有关链路状态信息的描述,这些信息用于在链路状态路由协议(如 OSPF - Open Shortest Path First)中构建路由表。
-
链路状态路由协议:
- DBD 与链路状态路由协议相关,如 OSPF,它不同于基于距离矢量路由协议的路由更新。
-
对等体建立:
- 当两个运行 OSPF 的路由器首次建立邻接关系时,它们会交换 DBD 数据包。
-
信息内容:
- DBD 包含路由器的链路状态数据库(LSDB)中存储的路由信息的简要描述。
-
初始交换:
- 在 OSPF 对等体关系建立过程中,两个路由器首先交换 DBD 数据包来同步它们的 LSDB。
-
序列号:
- DBD 数据包包含一个序列号,用于标识 LSDB 中每个条目的版本。
-
确认:
- 接收到 DBD 数据包的路由器会确认收到的信息,并可能请求缺失或更新的数据库描述。
-
LSA(链路状态通告):
- 一旦交换了 DBD,路由器将使用 LSA 来传输实际的路由和拓扑信息更改。
-
可靠传输:
- OSPF 确保 DBD 和 LSA 的可靠传输,以保证数据库的完整性和同步。
-
用途:
- DBD 用于确保所有 OSPF 路由器具有相同的网络视图,从而能够计算出到每个目的地的最短路径。
-
安全:
- DBD 交换过程可以被加密,以提供额外的安全层。
!!!!注意,DBD 是 OSPF 协议特有的概念,并不适用于所有路由协议。其他链路状态路由协议可能使用不同的机制来同步路由信息!!!!!
四.OSPF 邻居状态机制(状态改变)
Down(关闭状态,也发hello包,只不过不是10s发一次,发慢hello,大概一个轮询时间120s 发送一次)、 init() 、 attempt(尝试 过渡) 、 two-way 、 exstart 、 exchange 、loading 、full
hello包
换算
![](https://i-blog.csdnimg.cn/direct/6524eb4a04824d198a6b73c5390a70b0.png)
![](https://i-blog.csdnimg.cn/direct/9ddbcd8d26ef49e89d437a35a92e8662.png)
![](https://i-blog.csdnimg.cn/direct/9d2d53ea14f64fbd972b624167ed9adb.png)
Init ---初始化状态,一旦开始发送hello报文,进入初始化状态。
Two-way---双向通信状态(邻居状态),接收到包含自己router-id 的对方hello报文。
邻居关系建立条件:
1.router-id 必须不同
2.area ID 相同
3.认证: 认证类型 (不认证=0 明文认证=1 MD5=2) 认证数据
4.hello时间,dead时间必须一致
5.特殊区域标识一致(E(外部路由位)=1 ; N(NSSA外部路由位)=0 P=0)
五个条件
6.MA网络中,网络掩码必须一致
7.必须同时使用单播或组播更新
8.更新源检测(双方的IP地址必须在同一网段)
邻居状态下(two-way): MA的网络中会选举DR(指定路由器) BDR(备份指定路由器)
DR选举: 1.比较优先级 (范围:0-255,默认优先级为1 ,越大越优)
2.比较各自的router-id,越大越优
注意:1.DR抢占是关闭的 2.DR是一个接口概念 3.优先级范围0-255,数字为0代表不参与选举 4.先选举BDR ,再升级为DR
主从选举:发生在exstart状态, 通过双方的router-id进行比较,router-id大的一方为主。 发送的主从选举DBD,DBD中包含了MTU值(默认思科直接启用,华为中默认不包含MTU,可以使用命令激活传递MTU值的功能,若双方的MTU值不值则卡在exstart 状态)。
Exstart---预启动状态,一旦开始发送主从DBD,则进入预启动状态。
Exchange ---预交换,主从选举完成,则发送携带LSA头部信息的DBD,进入预交换状态,会发送LSR数据包。(但是没有LSU)
Loading ---加载状态,一旦发送LSU数据包,进入了加载状态,进行大量LSA的学习。
Full ---邻接状态。双方LSA同步(双方LSA全部学习)
五.OSPF基本配置
启用OSPF 并指定router-id
Router-id : 路由器标识符,用于标识本路由器在OSPF网络中的唯一性
OSPF router-id 选举规则:1.手工指定最优先 2.选举所有逻辑中IP地址最大的 3.选举所有物理接口IP地址最大的
华为中: 若以上三点都不满足,则可以创建router-id 为0.0.0.0 ;在使用逻辑或物理接口IP地址时,接口可以是关闭状态;若一台路由器启用了多个OSPF进程,不同进程可以使用相同的router-id(不推荐);
思科中:若以上三点都不满足,则无法启用OSPF;在使用逻辑或物理接口时,接口必须双 up ,该接口可以不通告进入OSPF中;同一路由器上多个OSPF进程必须router-id必须不同;
全局模式下可以选择针对所有的OSPF进程修改router-id ;(若同时在接口部署时,接口优先生效)
查看:
Network通告:
1.
2.必须先创建OSPF 进程并开启需用使用的区域ID,再进入接口启 用:
激活DBD中携带MTU值功能:
修改接口MTU值: (同时修改3层和2层的MTU值)
查看二层接口信息:
查看三层信息:
OSPF三张表:
OSPF(开放最短路径优先)是一种链路状态路由协议,它使用三张表来实现路由决策和路径选择:
-
链路状态数据库(Link-State Database, LSDB):
- 这是 OSPF 的核心,包含整个网络的拓扑结构信息。每个运行 OSPF 协议的路由器都有一个完整的 LSDB,它由一系列的链路状态通告(Link-State Advertisements, LSAs)组成。每个 LSA 描述了网络中的一个部分,如路由器的接口状态、网络的连接性等。
-
拓扑表(Topology Table):
- 拓扑表是从 LSDB 派生出来的,它展示了网络的逻辑结构,通常是一棵树或多棵树,表示路由器之间的连接关系。OSPF 使用 Dijkstra 算法根据拓扑表计算最短路径树(Shortest Path Tree, SPT)。
-
路由表(Routing Table):
- 路由表是最终的输出,它包含了到达每个目的地的最佳路径信息。路由表中的每一条路由条目都包含目的网络、下一跳地址、接口和度量(cost)等信息。路由器使用路由表来转发数据包。
OSPF 路由选择过程:
-
收集信息:
- 每个 OSPF 路由器首先通过发送和接收 LSA 来收集网络中的所有链路状态信息,构建 LSDB。
-
生成拓扑表:
- 利用 LSDB 中的信息,路由器生成一个网络的拓扑表,展示所有可能的路径。
-
计算最短路径树:
- 使用 Dijkstra 算法,路由器从拓扑表中计算出到每个目的网络的最短路径树。
-
填充路由表:
- 根据计算出的最短路径树,路由器填充其路由表,确定到达每个目的地的最佳路径。
-
数据转发:
- 路由器根据路由表中的信息来转发数据包到下一跳地址。
-
维护和更新:
- 当网络拓扑发生变化时,OSPF 路由器会通过 LSA 传播这些变化,并重新计算路由。
OSPF 的这种设计使得它能够快速响应网络变化,提供高效的路由选择,并支持大规模网络。同时,它还支持区域(Area)的概念,可以将大型网络划分为多个较小的区域,以优化路由信息的传播和处理。
OSPF 协议中的 LSA
-
类型1:路由器LSA(Router LSA)
- 由每个路由器生成,描述路由器的接口和状态,包括接口的IP地址和掩码,以及接口的链路成本。
-
类型2:网络LSA(Network LSA)
- 由指定路由器(Designated Router,DR)为每个多接口路由器(如以太网)生成,代表一个多接口网络(如一个广播或多点接口)和连接到该网络的所有路由器。
-
类型3:网络摘要LSA(Network Summary LSA)
- 由区域边界路由器(Area Border Router,ABR)生成,用于在OSPF区域间传播网络的可达性信息。
-
类型4:ASBR摘要LSA(ASBR Summary LSA)
- 由ABR生成,用于在OSPF区域间传播到ASBR(Area Border Router)的路由信息,用于实现区域内的路由器了解如何到达ASBR。
-
类型5:外部LSA(External LSA)
- 由ASBR生成,用于在OSPF自治系统内部传播来自其他自治系统(如BGP学习到的路由)的外部路由信息。
-
类型6:多播LSA(Multicast LSA)
- 用于传播多播路由信息,已在OSPFv2中被废弃,由PIM(多播内部网关协议)所取代。
-
类型7:NSSLA(Not-So-Stubby-Area LSA)
- 用于不完全存根区域(Not-So-Stubby-Area,NSSA),允许NSSA内部路由器了解外部路由的更多信息,而不是仅仅知道它们的存在。
-
类型8:链路LSA(Link LSA)
- 在OSPFv3中使用,用于描述路由器的本地链路和接口信息。
-
类型9:Intra-Area-Prefix LSA
- 用于在OSPFv3中通告区域内前缀。
-
类型10:Inter-Area-Prefix LSA
- 用于在OSPFv3中通告跨区域前缀。
-
类型11:Inter-Area-Router LSA
- 用于在OSPFv3中通告跨区域路由器信息。
补充:
OSPF(Open Shortest Path First,开放最短路径优先)是一种基于链路状态的内部网关协议(IGP),用于在自动交换网络中计算最短路径树和实现IP数据包的路由。以下是OSPF的一些基础知识和配置时应注意的事项:
OSPF 基础知识:
-
链路状态广播:
- OSPF通过广播链路状态通告(LSA)来传递网络拓扑信息。
-
洪泛法:
- 所有路由器都接收并存储邻居路由器的链路状态信息。
-
Dijkstra算法:
- 使用Dijkstra算法计算到达网络中每个节点的最短路径。
-
区域(Area):
- 将大型网络划分为更小的区域可以减少路由信息的泛洪范围和计算复杂性。
-
类型字段:
- OSPF数据包有多种类型,包括Hello、DD(数据库描述)、LSR(链路状态请求)、LSU(链路状态更新)和LSAck(链路状态确认)。
-
邻居和邻接关系:
- 路由器之间建立邻居关系,交换路由信息,形成邻接关系以交换LSA。
-
指定路由器(DR)和备份指定路由器(BDR):
- 在多接入网络中选举DR和BDR,以优化路由信息的交换。
-
LSDB(链路状态数据库):
- 每个路由器都有一个包含网络所有链路状态信息的数据库。
-
区域边界路由器(ABR):
- 连接不同区域的路由器,负责在区域间传播路由信息。
-
自治系统边界路由器(ASBR):
- 连接OSPF自治系统与其他路由协议的路由器,负责传播外部路由。
注意事项:
-
网络类型:
- 正确配置接口的OSPF网络类型,如广播、点对点、NBMA等。
-
Hello和Dead间隔:
- 调整Hello和Dead间隔以确保邻居关系稳定。
-
认证配置:
- 如果需要,配置OSPF认证以增强安全性。
-
MTU大小:
- 确保所有路由器的MTU大小一致,以避免传输问题。
-
区域0(Area 0):
- 所有ABR和ASBR都应该连接到主干区域(Area 0)。
-
虚拟链路:
- 在非主干区域配置虚拟链路以连接分离的主干区域。
-
路由汇总:
- 在ABR上使用路由汇总减少区域内的路由信息量。
-
LSA过滤:
- 使用LSA过滤技术,如路由摘要或默认路由,来控制路由信息的传播。
-
多路径路由:
- OSPF支持多路径路由(ECMP - Equal-Cost Multi-Path),但要注意负载均衡和路由稳定性。
-
监控和调试:
- 使用适当的监控工具和调试命令来跟踪OSPF的运行状态和排除故障。
-
兼容性:
- 确保所有路由器运行相同版本的OSPF,以避免兼容性问题。
-
网络安全:
- 考虑使用IPsec等加密技术来保护OSPF路由信息的传输。
OSPF是一种强大而灵活的路由协议,适用于各种规模的网络。正确配置和监控OSPF对于确保网络的稳定性和效率至关重要。