news 2026/10/20 3:21:39

IS-IS协议详解:从NET地址规划到配置实例的落地指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IS-IS协议详解:从NET地址规划到配置实例的落地指南

1. 从一次割接开始:为什么我推翻了OSPF方案

上个月帮某客户做骨干网改造,设备选型都定了,组网方案却卡了壳。客户现有网络跑的是OSPF,按说同协议替换最省事,但业务侧提了个需求:未来三年要并入几十个边缘节点,地址段规划很碎,希望IGP能扛住大规模路由、收敛快、扩展性强,还不能让区域边界成为瓶颈。我当时的直觉是——该上IS-IS了。

IS-IS这个名字,很多做企业网的朋友可能只在认证题库里见过。它和OSPF同属链路状态协议,但要真说起底层机制,两者差异大到足以影响整张网的架构走向。IS-IS最初是为ISO的CLNS网络设计的,后来被IETF扩展支持IP路由,所以它的报文封装、寻址方式和OSPF完全不同。在ISP骨干网和数据中心场景里,IS-IS几乎成了事实标准,原因就是它的纯L2扁平设计、极强的扩展性,以及用一台设备就能同时承载IPv4和IPv6路由的天然优势。

这篇文章我就以一套“基础网络配置实例”为线索,从NET地址规划、区域设计、接口激活、认证配置到故障排查,完整过一遍IS-IS的落地方法。没有花哨的东西,都是实打实能在工程里直接用的配置和思路。如果你是刚接触IS-IS的网络工程师,或者正在纠结IGP选型,这篇内容应该能帮你省不少踩坑的时间。

2. 动手之前:IS-IS的几个核心概念我帮你翻译成人话

2.1 路由器和链路,它用的是另一套叫法

第一次看IS-IS配置文档,最劝退的就是一堆新名词:L1、L2、NET、DIS、SNPA、PDU。其实换个角度就通了。OSPF里的Area 0、ABR、ASBR,对应到IS-IS就是L2、L1/L2路由器、L1路由器。OSPF里一个区域内有DR/BDR选举,IS-IS对应的是DIS(指定中间系统)。

关键差异在两点。第一,IS-IS没有“骨干区域被分割”的问题,所有L2路由器天然构成一个连续的骨干,区域边界在链路上而不是在路由器上。第二,IS-IS的报文全部封装在链路层之上,不需要IP协议号,所以它天然不依赖IP连通性,很多排障场景里反而更干净。

这里要重点理解L1和L2的转发逻辑:

  • L1路由器只维护本区域内的路由,默认路由指向最近的L1/L2路由器。
  • L2路由器维护整个L2级别的路由,负责跨区域流量转发。
  • L1/L2路由器相当于OSPF里的ABR,但机制更灵活,没有OSPF那种区域间防环的条条框框。

我记得最开始做实验的时候,总拿OSPF的思维去套IS-IS,结果反复改area id,折腾一晚上没通。后来才明白,IS-IS的area设计是“一套NET地址里带区域号”,不是OSPF那种接口上定义area的玩法。思路一转,配置立刻清爽。

2.2 NET地址的算法,其实就是一个身份证号

IS-IS路由器需要一个全网唯一的标识,叫NET(Network Entity Title)。它的格式长这样:

49.0001.0010.0100.1001.00

看起来像一串无规律数字,其实拆开看就几段:

  • 49:AFI(Authority and Format Identifier),私有地址段,类似IPv4里的私网地址,直接用49开头不会有冲突问题。
  • 0001:Area ID,区域号。L1路由器判断是否同区域就看这段。
  • 0010.0100.1001:System ID,系统ID。必须全网唯一,长度固定6字节,通常用Loopback地址的IPv4来编(比如10.10.0.1转成0010.0100.0001,或者直接用路由器编号)。
  • 00:NSEL,固定为00,不用管。

最让我欣慰的是,NET地址里没有掩码的概念,所以不存在什么子网划分、汇总冲突的问题。排障时的核心口诀就一句:网内所有路由器的System ID不能重复,同区域的Area ID必须一致。

2.3 广播网络里的DIS选举,比OSPF的DR要简单

IS-IS在广播多路访问网络(比如以太网)里,也要选举一个DIS,负责周期发送SNP(序号数据包)同步链路状态数据库。但和OSPF的DR/BDR不同:

  • IS-IS的DIS优先级是接口级配置,默认64,值越大越优先。
  • DIS没有备份,也就是没有BDR这种角色。
  • DIS是抢占式的,新加一台高优先级设备,原DIS立刻让位,这与OSPF的“稳定第一”思路完全不同。

我实测过,如果你的网络里对DIS稳定性有强迫症要求,最简单粗暴的办法是:所有接口优先级全设成默认,或者干脆把DIS优先级都设成一个值,通过MAC地址来定胜负,这样至少逻辑上可预测。

3. 配置实例全解:三台路由器撑起一个最小可用的IS-IS网

3.1 网络拓扑与地址规划

我们用一个最简单的场景来演示:三台路由器组成一个三角形网络,两台属于Area 0001,一台属于Area 0002。所有链路用10.1.x.x/24网段,Loopback地址用10.0.x.x/32。

设备区域System IDLoopback0接口及IP
R100010000.0000.000110.0.0.1/32G0/0: 10.1.12.1/24, G0/1: 10.1.13.1/24
R200010000.0000.000210.0.0.2/32G0/0: 10.1.12.2/24, G0/1: 10.1.23.2/24
R300020000.0000.000310.0.0.3/32G0/0: 10.1.13.3/24, G0/1: 10.1.23.3/24

这是一个经典的双区域互联模型,其中R1和R2在区域内,R3跨区域。全网启用IS-IS后,R1和R2之间保持L1邻居,R1、R2分别与R3建立L2邻居。跨区域路由通过L1/L2边界设备完成。

3.2 关键配置逐行拆解

先看R1的完整配置。每一条我都加了注释,后面再单独解释几个容易踩坑的点。

router isis 100 is-net 49.0001.0000.0000.0001.00 is-type level-1-2 metric-style wide ! interface Loopback0 ip address 10.0.0.1 255.255.255.255 ip router isis 100 isis circuit-type level-2 ! interface GigabitEthernet0/0 ip address 10.1.12.1 255.255.255.255 ip router isis 100 isis circuit-type level-1 ! interface GigabitEthernet0/1 ip address 10.1.13.1 255.255.255.255 ip router isis 100 isis circuit-type level-2

几个关键点拆开说:

第一,is-net是启动IS-IS进程的必需项,相当于OSPF里router-id的作用,但比router-id更严格,因为它在整网ID体系里是唯一的。有同学问我能不能不配NET直接跑IS-IS?答案是绝对不能,进程起不来。

第二,metric-style wide。IS-IS早期默认使用narrow风格,度量值只支持6位,最大63,这在现在的网络里完全不够用。改wide风格后,度量值支持24位,最大16777215,并且能携带TE扩展信息。强烈建议所有新部署都用wide,不用纠结兼容性问题。

第三,isis circuit-type level-1和level-2。这就涉及前面说的IS-IS和OSPF的最大区别:同一台路由器上,一个接口可以只跑L1、只跑L2、或者两者都跑。OSPF里你只能在一个接口上属于一个area,但IS-IS允许你用接口-level来精细化控制不同链路上的路由传播范围。这个特性在分层网络里简直好用到爆。

再看R2和R3,逻辑一样,只是NET地址和接口号不同。我直接给R2的关键配置:

router isis 100 is-net 49.0001.0000.0000.0002.00 is-type level-1-2 metric-style wide ! interface Loopback0 ip address 10.0.0.2 255.255.255.255 ip router isis 100 isis circuit-type level-2 ! interface GigabitEthernet0/0 ip address 10.1.12.2 255.255.255.255 ip router isis 100 isis circuit-type level-1 ! interface GigabitEthernet0/1 ip address 10.1.23.2 255.255.255.255 ip router isis 100 isis circuit-type level-2

R3属于区域0002,注意它的NET地址里Area ID是0002,System ID保持唯一。

router isis 100 is-net 49.0002.0000.0000.0003.00 is-type level-2-only metric-style wide ! interface Loopback0 ip address 10.0.0.3 255.255.255.255 ip router isis 100 isis circuit-type level-2 ! interface GigabitEthernet0/0 ip address 10.1.13.3 255.255.255.255 ip router isis 100 isis circuit-type level-2 ! interface GigabitEthernet0/1 ip address 10.1.23.3 255.255.255.255 ip router isis 100 isis circuit-type level-2

R3只做L2,这样省掉L1/L2路由器的开销,跨区域流量全部走L2。在纯骨干设备上,这种配置能减少LSDB规模和CPU消耗。

3.3 验证与调试命令

配置完别急着欢呼,先用命令确认状态。我列几个最常用的:

show isis adjacency show isis database show isis route show isis interface debug isis adjacency debug isis update-packets

实测中的一个顺序:先看邻居,再看数据库,最后看路由表。

show isis adjacency输出里,每一行就是一个邻居。重点看State是否是UP,如果UP就说明L1/L2属性没问题。如果邻居Down,优先检查MTU、认证、电路类型是否一致。

如果邻居都UP了但路由表没有,那大概率是NET地址配错或者System ID冲突。用show isis database看LSDB里有没有三台设备的LSP,再对照System ID就能定位问题。

3.4 扩展:地址汇总和路由泄露

基础实例跑通只是第一步。实际工程里,你要是把IS-IS的路由全裸奔到全网,很快LSDB就肥到跑不动了。IS-IS做汇总有个天然优势:在L1/L2边界路由器上,你可以分别对L1和L2的路由做聚合,不用像OSPF那样区分域间路由和域内路由。

router isis 100 aggregate-address 10.0.0.0/16 level-2

这条命令的意思是把区域内的所有细网段聚合为10.0.0.0/16后通告到L2级别。注意一点:聚合生效的前提是LSDB里已经有这些明细路由。

另一个重要机制是路由泄露(Route Leak)。L1路由器默认看不到其他区域的具体路由,只有默认路由指向L1/L2边界。这在某些场景下会浪费带宽。如果你希望L1区域内的路由器也能看到外部明细路由,可以在边界路由器上加:

router isis 100 redistribute level-2 into level-1

泄露出去了路由表会变大,但能避免跨区域的次优路径。做这个操作前建议先做路由策略,只泄露特定网段,避免全网明细全塞进L1区域。

4. IS-IS和OSPF的区别,一张表说清楚

好多刚入门的同学搞不清这两个协议到底差在哪,我直接列个对比表。

对比维度IS-ISOSPF
报文封装直接封装在链路层封装在IP报文里
区域模型路由器级别,L1/L2接口级别,Area
骨干区域天然连续,L2路由器构成Area 0,必须物理或逻辑连续
路由计算SPF算法SPF算法
度量值默认wide 支持24位默认cost 参考带宽可调
支持网络类型广播、点到点广播、点到点、NBMA等
IPv6支持原生扩展,同一进程可跑双栈需要单独实例
扩展性纯L2可扩展,适合超大规模区域划分较灵活,但ABR压力大

我自己的感受是,IS-IS在三层架构的骨子里更“平”。它的L1/L2不是OLSR那种分层路由,而是把“区域”这个概念从接口上抽象到了路由器级别,让网络设计多了一层自由度。尤其在做数据中心spine-leaf架构时,所有leaf设备做L1,spine设备做L2,两行配置就能把整张网收敛了。

而OSPF在分支办公网、混合组网环境里表现更友好,因为它在NBMA和多种二层技术上的适配性更强。IS-IS最初是为CLNS设计的,对纯IP以太网的某些边界场景,比如p2p链路上的MTU协商、二层广播域隔离,反而需要人为配置处理。

选型没有绝对的对错,关键看你网络的规模和演进方向。网络不超过几十台设备,OSPF够用;如果规划是几百台起步,未来要承载IPv6和TE,IS-IS会省心很多。

5. 排障实录:三台设备居然折腾了半夜

5.1 问题一:邻居起不来,MTU背锅

有次在某公司实验室调IS-IS,链路是千兆以太网,接口MTU设了9000。按照普通OSPF的习惯,我没多想。结果邻居状态一直卡在INIT,看show isis adjacency半天不动。

排查过程:

  • 先看物理层,show interface没有错误。
  • 再看认证配置,没配。
  • 最后抓包才发现,IS-IS的Hello报文太大,超出了接口实际支持的MTU,对端直接丢弃。

这个坑很经典。IS-IS的Hello报文要携带所有CLV,包括IP接口地址、认证信息、支持的协议等,默认的PDU大小会随配置增大。解决办法有两个:一是所有接口统一MTU,二是强制IS-IS PDU大小限制。

interface GigabitEthernet0/0 mtu 1500 ! router isis 100 lsp-mtu 1400

lsp-mtu限定了LSP最大大小,这样就算某个接口MTU不一致,IS-IS报文也不会超长。实测下来,只要链路层MTU相同,IS-IS跑起来非常稳。

5.2 问题二:跨区域路由打不通,原来是路由泄露没做

按我们上面那个三台设备的拓扑,R1(Area 0001)默认只能看到自己区域内的路由。如果R1想ping通R3的Loopback,路由表里只会有一条默认路由指向R2(L1/L2边界)。但这条默认路由的下一跳是R2的接口,R1必须能学到R2的物理接口网段才行。

很多人在这犯迷糊:为什么我R1上能看到10.1.13.0/24,但看不到10.0.0.3/32?因为10.1.13.0/24是R1和R3之间的直连链路,属于L1区域内的路由。而10.0.0.3/32是R3的Loopback,R3作为L2-only设备,这条路由只通告到L2级别。

解决方法是按需做路由泄露。在R2上加redistribute level-2 into level-1并且在策略里允许10.0.0.3/32,问题立解。值得注意的是,强制泄露所有L2路由到L1会导致L1区域路由表膨胀,丢失“L1区域收敛快”的核心优势。正确姿势是只泄露必要网段。

5.3 问题三:认证不生效,排查细节控

IS-IS支持三种认证:接口认证、区域认证、路由域认证。有一次我配置了区域认证,结果发现L1邻居依然能建立,但LSP不接受。原因是IS-IS认证的检测点非常严格——hello认证是基于接口的,和区域认证不挂钩。

具体配置如下:

interface GigabitEthernet0/0 isis password huawei@123 level-1 ! router isis 100 area-password huawei@123 domain-password huawei@123

注意三点:

  • 接口密码是明文,在生产环境务必用keychain或hmac-sha方式。
  • 区域密码只对L1的LSP生效,L2的LSP要靠domain-password。
  • 如果一台设备既做L1又做L2,两个密码都要配,否则对端会拒绝对应Level的LSP。

我实测过只配了area-password但没配domain-password,结果L2邻居能建立但LSP不互通,查了大半天才定位到是level不匹配。

6. 进阶调优:Metric和负载均衡的实战经验

6.1 手动调整Metric控制路径

IS-IS的默认Metric是10,所有接口一样。这在简单拓扑里没问题,但一旦出现冗余链路,流量会均匀分担,不管后端链路带宽。要手动控制,需要理解IS-IS的Metric累加方式:

interface GigabitEthernet0/0 isis metric 20 level-2

这条命令把该接口在L2级别的Metric改成20。注意IS-IS的接口Metric可以针对Level分别设置,灵活性比OSPF高。

6.2 负载均衡配置

IS-IS默认支持多条等价路径负载均衡,但默认的等价条件是基于Metric相等。如果两条路Metric不一样,就只能走小的那条。想让不等价链路也能分担流量,需要开启traffic-share类功能。

router isis 100 maximum-paths 8

maximum-paths设置最大等价路径数,一般设备支持4条或8条。实际组网里,如果你想让两条不同带宽的链路同时转发,需要配合路由策略或者metric-style wide环境下的TE Metric做调整,否则只能等价负载。

6.3 快速收敛的几板斧

IS-IS在收敛速度上天生有优势,但默认配置还有优化空间:

  • 开启fast-flood特性,让LSP在本地SPF计算前就先加速泛洪。
  • 缩短SPF计算间隔。默认是5秒,生产环境可以调到1秒甚至更短。
  • 开启BFD联动。IS-IS支持BFD快速检测链路故障,亚秒级切换不是梦。
router isis 100 timer spf 1 200 200 ! interface GigabitEthernet0/0 isis bfd

这个timer spf后面的参数依次是初始延迟、最小延迟、最大延迟,单位毫秒。一般建议初始1秒,之后都是200毫秒,别把SPF压太狠,防止频繁抖动造成CPU飙高。

7. 最后再分享一点个人观察

做了这么多年网络,我最大的体会是:协议选型这事儿,看着是纯技术问题,实际是架构理念问题。IS-IS能把一张网组织得像一套精密齿轮,不需要那么多特殊角色和防环机制,因为它从一开始就没打算让用户把事情搞复杂。OSPF的许多特性,比如DR/BDR、虚链路、NSSA,都是在给旧时代的网络打补丁。而IS-IS的简洁,是建立在“所有设备都足够聪明”的假设之上。

对于刚开始学IS-IS的朋友,我的建议是先别看厂商文档,找个GNS3或者EVE-NG,按这篇文章的拓扑先把三台设备的邻居跑起来,再用debug isis看一遍报文交互,你会对IS-IS的运作方式产生肌肉记忆。等哪天你深夜割接遇到一个诡异的路由黑洞,灵光一闪想起“这可能是L1/L2边界的问题”,这篇文章就没白写。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 3:21:39

Unity透明纹理实战:从Shader到视频抠像的完整方案

1. 项目概述做Unity开发这么多年,透明纹理这块说难不难,说简单也真容易翻车。标题里这句“靠谱可用”四个字,看着朴素,其实背后藏着不少坑——网上搜到的方案要么是七八年前的旧代码,要么只讲了图片不讲视频&#xff0…

作者头像 李华
网站建设 2026/10/20 3:21:39

网络分层协议与服务模型详解:从五层协议栈到抓包实践

翻开《计算机网络:自顶向下》第一章,绝大多数人第一次产生“我是不是学不懂网络”的念头,往往就是卡在1.5节:协议层次及其服务模型。这节内容不长,但它是整本书所有后续章节的地基。协议层次解决的是“大规模通信如何组…

作者头像 李华
网站建设 2026/10/20 3:21:35

Win10/11无线显示器组件安装失败全排查:从Miracast到DISM离线修复

先把话说在前头:这篇文章很大程度上是被身边几个人接二连三问出来的。她们想在Win10/11上把手机画面投到笔记本,结果在设置的可选功能里找到“无线显示器”,点安装之后不是转几圈就报错,就是卡在进度条不动。去网上搜,…

作者头像 李华
网站建设 2026/10/20 3:21:07

EF Core 中避免 PostgreSQL 主键冲突 23505 的 UPSERT 写法

高并发写入接口里,"先查有没有、没有就插入、有就更新"这种写法在并发下必然出问题。GPS 上报这类场景尤其典型:同一个骑手的位置数据会在极短时间内连续到达。 问题现象 接口接收移动端上报的坐标: // 一个 POST 接口,路径形如 /{courierId}/locations publi…

作者头像 李华
网站建设 2026/10/20 3:20:53

光缆组件选型实战:从连接器到链路损耗的完整指南

前几年赶上机房改造,有一件事让我印象特别深:整个项目里,光缆布放、熔接、配线架安装都顺利通过了,最后测试的时候发现,一条四十多米长的干线链路,插损愣是到了1.8dB,怎么压都压不下去。排查了两…

作者头像 李华
网站建设 2026/10/20 3:20:27

科研汇报PPT结构设计:问题驱动型框架与数据可视化规范

简介:本资源是一套专为科研人员设计的高质量PPT汇报模板,适用于课题结题、中期答辩、学术交流及基金申报等正式科研场景,帮助用户快速构建逻辑清晰、视觉专业、符合学术规范的演示文稿。压缩包共4个文件(1个PPT、1个PPTX、1个说明…

作者头像 李华