IS-IS协议

1.OSI地址

在OSI协议栈中, NSAP (Network Service Access Point,网络服务接入点)被视为CLNP地址,它是一种用于在OSI协议栈中定位资源的地址。

一个 NSAP地址由IDP (Initial Domain Part,初始域部分)和DSP (Domain SpecificPart,域指定部分)两部分构成,而IDP及DSP这两部分又被进一步划分

在NSAP地址中, IDP和DSP都是可变长的,这使得NSAP地址的总长度并不固定,最短为8byte,最长则可以达到20byte.
在这里插入图片描述
关于IDP及DSP中各个字段的含义,描述如下:

AFI (Authority and Format Identifier,授权组织和格式标识符):长度为1byte,用于标识地址分配机构。另外,该字段值同时也指定了地址的格式。

IDI (Initial Domain Identifier,初始域标识符):该字段用于标识域(Domain),其长度是可变的。

DSP高位部分(High Order DSP):也就是DSP中的高比特位部分,该字段的长度是可变的,它用于在一个域中进一步划分区域。

系统ID (System Identification):用于在一个区域内标识某台设备。

NSEL (NSAP-Selector):长虔为1byte,用于标识上层协议类型或服务类型。在IS-IS中,基于路由的目的, NSAP的IDP及DSP高位部分加在一起被称为区域地址,该地址是可变长的,最短为1byte。对于IS-IS而言,区域地址就是区域ID (Area Identification,区域标识符)。
在这里插入图片描述

2.IS-IS的层次化设计

我们能够根据需要将一个IS-IS域(Domain)切割成多个区域,然后使用骨干路由器将这些区域连接起来。简单地说, IS-IS采用两级分层结构:骨干网络及常规区域。

IS-IS的区域设定是体现在设备上的,当我们在一台设备上配置IS-IS时,就需要指定该设备所属的区域(区域ID在为该设备所分配的NET中体现,一个设备可以同时属于多个区域),完成上述配置后,设备的所有接口都属于该区域。

3. 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路由器类型。

1. 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骨干网络从而访问其他区域。

2. 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区域)的所有路由信息。

3. 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路由器的默认路由。

4.度量值

IS-IS使用Cost (开销)作为路由度量值,Cost值越小,则路径(路由)越优。

与OSPF不同的是, IS-IS接口的Cost在缺省情况下并不与接口的带宽相关,无论该接口的带宽如何,缺省时其Cost值均为10.

一条IS-IS路由的Cost等于本路由器到目标网段沿途的所有出接口的Cost总和。

5.IS-IS的三张表

1.邻居表

两台相邻的IS-IS设备首先必须建立邻居关系,然后才能够开始交互LSP,IS-IS设备将直连链路上发现的邻居加载到自己的邻居表中。

2. LSDB (Link-State Database,链路状态数据库)

两台直连的IS-IS设备只有建立了邻居关系,才能够开始交互LSP。IS-IS设备将自己产生的、以及网络中所泛洪的LSP收集后存储在自己的LSDB中。

每个LSP都采用LSPID (Link-State Packet ID,链路状态报文标识)进行标识, LSPID由三部分组成:

6 byte的系统ID:产生该LSP的IS-IS路由器的系统ID。

1 byte的伪节点ID:该字段的值存在0及非0两种情况。对于普通的LSP,该字段的值总是0;对于伪节点LSP, DIS (Designated Intermediate System,指定中间系统)负责为该字段分配一个非0的值。

1 byte的分片号:如果一个LSP过大,导致始发设备需要对其进行分片,那么该设备通过为每个LSP分片设置不同的分片号来对它们进行标识及区分。同一个LSP的不同分片必须拥有相同的系统ID及伪节点ID

在这里插入图片描述
LSDB中Seq Num一列显示的是LSP的序列号,在IS-IS中, LSP序列号的概念与OSPF中LSA序列号的概念非常类似,都可以用来表示一个LSP的新旧。

3. IS-IS路由表

每台IS-IS设备都会基于自己的LSDB运行相应的算法,最终计算出最优路由。

IS-IS计算出的路由存放于IS-IS路由表中,IS-IS路由表中的路由未必最终一定被加载到设备的全局路由表中,这还取决于路由优先级等因素。

6.协议报文

与OSPF报文采用IP封装不同, IS-IS的协议报文直接采用数据链路层封装,所以IS-IS相比于OSPF少了IP层的封装,从这个层面上看,相比之下IS-IS报文的封装效率更高。

在以太网环境中, IS-IS报文载荷直接封装在以太网数据帧中。IS-IS使用了以下几种PDU (Protocol Data Unit,协议数据单元)。

1. IIH (IS-IS Hello)

IIH PDU用于建立及维护IS-IS的邻居关系。

在IS-IS中存在三种IIH PDU: Level-1 LAN IIH, Level-2 LAN IIH及P2P IIH。

其中 Level-1 LAN IIH及 Level-2 LAN IIH用于Broadcast(广播)类型的网络中,如果网络设备为Level-1设备,则它在Broadcast类型的接口上发送及侦听Level-1 LAN IIH;如果网络设备为Level-2设备,则它在Broadcast类型的接口上发送及侦听Level-2 LAN IIH;如果网络设备为Level-1-2设备,在缺省时,它在Broadcast类型的接口上发送及侦听这两种类型的LAN IH, P2P IH用于P2P类型的网络中。

2. LSP (Link-State Packet)

IS-IS使用LSP承载链路状态信息。

LSP类似OSPF中的LSA,只不过后者并非以独立报文的形式存在,必须使用LSU报文来承载,而LSP是一种独立的PDU

LSP存在Level-1 LSP及Level-2 LSP之分,具体发送哪一种LSP视IS-IS邻居关系的类型而定。

3, CSNP ( Complete Sequence Number PDU,完全序列号报文)

CSNP存在Level-1 CSNP与Level-2 CSNP之分,不同的IS-IS邻居关系交互不同类型的CSNP。

一个IS-IS设备发送的CSNP包含该设备LSDB中所有的LSP摘要。CSNP主要用于确保LSDB的同步,在这个层面上看, CSNP与OSPF的DD报文的功能相似。

CSNP中包含始发设备的LSDB中所有LSP的摘要信息,一条LSP的摘要信息包括该LSP的LSP ID、序列号、剩余生存时间以及校验和,这四个信息是LSP头部当中的关键元素。

CSNP使用LSP条目TLV来承载这些LSP摘要信息。

4. PSNP ( Partial Sequence Number PDU,部分序列号报文)

PSNP存在Level-1 PSNP与Level-2 PSNP之分,与CSNP不同, PSNP中只包含部分LSP的摘要信息(而不是全部), PSNP主要用于请求LSP更新。

另外, PSNP还用于在P2P网络中对收到的LSP进行确认,因此从这个层面看, PSNP实现了OSPF中的LSR及LSAck报文的功能。

简单地说, IS-IS PDU的报文结构主要包含3个部分:通用的头部、PDU特有的头部以及可变长部分。其中通用的头部指的所有IS-IS PDU都拥有的、相同格式的头部。除了这个头部之外,每种PDU还有自己特有的头部。另外, PDU中的可变长部分包含该PDU中非常关键的内容, IS-IS采用三元组的格式存储这些内容。实际上, IS-IS之所以拥有如此高的可扩展性正是得益于这部分功能模块的设计。

在IS-IS中, TLV( Type-Length-Value, 类型-长度-值)中的每个元素的描述如下。

类型(Type):该字段的长度为1byte,它标识了这个TLV的类型, IS-IS定义了丰富的TLV类型,不同的TLV类型用于携带不同的信息。

长度(Length):该字段的长度为1byte,它存储的数据用于指示后面的第三元(值)的长度。由于不同的TLV类型所描述的信息不同,因此信息的长短可能也有所不同,本字段指示了该TLV中值的长度。

值(Value):该字段的长度是可变的,所占用的字节数在长度字段中描述。本字段的值就是该TLV所携带的有效内容。

7.LSP

OSPF使用了多种类型的LSA来对网络的拓扑及网段信息进行描述,然而IS-IS只使用两种LSP: Level-1及Level-2 LSP,图展示了LSP的报文格式,在图中能看到IS-IS PDU通用的头部,在该头部后面便是LSP报文载荷。LSP报文载荷包含两部分,第一部分是LSP特有的头部,另一部分则是TLV。

在这里插入图片描述
LSP中的主要字段及含义如下:

字段含义
PDU长度(PDU Length)指示该PDU的总长度(单位为字节)。
剩余生存时间(Remaining Lifetime)指示该LSP的剩余存活时间(单位为秒)。
LSP标识符(LSP ID)LSP ID由三部分组成:该设备的系统ID、伪节点ID以及分片编号。
序列号(Sequence Number)该LSP的序列号。在IS-IS中, LSP序列号的作用与OSPF中LSA序列号的作用类似,主要用于区分LSP的新旧。
校验和(Checksum)校验和。
P (Partition Repair)如果设备支持区域划分修复特性,则其产生的LSP中该比特位将被设置为1。
ATT (Attached bits)也即关联位,在典型的IS-IS网络中, Level-1区域的Level-1-2路由器作为区域边界路由器被使用,它一方面连接着该Level-1区域,另一方面连接着IS-IS骨干网络。当Level-1-2路由器连接着IS-IS骨干网络时,它会在自己产生的Level-1 LSP中,将ATT比特位设置为1.
OL (Overload bit)也即过载位,通常情况下, IS-IS设备产生的LSP中该比特位被设置为0;如果该比特位被设置为1,则意味着该LSP的始发设备希望通过该比特位声明自己已经“过载”,而收到该LSP的其他IS-IS设备在进行路由计算时,只会计算到达该LSP始发设备的直连路由,而不会计算穿越该设备、到达远端目的网段的路由。
IS类型(IS Type)用于指示产生该LSP的路由器是Level-1还是Level-2类型,如果该字段的值为二进制的01,则表示Level-1路由器;如果为二进制的11,则表示Level-2路由器。

在这里插入图片描述

8.网络类型

IS-IS支持两种网络类型: Broadcast (广播)及P2P (Point-to-Point,点对点)。

1. Broadcast网络类型

(1)在Broadcast网络中, IS-IS会进行DIS的选举, DIS是一个与OSPF中的DR非常类似的概念。

(2)IS-IS在Broadcast类型的接口上使用两种IH PDU,它们分别是Level-1 LAN IH(目的MAC地址为组播地址0180-c200-0014)和Level-2 LAN IH (目的MAC地址为组播地址0180-c200-0015),具体使用哪种PDU,取决于设备接口的Level (级别)。

如果设备接口的Level为Level-1,那么设备将在该接口上发送及侦听Level-1 LAN IIH

如果设备接口的Level为Level-2,那么设备将在该接口上发送及侦听Level-2 LAN IIH

如果设备接口的Level为Level-1-2,那么设备将在该接口上发送及侦听Level-1 LAN IIH以及Level-2 LAN IIH

3)在Broadcast类型的网络中, DIS会周期性地泛洪CSNP,以确保该网络中的IS-IS设备拥有一致的LSDB. CSNP中包含该DIS的LSDB中所有LSP的摘要信息。

CSNP使用LSP条目TLV来承载这些LSP摘要。同一个Broadcast网络中的其他IS-IS设备收到该CSNP后,将其中包含的LSP摘要与本地LSDB进行对比,如果发现两者一致,则忽略该CSNP;如果发现本地LSDB中缺少了某条或某些LSP,则向DIS发送PSNP来请求这些LSP的完整信息(PSNP也使用LSP条目TLV来承载这些被请求的LSP的摘要信息)。而后者收到该PSNP后,从该PSNP的LSP条目TLV中解析出被请求的LSP,然后将相应的LSP发送给对方。收到该LSP的一方将该LSP更新到自己的LSDB中,并且无需向LSP发送方进行确认(这点与P2P网络类型中的相关操作不同)。

2. P2P 网络类型

(1)IS-IS在P2P网络无需选举DIS.

(2) IS-IS在P2P网络中使用P2P IH发现及维护IS-IS邻居关系。缺省时, Hello报文的发送间隔为10秒。

(3)在P2P网络中,当IS-IS设备之间完成邻居关系建立后,便开始交互LSP,设备从邻居收到LSP后,需使用PSNP进行确认,以便告知对方自己已经收到了该LSP。

在P2P网络中, LSP的更新采用的是一种可靠的方式。如果一段时间后,对方没有收到用于确认的PSNP,则它会对LSP进行重传。

另外, CSNP只在邻居关系建立完成后,双方进行一次交互,此后不会周期性地发送。IS-IS设备收到邻居发送的CSNP后,将其中包含的LSP摘要与本地LSDB进行对比,如果发现两者一致,则忽略该CSNP;如果发现本地LSDB中缺少了某条或某些LSP,则向该邻居发送PSNP来请求这些LSP的完整信息。

3. IS-IS在NBMA网络中的部署

当面对这种场景时,我们需要在中心设备上使用子接口(必须为P2P类型的子接口)接入NBMA网络,然后在子接口中激活IS-IS

9.DIS与伪节点

当IS-IS在Broadcast类型的接口(例如以太网接口)上运行时,它会在该接口所连接的LAN中选举DIS (Designated Intermediate System,指定中间系统),DIS是一个与OSPF中的DR颇为相似的概念,它主要用于在LAN中虚拟出一个伪节点(Pseudonodes),并产生伪节点LSP

伪节点并非一台真实的物理设备,它是DIS所产生的一台虚拟设备。设备仅需在其泛洪的LSP中描述自己与伪节点的邻居关系,无需再描述自己与其他非伪节点的邻居关系。伪节点LSP用于描述伪节点与LAN中所有设备(包括DIS)的邻居关系,从而区域内的其他IS-IS设备能够根据伪节点LSP计算出该LAN内的拓扑。

DIS负责产生伪节点LSP。伪节点LSP的功能与OSPF中的Type-2 LSA的功能非常相似。伪节点及伪节点LSP的引入减小了网络中所泛洪的LSP的体积,另外,当拓扑发生变更时,网络中需要泛洪的LSP数量也减少了,对设备造成的负担自然也就相应减小了。

为了确保LSDB的同步, DIS会在LAN内周期性地泛洪CSNP, LAN中的其他设备收到该CSNP后,会执行一致性检查,以确保本地LSDB与DIS同步。

假设R4的GEO/0/0接口在直连的LAN中被选举为DIS,那么R4将在该LAN中产,生一个伪节点,并且负责生成伪节点LSP
在这里插入图片描述
IS-IS使用如下顺序在一个LAN中选举DIS:

接口DIS优先级最高的设备成为该LAN的DIS. DIS优先级的值越大,则优先级越高。

如果DIS优先级相等,则接口MAC地址最大设备将成为该LAN的DIS.

10.邻居关系建立过程

1.Broadcast网络中的邻居关系建立过程

在这里插入图片描述
(1)假设R1率先在GEO/0/0接口上激活了IS-IS,缺省时,该接口的网络类型为Broadcast,由于R1是Level-1路由器,因此它的GEO/0/0接口的Level为Level-1,它将在该接口上周期性地发送Level-1 LAN IIH,这些PDU以组播的形式发送, 目的MAC地址是0180-c200-0014,该Level-1 LAN IIH中记录了R1的系统ID (0000.0000.0001)此外,还包含多个TLV,其中区域地址TLV记录了R1的区域ID (49.0012)

(2) R2在其GE0/0/0接口上收到了R1发送的Level-1 LAN IIH,它会针对PDU中的相关内容进行检查(例如检查对方与自己是否处于相同的区域),检查通过后, R2在其IS-IS邻居表中将R1的状态设置为Initial (初始化),并在自己从GE0/0/0接口发送的Level-1 LAN IH中增加IS邻居TLV,在该TLV中写入R1的接口MAC地址,用于告知R1: "我发现你了”

(3) R1收到该Level-1 LAN IH后,在其IS-IS邻居表中将R2的状态设置为Up,然后在自己从GEO/0/0接口发送的Level-1 LAN IIH中增加IS邻居TLV,并在该TLV中写入R2的接口MAC地址。

(4) R2收到该IH后,在其IS-IS邻居表中将R1的状态设置为Up。如此一来,两台路由器的IS-IS邻居关系就建立起来了。

邻居关系建立起来之后, RI与R2依然会周期性交互IIH, LSP的交互及LSDB同步过程也将在邻居关系建立起来之后进行。

此外,在R1及R2的邻居关系建立过程中,DIS也会被选举产生。LSDB完成同步后, DIS会周期性地在该Broadcast网络中泛洪CSNP

2. P2P网络中的邻居关系建立过程(两次握手)

在P2P网络中, IS-IS邻居关系的建立过程存在两种方式:两次握手方式及三次握手方式。

如果采用两次握手方式建立IS-IS邻居关系,那么邻居关系的建立过程是不存在确认机制的,只要设备在其接口上收到P2P IIH,并且对PDU中的内容检查通过后,便单方面将该邻居的状态视为Up,这显然是不可靠的,因为即使双方的互联链路存在单通故障,也依然会有一方认为邻居关系已经建立,此时网络就必然会出现问题。
在这里插入图片描述

3. P2P网络中的邻居关系建立过程(三次握手)

在这里插入图片描述
当设备的P2P接口启动三次握手机制后,设备将在P2PIH中,增加一个特殊的TLV-P2P三向邻接TLV (Point-to-Point Three-Way Adjacency TLV),用于实现三次握手机制。

(1)假设R3率先在接口上激活了IS-IS, R3的Serial1/0/0接口由于采用了PPP封装,因此它将该接口识别为P2P网络类型,它开始在该接口上发送P2P IIH,在该IIH中,包含R3的系统ID、区域ID等信息,还有P2P三向邻接TLV,由于此时R3还没有在该接口上收到任何有效的P2P IIH,也没有发现任何邻居,因此它将该TLV中的邻接状态(Adjacency State)设置为Down.

(2) R4将在其Serial1/0/0接口上收到R3发送的P2P IIH,它会针对该PDU中的相关内容进行检查,检查通过后, R4在其IS-IS邻居表中将邻居R3的状态设置为Initial(初始化),并在自己从Serial1/0/0接口发送的P2P IIH的P2P三向邻接TLV中,将邻接状态设置为Initializing (初始化中),并且在该TLV的邻居系统ID字段中写入R3的系统ID。

(3) R3收到该P2P IIH后,发现在该PDU中, P2P三向邻接TLV的邻接状态为Initializing(初始化中),且邻居系统ID字段填写的正是自己的系统ID,于是它认为自己与邻居R4完成了二次握手过程。

接下来,它在自己发送的P2P IIH的P2P三向邻接TLV中,将邻接状态设置为Up,然后在该TLV的邻居系统ID字段中写入R4的系统ID.

(4) R4收到R3发送的P2P IIH后,在该PDU的P2P三向邻接TLV中发现邻接状态为Up,并且邻居系统ID字段填写的是自己的系统ID,于是它认为自己与邻居R3完成了三次握手过程,便在IS-IS邻居表中,将该邻居的状态设置为Up。

接下来,它在自己发送的P2P IH的P2P三向邻接TLV中,将邻接状态设置为Up,然后在邻居系统ID字段中写入R3的系统ID

(5) R3收到R4发送的P2PIH后,也认为自己与对方完成了三次握手,便在IS-IS邻居表中,将该邻居的状态设置为Up。到此, R3与R4的邻居关系就建立了起来。邻居关系建立起来后,双方开始交互LSP,由于R3及R4都是Level-1路由器,因此双方交互Level-1 LSP.

11.邻居关系建立须知

1,建立IS-IS邻居关系的两台设备必须是同一个Level的设备

每一台运行IS-IS的网络设备都拥有一个全局的级别(Level),设备的级别可以是Level-1、 Level-1-2或Level-2,在网络规划及部署时,适当地为设备指定Level是非常有必要的。

2,两台直连设备如需建立Level-1邻居关系,则两者的区域ID必须相同

两台直连的Level-1设备必须配置相同的区域ID,才能够正确地建立Level-1邻居关系。

3,建立IS-IS邻居关系的两台IS-IS设备,直连接口需使用相同的网络类型

如果两台IS-IS设备的直连接口中,一方为P2P类型,另一方为Broadcast类型,那么它们之间的邻居关系是无法正常建立的。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页