在当今的大型企业网、数据中心以及运营商骨干网中路由协议的稳定与高效直接决定了业务的生死。尽管 OSPF 在企业网的应用中声名远播但在运营商和超大规模数据中心的底层架构里IS-ISIntermediate System to Intermediate System中间系统到中间系统才是默默无闻的骨干脊梁。作为一个诞生于 OSI 模型时代的链路状态路由协议IS-IS 经历了数十年的洗礼凭借其精简的报文结构、无与伦比的扩展性以及天生的安全性至今依然在现代网络中扮演着极其关键的角色。本文将深入拆解 IS-IS 的底层运行逻辑、寻址机制、区域划分和核心特性并提供华为、华三、思科三大主流厂商的工业级配置模板帮助您全面掌握这一运营商级 IGP 协议。一、 溯源为什么现代骨干网依然钟爱 IS-IS要理解 IS-IS 的强大必须先理解它的历史背景。IS-IS 最早是由 ISO国际标准化组织在 1990 年左右发布的 ISO 10589 标准中定义的。它最初并非为 TCP/IP 协议族设计而是为了服务于 OSI 参考模型中的CLNSConnectionless Network Service无连接网络服务。后来为了让其能够承载 IP 路由IETF 在 RFC 1195 中对其进行了扩展引入了Integrated IS-IS集成化 IS-IS使其同时支持 CLNP 和 IP 协议。相比于我们熟知的 OSPFIS-IS 具备以下几个无法替代的优势1. 极简的底层架构直接运行于二层OSPF 是基于 IP 协议的协议号 89这意味着 OSPF 必须依赖本地 IP 协议栈的正常工作。如果设备遭受大流量的 IP 拒绝服务攻击OSPF 的协议报文可能会因为 IP 栈过载而丢弃导致邻居断开。而 IS-IS 直接运行在数据链路层之上直接封装在二层帧中如 IEEE 802.3 帧不需要 IP 报头。这使得 IS-IS 天生对 IP 层的网络攻击免疫协议的鲁棒性极高。2. 基于 TLV 的无限扩展性IS-IS 的报文结构极其精简且灵活。它的核心数据全部通过TLVType-Length-Value类型-长度-值属性进行携带。当网络升级需要支持新特性例如从 IPv4 升级到 IPv6、引入 MPLS TE、Segment Routing 甚至是近年来的 SRv6时OSPF 通常需要大刀阔斧地重写协议报文例如从 OSPFv2 重新开发出 OSPFv3。而 IS-IS 只需要在报文中增加一个新的 TLV 类型即可底层报文结构和状态机完全不需要任何变动。这种“积木式”的架构让其拥有了无与伦比的生命力。3. 更轻量级的状态机与收敛速度在相同规模的网络中IS-IS 产生的路由条目和协议报文通常比 OSPF 更少。IS-IS 的拓扑计算更倾向于整网的树状 SPF 计算其对网络变化的响应和收敛速度在海量路由场景下表现得更为优秀。二、 核心术语构建 IS-IS 知识体系的基石在深入技术原理之前我们需要先统一话术。由于 IS-IS 源自 OSI 模型其术语与 TCP/IP 有着天然的对应关系ISIntermediate System中间系统等同于 TCP/IP 中的路由器Router负责维护链路状态数据库并转发报文。ESEnd System终端系统等同于 TCP/IP 中的主机Host不参与路由计算。NPDUNetwork Protocol Data Unit网络协议数据单元等同于 IP 网络中的 IP 报文。RDRoute Domain路由域由大量运行相同 IS-IS 协议的设备组成的统一路由控制范围。Area区域为了限制 SPF 计算范围而划分的具体物理或逻辑区域。SNPASubnetwork Point of Attachment子网物理服务访问点在局域网中直接等同于设备的 MAC 地址在广域网中则是指虚电路标识。三、 NSAP 寻址剥开最晦涩难懂的地址结构由于 IS-IS 诞生于 OSI 时代其路由计算和邻居建立并不依赖 IP 地址而是依赖NSAPNetwork Service Access Point网络服务接入点地址。这是初学者接触 IS-IS 时面临的最大门槛。NSAP 是 OSI 模型的网络层地址。在运行集成化 IS-IS 的设备中如果将 NSAP 的最后一个字节NSEL设置为 00该地址就退化为NETNetwork Entity Title网络实体名称地址。在配置 IS-IS 时我们必须为每台设备至少配置一个 NET 地址。NET 地址的长度在 8 字节到 20 字节之间通常划分为三个核心部分1. Area Address区域地址长度在 1 到 13 字节之间由以下三部分组成AFIAuthority and Format Identifier机构和格式标识符固定 1 字节。在私有或本地管理的网络中通常统一使用 49。IDIInitial Domain Identifier初始域标识符固定 1 字节用于表示地区或国家代码。High Order DSP高位域特定部分1 到 11 字节用于在复杂的层次化网络中扩展区域标识。在最常见的企业或运营商实践中我们通常将 Area ID 简化为类似 49.0001 的格式其中 49 是 AFI0001 代表区域编号。2. System ID系统 ID固定为 6 字节48 位用于在特定区域内对 Level-1 而言或整个路由域内对 Level-2 而言唯一标识一台设备。其作用类似于 OSPF 中的 Router ID。System ID 的规划通常有三种主流的工程规范MAC 地址映射法直接将设备第一个物理接口或 Loopback 接口的 MAC 地址作为 System ID。例如MAC 地址 aabb-cc00-1000 转化为 System ID 就是 aabb.cc00.1000。IP 地址填充法将 Loopback 接口的 IPv4 地址进行零填充后重新组合。例如IP 地址 192.168.1.10 先填充为 192.168.001.010再按每 4 位一组重新划分为 1921.6800.1010。自定义序列法根据设备编号进行顺序命名。例如R1 为 0000.0000.0001R10 为 0000.0000.0010。3. NSELSEL选择器固定 1 字节用于标识网络层之上的传输层协议类型。在路由器或三层交换机等转发设备上该值必须固定为 00。实战地址解析示例假设我们在网络中看到这样一个 NET 地址49.0001.0000.0000.0001.0049.0001代表区域地址Area Address其中 49 为私有 AFI0001 为区域 1。0000.0000.0001代表 System ID通常表示 R1。00代表 NSEL表示该地址为网络实体名称NET。四、 骨干与区域两级路由器的设计美学在 OSPF 中多区域的设计是以“路由器”为边界的即 ABR 路由器的一侧接口在 Area 0另一侧在 Area 1。然而在 IS-IS 中区域的边界位于链路上。这意味着一条链路的两端可能属于不同的区域。IS-IS 通过将路由器划分为三种不同的“等级Level”来构建其两级分层拓扑架构。1. Level-1 路由器L1区域内路由器Level-1 路由器只负责区域内的路由。数据库限制它仅维护本区域的链路状态数据库L1 LSDB包含当前区域内的直连路由和邻居路由。它对区域外部的拓扑一无所知。出口机制当 Level-1 路由器需要向其他区域发送数据时它必须依赖本区域内的 Level-1-2 路由器。当它收到来自 Level-1-2 路由器发布的、带有ATTAttachment关联位置置位标记的 LSP 时会自动在本地生成一条指向该 Level-1-2 路由器的默认路由。2. Level-2 路由器L2骨干路由器Level-2 路由器是骨干网的核心。数据库限制它维护骨干区域的链路状态数据库L2 LSDB该数据库中收集了整网所有网段的路由信息。部署位置所有的 Level-2 路由器和 Level-1-2 路由器必须物理或逻辑连续共同构成了 IS-IS 的骨干网。3. Level-1-2 路由器L1/2边界路由器Level-1-2 路由器是连接非骨干区域和骨干区域的桥梁功能类似于 OSPF 中的 ABR。双重人格它同时维护 L1 LSDB 和 L2 LSDB。路由交换它负责将 L1 区域内的路由信息注入到 L2 骨干网中让整个网络获知该区域的存在。同时在默认情况下它不会将 L2 骨干网的明细路由引入回 L1 区域而是通过向 L1 区域内发布 ATT 置位的 LSP引导 L1 设备通过默认路由访问外部。五、 状态机运转邻接关系建立与路由扩散机制IS-IS 能够实现高速收敛得益于其高度精简和高效的协议报文交换机制。1. 邻接关系的建立约束IS-IS 邻接关系的建立比 OSPF 更具弹性但也遵循严格的规则Level-1 邻接关系要求建立邻接关系的两台设备必须处于相同的区域即 Area Address 必须完全一致。Level-2 邻接关系不要求区域一致。即使两台设备的 Area Address 不同只要链路层互通也可以直接建立 Level-2 邻接关系。混合级别Level-1-2默认情况下主流厂商的接口都会同时发送 Level-1 和 Level-2 的 Hello 报文。如果两端区域相同会同时建立 L1 和 L2 的双重邻接关系如果区域不同则仅建立 L2 邻接关系。2. 广播网中的“伪节点”DIS 机制在广播多路访问MA网络中为了防止链路状态信息在节点间无序泛洪IS-IS 同样引入了类似 OSPF DR 的机制称为DISDesignated Intermediate System指定中间系统。然而DIS 的设计比 OSPF DR 更加精妙和激进无 BDR 角色IS-IS 网络中只有 DIS没有备份的 BDIS。如果 DIS 宕机其他设备会在数秒内通过选举算法直接产生新的 DIS。支持抢占机制如果网络中新加入了一台优先级更高或 MAC 地址更大的路由器它会立即抢占成为新的 DIS而不会像 OSPF 那样为了网络稳定而保持 DR 角色不变。基于 CSNP 的高效同步DIS 会定期默认 10 秒在广播网内组播发送CSNPComplete Sequence Number PDU完全序列号报文。其他设备通过对比 CSNP可以瞬间发现本地 LSDB 与全局是否同步并通过PSNPPartial Sequence Number PDU部分序列号报文精准请求缺失的LSPLink State PDU。3. 跨区域通信的法宝ATT 置位与路由渗透为了防止非骨干区域的 Level-1 路由器数据库由于外部明细路由过多而崩溃IS-IS 采用了默认路由引导机制当一个 Level-1-2 路由器在骨干网Level-2中发现自己拥有到达其他区域的活动邻居时它会在本区域发送的 Level-1 LSP 中将ATTAttachment比特位置为 1。区域内的 Level-1 路由器收到该报文后会自动计算出一条下一跳指向该 Level-1-2 路由器的默认路由。路由渗透Route Leaking在某些需要优化路径、防止次优路由的特殊场景下网络管理员可以在 Level-1-2 路由器上配置路由渗透手动将 Level-2 的特定明细路由下发到 Level-1 区域中。六、 三大厂商工业级实战配置指南为了将理论付诸工程实践以下为您提供华为VRP、华三Comware v7和思科IOS-XE三个主流厂商的详细 CLI 配置模板。我们设定一个经典的边界对接场景设备处于 Area 49.0001本地 System ID 规划如下华为设备 (Router-A)System ID 为 0000.0000.0001作为 Level-2 设备。华三设备 (Router-B)System ID 为 0000.0000.0002作为 Level-1 设备。思科设备 (Router-C)System ID 为 0000.0000.0003作为 Level-1-2 设备。1. 华为VRP系统配置模板在华为设备上我们需要注意isis 进程启动后默认级别为 Level-1-2。我们需要根据规划通过 is-level 命令修改。接口使能 IS-IS 必须显式指定进程号。在生产环境中对于点对点链路P2P强烈建议手动更改网络类型以加速收敛。# 开启并进入 IS-IS 进程 1 [Router-A] isis 1 # 配置网络实体名称NET区域为 49.0001System ID 为 0000.0000.0001 [Router-A-isis-1] network-entity 49.0001.0000.0000.0001.00 # 将路由器的级别修改为全局 Level-2 [Router-A-isis-1] is-level level-2 # 开启开销宽度量类型支持大于 63 的开销值现代网络必备 [Router-A-isis-1] cost-style wide # 退出进程视图 [Router-A-isis-1] quit # 进入连接骨干网的物理接口 [Router-A] interface GigabitEthernet 0/0/1 # 开启该接口的 IS-IS 1 进程 [Router-A-GigabitEthernet0/0/1] isis enable 1 # 在该接口上配置开销值 [Router-A-GigabitEthernet0/0/1] isis cost 10 # 优化链路类型为点对点P2P防止 DIS 选举消耗时间 [Router-A-GigabitEthernet0/0/1] isis circuit-type p2p # 退出接口视图 [Router-A-GigabitEthernet0/0/1] quit # 进入环回口并宣告作为设备的本地 Router ID 路由 [Router-A] interface LoopBack 0 [Router-A-LoopBack0] ip address 1.1.1.1 255.255.255.255 [Router-A-LoopBack0] isis enable 1 [Router-A-LoopBack0] quit2. 华三Comware v7系统配置模板华三的 Comware 命令行与华为高度相似但在地址家族支持和部分命令细节上存在微调。华三同样默认工作在 Level-1-2本例中我们将其配置为纯 Level-1。# 创建并进入 IS-IS 进程 1 [Router-B] isis 1 # 配置网络实体名称NET区域为 49.0001System ID 为 0000.0000.0002 [Router-B-isis-1] network-entity 49.0001.0000.0000.0002.00 # 将路由器的全局级别配置为 Level-1 [Router-B-isis-1] is-level level-1 # 全局开启宽度量模式支持大带宽链路开销计算 [Router-B-isis-1] cost-style wide # 退出进程进入接口视图 [Router-B-isis-1] quit # 进入互联接口 [Router-B] interface GigabitEthernet 1/0/1 # 使能 IS-IS 进程 1 [Router-B-GigabitEthernet1/0/1] isis enable 1 # 在物理接口上指定接口的链路级别仅进行 Level-1 协商 [Router-B-GigabitEthernet1/0/1] isis circuit-level level-1 # 配置接口的 IS-IS 开销 [Router-B-GigabitEthernet1/0/1] isis cost 20 # 更改网络类型为 P2P [Router-B-GigabitEthernet1/0/1] isis network-type p2p [Router-B-GigabitEthernet1/0/1] quit # 配置本地 Loopback 接口并激活 [Router-B] interface LoopBack 0 [Router-B-LoopBack0] ip address 2.2.2.2 255.255.255.255 [Router-B-LoopBack0] isis enable 1 [Router-B-LoopBack0] quit3. 思科IOS-XE系统配置模板在思科设备上IS-IS 的配置逻辑与 OSPF/EIGRP 等经典协议一致通常在全局下定义路由进程然后在接口下通过 ip router isis 进行激活绑定。! 开启 IS-IS 进程进程标识符自定义为 1 Router-C(config)# router isis 1 ! 配置网络实体名称NET区域为 49.0001System ID 为 0000.0000.0003 Router-C(config-router)# net 49.0001.0000.0000.0003.00 ! 配置全局路由器类型为 Level-1-2 边界路由器默认值在此显式配置 Router-C(config-router)# is-type level-1-2 ! 开启思科宽度量模式Cisco 默认采用 Narrow 窄度量模式上限仅为 63极易导致大链路开销溢出强烈建议更改为 wide Router-C(config-router)# metric-style wide ! 退出路由进程 Router-C(config-router)# exit ! 进入互连接口 Router-C(config)# interface GigabitEthernet 1 ! 开启 IPv4 路由并绑定到全局 IS-IS 进程 1 Router-C(config-if)# ip router isis 1 ! 将该物理接口的度量值修改为 30 Router-C(config-if)# isis metric 30 ! 修改接口的链路类型为 P2P Router-C(config-if)# isis network point-to-point ! 限制接口仅建立 Level-1 邻居本端虽是 L1/2但可以通过此命令优化特定方向的协商行为 Router-C(config-if)# isis circuit-type level-1 Router-C(config-if)# exit ! 配置环回口 Router-C(config)# interface Loopback 0 Router-C(config-if)# ip address 3.3.3.3 255.255.255.255 Router-C(config-if)# ip router isis 1 Router-C(config-if)# exit七、 现网踩坑与运维最佳实践IS-IS 虽然稳定但在复杂的工程建设和运维中依然有几个极具杀伤力的“隐形陷阱”。以下为您整理出避坑指南1. 窄度量Narrow与宽度量Wide不匹配这是现网对接最容易出现、且极难排查的故障之一。故障现象邻居关系显示为 UP但就是无法学习到对方传递过来的任何路由。原因分析IS-IS 的经典开销Narrow Metric只占用 6 个比特最大值 63。现代大带宽网络普遍使用宽度量Wide Metric占用 24 比特。如果两端一台开启了 wide另一台保持默认的 narrow双方会因为打包 LSP 时的 TLV 格式不兼容导致路由计算失败。金科玉律所有设备上线前必须统一配置 cost-style wide。2. System ID 冲突导致的网络震荡在一个 IS-IS 路由域中Level-1 路由器要求区域内的 System ID 必须唯一。Level-2 路由器要求整个路由域内的 System ID 必须唯一。如果由于配置疏忽例如直接复制其他设备的 NET 地址模板导致两台设备的 System ID 冲突会引发 LSP 频繁相互覆盖导致网络出现灾难性的间歇性丢包和拓扑不断震荡。金科玉律严格规范 NET 地址规划表严禁直接复制 NET 配置到不同设备上。3. MTU 不匹配导致邻接关系无法建立IS-IS 有一个独特的“Hello 报文填充Hello Padding”机制。为了防止因为链路中存在 MTU 瓶颈而导致后续大体积的 LSP 报文无法传输IS-IS 在建立邻接关系时会默认将 IIHHello报文填充到接口的最大 MTU 长度。故障现象如果两端接口的物理 MTU 配置不一致或者中间经过的光传输设备限制了 MTU大体积的 Hello 报文会被直接丢弃导致邻接关系卡在 Init 状态。解决方案可以使用命令关闭 Hello 报文填充例如华为的 isis small-hello思科的 no hello-padding但在部署前必须确保整网的 MTU 确实已经放通。八、 总结IS-IS 在下一代网络中的技术延展作为一个在设计之初就融入了“极简”和“高扩展性”基因的协议IS-IS 不仅没有在新技术层出不穷的今天落幕反而焕发了第二春。在近几年火热的SRv6基于 IPv6 的段路由和EVPN以太网虚拟专用网数据中心网络中IS-IS 依旧是底层 Underlay 网络的首选协议。网络架构师们只需定义一些新的 TLV就让这个有着三十多年历史的协议完美承载了最前沿的分段路由标签和网络切片信息。从底层的二层封装到巧妙的双级架构再到灵活的 TLV 设计IS-IS 用实力证明了最简单的设计往往拥有最持久的生命力。希望本文的深度解析和实战配置能够帮助您在未来的骨干网络规划与运维中游刃有余。