一、IS-IS的知识点
1.ISIS概述
IS-IS属于内部网关协议,这里中间系统应该是指路由器吧,IS-IS也是一种链路状态协议。
2.IS-IS链路状态协议
它与OSPF类似,IS-IS通过交换机链路状态信息构建网络拓扑,使用SPF算法计算最短路径。
3.IS-IS网络分层结构(分两层)
Level 1(L1):处理区域内路由,类似OSPF的非骨干区域。L1路由器仅知晓本区域拓扑。
Level 2(L2):骨干区域,负责区域间路由。L2路由器可跨区域通信,确保全网连通性。
L1/L2路由器:同时属于 L1 和 L2,充当边界角色,汇总 L1 路由到 L2。
4.ISIS工作原理
核心步骤
报文类型 | 作用 | OSPF 对应 |
Hello | 发现和维护邻居关系 | OSPF Hello |
LSP | 传播链路状态信息(核心数据) | OSPF LSA |
PSNP | 确认和请求缺失的 LSP(类似 ACK) | OSPF LS Ack |
CSNP | 同步 LSDB(类似数据库摘要) | OSPF DD 报文 |
分步详细解析
(1)邻居发现与邻接关系建立
关键报文:IIH(IS-IS Hello)报文
过程:
① 每个IS-IS路由器在启动后,从参与协议的接口周期性发送IIH报文(默认每10秒一次)。
② IIH报文包含路由器的System ID、层级(Level 1/Level 2)和网络类型(广播网络或点到点网络)。
③ 当两台路由器收到彼此的IIH报文,并验证以下条件时,建立邻接关系:
层级一致(同为Level 1、Level 2或Level 1-2)
认证通过(如果配置了认证)
MTU匹配(双方接口MTU一致)
(2)链路状态信息交换(LSP泛洪)
关键报文:LSP(Link State PDU)
过程:
①.每个路由器生成自己的LSP,描述其直连链路、邻居信息、IP前缀等。
②.LSP通过泛洪(Flooding)机制扩散到整个区域:
路由器收到新LSP后,将其存入本地LSDB,并转发给其他邻居(除来源邻居外)。
使用序列号(Sequence Number)和生存时间(Lifetime)确保LSP的一致性和更新机制。
(3) 链路状态数据库(LSDB)同步
LSDB特点:
①.每个Level 1区域内的路由器维护本区域的LSDB。
②Level 2路由器维护全局LSDB(跨区域路由信息)。
③通过CSNP(Complete Sequence Number PDU)和PSNP(Partial Sequence Number PDU)实现LSDB的同步:
CSNP:用于广播网络中DIS定期发送的完整LSP摘要(类似OSPF的DD报文)。
PSNP:用于请求缺失的LSP或确认收到的LSP(类似OSPF的LSR/LSAck)。
(4) 最短路径树(SPT)计算
算法:使用Dijkstra算法(SPF算法)基于LSDB计算到达所有节点的最短路径。
计算触发条件:
收到新的LSP(链路状态变化)。
邻居关系断开(通过Hello报文超时检测)。
(5) 路由表生成与维护
路由生成:
Level 1路由器:仅生成区域内路由,默认通过Level 1-2路由器访问外部区域。
Level 2路由器:生成全局路由表,直接计算跨区域路径。
路由泄露(Route Leaking):
可选功能,允许将Level 2路由注入Level 1区域,优化路径选择(避免次优路由)。
最后,理解其工作原理的关键在于:邻居发现→LSP泛洪→LSDB同步→SPF计算→路由生成的链路状态协议核心逻辑。
5.ISIS的DIS与DR选举
(1)在IS-IS广播网络中,优先级为0的路由器业canyu DIS的选举,而在OSPF中的优先级为0的路由器则不参与DR选举;
(2)在ISIS广播网络中,同一网段上同一级的路由器之间斗湖形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系;
6.ISIS与OSPF的区别
特性 | IS-IS | OSPF |
协议层 | 数据链路层(直接封装) | 网络层(依赖 IP) |
地址标识 | NSAP 地址(System ID) | Router ID(IP 地址格式) |
区域设计 | 区域边界在链路上,L2 骨干更灵活 | 严格依赖 Area 0,区域边界在路由器上 |
扩展性 | 更适合超大规模网络(如运营商骨干) | 适用于企业网和中小型网络 |
抓包特征 | 无 IP 封装,TLV 结构灵活 | 基于 IP 多播,LSA 类型复杂 |
多协议支持 | 原生支持 CLNS + IP 双栈 | 仅支持 IP(需扩展支持 IPv6) |
二、多区域集成IS-IS的实验配置
实验要求:
配置基本的IP地址;配置ISIS;查看ISIS的路由表;
实验步骤:
1.基本的配置
AR1
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip add 12.1.1.1 24
[AR1-GigabitEthernet0/0/0]q
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip add 13.1.1.1 24
[AR1-GigabitEthernet0/0/1]q
[AR1]int LoopBack 0
[AR1-LoopBack0]ip add 1.1.1.1 32
[AR1-LoopBack0]q
AR2
[AR2]int g0/0/1
[AR2-GigabitEthernet0/0/1]ip add 12.1.1.2 24
[AR2-GigabitEthernet0/0/1]q
[AR2]int g0/0/0
[AR2-GigabitEthernet0/0/0]ip add 24.1.1.2 24
[AR2-GigabitEthernet0/0/0]q
[AR2]int LoopBack 0
[AR2-LoopBack0]ip add 2.2.2.2 32
[AR2-LoopBack0]q
AR3
[AR3]int g0/0/0
[AR3-GigabitEthernet0/0/0]ip add 13.1.1.3 24
[AR3-GigabitEthernet0/0/0]q
[AR3]int g0/0/1
[AR3-GigabitEthernet0/0/1]ip add 35.1.1.3 24
[AR3-GigabitEthernet0/0/1]q
[AR3]int LoopBack 0
[AR3-LoopBack0]ip add 3.3.3.3 32
[AR3-LoopBack0]q
AR4
[AR4]int g0/0/1
[AR4-GigabitEthernet0/0/1]ip add 24.1.1.4 24
[AR4-GigabitEthernet0/0/1]q
[AR4]int g0/0/0
[AR4-GigabitEthernet0/0/0]ip add 45.1.1.4 24
[AR4-GigabitEthernet0/0/0]q
[AR4]int loo
[AR4]int LoopBack 0
[AR4-LoopBack0]ip add 4.4.4.4 32
[AR4-LoopBack0]q
AR5
[AR5]int g0/0/0
[AR5-GigabitEthernet0/0/0]ip add 35.1.1.5 24
[AR5-GigabitEthernet0/0/0]q
[AR5]int g0/0/1
[AR5-GigabitEthernet0/0/1]ip add 45.1.1.5 24
[AR5-GigabitEthernet0/0/1]q
[AR5]int LoopBack 0
[AR5-LoopBack0]ip add 5.5.5.5 32
[AR5-LoopBack0]q
2.ISIS的配置
[AR1]isis //启用IS-IS的进程,进程默认为1
[AR1-isis-1]network-entity 49.0123.0000.0000.0001.00 //配置NET地址
[AR1-isis-1]is-level level-1
[AR1-isis-1]cost-style wide
[AR1-isis-1]q
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]isis enable //接口下打开IS-IS
[AR1-GigabitEthernet0/0/0]q
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]isis enable
[AR1-GigabitEthernet0/0/1]q
[AR1]int LoopBack 0
[AR1-LoopBack0]isis enable
[AR1-LoopBack0]q[AR2]isis
[AR2-isis-1]network-entity 49.0123.0000.0000.0002.00
[AR2-isis-1]cost-style wide
[AR2-isis-1]q
[AR2]int g0/0/1
[AR2-GigabitEthernet0/0/1]isis enable
[AR2-GigabitEthernet0/0/1]q
[AR2]int g0/0/0
[AR2-GigabitEthernet0/0/0]isis enable
[AR2-GigabitEthernet0/0/0]q
[AR2]int LoopBack 0
[AR2-LoopBack0]isis enable
[AR2-LoopBack0]q[AR3]isis
[AR3-isis-1]network-entity 49.0123.0000.0000.0003.00
[AR3-isis-1]cost-style wide
[AR3-isis-1]q
[AR3]int g0/0/0
[AR3-GigabitEthernet0/0/0]isis enable
[AR3-GigabitEthernet0/0/0]q
[AR3]int g0/0/1
[AR3-GigabitEthernet0/0/1]isis enable
[AR3-GigabitEthernet0/0/1]q
[AR3]int LoopBack 0
[AR3-LoopBack0]isis enable
[AR3-LoopBack0]q
[AR3]isis[AR4]isis
[AR4-isis-1]network-entity 49.0045.0000.0000.0004.00
[AR4-isis-1]is-level level-2
[AR4-isis-1]cost-style wide
[AR4-isis-1]q
[AR4]int g0/0/1
[AR4-GigabitEthernet0/0/1]isis enable
[AR4-GigabitEthernet0/0/1]q
[AR4]int g0/0/0
[AR4-GigabitEthernet0/0/0]isis enable
[AR4-GigabitEthernet0/0/0]q
[AR4]int LoopBack 0
[AR4-LoopBack0]isis enable
[AR4-LoopBack0]q
[AR4]q[AR5]isis
[AR5-isis-1]network-entity 49.0045.0000.0000.0005.00
[AR5-isis-1]cost-style wide
[AR5-isis-1]is-level level-2
[AR5-isis-1]cost-style wide
[AR5-isis-1]q
[AR5]int g0/0/0
[AR5-GigabitEthernet0/0/0]isis enable
[AR5-GigabitEthernet0/0/0]q
[AR5]int g0/0/1
[AR5-GigabitEthernet0/0/1]isis enable
[AR5-GigabitEthernet0/0/1]q
[AR5]int LoopBack 0
[AR5-LoopBack0]isis enable
[AR5-LoopBack0]q
[AR5]
注意:这里为什么要配置NET地址?
NET地址是IS-IS的“身份证”,决定了路由器的身份、所属区域和层级。
3. 查看路由器上的IS-IS邻接关系
从上面路由器看出AR1与AR2、AR3是level-1的邻接关系,其它的路由器也是这条命令可以查出
4.查看路由器上的路由表
5.R4和R5上引入一条外部路由
[AR4]int LoopBack 100
[AR4-LoopBack100]ip add 100.1.1.1 32
[AR4-LoopBack100]q
[AR4]isis
[AR4-isis-1]import-route direct
[AR4-isis-1]q
[AR5]int LoopBack 200
[AR5-LoopBack200]ip add 200.1.1.1 32
[AR5-LoopBack200]q
[AR5]isis
[AR5-isis-1]import-route direct
查看路由器
通过上面的输出可以看出,AR1并没有收到外部路由
6.分别在R2和R3上路由渗透给AR1
注:为什么要进行路由渗透,因为isis协议里面没有像ospf的3类lsa,只能进行路由渗透
[AR2]isis
[AR2-isis-1]import-route isis level-2 into level-1 //把level-2的路由泄露给level-1
[AR3]isis
[AR3-isis-1]import-route isis level-2 into level-1
再次查看路由器,可以看出level-2区域的路由都传递给了level-1区域
三、IS-IS的数据抓包详细分析
分以下四种来分析:通用报文;IIH报文;LSP报文;CSNP报文
通用报文示例
IIH报文 示例
Circuit Type:最后两位表示发出hello报文路由器的类型(01表示L1,10表示L2,11表示L1-L2);
SystemID:表示这个hello报文是哪个路由器发出来的
Holding Timer:相当于死亡时间,如果这个时间内没有收到邻居发来的hello报文,则结束邻居关系
PDU Length:总长度,单位是字节;
Priority:优先级,默认64,范围为0~127,DIS选举会关注它
Area address:发hello包那台路由器所属的区域名
IS Neighbor:发出hello包的路由器的邻居的接口mac地址
IPv4 interface address:从哪个接口发出的hello报文
Protocols Supported:表示支持的协议
Restart Signaling:表示重启信号
Multi Topology:表示多拓扑信息
LSP报文抓包示例
PDU Length:总长度,单位:字节
Remaining Lifetime:剩余的生命周期,单位:秒
LSP-ID:发出LSP报文的路由器,由三部分组成,SystemID、伪节点ID(00,如果第一位不为0则表示伪节点)和LSP编号(00,第一位不为0代表被分片)
Sequence number:序列号
Checksum:校验和
Attachment(ATT):由Level-1-2路由器产生,用来指明始发路由器是否与其它区域相连。 标识路由器是否连接到其他区域的 Level 2骨干网(用于Level 1-2路由器)。每个位 对应一个区域(最多4个区域),1表示连接到对应区域的骨干网。
Overloadbit:过载标志位。对路由器设置过载位后,其它路由器在进行SPF计算时不会考虑这台路由器。当路由器内存不足时(例如表示1的时候),系统自动在发送的LSP报文中设置过载标志位
Type Of IntermediateSystem:生成LSP的路由器的类型。
Area address:发出此报文的路由器所在区域
IPv4 Interface Address:发出此报文身上的ip地址
Extended IP Reachability:用于描述ipv4路由可达性的扩展字段
CSNP报文抓包实例
Source ID:发出CSNP报文的路由器的System ID
Start LSP ID:CSNP报文中第一个LSP的ID值
End LSP ID:CSNP报文中最后一个LSP的ID值
四、总结
IS-IS通过分层设计、抢占式DIS选举和高效LSP同步,成为大规模网络的首选协议。掌握其NET地址配置、层级划分和DIS机制,是部署和优化的关键!