2. OSPF路由计算
同一区域内的OSPF路由器拥有完全一致的LSDB,在区域内部,OSPF采用SPF算法完成路由计算,随着网络规模不断扩大,路由器为了完成路由计算所消耗的内存、CPU资源也越来越多。通过区域划分可以在一定程度上缓解路由器的压力,在大规模网络中除了OSPF之外,还可能存在其它路由协议,OSPF支持外部路由引入,从而使得OSPF路由器知晓到达域外的路由,本小节介绍OSPF路由计算原理,包括区域内部路由、区域间路由及外部路由的计算过程。
2.1 区域内路由计算
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的类型
2.1.1 1类LSA--Router LSA
Router LSA使用Link来承载路由器直连接口的信息,每条Link均包含“链路类型”、“链路ID”、“链路数据”以及“度量值”这几个关键信息,路由器可能会采用一个或者多个Link来描述某个接口。
- 字段解释:
- V (Virtual Link ) :如果产生此LSA的路由器是虚连接的端点,则置为1。
- E (External ): 如果产生此LSA的路由器是ASBR,则置为1。
- B (Border ):如果产生此LSA的路由器是ABR,则置为1。
- links :LSA中的Link(链路)数量。Router LSA使用Link来承载路由器直连接口的信息。
2.1.2 2类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网络,则使用多个字段描述。
2.1.3 SPF计算过程
步骤1:构建SPF树
路由器将自己作为最短路径树的树根,根据Router-LSA和Network-LSA中的拓扑信息,依次将Cost值最小的路由器添加到SPF树中。路由器以Router ID或者DR标识,广播网络中DR和其所连接路由器的Cost值为0,SPF树中只有单向的最短路径,保证了OSPF区域内路由计算不会出现环路。
步骤2:计算最优路由。
将Router-LSA、Network-LSA中的路由信息以叶子节点形式附加在对应的OSPF路由器上,计算最优路由,已经出现的路由信息不会再添加到SPF树干上。
2.2 区域间路由计算
OSPF要求网络内的路由器同步LSDB,实现对于网络的一致认知,当网络规模越来越大时,LSDB将变得非常臃肿,设备基于该LSDB进行路由计算,其负担也极大地增加了,此外路由器的路由表规模也变大了,这些无疑都将加大路由器的性能损耗,当网络拓扑发生变更时,这些变更需要被扩散到整个网络,并可能引发整网的路由重计算,而且单区域的设计,使得OSPF无法部署路由汇总。
Router LSA和Network LSA只在区域内泛洪,因此通过区域划分在一定程度上降低网络设备的内存及CPU的消耗,区域间的路由又是如何传递与计算的呢?
2.2.1 区域间路由计算过程
OSPF区域间路由信息传递是通过ABR产生的Network Summary LSA(3类LSA)实现的,3类LSA由ABR产生,用于向一个区域通告到达另一个区域的路由。
- 重要字段解释
- LS Type:取值3,代表Network Summary LSA。
- Link State ID:路由的目的网络地址。
- Advertising Router:生成LSA的Router ID。
- Network Mask:路由的网络掩码。
- metric:到目的地址的路由开销。
2.2.2 区域间防环机制
OSPF区域间路由的传播过程与距离矢量路由协议的路由传播过程非常相似,对于区域间路由的传递,OSPF也需要一定的防环机制。
区域间防环机制1:
OSPF要求所有的非骨干区域必须与Area0直接相连,区域间路由需经由Area0中转,区域间的路由传递不能发生在两个非骨干区域之间,这使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑。
区域间防环机制2:
ABR不会将描述到达某个区域内网段路由的3类LSA再注入回该区域
区域间防环机制3:
ABR从非骨干区域收到的3类LSA不能用于区域间路由的计算。
如上图,R3不会对R5传来关于10.0.2.2/32的3类LSA进行计算。
2.2.3 虚连接的作用及配置
由于ospf网络拓扑结构复杂,有时无法满足每个非骨干区域必须和骨干区域直接相连的要求,为解决·此问题,ospf提出了虚链路的概念,虚连接可以在任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域。
注意:v-link(虚连接)只是一种临时解决办法
2.3 外部路由计算
网络中存在部分链路未开启OSPF协议如:
- 路由器连接外部网络使用静态路由或者BGP协议;
- 服务器直连的链路未开启OSPF协议。
因此需要在OSPF路由器上引入外部路由:
ASBR(AS Boundary Router):自治系统边界路由器。只要一台OSPF设备引入了外部路由,它就成为了ASBR。如图中的R1。
ASBR将外部路由信息以AS-external LSA(5类LSA)的形式在OSPF网络内泛洪。
2.3.1 AS-external LSA(5类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):到所通告的目的地址的报文将被转发到这个地址。
2.3.2 ASBR-Summary LSA(4类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:到目的地址的路由开销。
2.3.3 OSPF外部路由的两种度量值类型
- 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外部开销。
- OSPF路由遵循以下优先级顺序,区域内路由>区域间路由>Metric-Type-1外部路由>Metric-Type-2外部路由。