1. 特征
- OSPFv3 在 OSPFv2 基础上进行了修改,是一个独立的路由协议(RFC5340、RFC2740)
- 协议号依然是 89(与 OSPFv2 相同)
- 通过包头的 Type 字段标识 5 种包类型(Hello、DD、LSR、LSU、LSAck)
- 采用 Link-Local 地址作为源发送协议报文(除了 Virtual-Link 外)
- 路由和拓扑分离,通过 Intra-Area-Prefix LSA(LSA Type 9)关联
- 通过组播地址作为目的发送协议报文,「IPv6 中 Hop Limit=1(相当于 TTL 值)」
- FF02::5(All-SPF Router)
- FF02::6(All-DR/BDR Router)
- IPv6 地址的变化对 OSPFv3 的影响
1)相同点和不同点
- 相同点:
- 网络类型和接口类型
- 接口状态机和邻居状态机
- 都有链路状态数据库(LSDB)
- 泛洪机制相同
- 五种协议报文(Heelo、DD、LSP、LSU、LSAck)
- 路由计算基本相同(SPF)
不同点:
OSPFv2 是基于网络运行的,两个路由器之间必须在同一个网段才会形成邻居关系
- OSPFv3 是基于链路实现的,一个链路可以划分为多个子网节点,即使不在同一个子网内,只要在同一链路上就可以直接通信
3)OSPFv3 使用链路本地地址
- OSPFv3 的路由器使用链路本地地址作为发送报文的源地址,目的是组播(虚连接除外)
- 在虚连接上, 必须使用全球单播地址或者唯一本地地址作为 OSPFv3 协议报文的源地址
由于链路本地地址只在本链路上有意义且只能在本链路上泛洪,因此链路本地地址只能出现在 Link LSA(LSA Type 8)
4)OSPFv3 通过 Router ID 唯一标识邻居
在 OSPFv2 中,当网络类型为 P2P 或通过 Vlink 与邻居相连时,通过 Router ID 来标识邻居路由器;当网络类型为 Broadcast 或 NBMA 时,通过邻居接口的 IP 来表示邻居路由器
在 OSPFv3 中,无论如何都采用 Router ID 来唯一标识邻居。如果没有指定 Router ID,OSPFv3 协议不会工作
5)OSPFv3 认证的变化
OSPFv2 认证在报文的Header中
OSPFv3 认证一般依赖 IPv6 的扩展验证头(IPsec),并使用 IPv6 标准的校验和
6)OSPFv3 对未知 LSA 的泛洪
OSPFv2 不支持对未知类型的 LSA 进行泛洪
OSPFv3 支持对未知类型的 LSA 进行泛洪。只有当未知类型 LSA 的泛洪范围是区域(LSA Type 8)或链路,而且 LSA 头部报文中
U-bit
没有置位时,未知类型 LSA 才可以向 Stub 区域泛洪(防止大量的未知 LSA 泛洪到 Stub 区域)7)OSPFv3 链路支持多实例
支持在同一链路上运行多个实例,实现链路复用(接口可以配置多实例,但是不能是同一个进程)
- 在 Hello 报文中添加 Instance ID 字段来实现
- 如果接口配置的 Instance ID 与接收到 Hello 报文的 Instance ID 不匹配,则丢弃报文,从而无法建立邻居
- 默认实例 0,同一进程只能关联一个实例,不同进程可以关联不同实例
8)OSPFv3 的报文头部和 Hello 报文的格式不同
增加了 Instance ID,取消了认证和掩码
OSPFv3 报文格式解析
- Version :版本,对于 OSPFv2 该值是 2;对于 OSPFv3 则是 3
- Type:与 OSPFv2 相同
- 1:Hello
- 2:DD
- 3:LSR
- 4:LSU
- 5:LSAck
- Packet LengthLength:OSPFv3 报文长度 ,2字节
- RouterID :路由器 ID
- Area ID :区域 ID
- Checksum :校验和
- Instance ID :链路实例 ID,用来标识发送该 Hello 报文的接口 ID,仅用来区分同一路由器上的不同接口,不包含接口信息。通过判断该字段就可以区分同一链路上运行的不同 OSPF 实例,默认 = 0[实例 ID 只在本地链路范围内具有意义]
- Reserved( 保留 ):保留字段,总是 0
- Rtr Pri:路由器优先级,优先级高的成为 DR
-
9)OSPFv3 的 Option 字段不同
OSPFv2 中,Option 字段出现在每个 Hello 报文、DD 报文和所有 LSA 中
- OSPFv3 中,Option 字段只在 Hello 报文、DD、LSA Type 1、LSA Type 2、LSA Type 4、LSA Type 8 中出现
OSPFv3 Option 字段解释
- DC:描述路由器是否支持按需拨号
- R:路由器位,用来标识设备是否具备转发能力的路由器
- R=1:宣告该节点的路由信息将参与路由计算
- R=0:宣告该节点的路由信息将不会参与路由计算。可以使设备不转发非本地地址的报文
- N:是否是在 NSSA 区域,描述了路由器对 LSA Type 7 的处理
- MC:描述路由器是否运行了 MOSPF
- E:描述该区域是否能泛洪 AS external LSA,如果 E-bit 设置不正确,邻接关系就不能形成
- E=1:支持 LSA Type 5 的泛洪
- E=0:不支持 LSA Type 5 的泛洪
- V6:用来标识路由器或链路是否参与 IPv6 路由计算
OSPFv3 LSA 新增类型解释
- U:指示路由器如何处理无法识别的 LSA
- U=0:按照 S2/S1 标识的范围进行泛洪
- U=1:作为 Link-Loacl 范围的 LSA 进行泛洪
- S2/S1:共同标识 LSA 的泛洪范围
- S2=0,S1=0:Link-Local Scope(链路本地范围),LSA只在本地链路上泛洪(新增的8类Link-LSA),不会超出这个范围
- S2=0,S1=1:Area Scope(区域范围),在 LSA Type 1、2、3、4、9 区域范围泛洪
- S2=1,S1=0:AS Scope(自治系统范围),LSA 将泛洪到整个路由域(LSA Type 5)
- LSA Function Code:LSA 的类型编码
3. OSPFv3 LSA类型
- Router LSA 不再包含地址信息而是通过 ID 标识,运行 OSPFv3 的设备为它所连接的每条链路产生单独的 Link LSA,用来表示接口
- LSA Type 8 将该接口的 Link-Local 地址以及所有 IPv6 地址信息向该接口的其他路由器通告
- Router LSA 和 Network LSA 不再包含路由信息(只有拓扑信息),这两类 LSA 所携带的路由信息由 Intra Area Prefix LSA 来描述
- LSA Type 9 包含路由信息,并用来公告一个或多个 IPv6 地址前缀
| LSA 类型 | LSA 生成 | LSA 作用和泛洪范围 |
| —- | —- | —- |
| Router LSA(Type 1) | 每个设备都会产生 |
- 描述设备的链路状态和开销
- 在所属的区域内泛洪
| | Network LSA(Type 2) | DR 产生 |
- 描述网络中所链设备的 Router ID
- 在所属的区域内泛洪
| | Inter-Area-Prefix LSA(Type 3) | ABR 产生 |
- 描述区域内某个网段的路由
- 在非 Totally Stub/Nssa 区域的相关区域防洪(跨区域传播,但是每经过一个 ABR,Adv 会改变)
| | Inter-Area-Router LSA(Type 4) | ABR 产生 |
- 描述 ASBR 的位置信息
- 在非 Totally Stub 区域的相关区域泛洪(跨区域传播,但是每经过一个 ABR 会改变 Adv 进行跨区域通告)
| | AS-External LSA(Type 5) | ASBR 产生 |
- 描述 ASBR 到达外部目标网络的路由信息
- 在非 Stub/Nssa 区域的整个 OSPFv3 域中泛洪
| | NSSA LSA(Type 7) | ASBR 产生 |
- 描述 Nssa 中 ASBR 到达外部目标网络的路由信息
- 在 Nssa 区域内泛洪,经过 ABR 会将 LSA Type 7 转 LSA Type 5
| | Link LSA(Type 8) | 每个设备为每个链路都会产生 |
- 描述此链路上的 Link-loacl、IPv6 前缀地址,并提供在 LSA Type 2 中设置的链路选项
- 在该链路内泛洪
| | Intra-Area-Prefix-LSA(Type 9) | 每个设备和 DR 都会产生 |
- 如果是设备产生,描述与 Type 1 LSA 相关的 IPv6 前缀;如果是 DR 产生,描述与 LSA Type 2 相关的 IPv6 前缀
- 在所属的区域内泛洪
|
- LSA Type 9 包含路由信息,并用来公告一个或多个 IPv6 地址前缀
| LSA 类型 | LSA 生成 | LSA 作用和泛洪范围 |
| —- | —- | —- |
| Router LSA(Type 1) | 每个设备都会产生 |
1)Router LSA(LSA Type 1)
- 通过 Originating Router 标识发起该 LSA 的 Router ID
- 不包含前缀信息、StubNet 类型,只描述路由器的一个接口链路状态和开销
- 每个 LSA Type 1 包含若干链路描述,设备会为每个运行 OSPFv3 的接口在所在区域产生。可以使用多个 LSA Type 1 描述信息,通过 Link State ID 区分多个不同的 Router LSA
- Flags 字段:相比 OSPFv2,新增了一个
W
字段- W:表明是 MOSPF(支持组播,相比 OSPFv2 新增)
- E-:表明是 ASBR
- V:表明是虚链路
- B:表明是 ABR
- 链路类型 | Type | Neighbor Router ID | Neighbor Interface ID | | —- | —- | —- | | P2P | 邻居的 Router ID | 邻居的接口 ID | | Transit | DR 的 Router ID | DR 的接口 ID | | Virtual Link | 邻居的 Router ID | 邻居的 Vlink 接口 ID |
2)Network LSA(LSA Type 2)
- 取消了 IPv6 中无关紧要的掩码
- 通过 Link State ID 与 DR 的接口 ID 相关联
- 通过 Originating Router 标识 DR 的 Router ID
3)Inter-Area-Prefix LSA(LSA Type 3)
- Link State ID 仅用来区分相同的 LSA
- 每个 LSA Type 3 包含一条具体地址的前缀信息或汇总地址的前缀信息
- LSA Type 3 中不包含 Link-Local 地址信息
4)Inter-Area-Router LSA(LSA Type 4)
- Link State ID 用来表示 ASBR 的 Router ID
- 由 Originating Router 标识 ABR 设备,每经过一个 ABR 会改变 Originating Router
- 每个 LSA Type 4 包含一个 ASBR 路由器位置信息
- ASBR Router LSA 中的能力选项(Options)与 LSA 中所描述的中能力选项(Options)保持一致
5)AS-External LSA(LSA Type 5)
- Link State ID 仅用来区分相同的 LSA
- LSA Type 5 不含有Link-Local地址信息
- Flags:
- E-bit:表示外部类型
- E=0:表示外部类型为OE1
- E=1:表示外部类型为OE2(默认)
- F-bit:表示有转发地址可选项
- T-bit:表示有外部 Tag 可选项
- E-bit:表示外部类型
- 可选项:
- Forwarding
- Tag
6)Link LSA(LSA Type 8)
- 各个字段解释
- Rtr Pri:路由器在该链路的优先级,用于选举 DR
- Option:提供给 LSA Type 2 的可选项
- Link Local Interface Address:路由器接口上配置的 Link-Local 地址(Link-Local 只出现在 LSA Type 8 中)
- Prefix:LSA 携带了多少 IPv6 地址前缀
- 仅在本链路上传播
- 通过该 LSA 进行 DR/BDR 选举
- 向本链路上的其他路由器提供本链路的 Link-Local 地址,作为下一跳地址;并通告本链路上的 IPv6 地址前缀,使其与本链路相关联
- 允许路由器在该类型 LSA 中插入其他可选项,与本链路产生的 LSA Type 2 相关联
7)Intra-Area-Prefix LSA(LSA Type 9)
OSPFv3 由 Prefix-length,Prefix Option,Prefix 表示前缀信息
- 为什么引入 Intra-Area-Prefix-LSA?
- OSPFv2 中,依附于路由器和 Stub 网络的 Subnet 出现在 Router LSA 中,依附于 Transit 网络的 Subnet 出现在 Network-LSA 中
- OSPFv3 中,Router-LSA 和 Network-LSA 不再包含地址信息,所以引入 Intra-Area-Prefix-LSA
- 区域内泛洪
- 每台路由器或 Transit 网络可以产生多个 Intra-Area-Prefix-LSA
- Referenced LS type:表明这个 LSA 是参考一个 LSA Type 1,还是一个 LSA Type 2
- Type=0x2001:表示参考一个 LSA Type 1
- Type=0x2002:表示参考一个 LSA Type 2
- Referenced Link State ID:
- 当这个 LSA 是参考一个 LSA Type 1 时,设置为 0
- 当这个 LSA 是参考一个 LSA Type 2 时,设置为该链路的 DR 的 Interface ID
- Referenced Advertising Router:
- 当这个 LSA 是参考一个 LSA Type 1 时,设置为该路由器的 Router ID
- 当这个 LSA 是参考一个 LSA Type 2 时,设置为该链路 DR 的 Router ID
- Intra-Area-Prefix-LSA 携带区域内 IPv6 Prefix 信息
- 依附于路由器的 Prefix(LSA Type 1)
- 依附于 Stub 网络的 Prefix(LSA Type 2)
- 依附于 Transit 网络的 Prefix(LSA Type 1)
Prefix Option 的前缀表示方法:
- P=1:传播位,表示 NSSA 区域的前缀要被ABR传播出去
- MC=1:组播位,这个前缀应该纳入组播计算
- LA=1:本地地址位,这个前缀是路由器的一个接口地址
- NU=1:这个前缀不会纳入 IPv6 单播计算