什么是 IS-IS 中间系统到中间系统?网工、运维必看!
简介
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 地址。
TLV
TLV 中文全称: 类型长度值,是 IS-IS 中的有效载荷字段,TLV 字段携带路由信息,IS-IS 不关心这些字段中的内容,这使得它与协议无关,这有点像集装箱;这艘船不在乎集装箱里有什么。
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 路由器是边界。
路由器级别
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 值。
地址是一系列以点分隔的十六进制值,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 进程,每个 IS-IS 区域使用一个单独的进程,在下面的示例中,系统 ID 在 NET 值中使用环回 0 的 IP 地址,这可以是任何值,但重新格式化环回 IP 会使故障排除更容易。
被动接口的使用与任何其他路由协议相同。
Cisco 路由器上的第一个 IS-IS 进程设置为级别 1-2,默认情况下,所有后续进程都是级别 1,使用is-type
命令更改此设置 。
然后,在接口上启用 IS-IS。
Show clns neighbor
确认邻居关系已经建立。Show isis database
显示 LSDB。这是路由器可达性信息。Show clns interface
显示接口的 IS-IS 设置。
可以看到 IS-IS 已经学习到路由,并安装到路由表中。
在 IS-IS 进程下,可以配置汇总地址。
如果需要默认路由,则可以使用default-information originate
进行通告 。
配置汇总
可以看到 R3 现在正在学习汇总地址,而不是每个单独的网络。
验证 R3 路由表
版权声明: 本文为 InfoQ 作者【Ethereal】的原创文章。
原文链接:【http://xie.infoq.cn/article/71a8cc043bb043ba4f78dfc0e】。未经作者许可,禁止转载。
评论