当前位置: 首页 > article >正文

理解 IS-IS 中重要概念之间的关系

本文为 “IS-IS 中重要概念” 相关文章合辑

未整理去重。


理解 IS-IS、CLNS、CMNS、NSAP、NET 等概念之间的关系

1. 核心概念

IS-IS (Intermediate System to Intermediate System)

一种链路状态路由协议,基于 SPF(最短路径优先)算法计算路由。它最初专为 OSI 网络设计,用于 CLNS 协议的路由计算,后来扩展为 Integrated - ISIS,能够同时支持 CLNS 和 IP 协议的路由。ISIS 协议通过在路由器之间交换链路状态信息,构建网络拓扑图,从而找到到达各个目的地的最佳路径,如同导航系统帮助路由器找到最佳路径。

CLNS (Connectionless Network Service)

OSI 网络层提供的无连接服务,类似于 TCP/IP 中的 IP 协议。在数据传输时,每个数据包都携带完整目的地址,数据包独立传输,无需预先建立连接,如同寄信,快速但不可靠,适用于对实时性要求高,但对可靠性要求不高的场景,比如视频流。对应协议是 CLNP (Connectionless Network Protocol) 。

CMNS (Connection Mode Network Service)

OSI 网络层提供的面向连接服务,类似于 TCP/IP 中的 TCP 协议。在数据传输前需经过连接建立、数据传输和连接释放三个阶段,如同打电话,先建立连接,保证可靠传输,但过程复杂,适用于对可靠性要求高的场景,如文件传输。对应协议为 CONP (Connection - Oriented Network Protocol) 。

NSAP (Network Service Access Point)

OSI 网络层地址,类似 TCP/IP 中的 IP 地址,不过它基于节点。NSAP 用于唯一标识网络中的节点,包括路由器和主机,其结构复杂,长度可变,由多个字段组成:

  • AFI (Authorization and Format Identifier):授权和格式标识符,主要用于标识地址的格式和管理机构等信息。
  • IDI (Inter - Domain Identifier):域间标识符,用于标识不同的管理域,类似于 TCP/IP 中的自治系统号,在全球范围内区分不同网络管理区域。
  • High Order DSP (High Order Domain - Specific Part):高位域内特定部分,标识域内的区域。
  • System - ID:定长 6 字节,实际应用中通常使用路由器的 MAC 地址,但也可手动配置为其他唯一标识该路由器的值,用于唯一标识网络设备。
  • NSEL (NSAP Selector):NSAP 选择符,可标识设备中的进程,使一个设备能运行多种网络服务。NSAP 地址就像房子的详细地址,包含省、市、区、街道、门牌号等信息,用于在网络中唯一标识一个设备。

NET (Network Entity Title)

NET 是 NSAP 地址的一种特殊形式,当 NSEL 字段为 00 时,该 NSAP 地址就称为 NET 地址。它专门用于在 IS-IS 协议中唯一标识路由器,是路由器参与 SPF 计算的基础,如同房子的门牌号,专门用于标识路由器,用于路由计算。

2. 概念关系

  • IS-IS 协议最初为 OSI 网络设计,使用 NSAP 地址进行路由计算,尤其是使用 NET 地址来标识路由器,NET 地址是路由器参与 IS-IS 协议中 SPF 计算的基础。

  • OSI 网络提供 CLNS(无连接)和 CMNS(面向连接)两种服务。CLNS 类似 IP 协议,适用于对实时性要求高但对可靠性要求不高的场景;CMNS 类似 TCP 协议,适用于对可靠性要求高的场景。

  • Integrated - IS-IS 是 IS-IS 的扩展版本,使其能够同时支持 CLNS 和 IP 协议的路由,在现代一些大型网络(如电信运营商网络、部分对网络要求高的大型企业网络)中被使用,因其具有良好的可扩展性和灵活性。

  • NSAP 地址结构复杂、长度可变,通过 NSEL 字段能区分节点的不同进程,当 NSEL 为 00 时,该地址就被视为 NET 地址,专门用于标识路由器。

3. 补充说明

  • NSAP 地址的灵活性:NSAP 地址的复杂结构和可变长度体现了 OSI 模型的灵活性和扩展性。

  • System - ID 的唯一性:使用路由器的 MAC 地址作为 System - ID,通常能确保每个路由器在网络中的唯一性,也可手动配置保证唯一性。

  • NSEL 的多用途性:NSEL 字段可标识节点中的不同进程,让一个设备运行多种网络服务。


协议 - ISIS 基础知识

作者:Danbo 发布时间:2015 - 06 - 25 01:44:27

IS-IS 概述

ISIS 属于 ISO 协议簇,是 ISO 定义的 OSI 协议栈中无连接网络服务 CLNS 的一部分,用于动态路由数据包。CLNS 由以下三个协议构成:

  • CLNP:类似 TCP/IP 中的 IP 协议。IP 协议为 TCP/IP 传输层服务,CLNP 为 OSI 传输层服务。
  • ISIS:中间系统的路由协议,类似于 IP 中的 OSPF。
  • ES - IS:主机系统与中间系统间的协议,就像 IP 中的 ARP、ICMP 等。

ISIS 是封装在二层中的,这点与 IP 中的协议不同。ES - IS 用于同一网段或链路的 ISO 终端系统和路由器之间自动交换信息便于邻接点发现。路由器发送 IS 报文 HELLO 包(ISH),主机发送 ES 报文 HELLO 包(ESH)。在直连节点间发送的 HELLO 报文包含通信节点的网络层地址和数据链路层地址,包含地址分配、网关选择等功能。

IETF 定义了用 OSI IS-IS 实现在 TCP/IP 和 OSI 双重环境下的路由选择,即集成的 IS-IS 或者双重 IS-IS,它可以支持纯 CLNP 网络、纯 IP 网络,或者同时运行 CLNP 和 IP 的双重网络。

IS-IS 术语

一、硬件设备

  1. IS(Intermediate System,中间系统):即路由器,在 IS-IS 网络中承担转发数据包的重任,并负责建立路由表,以此引导数据包在网络中的传输路径。
  2. DIS(Designated Intermediate System,指定中间系统):在广播型网络(如以太网)区域内,每个 LAN 上仅有一个 DIS。它负责该区域的路由信息广播与维护工作。DIS 的选举过程主要基于优先级,优先级数值越大越优先,若优先级相同,则比较 MAC 地址,MAC 地址最大者当选。需注意,优先级为 0 时表示该路由器不参与 DIS 选举。另外,在点对点网络中不存在 DIS。
  3. ES(End System,终端系统):也就是主机,作为 IS-IS 网络中的数据源与目的地,是网络通信的发起端与接收端。

二、标识符

  1. SysID(System ID,系统标识):在功能上类似于路由器 ID(RID),用于标识网络中不同的路由器。在 NSAP 地址结构中,SysID 是代表系统标识的部分。在 IPv4 网络环境下,它常基于 IP 地址生成,但在不同网络环境下生成方式有所差异,并非严格固定为 6 字节(48 位)。
  2. NSAP(Network Service Access Point,网络服务接入点):由 CLNP 地址与服务端口共同组成,用于精准标识网络中的主机与路由器。其层次结构涵盖区域地址、系统标识以及选择器等关键信息,为网络通信提供了准确的定位依据。
  3. NET(Network Entity Title,网络实体标记):这是一种特殊的 NSAP,其最后一个字节固定为 0,由 RID 和区域号组成。NET 主要用于标识网络中的节点(如路由器等),并非单纯用于标识一个区域,它在区域划分与节点标识方面发挥着关键作用。

三、数据单元

  1. PDU(Protocol Data Unit,协议数据单元):它是一个通用术语,在 IS-IS 协议中,各类传输的数据包都可归为 PDU 的范畴,例如 LSP、IIH 等均是具体的 PDU 实例,就如同 IP 数据包在 IP 协议中的地位一样,是 IS-IS 网络数据传输的基本单位。
  2. LSP(Link State Protocol Data Unit,链路状态协议数据单元):主要用于在网络中传播路由信息,类似于 OSPF 的 LS Update 报文。LSP 内部包含了路由器的邻居信息、链路状态以及 metric 值等重要内容,这些信息是构建网络拓扑和计算路由的关键依据。
  3. LSPDB(LSP Database,链路状态数据库):每个路由器都会维护这样一个数据库,用于存储所有接收到的 LSP。由于各路由器的 LSPDB 保持相同,因此可基于此计算网络拓扑图,并确定最佳路径,进而构建路由表。

四、报文类型

  1. ESH(End System Hellos,终端系统 Hello ):由终端系统(主机)发送,主要用途是发现邻居,帮助主机在网络中识别周围可通信的设备。
  2. IIH(Intermediate System to Intermediate System Hello PDU,中间系统 Hello):类似于 OSPF 的 HELLO 报文,由路由器发送。它不仅用于发现邻居,还承担着协商协议参数的重要任务,例如 hello interval(Hello 间隔时间)和 dead interval(失效间隔时间)等,这些参数对于维持稳定的邻居关系和网络运行至关重要。
  3. PSNP(Partial Sequence Number Protocol Data Unit,部分序列号协议数据单元):类似于 OSPF 的 ACK/Request 报文,主要作用是确认接收到的 LSP,并用于同步 LSP 数据库。通过 PSNP,路由器能够确保自身与邻居之间 LSP 信息的一致性,及时发现并请求缺失的 LSP。
  4. CSNP(Complete Sequence Numbers Protocol Data Unit,完整序列号协议数据单元):类似于 OSPF 的 DBD 报文,其主要功能是发送 LSP 摘要列表,帮助邻居发现丢失的 LSP 或者同步 LSPDB。邻居路由器通过对比 CSNP 中的摘要信息,可判断自身 LSP 数据库是否完整,进而采取相应的同步措施。

五、其他重要要点

  1. DIS 的选举:在广播型网络中,DIS 的选举基于优先级和 MAC 地址。首先比较优先级,优先级高的路由器成为 DIS;若优先级相同,则比较 MAC 地址,MAC 地址大的路由器当选。需牢记优先级为 0 时不参与选举,且点对点网络不存在 DIS 选举。
  2. LSP 的刷新:LSP 拥有生存时间(TTL)机制,当 LSP 的生存时间到期时,路由器会重新生成并广播 LSP,以此确保网络中的路由信息始终保持更新,维持网络的正常路由功能。
  3. IS-IS 的层次结构:IS-IS 支持两级层次结构,即 Level - 1 和 Level - 2。Level - 1 路由器主要负责同一区域内的路由工作,处理区域内部的数据包转发;Level - 2 路由器则承担不同区域之间的路由职责,实现区域间的通信连接。

IS-IS 地址编码方式

IS - IS 地址采用可变长区域空间编码方式,其 NSAP 格式包含以下部分:

  1. Area Address:由 AFI、IDI 以及 DSP 的一部分构成,用于标识组织结构。

  2. System ID:长度为 6 字节,在整个区域及主干(Level2)范围内必须保持唯一,以此唯一标识主机或路由器。

  3. NSAP - Selector(NSAP 标识):用于指定选定的服务,类似 TCP/IP 地址中的端口号,对于 NET 地址,其值为 00 。

一个中间系统至少拥有一个 NET(最多可达 254 个),且这些 NET 的 SysID 需相同,可通过 max - area - addresses xx 命令更改。同一中间系统在一个区域内,其 AREA ID 必须相同;在一个 domain 中,两个 Level - 2 中间系统不能具有相同的 SysID 。

在 Cisco 路由器上,NSAP 的长度至少为 8 字节,最多为 20 字节。对于 IP 应用程序,1 字节用于定义 AFI(标识二进制 DSP 语法的地址域),至少 2 字节用于定义实际区域信息,6 字节用于定义 SysID,1 字节用于定义 NSEL,因此 NSAP 地址最少为 10 字节。

IS - IS 允许将整个路由域划分为多个区域,配置不同的区域 ID 有助于平滑进行区域合并、分割与转换。与 OSPF 不同,IS - IS 中一个路由器必须整体归属于某一个区域。

节点及层次性

节点类型

节点分为三种,层次分为两种:

  • Level - 1 路由器:只和本区域的 L1 路由器形成邻居关系。通过与自己最近的 L - 1 - 2 路由器的 ATT BIT 生成指向此台设备默认路由作为出口路由(L1 区域类似于 OSPF 的 Stub 区域),这会造成 IS-IS 次优化路由的问题。

  • L2 路由器:有 Level2 的链路状态数据库,包含了所有区域间的路由信息。

  • Level 2:骨干 Backbone(连续的 Level2 路由器的集合);Backbone 是所有的 L2 和 L - 1 - 2 路由器组成,backbone 必须是连续(连通)的。

一个 IS-IS 网络并不一定需要有两个层次,如果只部署一个区域,可能全部是 L1 或者是 L2,推荐使用 L2,以得到比较好的扩展性。

DIS(Designated IS)

类似于 OSPF 中的 DR,在广播多路访问网络中,一台路由器会被选举成为 DIS;在点到点网络中,不需要选举 DIS。不同层次有不同层次的 DIS,选举结果可能不是同一 IS。与 OSPF 不同,它的选举是抢占式,ISIS 中不存在备份 DIS,当一个 DIS 不能工作时,直接选举另一个。DIS 发送 HELLO 数据包的时间间隔是普通路由的 1/3,可保证 DIS 失效能被快速检测到。

DIS 的作用
  1. 在广播子网中创建并向所有路由器通告伪节点 LSP。
  2. 在 LAN 中通过每 10s 周期性地发送 CSNP 来泛洪 LSP。
DIS 的选举规则
  1. 选举基于接口优先级(Cisco 默认 64)。
  2. 如果接口优先级都一样,具有最大 SNAP(Subnetwork point of attachment)的路由器将当选 DIS。在 LAN 中,SNPA 指的是 MAC 地址;在帧中继网络中,SNPA 是 local data link connection identifier(DLCI)。DIS 的选举是抢占式的,没有规定不能参与选举的机制。

伪节点(Pseudonode)

伪节点是在广播多路访问网路中的一台虚拟路由,由 DIS 创建。DIS 在伪节点 LSP 中通告 LAN 中的所有邻居,LAN 中的所有路由在它们的 LSP 中通告自己与伪节点的连接性。DIS 到其他所有路由器的 metric 的值都为 0。

伪节点的作用
  1. 减少路由器 LSP 的大小。
  2. 使路由器 LSP 更稳定。
  3. 使 SPF 计算更快。

邻接体

路由器在交互协议报文实现路由器功能之前必须首先建立邻接关系。在不同类型的网络上,ISIS 的邻接方式建立并不相同。目前 ISIS 支持两种不同的网络:

  1. 点到点
  2. 广播网路

ISIS 邻居关系建立的基本原则

  1. 如果建立 L1 的邻居关系,则他们的 AID 必须相同。
  2. 如果建立 L2 的邻居关系,则他们的 AID 可以不相同。
  3. 两台 L1 - 2 会互相建立 L1 和 L2 的邻居关系。

ISIS 使用的链路

  • 点到点的链路(PPP,HDLC)
  • 广播网链路(Broadcast Links):Ethernet
  • NBMA:Frame - Relay,ATM 等。

IS-IS PDU

ISIS 报文直接封装在数据链路帧中,没有 CLNS 或者 IP 报文头,分为:Hello PDU、LSP、CSNP、PSNP。

IS-IS PDU 封装形式

  • 数据链路层头:OSI Family 0xFEFE
  • IS-IS 固定报文头(0x83)
  • IS-IS TLVs (Type 、Length、Value)

路由器启用 IS-IS 配置步骤

  1. router isis
  2. 配置 net 地址,net 地址一般分为:AFI + IDI + SysID + NSEL,长度范围为 8 - 20bytes。
  3. 在接口下宣告路由:ip router isis

查看 IS-IS 相关信息的命令

  • show isis database:查看 ISIS 的数据库
  • show isis topology:查看拓扑表
  • show ip route:查看路由表
  • show isis neighbors:查看邻居关系(不显示邻居接口优先级)
  • show clns is - neighbors:查看接口优先级

思科默认路由器类型是 L1 - 2 的。查看 ISIS 数据库时,路由条目有星号,代表这条路由是本地路由器产生的;如果 LSPID 路由 hostname 后的数字为非零,代表是由伪节点产生的路由。

ISIS 邻接关系建立的基本条件

  • 只有同一层次的相邻路由器才有可能成为邻接体。
  • 对于 L1 路由器来说要求区域号一致。
  • 同一网段检查(Cisco 不检查)
  • MTU 隐含检查(Cisco 不检查)

这点建立邻接关系的条件比 OSPF 要求宽松。

IIH PDU

Hello 数据单元,定期发送,用来确定相邻的其他系统是否在运行 ISIS,以建立邻接关系、交换 LSP、达到 LSDB 的同步。在 ISIS 里面有三种 HELLO 包:

  1. 点到点 HELLO PDU
  2. Level - 1 HELLO PDU
  3. Level - 2 HELLO PDU

可通过 show isis hostname 来查看 hostname 与 SysID 之间的映射关系。

Overload bit

当 ISIS 路由器内存不够,不能装载过多的 LSDB 时设置过载位,用来表明自己只有不完整的 LSDB,因此警告别的 IS 路由器,不能相信自己传输的路由信息。当别的路由器收到它时,只计算设置过载位的路由器的直接连接的路由信息,而不计算通过它得到的路由信息。

手工设置过载位的命令为:set - overload - bit

还有一条命令:set - overload - bit on - startup wait - for - bgp,参考 TCP/IP 路由技术卷一。

LSP 生存时间

LSP 剩余生存时间有 2 个重要的值,一个是最大生存时间,一个是刷新间隔。剩余生存时间值为 20 分钟,并且是从 1200s 开始倒数到 0,这点与 OSPF 不同,OSPF 是从 0 增大到 3600s。

可通过命令 max - lsp - lifetime 来设置这个时间,并且最大值为 65535s。当 lsp 的生存时间到达最大生存时间之前,该 lsp 就会被源路由器重新生成,否则直到生存时间为 0 就会被清除掉。

刷新间隔被定义为 15min(并加上 5min 中的随机抖动),这个时间可以更改:lsp - refresh - interval。如果 lsp 到生存时间都没有新的 lsp 到达,那么 ISIS 路由器丢掉 LSP 的内容,只保留 LSP Header 将 Lifetime 置 0 洪泛出去,所以收到为 0 的 lsp 路由器在 60s 后将从 lspdb 中删除此 lsp,这个叫做零寿命生存时间。

LSPID 组成

  1. 系统系统标识符:SYSID
  2. 伪节点标识符:PSN ID
  3. LSP 编号(LSP Number)

一个伪节点的链路状态数据包与一个多路访问的链路有关,并且由该链路 DIS 产生。路由器产生的常规 LSP 的 PSN ID 地址段是 0,伪节点为非 0 值。LSP 编号用于指示 LSP 片段,第一段的编号为 0,如果一条较大的 lsp 的某一段在传输中丢失,那么接收端路由器就会丢弃其他段,整个 lsp 重传。所有路由信息都被捆绑在一个 lsp 中,该 lsp 可以根据需要分成多个片段,单个 lsp 的最大长度是 1492 字节(还有 8 字节的 ISIS 包头)。

CSNP(完整序列号协议数据单元)

分为两种:L1 CSNP;L2 CSNP。CSNP 用于数据库同步,描述数据库 LSDB 中的所有 LSP,包含地址范围,各 LSP 的简要信息:LSPid、SequenceNumber、Checksum、remainning lifetime。

发送时机

  • 在广播网络上,由 DIS 定期发送(缺省 10s 的周期)。
  • 在点到点串行线路上,只在第一次邻接时发送 CSNP。

如果路由器的 LSDB 非常大,将分成多个 CSNP 进行发送。

PSNP(部分序列号协议数据单元)

分为两种:L1 PSNP、L2 PSNP。PSNP 用于数据库同步,主要有以下功能:

  1. 在点到点链路上路由器用来相互交换作为 Ack 应答以确认收到的某个 LSP。
  2. 用来请求发送最新的 LSP,当路由器从近邻接收到 CSNP 时,注意到 CSNP 丢失了部分数据库(或者自己的比较久),路由器发送 PSNP 请求新## 路由泄漏

原限制情况

RFC1195 中规定的集成型 ISIS 只将 L1 的 Area 当做类似 OSPF 的 Stub 区域,L2 中的路由不能发布到 L1 中去。L1 路由器只能选择最近的 L1 - 2 路由器作为本区域所有流量的出口(根据设置的 ATT bit 产生默认路由),这显然很容易造成次优化路由问题。

路由渗透解决方法

RFC2966 中定义了路由渗透,可以将 L2 的 IP 路由引入到 L1 中去,这样可以允许 L1 路由器对某些或全部的 L2 路由选择出区域的最佳路径。命令如下:

redistribute isis ip level - 2 into level - 1 distribute - list <100 - 199>

注:必须使用扩展的 ACL。可以通过 ACL 去选择哪些路由泄漏到 L1 中,同理也可以调用 route - map。此时在 Level - 1 区域内的路由器发现有一个标识为 ia(IS - IS inter area)代表 ISIS 域间路由。

防止路由环路

此时可能会造成路由环路问题,可以通过 up/down bit 位来预防环路的发生。一个 L1 - 2 路由器应该手工设置 L1 区域中可达前缀的聚合,这些聚合路由被注入到 L2 区域中。设置了 up/down bit 的前缀永远不会被 L - 1 - 2 路由器通告到 L2。

SysID

  • 长度为 1 - 8 字节(通常 6 字节),用十六进制表示,没有符号名字直观。

动态主机名 TLV

  • 动态主机名 TLV 是可选的。
  • 这个 TLV 可以出现在一个非伪节点 LSP 的任何分段中。
  • Value 字段的内容是产生这个 LSP 的路由器的名字,这个路由器的 SysID 可以从 LSP 的标识符中获得。

数据库交换过程(flooding)

为何进行数据库交换

  1. 所有的路由器都产生 LSP。
  2. 所有的 LSP 都要复制并发送到网络中的所有其他路由器,如果数据库不同步的话,路由计算就可能错误,可能引起路由环路。
  3. ISIS 实际由 SPF 计算和可靠的 flooding 两个最重要的部分组成。

何时产生新的 LSP

  1. 邻接关系建立起来或 down 掉。
  2. ISIS 相关接口的 UP/down。
  3. 引入的 IP 路由发生变化。
  4. 区域间的 IP 路由发生变化。
  5. 接口被赋了新的 metric 值。

收到新的 LSP 的处理过程

  1. 将新的 LSP 安装到自己的 LSPDB 数据库中标记为 flooding。
  2. 发送新的 LSP 到所有邻居。
  3. 邻居再扩散到其他邻居。

广播网上数据库的交换

  1. DIS 周期性的发送 CSNP。
  2. IS 收到一个 LSP 的行为:
    • 中间系统接收到报文,在数据中搜索对应的记录。若记录不存在,则将其加入数据库,并广播新数据库内容。
    • 否则,若数据库中的序列号小于报文中序列号,就替换为新报文,并广播新数据库内容。
    • 否则,若数据库中序列号较大,就向入端口发送一个包含本地数据库值的新报文。
    • 否则,若两个序列号相等,则不做任何事情。

P2P 链路上数据库的交换

  1. 如果收到 LSP 比已有的序列号大,则将这个新的 LSP 存入自己的 LSDB 中,再通过一个 PSNP 报文来确认收到此 LSP,最后将这个新 LSP 再接收再发送到所有其他邻居。
  2. 如果收到的 LSP 和已有的具体相同的序列号,则直接通过一个 PSNP 报文确认收到此 LSP。
  3. 如果收到的 LSP 比已有的序列号更小,则通过一个 PSNP 报文确认此 LSP,再发送给对方本端版本的 LSP,然后等待对方给一个 PSNP 报文作为应答确认。

在点到点链路上当邻居关系 up 的一瞬间会发送一次 CSNP,然后就不再发送了。在 P2P 网络中如果对方收到 LSP 后 5s 之内没有收到对此 LSP 的 PSNP,则本端会在 5s 之后进行重传。可以通过抓取 ISIS 邻接关系建立的过程,包括 MA 和 P2P 网络类型。

比较 OSPF 与 ISIS 协议的不同点

  1. 封装与支持协议:ISIS 协议直接在链路层上使用,报文直接封装在链路层报文中,支持 IP、OSI CLNP 多种协议;而 OSPF 封装在 IP 中,只支持 IP 协议。
  2. LSP/LSA 生存时间:ISIS 的 LSP 生存时间是 20min 往下计算到 0 来清除旧的 LSP,而 OSPF 则是从 0 到 60min 来清除更新旧的 LSA。
  3. 区域归属与 LSDB 维护:ISIS 协议中整个路由器只能全部属于一个区域,路由器的 LSDB 按 Level 来维护;而 OSPF 按接口来,一个路由器可以属于多个区域,为每个区域维护一个 LSDB 数据库。
  4. 骨干区域定义:对于骨干区域的类型定义不同,OSPF 通过特殊的 Area0 区域来定义,而 ISIS 通过连续的 L2 路由器来组成骨干区。
  5. DIS/DR 选举:ISIS 的 DIS 选举比较简单,并且是抢占式选择优先级最高的 DIS。
  6. 支持网络类型:ISIS 支持 P2P 和 Broadcast;OSPF 则支持 5 种网络类型。

ISIS 协议的优点

  1. 能支持多种网络协议。
  2. 区域能平滑地平移、分割、合并,流量不中断。
  3. 邻居之间 HELLO 和 Dead 等间隔不一定必须一样,不像 OSPF 要求那么严格,配置相对简单。
  4. 采用 TLV 方式编码,有较好的扩展性。

其他配置要点

接口 metric

ISIS 默认的接口 metric 为 10,可以通过 isis metric 进行更改(范围 0 - 63)。默认的情况下会更改所有区域的 metric,可以加上 level - 1 或者 level - 2 用来仅更改相应的 metric。

路由汇总

在 L1 路由进入 L2 的时候进行路由汇总。缺省汇总路由命令是:

summary - address 10.2.2.0 255.255.255.0 level1 - 2

此时会产生一个指向空接口的路由,以防止空路由的问题。

优化 ISIS 扩展部分

重发布

redistribute protocol [process - id] metric [metric] match [internal|external] metric - type [value] level - 1 level - 2 level - 1 - 2 route - map [map - name]

还可以重发布静态路由:

redistribute static [clns|ip] route - map [map - name]

路由汇总

  • 对于 Level - 1:重分布前缀;L2 前缀泄漏到 L1 中。
  • 对于 Level - 2:重分布前缀;重分布直连 L2 前缀(仅针对 L2 区域)。

SPF 算法

算法概述

  • 也叫 Dijkstra 算法(Shortest Path First)。
  • 目的在于计算到达网络拓扑中其它路由器的最短路径。
  • 通过计算得到的最短路径树 SPT,建立路由表(RIB)。
  • 通过顶点集和边线集的有向图的方法表示,把图命名为 G,表示 G =(N,L),N 为顶点,L 为边线集。

三张表

SPF 算法创建并维护三张表:

  1. Unknown list:开始所有节点都属于这个列表(还没考虑顶点集)。
  2. Tentative list(Candidate list):正在计算的列表,当前考虑的所有节点属于这个列表(正在考虑的顶点集),即包含去往目的地的所有路径。
  3. Path List(Known list):已经计算出最短路径的节点属于这个列表(计算好的顶点集),即去往目的地的最佳路径。

执行过程

  1. 从 tentative list 的所有路由器中找出离自己(根)最近的节点,并把它从 tentative list 移到 paths list。
  2. 发现此节点通告的所有前缀并安装到 RIB 中。
  3. 发现此节点的所有邻居并把这些邻居移动到 tentative list 中。

在 ISIS 中,IP 前缀是最短路径树上的叶子,不使用 IP 前缀来计算和建立 SPT,使用 CLNS SysID 来标记路由器。当 Tentative list 表为空的时候,所有 SPF 计算结束。

i - SPF(Incremental SPF)算法

算法原理

  • 树中不改变的部分保持原样(比如变化的链路不在某些根的最短路径树上)。
  • 重新计算树中受影响的部分。
  • 把受影响的部分和保持原样的部分整合到一起。

特点

  • 发生改变的地方离根越远,执行 i - SPF 来更新 SPF 所需的时间越短。
  • 如果发生变化的地方离执行 SPF 计算的很近,那么 i - SPF 算法不会带来太多的好处。

PRC(Partial Route Calculation)部分路由计算

如果仅仅是 IP 前缀发生改变,不需要重新建立 SPF,只需要重新把前缀安装到路由表中即可。

ISIS timer 总结

计时器名称时间说明
IIH timer for non - DIS ISs on a LAN10s非 DIS 中间系统在 LAN 上发送 IIH 的时间间隔
IIH holdtime for non - DIS ISs on a LAN30s非 DIS 中间系统在 LAN 上的 IIH 保持时间
IIH timer for the DIS on a LAN3.3sDIS 在 LAN 上发送 IIH 的时间间隔
IIH holdtime for DIS ISs on a LAN10sDIS 中间系统在 LAN 上的 IIH 保持时间
IIH timer for p2p links10s点到点链路上发送 IIH 的时间间隔
IIH holdtime on p2p links30s点到点链路上的 IIH 保持时间
CSNP timer for the DIS to keep the LSDBs sync10sDIS 为保持 LSDB 同步发送 CSNP 的时间间隔
Minimum interval between transmitting two LSPs33ms发送两个 LSP 之间的最小间隔
LSP retransmission timer while flooding5s泛洪时 LSP 重传计时器
Delay between any retransmitted LSPs100ms重传 LSP 之间的延迟
Minimum time between 2 SPF runs10s两次 SPF 运行之间的最小时间
Minimum time between regenerating one LSP5s重新生成一个 LSP 之间的最小时间
Time to keep an expired LSP in the LSDB during purge60s清除过期 LSP 时在 LSDB 中保留的时间
Periodic regeneration of LSP15mLSP 定期重新生成的时间
Maximum lifetime of an LSP20mLSP 的最大生存时间

要非常熟悉以上计时器,理解其含义和修改的命令,并且知道如何去优化这些计时器,记住一些常用到的计时器,某些可能是在路由器上修改,而某些则是在接口下进行修改。ISIS 的一些基本概念结束了,需要非常熟悉其基础知识。


IS-IS 协议详解(一)IS-IS 中的重要概念

Skye_Zheng 于 2020-03-19 21:35:14 发布

前言

与 OSPF 协议非常的相似,IS-IS 协议也是基于链路状态并使用最短路径优先算法进行路由的一种 IGP 协议。

IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统)路由协议最初是 ISO(the International Organization for Standardization,国际标准化组织)为 CLNP(Connection Less Network Protocol,无连接网络协议)设计的一种动态路由协议。现在 CLNP 网络已经基本不再别使用,但是 IS-IS 协议由于其优秀性,被保留了下来。

为了提供对 IP 路由的支持,通过对 IS-IS 进行扩充和修改,使 IS-IS 能够同时应用在 TCP/IP 和 OSI 环境中,形成了集成化 IS-IS(Integrated IS-IS 或 Dual IS-IS)。现在提到的 IS-IS 协议都是指集成化的 IS-IS 协议,主要用于城域网和承载网。

由于 IS-IS 与 OSPF 协议有许多的相同之处,但是也有一些差别,所以本文在讲解 IS-IS 时,会用 OSPF 协议来作比较。

应用场景

在这里插入图片描述

园区网特点:

  1. 应用型网络,主要面向企业网用户。

  2. 路由器数量偏少,动态路由的 LSDB 库容量相对偏少,三层路由域相对偏少。

  3. 有出口路由的概念,对内部外部路由划分敏感。

  4. 地域性跨度不大,带宽充足,链路状态协议开销对带宽占用比偏少。

  5. 路由策略和策略路由应用频繁多变,需要精细化的路由操作。

OSPF 的多路由类型(内部 / 外部),多区域类型(骨干 / 普通 / 特殊),开销规则优良(根据带宽设定),网络类型多样(最多五种类型)的特点在园区网得到了极大的发挥。

骨干网特点:

  1. 服务型网络,由 ISP(互联网服务提供商)组建,并为终端用户提供互联服务。

  2. 路由调度占据绝对统治地位,路由器数量庞大。

  3. 架构层面扁平化,要求 IGP 作为基础路由为上层 BGP 协议服务。

  4. LSDB 规模宏大,对链路收敛极度敏感,线路费用高昂。

  5. 追求简单高效,扩展性高,满足各种客户业务需求(IPV6/IPX)。

IS-IS 的快速算法(PRC 得到加强),简便报文结构(TLV),快速邻居关系建立,大容量路由传递(基于二层开销低)等一系列特点在骨干网有着天然的优势。

历史起源

原始的 IS-IS 协议主要是针对 OSI 七层模型设计的,也是就用于 CLNP 网络。但是现在我们不再使用 CLNP 网络,所有我们将 IS-IS 进行扩充和修改,使他能够被用于 IP 网络。现在我们提到的 IS-IS 都是重新设计之后的集成 IS-IS。

在这里插入图片描述

注意:IS-IS 工作在数据链路层

工作在数据链路层的好处:在网络层我们会面临各种各样的攻击手段,但是在数据链路层所遭受的攻击就会少的多。

基本术语

首先我们来了解一些 IS-IS 中的基本概念。

略语OSI 术语IETF 术语
ISIntermediate SystemRouter
ESEnd SystemHost
DISDesignated Intermediate SystemOSPF 中的 DR
SysIDSystem IDOSPF 中的 Router ID
LSPLink State PDUOSPF 中的 LSA
IIHIS-IS Hello PDUOSPF 中的 Hello 报文
PSNPPartial Sequence Number PDUOSPF 中的 LSR 或 LSAck 报文
CSNPComplete Sequence Number PDUOSPF 中的 DD 报文

解释:

  1. IS(Intermediate System,中间系统)

    IS 是指运行 IS-IS 协议的路由设备。它是 IS-IS 协议中生成路由和传播路由信息的基本单元。就是指路由器

  2. RD(Routing Domain,路由域)

    RD 是指由多个使用 IS-IS 协议的路由器所组成的范围。

  3. Area(区域)

    Area 是 IS-IS 路由域的细分单元。IS-IS 与 OSPF 一样,允许将整个路由域分为多个区域,且总体上也分为普通区域和骨干区域两类,但 IS-IS 的普通区域必须与骨干区域直接连接(没有 OSPF 中的 “虚连接”),普通区域之间不能直接连接。

    Area 又可根据网络中路由器的类型划分为 Level-1 区域(全由 Level-1 路由器组成)和 Level2 区域(由 Level-2 和 Level-1-2 路由器组成)

  4. Sys ID(System ID,系统 ID)

    在 IS-IS 协议中使用 Sys ID 唯一标识一台路由器,必须保证在整个 IS-IS 路由域中每台路由器的系统 ID 都是唯一的,与 OSPF 中的路由器 ID(Router ID)一样。

  5. LSP(Link-State Packet,链路状态报文)

    LSP 是 IS-IS 网络中的设备用来通过泛洪方式向所有邻居通告自己的链路状态信息的报文,类似于 OSPF 中的 LSA(链路状态通告)。网络中每台路由器都会产生带有自己系统 ID 标识的 LSP 报文,可以通过发送 LSP 不断更新自己的链路状态信息。

  6. LSDB(Link State DataBase,链路状态数据库)

    路由器的每个区域都有一个专门存放该区域所接收的所有 LSP 报文的数据库。通过 LSP 的泛洪,最终使整个区域内的所有路由器拥有相同的 LSDB。

  7. DIS(Designated IS,指定 IS)

    在 IS-IS 广播网络类型中需要选举一个指定 IS(DIS),以便周期性地向区域内其他路由器进行区域 LSDB 数据库的泛洪(区域内的非 DIS 仅与 DIS 之间进行 LSDB 交互,非 DIS 之间不能直接进行 LSDB 交互),使整个区域中各路由器的 LSDB 同步。类似于 OSPF 中的 DR。

地址结构

由于 IS-IS 原来是为 CLNP 设计的。CLNP 网络不是使用 IP 地址来进行通信的,而是使用 NSAP 地址来进行通信。即便现在是集成 IS-IS,但是使用 NSAP 地址这项还是保留了下来。

在这里插入图片描述

NSAP 地址

NSAP 地址相较于 IP 地址复杂一些。但是我们可以对比 IP 地址来理解 NSAP 地址。

NSAP 地址由 IDP 与 DSP 组成。

IDP

IDP 相当于 IP 地址中的主网络号(网段)。它是由 ISO 规定,并由 AFI 与 IDI 两部分组成。AFI 表示地址分配机构和地址格式,IDI 用来标识域。

DSP

DSP 相当于 IP 地址中的子网号和主机地址。它由 High Order DSP、System ID 和 SEL 三个部分组成。High Order DSP 用来分割区域,System ID 用来区分主机,SEL 用来指示服务类型。

Area Address

Area Address(Area ID)由 IDP 和 DSP 中的 High Order DSP 组成,既能够标识路由域,也能够标识路由域中的区域。因此,它们一起被称为区域地址,相当于 OSPF 中的区域编号。

System ID

System ID 用来在区域内唯一标识主机或路由器。在设备的实现中,它的长度固定为 48bit(6 字节)。相当于 OSPF 中的 Router ID

SEL

SEL 的作用类似 IP 中的 “协议标识符”,不同的传输协议对应不同的 SEL。在 IP 上 SEL 均为 00。

NET

我们将支持 IP 网络的,也就是 SEL=00 的 NSAP 地址,叫做 NET

网络实体名称 NET 指的是设备本身的网络层信息,可以看作是一类特殊的 NSAP(SEL=00),NET 的长度与 NSAP 的相同,最多为 20 个字节,最少为 8 个字节。

在路由器上配置 IS-IS 时,只需要考虑 NET 即可,NSAP 可不必去关注。

注意:在配置 IS-IS 过程中,NET 最多也只能配 3 个。在配置多个 NET 时,必须保证它们的 System ID 都相同。

地址举例:

在这里插入图片描述

基本

路由器分类

在 IS-IS 中,路由器可以分为三种类型

  1. Level-1 路由器(只能创建 Level-1 的 LSDB)

  2. Level-2 路由器(只能创建 Level-2 的 LSDB)

  3. Level-1-2 路由器(路由器默认类型,能同时创建 Level-1 和 Level-2 的 LSDB)

  4. Level-1 路由器:

    L1 路由器是一个 IS-IS 普通区域内部的路由器,类似于 OSPF 网络中的普通区域内部路由器(IR),只能在非骨干区域中存在。

    L1 路由器只能与属于同一区域的 L1 和 L1/2 路由器建立 L1 邻接关系(不能与 L2 路由器建立邻接关系),交换路由信息,并维护和管理本区域内部的一个 L1 LSDB。

    L1 路由器的邻居都在同一个区域中,其 LSDB 包含本区域的路由信息以及到达同一区域中最近 L1/2 路由器(相当于 OSPF 中的 ABR)的缺省路由,但到区域外的数据需由最近的 L1/2 路由器进行转发。

    也就是说,L1 路由器只能转发区域内的报文,或者将到达其他区域的报文转发到距离它最近,且在同一区域的 L1/2 路由器。

  5. Level-2 路由器:

    L2 路由器是骨干区域中的路由器,主要用于通过与普通区域中的 L1/2 路由器(下面将介绍)连接,连接骨干区域和非骨干区域,类似于 OSPF 网络中的 BR(骨干路由器),并负责在不同区域间的通信。L2 路由器负责区域间的路由,它可以与相同或者不同区域的 L2 路由器或者不同区域的 L1/2 路由器形成邻居关系。L2 路由器维护一个 L2 的 LSDB,该 LSDB 包含区域间的路由信息。L2 路由器只可能建立 L2 的邻接关系。

    网络中的所有 L2 路由器和所有 L1/2 路由器连接在一起共同构成 IS-IS 网络的骨干网(注意,不是骨干区域),也称 L2 区域。IS-IS 中的 L2 区域不是一个特定的区域,是由连接网络中各个区域的一部分路由器组成的,但必须物理是连续。

    如下图:黄色圆圈中的路由器是 L2 路由器还是 L1 路由器,还是 L1/2 路由器?

在这里插入图片描述

答案是:L1/2 路由器。

若是 L1 路由器,则整个网络中由 L2 路由器和 L1/2 路由器形成的骨干网(粗线部分)在物理上就是断开的,不连续,最终导致的结果就是不同区域间的 L2 路由无法传递。也不可能是 L2 路由器,因为 Area 2 不是骨干区域。

不同区域间,只能建立 Level-2 的邻接关系:

  1. Level-2 路由器可以与 Level-2 路由器建立邻接关系。

  2. Level-1-2 路由器可以与 Level-2 路由器建立邻接关系。

  3. Level-1-2 路由器可以与 Level-1-2 路由器建立邻接关系。

  4. Level-1-2 路由器:

    L1/2 路由器类似于 OSPF 网络中的 ABR(区域边界路由器),用于区域间的连接,缺省所有 IS-IS 路由器都是 L1/2 类型的。

    L1/2 路由器既可以与同一普通区域的 L1 路由器以及其他 L1/2 路由器建立 L1 邻接关系,也可以与骨干区域 L2 路由器建立 L2 邻接关系。

    L1 路由器必须通过 L1/2 路由器才能与其他区域通信。

    L1/2 路由器必须维护以下两个 LSDB:L1 LSDB 用于区域内路由,L2 LSDB 用于区域间路由。但要注意的是,L1/2 路由器不一定要位于区域边界,在区域内部也有可能存在 L1/2 路由器,如上图黄色圆圈中的路由器。

网络分层路由域

在这里插入图片描述

为了支持大规模的路由网络,IS-IS 在自治系统内采用骨干区域与非骨干区域两级的分层结构。一般来说,将 Level-1 路由器部署在非骨干区域,Level-2 路由器和 Level-1-2 路由器部署在骨干区域。每一个非骨干区域都通过 Level-1-2 路由器与骨干区域相连。

在 OSPF 中,骨干区域固定为 Area 0,且非骨干区域要和骨干区域相连(没有通过物理连接的话则要进行虚连接)。但是在 IS-IS 中:

1. 可以有多个骨干区域,且区域 ID 不固定
2. 非骨干区域必须和骨干区域物理相连(通过 L1/2 路由器)
3. 非骨干区域之间不能直接连接

Level-1-2 级别的路由器可以属于不同的区域,在 Level-1 区域,维护 Level-1 的 LSDB,在 Level-2 区域,维护 Level-2 的 LSDB。

下图为多个骨干区域的拓扑:

此时有两个骨干区域:Area 1 和 Area 3。非骨干区域中的 L1/2 路由器同时与两个骨干区域的 L2 路由器连接,同时两个骨干区域之间也彼此连接(可以把它们看成一个大的虚拟骨干区域)

在这里插入图片描述

拓扑所体现的 IS-IS 与 OSPF 不同点

  • 在 OSPF 中,每个链路只属于一个区域;而在 IS-IS 中,每个链路可以属于不同的区域;

  • 在 IS-IS 中,单个区域没有物理的骨干与非骨干区域的概念;而在 OSPF 中,Area0 被定义为骨干区域;

  • 在 IS-IS 中,Level-1 和 Level-2 级别的路由器分别采用 SPF 算法,分别生成最短路径树 SPT;在 OSPF 中,只有在同一个区域内才使用 SPF 算法,区域之间的路由需要通过骨干区域来转发。

区域间路由

在这里插入图片描述

Level-1 路由器的路由特点:

只拥有 Level-1 的链路状态数据库。

其链路状态数据库中只有本区域路由器 LSP。

其路由表里没有其他区域的路由信息。

其路由表里都有一条默认路由,下一条是指向到 Level-1-2 路由器。(缺省路由,发送数据到其他区域,直接发送给 L1/2)

Level-2 路由器的路由特点:

Level-2 路由器只有 Level-2 的链路状态数据库。

其 LSDB 中有骨干区域路由器的 LSP,但是没有 Level-1 路由器产生的 LSP。

路由表里面有整个网络的路由信息。

Level-1-2 路由器的路由特点:

Level-1-2 路由器同时拥有 Level-2 和 Level-1 的链路状态数据库。

Level-1 数据库包含本区域的 LSP,Level-2 数据库包含骨干区域 LSP。

在自己产生的 Level-1 的 LSP 中设置了 ATT 比特位为 1。

路由表里面有整个网络的路由信息。

IS-IS 与 OSPF 对比

OSPF 协议可阅读本人博客。

差异性IS-ISOSPF
网络类型少 (2 种)多 (4 种)
开销方式复杂简便
区域类型少 (L1、L2 区域)多 (骨干、非骨干、特殊)
路由报文类型简单 (LSP 报文)多样 (多种 LSA 报文)
路由收敛速度很快
扩展性强 (任何路由信息都用 TVL 传递)一般
路由负载能力超强

IS-IS 协议详解(二)IS-IS 协议配置

Skye_Zheng 于 2020-03-19 22:25:37 发布

实验要求

如图所示,客户网络所有路由器路由协议要求启用 IS-IS,使全网路由可达。全部 IS-IS 进程号统一为 100,其中 RTA 在 Area49.0001 区域为 DIS,RTD 与 RTE 之间要求采用 P2P 网络类型,RTE 引入直连链路 192.168.X.X,要求 RTA 访问 Area49.0002 走最优路径。

根据上述描述,进行正确配置,使网络路由达到客户需求。

在这里插入图片描述

配置步骤

第一步

配置路由器个接口 IP 地址,以及主机 IP 地址。

第二步

将每台路由器使能 IS-IS,并进入进程 100,配置网络实体名称 NET

[RTA]
[RTA]
[RTA] isis 100
[RTA-isis-100]
[RTA-isis-100] ne
[RTA-isis-100] network-entity 49.0001.0000.
[RTA-isis-100] network-entity 49.0001.0000.0000.0001.00

第三步

将每台路由器配置 Level 级别,这里 RTA 为 Level-1 路由器。RTD、RTE 为 Level-2 路由器。

RTB、RTC 为 Level-1-2 路由器,默认情况,不需要修改。

[RTA-isis-100] is-level level-1
Info: IS Level Changed, Resetting ISIS...
[RTD-isis-100] is-level level-2
Info: IS Level Changed, Resetting ISIS...

第四步

在接口下启用 IS-IS 配置

[RTA-GigabitEthernet0/0/0]
[RTA-GigabitEthernet0/0/0] is
[RTA-GigabitEthernet0/0/0] isis en
[RTA-GigabitEthernet0/0/0] isis enable 100

第五步

修改 RTA 接口的 DIS 优先级,让 RTA 成为 DIS

[RTA-GigabitEthernet0/0/0] isis dis-priority 120 level-1

第六步

RTD 和 RTE 在接口修改网络类型

[RTE-GigabitEthernet0/0/0] isis circuit-type p2p

第七步

给 RTB 和 RTC 设置路由渗透

在 RTE 上引入直连路由

如果一个 level-1 区域有两个以上 Level-1-2 路由器,则区域内 Level-1 路由器访问其他区域会选择最近的 Level-1-2 路由器,但是计算的开销值只计算本区域内的。

如果最近的 Level-1-2 路由器在 Level-2 区域到达目的网络的开销相对比较大,实际会造成业务次优路径。在这种场景下需要做路由渗透操作,把 Level-2 区域的明细路由(包括开销)引入到 Level-1 区域,由 Level-1 路由器自行计算选择最优的路径访问跨区域网络。

[RTB-isis-100] import-route isis level-2 into level-1
[RTE-isis-100] import-route direct

验证

查看 isis 路由表:

<RTA>dis isis route
Route information for ISIS (100)
-------------------------------
ISIS (100) Level-1 Forwarding Table
-------------------------------
IPV4 Destination     IntCost    ExtCost ExitInterface   NextHop         Flags
-------------------------------------------------------------------------------
192.168.2.0/24       10         20      GE0/0/0         192.168.7.2     A/-/-/U
GE0/0/0         192.168.7.3
192.168.6.0/24       20         NULL    GE0/0/0         192.168.7.3     A/-/-/-
192.168.1.0/24       10         20      GE0/0/0         192.168.7.2     A/-/-/U
GE0/0/0         192.168.7.3
192.168.5.0/24       20         NULL    GE0/0/0         192.168.7.2     A/-/-/-
192.168.4.0/24       30         NULL    GE0/0/0         192.168.7.2     A/-/-/U
GE0/0/0         192.168.7.3
192.168.3.0/24       10         20      GE0/0/0         192.168.7.2     A/-/-/U
GE0/0/0         192.168.7.3
192.168.7.0/24       10         NULL    GE0/0/0         Direct          D/-/L/-
Flags: D-Direct, A-Added to URT, L-Advertised in LSPs, S-IGP Shortcut, U-Up/Down Bit Set

或使用 tracert 命令查看路径。


IS-IS 协议详解(三)IS-IS 路由计算过程:邻居建立、链路信息交换、路由计算

Skye_Zheng 于 2020-03-20 19:22:17 发布

路由计算过程

IS-IS 协议的路由计算过程与 OSPF 非常相似,只是在细节上有所不同。

OSPF 的路由计算过程可参考以前的文章:OSPF(一)OSPF 协议简介

  1. 邻居关系建立:

    邻居关系建立主要是通过 HELLO 包交互并协商各种参数,包括电路类型(level-1/level-2),Hold time,网络类型,支持协议,区域号,系统 ID,PDU 长度,接口 IP 等。

  2. 链路信息交换:

    与 OSPF 不同,ISIS 交互链路状态的基本载体不是 LSA(link state advertisement),而是 LSP(link state PDU);交互的过程没有 OSPF 协议那样经历了多个阶段,主要是通过 CSNP 和 PSNP 两种协议报文来同步,请求以及确认链路状态信息(承载的是链路状态信息摘要),而链路状态信息的详细拓扑和路由信息是由 LSP 报文传递。

  3. 路由计算:

    SPF 计算和 OSPF 基本一样的,但 IS-IS 算法分离了拓扑结构和 IP 网段,加快了网络收敛速度。

这里主要介绍一下不同之处,详细内容请看下文。

在这里插入图片描述

邻居关系

IS-IS 目前只支持点对点(P2P)和广播多路访问网络(Broadcast Multiple Access)。

其他的网络中需要进行额外的配置才能支持,如:在帧中继等特殊环境下,可以通过创建子接口支持 P2P 的网络类型。

邻居 HELLO 报文

HELLO 报文的作用是邻居发现,协商参数并建立邻居关系,后期充当保活报文。

IS-IS 建立邻居关系和 OSPF 一样,通过 hello 报文的交互来完成。但是会根据场景分为三种类型的 hello 报文。

HELLO 报文在 IS-IS 中叫做:IIH(IS-IS Hello)

在 P2P 网络中

使用 P2P IIH(point to point IS-IS Hello)。但是其没有表示 DIS(虚节点)的相关字段。

在广播多路访问网络中

广播网中的 Level-1 IS-IS 使用 L1 LAN IIH(Level-1 LAN IS-IS Hello),目的组播 MAC 为:0180-c200-0014。

广播网中的 Level-2 IS-IS 使用 L2 LAN IIH(Level-2 LAN IS-IS Hello),目的组播 MAC 为:0180-c200-0015。

IIH 报文需要通过填充字段用于邻居两端协商发送报文的大小。

邻居建立关系(交互 Hello 报文的过程)

同样,在邻居建立关系的过程中,我们还是分 P2P 网络和广播多路访问网络来讲。

P2P 网络

在 P2P 网络中,路由器建立邻居关系步骤非常简单,只需要进行两次的报文交互即可(两次握手),两次握手只要路由器收到对端发来的 Hello 报文,就单方面宣布邻居为 up 状态,建立邻居关系,不过容易存在单通风险。

在 RFC3373 中,P2P 采用了三次握手的方式。通过三次发送 P2P 的 IS-IS Hello PDU 最终建立起邻居关系,与广播链路邻居关系的建立情况相同。

在这里插入图片描述

广播多路访问网络

在广播链路上,使用 LAN IIH 报文执行三次握手建立邻居关系。

如下图:RTA 发送 IIH 报文,报文中包含自己的系统 ID,邻居状态为:null(不知道邻居是谁),RTB 接收到了报文之后,发现 RTA 发送过来的报文里面没有自己的系统 ID,RTB 进入 initialized(初始化状态),然后给 RTA 发送自己 IIH 报文,里面包含了自己的系统 ID,并宣告邻居是 RTA,RTA 收到之后进入 UP 状态,并回复 IIH 报文,RTB 收到之后进入 UP 状态,此时邻居关系建立完成。然后进行 DIS 选举。

只有收到邻居发过来的 Hello PDU 有自己的 system ID 才会 up,排除了链路单通的风险。

在这里插入图片描述

DIS

DIS(Designated IS):指定中间系统。又叫虚节点

伪节点是指在广播网络中由 DIS 创建的虚拟路由器。

广播网络中邻居 up 后会选举 DIS (虚节点),DIS 的功能类似 OSPF 的 DR (指定路由器)。

OSPF 中 DR 的选举可参考

  • DR 与 BDR 选举
    https://blog.csdn.net/qq_46254436/article/details/104842367

在这里插入图片描述

在广播网络,需要选举 DIS,所以在邻居关系建立后,路由器会等待两个 Hello 报文间隔再进行 DIS 的选举。

选举依据

Hello 报文中包含 Priority 字段,Priority 值最大的将被选举为该广播网的 DIS。若优先级相同,接口 MAC 地址较大的被选举为 DIS。

IS-IS 中 DIS 发送 Hello 时间间隔默认为 10/3 秒,而其他非 DIS 路由器发送 Hello 间隔为 10 秒。

DIS 与 OSPF 中 DR 对比

类比点ISIS-DISOSPF-DR
选举优先级所有优先级都参与选举0 优先级不参与选举
选举等待时间2 个 Hello 报文间隔40s
备份有(BDR)
邻接关系所有路由器互相都是邻接关系DRother 之间是 2-way 关系
抢占性会抢占不会抢占
作用周期发送 CSNP,保障 MA 网络 LSDB 同步主要为了减少 LSA 泛洪

注意:

选举等待时间:DIS 选举时间只有两个 HELLO 报文间隔,时间短,所以不需要备份。而 OSPF 的 DR 选举间隔为 40S,时间长,重新选举造成网络瘫痪时间多长,所以有 BDR 的存在。

链路状态信息的载体

在这里插入图片描述

ISIS TLV:

TLV 实际上是一个数据结构,这个结构包含了这三个字段:

类型(TYPE),长度(LENGTH),值(VALUE)

许多报文都采用 TLV,使用 TLV 结构构建报文的好处是灵活性和扩展性好。采用 TLV 使得报文的整体结构固定,增加新特点只需要增加新 TLV 即可。不需要改变整个报文的整体结构。

网络拓扑结构和路由信息用 TLV 结构表现使得报文的灵活性和扩展性得到了极大的发挥。

IS-IS 中链路状态信息的载体分为两类:

  1. LSP PDU(Link State Protocol PDU,链路状态协议 PDU):(PDU 就是报文的意思)

LSP 类似于 OSPF 的 LSA,承载的是完整链路状态信息,包含了拓扑结构和网络号。

Level-1 LSP 由 Level-1 路由器传送。

Level-2 LSP 由 Level-2 路由器传送。

Level-1-2 路由器则可传送以上两种 LSP。

LSP 报文中包含了两个重要字段是 ATT 字段、IS-Type 字段:

其中 ATT 字段用于标识该路由是 L1/L2 路由器发送的,IS-Type 用来指明生成此 LSP 的 IS-IS 类型是 Level-1 还是 Level-2 IS-IS。

LSP 的刷新间隔为 15 分钟;老化时间为 20 分钟。但是一条 LSP 的老化除了要等待 20 分钟外,还要等待 60 秒的零老化时延;LSP 重传时间为 5 秒。

LSP 报文分为两种:

实节点 LSP
伪节点 LSP(只在广播链路存在,DIS 发出)

  1. SNP PDU(Sequence Number PDU,序列号 PDU)

SNP PDU 用于维护 LSDB 的完整与同步,报文里包含的是摘要信息(与 LSP 的完整信息对应)

SNP 报文中又分两种:

CSNP(Complete Sequence Number PDU) 包括 LSDB 中所有 LSP 的摘要信息,从而可以在相邻路由器间保持 LSDB 的同步。
CSNP 可理解为 OSPF 中的 DD 报文,传递的是 LSDB 里所有的链路信息摘要

lPSNP(Partial Sequence Number PDU) 包含部分 LSDB 中的 LSP 摘要信息,能够对 LSP 进行请求和确认。
PSNP 类似于 OSPF 的 LSR 或 LSAck 报文用于请求和确认部分链路信息。

注意:以上协议报文都分为 Level-1、Level-2 两种,在 MA 网络中所有协议报文的目的 MAC 都是组地址:

Level-1 地址:0180-c200-0014
Level-2 地址:0180-c200-0015

链路状态信息的交互

可以结合 OSPF 链路状态信息的交互来理解。

  • OSPF 协议简介
    https://blog.csdn.net/qq_46254436/article/details/104839585

P2P 网络信息交互

在这里插入图片描述

如上图 P2P 网络 LSDB 同步过程:

举例说明步骤:

A、B 两个图书馆(RTA、RTB)建立了友好的合作关系(建立邻居),两个图书管商量着合作,A 图书馆历史书较多,B 图书馆小说较多。两家想要互相补充一下各自所缺的书籍。这时,A 图书馆首先发送给 B 图书馆一份书籍清单,清单上包含了 A 图书馆所有的书籍名称(CSNP:摘要信息),告诉 B,我图书馆所有的书都在这份清单上,你没有的向我拿我再给你寄过来实体书。图书馆 B 收到之后,列出了 B 没有的书,然后发送请求告诉图书馆 A 这些书是我没有的(PSNP:请求)。图书馆 A 知道之后,就按照 B 发送过来的清单拿来实体书,然后打包发送给图书馆 B(LSP:全部信息),图书馆 B 收到实体书之后,非常的开心,发送了一份感谢信给图书馆 A(PSNP:确认),但是由于某些原因,感谢信丢失了。图书馆 A 没有收到。过了一段时间之后(LSP 重传定时器超时),图书馆 A 认为 B 没有收到 A 送出去的实体书,出于担心,A 又重新寄了一份实体书过去(重新发送 LSP),图书馆 B 又收到了一份实体书,再次很感谢,这时他也明白了上次的感谢信 A 应该是没有收到,于是重新发送了一份感谢信给 A(重传 PSNP:确认)

对应的 OSPF 中也可拿这个举例,原理不变,只是报文变了一下而已

正经步骤:

建立邻居关系之后,RTA 与 RTB 会先发送 CSNP 给对端设备。如果对端的 LSDB 与 CSNP 没有同步,则发送 PSNP 请求索取相应的 LSP。

假定 RTB 向 RTA 索取相应的 LSP,此时向 RTA 发送 PSNP。RTA 发送 RTB 请求的 LSP 的同时启动 LSP 重传定时器,并等待 RTB 发送 PSNP 作为收到 LSP 的确认。

如果在接口 LSP 重传定时器超时后,RTA 还没有收到 RTB 发送的 PSNP 报文作为应答,则重新发送该 LSP 直至收到 RTB 的 PSNP 报文作为确认。

注意:P2P 网络 CSNP 报文只发送一次,邻居建立之后就立刻发送。

MA 网络信息交互

在这里插入图片描述

MA 网络中新加入的路由器与 DIS 的 LSDB 同步交互过程:

举例说明步骤

A、B 图书馆的合作越来越大,并确立了以图书馆 B 为老大的联盟(DIS)老大负责维护发送书籍清单等任务,这时 C 图书馆也加入了进来(MA 网络)。这时图书馆 A 和 B 的图书数据库已经同步(LSDB 同步),图书馆 C 加进来之后,为了表达诚意,直接给老成员 A 和 B 送了自己独有的实体书(LSP),老大 B 收到了书之后,将书籍加入到联盟的图书数据库中(将 RTC 的 LSP 信息加入到 LSDB 中),然后围为了联盟的共同稳定发展,老大定期(10s)在联盟内部发送书籍清单(CSNP),来保证三家图书馆的书籍都是全的。由于图书馆 C 是刚加入进来的,他还没有 A、B 的书籍,当收到老大 B 发送的书籍清单之后(CSNP),C 看了清单,列举了 C 没有的书籍,然后给老大发送请求(PSNP),老大知道了之后,就给 C 寄出实体书籍(LSP:注意:这里的是伪节点 LSP)

正经步骤

假设新加入的路由器 RTC 已经与 RTB(DIS)和 RTA 建立了邻居关系。

建立邻居关系之后,RTC 将自己的 LSP 发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻居都将收到该 LSP。

该网段中的 DIS 会把收到 RTC 的 LSP 加入到 LSDB 中,并等待 CSNP 报文定时器超时 (DIS 每隔 10 秒发送 CSNP 报文) 并发送 CSNP 报文,进行该网络内的 LSDB 同步。

RTC 收到 DIS 发来的 CSNP 报文,对比自己的 LSDB 数据库,然后向 DIS 发送 PSNP 报文请求自己没有的 LSP(如 RTA 和 RTB 的 LSP 就没有)。

RTB 作为 DIS 收到该 PSNP 报文请求后向 RTC 发送对应的 LSP 进行 LSDB 的同步。

注意:lMA 网络 CSNP 报文只由 DIS 组播发送,时间默认为 10 秒。

路由算法

IS-IS 的计算特点:

在本区域内路由器第一次启动的时候执行的是 Full-SPF 算法。

后续收到的 LSP 更新,如果是部分拓扑的变化执行的 iSPF 计算。

如果只是路由信息的变化,执行的就是 PRC 计算。

由于采用拓扑与网络分离的算法,路由收敛速度得到了加强。

ISIS 路由计算的开销方式:

Narrow 模式(设备默认模式开销都是 10,手工配置接口开销取值范围为 1~63)。

Wide 模式(设备默认模式开销都是 10,手工配置接口开销取值范围是 1~16777215)。

进程下加入 auto-cost enable 命令,Narrow 模式和 Wide 模式都会参考接口带宽大小计算开销值,只 是参考准则有少许差异。


via:

  • 深入理解ISIS路由协议-CSDN博客 sinat_27298703 于 2015-06-25 01:44:27 发布
    https://blog.csdn.net/sinat_27298703/article/details/46630509

  • IS-IS 协议详解(一)IS-IS 中的重要概念 - CSDN 博客
    https://blog.csdn.net/qq_46254436/article/details/104844159

  • IS-IS 协议详解(二)IS-IS 协议配置_规划 rta 和 rtb 为 level-1 路由器,rtd 为 level-2 路由器,rtc 作为 level-1-2-CSDN 博客
    https://blog.csdn.net/qq_46254436/article/details/104902542

  • IS-IS 协议详解(三)IS-IS 路由计算过程:邻居建立、链路信息交换、路由计算 - CSDN 博客
    https://blog.csdn.net/qq_46254436/article/details/104900367


http://www.kler.cn/a/522836.html

相关文章:

  • 护眼好帮手:Windows显示器调节工具
  • 团体程序设计天梯赛-练习集——L1-022 奇偶分家
  • cent6.6安装rabbitmq
  • Highcharts 柱形图:深入解析与最佳实践
  • 【creo】CREO配置快捷键方式和默认单位
  • 【PySide6拓展】QCalendarWidget 日历控件
  • 亚马逊多店铺运营攻略!如何实现多开店铺防关联?
  • 图漾相机-ROS2-SDK-Ubuntu版本编译(新版本)
  • 基于微信小程序高校课堂教学管理系统 课堂管理系统微信小程序(源码+文档)
  • UG二开UF-常用方法
  • MacOS 如何解决无法打开 ‘xxx’,因为 Apple 无法检查其是否包含恶意软件
  • PhotoShop中JSX编辑器安装
  • 机器学习day4
  • Linux 学习笔记__Day2
  • 深入理解三高架构:高可用性、高性能、高扩展性的最佳实践
  • 刷题记录 贪心算法-3:376. 摆动序列
  • 【数据结构】(1)集合类的认识
  • 关于使用PHP时WordPress排错——“这意味着您在wp-config.php文件中指定的用户名和密码信息不正确”的解决办法
  • LLM - 大模型 ScallingLaws 的指导模型设计与实验环境(PLM) 教程(4)
  • php twig模板引擎详细使用教程
  • Electron学习笔记,安装环境(1)
  • Agnostiq:揭示LLM的记忆与推理机制
  • Vue3组件库开发指南:从0到1实现
  • 简单的停车场管理系统的C语言实现示例
  • Bandicam录屏软件安装步骤与百度网盘链接
  • CVE-2023-38831 漏洞复现:win10 压缩包挂马攻击剖析