ISIS协议详解

ISIS协议

概述

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

九种报文

  • Hello:用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)hello时间为10s,hold时间 为30s,DIS路由器发送hello时间为3.3s,hold时间依然为30s
    • Broadcast L1-Hello 用于建立Level-1 的邻居关系 ,使用组播方式发送,地址:0180.C200.0014
    • Broadcast L2-Hello 用于建立Level-2 的邻居关系 ,使用组播方式发送,地址:0180.C200.0015
    • 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

路由器类型

Level-1路由器

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

Level-2路由器

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

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

邻居关系建立

广播网络:

  • 采用的是可靠的邻接建立过程,如果在接收的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。

常用命令

$ 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的链路状态数据库信息

实验拓扑

image

  • 掌握IS-IS协议DIS优先级修改方式
  • 掌握IS-IS协议网络类型修改方式
  • 掌握IS-IS协议外部路由引入
  • 掌握IS-IS接口cost修改方式
  • 掌握IS-IS路由渗透配置方式

配置IP地址(已省略)

配置ISIS

配置R1

[R1]isis 1 
[R1-isis-1]network-entity 49.0002.0000.0000.0001.00
[R1-isis-1]is-level level-2 
Info: IS Level Changed, Resetting ISIS...
[R1]interface LoopBack0
[R1-LoopBack0]isis enable 
[R1-Ethernet0/0/0]isis enable 
[R1]interface Eth0/0/1 
[R1-Ethernet0/0/1]isis enable  
[R1]interface GigabitEthernet0/0/0	
[R1-GigabitEthernet0/0/0]isis  enable 
[R1]display isis interface 

                       Interface information for ISIS(1)
                       ---------------------------------
 Interface       Id      IPV4.State          IPV6.State      MTU  Type  DIS   
 Loop0           001         Up                 Down         1500 L1/L2 -- 
 Eth0/0/0        001         Up                 Down         1497 L1/L2 No/No 
 Eth0/0/1        002         Up                 Down         1497 L1/L2 No/No 
 GE0/0/0         003         Up                 Down         1497 L1/L2 No/No 

配置R2

[R2]isis 1 
[R2-isis-1]network-entity 49.0001.0000.0000.0002.00
[R2]interface LoopBack 0 
[R2-LoopBack0]isis enable 
[R2]interface Eth0/0/0
[R2-Ethernet0/0/0]isis enable 
[R2]interface Eth0/0/1 
[R2-Ethernet0/0/1]isis enable 
[R2]display isis interface 

                       Interface information for ISIS(1)
                       ---------------------------------
 Interface       Id      IPV4.State          IPV6.State      MTU  Type  DIS   
 Loop0           001         Up                 Down         1500 L1/L2 -- 
 Eth0/0/0        001         Up                 Down         1497 L1/L2 No/No 
 Eth0/0/1        002         Up                 Down         1497 L1/L2 No/No 

配置R3

[R3]isis 1 
[R3-isis-1]network-entity 49.0001.0000.0000.0003.00
[R3]interface LoopBack0
[R3-LoopBack0]isis enable
[R3]interface Eth0/0/0
[R3-Ethernet0/0/0]isis enable 	
[R3]interface  Eth0/0/1 
[R3-Ethernet0/0/1]isis  enable 

配置R4

[R4]isis  1
[R4-isis-1]network-entity 49.0001.0000.0000.0004.00
[R4-isis-1]is-level level-1
[R4]interface  LoopBack0
[R4-LoopBack0]isis enable 
[R4]interface Eth0/0/0
[R4-Ethernet0/0/0]isis  enable 

配置R5

[R5]isis 1 
[R5-isis-1]network-entity 49.0002.0000.0000.0005.00
[R5-isis-1]is-level level-2 
Info: IS Level Changed, Resetting ISIS...
[R5]interface LoopBack0 
[R5-LoopBack0]isis enable 
[R5]interface Eth0/0/0
[R5-Ethernet0/0/0]isis enable 

修改DIS的优先级

R2、R3和R4在一个广播网络下建立邻居,因此需要选举DIS,默认情况下,DIS优先级都为64,如果优先级相同MAC地址大的接口将成为DIS,我们希望选举更为清晰,因此通过修改R4的DIS优先级来保证其成为DIS。

修改R4的DIS

[R4]interface Eth0/0/0

[R4-Ethernet0/0/0]isis dis-priority 120 
[R4]display isis interface 

                       Interface information for ISIS(1)
                       ---------------------------------
 Interface       Id      IPV4.State          IPV6.State      MTU  Type  DIS   
 Loop0           001         Up                 Down         1500 L1/L2 -- 
 Eth0/0/0        001         Up                 Down         1497 L1/L2 Yes/No 
 
 # 在R2 R3查看发现R4的优先值发生改变
 # [R3]display isis peer 

                          Peer information for ISIS(1)

  System Id     Interface          Circuit Id       State HoldTime Type     PRI
-------------------------------------------------------------------------------
0000.0000.0002  Eth0/0/0           0000.0000.0004.01 Up   27s      L1(L1L2) 64 
0000.0000.0004  Eth0/0/0           0000.0000.0004.01 Up   8s       L1       120
0000.0000.0002  Eth0/0/0           0000.0000.0003.01 Up   22s      L2(L1L2) 64 
0000.0000.0001  Eth0/0/1           0000.0000.0003.02 Up   26s      L2       64 
# [R2]display isis peer 

                          Peer information for ISIS(1)

  System Id     Interface          Circuit Id       State HoldTime Type     PRI
-------------------------------------------------------------------------------
0000.0000.0002  Eth0/0/0           0000.0000.0004.01 Up   27s      L1(L1L2) 64 
0000.0000.0004  Eth0/0/0           0000.0000.0004.01 Up   8s       L1       120
0000.0000.0002  Eth0/0/0           0000.0000.0003.01 Up   22s      L2(L1L2) 64 
0000.0000.0001  Eth0/0/1           0000.0000.0003.02 Up   26s      L2       64 

配置ISIS的网络类型

在广播网络中,IS-IS默认会将接口的circuit-type设置为广播模式,并参与DIS的选举。但在拓扑中R1和R5之间的以太网只有两台路由器,我们可以将这两台路由器之间的互联接口设置为点到点模式,进行优化。

修改R1和R5

[R1]interface GigabitEthernet0/0/0 	
[R1-GigabitEthernet0/0/0]isis circuit-type p2p 

[R5]interface Eth0/0/0
[R5-Ethernet0/0/0]isis circuit-type p2p 

# 查看结果.
[R1]display isis peer 

                          Peer information for ISIS(1)

  System Id     Interface          Circuit Id       State HoldTime Type     PRI
-------------------------------------------------------------------------------
0000.0000.0003  Eth0/0/0           0000.0000.0003.02 Up   9s       L2       64 
0000.0000.0002  Eth0/0/1           0000.0000.0002.02 Up   8s       L2       64 
0000.0000.0005  GE0/0/0            0000000002        Up   22s      L2       -- 

[R5]display  isis peer 

                          Peer information for ISIS(1)

  System Id     Interface          Circuit Id       State HoldTime Type     PRI
-------------------------------------------------------------------------------
0000.0000.0001  Eth0/0/0           0000000002        Up   21s      L2       -- 

Total Peer(s): 1

配置ISIS外部路由引入

在引入路由之前,先检查当前所有路由的学习情况,R1去往R4的路由呈现负载均衡的状态,数据包将会e0/0/0和e0/0/1之间均匀分布:

因为R2是LEVEL-1-2路由器,因此在两个level生成不同的路由,注意在level1会有默认路由的条目,指向空接口,R3和R2的情况相同:

由于R4是L1路由器,只能和同区域的L1或者LEVEL-1-2路由器建立邻居,并且默认情况下L1路由器无法学到L2的路由信息,只能够通过默认路由访问外部,R4可以看到两条默认路由指向R2和R3,呈现负载均衡。

在R5上创建新的Lookback接口,引入到isis进程:

[R5]interface LoopBack 1 
[R5-LoopBack1]ip address 192.168.1.1 24 
[R5]interface LoopBack2 
[R5-LoopBack2]ip address 192.168.2.1 24 
[R5]interface LoopBack3 
[R5-LoopBack3]ip address 192.168.3.1 24 
[R5-isis-1]import-route direct level-2 

此时在R4上再次查看路由表,发现并没有变化,原因是在默认情况下,L2路由不会渗透进入L1路由器,但通过默认路由,R4可访问 192.168.1.0/24、192.168.2.0/24和192.168.3.0/24。

[R4]display ip routing-table protocol isis
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : ISIS
         Destinations : 5        Routes : 6        

ISIS routing table status : <Active>
         Destinations : 5        Routes : 6

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   ISIS-L1 15   10          D   10.0.234.2      Ethernet0/0/0
                    ISIS-L1 15   10          D   10.0.234.3      Ethernet0/0/0
       10.0.2.2/32  ISIS-L1 15   10          D   10.0.234.2      Ethernet0/0/0
       10.0.3.3/32  ISIS-L1 15   10          D   10.0.234.3      Ethernet0/0/0
      10.0.12.0/24  ISIS-L1 15   20          D   10.0.234.2      Ethernet0/0/0
      10.0.13.0/24  ISIS-L1 15   20          D   10.0.234.3      Ethernet0/0/0

ISIS routing table status : <Inactive>
         Destinations : 0        Routes : 0

[R4]ping 192.168.1.1
  PING 192.168.1.1: 56  data bytes, press CTRL_C to break
    Reply from 192.168.1.1: bytes=56 Sequence=1 ttl=253 time=90 ms
    Reply from 192.168.1.1: bytes=56 Sequence=2 ttl=253 time=110 ms
    Reply from 192.168.1.1: bytes=56 Sequence=3 ttl=253 time=90 ms

  --- 192.168.1.1 ping statistics ---
    3 packet(s) transmitted
    3 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 90/96/110 ms

修改ISIS接口的Cost值

默认情况下,IS-IS接口cost值为10,不会基于带宽自动计算,对于R1来说,去往R4的流量会在R2和R3上负载均衡,但由于R1和R2之间使用Series接口,带宽较小,容易出现瓶颈,因此可以通过修改相应的cost值来控制R1的选路。

增大出口的cost值:

[R1]interface Eth0/0/1 
[R1-Ethernet0/0/1]isis cost 15
[R1]display isis route 

                         Route information for ISIS(1)
                         -----------------------------

                        ISIS(1) Level-2 Forwarding Table
                        --------------------------------

IPV4 Destination     IntCost    ExtCost ExitInterface   NextHop         Flags
-------------------------------------------------------------------------------
192.168.2.0/24       10         0       GE0/0/0         10.0.15.5       A/-/-/-
10.0.3.3/32          10         NULL    Eth0/0/0        10.0.13.3       A/-/-/-
192.168.1.0/24       10         0       GE0/0/0         10.0.15.5       A/-/-/-
10.0.13.0/24         10         NULL    Eth0/0/0        Direct          D/-/L/-
10.0.2.2/32          15         NULL    Eth0/0/1        10.0.12.2       A/-/-/-
10.0.5.5/32          10         NULL    GE0/0/0         10.0.15.5       A/-/-/-
10.0.234.0/24        20         NULL    Eth0/0/0        10.0.13.3       A/-/-/-
10.0.12.0/24         15         NULL    Eth0/0/1        Direct          D/-/L/-
10.0.1.1/32          0          NULL    Loop0           Direct          D/-/L/-
10.0.4.4/32          20         NULL    Eth0/0/0        10.0.13.3       A/-/-/-
192.168.3.0/24       10         0       GE0/0/0         10.0.15.5       A/-/-/-
10.0.15.0/24         10         NULL    GE0/0/0         Direct          D/-/L/-
     Flags: D-Direct, A-Added to URT, L-Advertised in LSPs, S-IGP Shortcut,
                               U-Up/Down Bit Set

配置ISIS路由渗透

观察R4的数据转发,由于R4对Level-2网络状况一无所知,因此使用负载均衡转发数据到R2和R3,如果我们希望R4不使用R2到R1之间的链路,可以通过路由渗透将Level-2的路由引入到Level-1中,通过路由最长匹配选路,从R3转发去往R5的数据包。

测试tracert之前,需要在R5上开启端口不可达的响应,默认是关闭的,如果不开启,则最后一跳会超时。

在开启前:

[R4]tracert 192.168.1.1

 traceroute to  192.168.1.1(192.168.1.1), max hops: 30 ,packet length: 40,press 
CTRL_C to break 

 1 10.0.234.2 60 ms  70 ms  60 ms 

 2 10.0.13.1 90 ms  80 ms  110 ms 

 3 10.0.15.5 110 ms  60 ms  140 ms 

在R5上开启后:

[R5]icmp port-unreachable send

[R4]tracert 192.168.1.1

 traceroute to  192.168.1.1(192.168.1.1), max hops: 30 ,packet length: 40,press 
CTRL_C to break 

 1 10.0.234.2 30 ms  80 ms  30 ms 

 2 10.0.13.1 110 ms  90 ms  70 ms 

 3 10.0.15.5 110 ms  110 ms  100 ms 

可以看到每次发出的tracert包会在两个下一跳地址负载均衡到达R5,此时我们在R3开启路由渗透,使得R3为更优的下一跳:

[R3]isis 1 
[R3-isis-1]import-route isis level-2 into level-1 

[R4]display  isis route 

                         Route information for ISIS(1)
                         -----------------------------

                        ISIS(1) Level-1 Forwarding Table
                        --------------------------------

IPV4 Destination     IntCost    ExtCost ExitInterface   NextHop         Flags
-------------------------------------------------------------------------------
0.0.0.0/0            10         NULL    Eth0/0/0        10.0.234.2      A/-/-/-
                                        Eth0/0/0        10.0.234.3     
192.168.2.0/24       10         20      Eth0/0/0        10.0.234.3      A/-/-/U
10.0.3.3/32          10         NULL    Eth0/0/0        10.0.234.3      A/-/-/-
192.168.1.0/24       10         20      Eth0/0/0        10.0.234.3      A/-/-/U
10.0.13.0/24         20         NULL    Eth0/0/0        10.0.234.3      A/-/-/-
10.0.2.2/32          10         NULL    Eth0/0/0        10.0.234.2      A/-/-/-
10.0.5.5/32          30         NULL    Eth0/0/0        10.0.234.3      A/-/-/U
10.0.234.0/24        10         NULL    Eth0/0/0        Direct          D/-/L/-
10.0.12.0/24         20         NULL    Eth0/0/0        10.0.234.2      A/-/-/-
10.0.1.1/32          20         NULL    Eth0/0/0        10.0.234.3      A/-/-/U
10.0.4.4/32          0          NULL    Loop0           Direct          D/-/L/-
192.168.3.0/24       10         20      Eth0/0/0        10.0.234.3      A/-/-/U
10.0.15.0/24         30         NULL    Eth0/0/0        10.0.234.3      A/-/-/U
     Flags: D-Direct, A-Added to URT, L-Advertised in LSPs, S-IGP Shortcut,
                               U-Up/Down Bit Set


[R4]display ip routing-table protocol  isis
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : ISIS
         Destinations : 11       Routes : 12       

ISIS routing table status : <Active>
         Destinations : 11       Routes : 12

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   ISIS-L1 15   10          D   10.0.234.2      Ethernet0/0/0
                    ISIS-L1 15   10          D   10.0.234.3      Ethernet0/0/0
       10.0.1.1/32  ISIS-L1 15   20          D   10.0.234.3      Ethernet0/0/0
       10.0.2.2/32  ISIS-L1 15   10          D   10.0.234.2      Ethernet0/0/0
       10.0.3.3/32  ISIS-L1 15   10          D   10.0.234.3      Ethernet0/0/0
       10.0.5.5/32  ISIS-L1 15   30          D   10.0.234.3      Ethernet0/0/0
      10.0.12.0/24  ISIS-L1 15   20          D   10.0.234.2      Ethernet0/0/0
      10.0.13.0/24  ISIS-L1 15   20          D   10.0.234.3      Ethernet0/0/0
      10.0.15.0/24  ISIS-L1 15   30          D   10.0.234.3      Ethernet0/0/0
    192.168.1.0/24  ISIS-L1 15   94          D   10.0.234.3      Ethernet0/0/0
    192.168.2.0/24  ISIS-L1 15   94          D   10.0.234.3      Ethernet0/0/0
    192.168.3.0/24  ISIS-L1 15   94          D   10.0.234.3      Ethernet0/0/0

ISIS routing table status : <Inactive>
         Destinations : 0        Routes : 0
posted @ 2021-08-21 15:31  isicman  阅读(3358)  评论(0编辑  收藏  举报