简介

IS-IS,中文全称:中间系统到中间系统,是一种开放的标准路由协议,ISO 发布了该标准,将数据报作为其 OSI 堆栈的一部分进行路由,IETF 后来重新发布了该标准,并添加了 IP 路由支持。

IS-IS 和 OSPF 之间有很多相似之处:

  • 两者都是链路状态路由协议,这意味着它们都构建了网络的“地图”。
  • 它们都通过网络泛洪链路状态数据,并构建链路状态数据库(LSDB)。
  • 此外,他们都在 LSDB 上运行Diikjastra算法来计算最短路径。

那么,如果它像 OSPF,为什么要使用它呢?为什么不改用 OSPF?

IS-IS 有两个巨大的优势:

首先是它的可扩展性,使用 IS-IS 构建大型网络比使用 OSPF 容易得多,这使其成为服务提供商为其基础设施提供的常见选择。

第二个优势是它对其携带的数据采取不可知论的方法,IS-IS 携带可达性数据的有效载荷,但在大多数情况下,它并不关心有效载荷中的内容,这就是它对 FabricPath 等协议有用的原因,相比之下,OSPF 只承载 IP 路由。当 IPv6 出现时,它需要一个全新版本的 OSPF (OSPFv3) 来承载 IPv6 路由,IS-IS 中没有这样的问题。

术语

由于 IS-IS 的历史是在 OSI 堆栈中,因此某些组件与我们在 TCP/IP 世界中习惯的有些不同,我们来看一下IS-IS相关的术语:

IS 是一个 中间系统,这是路由器的 ISO 名称,以及 IS-IS 的名称,它是中间系统或路由器之间的通信。

ES 是一个 端系统,这是网络上的设备,例如服务器或工作站,在原始规范中,ES 将参与 IS-IS,它不需要 DHCP 或 FHRP,因为它已经有一个本地路由表。

CLNS (无连接网络服务)是 OSI 堆栈中的网络服务, CLNP (无连接网络协议)是实现 CLNS 的协议,如果您更熟悉 TCP/IP,这会感觉不寻常,TCP/IP 并没有以这种方式将服务和协议分开,随着时间的推移,这将更有意义。

NSAP 是一个 网络服务接入点,这是第 3 层地址,用于 CLNS 数据包,这就像 TCP/IP 堆栈中的 IP 地址,IS-IS 使用 NSAP 地址进行通信,而不是 IP 地址。

什么是IS-IS中间系统到中间系统?网工、运维必看_链路

TLV

TLV 中文全称: 类型长度值,是 IS-IS 中的有效载荷字段,TLV 字段携带路由信息,IS-IS 不关心这些字段中的内容,这使得它与协议无关,这有点像集装箱;这艘船不在乎集装箱里有什么。

什么是IS-IS中间系统到中间系统?网工、运维必看_链路_02

IS-IS 使用 CLNS 进行传输,每个路由器都有一个 NSAP 地址,用于发送和接收链路状态信息,链路状态信息可能包含几个 TLV 字段。

通常将 IP 路由信息放入 TLV 中,但是任何类型的数据都可以在那里,由接收路由器决定如何处理这些信息。

度量值

与 OSPF 一样,IS-IS 使用cost作为度量,规范说这可以是宽值窄值,Cisco 路由器仅支持宽度量,窄度量不适用于 MPLS 流量工程,宽度量使用 24 位作为链路度量,使用 32 位作为路径度量。

默认情况下,所有链接的cost均为 10,这意味着在默认实现中,跳数构成度量,网络设计者可以选择更合适的成本方案。

area

与 OSPF 一样,IS-IS 使用区域,区域可以是骨干区域,也可以是普通区域,为了支持这个概念,路由器可能是以下类型之一:

  • Level 1 – 正常区域中的路由器不连接到另一个区域
  • Level 1-2 – 连接不同区域的普通或骨干区域中的路由器
  • Level 2 – 不连接到其他区域的骨干路由器

下面的拓扑显示了具有多个区域的网络示例。

在这个拓扑中有几个有趣的点,骨干区域并不像 OSPF 中那样被限制为“区域 0”,在 IS-IS 中,任何区域号都可以作为骨干网,另外可以对主干进行分区,在此拓扑中,区域 100 和区域 200 都是主干。

另一个有趣的点是区域边界不在路由器本身上,而是区域边界 在 路由器之间,这与 OSPF 不同,其中 ABR 或 ASBR 路由器是边界。

什么是IS-IS中间系统到中间系统?网工、运维必看_网络协议_03

路由器级别

Level 1路由器将只与其他 Level 1路由器共享路由信息,这使它们成为 存根 路由器,在上面的拓扑中,区域 40 是一个 存根区域。区域内的路由是 1 级路由。

Level 2路由器只会与其他 Level 1路由器共享路由信息,这些路由器跟踪区域之间的路由信息,这是 Level 2路由。

Level 1-2 路由器很特殊,因为它们同时参与Level 1 和Level 2 路由,它们将区域连接在一起,这使它们成为使用汇总的理想场所,这些路由器为 Level 1和 Level 1路由维护一个单独的数据库。

区域可以相互连接,也可以使用专用的骨干区域进行传输,骨干网由执行 Level 1路由的路由器组成,包括 Level 1-2路由器,他们不会连接主机或 Level 1路由器。

小型网络根本不需要骨干网,它可以从只有 Level 1路由器的单个区域开始,作为替代方案,它可以是所有Level 1-2路由器,以便以后添加骨干网更容易。

域是一个完整的IS-IS的系统,这就像 BGP 中自治系统的概念。

区域间路由

要将数据包路由到区域外,Level 1路由器会将数据包发送到最近的具有 Level 2功能的路由器,无论目的地如何,始终使用最近的路由器,Level 1路由器没有足够的关于其他区域的信息来做出决定。

当数据包到达第 Level 2路由器时,它会通过骨干网转发到正确的区域,然后将其传递到该区域中的 Level 1路由器以进行本地交付。

为了优化路由,可以将路由从 Level 2数据库泄漏到 Level 1数据库中,此技术可防止区域外的次优路由,当泄漏路由时,他们添加了一个标志,这可以防止将它们通告回别处的 Level 2数据库。

在区域内路由数据包时,路由器使用路由器的 System-ID 进行传送,在区域之间路由数据包时,Area-ID 是地址。这些地址是NET Value 的一部分 。

NET值

网络实体名称,简称“NET”,是一个地址标识路由器,它由路由器的系统 ID区域地址组成,NET 是一种 NSAP 地址。

每个路由器的 NET 都是唯一的,它们的长度可以是 8 到 20 个字节,但通常只有 10 个字节。

NET 的一个示例是 ​​49.0001.1720.1600.1001.00​​,如下例所示,这表示区域 ID、系统 ID 和 NSEL 值。

什么是IS-IS中间系统到中间系统?网工、运维必看_链路_04

地址是一系列以点分隔的十六进制值,Area-ID 的长度可变,但必须至少为 1 个字节,它通常是一个三字节值,第一个字节( 在本例中为49)是 AFI或地址族标识符,对于 IS-IS,这通常设置为 49,这是私有寻址的 OSI 值,本例中的0001指的是区域 1。

System-ID 需要在区域内唯一,但在不同区域可能会重叠,将它与区域 ID 结合起来,可以使整个地址唯一,在 Cisco 的 IS-IS 实现中,System-ID 是 6 个字节。

该 NSEL 为N选择器,这在 OSI 堆栈中具有特殊含义,但对于 IS-IS,这将始终设置为零。

邻接

IS-IS 使用 协议数据单元或 PDU 进行通信,这就像 OSPF 中的数据包。

一个 IS-IS Hello PDU中,或 IIH,就像是OSPF Hello报文,路由器交换 IIH 以形成邻居关系,并共享区域地址。

IS-IS 使用多播 MAC 地址在第 2 层发送 IIH PDU,这就是为什么每个路由器只需要一个地址(NET 或 NSAP)的原因,每个接口不需要地址,这也说明接口上的IP地址与IS-IS无关。

Level 1路由器需要匹配区域 ID,此外,Level 2路由器将忽略来自 Level 1路由器的 IIH。身份验证和网络类型也必须匹配才能形成邻居。

Level 2 和Level 1-2 路由器不需要Level 2 IIH 具有相同的区域 ID

一个 链接状态PDU,或 LSP,包含路由信息,并通告给邻居。LSP 就像 OSPF 的 LSA。有两种类型的 LSP;Level 1 LSP 和 Level 2 LSP,Level 1-2路由器发送和接收这两种类型。

LSP 包含头和 TLV 字段。TLV 字段包含正在通告的信息,例如 IP 路由。额外的 TLV 包含其他数据,如邻居信息和身份验证信息。

当网络发生变化时,路由器会将 LSP 泛洪出去,其他路由器接收这些 LSP,并使用它们来构建它们的 链路状态数据库 (LSDB)。IS-IS 在这方面比 OSPF 更有效,它将多个网络组合成一个 LSP,而不是发送许多小的 LSA,这增加了 IS-IS 的可扩展性,因为网络上可以存在更多路由器而不会过度泛洪。

当 IS-IS 在广播媒体上时,一台路由器是 指定中间系统,或 DIS,DIS 会将 LSP 泛洪出去,而不是让所有路由器泛洪该段。这就像 OSPF 中的指定路由器。

路由器举行选举来选择 DIS,如果平局,则 MAC 最高的路由器获胜,DIS 使用抢占,所以如果有更高优先级的路由器出现,它将成为新的 DIS。

没有备份 DIS,这与具有 BDR 角色的 OSPF 不同。

配置

在本实验中,我们将配置 IS-IS 来承载 IP 路由。在 IS-IS实验文件 包括拓扑最初和最后的CONFIGS。

路由器 R2 会将环回接口的 IP 汇总到 /22 网络中。

拓扑如下:

什么是IS-IS中间系统到中间系统?网工、运维必看_链路_05

第一步是启用 IS-IS 进程,每个 IS-IS 区域使用一个单独的进程,在下面的示例中,系统 ID 在 NET 值中使用环回 0 的 IP 地址,这可以是任何值,但重新格式化环回 IP 会使故障排除更容易。

被动接口的使用与任何其他路由协议相同。

Cisco 路由器上的第一个 IS-IS 进程设置为级别 1-2,默认情况下,所有后续进程都是级别 1,使用​​is-type​​ 命令更改此设置 。

然后,在接口上启用 IS-IS。

[rtbs name="isis_intro-configure"]
  • ​Show clns neighbor​​ 确认邻居关系已经建立。
  • ​Show isis database​​ 显示LSDB。这是路由器可达性信息。
  • ​Show clns interface​​ 显示接口的 IS-IS 设置。
[rtbs name="isis_intro-adjacency"]

可以看到IS-IS已经学习到路由,并安装到路由表中。

[rtbs name="isis_intro-routingtable"]

在 IS-IS 进程下,可以配置汇总地址。

如果需要默认路由,则可以使用​​default-information originate​​进行通告 。

配置汇总

R2(config)#router isis 
R2(config-router)#summary-address 10.0.0.0 255.255.252.0 level-2

可以看到 R3 现在正在学习汇总地址,而不是每个单独的网络。

验证 R3 路由表

R3#show ip route isis
Gateway of last resort is not set

10.0.0.0/22 is subnetted, 1 subnets
i L2 10.0.0.0 [115/20] via 192.168.20.1, 00:03:15, GigabitEthernet0/1
172.16.0.0/32 is subnetted, 3 subnets
i L2 172.16.0.1 [115/20] via 192.168.20.1, 00:19:51, GigabitEthernet0/1
i L2 172.16.10.1 [115/10] via 192.168.20.1, 00:19:51, GigabitEthernet0/1
192.168.10.0/30 is subnetted, 1 subnets
i L2 192.168.10.0 [115/20] via 192.168.20.1, 00:19:51, GigabitEthernet0/1