华为H3C实战 | 第13章 IS-IS 协议配置详解
📚 本系列共 43 篇(第 13 / 43 篇) · 第二卷 路由与广域网篇 —— 让数据找到路
← 上一篇:第 12 章 BGP 协议配置详解 下一篇:第 14 章 NAT 与地址转换 →
本章导读:IS-IS 和 OSPF 是同一师傅教出的两个徒弟:目标一样(人人掌握全网拓扑、各自算最短路),分区方式不同——OSPF 按"区域"分,IS-IS 按"级别"分。它本是 OSI 的产物,所以第一道坎是那套不是 IP 的 NET 地址。
本章结构:
- 13.1 功能原理与业务场景 —— Level-1/Level-2 两级结构、“省—市"与"基层网点—中心枢纽"的比喻、集成 IS-IS 的来历、三个必须先想通的设计问题、IS-IS 与 OSPF 的逐项对照
- 13.2 华为设备配置详解 —— 两级组网完整模板、NET 地址的构成规则(49 开头、
.00结尾、System ID 全网唯一)、路由汇总、认证,以及 IPv4 + IPv6 跑在同一个进程里的双栈配置 - 13.3 H3C 设备配置详解 —— H3C 侧的差异逐条对照
- 13.4 命令对照表 —— 两家并排
- 13.5 配置验证 —— 邻居、LSDB、路由三层看,外加两项容易被忽略的验证
- 13.6 排错与故障树 —— 邻居起不来先查四件事:接口没 enable、级别对不上、NET 不合法、认证不一致
- 13.7 新手踩坑 —— NET 写错、L1 路由器找不到出口
- 13.8 本章小结 —— 要点清单 + 自测题
重点提示:建邻居前先核对 isis enable 和级别——L1 接口只能和 L1 建邻居,这是 13.6 的第 2 条,比查认证更常见。NET 地址不是 IP,别拿 IP 规划的思路去编它;System ID 重复会引发 LSP 混乱,全网唯一是硬要求。要双栈就抄 13.2.4,一个进程同时跑 IPv4/IPv6 比开两个进程干净。
关联章节:先看第 11 章的 OSPF 会事半功倍,13.1.4 就是两者的逐项对照;IPv6 地址写法与规划见第 16 章;重发布与路由过滤见第 17 章。
13.1 功能原理与业务场景
13.1.1 这功能是干嘛的(通俗版)
一个快递公司要在全国送货,最怕两件事:一是没人知道全公司有哪些网点,二是有人拿着过期的地图乱跑。解决办法是让每个网点都维护一份完整的地图(谁跟谁连着、多快、堵不堵),并保证地图随时更新——这就是链路状态路由协议做的事。
IS-IS 和 OSPF 是"同一个师傅教出来的两个徒弟”,目标一样:让每台路由器都掌握全网拓扑,各自用同一套算法算出最短路径。区别在分区方式:OSPF 是按"区域(Area)“分,一个区域里的路由器共享一张地图,出口由 ABR 汇总;IS-IS 是按"级别(Level)“分,Level-1 管区域内部,Level-2 管骨干。
打个更贴切的比方:OSPF 像按"省—市"分区管理,每个市有自己的详图,市和省之间由专门的角色转交;IS-IS 像按"基层网点—中心枢纽"两级管理,基层只认自己辖区,要去外地就找最近的枢纽。
IS-IS 最特别的一点是:它原本不是给 IP 设计的。IS-IS 是 OSI 协议栈(国际标准化的网络协议族)的产物,用来路由 OSI 地址;后来大家发现这套算法挺好用,就让它"顺带"也支持 IP,这就是集成 IS-IS(Integrated IS-IS)[1]。所以你会看到它用一套很奇怪的地址(NET 地址),那不是 IP 地址——这是新手第一个坎。
13.1.2 在网络里怎么落地(设计视角)
先说清楚 IS-IS 的两级结构,这是它的灵魂:
| 级别 | 管什么 | 维护什么 | 类比 |
|---|---|---|---|
| Level-1 | 一个区域内部 | 只有本区域的 LSDB + 一条指向 L1/2 的默认路由 | 只知道本市的路 |
| Level-2 | 骨干 | 全网的 Level-2 拓扑 | 全国高速路网 |
| Level-1-2 | 既在区域又在骨干 | 两张 LSDB 都维护 | 本市与外地都熟的调度员 |
关键规则有三条:第一,Level-2 必须连续,也就是说所有 L2 路由器必须能互相连到,中间不能被 L1-only 的设备"断开”;第二,L1 路由器要出区域,只能通过最近的 L1/2 设备(靠 ATT bit 告诉 L1 路由器"我这儿能出去”);第三,区域是由 NET 地址里的 Area ID 决定的,不是从接口上继承的——这一点和 OSPF 完全不同。
先看 NET 地址的构造。NET 是 OSI 体系里的"网络实体标识",格式是:
NET = AFI + Area ID + System ID + SEL
49 0001 10.200.1.1 00
| | | |
| | | +-- SEL 选择符,IP 场景固定 00
| | +-- System ID,6 字节,通常是设备 Loopback 地址
| +-- 区域 ID,长度可变(1~13 字节,常配 2 字节如 0001)
+-- AFI 授权格式标识,49 是私有地址格式
合起来:49.0001.10.200.1.1.00
三条铁律必须记牢:一是 AFI 用 49(私有,只有内部使用);二是 System ID 全网唯一,通常用设备的 Loopback 地址填成 6 字节;三是 SEL 固定 00。区域 ID 由同样的规则决定——同一区域内的设备 NET 只有 Area ID 部分相同,System ID 各不相同。
再看一个两级拓扑,把复杂度压到能一眼看懂:
区域 0002 骨干(Level-2) 区域 0001
+-----------+ +---------------------+ +-----------+
| R4(L1) | | R2(L1/2) R3(L1/2) | | R5(L1) |
| 49.0002.x |--------------| 49.0002.x 49.0001.x|-----------| 49.0001.x |
+-----------+ +---------------------+ +-----------+
|
+-----------+
| R1(L2) |
| 49.0001.x |
+-----------+
注意 R2 和 R3 的 NET 里 Area ID 分别属于 0002 和 0001,这是因为 L1/2 设备要"归属"在某个区域的 L1 拓扑里,同时参与 L2 骨干。R4 要去 R5,路径是 R4 → R2(离开 0002)→ 骨干 → R3 → R5(进入 0001)。
IS-IS 用什么报文干活。四类报文记一下,排错时会用到:
| 报文 | 作用 | 类比 |
|---|---|---|
| IIH | 邻居发现与保持(分 LAN IIH 与 P2P IIH) | 打招呼、确认在线 |
| LSP | 链路状态通告,承载拓扑 | 地图的更新页 |
| CSNP | 完整序列号报文,请求/告知完整摘要 | 核对整本地图目录 |
| PSNP | 部分序列号报文,确认或请求特定条目 | 单条确认 |
DIS 而不是 DR/BDR。IS-IS 在广播网络上选一个指定中间系统(DIS),由它负责发 CSNP 和伪节点 LSP。与 OSPF 的 DR 最大的区别是:IS-IS 的 DIS 是可抢占的——新来的设备优先级更高,立刻把 DIS 抢过来;OSPF 的 DR 不可抢占,要等重新选举。这个差异解释了为什么 IS-IS 里换设备、加设备之后要"重新看 DIS"。
与 OSPF 的选型对比,这是本章最实用的一张表:
| 对比项 | OSPF | IS-IS |
|---|---|---|
| 分区模型 | Area(0 为骨干,区域必须连骨干) | Level-1 / Level-2(L2 必须连续) |
| 扩展性 | 一般,大网要谨慎分层 | 强,运营商级常见 |
| 报文开销 | 较高(LSU 多) | 较低(LSP 精简) |
| 地址规划 | 用 IP 网段声明 | 用 NET(与 IP 网段解耦) |
| 学习曲线 | 平缓,资料多 | 陡峭,NET 概念劝退 |
| 双栈支持 | IPv4/IPv6 两套进程(OSPFv2/OSPFv3) | 一个进程同时带(TLV 区分) |
| 故障排错 | 命令直观 | 需熟悉 LSDB 与 TLV |
| 典型场景 | 企业网、校园网 | 运营商、大型数据中心、双栈环境 |
一句话选型建议:企业网与校园网用 OSPF(人才多、资料多、排错方便);大型骨干、运营商、需要 IPv6 与 IPv4 用一个进程的大网用 IS-IS。
13.1.3 三个必须先想通的设计问题
配置 IS-IS 之前,有三件事想不通,后面配出来一定是"能通但心里没底"。
问题一:区域怎么划。IS-IS 的区域只有一个实际意义——“打断 L1 的路由扩散范围”。所以划区域的原则是"按规模划、按管理边界划":单体楼栋或单个小园区可以全部用一个区域(全 L1,甚至全 L2 的 flat 网络);跨地域的大网才需要"每个地域一个 L1 区域 + 骨干 L2"。另外记住 IS-IS 的骨干不是"Area 0"而是"Level-2",每个地域都要有至少一台 L1/2 设备把区域挂到骨干上,否则那块区域就是孤岛。
问题二:全网用哪种 level 组合。三种常见组合:
| 组合 | 适用规模 | 特点 |
|---|---|---|
| 全部 Level-2 | 小型网、扁平网 | 最简单,所有设备一张 LSDB,规模大了扛不住 |
| 全部 Level-1 | 单个封闭区域 | 只在本区域通信,不需要出区域 |
| L1/2 分层 | 中大型网 | IS-IS 的标准姿势,扩展性好,配置稍复杂 |
新手上手建议"先全部 Level-2 跑通",验证连通性没问题后再按地域拆 L1,因为 flat 网络排错最简单,分层之后复杂度是几何级上升的。
问题三:开销风格用 wide 还是 narrow。IS-IS 有两套开销体系:老式的 narrow(接口开销 6 位,最大 63;整条路径 10 位,最大 1023)和新式的 wide(32 位,几乎无限)。现代部署一律用 wide,原因是:narrow 上限太低,大网里多条链路一串 cost 撞顶,路由就选不出差别了;而且 wide 是支持流量工程(TE)与某些 IPv6 扩展的前提。用 wide 的唯一代价是"邻居必须也支持 wide"——不过现在的设备都支持,真遇到老设备才需要退 narrow。
这三件事定下来,配置就是照着模板填参数,这也是为什么本章把模板放在原理之后:先想清楚再敲命令,比敲完再改要快十倍。
13.1.4 IS-IS 与 OSPF 的一次逐项对照
上面那张选型表太浓缩,这一节把它展开成"逐项说清楚",因为选型是这项技术里最难、也最容易被要求回答的问题。
扩展性差在哪。OSPF 的每个区域都要跟 Area 0 有 ABR 相连,区域多了之后骨干区域的 LSA(Type 1 和 Type 2)数量爆炸,每台 ABR 都要重新计算;IS-IS 的 L2 LSP 是"链式"泛洪,加上它把拓扑与路由前缀分离(LSP 里只放拓扑,前缀用 TLV 单独带),所以 L2 区域即使很大,报文总量也比 OSPF 小。这是运营商选 IS-IS 的第一原因。
报文开销低在哪。OSPF 邻居状态机要走到 Full,每台设备与 DR/BDR 建立完整邻接;IS-IS 的邻接状态简单(Up 就是 Up),报文也更精简(LSP 是 TLV 结构,可扩展性好)。另外 IS-IS 用的是二层直接封装(不像 OSPF 跑在 IP 之上),效率略高,报文大小可控。
地址解耦好在哪。OSPF 的配置与 IP 网段强相关(在 area 里写 network),改网段就要改配置;IS-IS 用 NET,和接口上的 IP 网段完全解耦,加一个网段不用改 IS-IS 配置(只要接口 enable 即可)。这意味着地址规划变更时 IS-IS 侧的改动量几乎为零。
双栈支持好在哪。OSPF 要 IPv4 和 IPv6 各跑一个进程(OSPFv2 + OSPFv3),两套进程两套配置两套排错;IS-IS 用一个进程同时承载 IPv4 与 IPv6(通过不同的 TLV,如 IPv4 用 135 号、IPv6 用 236 号),配置量与排错面都小一半。如果你的网络未来 3 年内要上 IPv6,这个优势非常实在。
学习曲线陡在哪。三条:一是 NET 地址的构造(49 / Area / System ID / SEL)不直观;二是级别(L1/L2/L1-2)的语义要建立起来;三是排错要看 LSDB 与 TLV,不像 OSPF 那样有很直白的邻居状态机。所以团队里没人懂 IS-IS 的话,出了问题是可以全网停摆的,这也是企业网选 OSPF 的核心理由。
一句话:OSPF 是"够用且安全"的选择,IS-IS 是"扩展性好但要求团队水平高"的选择。选哪个不是技术高下之分,是团队能力与网络规模的匹配问题。
适用版本:华为 VRP V200R019 及以上(AR6000 系列);H3C Comware V7(R2610 及以上)。
13.2 华为设备配置详解
13.2.1 命令行基础速览(本章会用到的那几条)
IS-IS 在华为设备上的配置分两块:全局进程块(配 NET、级别、路由渗透)和接口块(使能 IS-IS、配开销、指定级别)。新手最容易犯的错是只在全局配了、接口没使能,结果一条邻居都建不起来。
| 用途 | 华为命令 | 视图 |
|---|---|---|
| 启动进程 | isis 1 |
系统视图 |
| 配 NET | network-entity 49.0001.10.200.1.1.00 |
isis 视图 |
| 配级别 | is-level level-1 / level-2 / level-1-2 |
isis 视图 |
| 开销风格 | cost-style wide |
isis 视图 |
| 路由渗透 | import-route isis level-2 into level-1 |
isis 视图 |
| 路由汇总 | summary 172.16.0.0 255.255.0.0 |
isis 视图 |
| 接口使能 | isis enable 1 |
接口视图 |
| 接口级别 | isis circuit-level level-1 |
接口视图 |
| 接口开销 | isis cost 20 |
接口视图 |
| DIS 优先级 | isis dis-priority 100 |
接口视图 |
| 认证 | area-authentication-mode / domain-authentication-mode |
isis 视图 |
| 查看邻居 | display isis peer |
任意视图 |
配置顺序建议。新手最容易乱的就是"先配哪一步"。推荐按这个顺序,每一步都能立刻验证:
1. 配 Loopback 地址(决定 System ID,必须最先做)
↓
2. 全局 isis 1 + network-entity + is-level + cost-style
↓
3. 接口配 IP,然后 isis enable 1
↓
4. display isis peer 验证邻居 Up
↓
5. 视需要再加:渗透、汇总、认证、开销、DIS 优先级
这个顺序的道理是:“协议能跑起来"和"协议跑得符合设计"是两件事。前三步只求跑起来(邻居 Up),后两步才是精细化调整。很多新手一上来就把渗透、汇总、认证、开销全配了,结果邻居都建不起来,反而查不出是哪一条有问题。先求通、再求优,是配置链路状态协议的通用心法。
13.2.2 完整配置模板:两级组网(华为 AR6140-16G4XG)
场景:区域 0001 有两台 L1 路由器(R5、R6),两台 L1/2 路由器(R2、R3)作为出区域的出口,R1 是纯 L2 设备放在骨干中央。要求 L1 能通过 L1/2 访问另一个区域,且骨干路由要渗透进区域 0001。
先配 R2(L1/2,区域 0001 的出口之一):
# 进入系统视图
system-view
sysname HUAWEI-R2
# 配置环回地址,作为 System ID 的来源
interface LoopBack 0
ip address 10.200.2.2 255.255.255.255
quit
# 启动 IS-IS 进程
isis 1
is-level level-1-2
network-entity 49.0001.10.200.2.2.00
cost-style wide
# 把骨干路由渗透进本区域,L1 路由器才能学到区域外路由
import-route isis level-2 into level-1
quit
接口上使能 IS-IS,并指定接口级别:
# 朝区域内部的接口:只跑 L1
interface GigabitEthernet0/0/1
ip address 172.16.1.1 255.255.255.0
isis enable 1
isis circuit-level level-1
quit
# 朝骨干的接口:只跑 L2
interface GigabitEthernet0/0/2
ip address 172.16.2.1 255.255.255.0
isis enable 1
isis circuit-level level-2
quit
再配 R4(纯 L1,区域 0002):
# 只做 L1,只需要本区域的 NET
isis 1
is-level level-1
network-entity 49.0002.10.200.4.4.00
cost-style wide
quit
# 区域内部接口
interface GigabitEthernet0/0/1
ip address 172.16.3.1 255.255.255.0
isis enable 1
quit
最后配 R1(纯 L2,骨干中央):
# 只做 L2,NET 里 Area ID 要属于骨干区域
isis 1
is-level level-2
network-entity 49.0001.10.200.1.1.00
cost-style wide
quit
# 两条朝 L1/2 设备的接口
interface GigabitEthernet0/0/1
ip address 172.16.4.1 255.255.255.0
isis enable 1
quit
interface GigabitEthernet0/0/2
ip address 172.16.5.1 255.255.255.0
isis enable 1
quit
13.2.3 逐行讲解
| 命令 | 作用 | 新手常填错的地方 |
|---|---|---|
isis 1 |
启动 IS-IS 进程 | 进程号本地有效,两端可以不同 |
network-entity 49.0001.10.200.2.2.00 |
配 NET | 格式必须对:49 开头、SEL 为 00、System ID 六字节;漏了 .00 结尾会报错 |
is-level level-1-2 |
指定级别 | 不配时的默认值视版本而定,L1/2 场景一定要显式配 |
cost-style wide |
用宽开销 | 不开 wide 时开销上限 63,大网会不够用;开 wide 后才支持 IPv6 与 TE |
import-route isis level-2 into level-1 |
L2 路由渗透进 L1 | 不写这条,L1 路由器只能用指向 L1/2 的默认路由出去,学不到具体明细 |
isis enable 1 |
接口使能 | 最常见的漏配:全局配了但接口没 enable,一个邻居都没有 |
isis circuit-level level-1 |
接口只跑 L1 | 一个接口可以同时是 L1 和 L2,除非明确要分开 |
isis cost 20 |
配开销 | 默认开销按带宽算,改开销前先确认开销风格 |
isis dis-priority 100 |
DIS 优先级 | 只对广播网络有意义;IS-IS 的 DIS 可抢占 |
为什么 NET 的 System ID 要用 Loopback 地址。System ID 必须全网唯一,而设备的 Loopback 地址本来就是唯一的、稳定的(不随接口插拔变化)。所以业界惯例是"用 Loopback 的 IP 填成 6 字节当作 System ID”,比如 10.200.2.2 写成 10.200.2.2 三部分、拼成 10.200.2.2 → 49.0001.10.200.2.2.00。这样做的好处是:看到 NET 就知道是哪台设备,运维时少查一次资料。
Level-1 路由器怎么找到出口。L1 路由器本身不知道区域外的路由,它的做法是"用一条指向最近的 L1/2 设备的默认路由"。这个"最近"由 L1/2 设备通过 ATT bit(Attached bit) 告诉 L1:L1/2 设备在自己的 L1 LSP 里把 ATT 置位,L1 路由器看到后就知道"从这个邻居能出去"。所以如果 L1 出不去,第一个要查的就是"L1/2 设备连着没连着 L2 骨干"——它自己 L2 都不通,ATT bit 置不了,L1 自然也没出口。
IS-IS 的路由汇总。汇总要配在负责转发的设备上,用 summary 命令把细路由聚合成一条:
# 在 L1/2 设备上,把区域 0001 的 172.16.x.x 段汇总成一条对外发布
isis 1
summary 172.16.0.0 255.255.0.0
quit
注意汇总的方向:summary 配在哪个级别,就影响该级别发出的 LSP。要控制 L1 的汇总就配在 L1 上,要控制 L2 的汇总就配在 L2 上。配错级别是"汇总不生效"的常见原因。
IS-IS 的认证分三个层次,作用范围从大到小:
# 路由域认证:整个 IS-IS 域内所有 L2 报文都要认证
isis 1
domain-authentication-mode md5 IS-IS@2024
quit
# 区域认证:本区域内所有 L1 报文都要认证
isis 1
area-authentication-mode md5 IS-IS@2024
quit
# 接口认证:只在这一条链路上认证(MD5,两厂商通用)
interface GigabitEthernet0/0/1
isis authentication-mode md5 IS-IS@2024
quit
# 若对端也是华为、且要求更强算法:接口认证支持 HMAC-SHA256,必须带 key-id
interface GigabitEthernet0/0/2
isis authentication-mode hmac-sha256 key-id 1 IS-IS@2024
quit
三者的关系是"认证要匹配":一端开了区域认证,另一端也必须开且密钥一致,否则邻居建不起来,现象是"邻接关系停在 Initializing 之类状态"。
⚠ 版本差异:
domain-authentication-mode/area-authentication-mode/isis authentication-mode的参数格式在不同 VRP 版本中有md5 cipher、hmac-sha256等组合差异;cost-style的缺省值也视版本而定。H3C 侧的认证算法已核实(有限):H3C《05-IS-IS配置》给出的三处认证命令参数形式统一为
{ md5 | simple } [ cipher password ] [ level-1 | level-2 ],也就是说 H3C 的 IS-IS 认证只支持 MD5 与简单口令(simple)两种,没有 HMAC-SHA256。这一点与 OSPF 不同(OSPF 的 H3C 侧是支持hmac-sha-256的,见第 11 章),迁移配置时不要把 OSPF 的习惯带过来。 出处:H3C 05-IS-IS配置 (1.6.3 配置邻居关系验证:isis authentication-mode { md5 | simple } [ cipher password ] [ level-1 | level-2 ];1.6.x 区域验证area-authentication-mode同参数形式)华为侧的认证算法与参数顺序已核实(官方命令参考原文):
命令 官方命令格式 接口认证 isis authentication-mode { simple | md5 } { plain plain-text | [ cipher ] plain-cipher-text } [ level-1 | level-2 ] [ ip | osi ] [ send-only ]接口认证(HMAC-SHA256) isis authentication-mode hmac-sha256 key-id key-id { plain plain-text | [ cipher ] plain-cipher-text } [ level-1 | level-2 ] [ send-only ]接口认证(Keychain) isis authentication-mode keychain keychain-name [ level-1 | level-2 ] [ send-only ]区域认证 area-authentication-mode { { simple { ... } | md5 { ... } } [ ip | osi ] | { keychain keychain-name } } [ snp-packet { authentication-avoid | send-only } | all-send-only ]路由域认证 domain-authentication-mode { simple { ... } | md5 { ... } } [ ip | osi ] [ snp-packet { ... } | all-send-only ]关于
plain/cipher:官方格式是{ plain plain-text | [ cipher ] plain-cipher-text }。注意两点:一是两者都可不写,直接跟密码串即可(官方示例就是authentication-mode md5 nonstandard这类写法);二是它们是"密码输入方式"(你输入的是明文还是要密文),不是认证算法。教材模板为简洁起见直接写密码串。由此得到两条实用结论:
- 华为 IS-IS 支持 HMAC-SHA256,但只有接口认证支持,且必须带
key-id key-id;区域认证与域认证只有simple/md5(外加区域认证支持 keychain)。- H3C 与华为不完全对称:H3C 的 IS-IS 认证只有
md5 | simple(前面已核实),没有 hmac-sha256。所以「华为用 hmac-sha256、H3C 用 md5 对接」这种混配是不可能通的,两端必须落到共同支持的算法上——两家都支持 MD5。出处:NetEngine AR1000V V300R021 命令参考 · IS-IS(IPv4)配置命令 (
isis authentication-mode、area-authentication-mode、domain-authentication-mode命令格式原文) 出处:H3C《05-IS-IS配置》明确 NET 由三部分组成——区域 ID 长度可变(1~13 字节)、System ID 固定 6 字节、SEL 固定 0,NET 总长 8~20 字节;原文举例ab.cdef.1234.5678.9abc.00中区域 ID 为ab.cdef、System ID 为1234.5678.9abc。参见 H3C 05-IS-IS配置 、华为 network-entity 命令参考 。另注:同一进程可配多个 NET 的细节属于厂商实现差异,本章模板只配一个 NET,不做展开。
13.2.4 IS-IS 双栈配置(IPv4 + IPv6 一个进程)
IS-IS 相对 OSPF 的一个实在优势:一个进程同时承载 IPv4 与 IPv6 路由。但这不是"配完就自动成立"的——华为官方命令参考明确列出了 IS-IS IPv6 能正常运行必须满足的六个前提,少一步都不行:
- 系统视图下
ipv6使能全局 IPv6 isis使能 IS-IS 进程network-entity设置 NET- IS-IS 视图下
ipv6 enable使能进程的 IPv6 能力(<– 最容易漏) - 各接口上
ipv6 enable使能接口 IPv6 能力,再配 IPv6 地址 - 各接口上
isis ipv6 enable使能 IS-IS IPv6 功能(<– 第二容易漏)
也就是说:isis enable 1 只管 IPv4,IPv6 要另外两条命令——进程侧一条、接口侧一条。下面是按官方要求补全的完整模板:
# 第 1 步:全局启用 IPv6
ipv6
# 环回口:IPv4 用于 System ID 来源,IPv6 用于路由
interface LoopBack 0
ip address 10.200.2.2 255.255.255.255
ipv6 enable
ipv6 address 2001:db8:2::2 128
isis enable 1
isis ipv6 enable 1
quit
# 第 2~4 步:IS-IS 进程 + NET + 进程级 IPv6 使能
isis 1
is-level level-1-2
network-entity 49.0001.10.200.2.2.00
cost-style wide
# 使能 IS-IS 进程的 IPv6 能力;topology 缺省为 standard
ipv6 enable topology standard
quit
# 第 5~6 步:接口双栈 + IS-IS 双栈使能
interface GigabitEthernet0/0/1
ip address 172.16.1.1 255.255.255.0
ipv6 enable
ipv6 address 2001:db8:1::1 64
isis enable 1
isis ipv6 enable 1
quit
topology 参数怎么选(官方三个取值):
| 取值 | 含义 | 适用 |
|---|---|---|
standard(缺省) |
标准/集成拓扑,v4 与 v6 共用一棵 SPF 树 | 一般单栈转双栈的常规场景 |
ipv6 |
IPv6 独立拓扑,v4/v6 各自跑 SPF | 需要 v4 与 v6 拓扑分离(如 v6 链路只在部分链路上) |
compatible |
兼容模式,形成 IPv6 邻接但不单独跑 SPF | 从标准拓扑向 IPv6 拓扑过渡期 |
出处(华为官方命令参考原文):NetEngine AR1000V V300R021 命令参考 · IS-IS(IPv6)配置命令
ipv6 enable(IS-IS):命令格式ipv6 enable [ topology { compatible [ enable-mt-spf ] | ipv6 | standard } ],视图「IS-IS 视图」,缺省「未使能 IS-IS 路由进程的 IPv6 能力」- 使用指南原文列出上述六步前提
- 配置举例:
[Huawei-isis-1] ipv6 enable topology ipv6isis ipv6 enable:「使能接口的 IS-IS IPv6 功能并指定要关联的 IS-IS 进程号」,格式isis ipv6 enable [ process-id ]
验证方式不变,但必须两族分别看:
# 看邻居:同一邻居应同时有 IPv4 与 IPv6 两族邻接
display isis peer
# 看 IS-IS 的 IPv4 路由
display isis route
# 看 IPv6 路由表里有没有 IS-IS 学来的条目
display ipv6 routing-table protocol isis
只有 display ipv6 routing-table protocol isis 里出现了预期条目,才算 IPv6 侧真的跑起来了——只看邻居 Up 是不够的,邻居 Up 只证明 L1/L2 层通了。
⚠ 版本差异:
topology参数的可用取值与缺省值在不同 VRP 版本中可能有差异;部分款型配置 MP 类特性时对单板有要求(见 12.2.3 注)。上线前以ipv6 enable ?的补全输出为准。
13.3 H3C 设备配置详解
H3C Comware V7 的 IS-IS 与华为高度同构,差异主要在接口级别的命令名和汇总命令的写法上。
# 进入系统视图
system-view
sysname H3C-R2
# 环回地址
interface LoopBack 0
ip address 10.200.2.2 255.255.255.255
quit
# 启动 IS-IS 进程
isis 1
is-level level-1-2
network-entity 49.0001.10.200.2.2.00
cost-style wide
import-route isis level-2 into level-1
quit
# 区域内接口
interface GigabitEthernet1/0/1
ip address 172.16.1.1 255.255.255.0
isis enable 1
isis circuit-level level-1
quit
# 骨干接口
interface GigabitEthernet1/0/2
ip address 172.16.2.1 255.255.255.0
isis enable 1
isis circuit-level level-2
quit
save force
纯 L1 设备与纯 L2 设备:
# 纯 L1(区域 0002)
isis 1
is-level level-1
network-entity 49.0002.10.200.4.4.00
cost-style wide
quit
interface GigabitEthernet1/0/1
ip address 172.16.3.1 255.255.255.0
isis enable 1
quit
# 纯 L2(骨干)
isis 1
is-level level-2
network-entity 49.0001.10.200.1.1.00
cost-style wide
quit
interface GigabitEthernet1/0/1
ip address 172.16.4.1 255.255.255.0
isis enable 1
quit
13.3.1 H3C 侧的差异逐条对照
| 项目 | 华为写法 | H3C 写法 | 差异说明 |
|---|---|---|---|
| NET 配置 | network-entity 49.0001.10.200.2.2.00 |
network-entity 49.0001.10.200.2.2.00 |
完全相同 |
| 级别 | is-level level-1-2 |
is-level level-1-2 |
相同 |
| 接口使能 | isis enable 1 |
isis enable 1 |
相同 |
| 接口级别 | isis circuit-level level-1 |
isis circuit-level level-1 |
相同 |
| 接口开销 | isis cost 20 |
isis cost 20 |
相同 |
| 开销风格 | cost-style wide |
cost-style wide |
相同 |
| 路由渗透 | import-route isis level-2 into level-1 |
import-route isis level-2 into level-1 |
相同 |
| 路由汇总 | summary 172.16.0.0 255.255.0.0 |
summary 172.16.0.0 255.255.0.0 |
基本相同,注意汇总配在哪个级别 |
| DIS 优先级 | isis dis-priority 100 |
isis dis-priority 100 |
相同 |
| 接口认证 | isis authentication-mode md5 X |
isis authentication-mode md5 cipher X |
华为可省 plain/cipher;H3C 需带 |
| 查看邻居 | display isis peer |
display isis peer |
相同 |
| 查看 LSDB | display isis lsdb |
display isis lsdb |
相同 |
结论很直接:IS-IS 的两家命令相似度在所有协议里是最高的,几乎可以照抄。真正需要重新学的不是命令,而是 IS-IS 本身的概念(NET、L1/L2、DIS、ATT bit),这些概念学通了,两家的实现差异就不构成障碍。
H3C 上要特别留意的两点。第一,H3C 的接口使能 isis enable 1 与华为一致,但 H3C 部分版本对"接口没有 IP 地址时是否允许 enable"的态度不同,建议先配地址再 enable。第二,H3C 的 cost-style 在部分版本里是进程级参数,配完之后接口的默认开销计算方式会变,改之前先确认现网用的是哪种风格——两个相邻设备的开销风格不一致时,邻居可能建得起来但路由算出来的 metric 完全对不上。
13.4 华为 / H3C 命令对照表
| 功能 | 华为(VRP) | H3C(Comware V7) | 差异说明 |
|---|---|---|---|
| 启动进程 | isis 1 |
isis 1 |
相同 |
| 配 NET | network-entity 49.0001.x.x.x.x.00 |
同左 | 相同 |
| 配级别 | is-level level-1|level-2|level-1-2 |
同左 | 相同 |
| 接口使能 | isis enable 1 |
isis enable 1 |
相同 |
| 接口级别 | isis circuit-level level-1 |
同左 | 相同 |
| 接口开销 | isis cost 20 |
同左 | 相同 |
| 开销风格 | cost-style wide |
同左 | 相同 |
| 路由汇总 | summary 172.16.0.0 255.255.0.0 |
同左 | 相同 |
| 路由渗透 | import-route isis level-2 into level-1 |
同左 | 相同 |
| DIS 优先级 | isis dis-priority 100 |
同左 | 相同 |
| 区域认证 | area-authentication-mode md5 X |
area-authentication-mode md5 cipher X |
华为可省关键字 |
| 域认证 | domain-authentication-mode md5 X |
domain-authentication-mode md5 cipher X |
华为可省关键字 |
| 查看邻居 | display isis peer |
display isis peer |
相同 |
| 查看拓扑 | display isis lsdb |
display isis lsdb |
相同 |
13.5 配置验证
IS-IS 的验证要按"邻居 → 数据库 → 路由"三层走,跟 OSPF 一样但命令不同。
第一步,看邻居有没有建起来:
display isis peer
期望看到每个相邻设备一条,State 为 Up,并且标明是 L1 还是 L2:
Peer information for IS-IS(1)
System ID : 10.200.1.1
Interface : GigabitEthernet0/0/2 Circuit Id : 0000
State : Up HoldTime : 27s
Type : L2 PRI : 64
重点看三列:State 必须是 Up(不是 Init、Initializing、Down),Type 要对得上设计的级别(该是 L2 的地方显示 L1 就是级别配错了),Interface 要是指望的那条链路。
第二步,看链路状态数据库。每台设备的 LSDB 应该收敛到同一个视图:
display isis lsdb
期望能看到各个 System ID 的 LSP 条目,并且 L1 设备的 LSDB 里只有本区域的条目、L1/2 设备有两套(Level-1 Link State Database 与 Level-2 Link State Database 各一节):
Database information for ISIS(1)
--------------------------------
Level-1 Link State Database
LSPID Seq Num Checksum Holdtime Length
10.200.2.2.00-00 0x00000003 0xa1b2 1174 95
如果某台邻居的 LSP 一直不出现,回去查邻居状态,或者查是不是认证没配对(认证一致性体现在 LSP 收到但校验失败)。
第三步,看 IS-IS 算出来的路由表:
display isis route
期望 L1 路由器上有一条 0.0.0.0/0 指向 L1/2 邻居(这是 ATT bit 给的默认路由),L1/2 设备上有全套明细路由。如果 L1 上没有这条默认路由,说明 L1/2 设备的 L2 侧没通、ATT bit 没置位。
第四步,看全局路由表里 IS-IS 学到的路由:
display ip routing-table protocol isis
H3C 侧验证命令一模一样:
display isis peer
display isis lsdb
display isis route
display ip routing-table protocol isis
13.5.1 两项容易被忽略的验证
验证一:DIS 是谁。在广播网络上,IS-IS 会选一个 DIS。它是不是你期望的那台设备,直接影响拓扑稳定性。用下面的命令看接口详细信息:
display isis interface verbose
期望输出里能看到 DIS 那一行,以及 Circuit level、Cost、Type 等信息。DIS 的身份由 isis dis-priority 决定(大者优先,相同则 System ID 大者优先)。验证 DIS 的价值在于:如果你计划让某台性能强的设备当 DIS,就要确认它的优先级确实配到了最大;如果你发现 DIS 落在了一台低端设备上,那它的 CSNP 发送能力可能成为瓶颈。
验证二:NET 台账对不对。这个验证不是命令,是流程。建议每次部署/割接后做一次全量核对:
# 在每台设备上导出 NET,人工比对 System ID 是否有重复
display current-configuration configuration isis | include network-entity
把各设备的输出收集起来做成一张表,逐行比对。这一步花十分钟,能避免一次全网抖动。因为 System ID 冲突是所有 IS-IS 故障里最难定位、后果最严重的一类,而它靠肉眼比对就能防住。
验证三:开销与路径是否符合设计。用 display isis route 看具体网段的下一跳与 metric,再用 display isis interface 看接口的实际开销。如果设计里"主链路开销 10、备链路开销 20",实际输出却显示两条都是 10(或都按带宽算成了相同的值),就说明开销规划没有落地,主备切换不会按预期工作。
13.6 排错与故障树
IS-IS 排错的分层:先看邻居,再看数据库,最后看路由。这条线索和 OSPF 一致,但 IS-IS 特有的坑集中在"级别"和"NET"上。
IS-IS 邻居建不起来
├─ 1. 接口上有没有 enable?
│ └─ display current-configuration interface 看 isis enable
├─ 2. 级别对不对得上?
│ ├─ L1 接口只能和 L1 建 L1 邻居
│ ├─ L2 接口只能和 L2 建 L2 邻居
│ └─ L1/2 接口两种都能建
├─ 3. NET 合法吗?
│ ├─ 必须以 49 开头、以 .00 结尾
│ └─ System ID 6 字节、全网唯一(重复会导致 LSP 混乱)
├─ 4. 认证一致吗?
│ ├─ 区域认证 / 域认证 / 接口认证三种都要各自匹配
│ └─ 密钥或算法不一致会导致 LSP 收不到
└─ 5. 二层/链路本身通吗?
└─ 以太网链路上 IS-IS 也用组播,先确认 ping 得通
IS-IS 邻居 Up 但学不到路由
├─ 1. L1/2 设备的 L2 侧通吗?(决定 ATT bit 能不能置位)
├─ 2. 有没有配路由渗透?(L1 要看明细路由的话必须配)
├─ 3. 开销风格一致吗?(wide / narrow 混用会算错 metric)
└─ 4. 汇总配错级别了吗?(配在 L1 上却想让 L2 汇总)
| 症状 | 可能原因 | 排查命令 |
|---|---|---|
| 一条邻居都没有 | 接口没 isis enable |
display isis peer、display current-configuration interface |
| 邻居状态卡在 Init | 级别不匹配 / 认证不一致 | display isis peer 看 Type |
| 邻居 Up 但 LSDB 空 | NET 配错(SEL 不是 00 / Area ID 非法) | display isis lsdb |
| L1 没有默认路由 | L1/2 设备 L2 侧不通,ATT 未置位 | display isis route |
| L1 学不到区域外明细 | 没配 import-route isis level-2 into level-1 |
display current-configuration configuration isis |
| 路由有但下一跳不对 | 开销风格不一致 | 两端 display isis interface |
| 汇总没生效 | summary 配在了错误的级别 | display isis lsdb 看 LSP 内容 |
| 换设备后拓扑抖动 | DIS 抢占(IS-IS 特性) | display isis interface verbose 看 DIS |
两个 IS-IS 特有的深坑。
第一个是 NET 的 System ID 重复。这个错误的杀伤力极大:两台设备的 System ID 一样,虽然语法都对、配置也像模像样,但 LSDB 会出现"同一个 System ID 的 LSP 来自两个源"的情况,拓扑计算彻底乱掉,现象是路由时有时无、抖动剧烈。排查办法:display isis lsdb 里如果看到同一个 LSPID 的 Seq Num 在两端对不上,或者 display isis peer 里邻居的 System ID 和自己的一样,就是这个问题。避免办法是规划时强制"NET 里的 System ID = 设备 Loopback 地址",并做一张台账。
第二个是 “L1 路由器看不到区域外明细"是设计而非故障。很多新手以为 L1 必须学到全网路由,其实 IS-IS 的标准行为就是 L1 只维护本区域 + 一条默认路由出区域。想让它看明细,才需要 import-route isis level-2 into level-1 做渗透。渗透的代价是 L1 的 LSDB 变大、路由更多的明细会占内存,所以默认不渗透才是对的,渗透是"有特定需求才开"的选项。
三个现场案例,把故障树走一遍。
案例一:新加了两台路由器,邻居都显示 Up,但新增的网段学不到。看起来邻居是通的,问题不在邻居层面。检查发现两台新设备只配了 isis 1 与 network-entity,接口上没有 isis enable 1。此时它们能收到邻居的 IIH 并回应(因为 IIH 走的是接口的二层组播,与"接口是否在 IS-IS 进程里"是两件事),但它们的接口网段不会被宣告出去。这个案例说明一件事:邻居 Up 不等于"该接口的网段被宣告了”,验证时必须看 display isis route 里有没有对应网段,而不是只看邻居。
案例二:整网路由抖动,日志里大量 LSP 重新生成。这是典型的两台设备 NET 冲突。详细的定位过程:先在每台设备上 display isis lsdb,把各自的 LSPID 导出来比对,发现有两台设备的 LSPID 完全相同(都是 10.200.5.5.00-00)。再各自 display current-configuration configuration isis,发现两台都把 NET 写成了 49.0001.10.200.5.5.00——复制粘贴配置时忘了改 System ID。处理办法是立即改其中一台的 NET,并加一条规范:部署前做 NET 台账,System ID 与设备 Loopback 强绑定,勾选核对。
案例三:割接后 L1 区域整体断网,区域内部互通但出不去。查 display isis route 发现 L1 路由器上没有指向 L1/2 的默认路由,即 ATT bit 没被置位。再去看 L1/2 设备,发现它的 L2 侧接口刚换了光模块、光路上还有问题,L2 邻接没建起来。所以它"不认为自己能出区域",也就不置 ATT bit,L1 自然全断。这个案例的教训是:IS-IS 里"区域内部一切正常、区域外全断"这种症状,第一怀疑对象就是 L1/2 设备的 L2 侧,而不是去翻 L1 路由器的配置。
一个排查动作的先后顺序。现场时间紧,按下面这个顺序走能最快锁定问题:先 display isis peer 看邻居全不全(缺邻居就是二层/使能/级别/认证问题);再 display isis lsdb 看数据库收敛没有(邻居全但 LSDB 缺条目,多半是 NET 或认证问题);最后 display isis route 看算出来的路由对不对(数据库对但路由不对,是开销风格、渗透、汇总的问题)。三步走下来,九成的 IS-IS 故障都能定位到具体设备与具体层次。
13.7 新手踩坑与注意事项
- 接口忘
isis enable——全局配得再完美,接口没使能就是零邻居,而且不报错。 - NET 结尾漏
.00——直接报错,但报错信息不一定直观,新手容易卡住。 - System ID 重了——两台设备配了同一个 System ID,拓扑乱抖,务必做地址台账。
- 忘了
cost-style wide——窄开销上限 63,大网里 metric 撞顶,路由选得莫名其妙。 - L1/2 设备的 L2 侧没通——L1 没有默认路由,所有区域间流量断,但 L1 内部一切正常,很误导。
- 以为 L1 应该学全网路由——IS-IS 默认不渗透,想看明细要配
import-route isis level-2 into level-1。 - summary 配错级别——汇总配在 L1 却想让 L2 生效,配置看着对、效果没有。
- DIS 抢占没意识到——新设备优先级高会立刻抢 DIS,换设备后网络抖一下是正常的。
- 认证层次搞混——区域认证管 L1、域认证管 L2、接口认证只管一条链路,三者要分别匹配。
- 把 IS-IS 当 OSPF 学——最大的区别是"区域由 NET 决定,不由接口决定",这一点想不通后面全乱。
- 改开销不确认风格——两端开销风格不同时,邻居能建、路由能算,但选的路径完全不对。
- 不做 NET 地址规划——随口配 NET,三个月后没人知道哪台是哪台,迁移时寸步难行。
13.8 本章小结
- IS-IS 是链路状态协议,与 OSPF 同源不同形;核心差异是"按级别分区(L1/L2)“而不是"按区域分区”。
- NET 地址 = AFI(49) + Area ID + System ID(6 字节) + SEL(00),System ID 全网唯一,惯例用 Loopback 地址。
- L1 管区域内部,L2 管骨干,L1/2 两边都管;L2 必须连续;L1 靠 L1/2 的 ATT bit 得到出区域的默认路由。
- IS-IS 的指定设备叫 DIS,可抢占,这与 OSPF 的 DR 不可抢占形成对比。
- 与 OSPF 相比,IS-IS 扩展性更强、报文开销更低、双栈支持更自然,但学习曲线更陡、排错更依赖 LSDB 知识。
- 华为与 H3C 的 IS-IS 命令相似度极高,几乎可以照抄;难点在概念而不是命令。
一张纸记牢本章。IS-IS 学习路径压缩成四句话:NET 怎么写(49 + Area + 6 字节 System ID + 00)、级别怎么分(L1 管区域、L2 管骨干、L1/2 两边都管)、怎么出区域(L1 靠 L1/2 的 ATT bit 拿默认路由)、怎么排错(peer → lsdb → route 三步走)。
配置层面也只剩四行核心:isis 1、network-entity、is-level、接口 isis enable 1(外加 cost-style wide)。把这五行想明白,本章 80% 的坑就绕过了。
为什么值得花时间学 IS-IS。如果你只做企业网,OSPF 确实够用,学 IS-IS 的投入产出比一般。但只要你的网络规模上一个量级、或者要在同一套设备上同时跑 IPv4 与 IPv6、或者对接过运营商的骨干,IS-IS 就是绕不开的。更重要的是:IS-IS 的 L1/L2 思想、ATT bit、TLV 设计,在理解其他链路状态协议(比如 BGP 的反射器、OSPF 的区域划分)时都有触类旁通的作用。学一半是为了用,一半是为了把已经有用的东西看得更透。
自测题
- NET
49.0001.10.200.2.2.00里各部分分别是什么?为什么结尾必须是00? - Level-1 路由器怎么知道"从哪儿能离开本区域"?
- IS-IS 的 DIS 与 OSPF 的 DR 有什么关键区别?这对换设备有什么影响?
- L1 路由器学不到区域外的明细路由,这是故障还是设计?该怎么办?
- 一家企业网要选 IGP,什么情况下该选 IS-IS 而不是 OSPF?
49是 AFI(私有地址格式),0001是 Area ID,10.200.2.2是 6 字节 System ID(由 Loopback 地址填成),00是 SEL 选择符,IP 场景固定为 00。- 通过 L1/2 设备在 L1 LSP 里置位的 ATT bit(Attached bit),L1 路由器据此生成一条指向最近 L1/2 设备的默认路由。
- IS-IS 的 DIS 可抢占(优先级高的新设备立刻抢),OSPF 的 DR 不可抢占(要重新选举)。所以 IS-IS 里换设备会立即引起 DIS 切换和短暂的拓扑变化。
- 是设计。IS-IS 标准行为是 L1 只维护本区域 LSDB 加一条出区域默认路由;要学明细必须显式配置
import-route isis level-2 into level-1做路由渗透。 - 网络规模大、需要运营商级扩展性、需要 IPv4/IPv6 在一个进程里跑、追求更低协议开销时选 IS-IS;反之企业网与校园网选 OSPF 更省心(人才与资料更多)。
关于本书:《华为 / H3C 网络设备典型功能配置详解》—— 面向国内高校/企业网络环境, 华为 VRP 与 H3C Comware 双厂商并排配置的实操教材,共 43 章。 全书所有命令尽量有官方出处,查不到的显式标注「待核实」。 返回系列目录
本人保留对侵权者及其全家发动因果律武器的权利
版权提醒
如无特殊申明,本站所有文章均是本人原创。转载请务必附上原文链接:https://www.elliot98.top/post/huawei-h3c-book/13/。
如有其它需要,请邮件联系!版权所有,违者必究!