协议编号
OSPFv3 与 OSPFv2 使用相同的协议号 89;
1)OSPFv2:IPv4 报文头部中的协议号(Protocol)为 89;
2)OSPFv3:IPv6 报文头部中的下一报头号(Next Header)为 89;
组播地址
OSPFv3 与 OSPFv2 类似,使用组播地址作为 OSPF 报文目的地址;
1)OSPFv2 使用 IPv4 组播地址: OSPF IGP Routers:224.0.0.5;OSPF IGP DR :224.0.0.6;
2)OSPFv3 使用 IPv6 组播地址:OSPF IGP Routers:FF02::5;OSPF IGP DR:FF02::6;
报文类别
OSPFv3 与 OSPFv2 有相同类型的报文:
1)Hello 报文:周期性发送,用来发现、建立和维持 OSPFv3 邻居关系;
2)DD 报文:描述了本地 LSDB 的摘要信息,用于两台设备进行数据库同步;
3)LSR 报文:用于向对方请求所需的 LSA。设备只有在 OSPFv3 邻居双方成功交换 DD 报文后,才会向对方发出 LSR 报文;
4)LSU 报文:向对方发送其所需的 LSA;
5)LSAck 报文:用来对收到的 LSA 进行确认;
变化点:
1)Instance ID:1 Byte,缺省值为 0。允许在一个链路上运行多个 OSPFv3 的实例。每个实例具有唯一的 Instance ID。Instance ID 只在本地链路上有意义;
2)OSPFv3 报文头部移除了所有的认证字段:OSPFv3 的认证可以使用 IPv6 的认证及安全处理,也可以通过 OSPFv3 自身机制来完成报文认证;
OSPFv3 Header
Version:1 Byte,版本,OSPF 的版本号。对于 OSPFv3 来说,其值为 3;
Type:1 Byte,类型,OSPFv3 报文的类型。有下面几种类型:
TYPE=1:Hello 报文
TYPE=2:DD 报文
TYPE=3:LSR 报文
TYPE=4:LSU 报文
TYPE=5:LSAck 报文
Packet length:2 Byte,OSPFv3 报文的总长度,包括报文头在内,单位为字节;
Router ID:4 Byte,始发此报文的路由器的 Router ID;
Area ID:4 Byte,发送该报文的所属区域;
Checksum:2 Byte,使用 IPv6 标准 16 位校验和;
0:1 Byte,保留字段,必须填 0;
OSPFv3 Body : Hello
变化点:
与 OSPFv2 的 Hello 报文相比,OSPFv3 的 Hello 报文去掉了 Network Mask 字段,增加了 Interface ID 字段,用来标识发送该 Hello 报文的接口 ID;
Interface ID:4 Byte,唯一标识了建立连接的(发送 Hello 报文的)接口;
Rtr Pri:1 Byte,Router Priority,DR 优先级。默认为 1。如果设置为 0,则路由器不能参与 DR 或 BDR 的选举;
Options:3 Byte,可选项。扩展到 3 Byte,可选项。与 OSPFv2 相比,增加了 AT 位、R 位和 V6 位;
AT:1 bit,表示是否支持 OSPFv3 认证。若 AT=1,则在 OSPFv3 报文后增加认证尾部字段,包含认证信息;
DC:1 bit,表示是否具有支持按需电路的能力;
R:1 bit,指明始发路由器是否是一台有效的路由器。即指明始发路由器是否具备转发能力;
NP:1 bit,表示是否为 NSSA 区域;
MC:1 bit,表示是否支持转发组播数据报文;
E:1 bit,表示是否支持外部路由;
V6:1 bit,表示是否参与 IPv6 路由计算。如果该位为 0,表示该路由器或链路不参与 IPv6 路由计算;
HelloInterval:2 Byte,发送 Hello 报文的时间间隔;
RouterDeadInterval :2 Byte,失效时间。如果在此时间内未收到邻居发来的 Hello 报文,则认为邻居失效;
Designated Router ID:4 Byte,DR 的 Router ID;
Backup Designated Router ID :4 Byte,BDR 的 Router ID;
Neighbor ID:4 Byte,邻居,以 Router ID 标识;
说明:DD 报文、LSR 报文、LSU 报文和 LSAck 报文格式与 OSPFv2 相比变化不大,本课程不再赘述;
OSPFv3 Body : LSU : LSA : Header
与 OSPFv2 的 LSA 头部相比,OSPFv3 的 LSA 头部去掉了 Options 字段,并扩充了 LS Type 字段;
OSPFv3 同样使用 LS Type、Link State ID 和 Advertising Router 三元组唯一地标识一个 LSA;
变化点:
LS Type:扩展到 2 Byte,Link State Type,链路状态类型;
U:1 bit,标识对未知 LSA 的处理方法;
S2/S1:2 bit,标识 LSA 的泛洪范围;
LSA Function Code:13 bit,LSA 功能代码,标识了 LSA 的类型;
LS Age:2 Byte,LSA 产生后所经过的时间,以秒为单位。无论 LSA 是在链路上传送,还是保存在 LSDB 中,其值都会在不停的增长;
LS Type:2 Byte,LSA 的类型。该字段的高 3 位标识 LSA 的通用属性,剩下的比特位标识 LSA 的特定功能;
1)U 位标识了对未知 LSA 的处理方法,即标识了不识别 LSA 功能代码的路由器应如何处理 LSA;
—- U=0:把此 LSA 当作具有链路本地泛洪范围来对待,从而只能泛洪到本地链路上;
—- U=1:把此 LSA 当作类型已知的 LSA 来处理,也就是存储下来并泛洪出去;
2)S2/S1 位标识了 LSA 的泛洪范围;
—- S2 S1=0 0:链路本地范围内,即只在始发链路上泛洪;
—- S2 S1=0 1:区域范围内,即泛洪到始发区域内的所有路由器;
—- S2 S1=1 0:AS 范围内,即泛洪到本 AS 的所有路由器;
—- S2 S1=1 1:预留;
Link State ID:4 Byte,本地 32 位标识符,与 IPv6 地址无关,与 LSA 中的 LS Type 和 Advertising Router 一起在路由域中描述一个 LSA。OSPFv3 与 OSPFv2 相比,Link State ID 不再包含地址信息;
Advertising Router:4 Byte,产生此 LSA 的路由器的 Router ID;
LS Sequence Number:4 Byte,LSA 的序列号。其他路由器根据这个值可以判断哪个 LSA 是最新的;
LS Checksum:2 Byte,除了 LS Age 外其它各域的校验和;
Length:2 Byte,LSA 的总长度,包括 LSA Header,以字节为单位;
OSPFv3 Body : LSU : LSA : Body : LSA TYPE
OSPFv3 与 OSPFv2 相比,具有类似的 LSA 名称,但是功能略有区别;
OSPFv3 新增了两类 LSA,包括:链路 LSA 和区域内前缀 LSA;
TYPE | NAME | DESC |
---|---|---|
0x2001 | Router-LSA(路由器 LSA) | 与 OSPFv2/Route-LSA 作用类似,但不再描述地址信息,仅描述拓扑结构 |
0x2002 | Network-LSA(网络 LSA) | 与 OSPFv2/Network-LSA 作用类似,但不再描述地址信息,仅描述拓扑结构 |
0x2003 | Inter-Area-Prefix-LSA(区域间前缀 LSA) | 与 OSPFv2/Network-Summary-LSA 相比,作用类似,名称不同 |
0x2004 | Inter-Area-Router LSA(区域间路由器 LSA) | 与 OSPFv2/ASBR-Summary-LSA 相比,作用类似,名称不同 |
0x2005 | AS-External-LSA(AS 外部 LSA) | 与 OSPFv2 相比,作用与名称完全相同 |
0x2007 | NSSA LSA(非完全末梢区域 LSA) | 与 OSPFv2 相比,作用与名称完全相同 |
0x2008 | Link-LSA(链路 LSA) | OSPFv3 新增 |
0x2009 | Intra-Area-Prefix-LSA(区域内前缀 LSA) | OSPFv3 新增 |
如表中所示,OSPFv3 的 LS Type 字段,U 位缺省为 0;除 Type5 和 Type8 的 LSA 外,其余的 LSA 泛洪范围都是区域范围内(S2 S1=0 1);
1)链路本地范围。LSA 仅在本地链路上泛洪,包括:Link-LSA;
2)区域范围。LSA 在单个 OSPF 区域内泛洪,包括:Router-LSA、Network-LSA、Inter-Area-Prefix-LSA、Inter-Area-Router-LSA、NSSA LSA 和 Intra-Area-Prefix-LSA;
3)AS 范围。LSA 在整个路由域(自治系统)中扩散,包括:AS-External-LSA;
OSPFv3 Body : LSU : LSA : Body : LSA TYPE 1 (Router-LSA)
在 OSPFv2 中,通过 Link Type、Link ID 以及 Link Data 来描述一个接口信息;
在 OSPFv3 中,设备会为每个运行 OSPFv3 接口所在的区域产生一个 LSA,描述了设备的链路状态(Link Type、Interface ID、Neighbor Interface ID 和 Neighbor Router ID )和开销,在所属的区域内传播;
重要字段介绍:
Link Type:1 Byte,链路类型;
Interface ID:4 Byte,接口 ID;
Neighbor Interface ID:4 Byte,邻居的接口 ID;
Neighbor Router ID:4 Byte,邻居的路由器 ID;
OSPFv3 的 Router-LSA 字段解释:
W:Wild-Card Receiver,值为 1 时,表示该路由器支持组播路由;
V:Virtual Link,值为 1 时,表示产生此 LSA 的路由器是虚连接的一端;
E:External,值为 1 时,表示产生此 LSA 的路由器是 ASBR;
B:Border,值为 1 时,表示产生此 LSA 的路由器是 ABR;
Options:3 Byte,可选项;
DC:1 bit,表示是否具有支持按需电路的能力;
R:1 bit,指明始发路由器是否是一台有效的路由器;
NP:1 bit,表示是否为 NSSA 区域;
MC:1 bit,表示是否支持转发组播数据报文;
E:1 bit,表示是否支持外部路由;
V6:1 bit,表示是否参与 IPv6 路由计算。如果该位为 0,表示该路由器或链路不参与 IPv6 路由计算;
Link Type:1 Byte,链路类型;
1:点到点连接到另一台路由器;
2:连接到一个传送网络(Transit Network);
3:保留;
4:虚链路;
Metric:2 Byte,流量出接口的开销值;
OSPFv3 Body : LSU : LSA : Body : LSA TYPE 2 (Network-LSA)
与 OSPFv2 相比,OSPFv3 的 Network-LSA 删除了网络掩码字段,仅用相连的路由器的 Router ID 来描述本网段的链路状态,由 DR 产生,在所属的区域内传播;
OSPFv3 的 Network-LSA 字段解释:
Attached Router:4 Byte,相连的路由器,指连接在同一个网段上的所有路由器的 Router ID,也包括 DR 的 Router ID;
Options:与 Router-LSA 中的 Options 字段相同;
OSPFv3 Body : LSU : LSA : Body : LSA TYPE 3 (Inter-Area-Prefix-LSA)
与 OSPFv2 类似,由 ABR 产生,描述区域内某个 IPv6 地址前缀的路由,并通告给其他相关区域。每个 IPv6 地址前缀,ABR 都会单独发送一个 Type3 的 LSA;
重要字段介绍(描述前缀的三元组)
PrefixLength:1 Byte,前缀的比特数;
PrefixOptions:1 Byte,表示这个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理。由 LSA 公告的每个前缀都拥有一个自己的 PrefixOptions 字段;
PrefixOptions 字段格式如下:
P:1 bit,传播位。如果一个 NSSA 区域的前缀需要被 ABR 传播出去,就需要设置这一位;
MC:1 bit,组播位;如果设置为 1,则这个前缀应该纳入组播计算中,否则不纳入组播计算;
LA:1 bit,本地地址位;本地地址位。如果设置为 1,则这个前缀是路由器的一个接口地址;
NU:1 bit,非单播位;如果设置为 1,则这个前缀不会纳入 IPv6 单播路由计算中;
Address Prefix:变长,IPv6 地址前缀;
其他字段
Metric:3 Byte,到目的地址的开销值;
注意事项
缺省路由的前缀长度为 0。ABR 也能够始发一个区域间 Type3 的 LSA 向一个末梢区域通告一条缺省路由;
OSPFv3 Body : LSU : LSA : Body : LSA TYPE 4 (Inter-Area-Router-LSA)
与 OSPFv2 类似,由 ABR 产生,描述到 ASBR 的路由,通告给除 ASBR 所在区域的其他相关区域。对于所描述的每一个 ASBR,ABR 都会单独发送一个 Type4 的 LSA ;
重要字段介绍:
Destination Router ID:4 Byte,LSA 中描述的目的路由器的 Router ID,即 ASBR 的 Router ID;
Options:Options 字段描述的不是源路由器的能力,而是目的路由器所支持的能力,所以此字段值应该等于目的路由器的 Router-LSA 的 Options 字段值;
Metric:3 Byte,到目的地址的开销值;
OSPFv3 Body : LSU : LSA : Body : LSA TYPE 5 (AS-External-LSA)
与 OSPFv2 类似,由 ASBR 产生,描述到达 AS 外部的一个前缀的路由,通告到所有的区域(除了 Stub 区域和 NSSA 区域);
字段解释:
E:1 bit,外部路由的 Metric 类型;
如果设置为 1,表示此为 2 类外部路由,其 Metric 不随着路由的传递而增长;
如果设置为 0,表示此为 1 类外部路由,其 Metric 随着路由的传递而增长;
F:1 bit,如果设置为 1,则表示后面的 Forwarding Address 可选字段存在;
T:1 bit,如果设置为 1,则表示后面的 External Route Tag 可选字段存在;
Metric:3 Byte,到目的地址的开销值;
PrefixLength、PrefixOptions 和 Address Prefix 为描述前缀的三元组,与 Inter-Area-Prefix-LSA 中该字段含义相同;
Forwarding Address:4 Byte,可选的 128 位 IPv6 地址,当前面的 F 位为 1 时存在。表示到达目的的数据应该转发到这个地址;
External Route Tag:4 Byte,可选的标记位。可以用于 ASBR 之间的通信。一个比较常见的例子是:在 OSPF 自治系统的两个边界路由器上进行路由引入时,通过对引入的路由进行标记,可以很方便地进行路由过滤;
Referenced Link State ID:4 Byte,若 Referenced LS Type 不为 0,则该字段存在,表示引用链路状态 ID;
Referenced LS Type:2 Byte,引用链路状态类型,表明这个 LSA 是否需要参考其他 LSA;
0:不参考
1:参考 Router-LSA
2:参考 Network-LSA
OSPFv3 Body : LSU : LSA : Body : LSA TYPE 8 (Link-LSA)
每个设备都会为每个链路产生一个 Link-LSA,仅在始发链路内泛洪;
Link-LSA 作用:
向该链路上其他路由器通告本接口的链路本地地址;
向该链路上其他路由器通告本接口的 IPv6 前缀列表;
向该链路上其他路由器通告本链路始发的 Network-LSA 中设置的可选项;
重要字段介绍:
Link-Local Interface Address:16 Byte,路由器与该链路相连的接口上配置的链路本地地址(该地址只出现在 Link-LSA 中);
Rtr Pri:1 Byte,该路由器在该链路上的优先级(Router Priority);
Options:3 Byte,提供给 Network-LSA 的 Options;
Number of Prefixes:4 Byte,该 LSA 中携带的 IPv6 地址前缀个数;
PrefixLength、PrefixOptions 和 Address Prefix 为描述前缀的三元组,与 Inter-Area-Prefix-LSA 中该字段含义相同;
OSPFv3 Body : LSU : LSA : Body : LSA TYPE 9 (Intra-Area-Prefix-LSA)
在 OSPFv2 中,可以通过 Type1 和 Type2 的 LSA 来描述拓扑信息和网段信息;而 OSPFv3 的此两类 LSA 仅包含拓扑信息,那 OSPFv3 如何描述网段信息呢?
Type9 LSA 描述的是网段信息,只在所属的区域内传播,它需要依赖于拓扑信息,才能实现 OSPFv3 的路由计算。其类型可以分为两种:
每台设备均产生描述与 Router-LSA 相关联的 IPv6 前缀地址的 Type9 LSA;
DR 会产生描述与 Network-LSA 相关联的 IPv6 前缀地址的 Type9 LSA;
Number of Prefixes:4 Byte,该 LSA 中携带的 IPv6 地址前缀个数。必要的话,可以通过多个 Intra-Area-Prefix-LSA 来携带前缀,这样可以控制 LSA 的长度;
Referenced LS type:4 Byte,表明这个 LSA 是参考一个 Router-LSA,还是一个 Network-LSA;
1)取值 1:表示参考一个 Router-LSA
2)取值 2:表示参考一个 Network-LSA;
Referenced Link State ID:4 Byte;
1)设为 0:当这个 LSA 是参考一个 Router-LSA 时;
2)设为该链路的 DR 的 Interface ID:当这个 LSA 是参考一个 Network-LSA 时;
Referenced Advertising Router:4 Byte;
1)设为这个路由器的 Router ID:当这个 LSA 是参考一个 Router-LSA 时;
2)设为该链路的 DR 的 Router ID:当这个 LSA 是参考一个 Network-LSA 时;
PrefixLength、PrefixOptions 和 Address Prefix 为描述前缀的三元组,与 Inter-Area-Prefix-LSA 中该字段含义相同;
Metric:2 Byte,前缀开销值。与 Router-LSA 的接口开销值相同单位;
在 OSPFv3 中,当一条链路或它的前缀发生变化时,相连的路由器会发送一个 Intra-Area-Prefix-LSA。但是,这条 LSA 不会触发 SPF 计算;
LSA Structure
[R2]display ospfv3 lsdb * indicates STALE LSA OSPFv3 Router with ID (10.1.2.2) (Process 1) // ---------------------------------------------------------------------------- // TYPE 8 LSA Link-LSA (Interface GigabitEthernet0/0/0) Link State ID Origin Router Age Seq# CkSum Prefix 0.0.0.3 10.1.2.2 0080 0x80000002 0x1c52 1 0.0.0.4 10.1.3.3 0075 0x80000002 0x2a59 1 0.0.0.5 10.1.4.4 0089 0x80000002 0xe2a3 1 // ---------------------------------------------------------------------------- // TYPE 8 LSA Link-LSA (Interface GigabitEthernet0/0/1) Link State ID Origin Router Age Seq# CkSum Prefix 0.0.0.4 10.1.1.1 0070 0x80000002 0xe971 1 0.0.0.4 10.1.2.2 0069 0x80000002 0x9fdd 1 Router-LSA (Area 0.0.0.0) …… Network-LSA (Area 0.0.0.0) Link State ID Origin Router Age Seq# CkSum 0.0.0.4 10.1.2.2 0030 0x80000001 0x9564 0.0.0.5 10.1.4.4 0036 0x80000002 0xc810 Intra-Area-Prefix-LSA (Area 0.0.0.0) Link State ID Origin Router Age Seq# CkSum Prefix Reference 0.0.0.1 10.1.2.2 0028 0x80000006 0x1527 1 Network-LSA 0.0.0.1 10.1.4.4 0034 0x80000003 0xfc28 1 Network-LSA [R2]display ospfv3 lsdb * indicates STALE LSA OSPFv3 Router with ID (10.1.2.2) (Process 1) Link-LSA (Interface GigabitEthernet0/0/0) Link State ID Origin Router Age Seq# CkSum Prefix 0.0.0.3 10.1.2.2 0080 0x80000002 0x1c52 1 0.0.0.4 10.1.3.3 0075 0x80000002 0x2a59 1 0.0.0.5 10.1.4.4 0089 0x80000002 0xe2a3 1 Link-LSA (Interface GigabitEthernet0/0/1) Link State ID Origin Router Age Seq# CkSum Prefix 0.0.0.4 10.1.1.1 0070 0x80000002 0xe971 1 0.0.0.4 10.1.2.2 0069 0x80000002 0x9fdd 1 Router-LSA (Area 0.0.0.0) …… Network-LSA (Area 0.0.0.0) Link State ID Origin Router Age Seq# CkSum 0.0.0.4 10.1.2.2 0030 0x80000001 0x9564 0.0.0.5 10.1.4.4 0036 0x80000002 0xc810 // ---------------------------------------------------------------------------- // TYPE 9 LSA Intra-Area-Prefix-LSA (Area 0.0.0.0) Link State ID Origin Router Age Seq# CkSum Prefix Reference 0.0.0.1 10.1.2.2 0028 0x80000006 0x1527 1 Network-LSA 0.0.0.1 10.1.4.4 0034 0x80000003 0xfc28 1 Network-LSA
Link-LSA Detail
[R2]display ospfv3 lsdb link 0.0.0.5 OSPFv3 Router with ID (10.1.2.2) (Process 1) Link-LSA (Interface GigabitEthernet0/0/0) LS Age: 446 LS Type: Link-LSA Link State ID: 0.0.0.5 Originating Router: 10.1.4.4 LS Seq Number: 0x80000002 Retransmit Count: 0 Checksum: 0xE2A3 Length: 56 Priority: 1 Options: 0x000013 (-|R|-|-|E|V6) Link-Local Address: FE80::2E0:FCFF:FEAC:6C5 // ------------------------------ // 链路本地地址 Number of Prefixes: 1 Prefix: 2001:DB8:2345:23::/64 // ------------------------------------------- // 直连网段的 IPv6 地址前缀 Prefix Options: 0 (-|-|-|-|-)
输出信息解释:
LS age:LSA 的老化时间。
LS Type:LSA 的类型,包括:Router-LSA、Network-LSA、Inter-Area-Prefix-LSA、Inter-Area-Router-LSA、AS-external-LSA、NSSA-LSA、Link-LSA、Intra-Area-Prefix-LSA。
Link State ID:LSA 报文头中的链路状态 ID。
Originating Router:产生 LSA 的路由器。
LS Seq Number:LSA 序列号(来自 LSA 报头)。
Checksum:LSA 的校验和。
Length:LSA 的长度。
Priority:该 Link 对应接口的优先级。
Options:该 Link 的 Option 值。
Link-Local Address:链路本地地址。
Number of Prefixes:该 LSA 中包含的 IPv6 前缀数目。
Prefix:IPv6 前缀。
Prefix Options:前缀 Option 值。
Intra-Area-Prefix-LSA Detail
[R2]display ospfv3 lsdb intra-prefix OSPFv3 Router with ID (10.1.2.2) (Process 1) Intra-Area-Prefix-LSA (Area 0.0.0.0) …… LS Age: 556 LS Type: Intra-Area-Prefix-LSA Link State ID: 0.0.0.1 Originating Router: 10.1.4.4 LS Seq Number: 0x80000003 Retransmit Count: 0 Checksum: 0xFC28 Length: 44 Number of Prefixes: 1 // -------------------------------------------------------------------------- // 参考由DR(R4)产生的Network-LSA Referenced LS Type: 0x2002 Referenced Link State ID: 0.0.0.5 Referenced Originating Router: 10.1.4.4 Prefix: 2001:DB8:2345:23::/64 // ------------------------------------------- // 由DR产生,路由器直接相连的传输网段的IPv6地址前缀 Prefix Options: 0 (-|-|-|-|-) Metric: 0