晚上好,我的网工朋友。
OSPF定义了不同类型的LSA,每种类型承载着不同的网络拓扑信息。帮助路由器建立完整的拓扑视图,从而实现高效的路由计算和数据传输。
OSPF就像是一套智能导航系统,通过各类LSA帮助我们找到通往目的地的最短路径。
很多朋友说LSA是OSPF里的重点难点,总是搞不明白,今天就给你来一篇超实用的讲解干货,运用实际案例给你说明白!
今日文章阅读福利:《OSPF网络设计解决方案》
作为网络基础,了解它是你入门精进的第一步。发送暗号“方案”,即可获取此份OSPF经典读物。
·?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
每一台运行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 lsdbOSPF Process 1 with Router ID 1.1.1.1Link State DatabaseArea: 0.0.0.1Type LinkState ID AdvRouter Age Len Sequence MetricRouter 2.2.2.2 2.2.2.2 527 48 80000005 1Router 1.1.1.1 1.1.1.1 562 48 80000006 1Router 3.3.3.3 3.3.3.3 775 36 80000007 1Network 192.168.123.3 3.3.3.3 816 36 80000003 0Sum-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字段的内容有不同:
在多路访问型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在一个区域内的路由计算就没有问题了。
前两类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传递很像距离矢量路由协议的行为。
为了讲解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:
R4此刻已经是一台ASBR了,因为它将外部路由44.44.44.0/24通过import-route的方式注入到了OSPF中,这条外部路由实际上是通过LSA5在整个OSPF domain内泛洪。
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。
整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部