跳到正文
Lutong's Homepage

华为H3C实战 | 第11章 OSPF 协议配置详解

📚 本系列共 43 篇(第 11 / 43 篇) · 第二卷 路由与广域网篇 —— 让数据找到路

← 上一篇:第 10 章 静态路由与默认路由  下一篇:第 12 章 BGP 协议配置详解 →


本章导读:静态路由是"人手写地址条",网络一大就管不住。OSPF 让每家都发一本通讯录,全村互相传抄,最后人手一本一样的,各自用同一套公式算最短路。本章讲透单区域、多区域、汇总、认证、虚连接这套组合拳。

本章结构:

  • 11.1 功能原理与业务场景 —— 链路状态 vs 距离矢量的根本差别(传原始信息还是传结果)、“泛洪 → 人人同一份 LSDB → 各自跑 SPF"这条主线,配多区域拓扑
  • 11.2 华为设备配置详解 —— 五个模板:单区域、多区域(ABR)、区域间汇总 + 外部路由汇总(ASBR)、认证、虚连接
  • 11.3 H3C 设备配置详解 —— 视图结构对照(H3C 的 ospf → area 视图关系与华为不同)+ 完整模板
  • 11.4 命令对照表 —— 两家并排
  • 11.5 配置验证 —— display ospf peer 看状态、display ospf lsdb、display ospf routing 三层递进验证
  • 11.6 排错与故障树 —— 邻居卡住的故障树:Down / Init / ExStart 各个状态分别意味着什么(Init 常见是单通 ACL 或认证失败)
  • 11.7 新手踩坑 —— silent-interface、network 宣告网段不覆盖接口地址
  • 11.8 本章小结 —— 要点清单 + 自测题

重点提示:OSPF 出问题 90% 是邻居没起来,先在 11.6 找准邻居卡在哪个状态再动手——卡在 Init 说明 Hello 到了但对方没认出你,优先查单向 ACL 挡 224.0.0.5 和认证参数;display ospf error 里的 auth failure 计数是三分之一定位法。第一次配多区域,直接抄 11.2 的模板二、三。 关联章节:前置的路由表与优先级概念见第 10 章;跨 AS、对接运营商用 BGP 见第 12 章;大型网络的另一种链路状态协议 IS-IS 见第 13 章;重发布和过滤路由用 route-policy 见第 17 章。

11.1 功能原理与业务场景

11.1.1 这功能是干嘛的(通俗版)

想象一个村子,每家每户都装了电话,也都认识几条路。村里如果来了一个新路口,或者哪条路被水冲断了,光靠谁喊一嗓子,消息传不远、也容易传错。开放式最短路径优先协议(OSPF,Open Shortest Path First)[6] 的做法是:村里每家都发一本通讯录,通讯录上写清楚「我这户连着哪几条路、每条路多长」。这本通讯录会在全村互相传抄,最后每个人手里的通讯录内容完全一样。然后每家用同样的算法,自己在这本通讯录上算最短路——你要去村东头,就从自家门口开始一步步往外推,哪条路总长度最短就走哪条。

和上一章的距离矢量协议(如 RIP)对比一下就更清楚了:RIP 像邻居之间互相打听「去村东头我这儿要三跳」,你信邻居的说法,邻居信别人的说法,一圈传下来才知道真相,还可能互相传出绕圈的路。OSPF 则是把全村的原始路况都拿到手,自己算,所以不存在「听说」。代价是每家要存一整本通讯录(链路状态数据库,LSDB),还要花 CPU 去算。

两者还有一处根本差别在于「谁告诉谁」。距离矢量协议里,一台路由器只把算好的结果告诉邻居,邻居再把结果当成自己的起点继续传给下下家,错误会一层层放大、收敛慢。链路状态协议里,一台路由器把自己那一块原始信息(我连了谁、代价多少)告诉全区域的所有人,每台设备最后拼出完整的拓扑图,各自计算。信息是原始的,所以不会累积错误;代价是要存储和计算,所以大型网络必须用区域来切成小块。

用一句话把 OSPF 的骨架记住:链路状态 → 互相泛洪 → 人人都有同样的 LSDB → 各自跑 SPF 算树 → 装进路由表。

11.1.2 在网络里怎么落地(设计视角)

一个典型的中小企业/校园网,出口用路由器,核心用三层交换机,下面挂几个楼栋和分支机构,这就是多区域 OSPF 的教科书场景。本章统一用下面这张拓扑,后面所有模板都基于它:

                        [AR6140-16G4XG] 出口路由器 R1(ASBR)
                           | 172.16.10.0/24(AS 外网关,静态/默认路由)
                           |
                    +------+------+  Area 0 骨干区
                    |             |
        [S5735-L24T4S-A1]     [S5735-L24T4S-A1]
        核心 Core1            核心 Core2
        Router-ID 10.200.0.1   Router-ID 10.200.0.2
         192.168.10.0/24 (VLANIF10 员工网关)
         10.200.0.0/24   (核心互联)
        10.200.9.0/30   (Core1-Core2 互联)
                    |             |
        10.200.1.0/30       10.200.2.0/30
                    |             |
              Area 1(办公楼)Area 2(实验楼)
                    |             |
        [S5735-L24T4S-A1]     [MSR3610-X1]
        A1 接入(ABR)          A2(ABR,另挂分支)
        Router-ID 10.200.1.1   Router-ID 10.200.2.1
         172.16.20.0/24        172.16.30.0/24
         172.16.21.0/24        (虚连接一节把 Area 2 挪到 Area 1 后面)

在这张图里,R1 把 Internet 的默认路由引入 OSPF,于是它成为自治系统边界路由器(ASBR);Core1、Core2 同时属于 Area 0,是骨干路由器;A1、A2 一只脚在 Area 0、一只脚在自己区域,是区域边界路由器(ABR)。OSPF 的三条硬规矩就体现在这里:骨干区域 Area 0 必须连续、所有非骨干区域必须与 Area 0 直连、区域之间的路由必须穿过 Area 0。

接着把本章要讲透的几个概念一次性摆出来。

链路状态与 SPF 计算。每台设备把自己每个运行 OSPF 的接口包装成「链路」,连同邻居、开销一起写进 Type1 LSA(链路状态通告)。所有 LSA 收齐后形成 LSDB,SPF(最短路径优先)算法以自己为根,先算出到每台设备的树,再算出每个网段的路由。所以 OSPF 的路由开销是路径上所有出接口 cost 之和,谁的总和最小谁优先;如果两条路径总开销相同,默认可以形成等价路由做负载分担。

SPF 的具体过程可以粗分为两步。第一步算「到每台路由器的最短路径」:从自己出发,把所有直连邻居放进候选集,挑总代价最小的放进结果集,再以它为跳板更新其他候选,反复直到候选集为空——这就是迪杰斯特拉算法的朴素描述。第二步算「到每个网段的路由」:参考 Type2 LSA(广播网段)和 Type1 LSA 里的 Stub 链路(普通网段),把每个网段挂到离它最近的那台路由器下,代价就是「到该路由器的代价 + 该路由器到网段的代价」。因为是先算树再挂网段,所以同一区域内所有路由器算出来的拓扑完全一致,不会出现环路。

Router-ID。一台设备在 OSPF 里的「身份证号」,32 位,点分十进制。手动配置最稳(ospf 1 router-id 10.200.0.1);不配的话设备会先找 Loopback 接口地址中最大的,没有 Loopback 就在物理接口地址里挑最大的。要注意:Router-ID 一旦确定,接口 down 掉或者后来出现了更大的地址都不会自动改,必须重新配置并重启 OSPF 进程才生效。Router-ID 冲突的后果是两台设备互不认账,邻居永远建不起来,所以强烈建议每台设备单独规划一个 /32 的 Loopback。

区域。区域是逻辑上的分组,边界是路由器而不是链路,一个网段只能属于一个区域。Area 0 叫骨干区域,负责搬运所有区域间的路由;其他区域叫普通区域。此外还有两类「特殊区域」值得一提:Stub 区域不允许 Type5 外部 LSA 进入,由 ABR 发一条 Type3 默认路由代劳;NSSA 区域是 Stub 的变体,允许本区域里的 ASBR 用 Type7 LSA 引入少量外部路由,再在 ABR 上转成 Type5。本章不展开它们,先把普通区域打扎实。

区域划分不是随便画的,几条经验一定要遵守。第一,按物理区域或管理域划分,一栋楼、一个分公司一个区域,不要按 VLAN 切区域,那会切出无数个小区域;第二,单个区域的设备数量控制在几十台以内,超过就得评估 LSDB 规模和 SPF 计算频率;第三,连接链路容易抖动的区域(比如用 ADSL、4G 备份链路的分支机构)单独划成一个区域,抖动的影响就被挡在区域边界;第四,骨干区域尽量简单,只放核心设备和核心互联链,不要在里面挂一堆终端网关。

这几种 LSA 是 OSPF 的「报纸」,每种报纸谁印、在哪个范围发、登什么内容都不一样,必须背熟,排错时一半的时间都在看它们:

LSA 类型 谁产生 泛洪范围 携带什么
Type1 Router-LSA 每台路由器,各区域各一份 只在始发区域内 本设备的接口、邻居、链路 cost、类型(是否 ABR/ASBR)
Type2 Network-LSA 广播/NBMA 网段上的 DR 只在始发区域内 本网段的掩码和挂在网段上的全部路由器
Type3 Summary-LSA ABR 一个区域进、另一个区域出 到某网段(或默认路由)的区域间路由
Type4 ASBR-Summary-LSA ABR 通告给相关区域 到 ASBR 的路由,「怎么走到那个发外部路由的人」
Type5 AS-External-LSA ASBR 整个 AS(Stub/NSSA 除外) 引入了哪些外部路由、外部 cost、Type1/Type2
Type7 NSSA-LSA NSSA 区域内的 ASBR 只在 NSSA 区域内 类似 Type5,但只在 NSSA 里漂,ABR 负责转成 Type5

DR/BDR 选举。以太网是广播网,如果 5 台设备两两建邻接,就要建 5×4÷2=10 个;有了指定路由器(DR)和备份指定路由器(BDR),大家只跟 DR、BDR 建邻接,DR-Other 之间只停在 2-Way,邻接数直接降到 7 个。选举规则:只有优先级大于 0 的接口有资格;优先级大者优先,相同时 Router-ID 大者优先;先选 BDR 再选 DR;选举不可抢占——DR/BDR 选出来之后,再插进来一台优先级更高的设备,也不会把现任踢掉。

DR 的存在还带来一个副作用:只有 DR 负责为这个广播网段生成 Type2 LSA,所以网段掩码信息只在 Type2 里,如果 DR 挂了而 BDR 还没接管,网段路由会短暂消失。这也解释了为什么「DR 挂掉不要紧、BDR 立刻顶上」——因为 BDR 早就和所有人建好了 Full,接管时不需要重新建邻接,只是重新开始生成 Type2。

   无 DR:5 台两两 Full,共 10 个邻接           有 DR/BDR:7 个邻接
        R1 ---- R2                                   R1      R2
        |  \  /  |                                  /  \    /  \
        |   \/   |                              R1--DR==BDR--R2
        |   /\   |                                \ /       \ /
        R3 -- R4                                R3 (2-Way)  R4 (2-Way)
         \ R5 /                                   DR-Other 之间只到 2-Way

cost 计算与改法。华为默认参考带宽 100Mbps,接口 cost = 参考带宽 ÷ 接口带宽,取整数部分,小于 1 按 1 算。所以 100M 口 cost=1,1000M 口也是 1(100/1000=0.1),10G 口还是 1——这就是「千兆万兆全都 cost=1」的经典问题,解决办法是用 bandwidth-reference 把参考带宽抬到 1000 或 10000。想精细控制就手工 ospf cost 指定。两者的区别是:bandwidth-reference 影响进程内所有接口、所有路径,改一处等于全网重算;ospf cost 只影响单个接口,适合做「让我这条链路贵一点,流量走另一条」的局部调整。

网络类型。四种类型决定了「要不要选 DR」和「hello 定时器多长」:

网络类型 是否选 DR hello 定时器 dead 定时器 典型场景
broadcast 选 10 秒 40 秒 以太网默认
p2p 不选 10 秒 40 秒 PPP/HDLC、以太网背靠背改造
p2mp 不选 30 秒 120 秒 非全连通的 NBMA 改造
NBMA 选 30 秒 120 秒 帧中继、X.25

为什么要在以太网上改成 p2p?两个真实的理由:一是两台核心交换机之间只做三层互联、只有这两台设备,选 DR 没有意义,改 p2p 后邻居直接 Full、收敛更快、也省掉 Type2 LSA 的麻烦;二是某些厂商设备在 broadcast 下对 DR 选举的兼容性不同,背靠背互联时改 p2p 能绕开这类问题。反过来,一个网段上如果挂了五六台三层设备且都要互通,那就老实保留 broadcast,让 DR 替你减轻负担。

邻居状态机。邻居关系从 Down 一路走到 Full。Down 表示没收到过 Hello;Init 表示收到了 Hello 但里面没有自己的 Router-ID,说明对方还没听见我;2-Way 表示彼此都看见了对方,邻居关系建立完成;ExStart 开始协商主从并确定 DD 报文序号;Exchange 交换 DD 摘要;Loading 按摘要去请求缺失的 LSA;Full 表示 LSDB 同步完毕。卡在哪个状态,基本就锁定了病因:Down 看 Hello 到没到;Init 看 Hello 里有没有自己的 Router-ID;2-Way 看是不是 DR-Other 之间(正常);ExStart/Exchange 看最大传输单元(MTU)和 MTU 检测;Loading 看重传队列。

认证。区域认证在 area 视图下配,接口认证在接口下配,两者同时存在时接口认证优先。按算法由弱到强:simple(明文)< MD5 < HMAC-SHA256,后者是现在的推荐做法。这里要澄清一个最容易传错的说法:常有人在教材里写「算法编号 1/2/3 分别对应 simple/MD5/SHA256」,这其实混淆了两件事。OSPF 报文头里的认证类型字段确实是「0 = 无 / 1 = 简单口令 / 2 = 加密认证」三个值,MD5 和 HMAC-SHA256 都属于「2 加密认证」这一类,靠算法字段区分;而 authentication-mode md5 1 里那个 1 是 key-id(验证字标识符),不是算法编号,取值范围 0~255(H3C《04-OSPF命令》原文:key-id 取值范围为 0~255),两端必须一致。把 key-id 当成算法编号去背,对接时必然出错。

路由汇总。ABR 上 abr-summary 把本区域的连续网段汇总成一条 Type3 发给别的区域;ASBR 上 asbr-summary 把引入的外部路由汇总成一条 Type5。汇总之后,被汇总网段的链路抖动不会传到汇总范围之外,网络更稳。判断一条汇总配得对不对,有一条硬标准:汇总后的网段必须覆盖被汇总的所有明细网段,而且汇总网段本身也要能被某条明细「撑起来」,否则设备不会生成这条汇总路由。

虚连接。万不得已的手段:Area 2 没有物理链路连到 Area 0,就在 Area 2 的 ABR 和 Area 0 的 ABR 之间,穿过 Area 1 拉一条逻辑通道。它相当于在两端 ABR 之间建了一条点到点链路,报文被中间的路由器当作普通 IP 报文转发。虚连接属于 Area 0,所以两端 ABR 会因为这条虚连接而获得「与骨干直连」的资格。

适用版本:华为 VRP V200R019 及以上(AR6000/S5700 系列);H3C Comware V7(R2610 及以上)。

11.2 华为设备配置详解

11.2.1 命令行基础速览(本章会用到的那几条)

下面是本章会反复出现的华为命令,按「配 / 看 / 调」三类列出,先混个脸熟:

# 进入 OSPF 进程,并指定 Router-ID
ospf 1 router-id 10.200.0.1

# 进入区域视图并宣告网段(注意是反掩码)
area 0
 network 192.168.10.0 0.0.0.255

# 接口下把网段纳入 OSPF,等价于 network 的另一种写法
interface Vlanif10
 ospf enable 1 area 0

# 查看邻居、接口参数、LSDB、OSPF 路由、虚连接
display ospf peer brief
display ospf interface
display ospf lsdb
display ospf routing
display ospf abr-asbr
display ospf vlink

# 查看错误统计,排错时非常有用
display ospf error

把这几个视图的层级也要记住,敲错视图是新手最常见的报错来源:

视图 提示符 能配什么
系统视图 [HUAWEI] 建进程、建区域、静默接口
OSPF 进程视图 [HUAWEI-ospf-1] bandwidth-reference、asbr-summary、import-route
OSPF 区域视图 [HUAWEI-ospf-1-area-0.0.0.0] network、authentication-mode、abr-summary、vlink-peer、stub/nssa
接口视图 [HUAWEI-GigabitEthernet0/0/1] ospf cost、ospf dr-priority、ospf network-type、ospf authentication-mode

顺便把本章会用到但容易被忽略的参数值和缺省值放在一张表里,配之前对照一下就不容易填错:

参数 缺省值 取值范围 备注
参考带宽 100Mbps 1~2147483648 进程视图 bandwidth-reference
接口 cost 按带宽自动算 1~65535 Loopback 接口为 0
DR 优先级 1 0~255 0 表示不参与选举
key-id 无 0~255(H3C 官方文档口径) 两端必须一致
虚连接 hello/dead 10 秒 / 40 秒 1~65535 秒 dead 至少为 hello 的 4 倍

11.2.2 完整配置模板

模板一:单区域 OSPF(核心 Core1 + 出口 R1)。适合只需要一个区域的小网吧/小公司,先把 Area 0 跑通再说:

# ===== Core1:S5735-L24T4S-A1 =====
system-view
sysname HUAWEI-Core1
# 建 Vlanif 作为员工网关,并放通到接入的口
vlan 10
 quit
interface Vlanif10
 ip address 192.168.10.1 255.255.255.0
 quit
interface Vlanif11
 ip address 10.200.0.1 255.255.255.252
 quit
# 建 Loopback 专用于 Router-ID,非常推荐
interface LoopBack0
 ip address 10.200.0.1 255.255.255.255
 quit
# 起 OSPF,手工指定 Router-ID
ospf 1 router-id 10.200.0.1
 # 参考带宽改成 1000Mbps,避免千兆口和百兆口 cost 都是 1
 bandwidth-reference 1000
 area 0
  # 反掩码 0.0.0.255 表示整个 /24;0.0.0.3 表示 /30
  network 192.168.10.0 0.0.0.255
  network 10.200.0.0 0.0.0.3
  quit
 quit
quit
save
# ===== R1:AR6140-16G4XG,出口 + ASBR =====
system-view
sysname HUAWEI-R1
interface LoopBack0
 ip address 10.200.0.254 255.255.255.255
 quit
interface GigabitEthernet0/0/1
 ip address 10.200.0.2 255.255.255.252
 quit
interface GigabitEthernet0/0/2
 ip address 172.16.10.1 255.255.255.0
 quit
# 一条指向 ISP 的默认路由(示例地址用文档专用段)
ip route-static 0.0.0.0 0.0.0.0 172.16.10.254
ospf 1 router-id 10.200.0.254
 bandwidth-reference 1000
 area 0
  network 10.200.0.0 0.0.0.3
  quit
 # 把默认路由作为 Type5 引入
 default-route-advertise
 quit
quit
save

模板二:多区域。Core1/Core2 是骨干,A1 是 Area 1 的 ABR,A2 是 Area 2 的 ABR:

# ===== Core1:守好 Area 0 =====
system-view
ospf 1 router-id 10.200.0.1
 bandwidth-reference 1000
 area 0
  network 10.200.0.0 0.0.0.3
  network 192.168.10.0 0.0.0.255
  quit
 quit
quit
# ===== A1:S5735-L24T4S-A1,Area 1 的 ABR =====
system-view
sysname HUAWEI-A1
interface LoopBack0
 ip address 10.200.1.1 255.255.255.255
 quit
interface Vlanif20
 ip address 172.16.20.1 255.255.255.0
 quit
interface Vlanif21
 ip address 172.16.21.1 255.255.255.0
 quit
interface Vlanif12
 ip address 10.200.1.1 255.255.255.252
 quit
ospf 1 router-id 10.200.1.1
 bandwidth-reference 1000
 area 0
  network 10.200.1.0 0.0.0.3
  quit
 area 1
  network 172.16.20.0 0.0.0.255
  network 172.16.21.0 0.0.0.255
  quit
 quit
quit
save

模板三:区域间汇总(ABR)+ 外部路由汇总(ASBR)。A1 把 Area 1 的两个 /24 汇总成 172.16.20.0/23;A2 把引入的两条外部路由汇总成一条:

# ===== A1:ABR 上做区域间汇总(在 area 1 视图里配)=====
system-view
ospf 1
 area 1
  # 汇总后的网段必须在宣告范围内,否则不生成
  abr-summary 172.16.20.0 255.255.254.0
  quit
 quit
quit
# ===== A2:ASBR 上做外部路由汇总(在进程视图里配)=====
system-view
# 先用静态路由把两条分支网段指向真实下一跳
ip route-static 172.16.30.0 255.255.255.0 10.200.2.254
ip route-static 172.16.31.0 255.255.255.0 10.200.2.254
ospf 1
 # 先把静态路由引入,再对引入结果汇总,顺序不能反
 import-route static
 asbr-summary 172.16.30.0 255.255.254.0
 quit
quit
save

模板四:认证。两个模板分别演示「区域级 HMAC-SHA256」和「接口级 MD5」:

# ===== 区域认证:所有属于 area 0 的接口都要求 HMAC-SHA256 =====
system-view
ospf 1
 area 0
  # 只写模式不写 key-id 与口令时,表示该区域接口按此模式校验
  authentication-mode hmac-sha256
  quit
 quit
quit
# ===== 接口认证:优先级高于区域认证,两端必须完全一致 =====
system-view
interface Vlanif11
 # 1 是验证字标识符(key-id),不是算法编号
 ospf authentication-mode hmac-sha256 1 plain Ospf@2024
 quit
interface Vlanif12
 # 老设备可能只支持 MD5,过渡期可以两种共存
 ospf authentication-mode md5 1 plain Ospf@2024
 quit
quit
# ===== H3C 侧对应写法(跨厂商对接时对照用)=====
system-view
interface Vlan-interface11
 # 关键字带两个连字符
 ospf authentication-mode hmac-sha-256 1 plain Ospf@2024
 quit

模板五:虚连接。把 A2 挪到 A1 后面(Area 1 → A2 → Area 2,A2 无法直连 Area 0),在 A2 和 Core1 之间穿过 Area 1 拉虚连接:

# ===== A2:Area 2 的 ABR,向 Core1(10.200.0.1)建虚连接 =====
# 前提:A2 与 Core1 的 Router-ID 必须能通过 Area 1 的区域内路由互达
system-view
ospf 1 router-id 10.200.2.1
 area 1
  # 穿过的区域是 transit area,必须与对端配置一致
  vlink-peer 10.200.0.1
  network 10.200.2.0 0.0.0.3
  quit
 area 2
  network 172.16.30.0 0.0.0.255
  quit
 quit
quit
save
# ===== Core1:A2 的对端,必须也配一条,填对方 Router-ID =====
system-view
ospf 1
 area 1
  vlink-peer 10.200.2.1
  quit
 quit
quit

虚连接建立之后,两端 ABR 的接口表里会多出一个 Virtual 类型的接口,它的 hello/dead 与物理口一样可配,这一点在排查时很有用——很多虚连接起不来,问题恰恰是两端 hello 不一致。

华为虚连接认证参数已核实(官方命令参考原文):vlink-peer router-id [ dead dead-interval | hello hello-interval | retransmit retransmit-interval | smart-discover | trans-delay trans-delay-interval | [ simple [ plain plain-text | [ cipher ] cipher-text ] | { md5 | hmac-md5 | hmac-sha256 } [ key-id { plain plain-text | [ cipher ] cipher-text } ] | authentication-null | keychain keychain-name ] ] * 也就是说 vlink-peer 后面确实可以内联认证参数,且支持 md5 / hmac-md5 / hmac-sha256(后三者需带 key-id)。本章模板未启用虚连接认证,若要加,按上面的格式把认证段接在 router-id 后面即可。 出处:NetEngine AR1000V V300R021 命令参考 · OSPF 配置命令

11.2.3 逐行讲解

下面逐条解释模板里最容易填错的那几行,反例都来自现场真实踩坑:

命令 作用 新手常填错的地方
ospf 1 router-id 10.200.0.1 建进程并指定 Router-ID 进程号 1~65535 本地有效,两端可以不同;Router-ID 必须全网唯一
bandwidth-reference 1000 进程内所有接口的 cost 以 1000M 为基准重算 只在本机生效,全网要统一;改完要观察路由是否重算
network 192.168.10.0 0.0.0.255 把网段宣告进本区域 第二个参数是反掩码,写成 255.255.255.0 会把网段算错
network 10.200.0.0 0.0.0.3 宣告 /30 互联段 /30 的反掩码是 0.0.0.3,写成 0.0.0.255 会连带宣告一大片
default-route-advertise ASBR 发 Type5 默认路由 本机路由表里没有默认路由时不会生成,除非加 always
abr-summary 172.16.20.0 255.255.254.0 在 ABR 汇总区域间路由 必须在被汇总区域的 area 视图下配;汇总段超出宣告范围则不生成
asbr-summary 172.16.30.0 255.255.254.0 在 ASBR 汇总外部路由 配在进程视图而不是区域视图;先 import-route 才有东西可汇总
authentication-mode hmac-sha256 区域认证 全网该区域都要配,漏一台就那台建不起邻居
ospf authentication-mode hmac-sha256 1 plain xxx 接口认证 key-id 和口令两端必须完全一致;plain 会把口令明文写进配置
vlink-peer 10.200.0.1 建虚连接 两端都要配;填的是对方 Router-ID,不是 IP 地址
ospf dr-priority 200 提高 DR 选举优先级 配了不会立刻生效,要重启进程或 shutdown/undo shutdown 接口
ospf network-type p2p 改以太网网络类型 两端都要改;只改一端会因网络类型不匹配卡在 ExStart

再补两个「改完要重启才生效」的坑。其一是中改 Router-ID:敲完 ospf 1 再执行 router-id 10.200.0.9,表里显示的仍是旧值,必须 reset ospf 1 process 才生效。其二是改 DR 优先级:优先级只影响下一次选举,所以要么重启进程,要么在接口上先 shutdown 再 undo shutdown,后者会让这个网段的邻居全部重建,规模大的网段更要慎重。

适用版本:华为 VRP V200R019 及以上(AR6000/S5700 系列);H3C Comware V7(R2610 及以上)。

11.3 H3C 设备配置详解

11.3.1 命令行基础速览(H3C 与华为的视图对照)

H3C Comware V7 的 OSPF 命令与华为高度相似,差异主要集中在进程建立方式、接口编号和认证关键字上。先看视图:

# H3C:进程、区域、接口三级视图,提示符格式与华为一致
system-view
ospf 1 router-id 10.200.0.1
area 0
 network 192.168.10.0 0.0.0.255
 quit
quit
interface Vlan-interface1
 ospf cost 65
 quit

三个最容易记混的差异点:H3C 的接口是 GigabitEthernet1/0/1、三层口是 Vlan-interface10;认证算法关键字是 hmac-sha-256(带两个连字符);ospf cost 和 ospf dr-priority 同在接口视图,和华为位置一致。

H3C 空配置下的几个关键缺省值,和华为几乎一致,对照着记:

参数 H3C 缺省值 与华为是否相同
参考带宽 100Mbps 相同
hello/dead(broadcast、p2p) 10 秒 / 40 秒 相同
hello/dead(p2mp、NBMA) 30 秒 / 120 秒 相同
接口 cost 上限 计算结果超过 65535 时取 65535 华为同样是 65535
DR 优先级 1 相同
接口认证缺省 不认证 相同

11.3.2 完整配置模板

模板一:单区域(Core1 = S5130S-28S-EI + R1 = MSR3610-X1):

# ===== Core1:S5130S-28S-EI =====
system-view
sysname H3C-Core1
vlan 10
 description OFFICE_SUB10
 quit
interface Vlan-interface10
 ip address 192.168.10.1 255.255.255.0
 quit
interface Vlan-interface11
 ip address 10.200.0.1 255.255.255.252
 quit
interface LoopBack0
 ip address 10.200.0.1 255.255.255.255
 quit
ospf 1 router-id 10.200.0.1
 # 参考带宽同样默认 100Mbps,改法与华为一致
 bandwidth-reference 1000
 area 0
  network 192.168.10.0 0.0.0.255
  network 10.200.0.0 0.0.0.3
  quit
 quit
quit
save force
# ===== R1:MSR3610-X1,出口 + ASBR =====
system-view
sysname H3C-R1
interface LoopBack0
 ip address 10.200.0.254 255.255.255.255
 quit
interface GigabitEthernet0/1
 ip address 10.200.0.2 255.255.255.252
 quit
interface GigabitEthernet0/2
 ip address 172.16.10.1 255.255.255.0
 quit
ip route-static 0.0.0.0 0 172.16.10.254
ospf 1 router-id 10.200.0.254
 bandwidth-reference 1000
 area 0
  network 10.200.0.0 0.0.0.3
  quit
 # 与华为同名,H3C 也用它发 Type5 默认路由
 default-route-advertise
 quit
quit
save force

模板二:多区域 + 汇总。A1 作为 Area 1 的 ABR,A2 作为 Area 2 的 ABR,并在 A1 上做区域间汇总:

# ===== A1:S5130S-28S-EI,Area 1 的 ABR =====
system-view
sysname H3C-A1
interface LoopBack0
 ip address 10.200.1.1 255.255.255.255
 quit
interface Vlan-interface20
 ip address 172.16.20.1 255.255.255.0
 quit
interface Vlan-interface21
 ip address 172.16.21.1 255.255.255.0
 quit
interface Vlan-interface12
 ip address 10.200.1.1 255.255.255.252
 quit
ospf 1 router-id 10.200.1.1
 bandwidth-reference 1000
 area 0
  network 10.200.1.0 0.0.0.3
  quit
 area 1
  network 172.16.20.0 0.0.0.255
  network 172.16.21.0 0.0.0.255
  # H3C 的 abr-summary 直接写掩码长度也可以
  abr-summary 172.16.20.0 23
  quit
 quit
quit
save force
# ===== A2:MSR3610-X1,Area 2 的 ABR + ASBR 汇总 =====
system-view
sysname H3C-A2
interface LoopBack0
 ip address 10.200.2.1 255.255.255.255
 quit
interface Vlan-interface30
 ip address 172.16.30.1 255.255.255.0
 quit
interface Vlan-interface31
 ip address 172.16.31.1 255.255.255.0
 quit
interface GigabitEthernet0/1
 ip address 10.200.2.1 255.255.255.252
 quit
ospf 1 router-id 10.200.2.1
 import-route direct
 # 把引入的 172.16.30.0/23 汇总成一条 Type5,掩码可写长度
 asbr-summary 172.16.30.0 23
 area 0
  network 10.200.2.0 0.0.0.3
  quit
 area 2
  network 172.16.30.0 0.0.0.255
  network 172.16.31.0 0.0.0.255
  quit
 quit
quit
save force

模板三:认证(区域 + 接口 + 虚连接):

# ===== 区域认证:HMAC-SHA-256 =====
system-view
ospf 1
 area 0
  # H3C 的区域认证关键字带两个连字符
  authentication-mode hmac-sha-256
  quit
 quit
quit
# ===== 接口认证:优先级高于区域认证 =====
system-view
interface Vlan-interface11
 # key-id 1,口令两端一致;plain 表示以明文输入、以密文保存
 ospf authentication-mode hmac-sha-256 1 plain Ospf@2024
 quit
interface Vlan-interface12
 ospf authentication-mode md5 1 plain Ospf@2024
 quit
quit
# ===== 虚连接:A2 穿过 Area 1 连到 Core1 =====
system-view
ospf 1
 area 1
  # 虚连接也可以挂认证,关键字与接口认证一致
  vlink-peer 10.200.0.1 hmac-sha-256 1 plain Ospf@2024
  quit
 quit
quit

H3C 侧虚连接认证参数已核实(官方命令参考原文):vlink-peer router-id [ dead seconds | hello seconds | authentication-none | { hmac-md5 | md5 | hmac-sha-256 | hmac-sm3 } key-id { cipher | plain } string | keychain keychain-name | simple [ { cipher | plain } string ] | retransmit ... ] 即 H3C 的 vlink-peer 同样支持内联认证,可用算法为 hmac-md5 / md5 / hmac-sha-256 / hmac-sm3(需带 key-id),另有 keychain、simple、authentication-none 三种形式——算法集合比华为多一个 hmac-sm3(国密)。 出处:H3C 04-OSPF命令 (1.1.110 vlink-peer)

11.3.3 逐行讲解

H3C 命令 与华为的差异 新手常填错的地方
ospf 1 router-id 10.200.0.1 同构 Router-ID 必须手工配,别指望自动选出来的靠谱
network ... 0.0.0.255 同构,也是反掩码 与华为一样爱把反掩码写成正掩码
ospf cost 65 同构,接口视图 取值范围 1~65535,Loopback/Null 接口不支持
ospf network-type p2p 同构 可选 multicast 等参数,直接敲 p2p 即可
authentication-mode hmac-sha-256 关键字带连字符 写成 hmac-sha256 会报错
ospf authentication-mode hmac-sha-256 1 plain xxx 关键字带连字符 key-id 与口令两端必须完全一致
abr-summary 172.16.20.0 23 支持掩码长度写法 配在被汇总区域的 area 视图
asbr-summary 172.16.30.0 23 支持掩码长度写法 配在 OSPF 进程视图
vlink-peer 10.200.0.1 同构 两端都要配,填对方 Router-ID
save force H3C 免交互保存 华为 save 需要确认 y

H3C 还有一个华为没有的便利:ospf network-type p2p 后面可以跟 multicast 等选项,用来指定 P2P 下的报文发送方式;普通互联不需要它,保持默认即可,别乱加参数。另一个常见疑问是 import-route direct 会不会把互联段也引入成外部路由——会。做 ASBR 汇总时如果引入范围过大,最好用 route-policy 限制,否则会出现「同一网段既是区域内路由又是外部路由」的怪现象。

适用版本:华为 VRP V200R019 及以上(AR6000/S5700 系列);H3C Comware V7(R2610 及以上)。

11.4 华为 / H3C 命令对照表

功能 华为(VRP) H3C(Comware V7) 差异说明
建进程 + Router-ID ospf 1 router-id 10.200.0.1 ospf 1 router-id 10.200.0.1 基本一致
宣告网段 network 192.168.10.0 0.0.0.255 network 192.168.10.0 0.0.0.255 都是反掩码
接口入 OSPF ospf enable 1 area 0 ospf 1 area 0(接口视图) 华为带使能关键字,H3C 直接 ospf
参考带宽 bandwidth-reference 1000 bandwidth-reference 1000 默认都是 100Mbps
接口 cost ospf cost 65 ospf cost 65 同构,1~65535
DR 优先级 ospf dr-priority 200 ospf dr-priority 200 默认都是 1,0 表示不参选
网络类型 ospf network-type p2p ospf network-type p2p 同构
区域认证 authentication-mode hmac-sha256 authentication-mode hmac-sha-256 H3C 关键字带连字符
接口认证 ospf authentication-mode md5 1 plain xxx ospf authentication-mode md5 1 plain xxx 写法一致,SHA256 关键字不同
区域间汇总 abr-summary 172.16.20.0 255.255.254.0 abr-summary 172.16.20.0 23 H3C 可写掩码长度
外部路由汇总 asbr-summary 172.16.30.0 255.255.254.0 asbr-summary 172.16.30.0 23 同上
虚连接 vlink-peer 10.200.0.1 vlink-peer 10.200.0.1 都由两端配置
静默接口 silent-interface Vlanif20 silent-interface Vlan-interface20 语法一致,只在本进程生效
重启进程 reset ospf 1 process reset ospf 1 process 都会重新选举 DR/BDR
查看邻居 display ospf peer brief display ospf peer 华为多了 brief 简表

有一个容易忽略的差异:华为在接口视图下用 ospf enable 1 area 0 把接口纳入进程和区域,H3C 在接口视图下的对象是「进程号 + 区域号」的 ospf 1 area 0;两种写法都比 network 更「所见即所得」,在接口多、网段多的环境里建议统一用一种,别混着配。

11.5 配置验证

配置完先看邻居,这是所有检查的第一步。在 Core1 上:

display ospf peer brief

邻居表里每一行应该是 Full,区域号与你设计的一致:

OSPF Process 1 with Router ID 10.200.0.1
                  Peer Statistic Information
Total number of peer(s): 2
 Peer(s) in full state: 2
-----------------------------------------------------
 Area ID       Interface                          Neighbor ID      State
 0.0.0.0       Vlanif11                           10.200.0.2       Full
 0.0.0.0       Vlanif12                           10.200.1.1       Full
-----------------------------------------------------

如果某个邻居显示 2-Way,先看它是哪个接口、对端是不是 DR-Other,别急着改配置。

再看接口参数,确认 cost、优先级、hello/dead、网络类型都对:

display ospf interface Vlanif11

输出里重点这几行,cost 应该与你改完参考带宽后算出来的一致:

Vlanif11 (10.200.0.1)
 Type          : Broadcast
 MTU           : 1500
 Cost          : 1
 State         : DR
 Priority      : 1
 Hello timer   : 10s
 Dead timer    : 40s

State 是 DR/BDR/DROther 之一;Cost : 1 在 1000M 参考带宽下对应千兆口,若想把千兆口和百兆口区分开,就该看到 1 和 10 的差别。这里还有一个加黑的检查项:如果 Type 显示 P2P 但 hello 是 30s,那是切换网络类型时定时器没跟着改,边界上会出现不一致。

接着看 LSDB,验证 Type2/Type3 是否正常生成,以及汇总是否生效:

display ospf lsdb
display ospf lsdb summary 172.16.20.0

正常会看到一条汇总网段,而不是两条明细网段:

OSPF Process 1 with Router ID 10.200.0.1
 Area: 0.0.0.0
 Link State Database
  Type      : Sum-Net
  Ls id     : 172.16.20.0
  Adv rtr   : 10.200.1.1
  Ls age    : 132
  Len       : 28
  Options   : E
  seq#      : 80000001
  chksum    : 0x1c3e
  Net mask  : 255.255.254.0
  Tos 0  metric: 2

Adv rtr 10.200.1.1 说明这条汇总路由是 A1 发布的,Net mask 255.255.254.0 说明汇总生效。如果这里仍是两条 /24,说明 abr-summary 没配上视图或者汇总段没在宣告范围里。

确认 ABR/ASBR 身份和路由来源:

display ospf abr-asbr
display ospf routing 172.16.30.0

display ospf abr-asbr 输出里应能看到 ABR / ASBR 标记;display ospf routing 输出里 Destination 是 172.16.30.0/24 的那一行,其出处一栏为 OSPF,下一跳指向 A2,Cost 列就是算出来的总开销。这里最值得盯的是 Cost 列:如果它跟你在纸上算的不一样,九成是参考带宽没统一。

认证单独验证,看接口上的认证模式有没有真正下发:

display ospf interface Vlanif11

输出中 Authentication Mode 一行应为 HMAC-SHA256;如果配了区域认证但显示 None,说明这个接口根本不属于该区域,先去查 network 宣告。

虚连接验证。注意华为的 display ospf vlink 只列出确实是虚连接属性的区域,如果这里什么都没有,先回去确认两端 vlink-peer 都配了:

display ospf vlink

State 一栏应为 Full,并且能看到对端 Router-ID:

OSPF Process 1 with Router ID 10.200.0.1
 Virtual Links
 Virtual link to router 10.200.2.1 is up
 Transit area 0.0.0.1 via interface 10.200.1.1
 Neighbor ID: 10.200.2.1   State: Full

H3C 侧的验证命令如下:

display ospf peer
display ospf interface Vlan-interface11
display ospf lsdb
display ospf abr-asbr
display ospf vlink

H3C 的 display ospf peer 输出格式与华为略有不同,但同样看 State 字段是 Full:

OSPF Process 1 with Router ID 10.200.0.1
 Neighbors
 Area 0.0.0.0 interface 10.200.0.1(Vlan-interface11)
 Router ID: 10.200.0.2          Address: 10.200.0.2
 State: Full  Mode: Nbr is Master
 Priority: 1   DR: 10.200.0.1  BDR: 10.200.0.2
 Dead timer due in 37  sec
 Neighbor is up for 00:12:31

最后给一张「验证清单」,配置完成后按顺序过一遍,能覆盖本章全部功能:

检查项 命令 通过标准
邻居 display ospf peer brief 所有该建立的邻居 Full
接口 display ospf interface cost、Type、hello/dead 与设计一致
汇总 display ospf lsdb summary 有汇总网段,无明细网段
外部路由 display ospf routing External 类型正确,Cost 符合预期
认证 display ospf interface Authentication Mode 正确
虚连接 display ospf vlink State 为 Full

适用版本:华为 VRP V200R019 及以上(AR6000/S5700 系列);H3C Comware V7(R2610 及以上)。

11.6 排错与故障树

邻居建立不起来,是本领域最常见的故障。先在脑子里画一棵树,按「物理层 → OSPF 报文有没有到 → 参数对不对 → 有没有被挡住」的顺序逐层往下砍:

邻居卡住
  |
  +- display ospf peer 里根本没有对端(Down)
  |    +- 接口 up 吗?ping 通吗?display interface brief
  |    +- 是不是被 silent-interface 静默了?display current-configuration | include silent
  |    +- 两端 network 宣告的网段/区域是否覆盖了该接口地址?
  |
  +- 邻居在 Init(收到 Hello 但没有自己 Router-ID)
  |    +- 单通:一侧 ACL 放行了 224.0.0.5、另一侧没放行
  |    +- 认证失败被丢弃:display ospf error 看 auth failure 计数
  |    +- Router-ID 冲突:两端 Router-ID 一样
  |
  +- 邻居在 2-Way 且两端都不是 DR/BDR → 正常,DR-Other 之间就该这样
  |    +- 如果是唯一一条骨干链路,看优先级为 0 的配置是否误配
  |
  +- 邻居在 ExStart
  |    +- 两端 MTU 不一致(最典型):display interface 看 MTU
  |    +- 一端开了 ospf mtu-enable,另一端 MTU 不同
  |
  +- 邻居在 Exchange / Loading
  |    +- 大量 LSA 同步中,稍等;若长期不动看 display ospf retrans-queue
  |    +- 丢包/硬件故障导致 LSA 重传不断
  |
  +- 邻居 Full 但路由不对
       +- 区域类型/汇总配置错误
       +- filter-policy 或 ACL 把路由过滤掉了

逐条病根的现象与定位方法如下表:

现象 可能原因 排查命令 定位方法
两个接口都能 ping 通,但邻居列表为空 network 没宣告该网段,或宣告到了错误的区域号 display ospf interface、display current-configuration configuration ospf display ospf interface 里看不到该接口,说明没被宣告或区域配错
邻居一直是 Init 认证不通过,报文被丢弃 display ospf error 看 Authentication failure 计数是否在涨
邻居一直是 Init 且只有一边有 一端 ACL 未放行 224.0.0.5 display acl all 组播地址被 ACL 拒绝,源端发起的一侧看不到回包
邻居一直 Init 且两端 Router-ID 相同 Router-ID 冲突 display ospf brief 两端 Router ID 显示一致
卡在 ExStart MTU 不一致 display interface brief、display ospf interface 看 MTU 字段;在华为上可 ospf mtu-enable 检测或 undo ospf mtu-enable 回避
卡在 ExStart 一端开了 ospf mtu-enable 且对端 MTU 较小 display current-configuration interface 关闭 MTU 检测或两端统一 MTU
邻居 2-Way 保持不变 两端都是 DR-Other,正常现象 display ospf interface 看 State 列:DROther 与 DROther 之间就是 2-Way
邻居 2-Way 且链路只有两台设备 优先级全为 0,没选出 DR display ospf interface Priority 为 0 的接口不参与选举,至少要有一台 > 0
邻居能 Full,但路由不通 汇总网段超出宣告范围 display ospf lsdb summary 汇总段没有对应 Type3,说明没生效
邻居 Full,路由表里少路由 filter-policy/ACL 过滤 display ospf routing、display ip routing-table OSPF 路由表有、主路由表没有,多半被 import 过滤
邻居 Full,选了次优路径 cost 与预期不一致 display ospf interface、display ospf routing 确认参考带宽全网一致、有没有手工 ospf cost
虚连接状态不是 Full 虚连接穿过了 Stub 区域,或 transit area 路由不可达 display ospf vlink、display ospf routing 穿过区域必须能互达对方 Router-ID

H3C 侧对应的排查命令:

display ospf peer
display ospf error
display ospf interface
display ospf vlink

H3C 的 display ospf error 会按错误类型分列计数器,认证失败、Hello 参数不匹配的计数一目了然:

OSPF Process 1 with Router ID 10.200.0.1
    General packet errors:
 0     : Corrupted
 12    : Bad authentication type
 0     : Bad virtual link
 5     : Bad version
    Hello packet errors:
 0     : Bad network mask
 31    : Hello timer mismatch
 0     : Dead timer mismatch

Hello timer mismatch 与 Dead timer mismatch 是最常出现的两行:两端 hello/dead 必须完全一致,比如一端把接口改成了 p2mp(30/120)而另一端仍是 broadcast(10/40),就必然报错。注意「Bad authentication type」和认证口令错误是两回事:前者说明模式都对不上(一边 simple 一边 MD5),后者说明模式一致但口令或 key-id 不同,两种情况的修法完全不同。

适用版本:华为 VRP V200R019 及以上(AR6000/S5700 系列);H3C Comware V7(R2610 及以上)。

11.7 新手踩坑与注意事项

  1. 反掩码写成正掩码——network 192.168.10.0 255.255.255.0 不会报错,但宣告的网段会变得莫名其妙。避法:记住 /24 是 0.0.0.255、/30 是 0.0.0.3、/32 是 0.0.0.0。
  2. 千兆万兆 cost 全是 1——默认参考带宽 100M,大于 100M 的口全都算 1,两条不同带宽的路径会变成等价路由。避法:全网统一 bandwidth-reference 1000(或 10000),并注意这会影响全进程。
  3. DR 优先级配完以为立刻生效——选举不可抢占,改完优先级现任 DR 还在。避法:维护窗口内 reset ospf process 或接口 shutdown/undo shutdown,且要清楚这会短暂中断邻接。
  4. 重启 OSPF 进程不当回事——reset ospf process 会中断所有邻居、触发 DR/BDR 重选、全网 SPF 重算。避法:业务高峰别敲;有条件用 reset ospf 1 process graceful-restart。
  5. 两端网络类型不一致——一端 broadcast、一端 p2p,hello/dead 也许碰巧相同,但网络类型不匹配照样卡在 ExStart。避法:改网络类型必须两端同改。
  6. MTU 不一致卡在 ExStart——华为默认在 DD 报文里填 0 不检测,一旦开了 ospf mtu-enable 就会暴露。避法:先统一两端接口 MTU,再决定是否开检测。
  7. 认证一半配一半没配——区域认证配了,接口认证又配了不同的,接口认证优先导致一边对一边错。避法:一个区域统一一种认证方式,密钥集中保管。
  8. 虚连接穿过了 Stub/NSSA 区域——配置能敲上去,状态却一直不 Full。避法:transit area 必须是普通区域。
  9. 静默接口忘了取消——silent-interface 是进程级别的隐性开关,排查时极易忽略。避法:收尾时 display current-configuration | include silent 复查一遍。
  10. 汇总配置在错误的视图——abr-summary 配在 area 视图、asbr-summary 配在进程视图,配反了不报错但没效果。
  11. Router-ID 没改就重启——只改配置不重启进程,邻居表里的 Router-ID 还是旧的。避法:改完 Router-ID 一定 reset ospf 1 process,并确认 display ospf brief 已变化。
  12. 把 key-id 当成算法编号——看到 md5 1 就以为 1 代表 MD5,对接别家设备时把 key-id 配成 2 就断了。避法:记住 key-id 只是标识符,值本身没有算法含义。

适用版本:华为 VRP V200R019 及以上(AR6000/S5700 系列);H3C Comware V7(R2610 及以上)。

11.8 本章小结

  • OSPF 是链路状态协议:每台设备泛洪自己的链路状态,人人形成相同的 LSDB,各自用 SPF 算最短路。
  • 六种 LSA 各司其职:Type1/2 在区域内,Type3/4 由 ABR 跨区,Type5 由 ASBR 全 AS 泛洪,Type7 只在 NSSA 内打转。
  • DR/BDR 只存在于广播和 NBMA 网段,规则是优先级大者优先、Router-ID 大者优先、不可抢占;DR-Other 之间停在 2-Way 是正常的。
  • cost = 参考带宽 ÷ 接口带宽,华为/H3C 默认参考带宽都是 100Mbps,超过 100M 的接口都会算成 1,必须调 bandwidth-reference 或手工 ospf cost。
  • 邻居卡点即病因:Down/Init 查报文与认证,2-Way 多为正常,ExStart 查 MTU,Full 后路由不对查汇总与过滤。
  • 认证分区域和接口两种,接口优先;推荐使用 HMAC-SHA256,避免 simple 和 MD5,md5 1 里的 1 是 key-id 不是算法编号。
  • ABR 用 abr-summary 汇总区域间路由,ASBR 用 asbr-summary 汇总外部路由。
  • 虚连接是「非骨干区域无法与骨干直连」的补救手段,穿过区域必须是普通区域,不推荐长期依赖。
  • 华为与 H3C 的 OSPF 命令高度同构,主要差异在认证关键字连字符、汇总掩码写法、接口编号。

自测题

  1. 一台华为交换机 GigabitEthernet0/0/1 是千兆口、GigabitEthernet0/0/2 是百兆口,默认配置下这两个接口的 OSPF cost 分别是多少?想让千兆口和百兆口拉开差距,应该怎么配?
  2. 两台路由器背靠背用千兆网线直连,两端都用默认以太网口配置,邻居能否 Full?如果一端改成 p2mp,会卡在什么状态、报什么错?
  3. abr-summary 和 asbr-summary 分别配在哪个视图、处理的是哪类 LSA?配反了会怎样?
  4. Area 2 没有物理链路连到 Area 0,只剩一条经 Area 1 的链路。请写出两端 ABR 的关键配置,并说明为什么 transit area 不能是 Stub。
  5. 两台设备邻居长期停在 2-Way,什么情况下是正常的?什么情况下是故障?
  1. 默认参考带宽 100Mbps,千兆口 100/1000=0.1 取整后按 1 算,百兆口 100/100=1,所以两个都是 1。要拉开差距应在 OSPF 进程里 bandwidth-reference 1000(千兆口 cost=1、百兆口 cost=10),或给百兆口手工 ospf cost 10 以上。
  2. 能 Full,因为两端默认都是 broadcast、hello/dead 都是 10/40,MTU 一致即可建邻接。若一端改成 p2mp,该端变成 30/120,两端 hello/dead 不一致,邻居会反复从 Down 和 Init 之间重启,对端 display ospf error 里能看到 Hello timer mismatch / Dead timer mismatch 计数增长。
  3. abr-summary 配在 OSPF 区域视图(被汇总区域下),把本区域的路由汇总后以 Type3 发往其他区域;asbr-summary 配在 OSPF 进程视图,把 import-route 引入的外部路由汇总成 Type5(在 NSSA 内为 Type7)。配反了命令不会报错,但聚合不生效,LSDB 里仍是明细路由。
  4. 两端 ABR 的 transit area(本例为 Area 1)下都要配 vlink-peer 对端Router-ID,且两端区域号一致。transit area 必须是普通区域,因为虚连接需要穿越该区域把 OSPF 报文透传过去,而 Stub/NSSA 区域会限制 LSA 的类型和泛洪范围,无法保证两端 ABR 之间 Router-ID 的区域内路由可达,虚连接就起不来。
  5. 正常:两端都是 DR-Other(比如广播网段里已经有了别的 DR/BDR),DR-Other 之间本来就不建立邻接,停在 2-Way 正确无误。故障:网段里只有这两台设备,本应有一台当 DR、一台当 BDR,结果都成了 DR-Other——通常是两端的 ospf dr-priority 都被配成了 0,或者一端被 silent-interface 静默导致 Hello 方向不对,需要至少有一台优先级大于 0。

关于本书:《华为 / H3C 网络设备典型功能配置详解》—— 面向国内高校/企业网络环境, 华为 VRP 与 H3C Comware 双厂商并排配置的实操教材,共 43 章。 全书所有命令尽量有官方出处,查不到的显式标注「待核实」。 返回系列目录