ISIS协议原理与配置

前提概要:

  • IS-IS(中间系统-中间系统):IS-IS与OSPF一样,也是基于链路状态并且使用SPF算法进行路由计算的一种IGP协议(内部网关路由协议)。IS-IS最初是ISO组织为OSI七层模型中,无连接网络协议CLNP(类似于TCP/IP协议中的IP)设计的动态路由协议。由于IS-IS有OSPF协议没有的特点(简便性以及扩展性强),因此从OSI7层模型中被迁移到TCP/IP中,也就是集成的IS-IS,我们现在所提到的IS-IS大部分所指是集成的IS-IS。(为了提供对IP的路由支持,IETF在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI环境中,修订后的IS-IS协议被称为集成化的IS-IS。由于IS-IS的简便性及扩展性强的特点,目前在大型ISP的网络中被广泛地部署。)
  • 园区网中一般情况使用OSPF,但是不是绝对的,也有可能使用IS-IS。对于运营商网络(骨干网)更多采用IS-IS,因为是根据网络的特点进行路由协议的选择的。
    园区网特点:
    应用型网络,主要面向企业网用户。
    路由器数量偏少,动态路由的LSDB库容量相对偏少,三层路由域相对偏少。
    有出口路由的概念,对内部外部路由划分敏感。
    地域性跨度不大,带宽充足,链路状态协议开销对带宽占用比偏少。
    路由策略和策略路由应用频繁多变,需要精细化的路由操作。
    OSPF的多路由类型(内部/外部),多区域类型(骨干/普通/特殊),开销规则优良(根据带宽设定),网络类型多样(四种类型)的特点在园区网得到了极大的发挥。
    骨干网特点:
    服务型网络,由ISP(互联网服务提供商)组建,并为终端用户提供网络互联服务。
    路由调度占据绝对统治地位,路由器数量庞大。
    架构层面扁平化,要求IGP作为基础路由为上层BGP协议服务。
    LSDB规模宏大,对链路收敛极度敏感,线路费用高昂。
    追求简单高效,扩展性高,满足各种客户业务需求(IPV6/IPX)。
    IS-IS的快速算法(PRC得到加强),简便报文结构(TLV),快速邻居关系建立,大容量路由传递(基于二层开销低)等一系列特点在骨干网有着天然的优势。

IS-IS协议基本原理
ISIS协议原理与配置

  • CLNS的组成部分:(CLNS不是具体的一个协议,而是类似一个大架构)
    ①CLNP(类似于TCP/IP协议栈的IP协议,IP为TCP/IP传输层服务,CLNP为OSI七层模型中的传输层服务)
    ②IS-IS:中间系统间的路由协议,类似于IP中的OSPF
    ③ES-IS:主机系统与中间系统间的协议,类似于IP中ARP、ICMP等协议。
  • 对于集成的IS-IS来说,既有TCP/IP协议栈的能力,也有在OSI七层模型里面的能力,因此支持CLNP网络、IP网络,以及IP网络与CLNP的双重网络

IS-IS相关术语

缩略语 OSI术语 IETF术语
IS Intermediate System Router
ES End System Host
DIS Designated Intermediate System OSPF中的DR
SysID System ID OSPF中的Router ID
LSP Link State PDU OSPF中的LSA
IIH IS-IS Hello PDU OSPF中的Hello报文
PSNP Partial Sequence Number PDU OSPF中的LSR或LSAck报文
CSNP Complete Sequence Number PDU OSPF中的DD报文
缩略语 OSI术语 含义
NSAP Network Service Access Point CLNP地址+服务端口
NET Network Entity Title 网络实体标记(特殊NSAP,最后一个字节为0,Router ID+area)

·NSAP:网络服务访问点,实际上在TCP/IP里我们需要配IP地址,但是对于我们CLNP来说,我们只需要去创建CLNP地址。因为我们IS-IS是集成的,因此CLNP地址也做了保留
·NET:通常我们在TCP/IP环境下,我们在路由器上去配置集成IS-IS的时候我们需要去配置一个NSAP,那么这个NSAP,这个NSAP是一个特殊的NET地址,叫做网络实体标记,它的特殊在于最后一个字节是0。

IS-IS地址结构
ISIS协议原理与配置

  • NSAP是OSI协议中用于定位资源的地址,相当于OSI网络协议CLNP的地址,类似于IP地址的概念
  • NET是一类特殊的NSAP,它最后一位S位是0(SEL=00)
  • 整体的NET地址就是如图所示,一个叫做IDP,一个叫做DSP
  • IDP里面有AFI,IDI。
  • 在DSP里面有高位DSP,systemID,以及选择位
  • NSAP大小范围是8Bytes-20Bytes
    ISIS协议原理与配置
  • 这个是针对原来的IS-IS做了非常详细的划分,但是我们现在如果去配置集成的IS-IS,只需要关注区域ID部分(Area ID),system-ID部分以及选择位(SEL)

IS-IS地址示例
ISIS协议原理与配置

  • 49.0001代表Area ID; aaaa.bbbb.cccc代表System ID,以及后面是选择位00(IP网络中固定)
  • 观察的时候建议倒着观察,因为最后的选择位00是固定的,aaaa.bbbb.cccc代表的SystemID也是固定的,只有Area ID会进行变化,如果从前往后看很有可能看错。
  • AFI是有具体的使用规定的,例如有47.48,49我们到底应该使用哪个,建议可以在做实验的使用49,因为49有本地的意义,好比是IPv4的私有地址。
  • 涉及到IS-IS里面我们指定路由器的因素,因此我们需要考虑SystemID的命名方式,实际上SystemID由于是48个比特也就是6个字节,作用和OSPF里面的RouterID实际上非常相像,就是用来表示区域内的某一台路由器的,所以我们也可以使用RouterID来应用,但是由于RouterID是4个字节也就是32个比特,所以实际上长度不够48个比特,因此要想办法补齐12个比特,所以有下列操作。
    演示:
    Router-ID 10.1.1.1
    ①每组都变成3个数字
    010.001.001.001
    ②将数字进行重组,变为3组,一组是4个数字
    0100.0100.1001 每组都为2个字节,一共是6个字节,就是这个设备的System-ID
    System-ID和RouterID一样不能冲突,就是我们在IS-IS区域内识别设备的必备参数

网络分层路由域
ISIS协议原理与配置

  • 我们把相关设备划入到不同的区域中,这就是一个整体的IS-IS拓扑。
  • IS-IS允许将整个路由域分为多个区域
  • 一个路由器目前最多有3个Area ID,配置不同的区域ID是为了平滑的进行区域合并、分割以及转换使用,但是路由器的systemID必须是一个。
  • 和OSPF不同的是,IS-IS中,一个路由器必须属于某个区域,而不能是某些接口属于一个区域,其他接口属于另外一个区域
  • 在OSPF中存在骨干区以及非骨干区,IS-IS也分为骨干区和非骨干区。IS-IS区域中区分骨干区以及非骨干区的方法,不是通过区域去划分的,而是通过路由器的类型去区分的。例如在上图中,骨干区是由L2设备以及L1/2设备组成的区域为骨干区。

IS-IS路由器的类别
ISIS协议原理与配置

  • 我们可以定义路由器的种类,不同的路由器形成区域的Area的层次是不一样的。

  • Level-1 Router :位于非骨干区内部
    特点:
    -L1路由器只和本区域内的有L1功能路由器(包含L1/L2路由器)形成邻居关系。
    -L1路由器只有本区域内的Level1的LSDB(L1 LSDB),LSDB里面是本区域内所有L1路由器的路由信息
    -L1路由器通过与自己最近的L1/L2路由器的 ATT BIT字段=1生成指向这台L1/L2罗预期的默认路由作为出口路由(L1区域类似于OSPF的stub区域)因此在转发的时候有两种情况,第一种就是在本区域内,那么就直接通过L1 LSDB生成的路由进行转发即可;第二种情况就是不在本区域内,那么直接通过最近的L1/L2路由器作为连接区域外网络的出口设备(需要注意,对于最近的L1/L2路由器来说,可能出现次优路由)

  • Level-2 Router:位于骨干区
    特点:
    -L2路由器只和本区域内的有L2功能路由器(包含L1/L2路由器)形成邻居关系。
    -L2路由器只有本区域内的Level2的LSDB(L2 LSDB),LSDB里面是区域间所有路由信息
    -接受本区域内其他L2功能路由器的报文,并按照目的地址将报文转发给其他区域的L2路由器(或者是转发到同一区域的L2路由器)。
    -接受来自其他区域L2路由器的报文,并且按照目的地址进行转发。
    实际上对于L2路由器来说,有点像Transit网段

  • L1/L2 Router:通常位于区域边界
    特点:
    -可以与所在区域内的任何级别路由器形成邻居关系;并且和其他区域相邻的L2或者L1/L2路由器形成L2邻居关系
    -可能存在两个级别的链路状态数据库;L1 LSDB用来区域内进行路由;L2 LSDB用来区域间路由
    -对于L1/L2路由器来说,即承担了L1的职责也承担了L2的职责。
    -对于L1/L2路由器来说,如果在L1路由器所在区域内,那么需要通告本区域的L1路由器出口点,也就是发送生成L1 LSP的时候把报文中的ATT bit置位为1,发送给L1邻居。

  • 对于我们IS-IS来说,骨干区实际上包含了L1/L2的Router以及L2的Router。区域不能决定IS-IS的骨干,而是由路由器类型决定的。

  • 默认情况下华为的路由器初始配置是L1/L2路由器

邻居HELLO报文
ISIS协议原理与配置

  • HELLO PDU(Hello protocol data unit):
    HELLO报文的作用是邻居发现,协商参数并建立邻居关系,后期充当保活报文。
    IS-IS建立邻居关系和OSPF一样,通过hello报文的交互来完成。但是会根据场景分为三种类型的hello报文。
    广播网中的Level-1 IS-IS使用Level-1 LAN IIH(Level-1 LAN IS-IS Hello),目的组播MAC为:0180-c200-0014。
    广播网中的Level-2 IS-IS使用Level-2 LAN IIH(Level-2 LAN IS-IS Hello),目的组播MAC为:0180-c200-0015。
    非广播网络中则使用P2P IIH(point to point IS-IS Hello)。但是其没有表示DIS(虚节点)的相关字段。
    IIH报文需要通过填充字段用于邻居两端协商发送报文的大小。
  • IS-IS支持的网络类型:(目前IS-IS只支持这两种网络类型)
    点对点网络类型(P2P)。
    广播多路访问网络类型(Broadcast Multiple Access)。(广播链路中存在DIS,也就是指定中间系统,功能实际上就是创建和更新伪节点,在局域网中每10s周期性发送CSNP来泛洪LSP)
    在帧中继等特殊环境下,可以通过创建子接口支持P2P的网络类型。
  • OSPF支持的网络类型为4种,分别是点到点、点到多点、广播型网络、NBMA网络

邻居关系建立
ISIS协议原理与配置

  • 在P2P链路上,分为两次握手机制和三次握手机制。
    两次握手只要路由器收到对端发来的Hello报文,就单方面宣布邻居为up状态,建立邻居关系,不过容易存在单通风险。
    通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,与广播链路邻居关系的建立情况相同。
  • 在广播链路上,使用LAN IIH报文执行三次握手建立邻居关系。
    当收到邻居发送的Hello PDU报文里面没有自己的system ID的时候,状态机进入initialized。
    只有收到邻居发过来的Hello PDU有自己的system ID才会up,排除了链路单通的风险。
    广播网络中邻居up后会选举DIS(虚节点),DIS的功能类似OSPF的DR(指定路由器)。

DIS及DIS与DR的类比
ISIS协议原理与配置

  • DIS与伪节点:DIS是指定中间系统(Designated IS)。伪节点是指在广播网络中由DIS创建的虚拟路由器。

  • DIS的特点:
    ·在广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔再进行DIS的选举。Hello报文中包含Priority 字段,Priority值最大的将被选举为该广播网的DIS。若优先级相同,接口MAC地址较大的被选举为DIS。IS-IS中DIS发送Hello时间间隔默认为普通路由器的1/3,而其他非DIS路由器发送Hello间隔为10秒,因此DIS的Hello时延为10/3

  • DIS与DR的类比:
    ·选举时优选级的比较,DIS的优先级为0也可以参与选举,默认的优先级为64,并且优先级越大越优先,这点和OSPF里面选举DR是类似的。OSPF中优先级为0不参与选举DR,并且默认的优先级为1
    ·选举的过程需要一定的时间,OSPF选举DR/BDR过程较为复杂,而ISIS选举DIS等待两个Hello报文间隔就可以,简单快捷。选举结果ISIS只有一个DIS,但是OSPF除了有DR,还有一个BDR用做备份。对于ISIS来说,由于没有BDR这种类型的设备,所以需要更快的速度去收敛选举。
    ·DIS存在抢占关系,选举结束后,后期有新的Router加入到链路进来,如果优先级比DIS高是可抢占的,但是DR是不可抢占的。
    ·选举完成后,ISIS网络链路内所有的路由器之间都建立的是邻接关系。OSPF中DRothers只与DR/BDR形成full邻接关系, DRothers之间只有2-way的关系。

  • 关于DIS和DR的作用:
    进行SPF计算时,都把它当成虚节点,简化MA网络的逻辑拓扑(相同点)。
    都是为了减少LSP/LSA的泛洪(相同点)。
    在ISIS中还可以由DIS发送CSNP来同步链路的LSDB(ISIS扩展作用)。

  • 伪节点的含义其实非常的简单,因为在LSP中我们去描述的只是我们的路由信息,在MA网络里面我们没有描述拓扑信息实际上会出现一定的问题,因为在我们LSP里面可能只有接口信息,但是我们没有拓扑信息,就像OSPF里面我们只有一类的LSA实际上在我们的OSPF里面是不够的,那么伪节点的作用实际上是DIS在伪节点的LSP中通告LAN上的所有邻居,与OSPF的二类LSA非常相似,生成的是伪节点LSP

  • 有无伪节点实际上会对我们的LSDB里面的开销值造成影响。影响类似于下图
    ↓没有伪节点
    ISIS协议原理与配置
    ↓有伪节点
    ISIS协议原理与配置
    链路状态信息的载体
    ISIS协议原理与配置

  • ISIS TLV:
    TLV的含义是:类型(TYPE),长度(LENGTH),值(VALUE)。实际上是一个数据结构,这个结构包含了这三个字段。
    使用TLV结构构建报文的好处是灵活性和扩展性好。采用TLV使得报文的整体结构固定,增加新特点只需要增加新TLV即可。不需要改变整个报文的整体结构。
    网络拓扑结构和路由信息用TLV结构表现使得报文的灵活性和扩展性得到了极大的发挥。

  • LSP PDU(Link State Protocol PDU):
    LSP类似于OSPF的LSA,承载的是链路状态信息,包含了拓扑结构和网络号。
    Level-1 LSP由Level-1 路由器传送。
    Level-2 LSP由Level-2 路由器传送。
    Level-1-2 路由器则可传送以上两种LSP。
    LSP 报文中包含了两个重要字段是ATT字段、IS-Type字段。其中ATT字段用于标识该路由是L1/L2路由器发送的,IS-Type用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS。
    LSP的刷新间隔为15分钟;老化时间为20分钟。但是一条LSP的老化除了要等待20分钟外,还要等待60秒的零老化时延;LSP重传时间为5秒。

  • SNP PDU(Sequence Number PDU):
    CSNP(Complete Sequence Number PDU)包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。

  • PSNP(Partial Sequence Number PDU)包含部分LSDB中的LSP摘要信息,能够对LSP进行请求和确认。

  • CSNP 类似于OSPF的DD报文传递的是LSDB里所有链路信息摘要。PSNP类似于OSPF的LSR或LSAck报文用于请求和确认部分链路信息。

ISIS协议原理与配置
链路状态信息的交互
ISIS协议原理与配置

  • P2P网络LSDB同步过程:
    建立邻居关系之后,RTA与RTB会先发送CSNP给对端设备。如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP。
    假定RTB向RTA索取相应的LSP,此时向RTA发送PSNP。RTA发送RTB请求的LSP的同时启动LSP重传定时器,并等待RTB发送PSNP作为收到LSP的确认。
    如果在接口LSP重传定时器超时后,RTA还没有收到RTB发送的PSNP报文作为应答,则重新发送该LSP直至收到RTB的PSNP报文作为确认。
  • MA网络中新加入的路由器与DIS 的LSDB同步交互过程:
    假设新加入的路由器RTC已经与RTB(DIS)和RTA建立了邻居关系。
    建立邻居关系之后,RTC将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻居都将收到该LSP。
    该网段中的DIS会把收到RTC的LSP加入到LSDB中,并等待CSNP报文定时器超时(DIS每隔10秒发送CSNP报文)并发送CSNP 报文,进行该网络内的LSDB同步。
    RTC收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP(如RTA和RTB的LSP就没有)。
    RTB作为DIS收到该PSNP报文请求后向RTC发送对应的LSP进行LSDB 的同步。

IS-IS路由算法
ISIS协议原理与配置
ISIS协议原理与配置

  • SPF目前被适用于各种基于链路状态的路由协议,它采用Dijkstra算法计算最短路径。其基本思路是根据LSDB里描述的拓扑信息构建SPT(Shortest Path Tree,最短路径生成树),然后将LSDB里描述的路由信息作为树上的叶子生成最终路由。
    iSPF(Incremental SPF,增强SPF算法),主要用于部分拓扑发生变化的情况,在这种情况下不需要重新计算整个网络拓扑,而只是将变化了的少量拓扑进行修正,从而大大节约路由计算时间。
    PRC(Partial Route Calculate,部分路由计算算法),主要用于只是路由信息发生变化的情况,在这种情况下不需要重新计算网络拓扑,只是根据原有的拓扑生成新的路由信息即可,从而大大节约路由计算时间。
    在路由协议中,使用SPF算法的有OSPF、ISIS。OSPF在12.3版本后集成了ispf特性。需要手动打开。ISIS似乎默认有PRC特性(huawei文档上PRC是依赖ISPF计算出来的最短路径树的)。
    这两种特性是对SPF算法的一种改进
    总的来说,PRC用来处理网络拓扑不变而路由信息发生改变的情况,而iSPF用来处理网络拓扑结构(最短路径树的结构)发生改变的情况

IS-IS与OSPF的差异性
ISIS协议原理与配置
网络类型和开销方式:
IS-IS协议只支持两种网络类型,且所有带宽默认开销值都是一样的,OSPF协议支持四种网络类型,且会根据不同的带宽设定相应的开销值,对帧中继,按需链路等网络类型有很好的支持。
区域类型:
IS-IS协议分L1/L2区域,L2区域是骨干区域有全部明细路由。L1去往L2只有默认路由。OSPF协议分骨干区域,普通区域,特殊区域。普通区域和特殊区域跨区域访问需要经过骨干区域。
报文类型:
IS-IS协议路由承载报文类型只有LSP报文且里面路由信息是不区分内部与外部的,简单高效,无需递归计算。OSPF协议路由承载报文LSA类型多样,有1/2/3/4/5/7类等。路由级别等级森严,且需要递归计算,适合精细化调度计算。
路由算法:
ISIS协议区域内某个节点上的网段发生变化时,触发的是PRC算法,收敛比较快,计算路由的报文开销也比较小。OSPF协议由于网络地址参与了拓扑的构建,在区域内当网段地址改变触发的是i-spf算法,相对来说过程繁琐复杂些。
扩展性:
ISIS协议任何路由信息都使用TLV传递,结构简单,易于扩展,如对IPv6的支持只增加2个TLV就解决了。且ISIS本身对IPX等协议是支持的。OSPF协议本身是为IP特定开发的,支持IPv4和IPv6的OSPF协议是两个独立的版本(OSPFv2和OSPFv3)。

总结:因此对于使用IS-IS还是使用OSPF,实际上要根据具体的网络特性进行选择,没有绝对的说法。