OSPF定义了不同类型的LSA,每种类型承载着不同的网络拓扑信息。帮助路由器建立完整的拓扑视图,从而实现高效的路由计算和数据传输。
今天就给你来一篇超实用的讲解干货,运用实际案例给你说明白!
在正式讲解之前,先说明一下今天使用的讲解环境哈:
· R1、R2、R3、R4四台路由器运行OSPF。
· 设备接口互联IP如图所示,都是192.168.0.0/16开头的地址段。
· 所有设备配置Loopback0接口,IP地址为x.x.x.x/32,x为设备编号。但仅在R1及R2上network loopback0接口。
· 所有设备的OSPF RouterID均使用Loopback0接口的IP地址,也就是x.x.x.x
· 在R1、R2、R3所处的LAN中,将R3的GE0/0/0口优先级调高,使之成为DR
01、LSA类型1-路由器LSA(Router SLA)
每一台运行OSPF的路由器均会产生1类LSA,1类LSA怎么理解?
其实很简单,就是每台路由器描述一下自己"家门口的状况",并且只会告诉给"全村的人"(本区域内泛洪)。
1类LSA主要的功能有以下两点:
1.描述路由器的特殊角色,如Virtual-link、ABR、ASBR
这是通过1类LSA中相关的V、B、E位的置1来体现的,例如如果本台设备是ABR,那么它产生的1类LSA中B位会置1。
2.描述本路由器在某个区域内部的直连链路(接口)及接口COST值
例如上图中,所有OSPF路由器都会产生1类LSA,并且在本区域内泛洪。我们以R1举例,它会产生一个类型1的LSA,那么在这个LSA1中,包含两个链路的描述,一个用于描述Loopback接口以及接口的COST值,另一个是描述GE0/0/0接口以及COST值。
这个1类LSA会在area1内泛洪。
我们首先来看一下R1的LSDB:
[R1] display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 527 48 80000005 1
Router 1.1.1.1 1.1.1.1 562 48 80000006 1
Router 3.3.3.3 3.3.3.3 775 36 80000007 1
Network 192.168.123.3 3.3.3.3 816 36 80000003 0
Sum-Net 192.168.34.0 3.3.3.3 771 28 80000001 48
上面就是R1的LSDB,实际上在area1内,OSPF路由器关于area1的LSDB都是统一的。在上面的lSDB中我们观察到了1、2、3类LSA。重点来看一下R1自己产生的1类LSA:
这就是1类LSA, R2在Area1中的1类LSA大体上类似,那么R3泛洪的1类LSA是如何?
我们来总结一下,OSPF 1类LSA在描述不同链路类型的时候,Link ID及Link Data字段的内容有不同:
02、LSA类型2-网络LSA(Network LSA)
在多路访问型MA网络中(例如以太网,或者帧中继网络),会选举DR、BDR,而所有的Drother都只能和DR及BDR建立邻接关系,Drother也就是非DR、BDR路由器之间不会建立全毗邻的OSPF邻接关系。
从某种层面上说,DR实际上代表了这个MA网络,在本区域内泛洪2类LSA,来呈现该MA网络中的所有路由器。
因此2类LSA仅存在于有MA网络的area中,并且由DR发送,用来描述这个MA网络中的所有路由器(的Router-ID)。
在上例中,R3的GE0/0/0口是123.0网络的DR,因此R1、R2都只和R3建立全毗邻的邻接关系。
这时候R3就成了这个MA网络的代表者,其发送2类LSA,该LSA包含的内容如图,详细信息见下,注意该2类LSA也只是在area1内泛洪。
总结一下:
· 2类LSA,也就是网络LSA,由DR产生,描述其在该MA网络上连接的所有路由器的RouterID(包括DR自己)以及该MA网络的掩码。
· 2类LSA只在本区域Area内洪泛,不允许跨越ABR。而且只有在MA网络才会出现。
· 2类LSA中没有COST字段(因此需借助1类LSA来进行SPF算法)。
· 得益于1、2类LSA,OSPF在一个区域内的路由计算就没有问题了。
03、LSA类型3-网络汇总LSA (Network Summary LSA)
前两类LSA解决了区域内路由计算的问题,那么区域间呢?如果路由器需要访问其他区域呢?
这时就需要3类LSA。
3类LSA是网络汇总LSA,这里的"汇总"二字,其实翻译为"归纳"更贴切,它和路由汇总是完全不同的概念。
由于ABR同时属于两个以上的区域(其中必须有骨干区域),它知道这些区域的1、2类LSA,那么就能做件事:
将某个区域的1、2类LSA,做个归纳,然后为其他区域生成3类LSA并泛洪到其他区域中,如此一来,区域间的路由计算就没问题了。
因此3类LSA,由ABR产生:
上图中,R3将area0内的LSA1做了归纳,然后为area1注入LSA3,这个LSA3实际上是描述的192.168.34.0/24这个网段,以及cost值,当然,这个cost值实则为R3的Serial4/0/0口的接口cost。
上图是R3将area1内的网络信息通过LSA3注入到了area0中,其中包含三个网段信息,分别是192.168.123.0/24、1.1.1.1/32、2.2.2.2/32。那么这样一来R4就能进行计算,得出三条路由。
来看一下R3的LSDB
再更详细点的来查看一下R3产生的3类LSA
以上就是R1在area0及area1中产生的3类LSA。事实上3类LSA由ABR就是将某个区域的子网信息通告给其他区域。
往更深的角度思考,其实OSPF在area之间的3类LSA传递很像距离矢量路由协议的行为。
04、LSA类型4-ASBR汇总LSA (ASBR Summary LSA)
为了讲解LSA4及LSA5,我们需要将配置做点小变更。在R4上,我们开设一个新的Loopback接口,配置一个IP地址,子网位44.44.44.0/24,现在我们使用import-route的方式,将44.44.44.0/24的直连路由重发布进OSPF。
然后继续我们的讲解:
4类LSA是一个指向ASBR的LSA,由该ASBR所在的area中的ABR产生(这点要格外留意)。
ASBR作为域边界路由器,将外部的路由通过重发布的方式注入了OSPF域,这些外部路由在OSPF中进行传递(这些外部路由是以5类LSA的形式在域内传播),而我们OSPF内部的路由器如果想前往这些外部网段,则需要同时具备两个条件:
1.知道外部的路由(这通过重发布的动作,已经完成了注入,借助5类LSA完成传播)
2.知道完成这个重分发动作的ASBR的位置
也就是说,我们在围城里,想要去围城外的某个地方,需具备两个条件,1是你要知道外头有什么,2是你要知道城门在哪里,所以5类LSA告诉你外头有啥,4类LSA告诉你城门是谁。
关键在于第二点。
与ASBR在同一区域的区域内部路由器(例如本实验中的R3),能通过ASBR(R4)产生的1类LSA知道该ASBR的位置(1类LSA中E位=1,所以与ASBR同区域的路由器都知道),但是问题来了,1类LSA的泛洪范围是本区域内,那么该区域外的路由器(如area1中的R1、R2),如何得知这台ASBR的位置呢?
那么就需要借助4类LSA了。
因此4类LSA由ABR产生,用来告诉与ASBR不在同一个区域内的其他OSPF Router关于 ASBR的信息。
上图中R4作为ASBR,做了路由import,将直连路由4.4.4.4/32引入了OSPF。
这些路由通过5类LSA的形式在OSPF Domain里扩散。但是4.4.4.4/32的路由要真正加载进OSPF路由表,还需要一个重要因素,那就是他们得知道注入这条外部路由的ASBR在哪儿。
我们已经说了,与ASBR R4同处一个area的R3已经通过LSA1知道了ASBR,但是area1内的路由器却并不知道,因为R4产生的1类LSA只能够在area0内泛洪。
在这个时候,R3作为ABR,就扮演一个重要作用,它自己得知ASBR的位置后,会向area1注入4类LSA,用于描述ASBR。
这样一来area1内的R1及R2就既通过LSA5学习到了路由4.4.4.4/32,又通过LSA4了解到了ASBR的位置,因此这条外部路由才能够被加载进他们的路由表中。
我们在R1上查看一下这个4类LSA:
05、LSA类型5-AS外部LSA (AS External LSA)
R4此刻已经是一台ASBR了,因为它将外部路由44.44.44.0/24通过import-route的方式注入到了OSPF中,这条外部路由实际上是通过LSA5在整个OSPF domain内泛洪。
06、LSA类型7:NSSA外部LSA (NSSA External LSA)
7类LSA是一种非常特殊的LSA,要注意的是这种LSA作为一种描述外部路由的LSA它只能被在NSSA中进行泛洪,不能跨越NSSA进入骨干区域0
特殊区域NSSA会阻挡从骨干区域area0中过来的5类LSA进入,同时允许NSSA本地始发外部路由,这些外部路由以7类LSA的形式在本地NSSA中进行泛洪,当这些7类LSA到达NSSA的ABR时,由该ABR负责将这些7类LSA转换成5类LSA,方可注入骨干区域。
留意一下上图,我们将配置做一点变更:
将area1配置为NSSA。然后在R1上再创建一个Loopback1,配置一个11.11.11.0/24的子网IP,然后将这个直连路由import到OSPF中:
这样一来,这条外部路由由于是在特殊区域NSSA中被注入的,那么它是以LSA类型7注入进来,并在NSSA area1内泛洪的。
在R2上做一下查看:
我们看到area 1中,已经出现了一条NSSA类型的LSA,这就是7类LSA。
再来看一下详细内容:
我们看到,其实7类LSA在报文格式上,与5类LSA没有明显的差别。两者都用于描述外部路由。
但是7类LSA只能够存在于NSSA中,不能被泛洪到常规区域中。
因此在本实验中,R3也能够从area1中收到R1产生的7类LSA,并且在路由表中加载如下路由:
但是7类LSA是不能进入area0的,那么area0内的用户如何能够学习到这条外部路由呢?
R3作为一台ABR,就发挥了很重要的作用,它会做一个"7转5"的动作,也就是讲7类LSA转换成5类LSA,然后在泛洪到area0中,从而泛洪到其他常规区域中:
我们可以在R4上再做查看:
我们看到,11.11.11.0这条外部SLA,到了area0里的R4上,就变成了5类LSA了,并且advrouter,也就是通告者是R3。