目录
LSA是详细的数据库信息,OSPF设备通过这些LSA来画拓扑和计算路由。每台设备在使能了OSPF并把相应接口宣告进了OSPF后,它都会为自己的接口信息产生相应的LSA。每种LSA的产生规则有所不同,并且作用也不同。在OSPF邻居关系建立好后,就要把自身拥有的LSA携带在LSU报文中通告给邻居,完成数据库的同步。所以LSU报文是用来承载LSA的。
一、6种LSA的简单介绍
1.1 1类LSA
1.1.1 1类LSA基础
- 名称:router
- 产生者:每台OSPF设备(路由器、交换机)在每个区域内产生一条1类LSA(有且只有一条,不管宣告在这个区域内的接口数量是多少,都是一条)
- 作用:每台路由器描述自己在本区域的路由信息和拓扑信息
- 传递范围:一个区域。设备在哪个区域内产生的,就只能在哪个区域内传递
- link type:链路类型,通过不同的链路类型来描述不同的拓扑信息、路由信息
1.1.2 1类LSA的报文格式:
LSA头部是所有类型的LSA都有的一部分。
ls age:每台设备刚产生这条LSA时,age=0,age最大为3600s。
ls type:即LSA的类型,为1代表1类LSA。
link state id:对于1类LSA,这里填充的是产生者的router id。
advertising router:产生者,谁产生的这条1类LSA,就填充谁的router id。
ls sequence number:序列号初始为0x80000001,该条LSA每产生一次,序列号就会加1,所以序列号越大代表这条LSA越新。所以设备可以通过序列号来判断一条LSA的新旧。
type:就是link type,链路类型,只有1类LSA有该字段。
metric:接口cost,参考带宽/实际带宽。参考带宽默认为100M,结果不足1则按1算。
link id和link data:不同链路类型的1类LSA,这两个字段的内容不同。
注意:当一条LSA的age达到3600s后,这条LSA就会老化,然后这条LSA就会被丢弃。为了防止它被丢弃,所以1800s更新一次。当设备的LSDB中它自己产生的1类LSA的age到了1800s后,设备就会重新生成该条1类LSA并泛洪给邻居。邻居收到了这条新的LSA后,就会丢弃那条旧的LSA,用这条新的LSA。假如不更新的话,到了3600s,设备就会丢弃该条LSA,这样就没有对应的拓扑信息和路由信息了。
1.1.3 1类LSA的链路类型(link type)
link type | 产生场景 | 作用 | link id | link data |
p2p | P2P/P2MP网络 | 描述该接口的拓扑信息 | 邻居的RID | 自己的接口IP |
stubnet | P2P/P2MP网络 loopback口 无邻居的MA网络 | 描述该接口的路由信息 | 网络号 | 掩码 |
transit | MA/NBMA网络 | 描述该接口下的拓扑信息 | 邻居的RID (伪节点的RID) | 自己的接口IP |
virtual | 虚链路(vlink) | 描述建立虚链路接口下的拓扑信息 | 邻居的RID | 自己的接口IP |
1.2 2类LSA
1.2.1 2类LSA基础
- 名称:network
- 产生者:DR(DR充当伪节点,产生2类LSA)
- 作用:描述DR接口下(伪节点周边)的路由和拓扑信息
- 范围:本区域
- metric:2类LSA无cost,按0计算
- 内容:路由信息(DR的接口IP、掩码)、拓扑信息(连接的设备)
1.2.2 2类LSA的报文格式
link state id:DR的接口IP
advertising router:DR的RID
network mask:掩码
attached router:连接的设备的RID(准确说是伪节点连接的设备)
什么是伪节点?
伪节点:在MA/NBMA网络中画拓扑的时候,要在MA/NBMA网络中间的位置虚拟出一台设备,叫伪节点。
因为伪节点不是一台真实的设备,所以由DR来充当伪节点,以伪节点的身份产生2类LSA来描述伪节点和哪些设备相连。(用DR的接口IP表示伪节点的身份/router id)
注意:只有MA/NBMA网络才会产生2类LSA。
1.3 3类LSA
1.3.1 3类LSA基础
- 名称:summary
- 产生者:ABR
- 作用:把本区域的路由信息传递到其他区域
- 范围:一个区域内
- metric:ABR到达目标网段的cost
- 内容:路由信息(网络号、掩码、cost)
- 防环机制:ABR从非骨干区域收到的3类LSA只接收不计算
1.3.2 3类LSA的报文格式
link state id:目标网段的网络号
advertising router:ABR的RID
network mask:掩码
metric:ABR到达目标网段的cost
注意:一条3类LSA只能携带一条路由信息。
1.4 4类LSA
1.4.1 4类LSA基础
- 名称:asbr-summary
- 产生者:ABR
- 作用:描述ASBR的位置信息
- 范围:同3类LSA一样,都是区域内传递
- metric:ABR到达ASBR的cost
- 内容:ASBR的router-id
1.4.2 4类LSA的报文格式
link state id:ASBR的RID
advertising router:ABR的RID
network mask:4类LSA中没有掩码,这个字段只在3类LSA中存在
1.5 5类LSA
1.5.1 5类LSA基础
- 名称:AS-external
- 产生者:ASBR
- 作用:传递OSPF的外部路由信息
- 范围:OSPF全网
- 路由优先级:150
- cost:ASBR到达目标网段的cost,默认为1。cost的计算方式有两种:type1(内部cost+外部cost)和type2(默认方式,只计算外部cost)
- FA地址:用来防止次优路径
1.5.2 5类LSA的报文格式
link state id:目标网段的网络号
advertising router:ASBR的RID
network mask:掩码
E:E=0,表示cost的计算方式为type1;E=1,表示cost的计算方式为type2
metric:cost
注意:一条5类LSA只能携带一条外部路由。
1.6 7类LSA
1.6.1 7类LSA基础
- 名称:nssa
- 产生者:ASBR
- 作用:传递OSPF的外部路由信息
- 范围:nssa/totally nssa区域
- 路由优先级:150
- cost:ASBR到达目标网段的cost,默认为1。cost的计算方式有两种:type1(内部cost+外部cost)和type2(默认方式,只计算外部cost)
- FA地址:用来防止次优路径
1.6.2 7类LSA的报文格式
二、6种LSA的产生场景
2.1 1类、2类LSA的产生场景
上图中RX的router-id为x.x.x.x,例如R1的router-id为1.1.1.1
每台设备在每个区域内都会产生1条1类LSA,也仅会产生1条。虽然R2的两个接口都宣告在了区域0中,但这两个接口向外发送的1类LSA是相同的,可以理解为R2产生了一条1类LSA来描述自己宣告在区域0中的接口,但R2把这条1类LSA复制成了两份,分别从g0/0/0口和s1/0/0口发送出去。
我们前面说过,2类LSA是在MA/NBMA网络中产生的,R1和R2之间是MA网络,会由DR充当伪节点产生一条2类LSA;R2和R3之间是P2P网络,不会产生2类LSA。
综上所述,目前R1/R2/R3区域0的数据库中都有3条1类LSA和1条2类LSA。(同区域的设备,链路状态数据库相同)
2.2 3类LSA的产生场景
此时,R3作为ABR(区域边界路由器),会将区域0中的路由信息转换为3类LSA,向区域1中传递;同时也会将区域1中的路由信息转换为3类LSA,向区域0中传递。由于1条3类LSA只能携带一条路由信息,所以R3会向区域0中产生1条3类LSA,向区域1中产生2条3类LSA。
所以一台设备只能画出本区域的拓扑,而且只能知道其他区域的路由信息。因为携带拓扑信息的1、2类LSA只在一个区域内传递,而1、2类LSA中的路由信息可以通过3类LSA的形式传递到其他区域。
2.3 4类、5类LSA的产生场景
4类LSA是为5类LSA服务的,有了5类LSA才会有4类LSA。当一台使能了OSPF设备将其他协议的路由引入到OSPF中时,做了“引入”动作的设备就成为了ASBR(自治系统边界路由器),就会产生5类LSA。
如上图所示,R4有一个loopback0口,地址是4.4.4.4/32。在IP路由表中可以看见4.4.4.4/32这条路由是通过直连路由协议学习到的。此时我们在R4上将直连路由引入到OSPF中,此时R4就会产生一条5类LSA,并在整个OSPF域传递。
注意:5类LSA不属于任何区域,所以不会在区域的LSDB中显示出来。
为什么上图中是2条5类LSA呢?
因为“引入”是相对路由表而言的,在R4的路由表中,34.1.1.0/24和4.4.4.4/32都是通过直连路由协议学到的。所以把直连路由引入到OSPF中,就引入了这两条路由。
注意:直连路由协议的优先级为0,cost为0。OSPF内部路由的优先级为10,OSPF外部路由的优先级为150。路由协议的优先级数值越小,优先级越高。
我们前面说过,描述拓扑信息的1类、2类LSA只在区域内传递。因为R1/R2和R4没有在一个区域内,所以R1和R2是不知道R4的位置信息的。R1和R4收到5类LSA后,只知道是R4产生的,可以不知道R4在哪里,但是访问4.4.4.4/32的时候只能先去找R4。所以此时就需要使用4类LSA来描述R4(ASBR)的位置信息了。
这条4类LSA由ABR——R3产生,因为R3和R4在同一个区域,所以R3知道R4的位置信息。
2.4 7类LSA的产生场景
OSPF的区域分为骨干区域和非骨干区域,非骨干区域又分为普通区域和特殊区域。
7类LSA是在NSSA/totally NSSA区域内产生的。这两种区域都属于特殊区域,特殊区域一共有4种。
- stub区域:不允许4/5类LSA进入;有1/2/3类LSA和默认的3类LSA
- totally stub区域:不允许3/4/5类LSA进入;有1/2类LSA和默认的3类LSA
- nssa区域:不允许4/5类LSA进入;有1/2/3类LSA和默认的7类LSA;可以引入外部路由,以7类LSA的形式引入
- totally nssa区域:不允许3/4/5类LSA进入;有1/2类LSA和默认的3/7类LSA;可以引入外部路由,以7类LSA的形式引入
假如我们将区域2设置成了NSSA区域,那么R3的LSDB中就会出现7类LSA。但7类LSA只能在NSSA/totally NSSA区域内存在,而且必须要转换为5类LSA后才能传递到其他区域中(骨干区域和普通区域)。
为什么R3区域2的LSDB中有3条7类LSA呢?
R4上引入了2条直连路由,所以有2条7类LSA。R3作为NSSA区域的ABR,会向NSSA区域产生一条默认的7类LSA,NSSA区域的其他设备可以通过这条默认7类LSA产生一条默认路由,从而可以访问5类LSA形式的外部路由。所以区域2中共有3条7类LSA。
可以看见R2的LSDB也存在4.4.4.4/32的路由信息,只不过是以5类LSA的形式存在的。