华为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 新手踩坑与注意事项
- 反掩码写成正掩码——
network 192.168.10.0 255.255.255.0不会报错,但宣告的网段会变得莫名其妙。避法:记住 /24 是0.0.0.255、/30 是0.0.0.3、/32 是0.0.0.0。 - 千兆万兆 cost 全是 1——默认参考带宽 100M,大于 100M 的口全都算 1,两条不同带宽的路径会变成等价路由。避法:全网统一
bandwidth-reference 1000(或 10000),并注意这会影响全进程。 - DR 优先级配完以为立刻生效——选举不可抢占,改完优先级现任 DR 还在。避法:维护窗口内
reset ospf process或接口shutdown/undo shutdown,且要清楚这会短暂中断邻接。 - 重启 OSPF 进程不当回事——
reset ospf process会中断所有邻居、触发 DR/BDR 重选、全网 SPF 重算。避法:业务高峰别敲;有条件用reset ospf 1 process graceful-restart。 - 两端网络类型不一致——一端 broadcast、一端 p2p,hello/dead 也许碰巧相同,但网络类型不匹配照样卡在 ExStart。避法:改网络类型必须两端同改。
- MTU 不一致卡在 ExStart——华为默认在 DD 报文里填 0 不检测,一旦开了
ospf mtu-enable就会暴露。避法:先统一两端接口 MTU,再决定是否开检测。 - 认证一半配一半没配——区域认证配了,接口认证又配了不同的,接口认证优先导致一边对一边错。避法:一个区域统一一种认证方式,密钥集中保管。
- 虚连接穿过了 Stub/NSSA 区域——配置能敲上去,状态却一直不 Full。避法:transit area 必须是普通区域。
- 静默接口忘了取消——
silent-interface是进程级别的隐性开关,排查时极易忽略。避法:收尾时display current-configuration | include silent复查一遍。 - 汇总配置在错误的视图——
abr-summary配在 area 视图、asbr-summary配在进程视图,配反了不报错但没效果。 - Router-ID 没改就重启——只改配置不重启进程,邻居表里的 Router-ID 还是旧的。避法:改完 Router-ID 一定
reset ospf 1 process,并确认display ospf brief已变化。 - 把 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 命令高度同构,主要差异在认证关键字连字符、汇总掩码写法、接口编号。
自测题
- 一台华为交换机 GigabitEthernet0/0/1 是千兆口、GigabitEthernet0/0/2 是百兆口,默认配置下这两个接口的 OSPF cost 分别是多少?想让千兆口和百兆口拉开差距,应该怎么配?
- 两台路由器背靠背用千兆网线直连,两端都用默认以太网口配置,邻居能否 Full?如果一端改成
p2mp,会卡在什么状态、报什么错? abr-summary和asbr-summary分别配在哪个视图、处理的是哪类 LSA?配反了会怎样?- Area 2 没有物理链路连到 Area 0,只剩一条经 Area 1 的链路。请写出两端 ABR 的关键配置,并说明为什么 transit area 不能是 Stub。
- 两台设备邻居长期停在 2-Way,什么情况下是正常的?什么情况下是故障?
- 默认参考带宽 100Mbps,千兆口 100/1000=0.1 取整后按 1 算,百兆口 100/100=1,所以两个都是 1。要拉开差距应在 OSPF 进程里
bandwidth-reference 1000(千兆口 cost=1、百兆口 cost=10),或给百兆口手工ospf cost 10以上。 - 能 Full,因为两端默认都是 broadcast、hello/dead 都是 10/40,MTU 一致即可建邻接。若一端改成
p2mp,该端变成 30/120,两端 hello/dead 不一致,邻居会反复从 Down 和 Init 之间重启,对端display ospf error里能看到Hello timer mismatch/Dead timer mismatch计数增长。 abr-summary配在 OSPF 区域视图(被汇总区域下),把本区域的路由汇总后以 Type3 发往其他区域;asbr-summary配在 OSPF 进程视图,把import-route引入的外部路由汇总成 Type5(在 NSSA 内为 Type7)。配反了命令不会报错,但聚合不生效,LSDB 里仍是明细路由。- 两端 ABR 的 transit area(本例为 Area 1)下都要配
vlink-peer 对端Router-ID,且两端区域号一致。transit area 必须是普通区域,因为虚连接需要穿越该区域把 OSPF 报文透传过去,而 Stub/NSSA 区域会限制 LSA 的类型和泛洪范围,无法保证两端 ABR 之间 Router-ID 的区域内路由可达,虚连接就起不来。 - 正常:两端都是 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 章。 全书所有命令尽量有官方出处,查不到的显式标注「待核实」。 返回系列目录
本人保留对侵权者及其全家发动因果律武器的权利
版权提醒
如无特殊申明,本站所有文章均是本人原创。转载请务必附上原文链接:https://www.elliot98.top/post/huawei-h3c-book/11/。
如有其它需要,请邮件联系!版权所有,违者必究!