链路状态协议:OSPF
OSPF:Open Shortest Path First开放最短路径优先协议
目录
OSPF的基本原理
什么是OSPF?
-
OSPF属于链路状态协议
-
采用SPF算法计算最佳路径
-
触发更新--->路由计算更快
-
OSPF(Open Shortest Path First,开放最短路径优先)是IETF开发的基于链路状态的自治系统内部路由协议;
-
OSPF仅传播对端设备不具备的路由信息,网络收敛迅速,并有效避免了网络资源浪费;
-
OSPF 直接工作于IP层之上,IP协议号为89
-
OSPF以组播地址发送协议包;
Router-id
每个OSPF路由器都会有- -个Router-id ,用来唯一标识OSPF路由器
-
手动指定Router-id x.x.x.x ;
-
自动选择最大的loopback地址作为Router-id ;
-
自动选择最大的物理接口的IP地址作为Router-id (接口必须是激活状态)。
注意:我们要求全OSPF域内,禁止出现两台路由器拥有相同的Router-ID。
OSPF Router-ID的设定可以通过手工配置的方式,或者通过协议自动选取的方式。当然,在实际网络部署中,强烈建议手工配置OSPF的Router-ID,因为这关系到协议的稳定。
OSPF的开销
-
OSPF使用cost“开销”作为路由度量值。
-
OSPF接口cost=100M /接口带宽,其中100M为OSPF的参考带宽(reference-bandwidth),可以修改,如果是小数,向上取整。
-
每一个激活OSPF的接口都有一个cost值。
-
一条OSPF路由的cost由该路由从起源一-路到达本地的所有入接口cost值的总和。
修改OSPF cost
修改ospf的cost值,目的是为了实现主备路由的功能
OSPF进程号(Processor ID)
OSPF进程号的取值范围是1-65535,只具有本地意义,用于在一台网络设备上标识OSPF进程。华为的网络产品支持运行多个OSPF进程,每一个OSPF进程需指定特定的进程号加以区分。
由于进程号只具有本地意义,因此两台直连的设备,如果要建立OSPF 邻接关系,则并不要求二者使用相同的进程号。
OSPF的配置
#R1 ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 192.168.1.0 0.0.0.255 network 192.168.12.0 0.0.0.255 #R2 ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 192.168.12.0 0.0.0.255 network 192.168.23.0 0.0.0.255 #R3 ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 192.168.23.0 0.0.0.255 network 192.168.2.0 0.0.0.255
OSPF的工作过程
OSPF协议工作过程主要有三个阶段:
-
建立邻接关系
-
链路状态信息传递
-
计算路由
ospf需要维护的3张表
-
邻居表
确保直连路由器之间的能建立成功的邻居关系;后期与邻居之间互相发送链路信息。
[R1]display ospf peer
-
链路信息数据库(LSDB)
存储LSDB (链路信息数据库) ;同一区域的所有路由器的LSDB相同。
[R1]display ospf lsdb
-
路由表
对链路信息进行SPF计算,选择到达目标地址的最佳路径放入路由表。
[R1]display ip routing-table
OSPF的建立过程
OSPF路由器建立邻居需要的经历7个状态和五种报文
OSPF的七种状态
OSPF的五种报文
OSPF工作过程
1、启动配置完成后,本地收发hello包,建立邻居关系,生成邻居表;
2、再进行条件的匹配,匹配失败将停留于邻居关系,仅hello包保活即可;
3、匹配成功者之间建立邻接关系,需要DBD共享数据库目录,LSR/LSU/LSack来获取未知的LSA信 息,当收集完网络中所有的LSA后,生成数据表--LSDB
4、LSDB建立完成后,本地基于OSPF选路规则,计算本地到达所有未知网段的最短路径,然后将其 加载到路由表中,完成收敛。
5、收敛完成后--hello包周期保活--30分钟周期的BDB比对,若不一致将会使用LSR/LSU/LSack重新 获取。
OSPF广播类型
224.0.0.5:指的是所有OSPF路由器所使用的组播地址; 224.0.0.6:指的是所有OSPF DR路由器所使用的组播地址。
OSPF建立的过程
(1)在启动宣告配置之后,OSPF路由器会使用组播224.0.0.5进行OSPF hello包的收发;若接收到的hello包 中存在本地的route-id,则建立邻居关系,生成邻居表。之后基于表中所有的邻居进行条件的匹配, 匹配失败则将维持邻居关系,仅hello包周期保活即可;
(2)匹配成功者之间可以建立邻接关系;邻居间使用DD数据包进行数据库目录的比对,之后使用LSR查询目 录中未知的LSA信息,对端使用LSU来携带传递LSA,最终需要LSAck进行接收确认,当本地收集到区域 内所有设备的LSA信息后,生成LSDB—链路状态数据库表;
(3)本地基于LSDB启用SPF算法,计算到达所有未知网段的最短路径,然后将其加载到路由表内;
OSPF支持的网络类型
-
点到点网络
-
广播型多路访问网络
-
非广播型多路访问(NBMA) 网路
-
P2MP网络
常见链路层协议对应的默认网络类型
广播网络建立邻居过程
解决LSA泛洪问题
-
为减小多路访问网络中的OSPF流量, OSPF 会在每一个MA网络 (多路访问网络)选举一个指定路由器(DR)和一个备用指定路由器(BDR)。
-
DR选举规则:最高OSPF接口优先级拥有者被选作DR,如果优先级相等(默认为1),具有最高的OSPF Router-ID的路由器被选举成DR,并且DR具有非抢占性。
-
指定路由器(DR): DR负责使用该变化信息更新其它所有OSPF路由器(DRother) 。
-
备用指定路由器(BDR): BDR 会监控DR的状态,并在当前DR发生故障时接替其色。
-
注意OSPF为"接口敏感型协议”,DR及BDR的身份状态是基于OSPF接口的。
-
MA网络中,所有的DRother路由器均只与DR和BDR建立邻接关系,DRother间不建立全毗 邻邻接关系。
-
如此一来,该多路访问网络中设备需要维护的OSPF邻居关系大幅减小: M= (n-2)x2+1, LSA的泛洪问题也可以得到一定的缓解。
OSPF单区域的问题
-
LSA泛洪严重,OSPF路由器的负担很大。
-
区域内部动荡会引|起全网路由器的SPF计算。
-
LSDB庞大,资源消耗过多,设备性能下降,影响数据转发。
-
每台路由器都需要维护的路由表越来越大,单区域内路由无法汇总。
OSPF多区域
-
减少了LSA洪泛的范围,有效地把拓扑变化控制在区域内,达到网络优化的目的。
-
在区域边界可以做路由汇总,减小了路由表。
-
充分利用OSPF特殊区域的特性,进一步减少L SA泛洪,从而优化路由。
-
多区域提高了网络的扩展性,有利于组建大规模的网络。
-
Area0为骨干区域,负责在非骨干区域之间中转由区域边界路由器归纳的链路状态通告信息。
-
为了防止出现环路,OSPF要求所有的非骨干区域之间不能直接进行L SA的交互,而必须通过Area0骨干区域进行中转。
-
因此所有的非骨干区域必须都与Area0 "直接相连"
OSPF的路由器角色
OSPF多区域的配置
-
各主机路由器的IP地址,按照上图配置
-
在R1,R2 ,R3,R4上配置OSPF的area0和area1
#R1 [R1]ospf 1 router-id 1.1.1.1 ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 192.168.1.0 0.0.0.255 network 192.168.123.0 0.0.0.255
#R2 [R2]ospf 1 router-id 2.2.2.2 ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 192.168.2.0 0.0.0.255 network 192.168.123.0 0.0.0.255
#R3 [R3]ospf 1 router-id 3.3.3.3 ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 192.168.123.0 0.0.0.255 network 3.3.3.3 0.0.0.0 area 0.0.0.1 network 192.168.34.0 0.0.0.255
#R4 #OSPF的配置 [R4]ospf 1 router-id 4.4.4.4 ospf 1 router-id 4.4.4.4 import-route rip 1 #ospf引入外部rip的路由 area 0.0.0.1 network 4.4.4.4 0.0.0.0 network 192.168.34.0 0.0.0.255 #RIp的配置 rip 1 version 2 network 192.168.45.0 network 4.0.0.0 import-route ospf 1 #rip引入内部ospf路由
#R5 RIP的配置 rip 1 version 2 network 192.168.45.0 network 5.0.0.0
-
全网互通,可以互相访问内外部网络
PC1和R5的环回接口通信验证
LSA的详解
LSA (Link State Advertisement,链路状态通告)
邻居建立最后到达Two-way状态,邻接建立最后达到FULL状态。
来详细了解下OSPF在建立邻接过程中通告的LSA的详细信息。
OSPFv2需要了解的6种LSA,分别是:1类LSA、2类LSA、3类LSA、4类LSA、5类LSA、7类LSA。
在1类LSA中有使用四种链路类型,来描述不同直连链路的信息,每种链路类型由link id、data、metric进行描述。
-
transnet:用于描述一个NBMA/BMA网络的邻居关系,描述的是拓扑信息。
-
P2P:用于描述一个P2P/P2MP链路上的邻居,描述的是网络的拓扑信息。
-
Stubnet:用于描述叶子路由信息,没有邻居(即描述自身直连的网络号),描述直连的路由信息。
-
V-link:用于描述虚链路连接的邻居,描述的是网络的拓扑信息。
1类LSA中不光只存在四种链路类型,还有重要的Options(选项)、Flags(标志)等参数信息。
DN bit:主要是在MPLS VPN网络中用于防止环路
O bit:表明是否支持9、10、11类LSA
DC bit:是否支持按需链路,即OSPF不发送hello报文,但是邻居不老化
L bit:表明是否支持8类LSA
N bit:表示是否为NSSA区域,即是否支持7类LSA
MC bit:表示是否支持组播数据包的转发能力
E bit:表示是否支持外部路由,即5类LSA
MT bit:表示是否支持多拓扑OSPF
V bit:表示是否存在虚链路的邻居
E bit:表示本路由器是不是ASBR
B bit:表示本路由器是不是ABR
-
多路访问( Multiple- Access ,简称MA)网络,包括广播型多路访问网络及非广播型多路访问网络,其中广播型多路访问网络的典型代表是以太网。
-
在MA网络中,OSPF会选举DR及BDR。一个MA网络中,所有路由器都只与DR/BDR建立全毗邻的OSPF邻接关系。
-
Type-2 LSA由DR产生,描述其在该MA网络_上连接的所有OSPF路由器以及该MA网络的网络掩码。
-
Type-2 LSA中没有cost字段。
-
Type-2 LSA只在本区域内泛洪,不允许跨越区域泛洪。
-
借助一个区域内所泛洪的Type-1 LSA及Type-2 ,该区域中的所有路由器能够还原出区域的完整拓扑,并在此基础上计算出到达区域内各个网段的最佳、无环路由。
-
只有ABR才能够产生Type-3 LSA ,这里的ABR指的是有多个接口连接到不同区域,并且至少有一个活跃的接口连接到Area0的OSPF路由器。
-
如果一台ABR有 多条路径可以到达直连区域内的某个目的网段,那么它将只会为该网段产生一条Type-3 LSA注入到Area0 ,而且这条Type-3 LSA的cost是. 上述多条路径中cost的最小值。
-
当ABR在Area0中存在一个全毗邻( Full )的邻居时,它只能使用Area0中学习到的Type-3 LSA计算区域间的路由,而不能使用从非0 Area学习到的Type-3 LSA计算区域间的路由。
-
OSPF使用Type-5 LSA计算得出的外部路由,在路由表中的protocol字段显示为“O _ASE"也即OSPF AS External,OSPF外部路由。
-
Type-5 LSA有两种度量值类型( Metric-type ) : Type 1及Type2。将外部路由引入OSPF时,如果未指定该外部路由( Type5-LSA )的度量值类型,则缺省为Type2 ,且路由的外部cost缺省为1。
-
度量值类型Type 1及Type2的区别如下:
-
Type-5 LSA的度量值类型为Type2 ,则该外部路由的cost=外部cost ;
-
Type-5 LSA的度量值类型为Type1 ,则该外部路由的cost=内部cost+外部cost ;
-
-
NSSA (非完全末梢区域Not-So-Stubby Area )我们可以理解为从Stub Area衍生而来, Stub Area是不允许外部路由进入的,而NSSA可以。
-
当NSSA的ASBR向该区域注入外部路由时,这些外部路由将使用Type-7 LSA来描述。Type-7 LSA在内容上Type-5 LSA几乎相同,只不过前者只能出现在NSSA中,而不允许进入其他Area。NSSA的ABR在收到Type-7 LSA后,负责将其转换成Type-5LSA ,然后注入到Area0中,进而传播到整个OSPF域。
-
与Type-5 LSA一样, Type-7 LSA也存在两种度量值类型, Type1及Type2 ,它们之间的区别和Type-5 LSA中的相同。