1. LSA头部
首先,我们分析一下 LSA 报文头:所有 LSA 头部都有20 个字节,它包含了足够的信息来唯一标识一条LSA(LS type,Link,State ID,and Advertising Router )。LSA 多实例在同一时候可以存在于路由域中,它被用来决定哪一个实例是最新的。LSA 头部还包括LS 老化、LS 序列号和LS 校验和等字段。
字段解释:
LS age,用来标识LS 产生的时间。生成LSA 的路由器将LS 时域初始化为0,在洪泛过程
中,每经过一个路由器,要按InfTransDelay 的量增加,这个量表示传输LSA 到下一个跳所需要的时间。当该时间达到所设定的MaxAge 参数时,要撤消该LSA。
Options,用来描述支持的路由域,主要包括DC、EA、N/P、MC、E、T 等选项。DC 指的是始发路由器支持Demand Circuits (按需拨号等);EA 指的是始发路由器支持External
Attributes LSAs (现在未推广);N/P 只用在Hello 中N=1,说明支持NSSA,P 只用在NSSA
中,通知ABR 把type7 的LSA 翻译成type5 的LSA;MC 只在MOSPF 中用到;E 表示可
以接受外部路由(不是stub 区),在一个area 中的所有router 此位必须一致,(Hello 中体现) 否则邻接关系无法建立;T 表示始发路由器支持TOS。
LS type:链路类型。每种类型的LSA 都有唯一的通告格式。
Link State ID,这个字段标识被描述的网络环境的一部分,Link State ID 的内容取决于LSA
的类型,即不同类型的LSA 其Link State ID 也是不同的。比如,当LSA 的类型是Type 1
时, Link State ID 是始发路由器的Router ID;当LSA 的类型是Type 2 时, Link State ID
是DR 在该网段上接口的IP 地址;当LSA 的类型是Type 3 时, Link State ID 是被通告的网络/子网的IP 地址;当LSA 的类型是Type 4 时, Link State ID 是被通告ASBR 的RouterID;当LSA 的类型是Type 5 时, Link State ID 是目的地的IP 地址。
Advertising Router,指始发此LSA 的路由器的Router ID。比如在Network-LSAs 中,这个
字段就是DR 在该网段上接口的IP 地址。
LS sequence number,用于识别LSA 包是否是一个最新包。路由器每生成一个新的LSA 时,
将该序列号加1。
LS checksum:用来检查LSA 的完整性,包括除了LS age 之外的LSA 头部的内容。
Length:LSA 的长度,用bytes 表示。LSA 的头部包括20 字节。
LSA 头中的链路类型、链路状态ID 和通告路由器的Router ID 是一个LSA 的唯一标识。一个LSA 将有多个实例,不同的实例通过LS 的序列号、LS 的校验和及LS 的Age 字段来描述。因此,必须要决定其实例是否是最近的,这要通过检查LS 的序列号、LS 的校验和及LS 的Age 字段内容。
27.LSA 的类型
OSPF 是基于链路状态算法的路由协议,所有对路由信息的描述都是封装在LSA 中发送出去。当路由器初始化或当网络结构发生变化(例如增减路由器,链路状态发生变化等)时,路由器会产生链路状态广播数据包LSA(Link-State Advertisement),该数据包里包含路由器上所有相连的链路,也即为所有端口的状态信息。
LSA 根据不同的用途分为不同的种类,主要有如下类型的 LSA:
Router LSA(Type = 1):
是最基本的 LSA 类型,所有运行OSPF 的路由器都会生成这种LSA。主要描述本路由器运
行OSPF 的接口的连接状况,花费等信息。对于ABR,它会为每个区域生成一条Router LSA。
这种类型的LSA 传递的范围是它所属的整个区域。
Netwrok LSA(Type = 2):
本类型的 LSA 由DR 生成。对于广播和NBMA 类型的网络,为了减少该网段中路由器之间交换报文的次数而提出了DR 的概念。
一个网段中有了 DR 之后不仅发送报文的方式有所改变,链路状态的描述也发生了变化。
在 DROther 和BDR 的Router LSA 中只描述到DR 的连接,而DR 则通过Network LSA 来描述本网段中所有已经同其建立了邻接关系的路由器。(分别列出它们Router ID)。同样,这种类型的 LSA 传递的范围是它所属的整个区域。
Network Summary LSA(Type = 3):
本类型的 LSA 由ABR 生成。当ABR 完成它所属一个区域中的区域内路由计算之后,查询路由表,将本区域内的每一条OSPF 路由封装成 Network Summary LSA 发送到区域外。LSA 中描述了某条路由的目的地址、掩码、花费值等信息。
这种类型的 LSA 传递的范围是ABR 中除了该LSA 生成区域之外的其他区域。
ASBR Summary LSA(Type = 4):
本类型的 LSA 同样是由ABR 生成。内容主要是描述到达本区域内部的ASBR 的路由。这种LSA与Type3类型的LSA内容基本一样,只是Type4的LSA描述的目的地址是ASBR,是主机路由,所以掩码为0.0.0.0。这种类型的LSA 传递的范围与Type3 的LSA 相同。
AS External LSA(Type = 5):
本类型的 LSA 由ASBR 生成。主要描述了到自治系统外部路由的信息,LSA 中包含某条路由的目的地址、掩码、花费值等信息。
本类型的 LSA 是唯一一种与区域无关的LSA 类型,它并不与某一个特定的区域相关。这种类型的LSA 传递的范围整个自治系统(STUB 区域除外)。
Multicast OSPF LSA(Type =6):
使用在 OSPF 多播应用程序里。
Not-So-Stubby Area(Type =7):
本类型的 LSA 由Not-So-Stubby area(NSSA) 区域中ASBR 生成。
为了解决 ASE 路由(自治系统外部路由)单向传递的问题,Not-So-Stubby area(NSSA) 中
重新定义了一种LSA——Type 7 类型的 LSA,作为区域内的路由器引入外部路由时使用。
该类型的 LSA 除了类型标识与 Type 5 不相同之外,其它内容基本一样。这样区域内的路由器就可以通过 LSA 的类型来判断是否该路由来自本区域内。
但由于 Type 7 类的 LSA 是新定义的,对于不支持 NSSA 属性的路由器无法识别,所以协议规定:在 NSSA 的 ABR 上将 NSSA 内部产生的Type 7 类型的 LSA 转化为Type 5 类型的 LSA 再发布出去,并同时更改 LSA 的发布者为 ABR 自己。这样 NSSA 区域外的路由器就可以完全不用支持该属性。
在 NSSA 区域内的所有路由器必须支持该属性(包括NSSA 的ABR),而自治系统中的其
他路由器则不需要。
External-Attributes-LSA(Type =8):
特殊的 LSA,还没有实现。当BGP 信息需要在OSPF 上承载时,需要用到此LSA。
opaque LSA(Type =9~11):
用于 MPLS 流量工程,有关此LSA 的详细应用请参考网络学院MPLS 流量工程培训教材或
RFC2370 文档。当一台路由器向它的邻居发送一条LSA 后,需要等到对方的确认报文。若
在重传间隔时间内没有收到对方的确认报文,就会向邻居重传这条LSA。__