关键词:IS-IS、CLNS、OSI 协议栈、ISO 8802、NLSP、IP IS-IS、NET、SystemID

第71篇:IS-IS 协议基础:CLNS 与 OSI 协议栈

一、引言

IS-IS(Intermediate System to Intermediate System)是目前大型运营商网络和数据中心广泛使用的 IGP 协议。与 OSPF 诞生于 TCP/IP 环境不同,IS-IS 最初是 OSI(Open Systems Interconnection)模型中为 CLNS(Connectionless Network Service)设计的内部网关路由协议,标准号为 ISO/IEC 10589。

然而,经过 RFC 1195 和后续 RFC 的扩展,IS-IS 完全具备了路由 IPv4 和 IPv6 的能力,也就是业界熟知的 "IP IS-IS"。它保留了 OSI 时代优雅的设计,同时在 IP 网络中展现出卓越的扩展性和稳定性。

理解 IS-IS 的 CLNS 起源,有助于我们掌握 NET、SystemID、TLV 扩展等核心概念的设计初衷。正如上篇第70篇多区域 OSPF 设计中所讨论的层次化路由思想,IS-IS 同样采用区域化和分层设计,但实现方式与 OSPF 有显著差异。

二、核心概念

2.1 OSI 协议栈与 CLNS

OSI 七层模型定义了标准化的网络分层架构:

OSI 层级 名称 对应 TCP/IP 层 说明
第7层 Application Application 应用程序层
第6层 Presentation - 数据表示层
第5层 Session - 会话层
第4层 Transport Transport 传输层(CLTP)
第3层 Network Internet 网络层(CLNP)
第2层 Data Link Link 数据链路层
第1层 Physical Physical 物理层

CLNS(Connectionless Network Service)是 OSI 网络层提供的无连接服务,对应 IP 网络中的 IP 服务。CLNS 的地址称为 NSAP(Network Service Access Point)地址。

2.2 IS-IS 中的关键实体定义

术语 全称 含义
ES End System 终端系统,如主机
IS Intermediate System 中间系统,即路由器
ES-IS End System to IS ES 发现其所属 IS 的协议
IS-IS IS to IS IS 之间交换路由信息的协议

IS-IS 协议运行在数据链路层之上(直接封装在以太网帧中),这是它与 OSPF(运行在 IP 层之上,协议号 89)的又一个重要区别。

2.3 NSAP 地址与 NET

NSAP 地址是 CLNS 网络层地址,IS-IS 使用其中一种特定格式——NET(Network Entity Title)来唯一标识一个 IS(路由器):

NET = AFP + IID + Area ID + System ID + NSEL

各字段说明:

字段 长度 说明
AFP(Authority and Format Identifier) 1 字节 权威与格式标识,华为设备常用 0x00
IID(Initial Domain Identifier) 1 字节 初始域标识,华为设备常用 0x00
Area ID 可变(最多 13 字节) 区域标识
System ID 6 字节 系统标识,类似 OSPF 的 Router ID
NSEL(NSAP Selector) 1 字节 选择器,IS-IS 中固定为 0x00

NET 地址格式示例:

| 字段 | 值 | 说明 |
|------|------|------|
| AFP/IID | 00.00 | 权威与格式标识 + 初始域标识 |
| Area ID | 1921.6800 | 区域标识 |
| System ID | 1001 | 系统标识 |
| NSEL | 00 | NSAP 选择器(IS-IS 中固定为 0x00) |

System ID 通常采用 MAC 地址格式(6 字节,12 位十六进制),在华为 VRP 中可以手动配置或自动生成。

2.4 IP IS-IS 的演进

1990 年,RFC 1195 定义了 IS-IS 对 IPv4 路由的支持方式,核心思路是:

  1. IS-IS 的底层机制(Hello、LSP 泛洪、SPF 计算)保持不变
  2. 通过新增 TLV(Type-Length-Value)来携带 IP 路由信息
  3. IP 前缀信息封装在 LSP 的 TLV 中传输

后续扩展:

RFC 功能 年份
RFC 1195 IS-IS 承载 IPv4 路由 1990
RFC 1576 支持宽度量值(Wide Metrics) 1994
RFC 5305 多拓扑路由(Multi-Topology) 2008
RFC 5120 IS-IS 承载 IPv6 路由 2008
RFC 8667 SRv6 定位器与 SID 分发 2020

三、技术细节

3.1 IS-IS 协议封装

IS-IS 协议报文直接封装在数据链路层帧中,不使用 IP 协议:

| 层次 | 字段 | 说明 |
|------|------|------|
| 以太网帧头 | 目的 MAC | 0180.CA00.0014(L1)、0180.CA00.0015(L2) |
| 以太网帧头 | 源 MAC | 发送接口 MAC |
| 以太网帧头 | EtherType | 0x8137(IS-IS 统一使用) |
| IS-IS 报文头 | Version | 1 |
| IS-IS 报文头 | I-D Field | 标识报文类型 |
| IS-IS 报文头 | Length Indicator | 长度指示器 |
| IS-IS 公共首部 | PDU Type Length | PDU 类型长度 |
| IS-IS 公共首部 | Version | 版本号 |
| IS-IS 公共首部 | ID Length | System ID 长度,固定 6 |
| IS-IS 公共首部 | PDU Type | IIH/LSP/CSNP/PSNP |
| IS-IS 公共首部 | Reserved | 保留字段 |
| IS-IS 公共首部 | Max Area Addresses | 支持的最大 Area ID 数 |
| IS-IS 公共首部 | PDU Length | PDU 总长度 |
| TLV 字段区 | 可变 | 按需封装各类 TLV |
| 尾部 | Checksum | 校验和 |

IS-IS 使用多播 MAC 地址进行通信:

多播 MAC 用途
0180.CA00.0014 Level-1 IIH
0180.CA00.0015 Level-2 IIH
0180.CA00.0014 / 0015 Level-1-2 IIH(分别发送至 L1 和 L2 多播地址)

3.2 TLV 扩展机制

TLV(Type-Length-Value)是 IS-IS 协议灵活性的核心。所有可变信息都以 TLV 形式封装在 LSP 报文中:

TLV 类型 名称 用途
128 Area Addresses 区域地址(Area ID)
132 IS Neighbors IS 邻居列表
135 IP Internal Route IPv4 内部路由
137 IP Extended IP Reachability IPv4 扩展可达性(宽度量)
138 Authentication 认证信息
142 IP External Route IPv4 外部路由
237 IPv6 Extended Reachability IPv6 扩展可达性

TLV 机制使 IS-IS 能够在不改变协议框架的前提下,通过新增 TLV 类型来支持新功能。

3.3 IS-IS 与 OSPF 设计哲学对比

维度 IS-IS OSPF
协议起源 OSI 模型(ISO 标准) TCP/IP 模型(IETF 标准)
封装层 数据链路层 网络层(IP 协议号 89)
地址体系 NSAP/NET 地址 IP 地址
扩展方式 TLV 机制 LSA 类型扩展
区域标识 Area ID(可变长度) Area ID(32 位)
标识符 System ID(6 字节) Router ID(32 位)
区域划分 基于 NET 配置 基于接口配置
邻居机制 DIS 选举 DR/BDR 选举

四、实战配置/案例分析

4.1 基本 IS-IS 配置

# 设备 R1 配置
sysname R1
#
# 配置 Loopback 作为 System ID 参考
interface LoopBack0
 ip address 10.0.0.1 32
#
# 启动 IS-IS 进程
isis 1
 # 配置 NET 地址
 isis enable 1
 net 6800.0000.0000.0001.00
#
# 接口使能 IS-IS
interface GigabitEthernet0/0/0
 ip address 10.1.0.1 30
 isis enable 1
 isis circuit-level level-1-2
#
interface GigabitEthernet0/0/1
 ip address 10.1.0.5 30
 isis enable 1
 isis circuit-level level-1-2

4.2 配置 System ID

# 方式1:使用 NET 中的 System ID(自动提取)
isis 1
 net 6800.0000.0000.0001.00   # System ID = 0000.0000.0001

# 方式2:手动配置 System ID(VRP 新版本)
isis 1
 isis 1 system-id 0000.0000.0001
 net 6800.0000.0000.0001.00

4.3 验证命令

# 查看 IS-IS 进程状态
display isis peer

# 查看 NET 配置
display isis brief

# 查看接口 IS-IS 信息
display isis interface

# 查看 LSDB
display isis lsdb

# 查看路由表中的 IS-IS 路由
display ip routing-table protocol isis

4.4 案例分析:NET 配置错误导致邻居无法建立

故障背景:某数据中心部署 IS-IS,R1 与 R2 直连后邻居始终无法建立。

排查过程:

# R1 上查看
<Huawei> display isis peer
 Total: 0

# R2 上查看
<Huawei> display isis peer
 Total: 0

# 检查 NET 配置
<Huawei> display isis brief
 NET: 6800.0000.0000.0001.00     # R1
 NET: 6800.0000.0000.0001.00     # R2 !!! System ID 相同

根因:R1 和 R2 配置了相同的 System ID(0000.0000.0001),导致邻居无法正常识别对端身份。

修复:

# R2 修正 NET
isis 1
 net 6800.0000.0000.0002.00     # System ID 改为 0000.0000.0002

修复后验证:

<Huawei> display isis peer
 Total Peer Count     : 1
 State     : Up
 System Id   : 0000.0000.0002
 Interface   : GigabitEthernet0/0/0
 Level     : Level-2

4.5 案例分析:TLV 不匹配导致 LSP 泛洪异常

故障背景:R1 运行窄度量(narrow)模式,R2 运行为宽度量(wide)模式,双方邻居虽能建立,但部分路由无法学习。

排查:

# R1 上查看度量类型
<Huawei> display isis brief
 Metric type : Narrow

# R2 上查看
<Huawei> display isis brief
 Metric type : Wide

根因:IS-IS 的度量类型必须全网一致。窄度量最大值为 63,宽度量支持 0~16777215。度量类型不一致时,双方无法正确解析对方 LSP 中的度量 TLV。

修复:

# 全网统一改为宽度量
# R1
isis 1
 cost-style wide level-2

# 确保 R2 也已配置
# R2
isis 1
 cost-style wide level-2

五、总结

核心概念 说明
CLNS OSI 模型的无连接网络服务,IS-IS 的起源
NSAP 地址 OSI 网络层地址格式
NET NSAP 的一种,IS-IS 用于标识路由器,包含 Area ID 和 System ID
System ID 6 字节唯一标识,类似 OSPF 的 Router ID
TLV 机制 IS-IS 的核心扩展方式,通过新增 TLV 支持新功能
数据链路层封装 IS-IS 直接封装在链路层,使用多播 MAC 通信
IP IS-IS 通过 RFC 1195 扩展后支持 IP 路由

思考

  1. IS-IS 将路由信息封装在 TLV 中,而 OSPF 使用不同类型的 LSA。这两种扩展方式各有何优劣?为什么 IS-IS 被认为扩展性更强?
  2. NET 地址中的 System ID 为什么固定为 6 字节?与 OSPF 使用 32 位 Router ID 相比,有什么设计考量?
  3. IS-IS 运行在数据链路层而非网络层,这种设计对协议的灵活性和部署有什么影响?

下篇预告:第72篇:IS-IS 区域与路由等级:Level-1、Level-2、Level-1-2