OSPF链路状态数据库

原理概述:

OSPF是一种基于链路状态的动态路由协议,每台 OSPF 路由器都会生成相关的LSA,并将这些LSA通告出去。路由器收到LSA后,会将它们存放在链路状态数据库LSDB中。

LSA有多种不同的类型,不同类型的LSA的功能和作用是不同的,下面介绍几种常见的LSA:

Type-1 LSA(Router LSA):每台路由器都会产生,用来描述路由器的直连链路状态和开销值。Type-1 LSA只能在所属区域内部泛洪,不能泛洪到其他区域。

Type-2 LSA(Network LSA):它是DR产生的,主要用来描述该DR所在网段的网络掩码以及该网段内有那些路由器。Type-2 LSA只能在所属区域内部泛洪,不能泛洪到其他区域。

Type-3 LSA(Network Summary LSA);它是由ABR(Area Boundary Router)产生的,ABR路由器将所连区域的Type-1和Type-2 LSA 转换为 Type-3 LSA,用来描述区域间的路由信息。Type-3 LSA可以泛洪到整个AS(Autonomous System,自治域)内部,但不能泛洪到Totally Stub区域和Totally NSSA(Not-So-Stubby Area)区域。

Type-4 LSA(ASBR Summary LSA);它是由ASBR(Autonomous System Boundary Router)所在区域的ABR产生的,用来描述到ASBR的路由。Type-4LSA 可以泛洪到整个AS内部,但不能泛洪到Stub区域、Totally Stub区域、NSSA区域和Totally NSSA区域中。

Type-5 LSA(AS External LSA):它是由ASBR产生的,用来描述到AS外部网络的路由。Type-5 LSA可以泛洪到整个AS内部,但不能泛洪到Stub区域、Totally Stub区域、NSSA区域和Totally NSSA区域中。

Type-6 LSA(Group Membership LSA):在MOSPF中用于标识组播组成员使用的用户组播路由。

Type-7 LSA(NSSA LSA):它是由NSSA区域或Totally NSSA区域的NSSA ASBR产生的,用来描述到AS外部的路由。Type-7 LSA只能出现在所属NSSA区域或Totally NSSA区域内部。

 

实验目的:

理解OSPF中不同类型的LSA的作用

熟悉OSPF中不同类型的LSA的泛洪范围

熟悉LSA中重要字段的含义

 

实验拓扑:

 路由基础之OSPF链路状态数据库_OSPF

1:首先基础配置

R1:

#
interface GigabitEthernet0/0/0
ip address 10.0.12.1 255.255.255.0
#
interface GigabitEthernet0/0/1
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface LoopBack0
ip address 10.0.1.1 255.255.255.255
#
interface LoopBack1
ip address 192.168.1.1 255.255.255.0

R2:

#
interface GigabitEthernet0/0/0
ip address 10.0.12.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.0.235.2 255.255.255.0
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface LoopBack0
ip address 10.0.2.2 255.255.255.255

R3:

#
interface GigabitEthernet0/0/0
ip address 10.0.34.3 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.0.235.3 255.255.255.0
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface LoopBack0
ip address 10.0.3.3 255.255.255.255

R4:

#
interface GigabitEthernet0/0/0
ip address 10.0.34.4 255.255.255.0
#
interface GigabitEthernet0/0/1
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface LoopBack0
ip address 10.0.4.4 255.255.255.255
#
interface LoopBack1
ip address 172.16.1.1 255.255.255.0

R5:

#
interface GigabitEthernet0/0/0
ip address 10.0.235.5 255.255.255.0
#
interface GigabitEthernet0/0/1
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface LoopBack0
ip address 10.0.5.5 255.255.255.255

2:配置OSPF路由协议

R1:

#
ospf 1
area 0.0.0.1
network 10.0.1.1 0.0.0.0
network 10.0.12.0 0.0.0.255
network 192.168.1.0 0.0.0.255

R2:

#
ospf 1
area 0.0.0.0
network 10.0.235.0 0.0.0.255
area 0.0.0.1
network 10.0.2.2 0.0.0.0
network 10.0.12.0 0.0.0.255

R3:

#
ospf 1
area 0.0.0.0
network 10.0.235.0 0.0.0.255
area 0.0.0.2
network 10.0.3.3 0.0.0.0
network 10.0.34.0 0.0.0.255

R4:

#
ospf 1
area 0.0.0.2
network 10.0.4.4 0.0.0.0
network 10.0.34.0 0.0.0.255
network 172.16.1.0 0.0.0.255

R5:

#
ospf 1
area 0.0.0.0
network 10.0.5.5 0.0.0.0
network 10.0.235.0 0.0.0.255

 

在R3上查看OSPF的DR与BDR的选举情况!

 路由基础之OSPF链路状态数据库_泛洪_02

可以看到,在R2、R3、R5组成的广播网络中,目前R5是DR,R2是BDR。

接下来查看每台路由器的路由表;

R1:

 路由基础之OSPF链路状态数据库_序列号_03

R2:

 路由基础之OSPF链路状态数据库_OSPF_04

R3:

 路由基础之OSPF链路状态数据库_链路_05

R4:

 路由基础之OSPF链路状态数据库_序列号_06

R5:

 路由基础之OSPF链路状态数据库_泛洪_07

可以看到,每台路由器都已获得了非直连网络的路由条目。接下来使用ping命令检测连通性;

 路由基础之OSPF链路状态数据库_链路状态数据库_08路由基础之OSPF链路状态数据库_泛洪_09

可以看到,各个网段之间的通信是正常的

区域1是普通区域,区域2是NSSA区域,区域1的R1和区域2的R4都需要引入Loopback 1接口所连接的外部网络路由。

在R1和R4上使用Route-Policy精确匹配Loopback 1接口的直连路由引入并引入OSPF进程。

R1:

#
ospf 1
import-route direct route-policy 10
area 0.0.0.1
network 10.0.1.1 0.0.0.0
network 10.0.12.0 0.0.0.255
network 192.168.1.0 0.0.0.255
#
route-policy 10 permit node 1
if-match acl 2000

R4:

#
ospf 1
description mcu
import-route direct route-policy 10
area 0.0.0.2
network 10.0.4.4 0.0.0.0
network 10.0.34.0 0.0.0.255
network 172.16.1.0 0.0.0.255
#
route-policy 10 permit node 1
if-match acl 2000

配置2完成后

在R5上查看由R1和R4引入的两条路由

 路由基础之OSPF链路状态数据库_序列号_10

可以看到,在R5的路由表中,这两条路由都显示为O_ASE,且优先级与开销也都相同,不同之处是这两条路由的下一跳,因为它们是由不同的路由器发送给R5的。

3:查看Type-1 LSA,Type-2 LSA,Type-3 LSA

在区域0的R5上查看LSDB。

 路由基础之OSPF链路状态数据库_泛洪_11

可以看到,R5的LSDB中共有5种LSA,它们分别是Router LSA(或称Type-1 LSA)。

Network LSA(或称Type-2 LSA)、Sum-Net LSA(或称Type-3 LSA,Network Summary LSA)、Sum-Asbr LSA(或称Type-4 LSA、ASBR Summary LSA)和External LSA(或称Type-5 LSA,AS External LSA)。

在R5上查看Router-ID为10.0.2.2产生的Router LSA的详细信息

 路由基础之OSPF链路状态数据库_序列号_12

下面解释一下显示信息中的部分参数的含义:

Type:

显示信息中,Type表示了LSA的类型,这里表示的是Router LSA。不同类型的LSA的作用和泛洪区域范围是不相同的。Router LSA描述了路由器的直连链路或接口,泛洪范围为所在区域的内部,以使本区域的其他路由器了解其直连链路或接口的状态信息;

Ls id:

对于Router LSA,Ls id就是产生该Router LSA的路由器的Router-ID。

Adv rtr:

Adv rtr描述了LSA是由哪台路由器产生的。对于Router LSA来讲,Adv rtr就是产生该Router LSA的路由器的Router-ID。

Seq#:

这一条LSA都会维护一个Seq#(序列号),产生这条LSA的路由器默认会过30s的周期泛洪这条LSA,每次泛洪时,序列号就加1,LSA的序列号越大,表明这条LSA越新。

Chksum:

chksum(校验和)用来校验LSA的完整性。所有的LSA都会保存在路由器的LSDB中,每5min会计算一次。如果路由器收到了同一条LSA,且序列号相同,则会比较它们的校验和,校验和越大就被认为相应的LSA越新。

Ls age:

Ls age是指LSA的老化时间,用来表示LSA已经存活了多长时间,最大值为3600s。当一台路由器产生一条LSA的时候,路由器会将LSA的老化时间设置为0。LSA在产生之后,无论是停留在路由器的LSDB内,还是在传递过程之中,老化时间都会不断增加,为了防止因LSA的过期而造成路由回馈,路由器会每隔30min泛洪自己产生的LSA。若序列号与校验和的比较都不能确定出最新的LSA时,则会比较老化时间。

在LSDB中,如果老化时间相差大于15min以上,则Ls age的值越小,说明LSA越新,如果相差15min内,则认为两条LSA是一样的。

在上面的显示信息中,Link count以上的参数信息通常被称为LSA头部信息,Link count及以下部分为具体的链路描述信息,Link count标识了这条LSA描述的链路信息的数量。对于P-2-P链路类型,Link ID是指链路上邻居接口的IP地址;对于TranNet链路类型,Link ID是指DR接口的IP地址。Data是指自身接口的IP地址,Link Type是指接口的链路类型,Metric是指路由器自己到达这条链路的Cost值,需要说明的是,OSPF协议会把Broadcast和NBMA这两种具有多路访问能力的网络都认为是TransNet网络。

从上得知,R2的Router LSA描述了自己连接到了某个TransNet网络,网络的DR接口的IP地址为10.0.235.5(R5),自己使用10.0.235.2连接到该网络中,且到达这个网络的Cost值为1。

Network LSA是由DR产生的,它的主要作用是描述TransNet网络的掩码信息和连接到TransNet网络的路由的路由器的信息。在多路访问网络中,每台路由器都产生Network LSA是没有必要的,因为这会导致Network LSA的重复。

R5是TransNet网络的DR,在R5上查看它产生和发送的Network LSA的详细信息。

 路由基础之OSPF链路状态数据库_OSPF_13

可以看到,这条Network LSA说明了TransNet网络的掩码为255.255.255.0,连接到这个TransNet网络的路由器有10.0.5.5(R5)、10.0.3.3(R3)。Network LSA中没有携带路径的开销,原因是Router LSA已经描述了自己到TransNet网络的Cost值。

在R2、R3、R5上查看区域0的LSDB。

 路由基础之OSPF链路状态数据库_泛洪_14路由基础之OSPF链路状态数据库_泛洪_15路由基础之OSPF链路状态数据库_泛洪_16

可以发现,R2、R3、R5的LSDB中区域0的Router LSA和Network LSA是完全一样的。

Router LSA和Network LSA可以完全描述本区域的网络拓扑,但这些LSA不能泛洪到其他区域,当OSPF网络包含多个区域时,通过Router LSA和Network LSA就无法进行区域间路由的计算,区域间路由到达计算需要利用Sum-Net LSA来实现,ABR路由器会将自己相连的区域的Router  LSA和Network LSA转换为Sum-Net LSA,然后泛洪到其他区域。

R2同时连接了区域0和区域1,所以是一台ABR路由器。查看R2的LSDB。

 路由基础之OSPF链路状态数据库_链路状态数据库_17

可以看到,R2的区域0中有一条LinkState ID为10.0.12.0 的Sum-Net LSA,它的AdvRouter为10.0.2.2。网段10.0.12.0/24本是属于区域1的网络,现在被ABR路由器R2转换为Sum-Net LSA并泛洪到了区域0中。10.0.235.0/24本是属于区域0的网络,现在被ABR路由器R2转换为Sum-Net LSA并泛洪到了区域1中,实际上,Sum-Net LSA是ABR利用自己相连的区域的Router-LSA和Network-LSA来计算得到的路由信息的。

在R2上查看LinkState ID为10.0.12.1的这条Sum-Net LSA的详细信息。

 路由基础之OSPF链路状态数据库_链路_18

可以看到,这条LSA的Type为Sum-Net,Ls id表明了目的网络地址为10.0.12.0,Net mask表明了目的网络的掩码为255.255.255.0,metric表明了ABR路由器R2去往目的网络的Cost值为1。

在R5上查看LSDB,并查看路由表中关于10.0.12.0/24的路由信息

 路由基础之OSPF链路状态数据库_链路_19

可以看到,R5的LSDB中存在10.0.12.0这条Sum-Net LSA,R5的路由表中关于10.0.12.0/24这条路由信息表明R5在去往10.0.12.0/24的Cost为2,R5通过这条Sum-Net LSA得知网络中存在10.0.12.0/24网段,这个网段的AdvRouter为10.0.2.2(R2),R2有已到达10.0.12.0/24的Cost为1,R5和R2同属于区域0,所以R5可以通过Router LSA和Network LSA计算出自己到R2的Cost为1,因此,R5可以计算出自己到10.0.12.0/24的Cost值为1+1=2。

区域间的路由是根据Sum-Net LSA并结合Router LSA及Network-LSA计算出来的,对于某个区域的一台OSPF路由器来说,它无需了解其他区域的链路状态信息,但可以通过Sum-Net LSA并结合Router-LSA及Network-LSA及计算出区域间路由,计算区域间路由时,采用的不再是链路状态算法,而是距离矢量算法。

在R2上查看LinkState ID为10.0.34.0/24这条LSA的信息。

 路由基础之OSPF链路状态数据库_泛洪_20

可以看到,10.0.34.0/24是属于区域2的网络,ABR路由器R3将关于10.0.34.0/24的路由信息以Sum-Net LSA的方式通告进了区域0,Cost为1,然后,ABR路由器R2又继续将此信息以Sum-Net LSA的方式通告进了区域0。

对于ABR来说,如果在自己相连的某个区域的LSDB中存在某条Sum-Net LSA,并且这Sum-Net LSA的AdvRouter不是自己的Router-ID时,就会将这条Sum-Net LSA的AdvRouter修改为自己的Router-ID,并重新计算自己到达这条Sum-Net LSA的Cost值,然后将泛洪到与自己相连的其他区域中。

4:查看Type-4 LSA和Type-5 LSA

路由器可以通过Router LSA和Network LSA计算区域内的路由,可以通过Sum-Net LSA并结合Router LSA和Network LSA计算区域间的路由,可以通过Sum-Asbr LSA和External LSA计算AS外部的路由。

R1的Loopback 1是外部路由,被ASBR路由器R1引入到了OSPF网络中,查看R1的LSDB

 路由基础之OSPF链路状态数据库_链路状态数据库_21

R1的LSDB中存在一条Type为External,LinkState ID为192.168.1.0,AdvRouter为10.0.1.1的LSA,在R1上查看这条LSA的其他信息。

 路由基础之OSPF链路状态数据库_链路_22

可以看到,这条LSA的Type是External,AdvRouter为10.0.1.1(R1),这条LSA实际上是一条目的网络为192.168.1.0/24的AS外部路由,显示信息中的E Type(External Type)的值为2。

External LSA可以在整个AS内部泛洪(但不能泛洪到Stub区域,Totally Stub区域,NSSA区域和Totally NSSA区域中),在泛洪过程中其各个参数不会改变,查看R2,R3,R4,R5的LSDB中是否也存在这条LSA。

在R5上使用display ospf abr-asbr命令查看到达ABR和ASBR的Cost值

 路由基础之OSPF链路状态数据库_OSPF_23

可以看到,从R5到达ABR路由的R2的Cost值为1,从R5到达ASBR路由器R1的Cost值为2,由此可见,R5其实是通过Router LSA和Network LSA先计算出到达ABR路由器R2的Cost值,然后加上Sum-Asbr LSA所表示的从ABR的路由器R2到达ASBR路由器R1的Cost值

[R1]ospf 
[R1-ospf-1]un im
[R1-ospf-1]un import-route dir
[R1-ospf-1]un import-route direct

在R5上查看LSDB

 路由基础之OSPF链路状态数据库_泛洪_24

5:查看Type-7 LSA

NSSA区域是不允许External LSA存在的,但NSSA区域允许通过import-route命令引入外部路由,那么如何来描述在NSSA区域中的AS外部路由呢?NSSA区域引入的外部路由不能以External LSA的形式出现,取而代之的是使用NSSA LSA来描述NSSA区域中的AS外部路由,且NSSA LSA只能出现在NSSA区域中。NSSA LSA由NSSA区域的NSSA ASBR产生。

R4为NSSA区域的ASBR,查看R4的LSDB

 路由基础之OSPF链路状态数据库_链路状态数据库_25

可以看到,R4为外部路由172.16.1.0产生了相应的NSSA LSA。在R4上查看这条LSA的详细信息;

 路由基础之OSPF链路状态数据库_OSPF_26

可以注意到,NSSA LSA的参数信息基本上和External LSA相同。

NSSA LSA是特殊类型的LSA,只会出现在NSSA区域中,不能泛洪到其他任何区域,那么其他区域的路由器又是如何计算去往NSSA LSA所表示的外部网络的路由呢?

原来,NSSA区域的ABR会将NSSA LSA转换为External LSA,并泛洪到其他区域。

R3为NSSA区域的ABR路由器,在R3上查看LSDB信息。

 路由基础之OSPF链路状态数据库_序列号_27

可以看到,由10.0.4.4产生的NSSA LSA被R3转换成了 External LSA,并泛洪到其他区域。

备注:如有错误,请谅解!

此文章为本人学习笔记,仅供参考!如有重复!!!请联系本人!