OSPF 协议简介

 
本文最后更新于

资料

CCNP OSPF协议详解

本文很不完整,需要补充整理!

LSA

计算最短路径数,计算最优路径,写入路由表

OSPF 报文类型

ospf 包结构

结构 含义  
Version Number 版本 2: ipv4
3: ipv6
Type 类型 1 hello
2 database description 数据库描述
3 Link State Request 链路状态请求
4 Link State Update 链路状态更新
5 Link State Acknowledgment 链路状态确认
Package Length 包长度  
Router ID 路由id  
Area ID 区域id  
Checksum 校验和  
Authentication Type 认证类型  
Authentication 认证信息  
Data 包数据  

死亡间隔 是 hello 间隔的 4 倍。

224.0.0.xxx 组播,只能用在直连设备间发送。(同一个路由器下面)

拓展阅读:内网总有发往224.0.0.22的数据存在网络中什么情况会出现224.0.0.2的地址

1 HELLO 报文(hello packet)

​ 周期性的发送给本路由器的邻居,使用的组播地址 224.0.0.5.

​ BR 和 BDR 发送和接受报文使用的组播地址是 224.0.0.6。HELLO PACKET 内容包括一些定时器数值、DR、BDR、以及自己已经知道的邻居。

​ HELLO 时钟的值与路由收敛速度、网络负荷大小成正比。

​ 缺省情况下,PTP、BROADCAST 类型接口发送 HELLO 报文的时间间隔的值为 10 秒;PTMP、NBMA 类型接口发送 HELLO PACKET 时间间隔为 30 秒;

2 DD 报文(Database description packet

​ 相邻路由器直间互发 DD 报文,报告对方自己所拥有的路由信息内容包括 LSDB 中每一条 LSA 摘要(摘要是指 LSA 的 HEAD,通过改 HEAD 可以唯一标识一条 LSA),这样做的目的是为了减少路由器之间传递信息的量,因为 LSA 的 HEAD 只占一条 LSA 的整个数据量的一小部分。根据 HEAD,对端路由器就可以判断出是否已经有了这条 LSA。

​ DATABASE DESCRIPTION PACKET 有两种

​ (1)空 DD 报文,用来确定 MASTER/SLAVE 关系。确定 MASTER/SLAVE 关系后,才发送有路由信息的 DD 报文

​ (2)带有路由信息的 DD 报文,收到有路由信息的 DD 报文后,路由器比较自己的数据库,发现对方的数据库中有自己需要的数据,则向对方发送 LSR(LINK STATE REQUEST)

3 LSR 报文(LINK STATE REQUEST PACKET

​ 两台路由器之间互相交换 DD 报文后,知道对端的路由器有那些 LSA 是本地 LSDB 所缺少的或者对端更新的 LSA,这时需要发送 LSR 报文向对方请求所需的 LSA。内容包括所需要的 LSA 摘要。

4 LSU 报文(LINK STATE UPDATE PACKET

​ 用来向对端路由器发送所需要的 LSA,内容是多条 LSA 的集合

5 LSACK 报文(LINK STATE ACKNOWLEDGMENT PACKET

​ 由于没有使用可靠的 TCP 协议,但是 OSPF 包又要求可靠的传输,所以就有了 LSACK 包。它用来对接收到的 LSU 报文进行确认。内容是需要确认的 LSA 的 HEAD.

LSA 类型(链路状态广播)

Link-State Advertisement

LSA Type Description 始发设备 主要内容 传播范围
1 Router LSAs -路由器 LSA 任何设备   始发的区域内部
2 Network LSAs DR    
3 Summary LSAs -网络汇总 LSA ABR 目的网络的子网号、掩码 区域内
4 ASBR汇总LSA ABR ASBR 的 routerID,到达 ASBR 的开销值  
5 Autonomous system external LSAs -自治系统外部 LSA ASBR 外部自治系统目的地址路由和 routerID  
6 Multicast OSPF LSAs      
7 LSAs defined for not-so-stubby areas -NSSA 外部 LSA ASBR 和类型 5 一致 NSSA 内部
8 Externel attribute LSAs for Border Gateway Protocol (BGP)      
9,10,11 Opaque LSAs      

Type1 是 Router LSA , 所有的 OSPF speaker 都会产生该类 LSA,只在区域内传播,包括路由器自身的拓扑信息,和路由信息。

Type2 是 Network LSA,只在 MA 网络中出现的 2 类 LSA 由 DR 产生,包括 DR 相连的所有网络的信息,只在区域内传播。

Type3 是 Network summary LSA,由 ABR 产生,告知区域内路由器区域外的路由条目, 当有多个 ABR 时使用 cost 来确定,这个 cost 是由区域内路由器将外部路由 cost 和内部 cost 简单相加所得(metric-Type 1), 而不是运行 SPF 算法,因此 可以说在区域内 OSPF 是一种链路状态协议,而在区域间是一种距离矢量协议。区域间路由的传递

Type4 是 ASBR summary, 由 ABR 产生,用来广播 ASBR 的位置, 用show ip ospf database可以看到Type4 LSA 总是一个 host mask 255.255.255.255,并且 Type5 是数据库中唯一没有 Area 属性的 LSA。

Type5 是 external summary,由 ASBR 产生,是非 OSPF 设备的路由信息, 通常在一个大型网络中,路由器的数据库中会存在大量的此类 LSA,给路由器形成较重的负荷。因此我们可以用 stub 区域来限制此类 LSA 的传播。但是考虑以下情景,如果一台运行 OSPF 的路由器需要连接一个非 OSPF 网络 net1,并将非 OSPF 网络中的路由条目通告到 OSPF 中,而又不想在数据库中保存大量的由其他路由器通告的外部网络路由,那么这时我们不可以用 STUB,因为这将阻止所有的 External 路由,OSPF 网络将丢失 net1 的路由信息,

Type 7 因此被写入了 OSPF 标准。 为了解决这个问题, CISCO 规定了 NSSA, Type7 在 NSSA 中传播 External Route,在 NSSA 的 ABR 上,Type7 被转换成 Type5 (当然必须 Type7 LSA P-bit=1),然后由 ABR 将这些路由条目通告到 Backbone。

接口大于100M,修改参考带宽。

Router#clear ip ospf process

区域类型及其结构

  • Backbone area 骨干区域
  • Normal area 普通区域
  • Stub area 末节区域
  • Totally stubby area 完全末节区域
  • Not-so-stubby area 非完全末节区域

Backbone area: Area 0,不同区域间的流量转发必经过 Area 0。

普通区域:非 Area 0, 非特殊区域。

特殊区域 末节区域:至少有一个 ABR。所有路由均被配置为末节路由器。不允许有 ASBR。Area 0 不允许是 末节区域。虚拟链路不允许穿越末节区域。

基本配置

Router#router osfp <自治号>
Router(config-router)#network 10.1.1.0 0.0.0.255 area 0
Router(config-router)#network 10.1.1.1 0.0.0.0 area 0

Router(config-router)#area stub
Router(config-router)#area 2 default-cost 10

解决 area 0 被分割的情况

使用虚链路,虚链路可看做是 area 0 的一部分

router ospf 100
 area 0 virtual-link 10.2.2.2

ospf 路由汇总

ABR(config-router)#

area 1 range 172.16.8.0 255.255.248.0
area 1 range 172.16.16.0 255.255.252.0