LSA的前三种类型详解
一:LSA的介绍
在我的上一篇博客中,我们粗略地接触了一下LSA,在本篇博客里,我们就来详细地介绍一下LSA。还是与上一篇一样,我们同样还是先从理论部分介绍LSA,再从实验部分看看在OSPF网络里是如何配置及查看LSA的相关信息的。
LSA,全称是Link-state advertisement,中文为链路状态通告。LSA描述了所有的链路,接口和邻居等链路状态信息,OSPF路由协议对所有路由信息的描述,都是封装在链路状态通告LSA中发送出去的。总的来说,LSA包括了两部分内容:OSPF网络里路由器的路由信息及拓扑信息。
LSA具体可划分为11种,在本篇博客中,我们将详细介绍前三种LSA,其他种类的LSA留待以后再介绍。
二:第一种LSA:Router LSA
每一台运行了OSPF的路由器,都会产生一个Router LSA。Router LSA只在该路由器的Area内部洪泛。对于ABR这种跨越了多个区域的路由器,ABR会为每个Area产生一个不同的Router LSA。ABR跨越了几个Area,就会产生多少个Router LSA。(忘记了ABR是什么的朋友可以回顾一下上篇博文)
Router LSA的主要内容是:产生这条Router LSA的路由器连接了几条Link,每条Link的cost是多少。Router LSA的作用:例如,R1在area 0内部,它产生了R1 Router LSA。当Area 0内别的路由器收到R1 Router LSA,就能知道R1连接了哪些Link,并且知道如何到达这些Link,以及到达它们所需要的cost。
同一台路由器默认每隔一段时间便会产生并泛洪一个LSA(通常这个时间为1 hour,称为老化时间),用以更新OSPF网络的拓扑和路由信息。用seq#(序列号)来区分每次的LSA,当发送一个新的LSA时,这个新的LSA的seq#值便是前一个LSA的seq#值加1,即seq#(new LSA)=seq#(old LSA)+1。其他种类的LSA的seq#值计算方法相同,便不再赘述。
下面总结一下Router LSA的特性:
传播区域 | 通告者(发送LSA的路由器) | LSA内容 |
本区域(该路由器所在的OSPF区域) | 所有路由器 | 拓扑信息和路由条目 |
三:第二种LSA:Network LSA
Network LSA由DR(Designated Router)产生,它也只在Area内部洪泛。Network LSA记录了DR所在的子网有多少台OSPF路由器(必须是与DR建立了邻接关系的路由器),以及这些路由器的Router ID。
在同一个子网中,可能同时连接了N台OSPF路由器,它们需要同步数据库。如果每两台之间都去建立邻接关系,会增加网路以及路由器CPU的额外负担。因此,这N台路由器会选出一个DR,作为代言人。每台路由器都与DR建立邻接关系,通过DR同步数据库。
但是,这样做会产生一个问题:例如,R1是DR,R2和R3都不是DR,R2和R3都是通过R1同步数据库。那么,R2计算到达R3的路径时,会把R1作为“下一站”,而不会认为R2-R3是直接连接的;同样,R3计算到达R2的路径,也会把R1作为“下一站”。为了解决这个问题,DR会产生一个Network LSA,它描述:该子网中有N台路由器,并记录下每台路由器的Router ID。当R2收到了这个Network LSA,看见名单中有R3,就会在计算路由时,直接把R3看作“下一站”。
下面总结一下Network LSA的特性:
传播区域 | 通告者(发送LSA的路由器) | LSA内容 |
本区域(DR所在的OSPF区域) | DR | 拓扑信息和掩码 |
四:第三种LSA:Network Summary LSA
Network Summary LSA由ABR(Area Border Router,域间路由器)产生。它是用来告诉一个Area内部的路由器,如何到达另一个Area内的某条路径。
例如,OSPF网络有3个区域,一个骨干区域Area 0,两个非骨干区域Area 1和Area 2,如图:
R2是一台ABR,R1-R2属于Area 1,R2-R3属于Area 0。R1的Router LSA只在Area 1内部洪泛,因此R3无法知道Link R1-R2。于是R2会产生一个Network Summary LSA来描述Link R1-R2。它在Area 0内部洪泛,当R3收到这条Network Summary LSA,就能知道到达Link R1-R2的路径。
下面总结一下Network Summary LSA的特性:
传播区域 | 通告者(发送LSA的路由器) | LSA内容 |
除了本区域之外的所有OSPF区域 | ABR | 域间路由 |
五:实验部分
讲完了理论基础,我们来看看在实际操作中,是如何做的。首先,搭建一个如下网络拓扑结构,并将路由器的ip地址配置如下:(当然你也可以配置自己比较容易记的ip,操作起来会比较顺手)
具体配置为(以R1为例):
R1#conf t //进入配置环境
R1(config)#int s1/0 //配置s1/0端口(我们这里使用的是串行连接,当然你也可以依自己给路由器的配置情况去选择使用的端口)
R1(config-if)#ip add 192.168.1.1 255.255.255.0 //将路由器的ip配置为192.168.1.1,注意后面要加上掩码
R1(config-if)#no sh //一直开启该端口
R1(config-if)#int lo 0 //配置路由器的环回口,可用于测试
R1(config-if)#ip add 81.1.1.1 255.255.255.0
R1(config-if)#exit
R1(config)#router ospf 1 //给路由器分配一个ospf进程,进程id为1
R1(config-router)#router-id 1.1.1.1 //配置路由器的id为1.1.1.1
R1(config-router)#network 192.168.1.0 0.0.0.255 a 0 //宣告s1/0端口的网段进入ospf网络,区域为Area 0
R1(config-router)#network 81.1.1.1 0.0.0.255 a 0 //宣告R1的环回口进入ospf网络,区域也是Area 0
至此,R1的配置完成,R2的配置请参考如上配置方法,依照上图给的拓扑结构配置。
用show ip ospf database命令查看LSA的具体情况:
我们可以看到链路状态数据库里有两条LSA,通告者(ADV Router)分别为R1和R2。
我们接着再看看第二类LSA,Network LSA的情况。将网络的拓扑结构拓展如下:
给新增的f0/0端口分配网段192.168.2.0,依照上面给的R1的配置方法将f0/0端口配置如图(注意要宣告进入Area 0)。
我们再次查看数据库,发现多了Network LSA的信息:
可以看出第二类LSA的通告者是R1,我们前面说过,Network LSA的通告者是DR,那么R1是不是网段192.168.2.0里的DR呢?我们可以查看一下:
我们可以在R2里用show ip ospf neighbor查看一下R2的邻居:
可以看到,R2有一个邻居R1,而R1的State属性的值正是DR。
最后,我们来看一下第三类LSA,Network Summary LSA。将拓扑结构继续拓展如图:
注意在配置R3和R4的时候要分别将其网段192.168.3.0和192.168.4.0宣告为Area 1和Area 2,不能继续宣告为Area 0(不然就不是分区域了,都是Area 0 区域里内部路由器了)。
我们查看一下R3的数据库。
可以看到R3的数据库里有Router LSA(第一类LSA)和Network Summary LSA(第二类LSA)。Router LSA有两条,其通告者分别是R2和R3。而Network Summary LSA有6条,其通告者全为R2(Area 1的域间路由器)。
Reference:
维基百科OSPL介绍:https://zh.wikipedia.org/wiki/%E5%BC%80%E6%94%BE%E5%BC%8F%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E4%BC%98%E5%85%88