IS-IS协议基础知识
一、IS-IS协议概述
IS-IS全称为Intermediate System to Intermediate System,即中间系统到中间系统。ISO将具有路由功能的设备称为中间系统(IS),将不具备路由转发能力的终端称为终端系统(ES)。ES-IS则解决终端系统与中间系统之间的通信问题。
IS-IS是ISO定义的OSI协议栈中CLNS(无连接网络服务)的一部分。早期的网络环境以OSI协议栈为主流,IS-IS应运而生。随着TCP/IP协议栈的崛起,经过扩展后的IS-IS能够在IP网络中运行,因其出色的扩展性,IS-IS在当前的大规模网络中仍然被广泛使用。
在应用场景上,OSPF通常用于企业网络,基于策略对业务流量进行精细控制,满足定制化业务需求;而IS-IS更多应用于广域骨干网,追求快速转发和路由收敛速度。
二、IS-IS的区域与级别
2.1 两级分层结构
为了支持大规模的路由网络,IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构。与OSPF使用Area 0专门标识骨干区域不同,IS-IS通过连续的Level-2路由器或Level-1-2路由器构成的逻辑连接来组成骨干区域。
一般来说,将Level-1路由器 部署在非骨干区域,Level-2路由器 和Level-1-2路由器部署在骨干区域。每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。
2.2 路由器级别
在IS-IS中,每个路由器都只属于一个区域;而在OSPF中,一个路由器的不同接口可以属于不同的区域。
Level-1路由器
Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,属于不同区域的Level-1路由器不能形成邻居关系。Level-1路由器只负责维护Level-1的LSDB,该LSDB包含本区域的路由信息,到本区域外的报文转发给最近的Level-1-2路由器。
Level-2路由器
Level-2路由器负责区域间的路由,可以与同一或者不同区域的Level-2路由器或者其它区域的Level-1-2路由器形成邻居关系。Level-2路由器维护一个Level-2的LSDB,该LSDB包含区域间的路由信息。所有Level-2级别的路由器组成路由域的骨干网,负责在不同区域间通信。路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性。
Level-1-2路由器
Level-1-2路由器同时支持Level-1和Level-2路由能力,同时维护Level-1和Level-2两份LSDB,既参与本区域内的Level-1路由,也参与区域间的Level-2路由。Level-1-2路由器是连接非骨干区域与骨干区域的桥梁,每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。
级别配置注意事项:在网络运行过程中,改变IS-IS设备的级别可能会导致IS-IS进程重启并可能造成IS-IS邻居断连,建议用户在配置IS-IS时即完成设备级别的配置。
2.3 邻居建立条件与规则
在IS-IS中,路由器的级别配置决定了它可以建立哪种类型的邻居:
| 本端接口级别 | 允许建立邻居的对端接口级别 | 区域地址要求 |
|---|---|---|
| Level-1 | Level-1或Level-1-2 | 至少有一个共同的区域地址 |
| Level-2 | Level-2或Level-1-2 | 不检查区域地址是否匹配 |
| Level-1-2 | Level-1、Level-2或Level-1-2 | L1需要区域地址一致,L2不需要 |
建立Level-1邻居时,链路两端必须至少有一个共同的区域地址;建立Level-2邻居时不要求区域ID一致。一个IS-IS进程最多可以配置3个区域地址。建立邻居还需满足:同一网段、相同的MTU、同一层次认证一致、未设置silent-interface等条件。
三、IS-IS的电路类型与网络类型
IS-IS的电路类型(Circuit Type)是根据接口的数据链路层协议自动判别的:
- 当接口为以太网时,电路类型默认为广播(Broadcast)。
- 当接口为PPP或HDLC等点到点协议时,电路类型默认为点对点(P2P)。
在广播网络中,IS-IS需要选举DIS。通过配置IS-IS接口的DIS优先级,可以使拥有接口优先级最高的设备优选为DIS。在P2P网络中,IS-IS不需要选举DIS,无需配置接口的DIS优先级。但为了保证P2P链路的可靠性,可以配置IS-IS使用P2P接口在建立邻居时采用3-way模式,以检测单向链路故障。
通常情况下,IS-IS会对收到的Hello报文进行IP地址检查,只有当收到的Hello报文的源地址和本地接收报文的接口地址在同一网段时,才会建立邻居。当两端接口IP地址不在同一网段时,如果均配置了isis peer-ip-ignore命令,就会忽略对对端IP地址的检查,此时链路两端的IS-IS接口间可以建立正常的邻居关系。
四、DIS与伪节点
在广播型网络中,为了减少网络中的泛洪流量并简化拓扑,IS-IS会选举一个DIS(指定中间系统)来代表该网段。DIS会创建一个虚拟的伪节点来代表整个广播网络。
4.1 DIS选举规则
DIS的选举规则可总结为:优先级优先,MAC地址次选,支持抢占。
- 优先级优先:接口优先级数值越大越优先。优先级取值范围是0~127,缺省值为64。当优先级为0时,表示优先级最低,但仍参与DIS选举。这一点与OSPF中优先级为0不参与DR选举的机制不同。
- MAC地址次选:如果优先级相同,则比较接口的MAC地址,地址最大的路由器当选为DIS。
- 独立选举:Level-1和Level-2的DIS分别独立选举,可为不同级别分别设置不同的DIS优先级。
- 抢占特性:IS-IS的DIS选举是抢占式的。当有新的高优先级路由器加入网络时,可以抢占成为新的DIS,触发重新选举。
DIS优先级配置命令:
bash
[Huawei] interface GigabitEthernet0/0/0
# 设置Level-2的DIS优先级
[Huawei-GigabitEthernet0/0/0] isis dis-priority 100 level-2
# 设置Level-1的DIS优先级
[Huawei-GigabitEthernet0/0/0] isis dis-priority 80 level-1
4.2 DIS与OSPF DR的对比
| 对比维度 | IS-IS的DIS | OSPF的DR |
|---|---|---|
| 抢占性 | 支持抢占(新设备可抢占DIS) | 不支持抢占 |
| 备份机制 | 无备份设备 | 有BDR作为备份 |
| 邻接关系 | 所有路由器之间都形成邻接关系(Full mesh) | DR-OTHER之间为2-Way状态 |
| 选举等待时间 | 仅需2个Hello报文间隔(约6秒) | 需40秒等待时间 |
| 优先级0 | 参与选举(优先级最低) | 不参与选举 |
| CSNP发送 | 只有DIS周期性发送CSNP | --- |
五、NSAP地址与NET地址
5.1 地址体系概述
IS-IS基于OSI协议栈,其网络层使用NSAP地址来标识网络节点,而非IP地址。NSAP是网络服务访问点,用于定位OSI协议栈中的资源。
5.2 NSAP地址结构
NSAP地址由IDP(初始域部分)和DSP(特定域部分)两部分组成:
- IDP包含AFI(地址分配机构和格式标识符)和IDI(初始域标识符)。
- DSP包含High Order DSP、System ID和SEL三部分。
在实际配置中,网络管理员只需配置NET 即可。NET是NSAP的一种特殊形式(SEL固定为00),可以理解为在OSI网络中为路由设备指定的"名字"。华为官方要求:必须在IS-IS视图中配置NET,IS-IS协议才能正常启动。
5.3 NET的组成与格式
NET的格式为:区域ID . System ID . SEL(00)。
| NET组成部分 | 说明 | 长度/取值范围 |
|---|---|---|
| 区域ID | 可变长度区域地址,标识路由器所属的区域,可配置多个 | 1~13字节 |
| System ID | 设备的固定标识,在区域内必须唯一 | 固定12个十六进制字符 |
| SEL(Selector) | 网络服务访问点选择符,00表示这是一个网络实体名称 | 固定为"00" |
NET地址配置示例:
bash
[Huawei] isis 1
[Huawei-isis-1] network-entity 49.0001.0010.0100.1001.00
其中,"49.0001"是区域ID,"0010.0100.1001"是System ID,"00"是SEL。
六、IS-IS报文类型
| 报文类型 | 功能说明 | 子类型 |
|---|---|---|
| Hello PDU(IIH) | 用于邻居发现与保持 | LAN L1 IIH / LAN L2 IIH / P2P IIH |
| LSP(链路状态协议数据单元) | 用于交换链路状态信息,类似OSPF的LSU | Level-1 LSP / Level-2 LSP |
| CSNP(完全序列号报文) | 包含LSDB中所有LSP的摘要信息 | Level-1 CSNP / Level-2 CSNP |
| PSNP(部分序列号报文) | 请求或确认特定LSP(类似OSPF的LSR和LSAck) | Level-1 PSNP / Level-2 PSNP |
IS-IS报文直接基于链路层封装,而不是像OSPF那样封装在IP报文中。所有PDU由通用头部和专用头部构成,通用头部对于所有PDU相同。
6.1 Hello报文
Hello报文用于建立和维持邻居关系,也称为IIH消息。IS-IS Hello消息可分为三类:广播网中的Level-1路由器使用Level-1 LAN IIH消息;广播网中的Level-2路由器使用Level-2 LAN IIH消息;非广播网络中则使用P2P IIH消息。
6.2 LSP报文
LSP用于交换链路状态信息,分为两种:Level-1 LSP由Level-1路由器传送,Level-2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP,两类LSP有相同的报文格式。
L1级别的路由器只会维护L1级别的LSDB,L2级别的路由器只会维护L2级别的LSDB,L1/2级别的路由器既维护L1级别的LSDB,又维护L2级别的LSDB。
6.3 SNP报文
SNP报文负责维护LSDB的同步与一致性。
- CSNP(完全序列号报文) :在广播网络中,CSNP由DIS设备周期性发送,包含DIS本地LSDB中所有LSP的摘要信息。在点到点链路上,CSNP只在第一次建立邻接关系时发送。
- PSNP(部分序列号报文) :当邻居发现LSDB不同步时,发送PSNP报文来请求缺失的LSP报文。广播网络中 ,PSNP仅用于请求LSP,没有确认作用。点到点网络中 ,PSNP不仅用于请求LSP,还充当ACK确认,收到LSP后可用PSNP确认(类似OSPF的LSAck)。
七、报文交换完整流程
7.1 邻居建立(Hello交互)
IS-IS的邻居建立机制根据网络类型有所不同。P2P链路默认采用三次握手机制建立邻接关系,以保证链路的可靠性。
广播网络中的邻居建立(三次握手) :
- R1向组播地址发送LAN IIH(邻居列表为空)。
- R2收到后学习R1的信息,回复LAN IIH(邻居列表中包含R1的System ID)。
- R1收到R2的回复后,确认双向通信建立。若需要更高可靠性,可配置三次握手机制检测单向链路故障。
P2P网络中的邻居建立(三次握手------华为设备默认) :
- R1向R2发送P2P IIH(邻居System ID为空),状态为Down。
- R2向R1回复IIH(邻居System ID为R1的System ID),状态进入Initializing。
- R1收到后再次向R2发送IIH(邻居System ID为R2的System ID),双方状态最终进入Up。
P2P链路默认采用3-way模式以检测单向链路故障。配置
isis ppp-negotiation 3-way启用三次握手,isis ppp-negotiation 3-way only表示只采用三次握手,不兼容二次握手。
7.2 数据库同步
在邻接关系建立后,邻居之间开始交互LSP同步LSDB。
广播网络中的LSDB同步
- DIS周期性发送CSNP报文(缺省间隔10秒)。
- 新加入的路由器收到CSNP后,对比本地LSDB。
- 如发现本地缺少某些LSP或本地存储的LSP较旧,发送PSNP请求缺失的LSP。
- 收到请求的LSP后,对方回复相应的LSP。在广播网络中,PSNP不充当ACK确认。
点到点网络中的LSDB同步
- 邻居建立后,只在第一次建立邻接关系时发送CSNP。
- 双方收到LSP后使用PSNP进行确认(ACK)。
- 当发现LSDB不同步时,也可发送PSNP请求缺失的LSP。
PSNP角色总结表:
| 网络类型 | PSNP请求LSP | PSNP确认LSP |
|---|---|---|
| 广播(Broadcast) | ✓ | ✗ |
| 点到点(P2P) | ✓ | ✓ |
7.3 LSDB维护
IS-IS中没有专门的"老化计时器"(Age),而是通过序列号+剩余生存时间组合判断LSP的新旧。LSP有一个最大有效时间(MaxAge),超出该时间仍未收到新序列号的同源LSP,该LSP将被删除。
LSP最大有效时间缺省为1200秒 (20分钟)。缺省LSP刷新周期为900秒(15分钟)。LSP的最大有效时间必须大于LSP刷新周期三百秒以上,以保证LSP在失效前能够被新的LSP更新。
LSP序列号回绕机制:当IS-IS路由器生成的LSP序列号达到最大值0xFFFFFFFF后,不会立即重新从1开始,而是先等待该LSP老化(LSP最大生存时间+60秒,LSP最大生存时间缺省为1200秒)。老化完成后,LSP的序列号重新从1开始递增。
IS-IS多拓扑扩展(MT) :IS-IS通过扩展TLV支持IPv6。新增了两个TLV------TLV 236(IPv6可达性)描述路由前缀和度量值,TLV 232(IPv6接口地址)与IPv4的IP接口地址TLV类似,但将32位IPv4地址扩展为128位IPv6地址。还新增了NLPID 142用于标识IPv6协议包。IS-IS的MT(多拓扑)特性可支持IPv4和IPv6独立拓扑,分别进行SPF计算。
7.4 完整报文交互流程图
邻居发现阶段 邻接建立阶段 数据库同步阶段 LSDB维护阶段
| | | |
v v v v
LAN IIH(初始) --> 接收邻居Hello --> 接收CSNP --> 对比本地LSDB --> 发现缺失LSP
| | | |
+--> 双向通信建立 --> DIS选举 --> CSNP(周期:广播网) --> PSNP请求 --> 收到LSP
CSNP(仅一次:P2P) |
+--> PSNP确认(P2P)
(广播网中PSNP不具ACK功能)
7.5 P2P链路邻居状态机
在P2P链路上,邻居建立过程遵循严格的状态机:
- Down:初始状态,未收到任何Hello报文。
- Initializing(Init) :收到来自邻居的Hello报文,但邻居列表中不含本端System ID,此时单向通信建立。
- Up:再次收到邻居的Hello报文,邻居列表中已包含本端System ID,双向通信建立,邻居状态进入Up。
八、IS-IS与OSPF主要对比
| 对比维度 | IS-IS | OSPF |
|---|---|---|
| 协议起源 | ISO OSI协议栈 | IETF TCP/IP协议栈 |
| 区域划分 | Level-1(非骨干)/ Level-2(骨干) | 骨干区域(Area 0)/ 常规区域(Area n) |
| 区域边界 | 位于路由器之间(路由器只属于一个区域) | 位于路由器内部接口上 |
| 网络类型 | 广播、P2P(无NBMA、P2MP) | 广播、NBMA、P2P、P2MP |
| DIS/DR选举 | 可抢占、无备份、优先级0参与选举 | 非抢占、有BDR备份、优先级0不参与 |
| 报文封装 | 基于OSI网络层,直接封装于链路层 | 封装于IP报文中,协议号89 |
| 报文类型 | IIH、LSP、CSNP、PSNP | Hello、DD、LSR、LSU、LSAck |
| 认证方式 | 接口认证、区域认证、域认证 | 接口认证、区域认证 |
| 扩展性 | 使用TLV结构,新增协议(如IPv6)可添加新TLV | 需发布新版本(如OSPFv3)支持新协议 |
九、华为配置与排障命令
9.1 基本配置
bash
# 1. 进入系统视图
[Huawei] system-view
# 2. 创建IS-IS进程,指定NET地址
[Huawei] isis 1
[Huawei-isis-1] network-entity 49.0001.0010.0100.1001.00
# 3. 设置路由器级别(默认为level-1-2)
[Huawei-isis-1] is-level level-1-2
# 4. 进入接口视图,使能IS-IS
[Huawei] interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0] isis enable 1
# 5.(可选)配置接口级别
[Huawei-GigabitEthernet0/0/0] isis circuit-level level-1
9.2 高级配置
bash
# 配置接口DIS优先级(广播网络中有效)
[Huawei] interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0] isis dis-priority 100 level-2
# 配置接口认证
[Huawei-GigabitEthernet0/0/0] isis authentication-mode md5 huawei123
# 修改LSP最大有效时间(缺省1200秒)
[Huawei] isis 1
[Huawei-isis-1] timer lsp-max-age 1500
# 修改LSP刷新周期(缺省900秒)
[Huawei-isis-1] timer lsp-refresh 1000
# 修改CSNP发送间隔(缺省10秒)
[Huawei] interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0] isis timer csnp 15 level-2
# 设置P2P链路的三次握手机制
[Huawei-GigabitEthernet0/0/0] isis ppp-negotiation 3-way
9.3 关键查看命令
bash
[Huawei] display isis peer # 查看IS-IS邻居信息
[Huawei] display isis peer verbose # 查看IS-IS邻居详细信息
[Huawei] display isis lsdb # 查看IS-IS LSDB数据库
[Huawei] display isis interface # 查看使能IS-IS的接口信息
[Huawei] display isis route # 查看IS-IS路由表
[Huawei] display isis spf-log # 查看SPF计算历史记录
[Huawei] display isis brief # 查看IS-IS进程简要信息
[Huawei] display isis graceful-restart status # 查看IS-IS GR状态
十、知识要点速查
| 知识点 | 核心要点 |
|---|---|
| IS-IS起源 | ISO为OSI协议栈CLNS设计,后扩展到IP网络 |
| 路由器级别 | Level-1(区域内)、Level-2(骨干)、Level-1-2(连接两者) |
| Level-1邻居 | 必须同一区域ID,只能与L1或L1-2建邻 |
| Level-2邻居 | 不要求区域ID相同,可与L2或L1-2建邻 |
| DIS选举 | 优先级0参与选举、可抢占、无备份;优先级优先→MAC地址最大 |
| NET地址 | 格式为:区域ID . System ID . 00,System ID 12字符且区域内唯一 |
| 报文类型 | Hello、LSP、CSNP(全量摘要)、PSNP(部分/请求/确认) |
| 广播CSNP | 由DIS周期性发送(缺省10秒),用于LSDB同步 |
| P2P CSNP | 只在第一次建立邻接关系时发送 |
| PSNP角色 | 广播网:仅请求;P2P:请求+ACK确认 |
| LSP参数 | MaxAge缺省1200秒,刷新周期缺省900秒,差值须大于300秒 |
| IPv6支持 | 新增TLV 232、TLV 236和NLPID 142 |
十一、常见问题排查
问题1:Level-1邻居无法建立
可能原因:
- 两端区域ID不一致
- 接口级别配置不一致(一端配置了L1,另一端配置了L2)
- 认证模式或口令不匹配
排查命令:
bash
[Huawei] display isis interface GigabitEthernet0/0/0
[Huawei] display isis peer
问题2:DIS选举不符合预期
原因:优先级参数配置错误。请检查Level-1和Level-2的优先级是否为独立配置。
bash
# 查看接口的IS-IS配置,确认DIS优先级
[Huawei] display isis interface verbose
问题3:LSDB同步异常
在广播网络中,若LSDB无法同步,请确认CSNP是否由DIS正常发送。可通过抓包或display isis lsdb验证。缺省CSNP周期为10秒。
声明:本文档主要基于华为官方技术文档和RFC标准进行编写,具体部署和故障排查请以华为官方最新发布的产品文档为准。本文内容仅供参考学习,实际网络部署时应结合具体设备型号和软件版本进行验证。