华为 IS-IS协议学习笔记

动态路由协议按照算法的不同可以分为两类:一类是基于链路状态(典型代表是OSPF、IS-IS),还有一类是距离矢量(典型代表是rip、bgp),和OSPF一样,IS-IS也是一种基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议。
本次博客主要是介绍ISIS协议原理以及配置。

历史起源

IS-IS中间系统到中间系统,Intermediate system to intermediate system,意为“中间系统到中间系统”)

IS-IS最初是针对OSI七层模型去设计的路由协议,是国际化标准组织ISO为它的无连接网络协议CLNP(这里的CLNP可以类比TCP/IP五层协议栈里面的ip网络)设计的一种动态路由协议。但是由于CLNP网络现在已经不用了,为了能够让ISIS提供对IP的路由支持,IETF(国际互联网工程任务组)在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IPOSI环境中,修订后的IS-IS协议被称为集成化的IS-IS。由于IS-IS的简便性及扩展性强的特点,目前在大型ISP(互联网服务提供商)的网络中被广泛地部署,ISIS工作在数据链路层,不仅支持CLNP网络,还支持IP网络,OSPF工作在IP层,且支持IP网络。

应用场景

网络可以根据不同的客户需求分成园区网和骨干网络,这两种网络的特点,以及采用的协议类型,如下图所示,

园区网特点:
应用型网络,主要面向企业网用户。
路由器数量偏少,动态路由的LSDB库容量相对偏少,三层路由域相对偏少。
有出口路由的概念,对内部外部路由划分敏感。
地域性跨度不大,带宽充足,链路状态协议开销对带宽占用比偏少。
路由策略和策略路由应用频繁多变,需要精细化的路由操作。
OSPF的多路由类型(内部/外部),多区域类型(骨干/普通/特殊),开销规则优良(根据带宽设定),网络类型多样(最多五种类型)的特点在园区网得到了极大的发挥。
骨干网特点:
服务型网络,由ISP(互联网服务提供商)组建,并为终端用户提供互联服务。
路由调度占据绝对统治地位,路由器数量庞大。
架构层面扁平化,要求IGP作为基础路由为上层BGP协议服务。
LSDB规模宏大,对链路收敛极度敏感,线路费用高昂。
追求简单高效,扩展性高,满足各种客户业务需求(IPV6/IPX)。
IS-IS的快速算法(PRC得到加强),简便报文结构(TLV),快速邻居关系建立,大容量路由传递(基于二层开销低)等一系列特点在骨干网有着天然的优势。
 
ISIS一般应用于大型网络
 

路由计算过程

ISIS路由计算的过程:先建立邻居关系,建立起邻居关系之后,进行链路信息交换,接着开始计算路由。

邻居关系建立:邻居关系建立主要是通过HELLO包交互并协商各种参数,包括电路类型(level-1/level-2),Hold time,网络类型,支持协议,区域号,系统IDPDU长度,接口IP等。

链路信息交换: 与OSPF不同,ISIS交互链路状态的基本载体不是LSAlink state advertisement),而是LSPlink state PDU);交互的过程没有OSPF协议那样经历了多个阶段,主要是通过CSNPPSNP两种协议报文来同步,请求以及确认链路状态信息(承载的是链路状态信息摘要),而链路状态信息的详细拓扑和路由信息是由LSP报文传递。

路由计算:SPF计算和OSPF基本一样的,但ISIS算法分离了拓扑结构和IP网段,加快了网络收敛速度。

 

地址结构

先根据比较熟悉的OSPF来类比ISIS 里面会用到的标识符,如下表所示,

TCP/IP协议栈

IP协议

IP地址

OSPF

Area ID+Router ID

OSI系统

CLNP协议

NSAP地址

IS-IS

NET标识符

 

在OSI里面的NSAP地址可以类比IP地址,作用是差不多的,在OSPF协议里面,在配置的时候,需要划分区域,分配路由器ID,但是在ISIS里面,可以通过一个NET标识符来发挥划分区域和配置路由器id的作用。

首先来看一下NSAP地址的结构,如下图所示,

NSAP地址由两大块组成,一块是IDP,另一块是DSP。
IDP相当于IP地址中的主网络号。它是由ISO规定,并由AFIIDI两部分组成。AFI表示地址分配机构和地址格式,IDI用来标识域。
 
DSP相当于IP地址中的子网号和主机地址。它由High Order DSPSystem IDSEL三个部分组成。High Order DSP用来分割区域,System ID用来区分主机,SEL用来指示服务类型。
 
以上的AFI就好比是我们的国家名称,IDI就类似与省的名称,High Order DSP就类似于市名称,这三者共同组成了Area ID,就好比身份证上的地址属于哪个国家的哪个省的哪个市,
 
Area AddressArea ID)由IDPDSP中的High Order DSP组成,既能够标识路由域,也能够标识路由域中的区域。因此,它们一起被称为区域地址,相当于OSPF中的区域编号,在这里需要注意的是,Area id的字节范围是1-13个字节,有长有短。但是System id和sel的长度是固定的,如果给了一个NSAP的地址,需要计算Area id的话,可以从后面往前推,去查看Area ID。
 
System ID用来在区域内唯一标识主机或路由器。在设备的实现中,它的长度固定为48bit6字节)。
 
SEL的作用类似IP中的“协议标识符”,不同的传输协议对应不同的SEL。在IPSEL均为00。然后把SEL标为00的地址成为NET,是一种特殊的NASP地址,(SEL=00),在路由器上配置ISIS的时候,只需要考虑NET就ok,如下图所示,是一个规范的NSAP的地址。
NET:
网络实体名称NET指的是设备本身的网络层信息,可以看作是一类特殊的NSAP(SEL=00),NET的长度与NSAP的相同,最多为20个字节,最少为8个字节。在路由器上配置IS-IS时,只需要考虑NET即可,NSAP可不必去关注。
 
在配置IS-IS过程中,NET最多也只能配3个。在配置多个NET时,必须保证它们的System ID都相同。
 

路由器分类

 
在ISIS里面,路由器分为三种类型,分别是Level-1路由器(只能创建level-1的LSDB),Level-2路由器(只能创建level-2的LSDB),Level-1-2路由器(路由器默认的类型,能同时创建level-1和level-2的LSDB )。
Level-1路由器:
Level-1只能与属于同一区域的Level-1Level-1-2路由器形成邻居关系,只负责维护Level-1的链路状态数据库,该LSDB包含本区域内的路由信息,到本区域外的报文转发给最近的Level-1-2路由器。Level-1路由器只可能建立Level-1的邻接关系。
Level-2路由器:
Level-2路由器负责区域间的路由,它可以与相同或者不同区域的Level-2路由器或者不同区域的Level-1-2路由器形成邻居关系。Level-2路由器维护一个Level-2LSDB,该LSDB包含区域间的路由信息。Level-2路由器只可能建立Level-2的邻接关系。
Level-1-2路由器:
同时属于Level-1Level-2的路由器称为Level-1-2路由器。Level-1-2路由器维护两个LSDBLevel-1LSDB用于区域内路由,Level-2LSDB用于区域间路由。
Level-1-2路由器可以与同一区域的Level-1形成Level-1邻居关系,也可以与其他区域的Level-2Level-1-2路由器形成Level-2的邻居关系。
不同区域间,只能建立Level-2的邻接关系:
Level-2路由器可以与Level-2路由器建立邻接关系。
Level-1-2路由器可以与Level-2路由器建立邻接关系。
Level-1-2路由器可以与Level-1-2路由器建立邻接关系。
 
Level-1路由器和Level-2路由器不能直接建立邻接关系,就算两种路由器处于同一个区域也不能建立邻接关系,所以中间需要Level-1-2路由器作为中间人,通过Level -1 lsdb去和Level-1路由器去建立邻居关系,通过通过Level -2 lsdb去和Level-2路由器去建立邻居关系,
 

HELLO报文

在ISIS中,路由器在建立邻接关系的时候,会用到HELLO报文,这里的hello报文被称之为IIH(IS-IS-Hello),HELLO报文的作用是邻居发现,协商参数并建立邻居关系,后期充当保活报文。IS-IS建立邻居关系和OSPF一样,通过hello报文的交互来完成。
但是会根据场景分为三种类型的hello报文,广播网中的Level-1 IS-IS使用Level-1 LAN IIHLevel-1 LAN IS-IS Hello),目的组播MAC为:0180-c200-0014广播网中的Level-2 IS-IS使用Level-2 LAN IIHLevel-2 LAN IS-IS Hello),目的组播MAC为:0180-c200-0015非广播网络中则使用P2P IIHpoint to point IS-IS Hello)。但是其没有表示DIS(虚节点)的相关字段。
IIH报文需要通过填充字段用于邻居两端协商发送报文的大小。
 

IS-IS支持的网络类型:

 点对点网络类型(P2P)。

广播多路访问网络类型(Broadcast Multiple Access)。

在帧中继等特殊环境下,可以通过创建子接口支持P2P的网络类型。

 邻接关系建立

在点到点链路上,邻接关系的建立分为两次握手和三次握手ISO10589使用两次握手,RFC3373定义了P2P三次握手机制。

 

 两次握手只要路由器收到对端发来的Hello报文,就单方面宣布邻居为up状态,建立邻居关系,不过容易存在单通风险。通过三次发送P2PIS-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(指定中间系统)的角色,和在运行OSPF协议的网络里会竞选出来的DR有些类似,在广播网络中,DIS会创建一个虚拟路由器,被称之为伪节点,如下图所示,

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

DIS与DR的类比:选举时优选级的比较,DIS的优先级为0也可以参与选举。OSPF中优先级为0不参与选举DR。选举的过程需要一定的时间,OSPF选举DR/BDR需要waiting time40秒,过程也较为复杂,而ISIS选举DIS等待两个Hello报文间隔就可以,简单快捷,DR和DIS的类比如下表所示。

类比点

ISIS-DIS

OSPF-DR

选举优先级

所有优先级都参与选举

0优先级不参与选举

选举等待时间

2Hello报文间隔

40s

备份

有(BDR

邻接关系

所有路由器互相都是邻接关系

DRother之间是2-way关系

抢占性

会抢占

不会抢占

作用

周期发送CSNP保障MA网络LSDB同步

主要为了减少LSA泛洪

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

在ISIS里面用来承载链路状态信息的是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秒。

LSP PDU——用于交换链路状态信息。

 实节点LSP

伪节点LSP(只在广播链路存在)

 除了LSP用来承载链路状态信息以外,还有SNP PDU——用于维护LSDB 的完整与同步,且为摘要信息。

 SNP PDU(Sequence Number PDU):

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

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

 CSNP 类似于OSPFDD报文,传递的是LSDB里所有链路信息摘要。PSNP类似于OSPFLSRLSAck报文用于请求和确认部分链路信息.

注意:协议报文都分为Level-1Level-2两种,在MA网络中所有协议报文的目的MAC都是组地址:

Level-1地址为:0180-C200-0014

Level-2地址为:0180-C200-0015

 

链路状态信息的交互 

P2P网络LSDB同步过程,如下图所示,

 建立邻居关系之后,RTA与RTB会先发送CSNP给对端设备。如果对端的LSDBCSNP没有同步,则发送PSNP请求索取相应的LSP

假定RTB向RTA索取相应的LSP,此时向RTA发送PSNPRTA发送RTB请求的LSP的同时启动LSP重传定时器,并等待RTB发送PSNP作为收到LSP的确认。如果在接口LSP重传定时器超时后,RTA还没有收到RTB发送的PSNP报文作为应答,则重新发送该LSP直至收到RTBPSNP报文作为确认。

注意:P2P网络CSNP报文只发送一次,邻居建立后立即发送。

MA网络中新加入的路由器与DIS 的LSDB同步交互过程,如下图所示:

 
假设新加入的路由器RTC已经与RTBDIS)和RTA建立了邻居关系。

 建立邻居关系之后,RTC将自己的LSP发往组播地址(Level-101-80-C2-00-00-14Level-201-80-C2-00-00-15)。这样网络上所有的邻居都将收到该LSP

该网段中的DIS会把收到RTCLSP加入到LSDB中,并等待CSNP报文定时器超时(DIS每隔10秒发送CSNP报文)并发送CSNP 报文,进行该网络内的LSDB同步。RTC收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP(如RTARTBLSP就没有)。

RTB作为DIS收到该PSNP报文请求后向RTC发送对应的LSP进行LSDB 的同步。

注意:MA网络CSNP报文只由DIS组播发送,时间默认为10秒。

路由算法

ISIS路由计算开销方式:设备默认接口开销值都是10
SPF计算过程:单区域LSDB同步完成,2.生成全网拓扑结构图,3.以本节点为根生成最短路径树,4.默认跨越每个节点开销一样。
IS-IS的计算特点:
在本区域内路由器第一次启动的时候执行的是Full-SPF算法。
后续收到的LSP更新,如果是部分拓扑的变化执行的iSPF计算。
如果只是路由信息的变化,执行的就是PRC计算。
由于采用拓扑与网络分离的算法,路由收敛速度得到了加强。
 
ISIS路由计算的开销方式:
Narrow模式(设备默认模式开销都是10,手工配置接口开销取值范围为163)。
Wide模式(设备默认模式开销都是10,手工配置接口开销取值范围是116777215)。
进程下加入auto-cost enable命令,Narrow模式和Wide模式都会参考接口带宽大小计算开销值,只是参考准则有少许差异。
 
网络分层路由域

 

为了支持大规模的路由网络,IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构。一般来说,将Level-1路由器部署在非骨干区域,Level-2路由器和Level-1-2路由器部署在骨干区域。每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。
拓扑中为一个运行IS-IS协议的网络,它与OSPF的多区域网络拓扑结构非常相似。整个骨干区域不仅包括Level-2的所有路由器,还包括Level-1-2路由器。Level-1-2级别的路由器可以属于不同的区域,在Level-1区域,维护Level-1LSDB,在Level-2区域,维护Level-2LSDB
如下图所示

 

 在OSPF中,每个链路只属于一个区域;而在IS-IS中,每个链路可以属于不同的区域;在IS-IS中,单个区域没有物理的骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域;在IS-IS中,Level-1Level-2级别的路由器分别采用SPF算法,分别生成最短路径树SPT;在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。

 Level-1路由器的路由特点:

只拥有Level-1的链路状态数据库。

其链路状态数据库中只有本区域路由器LSP

其路由表里没有其他区域的路由信息。

其路由表里都有一条默认路由,下一条是指向到Level-1-2路由器。

Level-2路由器的路由特点:

Level-2路由器只有Level-2的链路状态数据库。

其LSDB中有骨干区域路由器的LSP,但是没有Level-1路由器产生的LSP

路由表里面有整个网络的路由信息。

Level-1-2路由器的路由特点:

Level-1-2路由器同时拥有Level-2Level-1的链路状态数据库。

Level-1数据库包含本区域的LSPLevel-2数据库包含骨干区域LSP

在自己产生的Level-1LSP中设置了ATT比特位为1

路由表里面有整个网络的路由信息。

 如上图所示,Level 1路由器和Level 1-2路由器处于同一个area49.0001区域,level 2路由器处在 area 49.0002,很明显不在同一个区域里,但是level 1-2路由器和level 2路由器共同组成了骨干区域。

区域49.0001访问区域49.0002的时候,L1/2路由器RTA产生ATT置位为1LSP,L1路由器收到ATT1LSP会产生下一跳指向L1/2路由器的默认路由

当区域49.0002访问区域49.0001的时候,L1/2路由器RTA会把区域49.0001的明细路由以叶子节点方式挂载在L2级别的LSP上面并处在Level-2LSDB中,L2路由器通过自己SPF计算得出访问Area49.0001的明细路由

配置:

 

 

 实验要求:

如图所示,客户网络所有路由器路由协议要求启用IS-IS,使全网路由可达。全部IS-IS进程号统一为100,其中AR1在Area49.0001区域为DIS,AR4与AR5之间要求采用P2P网络类型,AR5引入直连链路192.168.X.X,要求AR1访问Area49.0002走最优路径。根据上述描述,进行正确配置,使网络路由达到客户需求。

NET地址编号:
RTA49.0001.0000.0000.0001.00
RTB49.0001.0000.0000.0002.00
RTC49.0001.0000.0000.0003.00
RTD49.0002.0000.0000.0004.00
RTE49.0002.0000.0000.0005.00
 
 

 实验步骤:

1.在各个路由器上配置ISIS 100,并配置好规定的NET地址编号,

2.在接口下使能isis 100

3.修改链路类型

4.更改接口开销值,进行最优选路

5.AR1的链路接口修改其DIS的优先级为最高,让其成为DIS

6.进行路由渗透:如果一个level-1区域有两个以上Level-1-2路由器,则区域内Level-1路由器访问其他区域会选择最近的Level-1-2路由器,但是计算的开销值只计算本区域内的,如果最近的Level-1-2路由器在Level-2区域到达目的网络的开销相对比较大,实际会造成业务次优路径。在这种场景下需要做路由渗透操作,把Level-2区域的明细路由(包括开销)引入到Level-1区域,由Level-1路由器自行计算选择最优的路径访问跨区域网络。

7.进入路由器AR5引入直连链路。

 sysname AR1

isis 100  配置ISIS 100
 is-level level-1 修改路由器的类型为Leve1 1,如果不做修改则默认为Level 1-2
 network-entity 49.0001.0000.0000.0001.00  配置规定的NET地址编号,
#
interface GigabitEthernet0/0/0
 ip address 10.0.123.1 255.255.255.0 
 isis enable 100 在接口下使能isis 100
 isis dis-priority 127 配置接口的isis优先级最高,让它成为DIS

 

其他路由器上的配置如下:(只展示相关配置)

<AR2>
#
 sysname AR2
#
isis 100
 network-entity 49.0001.0000.0000.0002.00
 import-route isis level-2 into level-1 在Level 1中注入Level 2的路由信息,让level 1的路由器能够了解到去往别的网段的明细信息
#
interface GigabitEthernet0/0/0
 ip address 10.0.123.2 255.255.255.0 
 isis enable 100
#
interface GigabitEthernet0/0/1
 ip address 10.0.24.2 255.255.255.0 
 isis enable 100

在没有注入level 2的路由信息的时候,isis的路由表如下图所示

通过缺省路由去访问未知网络,包括访问ISIS里面的Level 2的路由表

注入level 2的路由信息之后,isis路由表就变成了如下图所示,

就有了明细路由,这是注入路由的好处。

 

<AR3>
 sysname AR3
#
isis 100
 network-entity 49.0001.0000.0000.0003.00
 import-route isis level-2 into level-1 同样的还是注入路由
#
interface Serial4/0/0
 link-protocol ppp
 ip address 10.0.34.3 255.255.255.0 
 isis enable 100
 isis cost 15 修改开销值,选择最优的路径
#
interface GigabitEthernet0/0/0
 ip address 10.0.123.3 255.255.255.0 
 isis enable 100


<AR4>
#
 sysname AR4
#
isis 100
 is-level level-2
 network-entity 49.0002.0000.0000.0004.00
#
interface Serial4/0/0
 link-protocol ppp
 ip address 10.0.34.4 255.255.255.0 
 isis enable 100
#
interface GigabitEthernet0/0/0
 ip address 10.0.24.4 255.255.255.0 
 isis enable 100
#
interface GigabitEthernet0/0/1
 ip address 10.0.45.4 255.255.255.0 
 isis enable 100
 isis circuit-type p2p 修改链路类型为点到点
#
<AR5>
#
 sysname AR5
#
isis 100
 is-level level-2
 network-entity 49.0002.0000.0000.0005.00
 import-route direct  引入直连路由
#
interface GigabitEthernet0/0/0
 ip address 10.0.45.5 255.255.255.0 
 isis enable 100
 isis circuit-type p2p
#
interface LoopBack0
 ip address 192.168.25.1 255.255.255.0 
#
interface LoopBack1
 ip address 192.168.15.1 255.255.255.0 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章