一.简介
- IS-IS,翻译为中间系统到中间系统,ISIS是除了OSPF以外最常用的动态路由协议之一,具有多方面的特点,我将逐一对IS-IS协议进行剖析,写出关于IS-IS的全网最详解。
- 本文为结合了华为技术和新华三技术的大成,即结合了HCIA,HCIP,HCIE Datacom和H3CNE-RS+,H3CSE-RS+,H3CIE-RS+。本文将分为 IS-IS理论基础、IS-IS高阶特性、IS-IS详细配置 三个大模块进行详细介绍。
二.IS-IS理论基础
1.前言
- IS-lS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO(International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionLessNetwork Protocol,无连接网络协议)设计的一种动态路由协议。
- 随着TCP/IP协议的流行,为了提供对IP路由的支持,IETF在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSl(Open System Interconnect,开放式系统互联)环境中,我们将扩展后的IS-IS称为集成IS-IS。
- 本模块主要介绍集成IS-IS的基本概念、工作原理以及配置方法。
2.IS-IS的基本概念
(1)ISIS概述
IS-1S是ISO定义的OSI协议栈中的CLNS(ConnectionLess Network Service,无连接网络服务)的一部分。
- IS-IS是一种链路状态路由协议,IS-IS与OSPF在许多方面非常相似,例如运行IS-IS协议的直连设备之间通过发送Hello报文发现彼此,然后建立邻接关系,并交互链路状态信息。
- CLNS由以下三个部分组成:
- CLNP:类似于TCP/IP中的IP协议。
- IS-IS:类似于TCP/IP中的OSPF。
- ES-IS:类似于TCP/IP中的ARP,ICMP等。
- ES:End System,终端系统,类似于IP网络环境中的主机。
- ES-lS:End System to Intermediate System,终端系统到中间系统。
- IP网络环境中不涉及CLNP以及ES-IS,因此本模块不做详细介绍。
(2)地址结构
【1】NSAP
- NSAP(Network Service Access Point,网络服务访问点)是OSI协议栈中用于定位资源的地址,主要用于提供网络层和上层应用之间的接口。NSAP包括IDP及DSP,如下图所示:
- IDP(Initial Domian Part)相当于IP地址中的主网络号。它是由ISO规定,并由AFl(Authority and Formatldentifier)与IDl(Initial Domain ldentifier)两部分组成。AFI表示地址分配机构和地址格式,IDI用来标识域。
- DSP(Domian Specific Part)相当于IP地址中的子网号和主机地址。它由High Order DSP、system ID和SEL三个部分组成。High Order DSP用来分割区域,SystemID用来区分主机,SEL(NSAPSelector)用来指示服务类型。
【2】NET
- NET(Network Entity Title,网络实体名称)是OSI协议栈中设备的网络层信息,主要用于路由计算,由区域地址(AreaID)和SystemID组成,可以看作是特殊的NSAP(SEL为00的NSAP)。
- NET的长度与NSAP的相同,最长为20Byte,最短为8Byte。
- 在IP网络中运行IS-IS时,只需配置NET,根据NET地址设备可以获取到AreaID以及SystemID。
- Area ID由IDP和DSP中的High Order DSP组成,既能够标识路由域,也能够标识路由域中的区域。因此,它们一起被称为区域地址,相当于OSPF中的区域编号。
- 一般情况下,一个路由器只需要配置一个区域地址,且同一区域中所有节点的区域地址都要相同。为了支持区域的平滑合并、分割及转换,缺省情况下,一个IS-IS进程下最多可配置3个区域地址。
- System ID用来在区域内唯一标识主机或路由器。在设备的实现中,它的长度固定为6Byte。
【3】NET的配置举例
- 每台运行IS-IS的网络设备至少需拥有一个NET,当然,一台设备也可以同时配置多个NET,但是这些NET的SystemID必须相同。
- 在华为的网络设备上,System ID的长度总是固定的6Byte。在一个IS-IS路由域中,设备的SystemID必须唯一,为了便于管理,一般根据RouterID配置SystemID。
(3)拓扑结构
【1】IS-IS和OSPF区域划分的区别
- 在学习OSPF过程中,我们已经体会到了多区域、层次化网络设计的好处。对于链路状态路由协议而言,运行了该协议的设备会向网络中通告链路状态信息,同时也收集网络中所泛洪的链路状态信息后加以存储,并最终以这些信息为基础进行计算,从而得到路由信息。如果不采用多区域部署的方式,那么随着网络的规模逐渐增大,网络中泛洪的链路状态信息势必会越来越多,所有设备都将承受更重的负担,路由计算机收敛将逐渐变得更加缓慢这也使得网络的扩展性变差。(具体请关注博主文章 《OSPF 全网最详解》)
- 以上拓扑结构图可以体现IS-IS与OSPF的不同点
- 在IS-1S中,每个路由器都只属于一个区域;而在OSPF中,一个路由器的不同接口可以属于不同的区域。
- 在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨0干区域。
- 在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT(Shortest Path Tree);而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。
【2】Level-1路由器
- Level-1路由器(例如图中的R1)是一种1S-1S区域内部路由器,它只与属于同一区域的Level-1和Level-1-2路由器形成邻接关系,这种邻接关系称为Level-1邻接关系。Level-1路由器无法与Level-2路由器建立邻接关系。
- Level-1路由器只负责维护Level-1的链路状态数据库LSDB,该LSDB只包含本区域的路由信息。值得一提的是,Level1路由器必须通过Level-1-2路由器接入IS-1S骨千区域从而访问其他区域。
【3】Level-2路由器
- Level-2路由器(例如图中的R4、R5、R6、R7)是IS-S骨干路由器,它可以与同一或者不同区域的Level-2路由器或者Level-1-2路由器形成邻接关系。Level-2路由器维护一个Level-2的LSDB,该LSDB包含整个IS-IS域的所有路由信息。
- 所有Level-2级别(即形成Level-2邻接关系)的路由器组成路由域的骨干网,负责在不同区域间通信。路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性。
【4】Level-1-2路由器
- Level-1-2路由器与OSPF中的ABR非常相似,它也是IS-IS骨干网络的组成部分。
- Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由。
- 同时属于Level-1和Level-2的路由器称为Level-1-2路由器(例如图中的R2和R3),它可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻接关系,也可以与其他区域的Level-2和Level-1-2路由器形成Level-2的邻接关系。
【5】IS-IS支持的网络类型
IS-IS会自动根据接口的数据链路层封装决定该接口的缺省网络类型,IS-IS支持两种类型的网络:
- 广播(Broadcast):如Ethernet。
- 点到点(P2P):如PPP、HDLC等。
【6】IS-IS开销值
- IS-1S使用Cost(开销)作为路由度量值,Cost值越小,则路径越优。IS-1S链路的Cost与设备的接口有关,与OSPF类似,每一个激活了IS-1S的接口都会维护接口Cost。然而与OSPF不同的是,IS-IS接口的Cost在缺省情况下并不与接口带宽相关(在实际部署时,IS-IS也支持根据带宽调整Cost值),无论接口带宽多大,缺省时Cost为10。
- 一条IS-IS路径的Cost等于本路由器到达目标网段沿途的所有链路的Cost总和。
- IS-IS有三种方式来确定接口的开销,按照优先级由高到低分别是:
- 接口开销:为单个接口设置开销。
- 全局开销:为所有接口设置开销。
- 自动计算开销:根据接口带宽自动计算开销。
- 在早期的ISO10589中,使能IS-IS的接口下最大只能配置值为63的开销值,此时IS-IS的开销类型为narrow。但是在大型网络设计中,较小的度量范围不能满足实际需求。RFC3784中规定,使能IS-IS的接口开销值可以扩展到16777215,此时IS-IS的开销类型为wide。
- 缺省时,华为路由器采用的开销类型是narrow。
- narrow类型下使用的TLV:
- 128号TLV(IP Internal Reachability TLV):用来携带路由域内的IS-S路由信息。
- 130号TLV(IP External Reachability TLV):用来携带路由域外的IS-IS路由信息。
- 2号TLV(IS Neighbors TLV):用来携带邻居信息。
- wide类型下使用的TLV:
- 135号TLV(Extended IP Reachability TLV):用来替换原有的IP reachability TLV,携带IS-IS路由信息,它扩展了路由开销值的范围,并可以携带subTLV。
- 22号TLV(IS Extended Neighbors TLV):用来携带邻居信息。
(4)报文类型
【1】IS-IS报文格式
- IS-IS报文是直接封装在数据链路层的帧结构中的。
- PDU(Protocol Data Unit,协议数据单元)可以分为两个部分,报文头(IS-IS Header)和变长字段部分(Variable Length Fields )。
- 其中IS-IS Header又可分为通用头部(PDU Common Header)和专用头部(PDU Specific Header)。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别。
【2】IS-IS通用头部详解
重要字段解释:
- Intradomain Routing Protocol Discriminator:域内路由选择协议鉴别符固定为0x83。
- Length Indicator:IS-IS头部的长度(包括通用头部和专用头部),以Byte为单位。
- Version/Protocol lD Extension:版本/协议标识扩展,固定为0x01。
- System ID Length:NSAP地址或NET中System ID区域的长度。值为0时,表示System ID区域的长度为6Byte。
- R(Reserved):保留,固定为0。
- Version:固定为0x01。
- Max.Areas:支持的最大区域个数。设置为1~254的整数,表示该IS-IS进程实际所允许的最大区域地址数;设置为0,表示该IS-IS进程最大只支持3个区域地址数。
【2】IS-IS报文类型概述
- IS-IS的PDU有4种类型:IIH(IS-IS Hello),LSP( Link State PDU,链路状态报文),CSNP(Complete SequenceNumberPDU,全序列号报文),PSNP(PartialSequence Number PDU,部分序列号报文)。
- IIH:用于建立和维持邻接关系,广播网络中的Level-1IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2lS-IS路由器使用Level-2 LANIIH;点到点网络中则使用P2P IIH。
- LSP:用于交换链路状态信息。LSP分为两种,Level-1LSP、Level-2LSP。
- SNP:通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。SNP包括CSNP和PSNP,进一步又可分为Level-1CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP。
【3】IS-IS常见的TLV
- TLV的含义是:类型(TYPE),长度(LENGTH),值(VALUE)。实际上是一个数据结构,这个结构包含了这三个字段。
- 使用TLV结构构建报文的好处是灵活性和扩展性好。采用TLV使得报文的整体结构固定,增加新特性只需要增加新TLV即可不需要改变整个报文的整体结构。
3.IS-IS工作原理
(1)邻接关系建立
【1】IS-IS邻接关系建立原则
- IS-IS按如下原则建立邻接关系:
- 只有同一层次的相邻路由器才有可能成为邻接。
- 对于Level-1路由器来说,AreaID必须一致。
- 链路两端IS-IS接口的网络类型必须一致。
- 链路两端IS-IS接口的地址必须处于同一网段(默认情况下)。
- 由于IS-S是直接运行在数据链路层上的协议,并且最早设计是给CLNP使用的,IS-IS邻接关系的形成与IP地址无关。但在实际的部署中,在IP网络上运行IS-IS时,需要检查对方的IP地址的。如果接口配置了从IP,那么只要双方有某个IP(主IP或者从IP)在同一网段,就能建立邻接,不一定要主IP相同。
【2】IIH
- IIH报文用于建立和维持邻接关系,广播网络中的Level-1 IS-IS路由器使用LeveL-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH。
【3】广播网络中的邻接关系建立过程
两台运行1S-1S的路由器在交互协议报文实现路由功能之前必须首先建立邻接关系。在不同类型的网络上,IS-IS的邻接建立方式并不相同。在广播网络中,使用三次握手建立邻接关系。
- R1及R2通过千兆以太接口互联,这两台直连的Level-1路由器建立邻接关系的过程如下:
- 在Down状态下,R1组播发送Level-1 LAN IIH,此报文中邻接列表为空。
- R2收到此报文后,将邻接状态标识为Initial。然后,R2再向R1回复Level-1 LAN IIH,此报文中标识R1为R2的邻接。
- R1收到此报文后,将自己与R2的邻接状态标识为Up。然后R1再向R2发送一个标识R2为R1邻接的Level-1 LAN IIH 。
- R2收到此报文后,将自己与R1的邻接状态标识为Up。这样,两个路由器成功建立了邻接关系。
- 广播网络中需要选举DIS,在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。
【4】DIS与伪节点
- 在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DlS(Designated Intermediate System)。
- DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和Circuit ID(非0值)标识。
【5】IS-IS中的DIS与OSPF中的DR
- Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。
- DIS的选举规则如下:
- DIS优先级数值最大的被选为DIS。
- 如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会成为DIS。
- DIS发送Hello PDU的时间间隔是普通路由器的1/3,这样可以确保DIS出现故障时能够被更快速地被发现。
- IS-IS中DIS与OSPF协议中DR(DesignatedRouter)的区别:
- 在IS-1S广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举。
- 在IS-1S广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
- 在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系。
【6】点到点网络中的邻接关系建立过程
- 点到点网络中,邻接关系的建立使用两次握手方式:只要路由器收到对端发来的Hello报文,就单方面宣布邻接为Up状态,建立邻接关系。
- 两次握手机制存在明显的缺陷,华为设备在点到点网络中使用IS-IS时,默认使用三次握手建立邻接关系。此方式通过三次发送P2P IIH最终建立起邻接关系。
(2)链路状态数据库同步
【1】LSP
- IS-IS链路状态报文LSP用于交换链路状态信息。LSP分为两种:Level-1 LSP和Level-2 LSP。Level-1 LSP由Level-1路由器传送,Level-2LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP。
- 两类LSP有相同的报文格式。
- Remaining Lifetime:LSP的生存时间,以秒为单位。
- LSP ID:由三部分组成,SystemID、伪节点ID和LSP分片后的编号。
- Sequence Number: LSP的序列号。在路由器启动时所发送的第一个LSP报文中的序列号为1,以后当需要生成新的LSP时,新LSP的序列号在前一个LSP序列号的基础上加1。更高的序列号意味着更新的LSP。
- Checksum:LSP的校验和。
- ATT(Attachment):由Level-1-2路由器产生,用来指明始发路由器是否与其它区域相连。虽然此标志位也存在于Level-1和Level-2的LSP中,但实际上此字段只和Level-1-2路由器始发的L1 LSP有关。
- OL(LSDBOverload,1bit):过载标志位。设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过超载路由器的路由时不会被采用。即对路由器设置过载位后,其它路由器在进行SPF计算时不会考虑这台路由器。当路由器内存不足时,系统自动在发送的LSP报文中设置过载标志位。
- IS Type(2bit):生成LSP的路由器的类型。用来指明是Level-1还是Level-2路由器(01表示Level-1,11表示Level-2)。
【2】IS-IS的LSDB
- 伪节点ID:当该参数不为零时,表示该LSP为伪节点生成。
- 分片号:当IS-IS要发布的链路状态协议数据报文PDU(Protocol Data Unit)中的信息量太大时,IS-IS路由器将会生成多个LSP分片,用来携带更多的IS-IS信息。分片号用来区分不同的LSP分片。
【3】查看非伪节点的LSP
- AREA ADDR:该LSP来源的区域号
- INTF ADDR:该LSP中描述的接口地址
- NBR ID:该LSP中描述的邻接信息
- IP-Internal:该LSP中描述的网段信息
【4】CSNP
CSNP包含该设备LSDB中所有的LSP摘要,路由器通过交互CSNP来判断是否需要同步LSDB。
- 在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)。
- 在点到点网络上,CSNP只在第一次建立邻接关系时发送。
- Source lD:发出CSNP报文的路由器的 System ID。
- Start LSP:CSNP报文中第一个LSP的ID值。
- End LSP ID:CSNP报文中最后一个LSP的ID值。
【5】PSNP
PSNP只包含部分LSP的摘要信息(与CSNP不同):
- 当发现LSDB不同步时,PSNP来请求邻居发送新的LSP。
- 在点到的网络中,当收到LSP时,使用PSNP对收到的LSP进行确认。
- SourceID:发出PSNP报文的路由器的SystemID。
【5】广播网络中LSP的同步过程
广播网络中新加入路由器与DIS同步LSDB数据库的过程:
- 新加入的路由器R3首先发送IH报文,与该广播域中的路由器建立邻接关系。建立邻接关系之后,R3等待LSP刷新定时器超时,然后将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻接都将收到该LSP。
- 该网段中的DIS会把收到R3的LSP加入到LSDB中,并等待CSNP报文定时器超时并发送CSNP报文。
- R3收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP。
- DIS收到该PSNP报文请求后向R3发送对应的LSP进行LSDB的同步。
【6】点到点网络中LSP的同步过程
点到点网络上LSDB数据库的同步过程:
- R1先与R2建立邻接关系。
- 建立邻接关系之后,R1与R2会先发送CSNP给对端设备。如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP。
- 假设R2向R1索取相应的LSP:
- R1发送R2请求的LSP的同时启动LSP重传定时器,并等待R2发送的PSNP作为收到LSP的确认。
- 如果在接口LSP重传定时器超时后,R1没有收到R2发送的PSNP报文作为应答。
- 则R1重新发送该LSP
- R2收到LSP后,发送PSNP进行确认。
【7】LSP的处理机制
- IS-IS通过交互LSP实现链路状态数据库同步,路由器收到LSP后,按照以下原则处理:
- 若收到的LSP比本地LSP的更优,或者本地没有收到的LSP:
- 在广播网络中:将其加入数据库,并组播发送新的LSP。
- 在点到点网络中:将其加入数据库,并发送PSNP报文来确认收到此LSP,之后将这新的LSP发送给除了发送该LSP的邻居以外的邻居。
- 若收到的LSP和本地LSP无法比较出优劣,则不处理该LSP。
(3)路由计算
【1】Level-1路由器的路由计算
- R1是Level-1路由器,只维护LeveL-1 LSDB,该LSDB中包含同属一个区域的R2及R3以及R1自己产生的Level-1 LSP。
- R1根据LSDB中的Level-1 LSP计算出Area 49.0001内的拓扑,以及到达区域内各个网段的路由信息。
- R2及R3作为Area 49.0001内的Level-1-2路由器,会在它们向该区域下发的LeveL-1 LSP中设置ATT标志位,用于向区域内的Level-1路由器宣布可以通过自己到达其他区域。 R1作为Level-1路由器,会根据该ATT标志位,计算出指向R2或R3的默认路由。
【2】Level-1路由器的次优路径问题
缺省时, R1只能通过指向R2或R3的默认路由到达区域外部,但是R1距离R2和R3路由器的Cost值相等,那么当R1发送数据包到192.168.20.0/24时,就有可能选择路径2,导致出现次优路径。
【3】路由渗透
- 缺省情况下,Level-1-2路由器不会将到达其他区域的路由通告本Level-1区域中。
- 通过路由渗透,可以将区域间路由通过Leve-1-2路由器传递到Level-1区域,此时Leve-1路由器可以学习到其他区域的详细路由,从而计算出最优路径。
【4】level-1-2路由器的路由计算
- R2及R3都维护Level-1 LSDB,它们能够通过这些LSDB中的LSP计算出Area49.0001的路由。
- R2及R3都维护Level-2 LSDB,它们能够通过这些LSDB中的LSP计算出Area49.0002的路由。
- R2及R3将到达Area 49.0001的路由以Level-2 LSP的形式发送到Area49.0002。
【5】level-2路由器的路由计算
R4及R5作为Level-2路由器,只会维护Level-2 LSDB,它们能够根据该LSDB计算出到达全网各个网段的路由。
4.模块总结
如果您认证学完本模块后,您将能够:
- 描述IS-IS的基本概念
- 描述IS-IS的工作原理
- 描述IS-IS与OSPF的差异
- 实现IS-IS的常用配置
三.IS-IS高阶特性
1.前言
- IS-IS都是基于链路状态的内部网关路由协议,运行这两种协议的路由器通过同步LSDB,采用SPF算法计算最优路由。
- 当网络拓扑发生变化时,IS-IS支持多种快速收敛和保护机制,能够降低网络故障导致的流量丢失。
- 为了实现对路由表规模的控制,IS-IS支持路由选路及路由信息的控制能够减少特定路由器路由表的大小。
- 本模块将介绍IS-IS的高级特性,包括:快速收敛机制、路由控制、其他特性等。
2.IS-IS高级特性
(1)快速收敛
【1】IS-IS快速收敛概述
- IS-IS快速收敛是为了提高路由的收敛速度而做的扩展特性,包括:I-SPF(Incremental SPF,增量最短路径优先算法)、PRC、智能定时器、LSP快速扩散。
- 同时,IS-IS支持故障恢复快速收敛,例如通过IS-IS Auto FRR实现备份链路的快速切换,也可以与BFD联动实现对故障的快速感知。
【2】I-SPF
I-SPF的工作原理:当网络拓扑改变的时候,只对受影响的节点进行路由计算,而不是对全部节点重新进行路由计算,从而加快了路由的计算。
- 场景介绍:
- 某网络运行IS-IS,网络收敛后,左图是以R1为根的最短路径树。此时R1访问节点R5时,通过[R1下行链路的出接口,R3上行链路接口的IP地址]到达该目的地。
- R5下游新增设备R6,R6开启IS-IS,即IS-IS网络内有新增网络节点。
- I-SPF计算:
- R5和R6全网泛洪LSP,包含新增邻居关系。
- R1收到该LSP后会对变化的节点R5和R6进行I-SPF计算,生成新的最短路径树节点而其他节点不变
- 因此R1访问节点R5和R6时,通过[R1下行链路的出接口,R3上行链路接口的IP地址]到达该目的地。
【3】LSP快速扩散
LSP快速扩散:此特性可以加快LSP的扩散速度。
- 正常情况下,当IS-IS路由器收到其它路由器发来的LSP时,如果此LSP比本地LSDB中相应的LSP要新,则更新LSDB中的LSP,并用一个定时器定期将LSDB内已更新的LSP扩散出去。
- LSP快速扩散特性改进了这种方式,使能了此特性的设备收到一个或多个较新的LSP时,在路由计算之前先将小于指定数目的LSP扩散出去,加快LSDB的同步过程。这种方式在很大程度上可以提高整个网络的收敛速度。
(2)路由控制
【1】等价路由
- 当IS-IS网络中有多条冗余链路时,可能会出现多条等价路由,此时可以采取两种方式:
- 配置负载分担。流量会被均匀的分配到每条链路上。
- 该方式可以提高网络中链路的利用率及减少某些链路负担过重造成阻塞发生的情况。但是由于对流量转发具有一定的随机性,因此可能不利于对业务流量的管理。
- 配置等价路由优先级。针对等价路由中的每一条路由,明确指定其优先级,优先级高的路由将被优选0优先级低的路由可以作为备用链路。
- 当IS-IS网络中有多条冗余链路时,可能会出现多条等价路由,即达到某一目的网段有多条等开销路径。配置等价路由优先级可以在不修改原有配置的基础上,指定某条路由被优选,便于业务的管理,同时提高网络的可靠性。
- 注意:配置等价路由优先级后,IS-IS设备在转发到达目的网段的流量时,将不采用负载分担方式,而是将流量转发到优先级最高的下一跳。
- 配置负载分担。流量会被均匀的分配到每条链路上。
【2】一些等价路由配置命令
【3】缺省路由
- 在IS-IS中,主要通过以下3种方式控制缺省路由的生成和发布:
- 在Level-1-2设备上,控制其产生的Level-1 LSP中ATT位的置位情况。
- 在Level-1设备上,通过配置使其即使收到ATT位置位的Level-1LSP也不会自动产生缺省路由。
- 在IS-IS中发布缺省路由。
- LSP的报文格式:
- ATT(Attachment):由Level-1-2路由器产生,用来指明始发路由器是否与其它区域相连。此字段有4bit,华为数通产品只使用了其中1 bit。
a.通过设置ATT位控制缺省路由的
- IS-IS规定,如果IS-IS Level-1-2设备根据LSDB判断通过Level-2区域比Level-1区域能够到达更多的区域,该设备会在所发布的Level-1 LSP内将ATT位置位。对于收到ATT位置位的LSP报文的Level1设备,会生成一条目的地为发送该LSP的Level-1-2设备地址的缺省路由。
- 以上是协议的默认原则,在实际应用中,可以根据需要对ATT比特位进行手动配置以更好地为网络服务。
b.在IS-IS发布缺省路由
- 在具有外部路由的边界设备上配置IS-1S发布缺省路由可以使该设备在IS-1S路由域内发布一条0.0.0.0/0的缺省路由。在执行此配置后,IS-IS域内的其他设备在转发流量时,将所有去往外部路由域的流量首先转发到该设备,然后通过该设备去往外部路由域。
- 通常,当网络中部署了IS-IS和其他路由协议时,为了实现IS-IS域内的流量可以到达IS-IS域外,通常有如下两种方式:
- 在边界设备上配置IS-IS设备向IS-IS域发布缺省路由。该方式较为简单,不需要学习外部路由。
- 在边界设备上将其他路由域的路由引入到IS-IS中。
(3)其他特性
【1】IS-IS多实例和多进程
- IS-IS多实例是指在同一台路由器上,可以配置多个VPN实例与多个IS-IS进程相关联。
- IS-IS多进程指在同一个VPN下(或者同在公网下)可以创建多个1S-IS进程,每个进程之间互不影响,彼此独立。不同进程之间的路由交互相当于不同路由协议之间的路由交互。
- 网络中可能需要同时承载不同的业务,为保证各业务的安全性,需要将业务进行隔离,此时,可以配置与VPN实例绑定。
【2】LSP分片
- 当IS-IS要发布的PDU中信息量太大时,IS-1S路由器将会生成多个LSP分片,用来携带更多的IS-IS信息。
- LSP的报文格式为:
- IS-IS LSP分片由LSP ID中的分片号(LSP Number)字段进行标识,这个字段的长度是1Byte。因此,一个IS-IS进程最多可产生256个LSP分片,携带的信息量有限。
【3】LSP分片扩展基本概念
IS-IS可以配置虚拟的系统ID,并生成虚拟IS-IS的LSP报文来携带路由等信息。
- 初始系统(Originating System):初始系统是实际运行1S-1S的路由器。允许一个单独的IS-IS进程像多个虚拟路由器0样发布LSP,而“Originating System”指的是那个“真正”的IS-IS进程。
- 系统ID(Normal System-lD):初始系统的系统ID。
- 虚拟系统(Virtual System):由附加系统ID标识的系统,生成扩展LSP分片。这些分片在其LSPID中携带附加系统ID。
- 附加系统ID(Additional System-ID):虚拟系统的系统ID,由网络管理器统一分配。每个附加系统ID都允许生成256个扩展的LSP分片。
- 24号TLV(IS AliaS ID TLV):LSP分片携带该TLV信息,用来表示初始系统与虚拟系统的关系。
使能分片扩展功能之后,如果存在由于报文装满而丢失的信息,系统会提醒重启IS-1S。重启之后,初始系统会尽最大能力装载路由信息,装不下的信息将放入虚拟系统的LSP中发送出去,并通过24号TLV来告知其他路由器此虚拟系统和自己的关系。
【4】LSP分片扩展工作原理
- 在IS-IS中,每个系统ID都标识一个系统,每个系统都最多可生成256个LSP分片。通过增加附加系统ID,可以最多配置50个虚拟系统,从而使得IS-IS进程最多可生成13056个LSP分片。
- IS-1S路由器可以在两种模式下运行LSP分片扩展特性:
【5】LSP分片扩展的基本配置命令
3.模块总结
如果您认证学完本模块后,您将能够:
- 描述IS-IS的各种快速收敛的技术
- 实现IS-IS等价路由的配置
- 实现IS-IS发布缺省路由
- 描述IS-IS多进程使用场景
- 描述IS-IS的GR和NSR原理
- 描述IS-IS的LSP分片扩展的工作原理
四.IS-IS详细配置
本模块会陆续在IS-IS专栏里面更新,可私信催更。
1.IS-IS相关实验
(1)实验1.1 配置基本的集成IS-IS路由协议
【1】实验目的
- 在路由器上启动 IS-IS 路由进程
- 启用参与路由协议的接口
- 度量值cost的计算
- NET地址配置
- DIS选举的控制
- 查看和调试IS-IS 路由协议相关信息
- 熟悉其他相关配置
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
a.首先配置好各物理接口,及环回口的IP地址
在AR1上:
在AR2上:
在AR3上:
b.配置AR1的IS-IS
就是使能进程ISIS,然后配置NET,然后配置显示ISIS邻接变化的log信息,最后在相应的接口使能ISIS进程。
c.接下来同上配置AR2和AR3
d.在AR2上查看ISIS邻居
- 从以上输出可以看出,路由器AR2 有2 个邻居,而且都形成了“L1”和“L2”类型的邻居关系,这是因为在启动IS-IS 的路由器以后,路由器的IS类型为L1L2,就是level-1-2型路由器,故会形成两种类型的邻居关系。
- 缺省情况下,Hello 包每10 秒中发送一次,holddown 时间为30 秒,即3 倍的关系。可以在接口下通过“isis timer hello”命令修改Hello 包发送的周期,同时通过“isis timer holding-multiplier”命令定义holddown 是Hello 周期的倍数。
- 以上看到邻居表中systemID是我们所配置的id数字,华为VRP系统可以支持为isis命名的功能,这样邻居看起来更方便。
e.在ISIS进程下进行重命名
f.重新再AR2上查看邻居关系
上面输出的system id变为命名的了。
此时还可以查看system id与主机名的映射:
g.接下来进行命令查看示例(截图简略)
首先是查看本路由器isis的信息:
然后是查看isis接口信息:
然后是查看isis路由信息:
然后是查看IS-IS链路状态数据库:
DIS 选举是抢占的。
修改接口优先级的命令是“isis dis-priority”,默认是64,取值范围为0-127。在本实验中可以将AR2 的GO/0/1口的接口优先级改为100,则AR2马上被选为g0/0/1网络中的DIS,如下:
h.在AR2上修改DIS优先级
查看现象:
i.观察ISIS的cost
- 以上输出表明,路由优先级为15;如果路由器类型全部为“level-1-2”,那么区域内的路由使用“ISIS-L1”加进IP表,即level-1路由。默认情况下,IS-IS 使用窄度量计算度量值(narrow),所有链路都使用10 作为度量值,因为IS-IS不能像OSPF 那样基于带宽自动的计算度量值。
j.在AR2上配置isis silent
- 注意;当配置了 isis silent,只是不会向这样的接口发送ISIS 报文,但是这个接口网段依然会被宣告到 ISIS 里。
- 此时,G0/0/1 口被 silent,那么 AR2 就会失去与 AR3 的邻居关系,但是在 AR1上依然能看到 10.1.23.0/24 这条路由。
k.在AR1和AR2上分别查看现象
在AR1上:
(2)实验1.2 多区域的集成IS-IS配置
【1】实验目的
- 理解IS-IS区域概念
- 理解L1和L2路由的区别
- 理解配置接口电路类型的作用
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
a.先配置各个路由器的物理接口IP地址和环回口IP地址,此步骤不演示。
b.按照拓扑配置各个路由器的IS-IS,区域ID。
- 配置完成后使用命令display isis peer查看两两之间的邻居关系是否正常
c.查看isis数据库
- 以上所示:与之对应的将是每个路由器上有同样的level-2数据库。而各自区域将维持各个区域的leve1-1的数据库。此时,所有路由器都是一个骨干路由器,所有路由器都属于骨干。.
- 注意:区域号与骨干区域和非骨干区域将是两个不同的概念,分别用区域ID 和level来表示,无论属于哪个区域,只要属于level-2 就是一个骨干路由器,但这在 OSPF 里面是另外一个概念。
d.定义骨干和非骨干区域
只需要配置AR1和AR6为L1路由器,而AR2和AR5为L1L2路由器,其余为L2路由器。而由于L1L2是默认的情况,所以说就不用配置AR2和AR5。
e.再去查看各路由器的数据库
在AR1和AR3上:
- 以上表示,level-1 的路由器只维持本区域的数据库。如AR1只会维持 49.0001的数据库。而level-2 的路由器将维持所有处于骨干区域的数据库,包括所有区域的。例如 AR3 上看到了本区域 AR4 的 LSP,也有不属于本区域的 AR2与 AR5 的 LSP。
在AR2上:
- 以上表示在一个level-1-2 的路由器上,将包含有level-1 和level-2 的数据库。
- 并且还负责将level-1的路由信息自动的注入到level-2里面去。类似于ospf中的 ABR。
f.查看AR1的IP路由表
- 看到自动生成一条默认路由指向 AR2,这是由于 AR2 在产生level-1 的LSP 的时候,由于自己是一个level-1-2的路由器,并且又连接了骨干区域和非骨干区域,所以会将LSP 中的 ATT 位置位。Level1区域内路由器将生成一条默认路由指向发送LSP ATT置位的路由器。
g.修改接口电路类型
- 如拓扑中的 AR2与 AR5 路由器,是一个L1/L2 的路由器,他们将在所有接口同时发送 L1 与 L2 的 hello 包,但是这是没有必要的。如 AR2 上与 AR1 将只有 L1 的邻居关系,没有必要发送L2的 Hello 包,发送一些没有用的 Hello 包将浪费带宽与路由器资源。
- 为了让 IS-IS 在这些情况下效率更高,需要将接口配置成只发送必要类型的 hello。
- 为此,使用以下的接口配置命令来完成
(3)实验1.3 IS-IS认证
【1】实验目的
- 掌握ISIS的各种认证的作用及之间的区别。
- 掌握ISIS各种认证的配置。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
本实验继承实验1.2,在实验1.2的配置下完成。
a.配置AR1与AR2的level-1接口认证,AR2与AR3的level-2接口认证
这时候我们在AR2上看isis的邻居:
如果还有AR1和AR3的邻居说明接口认证通过。
b.用key-chain的方式配置AR3与AR4之间的认证
以上三步是配置一个钥匙
然后在AR4上:
这里做一个单独说明:发现在华为上关于ISIS的认证,只要是使用keychain方式的全部没有效果,真机测试也是一样,不得解。
c.配置区域认证,配置49.0001的区域认证
这里采用MD5的方式:
- 说明:区域认证只对level-1的区域生效、对于同属于一个区域但只有level-2的邻居是不生效的。
d.配置路由域认证。如果要对level-2骨干区域做认证,就要使用路由域认证。
需要在所有的level-2域level-1-2路由器上去做。也只对level-2的区域生效,对L1不生效。
- 然后AR4和R5配置同上相同配置,不再展示。
(4)实验1.4 IS-IS路由泄露
【1】实验目的
- 理解IS-IS路由泄露的原因及作用。
- 掌握IS-IS路由泄露的配置方法。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
本实验继承实验1.2,在实验1.2的配置下完成。
- 如图所示,在 AR1 上去往 49.0003 区域的 AR6 的时候,都是根据 AR2 产生的一条默认路由到达的,也就是说,默认情况下,level-1的路由器都只能学习到本区域的路由。但在某些特殊情况下,比如存在两个出口的情况下,很有可能会出现次优路由,此时如果可以将明细路由发布到 leve|-1 区域这样的问题就可以解决。此时将用到路由泄漏。
- 实验要求:AR1 能够通过路由泄漏的方式学到 10.1.6.6/32 这条路由。
a.用访问控制列表匹配出想要泄露的路由
b.把访问控制列表匹配上的路由泄露到level-1
c.去AR1查看结果
- 以上表示看到了AR6的环回口路由。
d.通过route-policy的方式泄露AR5的环回口路由
要先undo掉刚才的配置:
然后再接着配置:
e.在AR1上查看结果
以上表示AR1也正常学习到了AR5的环回口路由。
(5)实验1.5 IS-IS汇总
【1】实验目的
- 理解并掌握IS-IS协议的汇总:
- L1路由进入L2区域的时候,可以对L1路由进行汇总。
- L2向L1做路由泄露的时候,可以对L2路由进行汇总。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
本实验继承实验1.2,在实验1.2的配置下完成。
a.在AR2上配置将区域49.0001的路由10.1.1.1/32同步到L2区域的时候汇总为10.1.1.0/24。
先去AR3上查看这条路由:
- 以上表示现在AR3上收到来自于区域49.0001的路由为一条32位掩码的路由。
在AR2上:
- 以上表示汇总成为一条24位掩码的路由
在AR3上再次查看这条路由:
现在AR3上收到的是一条汇总的路由。这条路由将抑制掉范围内的所有明细路由。虽然实验中只有一条。
b.在AR2上把AR6的环回口路由泄露给AR1,并且汇总成24位的路由
先在AR2上做路由泄露:
去AR1上查看这条路由是否泄露成功
发现是成功的
c.再去AR2 上汇总这条泄露过来的路由
d.去AR1再次查看这条路由
(6)实验1.6 在IS-IS手动产生一条默认路由
【1】实验目的
掌握在IS-IS中手动产生一条默认路由
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
本实验继承实验1.2,在实验1.2的配置下完成。
- 分别去AR1和AR6查看IP路由表,分别发现有一条缺省路由,这条路由有L1-L2路由器产生的一个ATT置位的LSP产生的。
a.在AR2上为level-2区域产生一条默认路由
- 上面这条命令默认指向level-2区域产生一条默认路由,对level-1区域无效。
b.分别在AR3和AR4上查看这条路由
有的时候如果需要想level-1注入默认路由,此时需要用到route-policy
c.在AR1上产生一条默认路由通告给L1区域
为了不影响实验效果(因为默认情况下骨干区域的路 L1-L2 路由器会下发 ATT Bit 置位的 LSP,从而 L1 区域设备自动产生缺省路由)。先去 down 掉 AR2 与 AR3 之间的链路。
在AR2上:
然后定义一个route-policy,改变路由属性为level-1:
在AR2上用以下命令产生一条默认路由:
再去AR1上查看IP路由表:
发现下发成功
(7)实验1.7 IS-IS协议重分布
【1】实验目的
掌握IS-IS与其他路由协议之间相互引入的方法。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
注意,本实验在实验1.2的拓扑变化下完成,R1-R4的IS-IS继承1.2的配置,而AR4-AR6之间新增OSPF协议。
a.在AR4,AR5,AR6之间配置OSPF协议
查看邻居关系:
b.在AR4上把OSPF协议引入IS-IS
c.去AR3上查看现象
- 以上结果表示,默认情况下,IS-IS的引入都是引入进level-2 区域的。本实验中 AR4是一个 level-2 的路由器,是没有问题,但如果 R4是一个level-1 的路由器,要引入进IS-|S 的时候,要加上level-1 的关键字。
- 引入路由汇总:引入进IS-1S 的level-2的路由,是可以被汇总的。这也是上面汇总的实验里提到的另一些做汇总的地方。
d.在AR4上配置路由汇总
去AR3上查看现象:
可以发现路由被汇总了。
e.改变AR4为level-1路由器,AR3为level-1-2路由器,然后在AR4上做向level-1区域引入路由实验。
f.再到AR4上引入OSPF,并且加上level-1的关键字,否则无效。
去AR3上查看现象:
g.再去汇总这条路由,同样的,在汇总后面加上level-1关键字即可。这次去汇总AR5的环回口
再从AR3上查看现象:
h.将IS-IS路由引入到其他路由协议
再去AR6上查看结果: