关键词: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 路由的支持方式,核心思路是:
- IS-IS 的底层机制(Hello、LSP 泛洪、SPF 计算)保持不变
- 通过新增 TLV(Type-Length-Value)来携带 IP 路由信息
- 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 路由 |
思考
- IS-IS 将路由信息封装在 TLV 中,而 OSPF 使用不同类型的 LSA。这两种扩展方式各有何优劣?为什么 IS-IS 被认为扩展性更强?
- NET 地址中的 System ID 为什么固定为 6 字节?与 OSPF 使用 32 位 Router ID 相比,有什么设计考量?
- IS-IS 运行在数据链路层而非网络层,这种设计对协议的灵活性和部署有什么影响?
下篇预告:第72篇:IS-IS 区域与路由等级:Level-1、Level-2、Level-1-2