Database Description报文结构
如下图所示:
IPv6 OSPFv3路由协议(续一)_OSPFv3
报文字段的含义:
? Options——该24比特字段出现在Hello包、DBD和某些LSA中,OSPF路由器使用该字段实现某些与其他路由器通信的能力(详见RFC2740)。
? Interface MTU——接口MTU值。
? I-bit——当设置为1,这个包是该数据库描述数据包序列的第一个。
? M-bit——当设置为1,则表明后续会有更多的数据库描述数据包。
? MS-bit——主/从位。当设置为1,则表明该路由器是主路由器。否则,路由器是从路由器。
? DD sequence number——来标识一组DBD包。当第一个发送DBD包(也就是说该DBD包中的I位被置为1,我们可以认为往往第一个DBD包一定是由Master发的)时,该DD sequence number字段开始被使用,在往后的DBD包中的DD sequence number都会递增1。
如下图所示:
IPv6 OSPFv3路由协议(续一)_ospf_02
Options 字段结构,
如下图所示
IPv6 OSPFv3路由协议(续一)_休闲_03
? DC比特——当始发路由器具有支持按需电路上的0sPF的能力时,该位将被设置。
? R 比特——用来标识设备是否是具备转发能力的路由器。如果R 比特置0,宣告该节点的路由信息将不会参加路由计算,如果当前设备是一个不想转发非本地地址的报文,可以将R 比特置0。
? N位——只用在HeIlo数据包中。一台路由器设置N葫←l表明它支持NssA外部LsA。如果设置N=o,那么路由器将不接受和发送NssA外部LsA。邻居路由器如果错误配置了N位,将不会形成邻接关系,这个限制可以确保一个区域内的所有路由器都同样地具有支持NssA的能力。如果N=1时,E必须设置为0。
? MC位——当始发路由器具有转发IP组播数据包的能力时,该位将被设置。这一位使用在MOsPF协议当中。
? E位——当始发路由器具有接受As外部LsA的能力时,该位将被设置。在所有的As外部LSA和所有始发于骨干区域以及非末梢区域的LsA中,该位将设置为1。而在所有始发于末梢区域的LsA当中,该位设置为0。另外,可以在Hello数据包中使用该位来表明一个接口具有接收和发送类型5的LsA的能力。E讪t配置错误的邻居路由器将不能形成邻接关系,这个限制可以确保—个区域的所有路由器都同样地具有支持末梢区域的能力。
? V 比特——如果V 比特置0,该路由器或链路也不会参加路由计算。
Link State Request报文结构
如下图所示:
IPv6 OSPFv3路由协议(续一)_休闲_04
LSR中使用以下信息来唯一地标识要请求的LSA:
? 链路状态(LS)类型号。
? LS标识。
? 通告路由器。
如下图所示:
IPv6 OSPFv3路由协议(续一)_协议_05
Link State Update报文结构
如下图所示:
IPv6 OSPFv3路由协议(续一)_OSPFv3_06
链路状态更新(LSU)报文用于把LSA发送给它的邻居,这些更新报文是用于对LSA请求的应答。一个LSU中可以包括多个LSA条目。
如下图所示:
IPv6 OSPFv3路由协议(续一)_OSPFv3_07
IPv6 OSPFv3路由协议(续一)_OSPFv3_08
Link State Acknowledgment报文结构
如下图所示:
IPv6 OSPFv3路由协议(续一)_协议_09
LSAck报文唯一地标识其要应答的LSA报文。标识以包含在LSA头中的信息为基础,包括LS顺序号和通告路由器。LSA与应答报文之间无需1对1的对应关系。多个LSA可以用一个报文来应答。
如下图所示:
IPv6 OSPFv3路由协议(续一)_ospf_10
LSA头报文结构
如下图所示:
IPv6 OSPFv3路由协议(续一)_路由_11
所有的LSA使用一个通用的头格式。这个头20字节长并附加于标准的24字节OSPF头后面。LSA头惟一地标识了每种LSA。所以,它包括关于LSA类型、链路-状态ID及通告路由器ID的信息。
下面是LSA头域,其具体字段含义:
? LS age——LSA头中的前两个字节包含LSA的年龄(age)。这个年龄是自从LSA产生时已消逝的秒数。
? LS type——指出9种LSA类型中的一种。每种LSA类型的格式是不同的。
? Link State ID——链路状态ID域4字节长用于指明LSA描述的特定网络环境区域。实际上,这个域的内容直接依赖于LS类型。比如,在路由器LSA中,链路状态ID包含产生了这个报文的OSPF路由器ID。
? Advertising Router——通告路由器。该字段填入生成该LSA的路由器的Router ID。
? LS sequence number——表示该LSA的序列号,OSPF路由器在刷新LSA时会递增每个LSA报文的序列号。接收路由器可以根据序列号来判断该实力是否是最新的LSA实例。
? LS Checksum——校验和用于检查LSA在传输到目的地的过程中是否受到破坏。校验和采用简单的数学算法。它的输出结果依赖于其输入,并且有高度的一致性。给定相同的输入,校验和算法总是给出相同的输出。LS校验和域使用部分LSA报文内容(包括头,不包括LS年龄和校验和域)来生成校验和值。源节点运行Fletcher算法并把结果存于LS校验和域中。目的节点执行相同的算法并把结果与存储在校验和域中的结果比较,如果两个值不相同,就可以认为报文在传输过程中被破坏。
? Length——LS长度域用于通知接收方LSA的长度(以字节为单位)。
LS type字段结构如下图所示:
IPv6 OSPFv3路由协议(续一)_路由_12
? U 位:描述了路由器收到一个类型未知的LSA 时如何处理,取值为0 表示把类型未知LSA 当成具有链路本地范围的LSA 一样处理,取值为1 表示按照S2/S1 位标识的泛洪范围来处理。
? S2/S1 位:共同标识LSA 的泛洪范围,取值00 表示LSA 只在产生该LSA 的本地链路上泛洪;取值01 表示LSA 的泛洪范围为产生该LSA 的路由器所在区域;取值10 表示LSA 将在整个自治系统内进行泛洪;取值11 保留。
? LSA Function Code:LSA 类型编码,描述LSA 的类型,类型编码取值与LSA 类型的对应关系如下表所示。
常用的有9种LSA的类型,具体见下表。
LS Type
Description
1
0x2001
Router-LSA
2
0x2002
Network-LSA
3
0x2003
Inter-Area-Prefix-LSA
4
0x2004
Inter-Area-Router-LSA
5
0x4005
AS-External-LSA
6
0x2006
Group-membership-LSA
7
0x2007
Type-7-LSA
8
0x0008
Link-LSA
9
0x2009
Intra-Area-Prefix-LSA