Skip to content

0. 课件来源

IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是与 OSPF 齐名的链路状态 IGP。它最初服务于 OSI 协议栈(CLNP),后来被扩展以同时承载 IP(集成 IS-IS)。本节讲解 IS-IS 的地址结构、路由器分类、报文类型、邻居建立与 LSDB 同步,并与 OSPF 进行横向对比。


1. IS-IS 的由来与定位

协议栈终端↔网关网关↔网关(IGP)说明
OSIES-ISIS-ISISO 为民用网络设计的协议栈
TCP/IPARP / DHCPOSPFv2互联网事实标准
text
OSI 协议栈
┌─────────────────────────────────────────────┐
│  ES-IS  (终端系统↔中间系统,类似 ARP/网关)    │
│  IS-IS  (中间系统↔中间系统,类似 OSPF)        │  ← 本节主角
└─────────────────────────────────────────────┘

💡 一句话记忆

IS-IS 是"OSI 协议栈的 OSPF",集成 IS-IS(Integrated IS-IS)让它也能通告 IP 路由,于是与 OSPF 并列为两大链路状态 IGP。


2. IS-IS 的层级与路由器分类

2.1 两级分层

IS-IS 只有两级层次,比 OSPF 的区域设计更简洁:

层级角色说明
Level-1区域内(本地区)同一区域内路由,维护 Level-1 LSDB
Level-2骨干(区域间)连接不同区域,维护 Level-2 LSDB(骨干)

⚠️ Level-1 优先级高于 Level-2

去往同一目标,如果 Level-1(区域内)能学到,一定优先于 Level-2(区域间)。这是 IS-IS 选路的硬规则。

2.2 三种路由器角色

路由器类型Level-1 邻居Level-2 邻居LSDB对应 OSPF
Level-1 IS仅 Level-1 LSDB域内路由器
Level-2 IS仅 Level-2 LSDB骨干路由器
Level-1-2 ISLevel-1 + Level-2 两套ABR
text
        区域 49.0001                  骨干(Level-2)               区域 49.0003
  ┌───────────────────┐         ┌───────────────────┐         ┌───────────────────┐
  │  AR1(L1)──AR2(L1-2)═══════AR4(L1-2)═══════AR5(L1-2)──AR6(L1)│
  │      L1 邻居      │  L2邻居 │      L2 邻居      │  L2邻居 │      L1 邻居      │
  └───────────────────┘         └───────────────────┘         └───────────────────┘
   ═══ = Level-2 骨干链路        └── Level-1-2 路由器承担 ABR 角色 ──┘

3. NSAP / NET 地址

OSI 没有 IP 地址,它用 NSAP(Network Service Access Point) 标识节点。NSAP 最小 8 字节、最大 20 字节,结构如下:

NSAP 地址结构(最小 8 字节、最大 20 字节)
AFI
1 字节
`49`=私有
区域 ID (Area ID)
1 ~ 13 字节
System ID
6 字节(华为/思科)
NSEL
1 字节
⚠️ NSEL = 00 时,该 NSAP 即为 NET 地址(用于 IS-IS 配置)

3.1 地址各部分

字段长度说明
AFI1 字节49 代表私有地址(类似 IP 的 192.168)
区域 ID1~13 字节标识区域,同一区域设备区域 ID 必须相同
System ID6 字节标识设备(类似 OSPF 的 Router-ID),区域内唯一
NSEL1 字节类似端口号;当 NSEL=00 时,NSAP 即为 NET

3.2 System ID 的三种生成方式

为保证直连设备 System ID 不冲突,常用以下三种方式生成 6 字节 System ID:

方式示例说明
数字直接编号0000.0000.0001简单,适合实验环境
MAC 地址0100.5e00.0000直接用接口 MAC
IP 转换1921.6800.0001现网最常用,由 Loopback IP 转换

💡 IP → System ID 转换示例

192.168.0.1 每 4 位一组转为 System ID:

text
192.168.0.1  →  192.168.000.001  →  1921.6800.0001
  每段补足 3 位     每 4 位拼成一段

所以 192.168.0.1 对应 NET 地址可写为 49.0001.1921.6800.0001.00

3.3 基础配置

text
isis 1                          # 进程号,默认 1
 network-entity 49.0001.0000.0000.0001.00   # 配置 NET 地址
 is-name AR1                    # 可选:动态主机名(TLV 137,便于显示)
#
interface loopback 0
 isis enable 1                  # 接口使能 IS-IS
#
interface GigabitEthernet0/0/0
 isis enable 1

4. IS-IS 的三张表

IS-IS 与 OSPF 一样维护三张核心表:

内容
Peer 表邻居表(邻居 System ID、状态、类型)
LSDBLevel-1 LSDB + Level-2 LSDB(两套链路库)
RIBIS-IS 路由表(计算出的最优路由)
text
<AR1> dis isis peer
                          Peer information for ISIS(1)
  System Id     Interface       Circuit Id       State HoldTime     Type     PRI
-------------------------------------------------------------------------------
  0000.0000.0002 GE0/0/0          0000.0000.0001.01 Up   27s         L1-2     64

5. 报文类型(PDU)

IS-IS 的协议报文统称 PDU(Protocol Data Unit),直接封装在二层帧头后面(不依赖 IP)。共有三大类:

Hello · IIH
发现与维护邻居
对应 OSPF Hello
LSP · Link-State PDU
携带链路状态信息(TLV)
对应 OSPF LSU
SNP · Sequence Number PDU
描述 / 请求 / 确认 LSP
对应 OSPF DD / LSR / LSACK

5.1 Hello 包(IIH)

IIH 报文类型
Level-1 LAN Hello
广播网 L1;默认与 L2 Hello 同时发送
Level-2 LAN Hello
广播网 L2;独立维护 L2 邻居
P2P Hello
点对点链路;一个包同时协商 L1/L2

还有 ES-ISH(终端↔路由器),用于 ES-IS,本文不展开。

5.2 LSP 与 TLV

LSP 是 IS-IS 的"链路状态通告",其核心内容用 TLV(Type-Length-Value) 结构承载:

TLV 结构(Type-Length-Value)
Type
1 字节
类型标识
Length
1 字节
长度标识
Value
Length 字节
实际数据内容
🧩 TLV 是 IS-IS 的灵魂:可扩展、可叠加,对应 OSPF 的各类 LSA

5.3 SNP(序列号 PDU)

CSNP · Complete SNP
列出本地 LSDB 所有 LSP 摘要
功能近似 OSPF DD 包
PSNP · Partial SNP
请求某条 LSP / 确认收到 LSP
功能近似 OSPF LSR / LSACK

6. 邻居建立与 LSDB 同步

6.1 Hello 包携带的关键参数

IIH 关键字段
circuit-type
电路类型(L1 / L2 / L1-2,默认 L1-2)
System ID
本端 6 字节 System ID
hold 时间
收不到 Hello 的最大等待时间(默认 hello×3)
local circuit id
接口 ID

以及一组 TLV

IIH 常见 TLV
TLV 1
区域地址(Area Address)
TLV 132
接口 IP 地址
TLV 129
协议支持(IPv4 = 0xCC
TLV 240
P2P 邻居状态(3-way)

6.2 邻居建立的必要条件

⚠️ IS-IS 建邻核心条件

  1. 同一层级:双方 circuit-type 必须有交集(如都含 L1 才能建 L1 邻居)
  2. 同一区域(仅 Level-1):L1 邻居要求区域 ID 相同;L2 邻居不要求同区域
  3. System ID 唯一:本区域内 System ID 不能冲突
  4. 网络类型一致:P2P 与 MA 不能混接
  5. cost-style 兼容:一端 wide 一端 narrow 会"有邻居无路由"

注意:IS-IS 邻居建立不检查 Hello 间隔(与 OSPF 不同),只要 hold 时间未超时即可。

6.3 LSDB 同步流程

P2P 网络同步(两次握手 / 三次握手):

AR1
AR2
<div></div><div style="background: #e3f2fd; border: 1px solid #2196f3; border-radius: 4px; padding: 6px 10px; text-align: center;">Hello(Down) →</div><div></div>
<div></div><div style="background: #f3e5f5; border: 1px solid #6f42c1; border-radius: 4px; padding: 6px 10px; text-align: center;">← Hello(Init)</div><div></div>
<div></div><div style="background: #d4edda; border: 1px solid #28a745; border-radius: 4px; padding: 6px 10px; text-align: center;">Hello(Up) → <strong>邻居 Up</strong></div><div></div>

<div></div><div style="height: 1px; background: #ddd; margin: 4px 0;"></div><div></div>

<div></div><div style="background: #fff8e1; border: 1px solid #ffc107; border-radius: 4px; padding: 6px 10px; text-align: center;">CSNP(我有的 LSP 列表)→</div><div></div>
<div></div><div style="background: #fff3e0; border: 1px solid #fd7e14; border-radius: 4px; padding: 6px 10px; text-align: center;">← PSNP(请求缺失的 LSP)</div><div></div>
<div></div><div style="background: #d4edda; border: 1px solid #28a745; border-radius: 4px; padding: 6px 10px; text-align: center;">LSP(发送对方缺的 LSP)→</div><div></div>
<div></div><div style="background: #d1ecf1; border: 1px solid #17a2b8; border-radius: 4px; padding: 6px 10px; text-align: center;">← PSNP(确认收到) <strong>同步完成</strong></div><div></div>

MA(广播)网络同步:DIS(类似 OSPF 的 DR)周期性发送 CSNP,其余设备用 PSNP 请求/确认。


7. DIS 选举(广播网)

广播网中 IS-IS 选举 DIS(Designated Intermediate System),作用类似 OSPF 的 DR:

对比项IS-IS DISOSPF DR
选举依据接口优先级 → MAC/System ID(值大优先)优先级 → Router-ID(值大优先)
备份无 BDIS有 BDR
抢占支持抢占(优先级变化立即重选)不支持抢占
选举范围L1、L2 各自独立选举 DIS一个网段一个 DR/BDR

⚠️ DIS 与 DR 的关键差异

  • DIS 没有备份(无 BDIS),DIS 故障需重新选举
  • DIS 支持抢占,与 OSPF DR 恰好相反
  • L1 和 L2 各自选举自己的 DIS(一个广播网可能有 2 个 DIS)

8. cost-style(窄带 vs 宽带)

IS-IS 有两种开销计算方式,决定了它使用哪一套 TLV:

cost-style接口 cost 空间路径 cost 空间拓扑 TLV叶子 TLV默认
narrow(窄带)6 bit(1-63)10 bit(1-1023)TLV 2TLV 128/130
wide(宽带)24 bit32 bitTLV 22TLV 135

8.1 窄带 TLV 结构

窄带(narrow)· 默认 ⭐
TLV 2 · IS 可达性
邻居 System ID + cost → 拓扑(对应 OSPF Type-1 LSA 的 link)
TLV 128 · IP 内部可达性
网段 + cost → 叶子(对应 stubnet)
TLV 130 · IP 外部可达性
外部网段 → 叶子(对应 Type-5 ASE)
宽带(wide)· 现网推荐 ✅
TLV 22 · 扩展 IS 可达性
支持 sub-TLV 扩展 → 拓扑
TLV 135 · 扩展 IP 可达性
支持 sub-TLV → 叶子
🔧 sub-TLV 优势
为 TE(流量工程)、IPv6 等扩展预留空间

8.3 ⚠️ 窄带/宽带不一致的故障

🚨 经典故障:有邻居无路由

若一端 narrow、一端 wide,双方邻居能建立,但:

  • 窄带用 TLV 2 / 128-130 描述拓扑
  • 宽带用 TLV 22 / 135 描述拓扑
  • 互相无法识别对方的 TLV → 拓扑画不出来 → 路由无法计算

排查口诀:IS-IS 有邻居无路由,第一时间怀疑 cost-style 不一致。

配置建议(现网统一宽带):

text
isis 1
 network-entity 49.0001.1921.6800.0001.00
 cost-style wide          # 统一使用宽带
 is-name AR1              # TLV 137 动态主机名

9. 路由计算对比(P2P vs 广播)

网络类型非伪节点 LSP(每台设备)伪节点 LSP(DIS 产生)
P2PTLV 2/22:我连你 + 你连我(拓扑完整)无伪节点
广播TLV 2/22:我连 DISTLV 2/22:DIS 连所有设备
广播网路由计算原理(以 LSP 描述)
非伪节点 LSP(每台设备产生)
TLV 2/22:「我连到 DIS」
我连DIS,你连DIS,他连DIS
TLV 132:我的接口 IP
伪节点 LSP(DIS 产生)
TLV 2/22:「DIS 连你、连我、连他」
← 列出所有连接
拼出完整广播网拓扑 → 计算 SPF 树

⚠️ 广播网必须是全互联

IS-IS 广播网(MA)默认只支持全互联 MA 网络。若物理是 Hub-Spoke 部分互联(如 Frame-Relay),会导致部分分支学不到彼此路由。 解决方案:将接口改为 P2P 网络类型 isis circuit-type p2p(IS-IS 不支持 P2MP)。


10. IS-IS 与 OSPF 对照表

对比项IS-ISOSPF
协议栈OSI(扩展支持 IP)TCP/IP
层级Level-1 / Level-2 两级多区域(Area 0 骨干)
区域归属**按节点(路由器)**划分区域**按链路(接口)**划分区域
地址NSAP / NETIP + Router-ID
报文Hello / LSP / CSNP / PSNPHello / DD / LSR / LSU / LSACK
链路状态载体TLV(可扩展)LSA(类型固定)
DR/DISDIS(无备份、可抢占、L1/L2各选)DR + BDR(有备份、不抢占)
网络类型P2P / 广播(不支持 NBMA/P2MP)P2P / 广播 / NBMA / P2MP
区域间选路L1 默认通过 L1-2 出区域( ATT 位)非骨干必须经过 Area 0
封装直接封装于二层封装于 IP(协议号 89)

💡 区域归属的本质差异

  • OSPF:IP 把网络看成"路"(link),区域划分落在链路上 → 一条链路两端必须同区域
  • IS-IS:OSI 把网络看成"节点",区域划分落在路由器上 → 整台路由器属于某区域(一台设备可配多个区域 ID)

11. 易混淆点与考前速记

对比项结论
IS-IS 协议栈源自 OSI,集成 IS-IS 可同时通告 IP
两级层次Level-1(区域)/ Level-2(骨干),L1 优先于 L2
三种路由器L1 IS / L2 IS / L1-2 IS(= ABR)
NET 地址NSAP 当 NSEL=00 时即为 NET,最小 8 字节
System ID 长度6 字节(华为/思科)
报文三类Hello(IIH) / LSP / SNP(CSNP+PSNP)
CSNP / PSNP 对应CSNP≈DD;PSNP≈LSR+LSACK
DIS vs DRDIS 无备份、可抢占、L1/L2 各选
窄带/宽带默认narrow 为默认,现网建议 wide
窄带 TLV拓扑 TLV 2,叶子 TLV 128/130
宽带 TLV拓扑 TLV 22,叶子 TLV 135
L1 邻居要求必须同区域;L2 邻居不要求同区域
建邻不检查Hello 间隔(与 OSPF 不同)
经典故障一端 wide 一端 narrow → 有邻居无路由

考前速记 10 条

  1. IS-IS 源自 OSI 协议栈,集成 IS-IS 可通告 IP
  2. 两级:Level-1 区域内、Level-2 骨干,L1 优先于 L2
  3. 三种角色:L1 IS / L2 IS / L1-2 IS(=ABR)
  4. NET = NSAP(NSEL=00),最小 8 字节;System ID 6 字节
  5. IP 转 System ID:192.168.0.1 → 1921.6800.0001
  6. 报文:Hello / LSP / CSNP+PSNP;CSNP≈DD,PSNP≈LSR+LSACK
  7. DIS 无备份、可抢占,L1/L2 各自独立选举
  8. 区域归属按节点(路由器),不是按链路
  9. 窄带默认,TLV 2/128/130;宽带 TLV 22/135,现网建议 wide
  10. 有邻居无路由 → 第一时间怀疑 cost-style 不一致

🤖 AI 伴学

想把 IS-IS 与 OSPF 的区别记得更牢?可以让 AI 用类比帮你强化:

"请把 IS-IS 和 OSPF 想象成两家快递公司:OSPF 是'按路段划分片区'(区域落在链路上,一条路两端必须同片区),而 IS-IS 是'按站点划分片区'(区域落在路由器节点上,整站属于某片区)。再对比它们的'值班经理':OSPF 的 DR 像正式任命的经理,有副手 BDR 扛着、一旦上任不轻易换(不抢占);IS-IS 的 DIS 像临时值班的组长,没有副手、谁能力强(优先级/MAC 大)谁就上(可抢占)。最后说明为什么 IS-IS 用 TLV 而不是 LSA:TLV 像'乐高积木'可以无限拼装扩展(支持 IPv6、流量工程),LSA 像'固定模具'类型是写死的。"

真人撰写written by human