Datacom-HCIP-08 OSPF路由计算
同一区域内的OSPF路由器拥有完全一致的LSDB,在区域内部,OSPF采用SPF算法完成路由计算。
随着网络规模不断扩大,路由器为了完成路由计算所消耗的内存、CPU资源也越来越多。通过区域划分可以在一定程度上缓解路由器的压力。
在大规模网络中除了OSPF之外,还可能存在其它路由协议,OSPF支持外部路由引入,从而使得OSPF路由器知晓到达域外的路由。
本文主要介绍OSPF路由计算原理,包括区域内部路由、区域间路由及外部路由的计算过程。
区域内路由计算
LSA概述
同一个区域中的所有路由器拥有完全一致的LSDB,如R2的LSDB所示,该网络中有多个LSA。
<R2>display ospf lsdb
OSPF Process 1 with Router ID 10.0.2.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.0.4.4 10.0.4.4 662 72 80000006 48
Router 10.0.2.2 10.0.2.2 625 72 8000000C 1
Router 10.0.1.1 10.0.1.1 638 60 80000007 1
Router 10.0.5.5 10.0.5.5 634 60 8000000B 1
Router 10.0.3.3 10.0.3.3 639 60 80000009 1
Network 10.0.235.5 10.0.5.5 634 36 80000005 0
Network 10.0.12.2 10.0.2.2 629 32 80000003 0
LSA的基本概念
LSA是OSPF进行路由计算的关键依据。
OSPF的LSU报文可以携带多种不同类型的LSA。
各种类型的LSA拥有相同的报文头部。
重要字段解释
LS Age(链路状态老化时间):此字段表示LSA已经生存的时间,单位是秒。
Options(可选项):每一个bit都对应了OSPF所支持的某种特性。
LS Type(链路状态类型):指示本LSA的类型。
Link State ID(链路状态ID):不同的LSA,对该字段的定义不同。
Advertising Router(通告路由器):产生该LSA的路由器的Router ID。
LS Sequence Number(链路状态序列号):当LSA每次有新的实例产生时,序列号就会增加。
LS Checksum(校验和):用于保证数据的完整性和准确性。
Length:是一个包含LSA头部在内的LSA的总长度值。
链路状态类型、链路状态ID、通告路由器三元组唯一地标识了一个LSA。
链路状态老化时间 、链路状态序列号 、校验和用于判断LSA的新旧
常见LSA的类型
类型 | 名称 | 描述 |
---|---|---|
1 | 路由器LSA | (Router LSA) 每个设备都会产生,描述了设备的链路状态和开销,该LSA只能在接口所属的区域内泛洪 |
2 | 网络LSA | (Network LSA)由DR产生,描述该DR所接入的MA网络中所有与之形成邻接关系的路由器,以及DR自己。该LSA只能在接口所属区域内泛洪 |
3 | 网络汇总LSA | (Network Summary LSA) 由ABR产生,描述区域内某个网段的路由,该类LSA主要用于区域间路由的传递 |
4 | ASBR汇总LSA | (ASBR Summary LSA) 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。 |
5 | AS外部LSA | (AS External LSA) 由ASBR产生,用于描述到达OSPF域外的路由 |
7 | 非完全末梢区域LSA | (NSSA LSA)由ASBR产生,用于描述到达OSPF域外的路由。NSSA LSA与AS外部LSA功能类似,但是泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area0。NSSA的ABR会将7类LSA转换成5类LSA注入到Area0 |
Router-LSA
Router LSA详解
Router LSA(1类LSA):每台OSPF路由器都会产生。它描述了该路由器直连接口的信息。
Router LSA只能在所属的区域内泛洪。
V (Virtual Link ) :如果产生此LSA的路由器是虚连接的端点,则置为1。
E (External ): 如果产生此LSA的路由器是ASBR,则置为1。
B (Border ):如果产生此LSA的路由器是ABR,则置为1。
links :LSA中的Link(链路)数量。Router LSA使用Link来承载路由器直连接口的信息。
Router LSA使用Link来承载路由器直连接口的信息。
每条Link均包含“链路类型”、“链路ID”、“链路数据”以及“度量值”这几个关键信息。
路由器可能会采用一个或者多个Link来描述某个接口。
Link Type | Link ID | Link Data |
---|---|---|
Point-to-Point(P2P):描述一个从本路由器到邻居路由器之间的点到点链路,属于拓扑信息 | 邻居路由器的Router ID | 宣告该Router LSA的路由器接口的IP地址 |
TransNet:描述一个从本路由器到一个Transit网段(例如MA或者NBMA网段)的连接,属于拓扑信息 | DR的接口IP地址 | 宣告该Router LSA的路由器接口的IP地址 |
StubNet:描述一个从本路由器到一个Stub网段(例如Loopback接口)的连接,属于网段信息 | 宣告该RouterLSA的路由器接口的网络IP地址 | 该Stub网络的网络掩码 |
Router LSA描述P2P网络
Router LSA描述TransNet
其中LinkID和Data相同,LinkI指的是选举出的DR的IP,Data指的是自己的IP地址
用IP地址表达:DR是接口的DR,而不是设备的DR。
Network-LSA
Network LSA详解
Network LSA(2类LSA) :由DR产生,描述本网段的链路状态,在所属的区域内传播。
Network LSA 记录了该网段内所有与DR建立了邻接关系的OSPF路由器,同时携带了该网段的网络掩码。
Link State ID :DR的接口IP地址。
Network Mask:MA网络的子网掩码。
Attached Router:连接到该MA网络的路由器的Router-ID(与该DR建立了邻接关系的邻居的Router-ID,以及DR自己的Router-ID),如果有多台路由器接入该MA网络,则使用多个字段描述。
Network LSA描述MA网络
SPF计算过程
SPF算法
Phase 1:构建SPF树。
路由器将自己作为最短路径树的树根,根据Router-LSA和Network-LSA中的拓扑信息,依次将Cost值最小的路由器添加到SPF树中。路由器以
Router ID或者DR标识。
广播网络中DR和其所连接路由器的Cost值为0。
SPF树中只有单向的最短路径,保证了OSPF区域内路由计算不会出现环路。
Phase 2:计算最优路由。
将Router-LSA、Network-LSA中的路由信息以叶子节点形式附加在对应的OSPF路由器上,计算最优路由。
已经出现的路由信息不会再添加到SPF树干上。
SPF算法举例
以R1为例说明OSPF拓扑和路由的计算过程。
构建SPF树
计算最优路由
从根节点开始依次添加各节点LSA中的路由信息。
添加顺序为各节点加入SPF树的顺序,已经出现的忽略
结果验证
R1的OSPF路由表
<R1>display ospf routing
OSPF Process 1 with Router ID 10.0.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.0.12.0/24 1 Transit 10.0.12.1 10.0.1.1 0.0.0.0
10.0.13.0/24 48 Stub 10.0.13.1 10.0.1.1 0.0.0.0
10.0.24.0/24 49 Stub 10.0.12.2 10.0.2.2 0.0.0.0
10.0.45.0/24 50 Stub 10.0.12.2 10.0.5.5 0.0.0.0
10.0.235.0/24 2 Transit 10.0.12.2 10.0.5.5 0.0.0.0
R1的全局路由表
<R1>display ip routing-table
Destination/Mask Proto Pre Cost NextHop
10.0.12.0/24 Direct 0 0 10.0.12.1
10.0.13.0/24 Direct 0 0 10.0.13.1
10.0.24.0/24 OSPF 10 49 10.0.12.2
10.0.45.0/24 OSPF 10 50 10.0.12.2
10.0.235.0/24 OSPF 10 2 10.0.12.2
OSPF根据LSDB计算路由表,LSDB中可能存在多种类型的LSA,并且所有的LSA有相同的报文头部格式。
同一区域的OSPF路由器拥有完全一致的LSDB。在只有一个区域的情况下,区域内部主要存在两种类型的LSA,即Router-LSA和Network-LSA。
每台路由器都会产生Router-LSA,描述了路由器的直连接口信息。
在MA网络中,DR会产生Network-LSA来描述接入该MA网络的所有路由器的Router-ID(其中包括DR自身),以及这个网络的掩码。
区域间路由计算
区域间路由计算过程
大型网络中,单区域OSPF存在的问题
一系列连续的OSPF路由器构成的网络称为OSPF域(Domain)。
OSPF要求网络内的路由器同步LSDB,实现对于网络的一致认知。
当网络规模越来越大时,LSDB将变得非常臃肿,设备基于该LSDB进行路由计算,其负担也极大地增加了,此外路由器的路由表规模也变大了,这些无疑都将加大路由器的性能损耗。
当网络拓扑发生变更时,这些变更需要被扩散到整个网络,并可能引发整网的路由重计算。
单区域的设计,使得OSPF无法部署路由汇总。
区域划分
Router LSA和Network LSA只在区域内泛洪,因此通过区域划分在一定程度上降低网络设备的内存及CPU的消耗。
划分区域后,路由器可以分为两种角色:
区域内部路由器(Internal Router):该类设备的所有接口都属于同一个OSPF区域。如R1、R4、R5。
区域边界路由器(Area Border Router):该类设备接口分别连接两个及两个以上的不同区域。如R2、R3。
区域间路由信息传递
OSPF区域间路由信息传递是通过ABR产生的Network Summary LSA(3类LSA)实现的。
以192.168.1.0/24路由信息为例:
R2依据Area 1内所泛洪的Router LSA及Network LSA计算得出192.168.1.0/24路由(区域内路由),并将该路由通过Network Summary LSA通告到Area 0。R3根据该LSA可计算出到达192.168.1.0/24的区域间路由。
R3重新生成一份Network Summary LSA通告到Area 2中,至此所有OSPF区域都能学习到去往192.168.1.0/24的路由。
Network Summary LSA详解
Network Summary LSA(3类LSA)由ABR产生,用于向一个区域通告到达另一个区域的路由。
重要字段解释
LS Type:取值3,代表Network Summary LSA。
Link State ID:路由的目的网络地址。
Advertising Router:生成LSA的Router ID。
Network Mask:路由的网络掩码。
metric:到目的地址的路由开销。
Network Summary LSA示例
路由计算
R2自己到192.168.1.0/24的Cost为1,因此它向Area0所通告的192.168.1.0/24路由的Cost为1。
- 通过区域内SPF的计算,R1到达R2的Cost值为1,R3到达R2的Cost值为2。
- R1和R3根据收到的Network Summary LSA进行路由计算:
R1将到达R2和Cost值和Network Summary LSA所携带的Cost值相加,因此R1到达192.168.1.0/24的Cost值为2。
R3将到达R2和Cost值和Network Summary LSA所携带的Cost值相加,因此R3到达192.168.1.0/24的Cost值为3。
R3自己到192.168.1.0/24的Cost为3,因此它向Area2所通告的192.168.1.0/24路由的Cost为3。
- R3作为ABR,它通过Area 0内泛洪的Network SummaryLSA计算出到达192.168.1.0/24的路由,然后重新向Area 2注入到达该网段的Network Summary LSA,其中包含自己到达该网段的Cost(值为3)。
- R5在SPF中计算得知到达R3的Cost为1,因此R5到达192.168.1.0/24的Cost为4。
区域间路由计算结果验证
区域间路由防环机制
域间路由环路的产生
OSPF区域间路由的传播过程与距离矢量路由协议的路由传播过程非常相似。
对于区域间路由的传递,OSPF也需要一定的防环机制。
区域间路由的防环机制
OSPF要求所有的非骨干区域必须与Area0直接相连,区域间路由需经由Area0中转。
区域间的路由传递不能发生在两个非骨干区域之间,这使Area0 得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑。
ABR不会将描述到达某个区域内网段路由的3类LSA再注入回该区域。
ABR从非骨干区域收到的3类LSA不能用于区域间路由的计算
R1和R2、R3和R4之间的链路中断导致骨干区域不连续。
R4将10.0.2.2/32路由以3类LSA的形式发送到Area 1。
R5和R6可以根据上述3类LSA计算出10.0.2.2/32路由。
R3从非骨干区域收到3类LSA,不进行路由计算,也不会将此3类LSA发送到其他区域。
此时,R1和R3都无法和10.0.2.2/32通信。
虚连接的作用及配置
虚连接的作用及配置
OSPF要求骨干区域必须是连续的,但是并不要求物理上连续,可以使用虚连接使骨干区域在逻辑上连续。
虚连接可以在任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域。
OSPF引入了多区域的概念,使得该协议能够支持更大规模的组网。
OSPF使用3类LSA来描述区域间的路由信息。
为了避免出现区域间路由环路,OSPF设计了多个规则。
OSPF Virtual Link是一种虚拟的、逻辑的链路,被部署在两台OSPF路由器之间,它穿越某个非骨干区域,用于实现另一个非骨干区域与Area0的连接。Virtual Link应该始终作为一种临时的技术手段来解决非骨干区域没有与Area0直接相连的情况。
外部路由计算
OSPF外部路由引入背景
网络中存在部分链路未开启OSPF协议如:
路由器连接外部网络使用静态路由或者BGP协议;
服务器直连的链路未开启OSPF协议。
外部路由引入的基本概念
ASBR(AS Boundary Router):自治系统边界路由器。只要一台OSPF设备引入了外部路由,它就成为了ASBR。如图中的R1。
ASBR将外部路由信息以AS-external LSA(5类LSA)的形式在OSPF网络内泛洪。
AS-external LSA详解
AS-external LSA(5类LSA):由ASBR产生,描述到达AS外部的路由,该LSA会被通告到所有的区域(除了Stub区域和NSSA区域)。
重要字段解释
LS Type:取值5,代表AS-external-LSA。
Link State ID:外部路由的目的网络地址。
Advertising Router:生成该LSA的Router ID。
Network Mask:网络掩码。
E :该外部路由所使用的度量值类型
0:度量值类型为Metric-Type-1
1:度量值类型为Metric-Type-2
metric:到目的网络的路由开销。
Forwarding Address(FA):到所通告的目的地址的报文将被转发到这个地址。
AS-external LSA示例
路由计算过程
- 外部路由信息以叶子节点形式挂载在R1上。
- 根据5类LSA的Advertising Router,R3判断到达外部路由,需要先经过R1。
- R3经过区域内SPF计算,已经将R1添加到SPF树干,R3将到达外部路由的下一跳路由器设置为R1。
- R2的计算方式和R3类似。
R3与ASBR R1同处一个区域,因此它能够根据区域内所泛洪的Router LSA及Network LSA计算出到达ASBR的路由。
ASBR-Summary LSA
ASBR-Summary LSA(4类LSA):由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
重要字段解释
LS Type:取值4,代表ASBR-Summary LSA。
Link State ID :ASBR的Router ID。
Advertising Router:生成LSA的Router ID。
Network Mask:仅保留,无意义。
metric:到目的地址的路由开销。
ASBR-Summary LSA示例
路由计算过程
- 外部路由信息以叶子节点形式挂载在R1上。
- 根据5类LSA的Advertising Router,R5判断5类LSA是由R1产生的,但是在R5的SPF树干中并不存在R1。
- 根据R3产生的4类LSA,R5将到达外部网络的下一跳路由设置为R3。
- R4的路由计算方式和R5类似。
从物理组网上,R3和R5到达外部路由的Cost值不同,但是并未在路由表中真实体现。
区分OSPF外部路由的2种度量值类型
Metric-Type-1
当外部路由的开销与自治系统内部的路由开销相当,并且和OSPF自身路由的开销具有可比性时,可以认为这类路由的可信程度较高,将其配置成Metric-Type-1。
Metric-Type-1外部路由的开销为AS内部开销(路由器到ASBR的开销)与AS外部开销之和。
Metric-Type-2
当ASBR到AS之外的开销远远大于在AS之内到达ASBR的开销时,可以认为这类路由的可信程度较低,将其配置成Metric-Type-2。 Metric-Type-2外部路由的开销等于AS外部开销。
Type | 描述 | 开销计算 |
---|---|---|
Metric-Type-1 | 可信程度高 | AS内部开销+AS外部开销 |
Metric-Type-2 (缺省) | 可信程度低,AS外部开销远大于AS内部开销 | AS外部开销 |
在一个大规模网络中,可能存在多种不同的路由协议,OSPF支持将AS外部路由引入本AS,使得AS内的路由器能够获知到达AS外部的路由。
ASBR将外部路由引入OSPF后,使用5类LSA描述它们,与ASBR同属一个区域的路由器能够根据5类LSA以及区域内的1类、2类LSA完成外部路由计算;与ASBR不在同一个区域的路由器还需借助4类LSA才能完成外部路由计算。
OSPF将外部路由引入OSPF后,可以设置路由的度量值类型:Metric-Type-1或Metric-Type-2,不同度量值类型的外部路由,其开销的计算方式不同,其路由的优先级也不相同,Metric-Type-1路由的优先级高于Metric-Type-2路由。