OSPFv3 中 LSA8、LSA9 详解

OSPFv3 是基于 IPv6 的 OSPF 协议,它工作在 IPv6 上,类似于 MP-BGP,可支持多协议,如 IPv4 及 IPv6。华为目前的 OSPFv3 实现仅支持 IPv6。IETF RFC 5340 及 5838 定义了 OSPFv3 对多协议的支持。

OSPFv3 在 OSPFv2 基础上进行了改进,是一个独立的路由协议。在华为设备上,如果要支持 IPv4 和 IPv6,需要同时配置 OSPFv2 及 OSPFv3 两个路由进程。

OSPFv3 设计时基于 OSPFv2,但又区别于 OSPFv2,其改进了 OSPFv2 协议的缺点,增强了协议的扩展性及灵活性。以下从 OSPFv3 和 OSPFv2 对比的角度对 OSPFv3 加以阐述。

OSPFv3 与 OSPFv2 的相同点

OSPFv3 基于 OSPFv2,所以有很多相同点:

  1. 网络类型和接口类型;

  2. 接口状态机和邻居状态机;

  3. 链路状态数据库(LSDB);

  4. 洪泛机制;

  5. 相同类型的报文:Hello 报文、DD 报文、LSR 报文、LSU 报文和 LSAck 报文;

  6. 算法及路由计算过程。

OSPFv3 与 OSPFv2 的不同点

OSPFv3 工作在 IPv6 上,而 OSPFv2 工作在 IPv4 上,其他细节如下。

1. OSPFv3 基于链路,而不是网段

OSPFv3 运行在 IPv6 协议上,IPv6 是基于链路而不是网段的,即不论接口是否配置 ULA(Unique Local Address)/GUA(Global Unicast Address)的地址,也不论路由器间接口地址是否在同一个网段,只要彼此接在同一个链路上,即可建立 OSPF 邻居关系。

2. OSPFv3 利用 IPv6 链路本地地址

OSPFv3 使用链路本地地址(link-local)来维持邻居,同步 LSDB。链路上的报文,除 Vlink 外的所有 OSPFv3 接口都使用链路本地地址作为报文源地址。

这样的好处是:

  1. 不需要配置 IPv6 全局地址,就可以得到 OSPFv3 拓扑,实现拓扑与地址分离;
  2. 在链路本地地址上泛洪的报文不会传到其他链路上,可减少报文不必要的泛洪。

说明:
- IPv6 的链路本地(link-local)地址用于在同一链路上发现邻居及自动配置等;
- 运行 IPv6 的路由器不转发目的地址为链路本地地址的 IPv6 报文,此类报文只在本地链路有效;
- 链路本地单播地址的前缀是 FE80::/10。

3. OSPFv3 协议报文上移除了“协议地址,即 IPv4 地址”的语义

OSPFv2 的 LSA1/LSA2 中含有太多和 IPv4 协议地址相关的信息,如 LSA1 中的任何一种类型的 Link(除 StubNet 外),其 Link Data 是设备本地接口的 IPv4 地址,Link ID 是 DR 的接口 IP 或邻居的 RID 等。

通过观察 LSA1/LSA2 的内容就可知 OSPF 传递的 IPv4 协议。如果 IPv6 OSPFv3 依然使用这种方式,IPv6 协议地址会占用 LSA 中过多字节空间,若将来扩展 OSPFv3 使其支持新的协议地址,也需要重新改写协议报文,所以 OSPFv3 在设计现有的协议报文时,从 LSA 中“移除”对协议地址的依赖性。

可知 OSPFv3 LSA1/2 中用于表述拓扑时,用二元组[RID,接口 ID]来取代 OSPFv2 中针对对方节点的表示,用接口 ID 来取代本地接口的 IP 地址;LSA1/2 中没有使用任何协议地址,这样做的结果是 LSA1/2 中“拓扑与协议地址分离了”,不再依赖于协议地址,LSA1/LSA2 描述的拓扑可以为任何协议簇服务,RFC 5838 已经设计 OSPFv3 成为可支持 IPv4 及 IPv6 等协议的路由协议,不需要为每个协议单独创建协议进程,但目前华为尚不支持。

在 IPv4 和 IPv6 双栈的环境中仍需同时运行 OSPFv2 和 OSPFv3 的双进程。例外是 OSPFv3 的 Vlink 场景,非直连的邻居需要靠 Global Unicast 地址来标识。IPv6 全局地址仅出现在 Vlink 接口及报文的转发的场合

4. 链路间的泛洪范围

OSPFv3 添加了链路间的泛洪范围,新的 LSA8(Link LSA)类型仅可以在邻居之间通告,其 LSA 不会被泛洪到其他链路。LSA8 所承载的内容仅在直连的邻居之间有用,用于通告该 link 上的前缀及 link-local 地址。

5. OSPFv3 支持一个链路上多个进程

OSPFv3 在 OSPF 报文头添加了一个新的字域:Instance ID,它是定义在接口的标识 OSPF 实例的 0~255 的数。OSPFv2 下,一个接口上只能有一个 OSPF 实例运行,现在可以让一个接口同时运行多个 OSPF 实例,彼此使用不同的 Instance ID 区分。这些运行在同一条物理链路上的多个 OSPFv3 实例分别与同链路上多个相同实例 ID 的邻居建立邻居关系,这可使一个网段上同时出现多个 OSPF 路由域,彼此互不干扰,可以充分共享同一链路资源。

如果 OSPFv3 报文收到实例号不同的 Hello 报文,则忽略,邻居关系建立不起来。实例号出现在 OSPFv3 头中,通过定义不同的值实现 OSPF 实例隔离。

6. OSPFv3 移除所有认证字段

OSPFv3 移除 OSPFv2 的接口或区域下的验证,原因是 OSPFv3 可直接使用 IPv6 扩展报文头的认证及安全机制,不需要再重复提供认证,使用协议时只需关注协议本身即可,降低协议的复杂性。

7. OSPFv3 只通过 Router ID 来标识邻居

OSPFv3 只通过 Router ID 来标识邻居,这样即使没有配置 IPv6 全局地址,或是 IPv6 全局地址配置都不在同一网段,OSPFv3 的邻居仍可以建立起来。OSPFv3 中 Router ID 和 OSPFv2 中一样,是 32 位的数,在 OSPFv3 中,可手动为 OSPFv3 路由器设置 Router ID。

8. 新增两种 LSA

Link LSA:用于宣告链路上的 Link-local 地址及 IPv6 Prefix 地址,其仅在本地链路上泛洪。

Intra Area Prefix LSA:用于向其他路由器宣告本路由器或本网络(广播网及 NBMA)的 IPv6 全局地址信息,在区域内泛洪。

OSPFv3 中 LSA 的定义

类型分类

表 列出新的 LSA 及其对应类型,OSPFv3 添加新的类型 Link LSA 和 Intra Area Prefix LSA。

OSPFv3 与 OSPFv2 LSA 对比

OSPFv3 LSAs TypeNameOSPFv2 LSAs TypeName
0x2001Router LSA1Router LSA
0x2002Network LSA2Network LSA
0x2003Inter-Area Prefix LSA3Network Summary LSA
0x2004Inter-Area Prefix LSA4ASBR Summary LSA
0x4005AS-External LSA5AS-External LSA
0x2006Group Membership LSA6Group Membership LSA
0x2007Type-7 LSA7NSSA External LSA
0x2008Link LSA8No Corresponding LSA
0x2009Intra-Area Prefix LSA9No Corresponding LSA

泛洪范围

OSPFv3 LSA 头中没有 Options 字域,Link State Type 是 16 位字域,不同于 OSPFv2 的 8 位字域,OSPFv3 对 LinkStateType 的高 3 位做了定义,代表泛洪范围。

  • U 位:U 代表如果路由器并不识别该 LSA 的时候该怎么做。如果 U 位没有置位,对未知的 LSA 仅在直连链路间泛洪。如果 U 位置位,对未知的 LSA 像已知的 LSA 一样,存储并泛洪,默认为 0。

  • S2 和 S1 位:S2 和 S1 组合定义了 LSA 的泛洪范围,上表中,高 4 位所确定的数值 0x0 代表 Link-local 范围,0x2 代表区域内泛洪,0x4 代表整个路由域泛洪,其 Link-local 泛洪范围是 OSPFv3 新添加的一类范围。

    S2、SI 定义的泛洪范围

S2S1Flooding Scope
00Link-Local
01Area
10AS(Routing Domain)
11Reserved
  • 其他位的 LSA function code,不同数值代表不同类型的 LSA。

OSPFv3 中新 LSA 及其对收敛的影响

Link LSA

Link LSA 用于通告在本链路上直连的路由器间有用的信息,接在本链路上的每台路由器都通告自己的 Link LSA 到直连链路。当然,路由器也会从该接口收到所有接在这条链路上的其他路由器的 Link LSA。Link LSA 中包含以下内容。

  1. 向链路上的其他路由器通告本地 Link-local 地址。

由于 OSPFv3 Router LSA 中 Link Data 中移除了协议地址,代之以接口 ID,拓扑在表达连接关系时多用接口 ID 来描述。但在路由计算时,如果计算经过邻居的接口 0x3 要访问目标网络的路由时,需在当前路由表里添加邻居的 0x3 接口所对应的 IPv6 地址来充当下一跳。OSPFv3 路由的下一跳地址一律是 Link-local 地址,当前路由器知道 0x3 接口的 Link-local 地址需要用到邻居通告的 Link LSA,其中包含 0x3 和 Link-local 地址的对应关系。

  1. 通告关联在路由器上且出现在该链路上的所有 IPv6 前缀信息。

在 OSPFv3 中,区域内的每个节点上的所有前缀都包含在 Intra-Area Prefix LSA 中,但 Intra-Area Prefix LSA 中并没有清楚说明哪些前缀各自对应着哪条链路,而 Link LSA 负责通告指定链路上的前缀信息。

  1. 如果是 MA 网络,通告 LSA2 中选项位的置位情况。

Intra-Area Prefix LSA

OSPFv2 的主要缺点除了不能支持 IPv6 外,还在于其 LSA1/LSA2 会承载和拓扑结构无关的网络信息。因此,在重新设计 OSPFv3 时,我将 LSA1/LSA2 中的网络信息移除至 Intra-Area Prefix LSA 中,此处简称 LSA9。

LSA9 的作用 是携带区域内的网络信息,即原 OSPFv2 的 Router LSA 中的 Stub 网络信息和 LSA2 中的网络信息,放到 OSPFv3 的 LSA9。这样,实现拓扑信息和网络信息分别使用不同的 LSA 来携带。

在 OSPFv3 中,接口上 GUA/ULA 地址配置错误及不一致都不会影响 OSPFv3 的邻居关系。GUA 及 ULA 前缀相对于节点本身而言,就相当于树节点上挂的叶子节点。所以接口的前缀发生变化不影响网络拓扑,不会触发 SPF 计算。

LSA8 实现拓扑和协议地址分离

LSA1/LSA2 移除了对协议地址的依赖,不再包含接口的协议地址,而换之以接口 ID,这实现了拓扑和协议地址的分离。

计算路由时,仍需要接口 IPv4 或 IPv6 地址作为下一跳,所以分离后的接口协议地址由 LSA8 提供。

LSA9 虽通告区域内的前缀,但由于 LSA1/2 的接口用 ID 表示,无法说明 LSA9 中所包含的前缀属于哪个具体的接口,所以 LSA8 在完成接口 ID 和接口 Link-local 地址对应的同时,还包含接口上所拥有的前缀。

通告 Link-local 地址、前缀、接口 ID 的 LSA8 仅在直连路由器之间知晓即可,无需在全网泛洪,因此限定 LSA8 仅在直连链路上泛洪。

LSA9 实现拓扑和网络信息的分离

Link9 通告每个节点(包含虚节点和实节点)的网络信息,其内容是原 LSA1 中的 StubNet 和 LSA2 中的网络信息。设计 LSA9 后,LSA1 和 LSA2 中仅包含用于拓扑计算的拓扑信息,区域内的网络信息使用 LSA9(正确的说是 LSA2009)来携带。这样,网络信息的变化仅影响 LSA9,而不会导致拓扑的重新计算,所以 LSA9 的设计实现了拓扑和网络信息的解耦。

定义 LSA9 使得接口前缀变化,不会触发拓扑的计算。这使 OSPFv3 更适宜支持更多的协议,不论是支持何种协议,OSPFv3 仅需要改造 LSA8 及 LSA9 即可,LSA1/2 不做任何改动。

这使 OSPFv3 具备很强的扩展性和支持多协议的能力。IETF RFC5340 和 RFC5838 定义了 OSPFv3 可支持多协议地址簇,如使 OSPFv3 承载 IPv4 路由、承载 IPv6 路由等。

对收敛的影响

在 OSPFv3 中,Router LSA 和 Network LSA 不再负责通告前缀。所以,在 LSA1 中,看不到描述前缀的 Stub,在 LSA2 中,也看不到定义网络的掩码。这对 OSPFv3 是个改进,它使协议可以使用单独的一类 LSA 去做前缀通告,在区域内,设计了 Intra-Area Prefix LSA。

之所以会有这种变化(或者其变化的必然性在于),OSPFv2 中 LSA1/LSA2 含有拓扑和网络信息,当网络发生变化时,OSPFv2 路由器会更新 LSA 通告这些变化。若 LSA 中含有的拓扑信息发生变化,则新的 LSA 会触发 FULL SPF 或 iSPF 计算。如果仅 Stub 网络变化了,新的 LSA 触发 SPF 计算,拓扑计算前后的结果一样,浪费资源。OSPFv3 把网络放在 LSA9 中,只有 LSA1/2 才会触发 SPF 执行拓扑计算,所以 LSA9 的变化或产生,不会触发 SPF 计算,节省计算资源的同时,计算时间也很短。

因此,OSPFv3 相比 OSPFv2 在收敛时间上会快很多。原因是由于相比于 0SPFv2, 0SPFv3 中,Intra-Area Prefix、 Inter-Area Prefix、Inter-Area Router、as-extemal LSA 及 type-7 LSA,这些是 OSPF 中传递网络前缀或成本信息的 LSA。它们的任何变化,只要拓扑没有同时发生变化,只会触发局部路由计算。


via: huawei


OSPF 知识回顾

逗老师于 2020-07-22 20:42:32 发布

网络界有两个不敢吹牛逼的知识点,OSPF 和 BGP。这两个知识点几乎没人敢说精通,所以抱着敬畏的心,我们开始整理 OSPF 的知识点。

一、老生常谈的 LS 和 DV

自行复习一下 LS 和 DV 都有哪些

1、LS 链路状态路由协议

链路状态协议,通告的是始源的路由信息。
节点可以知道网段的具体始发信息
回想一下 STP 生成树,虽然不是路由协议,但也是基于链路状态的。

2、DV 距离矢量路由协议

距离矢量协议,通告的是逐跳的路由条目。
仅由隔壁邻居向你通告他能去哪里,所以仅能知道网段的下一跳信息。
因此,会有最大条数限制,RIP 最大 15 跳。

3、DV、LS 详细解释和分析

二、OSPF 建立连接过程

在这里插入图片描述

1、邻居关系建立过程(DOWN->Init->2-Way 阶段)

Hello 报文组播地址 224.0.0.5,Hello 包交互完就可以完成邻居关系建立了。

1.1、过程图

1.2、报文截图

Hello 报文内主要携带以下信息

1.3、系统 debug 日志
OSPF 1: Nbr 10.0.0.1 Rcv HelloReceived State Down -> Init.
OSPF 1: Nbr 10.0.0.1 Rcv 2WayReceived State Init -> 2Way.
12

2、邻接关系建立过程(2-way->Full 阶段)

2.1、过程图

2.2、过程详细说明

整个过程的全部状态是 2Way -> ExStart -> Exchange -> Loading -> Full
ExStart开始选举 DBD 交互时的 master。 注意,在这个 macter 与 DR/BDR 概念无关,及时 P2P 链路在进行 DBD 摘要交互时,仍然存在主从关系。ExStart 是选举完 DR/BDR 之后的状态
Exchange开始交换 DBD 摘要。 注意,DBD 交互时候的隐示确认机制,交互 DBD 摘要的时候,DD Seq 只由主设备产生。
Loading:完成 DBD 交互同步,开始通过 LSR 和 LSU 交互详细信息。
Full完成所有 LSU 的交互,构建完整的 LSDB,进入 Full 状态。之后,根据本地的完整 LSDB 数据库,根据 SPF 算法计算本地 OSPF 路由表。

2.3、系统 ebug 日志
OSPF 1: Nbr 10.0.0.1 Rcv AdjOk? State 2Way -> ExStart.
OSPF 1: Nbr 10.0.0.1 Rcv NegotiationDone State ExStart -> Exchange.
OSPF 1: Nbr 10.0.0.1 Rcv ExchangeDone State Exchange -> Loading.
OSPF 1: Nbr 10.0.0.1 Rcv LoadingDone State Loading -> Full
1234

3、邻居和邻接的区别

注意,建立邻居和建立邻接不一样哟。
举例说明,DR 和 DRother 之间建立的是邻接关系,交换数据。DRother 之间只保持在 2-Way 邻居状态,不交互数据哟。

4、DR/BDR 选举

MA 广播型链路需要选举 DR/BDR
选举时期
2way 完成后,Exstart 开始前。
选举过程
选举通过 Hello 包进行,Hello 包里携带 DR 和 BDR 字段。最初,DR BDR 字段为 0.0.0.0,无 DR 和 BDR。
从第一个 Hello 报之后等待 2 倍 dead 时间 40 秒后无人宣告自己是 DR 或 BDR,开始发送 Hello 包进行选举。
DROther 首先选举一个变成 BDR,BDR 发现无 DR 后继续变成 DR。

选举原则
1、比较接口优先级,选大的
2、比较 routerID,选大的
3、不抢占原则

5、影响 OSPF 邻居建立的因素

  • RouterID 不能重复
  • 区域 ID 需一致
  • 认证匹配
  • MA 网络里面,Netowrk 的掩码长度需要一致
  • 区域类型需要一致
  • Hello,Dead 计时器时间需要一致
  • MTU 检查如果开启的话,接口 MTU 需要一致
  • 未配置静默端口
  • 链路两端网络类型需一致(P2P MA 等)
  • MA 网络中,路由器接口优先级不能全是 0

6、OSPF 故障及可能性

三、OSPF 区域类型、ABR 和 ASBR

1、区域类型

1.1、骨干区域

OSPF 域内必须有且仅能有一个骨干区域 Area 0.0.0.0。

1.2、非骨干区域

所有非骨干区域必须与骨干区域直接连接。
非骨干区域之间不能直接连接。
非骨干区域不能跨过其他非骨干区域与骨干连接。
V-link 可以实现跨非骨干区域连接骨干区域。但是,用了会被鄙视。

1.3、特殊区域

Stub 不接收 4 5,可以通过 3 类 LSA 向区域内通告缺省路由。
Totally Stub 不接 3 4 5,通告 3 类缺省路由。
NSSA 不接 4 5 ,通告 7 类缺省路由。
Totallly NSSA 不接 3 4 5,通告 3 7 缺省路由,优选 3 缺省。

2、Option 字段对区域类型的标记

OSPF 报文中携带 Option 字段,该字段对
允许路由器和其他路由器进行一些可选性能的通信

Option 字段逐位定义


其中 E 位置 1 表示支持引入 LSA5 类外部引入路由

N 位置 1 表示支持 LSA7 类外部引入路由

普通区域,支持 LSA5 不支持 LSA7,STUB 区域不支持任何外部引入路由,NSSA 仅支持 LSA7

普通区域,E=1, N=0

Stub 区域,E=0, N=0

NSSA 区域,E=0, N=1

3、ABR、ASBR

ABR,区域边界路由器,横跨在两个区域间。
ASBR,OSPF 与外部其他路由对接,自治区域边界路由器。
ABR 隔断 1 2 类 LSA 泛洪,生成 3 类 LSA 通告达到其他区域。

四、OSPF 路由计算

1、路由比较原则

区域内 > 区域间 > Type1 外部引入路由 > Type2 外部引入路由
1 类 2 类 > 3 类 LSA>5 类 7 类 LSA

2、区域内 SPF 算法

区域内用 SPF 算法,区域间 LSA3 类收敛类似于距离矢量算法。
基本步骤:
1、泛洪 1 类 2 类 LSA 获取邻居信息,完善本地 LSDB 数据库
2、全网同步 LSDB 数据库,每个节点都能计算出一样的全网拓扑
3、每个节点,根据链路开销,遍历所有节点生成以自己为根的 SPF 树

插一嘴,到这为止,可以回想一下 BPDU 报文是怎么泛洪的,以及 STP 树是怎么计算的
4、根据 LSDB 数据库,为每个节点挂载子网信息
5、生成基于自己为视角的,计算全网路由

3、区域间路由传递

区域间路由信息由 ABR 汇总,以三类 LSA 向其他区域传递。
区域间传递时,可以把每个区域看成一个节点,节点间通过类似距离矢量的方式进行传递。

4、OSPF 防环机制

区域内 SPF 算法保证算不出环!
区域间由于是类似于 距离矢量 算法计算邻接路由,因此需要一些特别的方式来防环
1、非骨干区域之间不能邻接,仅能与骨干区域直接连接
2、对于双 ABR 邻接的两个区域,ABR 对于非骨干区域收到的 3 类 LSA 不参与计算。

四、OSPF 报文大全

1、OSPF 报文类型

Hello,DBD,LSR,LSU,LSAck

2、OSPF 报文截图

OSPFv2

OSPFv3

3、LSA 通告类型

注意:LSA 通告通过 LSU 报文发送,LSA 并不是一种报文,是 LSU 报文中的信息

LSA (链路状态广播) 名称                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                  说明
1路由器 LSA每个路由器都可以发起通告,罗列出自己和邻居的接口,描述直连链路信息。
2网络 LSA只用于广播式网络;指定路由器在产生这条网络 LSA 的区域内部发出通告,列出所有与之相连的路由器。
3网络汇总 LSA一个路由器接触网络内部的多个区域使用这个路由表来总结信息,更新其它区域到达另一个区域的信息。
4ASBR 汇总 LSA由每个发送第五种 LSA 类型的边界路由发起通告,描述如何通过内部网络到达这个边界路由(实行路由信息域间转换,为第五种 LSA 类型服务)。
5自治系统外部 LSA第五种 LSA 类型描述的是 OSPF 区域以外的路由,由每个边界路由发起通告。可以被用于广播 “这是通向网络的路径”。
6组成员 LSA用于现已过时版本的 MOSPF(组播 OSPF)。大部分路由器不再支持 MOSPF(组播 OSPF),这种 LSA 类型未来可能会被重新分配
7NSSA 外部 LSAOSPF 末梢区域是无法直接到达外部的区域,其不允许第五种 LSA 类型进入,所有的外部约束流量都只通过末梢区域边界路由器路由出去。一个 “非纯末梢区域 (NSSA)” 只有一些有限的外部路由可用,他们使用这第七种 LSA 类型在 NSSA 内部发起通告。NSSA 区域的边界路由器将第七种 LSA 类型转换成第五种 LSA 类型流入临近区域。
8外部属性 LSA在 OSPFv2 中,外部属性 LSA 是用来传送 BGP 链路属性到一个 OSPF 域中,但是很少使用。在 OSPFv3 中,它已被重新利用,以发送所有与本地链路相关联的 IPv6 地址信息。
9不透明 LSA(本地链路范围)OSPFv3 协议里面作为末梢区域和中转网络的通信前缀。在 OSPFv2 中,它是一个本地链路 “不透明” 协议,通过 OSPF 路由器来传送信息,但是并不用于 OSPF 路由。
10不透明 LSA(本地区域范围)即使路由器不明白信息内容,也会泛播到区域内的路由器。应用程序用来扩展 OSPF 功能的协议,如用于 MPLS 多协议标签交换协议
11不透明 LSA(AS 范围)和第十种 LSA 类型相似,只是和第五种 LSA 类型一样,不泛播到末梢区域。

顺便说一下 1 类和 2 类 LSA

1 类 LSA 会通告链路类型,并且根据链路类型不同,通告的字段值也不同,具体见下表

Link TypeLink IDLink Data
P2P邻居的 RID自己的 IP
Stub网络号掩码
TransitDR 的接口地址自己的 IP
Virtual邻居的 RID自己的 IP

2 类 LSA 仅会在涉及广播型链路时通告,由 DR 发出。

4、LSA 通告截图


OSPFv3 重点难点整理

逗老师于 2020-07-26 21:27:15 发布

OSPFv3 属于向下一代 IPv6 演进时的技术,日常工作中估计目前接触 v3 的同学不多。说实话,OSPFv3 的全部知识,一篇文章是写不完了。本文主要结合与 OSPFv2 的对比,使大家尽可能的理解 OSPFv3。

一、协议介绍

1、工作机制

  • 与 OSPFv2 相比, OSPFv3 在工作机制上与 OSPFv2 基本相同;但为了支持 IPv6 地址格式, OSPFv3 对 OSPFv2 做了一些改动。
  • OSPFv3 基于 OSPFv2 基本原理并增强,是一个独立的路由协议。
  • 协议号仍然是 89,Router Id 仍然是一个 32 位的无符号整数。

2、IPV6 对 OSPFv3 的影响

3、OSPFv3 和 OSPFv2 相同点

  • 网络类型和接口类型。
  • 接口状态机和邻居状态机。
  • 链路状态数据库 (LSDB)。
  • 洪泛机制 (Flooding mechanism)。
  • 五种协议报文: Hello, DD, LSR, LSU, LSAck。
  • 路由计算基本相同。

二、OSPFv3 和 OSPFv2 的不同点

重点,重点,重点!

-1、基于链路的运行
-2、使用链路本地地址
-3、链路支持多实例复用
-4、通过 Router ID 唯一标识邻居
-5、认证的变化
-6、Stub 区域的支持
-7、报文的不同
-8、Option 字段的不同
-9、LSA 的类型和内容不同

下面,我们来一条一条的说

1、基于链路的运行

V3 最重要的变化为使用 IPv6 LinkLocal 地址进行通信。链路两端接口无所谓在同一个子网,甚至也没必要具备 IPv6 GUA 地址。

  • IPv6 中重点强调了一个 “链路(link)” 的概念,在 IPv6 中,一个链路上可以分配多个 IP 子网,也就是 IPv6 前缀。和 IPv4 中不同的是,同一个链路上的两个节点即使不具有相同的 IPv6 前缀,也可以直接通过这个链路通信。这一点极大地改变了 OSPF 的行为。
  • OSPFv3 是基于链路运行的,而不是以前的基于 IP 子网的运行。在 OSPFv3 中我们更多的是使用 “链路” 和 “前缀” 这两个术语。但这两个概念是分离的,没有必然的对应关系。同一链路上的两个节点不必具有相同的前缀。所以在讨论路由协议时,OSPFv2 的术语 “网络” 和 “子网” 在这里应该用 “链路” 替换掉。同样,一个 OSPF 接口现在是连接到一个链路上,而不再是一个 IP 子网上了。OSPF 协议分组的接收以及 Hello 分组和 LSA 的格式也因此做出了相应的修改。

2、使用链路本地地址

  • OSPFv3 的路由器使用链路本地地址作为发送报文的源地址。
  • 在虚连接上, 必须使用全球范围地址或者站点本地地址作为 OSPFv3 协议报文的源地址。
  • 由于链路本地地址只在本链路上有意义且只能在本链路上泛洪,因此链路本地地址只能出现在 Link LSA 中。
  • 一个路由器可以学习到这个链路上相连的所有其它路由器的链路本地地址,并使用这些链路本地地址作为下一跳来转发报文。
  • IPv6 在 RFC2373 中定义了链路本地(link-local)地址用于一个单一链路上,其目的是完成邻居发现(neighbor discovery)和自动配置(auto-configuration)等功能。IPv6 路由器不转发源地址为 link-local 类型的分组。Link-local 单播地址范围为 IPv6 地址范围 FE80/10。

妈的,知道这么多字看了也头疼,来我们截图看看。

如何获取邻居的链路本地地址

下图中,OSPF 可以通过 LSA1 2 获取邻居与自己互联的接口 ID,再通过 LSA 8 获取接口 ID 与 FE80 链路本地地址的对应关系。

通过 dis ospfv3 int g x/x/x 查看 ospfv3 下对接口的详细使用情况,包括随机生成的接口 ID
建立邻居关系后,即可看到邻居的 FE80 链路本地地址

路由表下一条,同样也是 FE80 链路本地地址

OSPFv3 路由计算过程

LSA 1 2 计算拓扑
9 类挂载叶子节点
8 类关联 FE80 链路本地地址,确定下一条

3、链路支持多实例复用

OSPFv3 支持在同一链路上运行多个实例,实现链路复用并节约成本 。

  • Router A、 Router B、 Router C 和 Router D 连接到同一个广播网上,它们共享同一条链路且都能建立邻居关系,通过在 Router A 的 Eth1/1、 Router B 的 Eth1/1、Router C 的 Eth1/2 上指定实例 1、在 Router A 的 Eth1/1、 Router B 的 Eth1/1、 RouterD 的 Eth1/3 上指定实例 2,实现了 Router A、 Router B 和 Router C 可以建立邻居关系, Router A、 Router B 和 Router D 可以建立邻居关系。
  • 这是通过在 OSPFv3 报文头中添加 Instance ID 字段来实现的。如果接口配置的 Instance ID 与接收的 OSPF v3 报文的 Instance ID 不匹配,则丢弃该报文,从而无法建立起邻居关系。

举例说明:
下图中,通过控制 R2 和 R4 之间的多实例关系,是 R1 和 R4 之间互相学习路由,R5 和 R6 之间互相学习。两组之间通过实例隔离开来。

4、通过 Router ID 唯一标识邻居

在 OSPFv2 中,当网络类型为点到点或者通过虚连接与邻居相连时,通过 Router ID 来标识邻居路由器,当网络类型为广播或 NBMA 时,通过邻居接口的 IP 地址来标识邻居路由器。
OSPFv3 取消了这种复杂性,无论对于何种网络类型,都是通过 Router ID 来唯一标识邻居。

5、认证的变化

OSPFv3 报文头中不再包含 AuType 和 Authentication,而一般依赖 IPv6 的扩展验证头。
校验和 (Checksum) 变化:
OSPFv3 使用 IPv6 标准的 CheckSum。

6、Stub 区域的支持

由于 OSPFv3 支持对 未知类型 LSA 的泛洪,为防止大量未知类型 LSA 泛洪进入 Stub 区域,对于向 Stub 区泛洪的未知类型 LSA 进行了明确规定, 只有当未知类型 LSA 的泛洪范围是 区域或链路 而且 U 比特没有置位时,未知类型 LSA 才可以向 Stub 区域泛洪。
这里特别说明一下,OSPFv3 的 LSA 类型字段采用 16bit 表示,格式如下:

其中表示了 U 位,和 S1 S2 位。关于 S1 和 S2 位可以明确的表示 LSA 的泛洪范围。

因此,举例说明 LSA 1 的 LS Type 字段为 0x2001。二进制表示为 0010,0000,0000,0001

其中 S1=0,S2=1。因此 LSA 1 的泛洪范围为区域内泛洪。

7、报文的不同

7.1、OSPF 报头变化

明显注意,v3 比 v2 直接去掉了认证字段,改用 IPv6 扩展报头认证

7.2、Hello 报头变化

7.3、LSA 头部变化

注意,这里又涉及到了刚才 U 位,和 S1 S2 位。以及 S1 和 S2 位如何表示 LSA 的泛洪范围的问题。

U-bit: 指示路由器如何处理无法识别的 LSA。

U-bit处理方式
0当作 Link-local 范围的 LSA 处理
1存储并洪泛该 LSA

S2/S1,共同标识 LSA 的泛洪范围。

S2S1洪泛 (Flooding) 范围
00Link-Local 范围
01Area 范围
10AS 范围
11保留

-在 OSPFv2 中,收到类型未知的 LSA 将直接丢弃。

  • OSPFv3 在 LSA 的 LS Type 字段中增加了一个 U 比特位来位标识对未知类型 LSA 的处理方式:
  • 如果 U 比特置 1,则对于未知类型的 LSA 按照 LSA 中的 LS Type 字段描述的泛洪范围进行泛洪;
  • 如果 U 比特置 0,对于未知类型的 LSA 仅在链路范围内泛洪。
  • LSA 的泛洪范围已经被明确地定义在 LSA 的 LS Type 字段,目前,有三种 LSA 泛洪范围。
  • 链路本地范围 (Link-local Scope)。
  • LSA 只在本地链路上泛洪,不会超出这个范围, Link-LSA (新增)。
  • 区域范围 (Area Scope)。
  • Router-LSA, Network-LSA, Inter-Area-Prefix-LSA, Inter-Area-Router-LSA, Intra-Area-Prefix-LSA (新增) 都是区域范围泛洪的 LSA。
  • 自治系统范围 (AS Scope)。
  • LSA 将被泛洪到整个路由域,AS-External-LSA。

LSA 功能编码:

7.4 LinkState ID 字段值含义变化

v3 中 LinkStateID 占 4 字节。不再包含地址信息,对于不同的 LSA 类型,该字段的含义如下表,同时提供与 OSPFv2 中含义的对比。

8、Option 字段的不同

看看就好,考试不考

  • 在 OSPFv2 中, Option 字段出现在每一个 Hello 报文、 DD 报文以及每一个 LSA 中。
  • 在 OSPFv3 中, Option 字段只在 Hello 报文、 DD 报文、 Router LSA、 NetworkLSA、 Inter Area Router LSA 以及 Link LSA 中出现。
  • 从上图可以看出,与 OSPFv2 相比, OSPFv3 的 Option 字段增加了 R 比特、 V 比特。
  • R 比特:用来标识设备是否是具备转发能力的路由器。如果 R 比特置 0,宣告该节点的路由信息将不会参加路由计算,如果当前设备是一个不想转发非本地地址的报文,可以将 R 比特置 0。
  • V6 比特:如果 V6 比特置 0,该路由器或链路也不会参加 IPv6 路由计算。
  • E: 如果为 0,不支持 AS-External-LSA 洪泛;
  • MC: 与多播相关;
  • N: 是否在 NSSA (Not So Stub Area) 区域;
  • DC: 是否支持按需拨号。
  • Options 字段的各位的匹配情况会产生不同影响:
  • 阻止邻居的建立,例如 Hello 报文中的选项不匹配。
  • 阻止 LSA 的洪泛,例如 E-Bit,如果为 0,不洪泛 AS-External-LSA。
  • 阻止 LSA 参加路由计算,例如 V6-Bit,如果为 0,该 Router 不参加 IPv6 路由计算。
  • Options 字段使 OSPF 路由器能支持可选的能力,并且与其它路由器互相通告其能力。通过这种机制,具有不同能力的路由器可以在一个 OSPF 路由域中混合工作。

9、LSA 的类型和内容不同


9.1、前缀表示方法的变化:Prefix Option 字段

9.2、Router LSA(2001)的变化

・W:用于组播路由;

・V:该路由器为虚连接的一端;

・E:该路由器为 ASBR;

・B: 该路由器为 ABR

・Type:1 字节。路由器的该链路的链路类型;

・Metric:2 字节。数据报文从此接口发出时的 cost 值;

・Interface ID:4 字节。接口 ID,用于标识接口,无地址含义。

・Neighbor Interface ID:4 字节。邻居接口 ID。

・Neighbor Router ID:4 字节。邻居 Router ID.

Router LSA 链接 (Link) 类型

(以下内容作者长时间停更)

9.3、Network LSA(2002)的变化
9.4、新增 Link-LSA(0008)
9.5、Intra-Area-Prefix-LSA(2003)的变化
9.6、Inter-Area-Router-LSA(2004)的变化
9.7、AS-External-LSA(4005)的变化

via:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值