用来向对端Router发送其所需要的LSA或者泛洪自己更新的LSA,内容是多条LSA(全部内容)的集合。LSU报文(Link State Update Packet)在支持组播和广播的链路上是以组播形式将LSA泛洪出去。为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认。对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。
字段
长度含义
# LSAs32比特LSA的数量。
OSPFv3常用的LSA共有7种,分别为:
- Router-LSA(Type1)
- Network-LSA(Type2)
- Inter-Area-Prefix-LSA(Type3)
- Inter-Area-Router-LSA(Type4)
- AS-external-LSA(Type5)
- Link-LSA(Type8)
- Intra-Area-Prefix-LSA(Type9)
图1 LSA头部结构
字段
长度含义
LS age16比特LSA产生后所经过的时间,以秒为单位。无论LSA是在链路上传送,还是保存在LSDB中,其值都会在不停的增长。
LS type16比特LSA的类型,标识了LSA的功能。该字段的高3位标识LSA的通用属性,剩下的比特位标识LSA的特定功能。LS Type字段的格式如下:
图2 LS Type字段格式
U比特位标识标识对未知LSA的处理方法:
- 0:把此LSA当作具有链路本地泛洪范围来对待,从而只能泛洪到本地链路上。
- 1:把此LSA当作类型已知的LSA来处理,也就是存储下来并泛洪出去。
S1和S2比特位标识了LSA的泛洪范围:
- S2 S1 = 0 0: 链路本地范围内,即只在始发链路上泛洪。
- S2 S1 = 0 1: 区域范围内,即泛洪到始发区域内的所有路由器。
- S2 S1 = 1 0: AS范围内,即泛洪到本AS的所有路由器。
- S2 S1 = 1 1: 预留
LSA的功能代码定义如下:
- Type1: Router-LSA (LS Type = 0x2001)
- Type2: Network-LSA (LS Type = 0x2002)
- Type3: Inter-Area-Prefix-LSA (LS Type = 0x2003)
- Type4: Inter-Area-Router-LSA (LS Type = 0x2004)
- Type5: AS-external-LSA (LS Type = 0x2005)
- Type8: Link-LSA (LS Type = 0x2008)
- Type9: Intra-Area-Prefix-LSA (LS Type = 0x2009)
Link State ID32比特与LSA中的LS Type和LSA description一起在路由域中描述一个LSA。
Advertising Router32比特产生此LSA的路由器的Router ID。
LS sequence number32比特LSA的序列号。其他路由器根据这个值可以判断哪个LSA是最新的。
LS checksum16比特除了LS age外其它各域的校验和。
length16比特LSA的总长度,包括LSA Header,以字节为单位。
Router-LSARouter-LSA(Type1):每个路由器都会产生,描述了路由器的链路状态和花费,在所属的区域内传播。
图3 Router-LSA格式
字段
长度含义
Link State ID32比特生成LSA的Router ID。
W1比特如果置1,标识该路由器是个组播“通吃者”(wild-card receiver)。当运行MOSPF时,无论目的地址是什么,这些路由器接收所有的组播数据。
V (Virtual Link)1比特如果产生此LSA的路由器是虚连接的端点,则置为1。
E (External)1比特如果产生此LSA的路由器是ASBR,则置为1。
B (Border)1比特如果产生此LSA的路由器是ABR,则置为1。
Options24比特Options字段使OSPF路由器能支持可选的能力,并且与其它路由器互相通告其能力。通过这种机制,具有不同能力的路由器可以在一个OSPF路由域中混合工作。其格式为:图4 Options字段格式
- DC:当且仅当路由器可以正确处理LSA的LS age 字段中出现的DoNotAge位的时候设置为1。当且仅当路由器想把相连的点到点电路当作按需电路时,它把Hello和DD包的DC位设置为1。在点到点按需电路上,两个端点设备都必须支持对Hello包的抑止,以便节省带宽资源。为了确保这一点,路由器在按需电路的接口发送的Hello包和Database Description包上把DC位设置为1。如果对方发送的DD包或返回的Hello包的DC位为0,说明对方不支持对Hello的抑止功能,所以路由器必须继续周期性地发送Hello包。 按需电路特性的支持只需要在两个端点之一配置即可。如果一个路由器实现了按需电路特性,但是没有配置,那么当它接收到设置了DC位的Hello包时,应该把这个点到点电路按照按需电路来对待,从而改变其相应进程。但是LSA中的DC位含义却有微妙的差别。设置LSA的DC位并不意味着路由器能够作为按需电路的一个端点,而是说明它能否正确处理设置了DoNotAge位的LSA。当且仅当路由器可以正确处理LSA的LS age 字段中出现的DoNotAge位的时候,它才把自己建立的LSA中的DC位设置为1。 处于不同位置的Options字段会对协议运作产生不同的影响。某些选项的不匹配,会阻止邻接关系的形成,例如如果过Hello包的发送和接收,两个路由器发现E位不匹配,就不能形成邻居关系。某些选项的不匹配,会阻止特定类型的LSA的泛洪,例如如果通过DD包的交换,两个路由器发现彼此的MC位不匹配,那么组播路由使用的Group-membership-LSA就不能泛洪。某些选项如果不匹配,会使路由器不能被纳入某一种或多种路由的计算,例如如果路由器从LSA中发现某个路由器的MC位没有设置,那么在组播路由计算时它就不会考虑这个路由器。 在发送Hello包、发送DD包和建立LSA时,路由器应该对Options字段中不认可的位进行清零。在接收Hello包、接收DD包和接收LSA时,路由器应该忽略OSPF Options字段中不认可的位,并且正常处理这个包或LSA。
- R:设置为1。指出该公告者是否一个路由器。如果清零,则说明该公告者并不能路由数据。所以经过该公告者的路由不能纳入路由计算。如果多宿主机希望分享OSPF路由信息,但又不希望转发数据时,可以使用之。
- N:描述了路由器对Type-7 LSA的处理。当且仅当一个接口的所属区域为NSSA区域时设置为1。
- MC:描述路由器是否运行了MOSPF。当且仅当路由器运行MOSPF时设置为1。
- E:当且仅当所属区域为stub区域时设置为0。描述AS-external-LSA的泛洪方式。在Hello包中,当且仅当这个区域能够处理AS-external-LSA的时候,E位设置为1(例如在非stub区域中),否则为0。如果E位设置不正确,邻接关系就不能形成。在DD包中,当一个链路所属的区域是非stub区域时,E位设置为1,否则为0。而在LSA头中,E位表现了相应的LSA的特性——骨干区域的LSA、非stub区域的LSA和AS-external-LSA的E位都应该设置为1;而在stub区域的LSA中应该设置为0。LSA中的E位设置仅仅是为了发布信息,而不影响路由表计算。
- V6:设置为1。表示这个路由器或链路是不是在路由IPv6。如果清零,这个路由器或链路不应该纳入IPv6路由计算。
所有未定义的位都应该清零。
Type8比特链路的类型:- 1: 点到点连接到另一台路由器
- 2: 连接到穿越(Transit)网
- 3: 保留
- 4: 虚连接
metric16比特流量出接口的开销值。
Interface ID32比特接口ID。
Neighbor Interface ID32比特邻居的接口ID。
Neighbor Router ID32比特邻居的路由器ID。
Network-LSANetwork-LSA(Type2):由广播网或NBMA网络中的DR产生,Network-LSA中记录了这一网络上所有路由器的Router ID,描述本网段的链路状态,在所属的区域内传播。
图5 Network-LSA格式
字段
长度含义
Options24比特参见Router-LSA的字段解释。
Attached Router32比特连接在同一个网络上的所有路由器的Router ID,也包括DR的Router ID。
Inter-Area-Prefix-LSA格式IPv6的这些LSA与IPv4的OSPFv2中的type 3 summary-LSAs等同。由区域边界路由器始发,这些LSA描述了到其他区域的IPv6地址前缀。每个IPv6地址前缀单独发一个Inter-Area-Prefix-LSA。
图6 Inter-Area-Prefix-LSA格式
字段
长度描述
metric24 bits到目的地址的开销值。
PrefixLength8 bits前缀的比特数。
PrefixOptions8 bits用来表达这个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理。例如希望在特定情况下忽略一个前缀的计算。 由LSA公告的每个前缀都拥有一个自己的PrefixOptions字段。PrefixOptions字段格式如下:图7 PrefixOptions字段格式
- P位: 传播位。如果一个NSSA区域的前缀需要被ABR传播出去,就需要设置这一位。
- MC位: 组播位。如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算。
- LA位: 本地地址位。如果设置为1,则这个前缀是路由器的一个接口地址。
- NU位: 非单播位。如果设置为1,则这个前缀不会纳入IPv6单播路由计算中。
Address Prefix变长IPv6地址前缀。
缺省路由的前缀长度为0。
Inter-Area-Router-LSA格式IPv6的这些LSA与IPv4的OSPFv2中的Type 4 summary-LSAs等同。由区域边界路由器始发,这些LSA描述了到其他区域的IPv6地址前缀。每个LSA描述了到某台路由器的一条路由。
图8 Inter-Area-Prefix-LSA格式
Field
LengthDescription
Options24比特Options字段描述的不是源路由器的能力,而是目的路由器所支持的能力,所以此字段值应该等于目的路由器的router-LSA的Options字段值。
metric24比特到目的地址的开销值。
Destination Router ID32比特LSA中描述的目的路由器的Router ID。
AS-External-LSA每个AS-external-LSA描述到达自治系统外部的一个前缀的路径。
图9 AS-External-LSA格式
字段
长度含义
E1比特外部路由的Metric类型。如果设置为1,表示此为2类外部路由,其Metric不随着路由的传递而增长。如果设置为0,表示此为1类外部路由,其Metric随着路由的传递而增长。
F1比特如果设置为1,则表示后面的Forwarding Address可选字段存在。
T1比特如果设置为1,则表示后面的External Route Tag可选字段存在。
metric24比特到目的地址的路由开销。
PrefixLength8比特前缀的比特数。
PrefixOptions8比特用来表达这个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理。例如希望在特定情况下忽略一个前缀的计算。 由LSA公告的每个前缀都拥有一个自己的PrefixOptions字段。PrefixOptions字段格式如下:图10 PrefixOptions字段格式
- P位: 传播位。如果一个NSSA区域的前缀需要被ABR传播出去,就需要设置这一位。
- MC位: 组播位。如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算。
- LA位: 本地地址位。如果设置为1,则这个前缀是路由器的一个接口地址。
- NU位: 非单播位。如果设置为1,则这个前缀不会纳入IPv6单播路由计算中。
Referenced LS type16比特表明这个LSA是参考一个Router-LSA,还是一个Network-LSA。1表示参考一个router-LSA,2表示参考一个Network-LSA。
Address Prefix变长IPv6地址前缀。
Forwarding Address32比特可选的128位Pv6地址。当前面的F位为1时存在。表示到达目的的数据应该转发到这个地址。在公告路由器不是最优的下一跳的时候可以使用。
External Route Tag32比特可选的标记位。可以用于ASBR之间的通信。一个比较常见的例子是,在OSPF自治系统的两个边界路由器上进行路由分发时,通过对引入的路由进行标记,可以很方便地进行路由过滤。
Referenced Link State ID32比特当设置了前面的Reference LS Type时存在。如果存在,说明此条外部路由有一些相关信息需要参考另外一个LSA。
Link-LSA每个连接的链路产生一个Link-LSA。
作用:
- 向该链路上其他路由器通知本地的Link-Local地址,即到本地的下一跳地址;
- 收集本路由器在该链路上配置的所有的IPv6前缀,并通知该链路上其他路由器;
- 向Network-LSA提供选项信息。收集该链路上所有的Link-LSA,与操作得到的该链路上Network-LSA中选项信息。
图11 Link-LSA format
Field
LengthDescription
Rtr Pri8 bits该路由器在该链路上的优先级(Router Priority)。
Options24bits提供给Network LSA的Options。
Link-local Interface Address128 bits路由器与该链路相连的接口上配置的Link Local地址(Link Local地址只出现在Link LSA中)。
# prefixes32 bits该LSA中携带了多少IPv6地址Prefix。
PrefixLength8 bits前缀的比特数。
PrefixOptions8 bits用来表达这个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理。例如希望在特定情况下忽略一个前缀的计算。 由LSA公告的每个前缀都拥有一个自己的PrefixOptions字段。PrefixOptions字段格式如下:图12 PrefixOptions字段格式
- P位: 传播位。如果一个NSSA区域的前缀需要被ABR传播出去,就需要设置这一位。
- MC位: 组播位。如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算。
- LA位: 本地地址位。如果设置为1,则这个前缀是路由器的一个接口地址。
- NU位: 非单播位。如果设置为1,则这个前缀不会纳入IPv6单播路由计算中。
Address PrefixVariableIPv6地址前缀。
Intra-Area-Prefix-LSAIntra-Area-Prefix-LSA携带区域内IPv6 Prefix信息。
图13 Intra-Area-Prefix-LSA格式
字段
长度描述
# prefixes16 bits在LSA中包含的IPv6前缀数量。必要的话,可以通过多个intra-area-prefix-LSA来携带前缀,这样可以控制LSA的长度。
Referenced LS type16 bits表明这个LSA是参考一个Router-LSA,还是一个Network-LSA。1表示参考一个router-LSA,2表示参考一个Network-LSA。
Referenced Link State ID32 bits当这个LSA是参考一个Router-LSA时,设置为0。当这个LSA是参考一个Network-LSA时,设置为该链路的DR的Interface ID。
Referenced Advertising Router32 bits当这个LSA是参考一个Router-LSA时,设置为这个路由器的Router ID。当这个LSA是参考一个Network-LSA时,设置为该链路的DR的Router ID。
PrefixLength8 bits前缀的比特数。
PrefixOptions8 bits用来表达这个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理。例如希望在特定情况下忽略一个前缀的计算。 由LSA公告的每个前缀都拥有一个自己的PrefixOptions字段。PrefixOptions字段格式如下:图14 PrefixOptions字段格式
- P位: 传播位。如果一个NSSA区域的前缀需要被ABR传播出去,就需要设置这一位。
- MC位: 组播位。如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算。
- LA位: 本地地址位。如果设置为1,则这个前缀是路由器的一个接口地址。
- NU位: 非单播位。如果设置为1,则这个前缀不会纳入IPv6单播路由计算中。
Metric16 bits前缀开销值。与Router-LSA的接口开销值相同单位。
Address PrefixVariableIPv6地址前缀。
参考标准标准
描述
RFC 2740OSPF for IPv6