ISIS协议详解

概述

IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统)路由协议最初是ISO(国际标准化组织)为CLNP(Connection Less Network Protocol,无连接网络协议)设计的一种动态路由协议,也是一种基于链路状态并使用最短路径优先算法(SPF)进行路由计算的一种IGP协议。

协议优先级:15 metric(度量值) : cost

原理

IS-IS是一种链路状态路由协议,每一台路由器都会生成一个LSP,它是该路由器所有使能IS-IS协议接口的链路状态信息的集合。通过跟相邻设备建立IS-IS邻接关系,互相更新本地的LSDB,使LSDB与整个IS-IS网络其他设备的LSDB同步,然后根据LSDB运用SPF算法计算出IS-IS路由。如果此IS-IS路由是到目的地址的最优路由,则此路由会记录到IP路由表中,并指导报文的转发。

网络类型

  • 点对点(P2P)网络类型
  • 广播型(MA)网络类型

拓扑结构

IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构。

一般来说,将Level-1路由器部署在非骨干区域,将Level-2路由器部署在骨干区域,每一个非骨干区域都通过Level-1-2路由器与骨干区域相连

*IS-IS 的一个路由器的所有接口肯定在同一个区域,如图

image-20200606140610478

路由器类型

  1. Level-1路由器

Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,属于不同区域的Level-1路由器不能形成邻居关系。Level-1路由器只负责维护Level-1的链路状态数据库LSDB(Link State Database),该LSDB包含本区域的路由信息,到本区域外的报文转发给最近的Level-1-2路由器。

  1. Level-2路由器

Level-2路由器负责区域间的路由,它可以与同一或者不同区域的Level-2路由器或者其它区域的Level-1-2路由器形成邻居关系。Level-2路由器维护一个Level-2的LSDB,该LSDB包含区域间的路由信息。

所有Level-2级别(即形成Level-2邻居关系)的路由器组成路由域的骨干网,负责在不同区域间通信。路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性。只有Level-2级别的路由器才能直接与区域外的路由器交换数据报文或路由信息。

  1. Level-1-2路由器

同时属于Level-1和Level-2的路由器称为Level-1-2路由器,它可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻居关系,也可以与其他区域的Level-2和Level-1-2路由器形成Level-2的邻居关系。Level-1路由器必须通过Level-1-2路由器才能连接至其他区域。

Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由。

image-20200606141137860

九种报文

  • Hello:用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)hello时间为10s,hold时间 为30s,DIS路由器发送hello时间为3.3s,hold时间依然为30s

    1. Broadcast L1-Hello 用于建立Level-1 的邻居关系 ,使用组播方式发送,地址:0180.C200.0014

    2. Broadcast L2-Hello 用于建立Level-2 的邻居关系 ,使用组播方式发送,地址:0180.C200.0015

    3. P2P Hello:点到点网络的hello报文

  • LSP(链路状态PDU)类似于OSPF的LSU,分为Level-1、Level-2,用于交换链路状态信息,触发更新或 15分钟周期更新

  • CSNP(完全序列号数据包)类似于OSPF的DD报文,分为Level-1、Level-2,包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒);在点到点链路上,CSNP只在第一次建立邻接关系时发送。

  • PSNP(部分序列号数据包)类似于OSPF的LSRequest或LSAck报文,分为Level-1、Level-2,只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行确认,当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP

邻居关系建立

  • 广播网络:

采用的是可靠的邻接建立过程,如果在接收的IIH报文中看到了自己接口的MAC地址,说明邻接已经收到并确认了自己发送的IIH报文。那么本地维护邻居的状态变为UP状态。

  • 点到点网络:

2Way是属于两次握手,没有可靠性保证。只要收到邻接发送的IIH报文,并检测通过,维护邻居的状态为UP状态。

3Way是属于三次握手,在点到点网络中使用3way的方式保证邻接建立的可靠性。新增一种TLV,点到点邻居状态TLV。

两次握手机制存在明显的缺陷。当路由器间存在两条及以上的链路时,如果某条链路上到达对端的单向状态为Down,而另一条链路同方向的状态为Up,路由器之间还是能建立起邻接关系

注:在华为中默认是3way的建立过程。

建立条件:

  • 只有同一层次的相邻路由器才有可能成为邻居。

  • 对于Level-1路由器来说,区域号必须一致。

  • 链路两端IS-IS接口的网络类型必须一致。

  • 链路两端IS-IS接口的地址必须处于同一网段。

DIS(Designated Intermediate System)

在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS,在邻居关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。

  • 作用

周期性10s发送CSNP报文,CSNP相当于DBD 接收PSNP请求,回复LSP应答(同时担当ACK确认)

创建和更新伪节点(Pseudonodes)

负责生成伪节点的LSP(Link state Protocol Data Unit),用来描述这个网络上有哪些网络设备。

  • 选举规则

优先级(选大)>MAC地址(选大)

Level-1和Level-2的DIS是分别选举的

可手动配置优先级,默认为64

优先级为0也参与选举(区别于ospf)

  • 特点

没有备份(所有的路由器之间都形成邻接关系,都可以互相交互LSP信息,DIS只是负责同步LSDB)

会抢占(当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS)

不同级别的DIS可以是同一台路由器,也可以是不同的路由器。

LSP的交互过程

  • 广播网络:

建立邻接关系。

向组播地址通告自己的LSP,Level-1的组播地址01-80-C2-00-00-14,level-2的组播地址:01-80-C2-00-00-15。

由DIS收集LSP,并每隔10s发送一次CSNP,在CSNP报文中通告DIS设备中LSDB中所有LSP的摘要信息(LSP头部信息)

其他设备收到DIS发送的CNSP报文后,需要查看在CNSP报文中是否包含自己的LSP,如果包含说明DIS收到了自己发送的LSP。如果没有需要重传。同时,还需要将CSNP中的摘要信息和本地的LSDB做对比,查看本地去缺少哪些LSP,后续通过PSNP报文向DIS请求自己缺少的LSP。

DIS收到PSNP报文后回复PSNP报文中请求的LSP。

*上述过程中所有的报文都是以组播方式交互。

  • 点对点网络:

首先建立邻接关系。
开始互相发送CSNP,在CSNP报文中包含本地LSBD中所有LSP的摘要信息。
收到邻居发送的CSNP报文,需要将CSNP报文中的LSP摘要信息和自己的LSDB做对比,查看缺少的LSP,并通过PSNP报文请求缺少的LSP。
收到PSNP请求后,回复LSP报文。
收到LSP报文后回复PSNP确认接收到的LSP。

路由器工作原理

Leve-1路由器:只存在L-1的LSP信息(路由信息和拓扑信息)

Leve-2路由器:只存在L-2的LSP信息(仅仅存在路由信息)

Leve-1-2路由器:存在L-1和L-2的LSP信息

例如:R1、R2 是1区域,R3是2区域,那么R1是L-1路由器,R2就是L-1-2路由器,R3是L-2路由器

R1传递L-1 LSP,R2传递L-1 LSP和L-2 LSP,因为R3是L-2路由器,所以他可以学习到R2的L-1-2信息,但是R1识别不到R3的L-2信息,所以R2会将里面的ATT,位置为1,默认是0,那么R1就会向传递给自己ATT是1的路由器自动产生一条缺省。

L-1-2路由器收到数据包时候会检测去往的目标网段是否与自己在一个区域,如果是查看L-1信息,不是就查看L-2信息。

默认情况下:所有设备都是L-1-2

NET地址

运行 IS-IS 协议的路由器必须有一个被称为 NET (Network Entity Title)的网络地址,NET 也称为网络实体名,可唯一标识一台路由器,长度为 8 至 20 字节,是可变长的,采用 16 进制写法,两位代表一个字节

image-20200606151806982

  • 格式

区域 ID (1 字节)+系统 ID(6 个字节)+SEL (1 个字节),NET 中的 SEL 总是为 00。

如:49.0001.0000.0000.0001.00

最长 :49.1234.5678.2211.4511.1111.2232.5533.8881.2411.00

区域号必须从后往前确认,先确认NSEL为00,再确认System ID :5533.8881.2411,剩下才是区域号:

49.1234.5678.2211.4511.1111.2232

  • 配置方法

例如:一台路由器使用接口Loopback0的IP地址1.1.1.1作为Router ID,那么SystemID可以进行如下转换:

将IP地址1.1.1.1的每一部分都扩展为3位,不足3位的在前面补0:001.001.001.001

将扩展后的地址001.001.001.001重新划分为3部分,每部分由4位数字组成,得到的0010.0100.1001就是System ID

这台路由器属于area 1区域,则区域号设置为49.0001,那么这台路由器的NET地址为:49.0001.0010.0100.1001.00

*同一台路由器,可以配置 3 个NET,但它们的system ID 要相同

IS-IS 路由渗透

  • 作用

Level 1-2 和 Level-2 路由将自己知道的其他 Level-1 区域以及 Level-2 区域的路由信息通报给指定的 Level-1 区域的过程,需要手动配置。

  • 原理

Level-1区域必须只能与骨干区域相连,不同level-1区域之间不能直接相连。level-1区域内的路由信息会通过level-1-2路由器通报给level-2区域,即level-1-2路由器会将学习到的level-1路由信息封装进level-2 LSP,并将这些level-2 LSP传递给其他level-2和level-1-2路由器。因此,level-1-2和level-2路由器是知道整个IS-IS路由域的路由信息的。

但是在缺省情况下,level-1-2和level-2路由器并不会将自己知道的路由域中其他level-1区域以及骨干区域的路由信息通报给level-1区域。于是,level-1路由器只能通过自动生成缺省路由来访问区域以外的任何目的地,类似ospf的Totally Stub区域。

但是缺省路由未必就是最优路径,假设某个场景是要求level-1路由器选择最优路径到达目的地的这种情况,缺省路由显然就无法满足,这个时候也需要让level-1知道其他外部区域的路由信息,让它自己计算选择最优路径或者人为配置cost值让它按照我们想让他走的路径到达目的地,这种前提下就需要路由渗透。

命令:

import-route isis level-2 into level-1  //在level-1-2路由器上配置

*配置完成后,缺省路由还存在路由表中,但是它会优先选择最优路径

度量值类型

  • 窄模式(narrow):范围1-63

    开启auto-cost enable之后,cost值见表:

image-20200606174319393

  • 宽模式(wide):范围:1-16777214

    开启auto-cost enable之后,COST = (bandwidth-reference/接口带宽)* 10;

cost默认为10,可手动指定

相关术语

image-20200606175915375

IS(Intermediate System):中间系统。相当于TCP/IP中的路由器,是IS-IS协议中生成路由和传播路由信息的基本单元。

ES(End System):终端系统。相当于TCP/IP中的主机系统。ES不参与IS-IS路由协议的处理,ISO使用专门的ES-IS协议定义终端系统与中间系统间的通信。

伪节点:是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和一个字节的Circuit ID(非0值)标识。使用伪节点可以简化网络拓扑,使路由器产生的LSP长度较小。另外,当网络发生变化时,需要产生的LSP数量也会较少,减少SPF的资源消耗。

常用命令

isis 100  //配置isis进程号
network-entity 49.0001.0010.0100.1001.00   //配置NET值
is-level level-1  //配置路由器类别,默认是level-1-2,即使配了也不会显示

int g0/0/1   //进接口使能isis进程
isis enable 100
isis cost 50  //配置花销

import-route isis level-2 into level-1   //配置路由渗透

dis isis peer //查看邻居信息

dis isis int g0/0/0   //查看接口的isis信息,可查看是否为DIS

dis isis lsdb    //查看isis的链路状态数据库信息

常用表项信息

在这里插入图片描述
img

image-20200606174607953

image-20200606175137096

报文格式分析

详情见这篇: 抓包分析ISIS报文


版权声明:本文为shengjie87原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。