01. 概述
IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是一种链路状态路由协议,在服务提供商网络中被广泛应用。IS-IS 与 OSPF 在许多方面非常相似,例如运行 IS-IS 的直连设备之间会通过 Hello 报文发现彼此,然后建立邻居关系,并交互链路状态信息,这些链路状态信息表现为 LSP(Link-State Packet,链路状态报文)。
每一台运行 IS-IS 的设备都会产生 LSP,设备产生的 LSP 会被泛洪到网络中适当的范围,所有的设备都将自己产生的、以及网络中泛洪的 LSP 存储在自己的 LSDB 中。IS-IS 设备基于自己的 LSDB 采用 SPF(Shortest Path First,最短路径优先)算法进行计算,最终得到 IS-IS 路由信息。另外,与 OSPF 一样,IS-IS 也支持层次化的网络架构,支持 VLSM,支持手工路由汇总等功能。
IS-IS 早期被 ISO 标准化时,是为 OSI 协议栈服务的,它是为 CLNP 设计的动态路由协议。需注意的是 OSI 与 TCP/IP 是两个不同的协议栈。
我们可以简单地将 OSI 协议栈中的 CLNP 理解为 TCP/IP 协议栈中的 IP 协议,两者实现的功能非常类似。最初的 IS-IS 是无法工作在 TCP/IP 环境中的,随着 TCP/IP 风靡全球,IETF 对 IS-IS 进行了扩展,使得它能够同时支持 IP 路由,这种 IS-IS 被称为集成 IS-IS(Integrated IS-IS) 。
由于在当今的通信网络中,TCP/IP 已经成了绝对的主流协议栈,因此如今我们所讨论的 IS-IS 几乎都指的是集成 IS-IS。
1.1 常用术语
- ISO(International Organization for Standardization,国际标准化组织):这是一个全球性质的非政府组织,成立于 1946 年,从其名称可以看出该组织的使命,即在国际上促进各领域的标准化实现。ISO 的一个广为人们所知的成果便是 ISO9000 质量体系,OSI 参考模型也是 ISO 的杰作。
- IS(Intermediate System,中间系统):指的是 OSI 中的路由器。
- IS-IS(Intermediate System to Intermediate System,中间系统到中间系统):用于在 IS 之间实现动态路由信息交互的协议。
- CLNP(Connection-Less Network Protocol,无连接网络协议):这是 OSI 的无连接网络协议,它与 TCP/IP 中的 IP 协议的功能类似。
- LSP(Link-State Packet,链路状态报文):这是 IS-IS 用于描述链路状态信息的关键数据,类似 OSPF 的 LSA。IS 将网络中的 LSP 搜集后装载到自己的 LSDB(Link State Database,链路状态数据库)中,然后基于这些 LSP 进行路由计算。LSP 分为两种:Level-1 LSP 及 Level-2 LSP
1.2 OSI 地址
在 TCP/IP 协议栈中,IP 地址用于标识网络中的设备,从而实现网络层寻址。一台设备如果存在多个接口,那么该设备便可能拥有多个 IP 地址,每个接口均可使用一个独立的 IP 地址。当然,有的时候,在一台设备的某个接口上,可能还会存在多个 IP 地址。
在 OSI 协议栈中,NSAP(Network Service Access Point,网络服务接入点) 被视为 CLNP 地址,它是一种用于在 OSI 协议栈中定位资源的地址。IP 地址只用于标识设备,而并不标识该设备的上层协议类型或服务类型,而 NSAP 地址中除了包含用于标识设备的地址信息,还包含用于标识上层协议类型或服务类型的内容,因此从这个层面上看,OSI 中的 NSAP 地址类似于 TCP/IP 中的 IP 地址与 TCP 或 UDP 端口号的组合。
一个 NSAP 地址由 IDP(Initial Domain Part,初始域部分) 和 DSP(Domain Specific Part,域指定部分) 两部分构成,而 IDP 及 DSP 这两部分又被进一步划分,如下图所示。在 NSAP 地址中,IDP 和 DSP 都是可变长的,这使得 NSAP 地址的总长度并不固定,最短为 8byte,最长则可以达到 20byte。
关于 IDP 及 DSP 中各个字段的含义,描述如下:
- AFI(Authority and Format Identifier,授权组织和格式标识符):长度为 1byte,用于标识地址分配机构。另外,该字段值同时也指定了地址的格式。一个在实验室环境中经常被使用到的 AFI 值是 49,该值表示本地管理,也即私有地址空间。
- IDI(Initial Domain Identifier,初始域标识符):该字段用于标识域(Domain),其长度是可变的。
- DSP 高位部分(High Order DSP):也就是 DSP 中的高比特位部分(在二进制数值中,最靠近左边的比特位被视为高位),该字段的长度是可变的,它用于在一个域中进一步划分区域。
- 系统 ID(System Identification):用于在一个区域内标识某台设备。在华为路由器上,系统 ID 的长度固定为 6byte,而且通常采用 16 进制格式呈现,例如
0122.a2f1.0031
。在网络部署过程中,必须保证域内设备的系统 ID 的唯一性。考虑到在以太网环境中,设备的 MAC 地址具有全局唯一性,而且正好长度也是 6byte,因此使用设备的 MAC 地址作为其系统 ID 也是一个不错的方案。 - NSEL(NSAP-Selector):长度为 1byte,用于标识上层协议类型或服务类型
在 IS-IS 中,基于路由的目的,NSAP 的 IDP 及 DSP 高位部分加在一起被称为区域地址,该地址是可变长的,最短为 1byte。对于 IS-IS 而言,区域地址就是区域 ID(Area Identification,区域标识符)
除了 NSAP 外,在 OSI 协议栈中,还有另外一种非常重要的地址 NET(Network Entity Title,网络实体名称),NET 用于在网络层标识一台设备,可以简单地看作 NSEL 为 0x00 的 NSAP。由于 NSEL 为 0x00,因此 NET 不标识任何上层协议(或服务)类型,只用于标识该设备本身。
即使在纯 TCP/IP 环境中部署 IS-IS,我们也必须为每一台准备运行 IS-IS 的设备分配 NET,否则 IS-IS 将无法正常工作。一旦网络管理员为一台设备指定了 NET,该设备便可以从 NET 中解析出区域 ID,以及设备的系统 ID。通常情况下,管理员只会为设备的一个 IS-IS 进程指定一个 NET;在一些特殊场景中,也可能会为一个 IS-IS 进程指定多个 NET,此时这些 NET 中的系统 ID 必须相同。在 IS-IS 中,系统 ID 相当于 OSPF 中的 Router-ID。
在 NET 中,区域 ID 的长度是可变的,因此 NET 的长度并不固定。
既然 NET 是可变长的,设备该如何从中识别出区域 ID 及系统 ID 呢?以 49.0001.4f3c.23ab.0001.00
这个 NET 为例,下图展示了它的结构。NET 的最后一个字节为 NSEL,它对应的值必须为 0x00,与 NSEL 相邻的 6 个字节为系统 ID,而其余的部分便是区域 ID,处于同一个区域的两台 IS-IS 设备,其 NET 中的区域 ID 必须相同,而系统 ID 则必须不同。
![](/i/l/?n=23&i=blog/1975096/202301/1975096-20230119140734922-266689287.png)
在华为路由器上,创建一个 IS-IS 进程并为该进程分配 NET 的配置如下
[Router]isis 1
[Router-isis-1]network-entity 49.ac21.32al.00e0.fc43.f212.00
在以上配置中,isis 命令用于创建 IS-IS 进程并进入该进程的配置视图,isis 命令中可指定该进程的 Process-ID,本例中所创建的 IS-IS 进程的 Process-ID 为 1。如果使用 isis 命令创建 IS-IS 进程时未指定 Process-ID,则系统会自动为该进程分配一个缺省值作为 Process-ID。
另外,在 IS-IS 进程的配置视图中,network-entity 命令用于为该进程分配 NET,在本例中我们为该进程分配的 NET 为 49.ac21.32a1.00e0.fc43.f212.00
,其中设备的系统 ID 为 00e0.fc43.f212
,该值实际上是取自该设备某个以太网接口的 MAC 地址;另外设备所属区域的区域 ID 为 49.ac21.32a1
。从以上描述可以看出,在华为路由器上部署 IS-IS 并为设备分配 NET 时,基本上只需关注区域 ID 及系统 ID 这两个信息。
02. IS-IS 的基本概念
02.01. IS-IS 的层次化设计
IS-IS 能够部署在规模非常大的运营商骨干网络中,这得益于它对层次化网络的支持。我们能够根据需要将一个 IS-IS 域(Domain)切割成多个区域,然后使用骨干路由器将这些区域连接起来。简单地说,IS-IS 采用两级分层结构:骨干网络及常规区域
IS-IS 的区域 ID 与 OSPF 是不同。对于 IS-IS 来说,其骨干网络并不像 OSPF 那样是一个唯一的、具体的区域(Area0),而是由一系列连续的 Level-2 及 Level-1-2 路由器所构成的网络范围。连续的 Level-1(含 Level-1-2)路由器构成的区域称为 Level-1 区域,例如图中的 Area 49.0001 和 Area 49.0002;而 Area 49.0003 及 Area 49.0004 则为 Level-2 区域。
当在一台设备上配置 IS-IS 时,就需要指定该设备所属的区域(区域 ID 在为该设备所分配的 NET 中体现,一个设备可以同时属于多个区域),完成上述配置后,设备的所有接口都属于该区域。对于 IS-IS 而言,两个区域的交界处却并不在设备上,而是在链路上,例如图中 Area 49.0001 与 Area 49.0004 的交界处是在 R1 与 R4 之间的互联链路上。
IS-IS 的每个 Level-1 区域必须与骨干网络直接相连,以 Area 49.0001 为例,该区域通过 Level-1-2 路由器 R1 连接到了骨干网络。
IS-IS 的 Level-1 区域与 OSPF 中的 Totally NSSA 非常类似。Level-1-2 路由器作为 Level-1 区域与骨干网络之间的桥梁,将其通过 Level-1 区域内泛洪的 Level-1 LSP 计算得出的路由以 Level-2 LSP 的形式通告给骨干网络,使得骨干网络中的路由器能够计算出到达该区域内相应网段的路由。另一方面,缺省情况下 Level-1-2 路由器并不会将其从骨干网络学习到的路由(包括到达其他区域的路由)向本地 Level-1 区域进行通告,就像 OSPF 不会向某个 Totally NSSA 下发描述区域间路由的 Type-3 LSA 一样。因此一个区域内的 Level-1 路由器仅知晓到达本区域内各个网段的路由,而对于区域外的网络,它是一无所知的,它只能通过指向本区域的 Level-1-2 路由器的默认路由来到达区域外部。IS-IS 的这个设计使得 Level-1 路由器的 LSDB 及路由表规模极大程度地减小了,从而设备的性能得到了优化。
上图展示了一个典型的 IS-IS 网络。在该网络中,R1、R2 及 R3 属于 Level-1 区域 Area 49.0001,R2 与 R1、R3 与 R1 均建立 Level-1 的邻居关系。R1 能够根据本区域内所泛洪的 Level-1 LSP 计算出本区域内的网络拓扑,以及到达本区域内各网段的路由。
而缺省时,R2 及 R3 不会将到达 Area 49.0001 区域外部的路由信息注入到该区域中,R2 及 R3 都在其向 49.0001 区域下发的 Level-1 LSP 中设置 ATT 比特位,而该区域内的 Level-1 路由器则基于该 Level-1 LSP 产生一条指向 R2 及 R3 的默认路由。因此 R1 不会学习到去往 Area 49.0002 的路由,但是它可以通过指向 R2 及 R3 的默认路由来到达 Area 49.0002 内的各个网段。与此同时,R1、R2 及 R3 是允许将外部路由引入 IS-IS 的。因此从以上所描述的特性来看,IS-IS 的常规区域的确很像 OSPF 的 Totally NSSA。
在某些场景中,可能期望 Level-1 区域内的路由器获知到达其他区域的具体路由,IS-IS 考虑到了这种需求,它允许管理员通过特定的配置,向 Level-1 区域注入到达其他区域的路由,这个特性被称为路由渗透。
2.2 IS-IS 路由器的分类
不仅仅路由器能够支持 IS-IS,许多交换机、防火墙等产品也支持 IS-IS,路由仅为代表
运行了 IS-IS 的路由器,根据其全局 Level(级别)属性的不同,可以分为两种类型,分别是 Level-1 及 Level-2。一台 IS-IS 的路由器可以是 Level-1 类型,或者是 Level-2 类型,还可以同时是 Level-1 和 Level-2 类型,对于同时为 Level-1 和 Level-2 类型的 IS-IS 路由器,我们将其称为 Level-1-2 路由器,实际上这并不是一种单独的 IS-IS 路由器类型。
Level-1 路由器
Level-1 路由器是一种 IS-IS 区域内部路由器,它只能够与同属一个区域的其他 Level-1 路由器,或者同属一个区域的 Level-1-2 路由器建立 IS-IS 邻居关系,我们将这种邻居关系称为 Level-1 邻居关系。Level-1 路由器无法与 Level-2 路由器建立邻居关系。
Level-1 路由器只维护 Level-1 的 LSDB,它能够根据 LSDB 中所包含的链路状态信息计算出区域内的网络拓扑及到达区域内各网段的最优路由。值得一提的是,Level-1 路由器必须通过 Level-1-2 路由器接入 IS-IS 骨干网络从而访问其他区域。
Level-2 路由器
Level-2 路由器可以简单地视为 IS-IS 骨干网络路由器,实际上 IS-IS 的骨干网络是由一系列连续的 Level-2 路由器(及 Level-1-2 路由器)组成的。Level-2 路由器只能与 Level-1-2 或 Level-2 路由器建立 IS-IS 邻居关系,我们将这种邻居关系称为 Level-2 邻居关系。
Level-2 路由器只维护 Level-2 的 LSDB。在一个典型的 IS-IS 网络中,Level-2 路由器通常拥有整个 IS-IS 域(包括该域内所有的 Level-1 区域及 Level-2 区域)的所有路由信息
Level-1-2 路由器
所谓的 Level-1-2 路由器是同时为 Level-1 及 Level-2 级别的路由器,它能够与同属一个区域的 Level-1、Level-1-2 路由器建立 Level-1 邻居关系,也可与 Level-2 路由器或 Level-1-2 路由器建立 Level-2 的邻居关系。
Level-1-2 路由器与 OSPF 中的 ABR 非常相似,它也是 IS-IS 骨干网络的一个组成部分。Level-1-2 路由器可以同时维护 Level-1 的 LSDB 及 Level-2 的 LSDB,这两个 LSDB 分别用于 Level-1 路由及 Level-2 路由计算。在一个典型的 IS-IS 网络中,Level-1-2 路由器通常连接着一个 Level-1 区域,也连接着骨干网络,它将作为该 Level-1 区域与其他区域实现通信的桥梁,它将在其向该 Level-1 区域下发的 Level-1 LSP 中设置 ATT 比特位,来告知区域内的 Level-1 路由器可以通过自己到达区域外部,而区域内的 Level-1 路由器则根据该 ATT 比特置位的 LSP 产生一条指向该 Level-1-2 路由器的默认路由。
在华为的路由器上配置 IS-IS 时,缺省时,路由器的全局 Level 为 Level-1-2,当然,可以通过命令修改该设备的类型。
标签:学习指南,04,Level,HCNP,区域,NET,ID,路由,路由器 From: https://www.cnblogs.com/timetosleep/p/17061402.html