LSA及特殊区域
LSA概述
LSA(Link-State Advertisement,链路状态通告)用来承载链路状态信息,主要由LSA头部信息(LSA摘要)和链路状态组成。部分LSA只有LSA头部信息,无链路状态信息。
在ospf中主要是通过泛洪LSA、同步LSDB来学习路由,达到全网互通的。
泛洪:
把LSA向区域中的每条链路复制并通告的过程—————-每隔30min泛洪一次。
泛洪是个可靠的过程,有确认机制
显示确认 用LSAck对LSU报文中的的LSA做确认(发送包含LSA拷贝的数据包来确认,是信息级别的确认)确认收到内容了
隐式确认 DD报文序列号+1进行确认(仅仅是报文级别的确认)确认收到报文了LSDB同步:
每个LSA都要在LSU中通告给邻居,并且每个邻居都要确认,若没有收到邻居的确认,LSU在5s后重传LSDB数据库:存放LSA信息
命令:display ospf lsdb
LSA类型
类别 | 名称 | 描述 | 传播范围 |
---|---|---|---|
一类 | Router LSA | 每台OSPF路由器都会产生的LSA,描述该路由器所有OSPF直连接口的状况和Cost值,该LSA只能在接口所属区域内泛洪。 | 在产生此LSA的本区域传播 |
二类 | Network LSA | 由DR产生,描述该DR所接入的MA网络中所有与之形成邻接关系的路由器,其中包括了DR本身,该LSA只能在接口所属区域内泛洪。 | 在产生此LSA的本区域传播 |
三类 | Network Summary LSA | 由ABR产生,描述了到达某个区域的目标网段的路由。该类LSA主要用于区域间路由的传递。 | 在区域间传播(非 Totally Stub/Nass区域) |
四类 | ASBR Summary LSA | 由ABR产生,用于描述ASBR。ASBR汇总LSA相当于一条到达ASBR的“主机路由” | 在本区域内传播(非 特殊区域) |
五类 | AS External LSA | 由ASBR产生,用于描述本AS之外的外部路由。 | 在全区域传播(非 特殊区域) |
七类 | NSSA LSA | 由ASBR产生,用于描述本AS之外的外部路由。NSSA LSA仅仅在产生这个LSA的NSSA内泛洪,不能直接进入骨干区域。NSSA的ABR会将7类LSA转换为5类LSA注入到骨干区域。 | 在NSSA/Totally Nass区域传播 |
注意:
在广播型网络中,需要知道网络号,此网络号存在于2类LSA中(LS id与子网掩码做与运算)
P2P类型网络无2类LSA
2.补充3种LSA-----提供OSPF的扩展通用机制
Type-6: 组成员LSA(Group Membership LSA),这种LSAzaiMOSPF(组播扩展OSPF)中被使用
Type-9: 仅在接口所在的网段范围内泛洪(支持GR的Grace LSA就为其中的一种)
Type-10: 在区域内泛洪(用于支持TE的LSA就是其中的一种)
Type-11: 在AS内泛洪(目前没有应用)
LSA头部格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS age | Options | LS type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link State ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertising Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS checksum | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
LS age
LSA产生后所经过的时间,以秒为单位。无论LSA是在链路上传送,还是保存在LSDB中,其值都会在不停的增长。
- LS Age越大,LSA越老
- LS Age为max-即3600s时,删除LSA
Options
可选项:
E:允许Flood AS-External-LSAs
MC:转发IP组播报文
N/P:处理Type-7 LSAs
DC:处理按需链路
LS type
Type 1、2、3、4、5、7
Link State ID
与LSA中的LS Type和Advertising Router一起在路由域中描述一个LSA。
Advertising Router
产生此LSA的路由器的Router ID。
LS sequence number
LSA的序列号。其他路由器根据这个值可以判断哪个LSA是最新的。
- 具有最高序列号的,LSA越新
- 序列号是0x8000 0001 ~ 0x7FFF FFFF
- LSA每30min钟泛洪一次,序列号就加1
LS checksum
除了LS age外其它各域的校验和。
- 检验LSA的内容以及确定LSA是否是最新的
- 校验越大,LSA越新
length
LSA的总长度,包括LSA Header,以字节为单位。
不同类别的LSA对应的Link State ID和Advertisting Router是不同的
LS Type | Link State | Adv Router | |
---|---|---|---|
一类 | Router | 自己的Router-id | 自己的Router-id |
二类 | Network | DR的IP | DR的Router-id |
三类 | Network-Summary | 网络网段 | ABR的Router-id |
四类 | Asbr-Summary | ASBR的Router-id | ABR的Router-id |
五类 | AS-External | 外网网络网段 | ASBR的Router-id |
七类 | NSSA | 外网网络网段 | ASBR的Router-id |
LSA详解
Type-1 LSA
该LSA描述了路由器的直连接口状况和接口Cos他,同属于一个区域的接口共用一个Type-1 LSA描述,当路由器有多个接口属于不同区域时,它将为每个区域单独产生一个Type-1LSA,并且每个LSA只描述接入该区域的接口。
Type-1 LSA报文结构:
+-------------------------------+---------------+---------------+
| LS age | Options | 1 |
+-------------------------------+---------------+---------------+
| Link State ID |
+---------------------------------------------------------------+
| Advertising Router |
+---------------------------------------------------------------+
| LS sequence number |
+-------------------------------+-------------------------------+
| LS checksum | length |
+-------------------------------+-------------------------------+
| 0 |V|E|B| 0 | # links |
+---------------------------------------------------------------+
| Link ID |
+---------------------------------------------------------------+
| Link Data |
+---------------+---------------+-------------------------------+
| Type | # TOS | metric |
+---------------+---------------+-------------------------------+
| ... |
+---------------+---------------+-------------------------------+
| TOS | 0 | TOS metric |
+---------------+---------------+-------------------------------+
| Link ID |
+---------------------------------------------------------------+
| Link Data |
+---------------------------------------------------------------+
| ... |
V (Virtual Link) | 1比特 | 如果产生此LSA的路由器是虚连接的端点,则置为1。 |
---|---|---|
E (External) | 1比特 | 如果产生此LSA的路由器是ASBR,则置为1。stub区域不允许出现E比特位被设置为1的LSA。 |
B (Border) | 1比特 | 如果产生此LSA的路由器是ABR,则置为1。 |
1类LSA的链路状态信息主要由链路类型、Link ID、Link Data、Cost三个值来进行描述。
描述P2P型网络自身的邻居,以及广播型网络自身连着的伪节点
华为设备中Ospf默认认为LoopBack接口是只有一台主机的接口(即使配置Loopback为24位,但是Ospf在描述路由信息时描述的掩码还是32位,因为loopback接口在OSPF的网络类型为P2P,要想将掩码恢复到真实的24,就要将网络类型修改为广播或者NBMA)
P2P: 有ospf邻居,且网络类型为P2P与P2MP接口的链路类型
TransNet: 有ospf邻居,且网络类型为广播、NBMA接口的链路类型
StubNet: 接口被激活OSPF,但是没有任何OSPF邻居。此接口就是Stub类型
一般Loopback接口的链路类型和连接终端接口的链路类型为此
Vitrual Link:描述OSPF的虚链路的链路类型(只有配置了V-link才会产生)
OSPF伪节点
在广播型链路中进行OSPF计算时,将广播型链路在算法上抽象为一台路由器(即将这个二层交换机或者链路抽象为一台路由器),抽象出来的这台路由器就称为伪节点
伪节点:在实际中不存在,不是路由器(没运行Ospf协议)。是由算法抽象出来的路由器,在算法中存在。
实节点:在实际中存在,是路由器。在算法中是也存在是路由器。
在进行路由信息描述时,实节点不需要描述与邻居的路由信息,只需要描述与伪节点的路由信息(伪节点的Ruter-ID是此链路上DR的接口IP地址),减少大量冗余重复的描述
注意:在进行Cost计算时,伪节点到实节点的开销为0
Type-2 LSA
在MA网络中,OSPF会选举DR和BDR,所有的DROther路由器都只与DR和BDR建立邻接关系,DROther路由器之间不会建立全毗邻的OSPF邻接关系。DR会在本区域内泛洪Type-2 LSA,来列举出接入该MA网络的所有路由器的Router-ID(包括DR本身),以及这个网络的子网掩码。
因此Type-2 LSA只存在于拥有MA网络的区域中,gaiLSAy欧DR产生。
Type-2 LSA报文结构:
+-------------------------------+---------------+---------------+
| LS age | Options | 2 |
+-------------------------------+---------------+---------------+
| Link State ID |
+---------------------------------------------------------------+
| Advertising Router |
+---------------------------------------------------------------+
| LS sequence number |
+-------------------------------+-------------------------------+
| LS checksum | length |
+-------------------------------+-------------------------------+
| Network Mask |
+---------------------------------------------------------------+
| Attached Router |
+---------------------------------------------------------------+
| ... |
字段 | 长度 | 含义 |
---|---|---|
Link State ID | 32比特 | DR的接口IP地址。 |
Network Mask(网络掩码) | 32比特 | 该广播网或NBMA网络地址的掩码。 |
Attached Router(相连的路由器的Router ID) | 32比特 | 连接在同一个网络上的所有路由器的Router ID,也包括DR的Router ID。 |
Type-3 LSA
Type-3 LSA报文结构:
+-------------------------------+---------------+---------------+
| LS age | Options | 3 or 4 |
+-------------------------------+---------------+---------------+
| Link State ID |
+---------------------------------------------------------------+
| Advertising Router |
+---------------------------------------------------------------+
| LS sequence number |
+-------------------------------+-------------------------------+
| LS checksum | length |
+-------------------------------+-------------------------------+
| Network Mask |
+---------------+-----------------------------------------------+
| 0 | metric |
+---------------+-----------------------------------------------+
| TOS | TOS metric |
+---------------+-----------------------------------------------+
| ... |
由ABR将自身直连区域的区域内路由转化成其他直连区域的3类LSA,完成区域间路由的计算
汇总网络LSA,用于描述区域间的路由(描述ABR所知道的路由以及开销,并没有携带任何关于邻居的拓扑结构,所以携带的是纯粹的路由信息)
注意:每经过一次ABR,都会更改Adv rtr字段和开销字段,(即没经过一个ABR,都会重新成3类LSA)
每有1条二类LSA或Stub类型的一类LSA,都会产生1条三类LSA
Type-4 LSA
对于与ASBR所在区域不同的设备,当设备收到5类LSA后,由于ASBR无法让其知道自己的信息,去往ASBR路由不可达。此时就需要通过ABR将5类LSA转为4类LSA再发送给设备,描述如何到达ASBR
Type-5 LSA
Type-5 LSA报文结构:
+-------------------------------+---------------+---------------+
| LS age | Options | 5 |
+-------------------------------+---------------+---------------+
| Link State ID |
+---------------------------------------------------------------+
| Advertising Router |
+---------------------------------------------------------------+
| LS sequence number |
+-------------------------------+-------------------------------+
| LS checksum | length |
+-------------------------------+-------------------------------+
| Network Mask |
+-+-------------+-----------------------------------------------+
|E| 0 | metric |
+-+-------------+-----------------------------------------------+
| Forwarding address |
+---------------------------------------------------------------+
| External Route Tag |
+-+-------------+-----------------------------------------------+
|E| TOS | TOS metric |
+-+-------------+-----------------------------------------------+
| Forwarding address |
+---------------------------------------------------------------+
| External Route Tag |
+---------------------------------------------------------------+
| ... |
Type-7 LSA
Type-7 LSA也就是非完全末梢区域外部LSA,这是一种特殊的LSA,也是用来描述OSPF外部路由,其报文格式与Type-5 LSA一致。
Type-7 LSA只能在NSSA内泛洪,并不能进入Area0.
OSPF LSDB的交互原则:
互相交互自身没有的LSA,以及使用新的LSA 替换掉旧的LSA。
如何判断一个唯一的LSA呢?
使用LSA的三要素:
1、LSA的类型 Type
2、LSA的链路状态ID Link State ID
3、LSA的通告者 Adv Router
如何判断LSA的新旧状态呢?
如何判断LSA的新旧状态呢?
1、首先比较的就是LSA的序列号,初始值为0x80000001,每次OSPF更新的时候都会+1。
2、当序列号相同的时候,将会比较校验和,越大越优。
3、当校验和相同,将会比较LSA的age时间:
①首先age等于3600s的LSA,用于删除一条LSA。
②如果两条LSA的age时间相差大于900s,将会选择age数值小的LSA。
③如果两条LSA的age时间相差小于900s,将会认为相同,保持原有不变。
OSPF的更新机制:
触发更新:当链路状态发生改变之后OSPF将会触发更新,比如COST变了,网段变了掩码变了,取消宣告。
周期更新:每个OSPF路由器自身产生的LSA,都会每隔30分钟周期更新一次。
OSPF的老化机制:
OSPF路由器每产生一条LSA,都会存在一个age时间为3600s,初始值为1,当AGE时间递增到3600s之后,将会认为LSA老化,从自身LSDB中删除此LSA。
OSPF LSA的删除机制:
当OSPF需要删除一条LSA的时候,将会把LSA的age时间变为3600s,当其他路由器接收到这条LSA之后,将会把自身LSDB中对应的LSA删除掉
OSPF区域类型
骨干区域( Backbone Area)
骨干区域是Area 0,是整个OSPF域的中心枢纽。一个OSPF域有且只能拥有一个 Area 0,所有的区域间路由必须通过Area0中转。
常规区域( Normal Area)
所有的OSPF区域缺省情况下都是常规区域,当然, Area 0是常规区域中比较特殊的一个。
OSPF要求所有的非骨干区域(非0常规区域)都必须与Area 0直接相连。常规区域中允许Type-1, Type-2. Type-3, Type-4以及Type-5 LSA泛洪, Type-7 LSA禁止出现在常规区域内。
末梢区域(Stub Area)
末梢区域也被称为Stub区域,当一个非0常规区域只有单一的出口(例如该区域只有一个ABR),或者区域内的路由器不需要根据特定的外部路由来选择离开区域的出口时,该区域可以被配置为Stub区域。
当一个区域被配置为Stub区域后,这个区域的ABR将阻挡Type-5 LSA进入该区域(禁止外部路由被发布到该区域),通过这种方式可减少区域内所泛洪的LSA数量,同时该区域的ABR自动下发一条使用Type-3 LSA描述的默认路由,使得区域内的路由器能够通过这条默认路由到达域外,因此既减小了区域内网络设备的路由表规模,又保证了其访问外部网络的数据可达性。
在一个大量引入外部路由的OSPF网络中,将适当的区域配置为Stub区域可以极大地减小该区域内路由器的路由表规模,从而降低设备的资源消耗。另外,对于Stub区域而言,到达OSPF域内其他区域的路,由依然能够被注入,即ABR依然会将描述区域间路由的Type-3 LSA注入到Stub区域中。
Area 1被配置为Stub区域,这样Area 1的ABR(CO-SW1及Co-sw2)便不能再将Type-5 LSA注入这个区域。由于Type-5 LSA无法进入该区域,因此Type-4LSA也就没有必要再在该区域内泛洪,所以Co-sw1及Co-sw2也就不会再向该区域内注入Type-4 LSA,进而, Router-X的路由表将不会再出现到达省公司(OSPF域外)的具体路由,路由表的规模减小了,设备的资源消耗也就降低了。当然, Router-X访问省公司的需求还是存在的,为了让Router-X发往省公司的流量能顺利到达目的地, ABR会自动向Areal中注入默认路由,该条默认路由使用Type-3 LSA描述, co-SW1及CO-Sw2都会下发默认路由,网络管理员可以通过把控默认路由的Cost从而控制Routerx选择的出口。Router-X发往省公司的流量能够通过该默认路由先到达co-sW1或co-sw2,再通过它们转发到省公司。
设置末梢区域后ASBR生成Type-5 LSA无法进入,ABR也没有必要生成描述ASBR位置的Type-4 LSA,取而代之的是ABR生成一条描述外部路由的默认路由Type-3 LSA,让stub里的路由器转发发往外部网络的数据时把数据都发给ABR,由ABR统一转发。减小stub区域里的路由器的路由表大小。
所有连接到stub区域的路由器,对于该区域的stub属性要有一致的认知,否则OSPF邻居关系的建立将会出现问题。
还可以在ABR上配置,进一步阻挡描述区域间路由的Type-3 LSA进入,区域内的路由器访问区域外的网络时,统一把数据发给ABR。这样,这个区域内只有Type-1 LSA、Type-2 LSA及描述默认路由的Type-3 LSA存在,这意味着区域内路由器的路由表都将只有到达区域内部的路由,以及指向ABR的默认路由,路由器的路由表被极大程度地精简了。这种特殊区域也被称为完全末梢区域(Totally Stub Area)
非完全末梢区域(Not-So-Stubby Area)
NSSA (Not-So-Stubby Area)即非完全末梢区域,可以理解为Stub区域的变种,它拥有Stub区域的特点—阻挡Type-4及Type-5 LSA进入,从而在一定程度上减少区域内泛洪的LSA数量,同时它还有另一个特点,那就是允许该区域的路由器将少量外部路由引入OSPF,被引入的外部路由,以Type-7 LSA描述,并且这些Type-7 LSA只能够在当前的NSSA内泛洪,不允许直接进入Area0,为了使这些被引入NSSA的外部路由能让OSPF域内的其他区域学习到, NSSA的ABR会将Type-7 LSA转换成Type-5 LSA然后注入Areao,从而泛洪到整个OSPF域。
Area 1被配置成了NSSA。这样Area 1的ABR将阻挡Type-5 LSA进入这个区域。另一方面, Router-X连接到一个RIP网络,它将路由表中的RIP路由引入OSPF,这些被引入的外部路由以Type-7 LSA描述,这些LSA在Area 1内泛洪,并且禁止进入Area 0.co-sW1及CO-SW2作为NSSA的ABR, 自然也是能收到这些Type-7 LSA的,它们能够根据这些LSA计算出到达RIP网络的路由。
另外它们也负责将Type-7 LSA转换成Type-5 LSA并将后者注入Area 0,这样这些外部路由便能够被整个OSPF域中的路由器学习到。另一方面, CO-SW1及CO-SW2会向NSSA内下发一条Type-7 LSA的默认路由,使得Router-X能够通过这条默认路由到达省公司。
RIP通过RX生成的Type-7 LSA来描述,生成的Type-7在NSSA区域内泛洪。ABR收到Type-7后生成Type-5 LSA注入到Area 0中,让其他区域的路由器可以知道这个RIP,同时ABR也会生成一条Type-7 LSA默认路由给RX可以访问省公司。
我们还可以在NSSA的基础上进一步减少LSA的泛洪。在NSSA的ABR上,可以进一步将Type-3 LSA阻挡掉,从而将区域间的路由都过滤掉,而NSSA的ABR会自动,下发一条默认路由(使用Type-3 LSA描述)到该区域,使得区域内的路由器能够通过这条默认路由访问OSPF域内的其他区域,以及域外的网络。这种类型的特殊区域也被称为Totally NSSA。
各种区域类型中允许出现的LSA
表中列举出了在每种OSPF区域类型中,允许出现以及禁止出现的LSA.
Type-1 | Type-2 | Type-3 | Type-4 | Type-5 | Type-7 | |
---|---|---|---|---|---|---|
常规区域 | √ | √ | √ | √ | √ | × |
Stub区域 | √ | √ | √ | × | × | × |
Totally Stub区域 | √ | √ | x1 | × | × | × |
NSSA | √ | √ | √ | × | × | √ |
Totally NSSA | √ | √ | x2 | × | × | √ |
(1) ABR会自动下发一条Type-3 LSA的默认路由,除此之外其他的Type-3 LSA都被禁止。
(2) ABR会自动下发一条Type-3 LSA的默认路由,除此之外其他的Type-3 LSA都被禁止。
判断LSA的新旧
(1)首先,拥有更高链路状态序列号的LSA实例被认为更新,因为路由器每次在刷新LSA的时候,会将该LSA的链路状态序列号加1,链路状态序列号越大,则LSA越新。
(2)如果LSA实例的链路状态序列号相同,那么拥有更大校验和的LSA实例被认为更新。
(3)如果LSA实例的链路状态序列号相同、校验和也相同,且某个实例的老化时间被设置为MaxAge (最大老化时间,缺省3600s),则该实例被认为最新。
(4)如果LSA实例的链路状态序列号相同、校验和也相同,且没有任何一个实例的老化时间被设置为MaxAge,那么当两个实例的老化时间相差超过MaxAgeDif (到达整个AS边界所需的最长时间,通常是15min)时,这两个实例被认为是不同的实例,且老化时间值越小的LSA被认为越新。
(5)如果LSA实例的链路状态序列号相同、校验和也相同,另外,没有任何一个实例的老化时间被设置为MaxAge,并且,两个实例的老化时间相等,或相差不超过MaxAgeDiff,则它们被认为是相同的实例。