IS-IS原理与配置

简介: IS-IS原理与配置

Level1的优于Level2的路由,优于UD置位的Level1

IS-IS的基本概念

IS-IS概述

IS-IS是一种链路状态路由协议优先级是15,cost值默认是10

IS-IS工作在数据链路层,使用组播MAC地址:

  • Level1:0180-c200-0014
  • Level2:0180-c200-0015

CLNS由以下三个部分组成:

  • CLNP:类似于TCP/IP中的IP协议。
  • IS-IS:类似于TCP/IP中的OSPF。
  • ES-IS:类似于TCP/IP中的ARP,ICMP等。

集成IS-IS特点:

  • 支持CLNP网络、IP网络
  • 采用数据链路层封装

OSPF特点:

  • 只支持IP网络
  • 采用IP报文封装

NET

NET(网络实体名称)是OSI协议栈中设备的网络层信息,主要用于路由计算,由区域地址(Area ID)和System ID、SEL组成。

System ID一共必须有12个数字,因为是6个字节

区域地址只需要在13个字节数内即可

SEL为00

一个字节=8个二进制数=2个16进制数

IS-IS和OSPF区域划分的区别

IS-IS采用骨干区域和非骨干区域的分层结构:

  • Level1路由器部署在非骨干区域。
  • Level2路由器和Level-1-2路由器部署在骨干区域。

每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。

IS-IS和OSPF的不同点:

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

IS-IS支持的网络类型

广播(Broadcast):如Ethernet。

点到点(P2P):如PPP、HDLC等。

IS-IS开销值

IS-IS接口的cost在缺省情况下并不与接口带宽相关,无论接口带宽多大去,缺省时cost为10。

IS-IS有三种方式来确定接口的开销,按照优先级由高到低分别是

  • 接口开销:为单个接口设置开销。
  • 全局开销:为所有接口设置开销。
  • 自动计算开销:根据接口带宽自动计算开销。

开销类型:

narrow 默认,最大取值63

wide 最大取值1677721

配置IS-IS接口开销类型

①narrow:指定IS-IS设备所有接口只能接收和发送开销类型为narrow的路由。

                  Narrow模式下路由的开销值取值范围为1~63的整数。

②wide:指定IS-IS设备所有接口只能接收和发送开销类型为wide的路由。

                wide模式下路由的开销值取值范围为1~16777215的整数。

③wide-compatible:指定IS-IS设备所有接口可以接收开销类型为narrow和wide的路由,

                                    但却只发送开销类型为wide的路由。

④narrow-compatible:指定IS-IS设备所有接口可以接收开销类型为narrow和wide的路由,

                                       但却只发送开销类型为narrow的路由。

⑤compatible:指定IS-IS设备所有接口可以接收和发送开销类型为narrow和wide的路由。

IS-IS报文类型

IS-IS的PDU有4种类型:IIH(IS-IS Hello),LSP(链路状态报文),CSNP(全序列号报文),PSNP(部分序列号报文)。

IIH:用于建立和维持邻接关系。类似于Hello报文。默认10S,DIS3.3秒

LSP:用于交换链路状态信息。Level-1-2则用于传送两种LSP。

SNP:通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。SNP包括CSNP和PSNP,进一步又可分为Level1 CSNP、Level2 CSNP,Level1 PSNP和Level2 PSNP。

CSNP包含该设备LSDB中所有的LSP摘要,路由器通过交互 CSNP来判断是否需要同步LSDB。

PSNP只包含部分LSP的摘要信息。当发现LSDB不同时,PSNP请求邻居发送新的LSP,P2P使用PSNP对收到的LSP作确认。

共有九种明细报文:Level-1 IIH,Level-2 IIH,P2P IIH;Level-1 LSP,Level-2 LSP;Level-1 CSNP,Level-2 CSNP;Level-1 PSNP,Level-2 PSNP

TLV

TLV的含义是:类型(Type),长度(Length) ,值(Vaule)。实际上是一个数据结构,这个结构包含了这三个字段 。

使用TVL结构构建报文的好处是灵活性和扩展性好。采用TVL使得报文的整体结构固定,增加新特性只需要增加新TVL即可不需要改变整个报文的整体结构。

IS-IS形成邻居关系的条件

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

2.对于Level-1路由器来说,必须在同一区域。

3.链路两端IS-IS接口的地址必须同一网段。

4.链路两端IS-IS接口的网络类型相同 ,P2P  broadcast。(不同的网络类型发送的报文不一样)

5.接口相同的mtu 值

6.认证相同

7.接口未被设置为silent

8.在 P2P网络中 ,system-id 长度要一致,最大区域地址数要相同

注意以下因素不影响ISIS 邻居的建立:

(1)cost-style 不一致(计算路由会有问题,建立邻居没有问题)

(2)hello 时间不一致

  • p2p HelloTimer 10 DeadTimer 30
  • 广播dis HelloTimer 3 DeadTimer 10
  • 广播非dis HelloTimer 10 DeadTimer 30

IS-IS接口开销类型两端类型不一致,邻居可以建立,但路由不能学习

IS-IS路由器的分类

  • Level-1可以和相同区域的Level-1、Level-1-2建立Level-1邻接关系
  • Level-2可以和任何一个Level-2、Level-1-2建立Level-2邻接关系
  • Level-1-2可以和相同区域的Level-1建立Level-1邻接关系,可以和任何区域的Level-2、Level-1-2形成邻接关系

IS-IS路由器的分类Level-1

Level1路由器是一种IS-IS区域内部路由器。

Level1路由器只维护Level1的LSDB,该LSDB只包含本区域的路由信息。Level-1路由器只能通过Level-1-2路由器访问其他区域。

IS-IS路由器的分类Level-2

Level2路由器是IS-IS骨干路由器,路由器维护一个Level-2的LSDB,该LSDB包含整个IS-IS域的所有路由信息。

所路由域中Level2级别的路由器必须是物理连续的,以保证骨干网的连续性。

IS-IS路由器的分类Level-1-2

Level-1-2路由器与OSPF中ABR非常相似。

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

在华为设备上配置IS-IS时,缺省时,路由器全局Level为Level-1-2,可以通过命令修改设备的类型。

IS-IS的工作原理

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

IS-IS邻居关系的建立过程

广播网络中的邻接关系建立过程

不同类型的网络上,IS-IS邻接建立方式并不同。在广播网络中,使用三次握手建立邻接关系。

  1. 在Down状态下,R1组播发送Level-1 LAN IIH,此报文中邻接列表为空。
  2. R2收到此报文后,将邻接状态标识为Inital。然后,R2再向R1回复Level-1 LAN IIH,此报文中标识R1为R2的邻接。
  3. R1收到此报文后,将自己                                                                          为Up。然后R1再向R2发送一个标识R2为R1邻接的Level-1 LAN IIH。
  4. R2收到此报文后,将自己与R1的邻接状态标识为Up。这样,两个路由器成功建立了邻接关系。
  5. 在广播网络中需要选举DIS,在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。

因为是广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔(20秒),再进行DIS的选举。

  • P2P链路邻居关系的建立

在P2P链路上,邻居关系的建立不同于广播链路。分为两次握手机制和三次握手机制。

  • 两次握手机制

只要路由器收到对端发来的Hello报文,就单方面宣布邻居为Up状态,建立邻居关系。

  • 三次握手机制

此方式通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,类似广播邻居关系的建立。

IS-IS和OSPF关于邻居关系的区别

IS-IS两个邻居路由器只要相互交换HELLO数据包就认为相互形成了邻接关系;而OSPF中,两台路由器进入2-Way状态则认为形成了邻接关系,但是只要进入Full状态才被认为进入完全邻接关系。

IS-IS中,优先级为0的路由器亦然可以参与DIS选举;而OSPF汇总优先级为0表示不参与选举。

IS-IS中,DIS是基于抢占的;OSPF中DR/BDR已经选举不得抢占。

IIH

IIH报文用于建立和维持邻接关系,广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH。

Level-1 IIH和Level-2 IIH发的组播地址分别为0180-C200-0014、0180-C200-0015。

Down:邻接关系的初始状态。

Inital:收到IIH,但是报文中的邻接列表未包含路由器自身的System ID。

Up:收到IIH,且邻接列表中包含路由器自身的System ID。

DIS与伪节点

DIS没有备份,且可以抢占,每10秒发CSNP,描述自己的LSDB。

Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。

DIS的选举规则如下:

  • DIS优先级数值最大的被选为DIS。范围是0-127,0参与选举
  • 如果优先级数值相等,则比较MAC地址最大的路由器会成为DIS。

DIS发送Hello PDU的时间间隔是普通路由器1/3(一般是10,DIS是3.3),这样可以确保DIS出现故障时能够被更快速地发现。

在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS。

伪节点:

DIS用来创建和更新伪节点,并负责生成伪节点的链路状态协议数据单元LSP,用来描述这个网络上有哪些网络设备。

伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和Circuit ID(非0值)标识。

DIS与DR的区别:

  • DR选举先看优先级,再比较router-id,DIS先看优先级,再看MAC地址。DR优先级默认为1,取值范围为0-255,DIS默认为64,取值范围为0-127。在IS-IS广播网中,优先级为0的路由器也参与DIS选举,OSPF中优先级为0的路由器不参与DR的选举。
  • DR有备份的设备BDR,而DIS没有备份的DIS。
  • DR的选举是在链路上选举,DIS选举分别为Level-1和Level-2,在路由器上选举。
  • 在IS-IS广播网中,当有新的路由器加入,并符合DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当有一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段的DR。
  • 在IS-IS广播网中,同一网段上同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系。

链路状态数据库

LSP

相当于OSPF中的LSDB。

LSP包含路由器所有的链路状态信息。LSP的生命周期是1200秒,900秒后会进行刷新

IS-IS链路状态报文LSP用于交换链路状态信息。Level-1-2路由器可以传送Level-1和Level-2的两种LSP。

LSP ID:由三部分组成,System ID、伪节点ID和LSP分片后的编号。

IS-IS的LSDB

伪节点标识:当参数为00,表示不是伪节点,不是DIS。当参数为01时,表示该LSP是伪节点。

0100.0000.1001.00-00*  

0100.0000.1001:System-ID

00:伪节点标识

00:分片号

*:自己产生的LSP

分片号:当IS-IS要发布的链路状态协议数据报文PDU中的信息量太大时,IS-IS路由器将会生成多个LSP分片,用来携带更多的IS-IS信息。分片号用来区分不同的LSP分片。

查看非伪节点的LSP

AREA ADDR:该LSP来源的区域号

INTF ADDR:该LSP中描述的接口地址

NBR ID:该LSP中描述的邻接信息

IP-Internal:该LSP中描述的网段信息

查看伪节点LSP

在伪节点LSP中,只包含邻接信息而不包含路由信息。

CSNP

CSNP 类似于OSPF的DD报文传递的是LSDB里所有链路信息摘要。

CSNP包含该设备LSDB中所有的LSP摘要路由器通过交互CSNP来判断是否需要同步LSDB。

  • 在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)。
  • 在点到点网络上,CSNP只在第一次建立邻接关系时发送。

Source ID:发送CSNP报文的路由器的System ID。

Start LSP:CSNP报文中第一个LSP的ID值。

End LSP ID:CSNP报文中最后一个LSP的ID值。

PSNP

PSNP类似于OSPF的LSR或LSAck报文用于请求和确认部分链路信息。

PSNP只包含部分LSP的摘要信息(与CSNP不同):

  • 当发现LSDB不同步时,PSNP来请求邻居发送新的LSP。
  • 在点到点的网络中,当收到LSP时,使用PSNP对收到的LSP进行确认。

Source ID:发出PSNP报文的路由器的System ID。

广播网络中LSP的同步过程

广播网络中新加入路由器与DIS同步LSDB数据库的过程:

  1. 新加入的路由器R3首先发送IIH报文,与该广播域中的路由器建立邻接关系。建立邻接关系之后,R3等待LSP刷新定时器超时,然后将自己的LSP发送组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻接都将收到该LSP。

R3首先发送IIH报文,建立邻接关系。然后把自己的LSP发送出去,使得网络上所有邻接都能收到R3的LSP。

  1. 该网段中的DIS会把收到R3的LSP加入到自己的LSDB中,并等待CSNP报文定时器超时并发送CSNP报文。

DIS把R3的LSP加入到自己的LSDB中,并发送CSNP报文。

  1. R3收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP。

R3收到DIS的CSNP报文后,对比自己的LSDB,然后向DIS发送PSNP报文请求LSP。

  1. DIS收到该PSNP报文请求后向R3发送对应的LSP进行LSDB的同步。

DIS收到该PSNP报文后向R3发送LSP进行LSDB同步。

点到点网络中LSP的同步过程

点到点网络上LSDB数据库的同步过程:

R1与R2先建立邻接关系。

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

假设R2向R1索取相应的LSP

  1. R1发送R2请求的LSP的同时启动LSP重传定时器,并等待R2发送的PSNP作为收到LSP的确认。

R1发送R2请求的LSP,并启动重传定时器,等待R2发送PSNP作为收到LSP的确认。

  1. 如果在接口LSP重传定时器超时后,R1没有收到R2发送的PSNP报文作为应答。

如果重传定时器超时,R1还没有收到R2发送的PSNP报文。

  1. 则R1重新发送该LSP。

那么R1重新再给R2发一遍R2请求的LSP。

  1. R2收到LSP后,发送PSNP进行确认。

R2收到之后,需要给R1发送PSNP进行确认,这样才同步成功。

LSP的处理机制

IS-IS通过交互LSP实现链路状态数据库同步,路由器收到LSP后,按照以下原则处理:

若收到的LSP比本地LSP的更优,或者本地没有收到的LSP:

  • 在广播网络中:将其加入数据库,并组播发送新的LSP。
  • 在点到点网络中:将其加入数据库,并发送PSNP报文来确认收到此LSP,之后将这新的LSP发送给除了发送该LSP的邻居以外的邻居。

若收到的LSP和本地的LSP无法比较出优劣,则不处理该LSP。

如果收到一个LSP多个实例时:

先比较序列号是否相同,再比较保活时间,最后比较校验和是否相同。

序列号越大越优,保活时间为0s的最优,校验和越大越优。

如果收到的LSP种,这三个都一样,则不处理收到的LSP。

LSP产生的原因,IS-IS路由域内的所有路由器都会产生LSP,以下事件会触发一个新的LSP:

  • 邻接up或down
  • IS-IS相关接口up或down
  • 引入的IP路由发生变化
  • 区域间的IP路由发生变化
  • 接口被赋了新的metric值
  • 周期性更新(刷新间隔15min)

路由计算

Level-1的路由优于Level-2的路由

比如R4访问R3,会通过Level-1路由器的路由访问,不会通过Level-2的路由器访问。

Level-1路由器的路由计算

Level-1区域到达其他区域的路由,需要Level-1-2设置ATT标志位,下发缺省路由,到达其他区域。

ATT置位产生的条件?

当一台isis路由器满足以下三个条件时,就会产生ATT=1的LSP,在L1区域进行通告:

(1)isis路由器为L1-2路由器

(2)存在L1的isis邻居关系

(3)存在L2的isis邻居关系,并且自身的区域id跟L2邻居的区域id不能一致

Level-1路由器的次优路径的问题

R1去往192.168.20.0/24网段,可以有路径1和路径2两条路走,但是明显路径1的路径更优,但仍然会有两条路径可走,没有选择最优路径,导致了出现次优路径,所以可以使用路由渗透方式引入最优路径。

缺省时,R1只能通过指向R2或R3的默认路由到达区域外部,但是R1距离R2和R3路由器的cost值相等,那么当R1发送数据包到192.168.20.0/24时,就有可能选择路径2,导致出现次优路径。

路由渗透

路由渗透可以解决次优路径问题,选出最优路径。可以在Level-1-2路由器上通过路由引入,把Level-2明细路由引入到Level-1,从而就有了最优路径。

import-route isis level-2 into level-1

缺省情况下,Level-1-2路由器不会将到达其他区域的路由通告本Level-1区域中。

通过路由渗透,可以将区域间路由通过Level-1-2路由器传递到Level-1区域,此时Level-1路由器可以学习到其他区域的详细路由,从而计算出最优路径。

默认情况下,Level-1路由会渗透到Level-2里,Level-2路由不会渗透到Level-1里。

路由渗透可能会造成环路

防环原则:

  • Level-1默认可以渗透到Level-2,Level-2默认不可以渗透到Level-1
  • 通过命令方式,将Level-2渗透到Level-1,那么会将这条LSP的UD位置位,其他的Level-1-2设备,不能使用UD置位的LSP选路,除非它失去了所有的Level-2邻居
  • Level-1-2设备不能使用其他Level-1-2设备产生的ATT置位的LSP进行选路(缺省路由),即使失去了所有Level-2的邻居,也不能使用

Level-1-2路由器的路由计算

Level-1-2路由器可以计算出不同区域的路由,而Level-1-2没有骨干区域的概念,只有路由域的概念,R2-R4,R3-R5是一个路由域,相当于骨干区域。

R2及R3都维护Level-1 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0001的路由器。

R2及R3都维护Level-2 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0002的路由。

R2及R3将到达Area 49.0001的路由以Level-2 LSP的形式发送到Area 49.0002。

Level-2路由器的路由计算

Level-2路由器不需要借助Level-1-2路由器来学习其他区域的路由,Level-2默认就能有R1的路由。

R4及R5作为Level-2路由器,只会维护Level-2 LSDB,它们能够根据该LSDB计算出到达全网各个网段的路由。

IS-IS的基本配置

IS-IS认证

IS-IS认证是基于网络安全性的要求而实现的一种认证手段,通过在ISIS报文中增加认证字段对报文进行认证。当本地路由器接收到远端路由器发送过来的ISIS报文,如果发现认证密码不匹配,则将收到的报文进行丢弃,达到自我保护的目的。

根据报文的种类,认证可以分为以下三类:

  • 接口认证:在接口视图下配置,对Level-1和Level-2的Hello报文进行认证。
  • 区域认证(只针对Level-1):在IS-IS进程视图下配置,对Level-1的CSNP、PSNP和LSP报文进行认证。
  • 路由域认证:在ISIS进程视图下配置,对Level-2的CSNP、PSNP和LSP报文进行认证。

根据报文的认证方式,可以分为以下四类:

  • 简单认证:将配置的密码直接加入到报文中,这种加密方式安全性较其他两种方式低。
  • MD5认证:通过将配置的密码进行MD5算法加密之后再加入报文中,提高密码的安全性。
  • Keychian认证:通过配置随时间变化的密码链表来进一步提升网络的安全性。
  • HMAC-SHA256认证:通过将配置的密码进行HMAC-SHA256算法加密之后再加入报文中,提高密码的安全性。

IS-IS认证详解

接口认证:Hello报文使用的认证密码保存在接口下,发送带认证TLV的认证报文,互相连接的路由器接口必须配置相同的口令。

区域认证:区域内的每一台Level-1路由器都必须使用相同的认证模式和具有共同的钥匙串。

路由域认证:

  1. IS-IS域内的每一台Level-2和Level-1-2类型的路由器都必须使用相同模式的认证,并使用共同的钥匙串。
  2. 对于区域和路由域认证,可以设置为SNP和LSP分开认证。
  • 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都进行认证检查。
  • 本地发送的LSP报文携带TLV,对收到LSP报文进行认证检查;发送的SNP报文携带认证TLV,但不对收到的SNP报文进行检查。
  • 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文不携带认证TLV,也不对收到的SNP报文进行认证检查。
  • 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都不进行认证检查。

IS-IS的认证配置

相关文章
|
存储 Kubernetes 负载均衡
k8s是什么以及它的原理和如何去使用它?
k8s是什么以及它的原理和如何去使用它?
|
7月前
|
机器学习/深度学习 数据采集 人工智能
奥卡姆剃刀原理
奥卡姆剃刀原理“【5月更文挑战第17天】”
78 4
|
7月前
|
编译器 C++ 容器
C++模板的原理及使用
C++模板的原理及使用
|
Kubernetes Cloud Native 调度
k8s 自身原理 2
k8s 自身原理 2
|
Kubernetes 监控 Cloud Native
k8s 自身原理 3
k8s 自身原理 3
|
存储 Kubernetes API
k8s 自身原理 1
k8s 自身原理 1
|
NoSQL Java 开发者
自动配置原理|学习笔记
快速学习自动配置原理
|
监控 Dubbo 搜索推荐
ShutdownHook原理
有了ShutdownHook我们可以 在进程结束时做一些善后工作,例如释放占用的资源,保存程序状态等 为优雅(平滑)发布提供手段,在程序关闭前摘除流量
308 0
ShutdownHook原理
|
存储 缓存 程序员
说了这么多次 I/O,可你知道其中的原理么(三)
现在让我们转向对 I/O 软件的研究,I/O 软件设计一个很重要的目标就是设备独立性(device independence)。啥意思呢?这意味着我们能够编写访问任何设备的应用程序,而不用事先指定特定的设备。
说了这么多次 I/O,可你知道其中的原理么(三)
MinHash原理与应用
MinHash首先它是一种基于 Jaccard Index 相似度的算法,也是一种LSH的降维的方法,应用于大数据集的相似度检索、推荐系统。下边按我的理解介绍下MinHash。 举例A,B 两个集合: A = {s1, s3, s6, s8, s9} B = {s3, s4, s7, s8,
3930 6