路由协议系列之四:OSPF的LSA

2023-08-30 18:43:20

相信大家在学习OSPF的时候,肯定被各种LSA搞的晕头转向,傻傻分不清各种LSA的作用和功能。

今天我们就一起了解下OSPF中LSA的秘密。

首先,OSPF为什么要划分LSA类型?这是由于OSPF区域化结构决定的。

由于OSPF的区域特征所以就会有相应的LSA类型来决定OSPF数据库里的LSA类型。最后经过SPF等算法把相应的LSA类型的路由生成到路由表中形成不同类型的OSPF路由。

同一区域内的OSPF路由器拥有完全一致的LSDB,在区域内部,OSPF采用SPF算法完成路由计算。

随着网络规模不断扩大,路由器为了完成路由计算所消耗的内存、CPU资源也越来越多。通过区域划分可以在一定程度上缓解路由器的压力。

在大规模网络中除了OSPF之外,还可能存在其它路由协议,OSPF支持外部路由引入,从而使得OSPF路由器知晓到达AS域外的路由。

简单来说,OSPF按照区域把常用的LSA划分为3类,即同一区域内,不同区域间以及AS域外部。


LSA基本概念

1、LSA是OSPF进行路由计算的关键依据。

2、OSPF的LSU报文可以携带多种不同类型的LSA。

3、各种类型的LSA拥有相同的报文头部。

字段含义:

LS Age(链路状态老化时间):此字段表示LSA已经生存的时间,单位是秒。当LSA被始发时,该字段为0,随着LSA在网络中被泛洪,该时间逐渐累加,当到达MaxAge(缺省值为3600s)时,LSA不再用于路由计算。


Options(可选项):每一个bit都对应了OSPF所支持的某种特性。


LS Type(链路状态类型):指示本LSA的类型。


Link State ID(链路状态ID):不同的LSA,对该字段的定义不同。


Advertising Router(通告路由器):产生该LSA的路由器的Router ID。


LS Sequence Number(链路状态序列号):当LSA每次有新的实例产生时,序列号就会增加。该字段用于判断LSA的新旧或是否存在重复的实例。


序列号范围是0x80000001-0x7FFFFFFF,路由器始发一个LSA,序列号为0x80000001,之后每次更新序列号加1,当LSA达到最大序列号时,重新产生该LSA,并且把序列号设置为0x80000001。


LS Checksum(校验和):用于保证数据的完整性和准确性。


Length:是一个包含LSA头部在内的LSA的总长度值。


提示

链路状态类型、链路状态ID、通告路由器三元组唯一地标识了一个LSA。

链路状态老化时间 、链路状态序列号 、校验和用于判断LSA的新旧。


常见LSA总结


Router LSA和Network LSA(OSPF区域内)

(一)Router LSA

Router LSA(1类LSA):每台OSPF路由器都会产生。它描述了该路由器直连接口的信息。

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来承载路由器直连接口的信息。


1、Router LSA描述P2P网络


[R1]display ospf lsdb router self-originate //查看路由器自己产生的LSA


OSPF Process 1 with Router ID 1.1.1.1 //OSPF进程号及RID

Area: 0.0.0.0 //所属区域

Link State Database


Type : Router //LSA类型

Ls id : 1.1.1.1 //链路状态ID

Adv rtr : 1.1.1.1 //生成此LSA的路由器RID

Ls age : 68

Len : 60

Options : E

seq# : 80000003

chksum : 0x9e8

Link count: 2

* Link ID: 2.2.2.2 //邻居路由器的RID

Data : 10.0.11.1 //宣告该Router LSA的路由器接口地址

Link Type: P-2-P

Metric : 1

* Link ID: 10.0.11.0 //该stub网络的IP地址

Data : 255.255.255.0 //该stub网络的掩码

Link Type: StubNet

Metric : 1

Priority : Low


(红色部分为拓扑信息,蓝色部分为路由信息)


2、Router LSA描述MA网络或NBMA网络

在描述MA或NBMA网络类型的Router-LSA中,Link ID为DR的接口IP地址,Data为本地接口的IP地址。


以R3为例:

[R3]dis ospf lsdb router self-originate


OSPF Process 1 with Router ID 3.3.3.3

Area: 0.0.0.0

Link State Database


Type : Router //LSA类型

Ls id : 3.3.3.3 //链路状态ID

Adv rtr : 3.3.3.3 //生成此LSA的路由器RID

Ls age : 250

Len : 36

Options : E

seq# : 80000004

chksum : 0xbe4b

Link count: 1

* Link ID: 10.0.11.1 //DR的接口IP地址

Data : 10.0.11.3 //宣告该Router LSA的路由器接口地址

Link Type: TransNet

Metric : 1 //到达DR的开销


TransNet描述的链接中仅包括与DR的连接关系及开销,没有网络号/掩码及共享网段上其他路由器的任何信息。为什么在broadcast和NBMA网络中的Router LSA只有拓扑信息,没有路由信息?由此我们引出第二类LSA。


(二)Network LSA

Network LSA(2类LSA) :由DR产生,描述本网段的链路状态,在所属的区域内传播。


Network LSA 记录了该网段内所有与DR建立了邻接关系的OSPF路由器(包括DR本身),同时携带了该网段的网络掩码。

Link State ID :DR的接口IP地址。

Network Mask:MA网络的子网掩码。

Attached Router:连接到该MA网络的路由器的Router-ID(与该DR建立了邻接关系的邻居的Router-ID,以及DR自己的Router-ID),如果有多台路由器接入该MA网络,则使用多个字段描述。


display ospf lsdb network self-originate


OSPF Process 1 with Router ID 1.1.1.1

Area: 0.0.0.0

Link State Database


Type : Network //LSA类型

Ls id : 10.0.11.1 //DR的接口IP地址

Adv rtr : 1.1.1.1 //生成此LSA的路由器RID

Ls age : 1371

Len : 36

Options : E

seq# : 80000004

chksum : 0xac74

Net mask : 255.255.255.0 //网络掩码

Priority : Low

Attached Router 1.1.1.1 //连接到该网段的路由器列表,呈现出此网段的拓扑信息

Attached Router 2.2.2.2

Attached Router 3.3.3.3


路由器通过Router LSA和Network LSA同步本区域的LSDB,之后采用SPF算法计算区域内OSPF路由(关于SPF计算过程本文不做说明)。


Network Summary LSA(OSPF区域间)

当网络规模越来越大时,LSDB将变得非常臃肿,设备基于该LSDB进行路由计算,其负担也极大地增加了,此外路由器的路由表规模也变大了,这些无疑都将加大路由器的性能损耗。


由此OSPF设计出区域的划分,从而每一区域维护本区域的LSDB。区域的划分也能在一定程度上解决当拓扑结构发生改变时引起的路由震荡。同时,区域的划分也方便用户管理和路由控制。


OSPF区域间路由信息传递是通过ABR产生的Network Summary LSA(3类LSA)实现的。


Network Summary LSA(3类LSA)由ABR产生,用于向一个区域通告到达另一个区域的路由。

LS Type:取值3,代表Network Summary LSA。

Link State ID:路由的目的网络地址。

Advertising Router:生成LSA的Router ID。

Network Mask:路由的网络掩码。

metric:到目的地址的路由开销。

如图所示:以R4为例,其对应的一类LSA在Area 1中同步,作为Area 1和Area 0之间的ABR(R1),会收到R4的一类LSA并将其转化成三类LSA在Area 0中进行泛洪;


R2接收到此三类LSA后,做同样操作。当Area 0和Area 2之间的ABR(R3)接收到此三类LSA后,会重新生成一条新的三类LSA发送到Area 2当中。至此全OSPF区域都受到了192.168.0.0/24的路由信息。R5上192.168.1.0/24的路由信息也是同样操作。


以R2为例:

[R2]display ospf lsdb summary

OSPF Process 1 with Router ID 2.2.2.2

Area: 0.0.0.0

Link State Database

Type : Sum-Net //三类LSA

Ls id : 10.0.13.0 //目的网段地址

Adv rtr : 3.3.3.3 //生成此三类LSA的Router ID

Ls age : 204

Len : 28

Options : E

seq# : 80000001

chksum : 0x930

Net mask : 255.255.255.0 //网络掩码

Tos 0 metric: 1 //开销值

Priority : Low


由此可以看出三类LSA只传递路由信息,不传递拓扑信息。

ABR产生的三类LSA将用于计算区域间路由。


AS External LSA和ASBR Summary LSA(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):到所通告的目的地址的报文将被转发到这个地址。


以R4为例,将R4上的loopback0接口引入OSPF 1中。

[R4-ospf-1]display ospf lsdb ase self-originate

OSPF Process 1 with Router ID 4.4.4.4

Link State Database

Type : External //五类LSA

Ls id : 192.168.0.1 //目的网段地址

Adv rtr : 4.4.4.4 //生成此五类LSA的RID(ASBR)

Ls age : 134

Len : 36

Options : E //代表外部路由

seq# : 80000001

chksum : 0xca8b

Net mask : 255.255.255.255 //网络掩码

TOS 0 Metric: 1 //外部路由到ASBR的开销之,默认为1

E type : 2 //外部路由类型,默认为type 2

Forwarding Address : 0.0.0.0

Tag : 1

Priority : Low //外部路由优先级低


OSPF引入外部路由,共有两种类型:

第一类外部路由的AS外部开销值被认为和AS内部开销值是同一数量级的,因此第一类外部路由的开销值为AS内部开销值(路由器到ASBR的开销)与AS外部开销值之和;这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和OSPF自身路由的开销具有可比性。


第二类外部路由的AS外部开销值被认为远大于AS内部开销值,因此第二类外部路由的开销值只包含AS外部开销,忽略AS内部开销(默认为第二类),这类路由的可信度比较低。


(二)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:到目的地址的路由开销。

以R1为例:

display ospf lsdb asbr self-originate

OSPF Process 1 with Router ID 1.1.1.1

Area: 0.0.0.0

Link State Database

Type : Sum-Asbr //四类LSA

Ls id : 4.4.4.4 //ASBR的RID

Adv rtr : 1.1.1.1 //生成此四类LSA的Router ID(ABR)

Ls age : 682

Len : 28

Options : E

seq# : 80000001

chksum : 0x90b6

Tos 0 metric: 1


ASBR生成后,五类LSA在整个AS(自治区域)中泛洪扩散。但在泛洪的过程中五类LSA信息不会像三类LSA一样发生变化。

为了能找到ASBR路由器的位置,需要ABR生成四类LSA,来告诉非骨干区域中的路由器ASBR的具体位置。


NSSA LSA(NSSA区域)

NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其它区域的外部路由。


7类LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述NSSA区域引入的外部路由信息。NSSA区域的ASBR将外部路由引入该区域后,使用7类LSA描述这些路由。


7类LSA的扩散范围仅限于始发NSSA区域,7类LSA不会被注入到普通区域。

NSSA区域的ABR会将7类LSA转化为5类LSA,并将该LSA注入到骨干区域,从而在整个OSPF域内泛洪。


NSSA区域的ABR会阻挡其他区域引入的外部路由引入本区域,即NSSA区域内不会存在4类及5类LSA,为了让NSSA区域内的路由器能够通过骨干区域到达AS外部,NSSA区域的ABR会自动向该区域注入一条缺省路由,该路由采用7类LSA描述。


看到这里,相信大家对LSA的作用和特点已经非常清楚了。最后我们用简单的几句话来概括一下LSA。LSA是OSPF进行路由计算的关键依据。


按照区域来说,OSPF通过1类和2类LSA完成同一区域内的路由计算,通过3类LSA完成不同区域间的路由计算,通过4类、5类和7类完成AS外部路由的计算。