OSPFv3 中 LSA8 LSA9 详解

注:本文为 “LSA” 相关文章合辑

未整理去重,图片清晰度限于引文原状。

第三篇 9.3-9.7 小节作者长时间停更。


OSPFv3 简介

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. 链路间的泛洪范围(LSA8)

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 Type Name OSPFv2 LSAs Type Name
0x2001 Router LSA 1 Router LSA
0x2002 Network LSA 2 Network LSA
0x2003 Inter-Area Prefix LSA 3 Network Summary LSA
0x2004 Inter-Area Prefix LSA 4 ASBR Summary LSA
0x4005 AS-External LSA 5 AS-External LSA
0x2006 Group Membership LSA 6 Group Membership LSA
0x2007 Type-7 LSA 7 NSSA External LSA
0x2008 Link LSA 8 No Corresponding LSA
0x2009 Intra-Area Prefix LSA 9 No 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 定义的泛洪范围

S2 S1 Flooding Scope
0 0 Link-Local
0 1 Area
1 0 AS(Routing Domain)
1 1 Reserved
  • 其他位的 LSA function code,不同数值代表不同类型的 LSA。

<think>嗯,用户遇到了OSPFv3网络中三台路由器和三台主机之间无法Ping通的问题。首先,我需要回忆一下OSPFv3的基本配置步骤和常见问题。OSPFv3是用于IPv6的路由协议,和OSPFv2在IPv4中的配置有些不同。可能的问题点包括接口配置、区域设置、网络通告、路由器ID冲突,以及主机的IPv6配置是否正确。 首先,检查接口是否启用了OSPFv3。每个参与OSPFv3的路由器接口都需要明确启用,尤其是在IPv6中,可能需要使用ipv6 ospf process-id area area-id命令。如果接口没有正确启用,邻居关系无法建立,导致路由信息不传播。 接下来,区域配置是否一致。所有路由器接口必须属于同一个OSPFv3区域,或者区域间有正确的路由汇总。如果有的接口配置到不同的区域,比如一个在area 0,另一个在area 1,而中间没有区域0的路由器,就会导致路由无法传递。 然后,查看网络通告是否正确。OSPFv3需要明确将网络通告到正确的区域中。比如使用network命令或者在接口下启用OSPFv3。如果网络没有被正确通告,其他路由器就学不到相应的路由,导致主机之间无法通信。 路由器ID也是一个常见问题。OSPFv3要求每个路由器有唯一的Router ID,通常是一个IPv4格式的地址。如果没有手动配置,路由器会自动选择最大的IPv4地址作为ID,但如果路由器没有IPv4地址,又没有配置loopback接口,就会导致Router ID冲突或未设置,进而影响邻居关系的建立。此时需要手动配置router-id命令,确保唯一性。 另外,主机的IPv6地址配置是否正确,网关是否指向了正确的路由器接口地址。如果主机的默认网关设置错误,或者路由器的接口地址和主机不在同一子网,也会导致Ping不通。同时,检查路由器的接口是否开启了IPv6流量转发,比如使用ipv6 unicast-routing命令。 邻居关系是否建立也是一个关键点。使用show ipv6 ospf neighbor命令查看邻居状态,如果邻居状态不是Full,说明邻居关系有问题,需要检查接口配置、区域、网络类型等是否一致。比如,如果接口的网络类型是点对点,而另一端的配置是广播类型,可能导致邻居无法建立。 另外,防火墙或ACL是否阻止了OSPFv3的通信。IPv6的ACL可能阻止了OSPFv3协议(协议号89)的流量,需要检查路由器和主机的安全策略,确保没有阻止必要的ICMPv6或OSPFv3报文。 最后,进行逐步排查。从主机开始,检查IPv6地址和网关,然后到直连路由器,确认接口状态和OSPFv3配置,再检查路由表是否有正确的OSPFv3路由,最后检查中间路由器的配置和邻居状态。 可能用户的路由器没有正确配置Router ID,尤其是在没有loopback接口的情况下,导致Router ID冲突,进而影响路由信息的交换。同时,接口可能没有启用OSPFv3,或者网络通告不正确,导致路由表缺少必要的信息。此外,主机的默认网关配置错误也是常见的问题点,需要逐一排查。</think>### OSPFv3网络三台路由器与主机Ping不通的解决方案 #### 一、基础配置核查 1. **接口OSPFv3激活** 确认所有路由器接口均启用OSPFv3,使用命令: ```cisco interface GigabitEthernet0/0 ipv6 ospf 1 area 0 ``` 若未显式激活接口,会导致邻居关系无法建立[^1]。 2. **区域一致性检查** 所有互联接口必须配置在**相同OSPFv3区域**或通过区域边界路由器连接。使用命令验证: ```cisco show ipv6 ospf interface brief ``` 3. **网络地址通告** 确保每个网段通过`network`命令或接口直接绑定方式宣告到OSPFv3进程: ```cisco router ospfv3 1 router-id 1.1.1.1 address-family ipv6 unicast network 2001:db8::/64 area 0 ``` #### 二、关键故障排查点 1. **Router ID冲突** **现象**:日志提示`Duplicate Router ID detected` **解决方案**: - 手动为每台路由器配置唯一Router ID: ```cisco router ospfv3 1 router-id 1.1.1.1 ``` - 优先使用loopback地址(若存在IPv4地址) 2. **IPv6路由表验证** 使用命令检查路由传播情况: ```cisco show ipv6 route ospf ``` 若目标网段未出现在路由表中,说明OSPFv3未正确通告网络。 3. **邻居状态检查** 执行命令查看邻居关系: ```cisco show ipv6 ospf neighbor ``` **正常状态**:显示`FULL/DR`或`FULL/BDR` **异常处理**: - 检查接口物理状态(up/up) - 验证区域ID匹配性 - 确认网络类型(广播/点对点)一致 #### 三、主机侧排查 1. **IPv6地址配置** 主机需配置与路由器接口**同网段**的IPv6地址: ```shell # Linux示例 ip -6 addr add 2001:db8::2/64 dev eth0 ``` 2. **默认网关设置** 确认主机指向正确的路由器接口地址: ```shell ip -6 route add default via 2001:db8::1 ``` 3. **ICMPv6过滤检查** 禁用防火墙临时测试: ```shell # Windows netsh advfirewall set allprofiles state off # Linux ip6tables -F ``` #### 四、典型配置案例 ```cisco ! 路由器A配置示例 interface GigabitEthernet0/0 ipv6 address 2001:db8::1/64 ipv6 ospf 1 area 0 ! router ospfv3 1 router-id 1.1.1.1 address-family ipv6 unicast passive-interface default no passive-interface GigabitEthernet0/0 ``` #### 五、进阶诊断工具 1. **OSPFv3调试命令**: ```cisco debug ipv6 ospf adj debug ipv6 ospf hello ``` 2. **报文抓包分析**: ```shell tcpdump -ni eth0 &#39;ip6 proto 89&#39; # 捕获OSPFv3协议报文 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值