ISIS介绍


拓扑

image-20200322100508528

配置IP地址,注意每台设备上都配置一个lo0,过程省略

配置ISIS协议

R1(config)#router isis
R1(config)#log-adjacency-changes		# 邻居状态变化显示
R1(config-router)#net 49.0001.0000.0000.0001.00
R1(config-if)#int range e0/0 , lo0
R1(config-if-range)#ip router isis
=============================================
R2(config)#router isis
R2(config)#log-adjacency-changes
R2(config-router)#net 49.0001.0000.0000.0002.00
R2(config-router)#int range e0/0 -1 , lo0
R2(config-if-range)#ip router isis
=============================================
R3(config)#router isis
R3(config)#log-adjacency-changes
R3(config-router)#net 49.0001.0000.0000.0003.00
R3(config-router)#int range e0/0 -1 , lo0
R3(config-if-range)#ip router isis
=============================================
R4(config)#router isis
R4(config)#log-adjacency-changes
R4(config-router)#net 49.0002.0000.0000.0004.00
R4(config-router)#int range e0/0 -2 , lo0
R4(config-if-range)#ip router isis
=============================================
R5(config)#router isis
R5(config)#log-adjacency-changes
R5(config-router)#net 49.0003.0000.0000.0005.00
R5(config-router)#int range e0/0 , lo0
R5(config-if-range)#ip router isis

检查路由条目,以及是否可以全网互联

R5#sh ip route   
      1.0.0.0/24 is subnetted, 1 subnets
i L2     1.1.1.0 [115/40] via 192.168.45.4, 00:00:28, Ethernet0/0
      2.0.0.0/24 is subnetted, 1 subnets
i L2     2.2.2.0 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0
      3.0.0.0/24 is subnetted, 1 subnets
i L2     3.3.3.0 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0
      4.0.0.0/24 is subnetted, 1 subnets
i L2     4.4.4.0 [115/20] via 192.168.45.4, 00:00:28, Ethernet0/0
      5.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        5.5.5.0/24 is directly connected, Loopback0
L        5.5.5.5/32 is directly connected, Loopback0
i L2  192.168.24.0/24 [115/20] via 192.168.45.4, 00:00:28, Ethernet0/0
i L2  192.168.34.0/24 [115/20] via 192.168.45.4, 00:00:28, Ethernet0/0
      192.168.45.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.45.0/24 is directly connected, Ethernet0/0
L        192.168.45.5/32 is directly connected, Ethernet0/0
i L2  192.168.123.0/24 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0
R5#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

ISIS基础概念

  • 链路状态协议
  • 在cisco设备上ISIS的管理距离为115
  • 最早的时候对通信的过程理解,出现了两大阵营,一个是面向连接,一个是无连接
    • 面向连接认为通信前必须要建立连接,然后针对这个连接操作数据。代表协议栈:TCP/IP
    • 无连接认为通信前无需建立连接,可以做到低延迟,减少网络资源消耗。代表协议栈:CLNS/CLNP
  • ISIS在设计的时候,是针对CLNS/CLNP协议栈的,但是ISIS并没有非常依赖CLNP地址,所以后期开发团队稍微修改了ISIS的代码,变成了集成版本ISIS(DUAL ISIS)。相比较OSPF非常依赖IP地址,ISIS更加的灵活。
  • ISIS

三个表

邻居表

R2#show isis neighbors 

System Id       Type Interface     IP Address      State Holdtime Circuit Id
R1              L1   Et0/0         192.168.123.1   UP    21       R3.01              
R1              L2   Et0/0         192.168.123.1   UP    26       R3.01              
R3              L1   Et0/0         192.168.123.3   UP    7        R3.01              
R3              L2   Et0/0         192.168.123.3   UP    9        R3.01              
R4              L2   Et0/1         192.168.24.4    UP    9        R4.01 
  • System ID

    • 是系统ID,类似于OSPF中的Router-ID,不过这个system-id会和主机名做对应
    R2#show isis hostname 	# 这个命令可以看到主机名和系统ID的对应关系
    Level  System ID      Dynamic Hostname  (notag)
     2     0000.0000.0001 R1
         * 0000.0000.0002 R2
     2     0000.0000.0003 R3
     2     0000.0000.0004 R4
     2     0000.0000.0005 R5
  • Type

    • 是用来标识当前邻居的一个类型
    • 目前有两种类型
      • L1:level-1的邻居关系
      • L2:level-2的邻居关系
  • state
    • init
    • down
    • up
  • Holdtime
    • ISIS每隔10秒发送一次hello,用于维护邻居关系
    • 当30s没收到hello消息,那么判定邻居失效
  • Circuit ID

    • 术语电路地址,其实就是主机名.接口编号
    R2#show clns neighbors 
    System Id       Interface     SNPA                State  Holdtime  Type Protocol
    R1              Et0/0         aabb.cc00.1000      Up     23        L1   IS-IS
    R3              Et0/0         aabb.cc00.3000      Up     8         L1   IS-IS
    R4              Et0/1         aabb.cc00.4000      Up     9         L2   IS-IS

    查看clns邻居关系

  • SNPA

    • 在以太网中就是MAC地址
    • 在其他类型的网络中,是数据链路层的地址

链路状态数据库

R2#show isis database 

IS-IS Level-1 Link State Database:
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd      ATT/P/OL
R1.00-00              0x00000022   0x9555                1185/1199      0/0/0
R2.00-00            * 0x0000001D   0x01CA                1186/*         0/0/0
R2.01-00            * 0x00000008   0x70D9                1182/*         0/0/0
R3.00-00              0x00000015   0x4870                1190/593       1/0/0
R3.01-00              0x0000001B   0x4363                1190/846       0/0/0
IS-IS Level-2 Link State Database:
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd      ATT/P/OL
R1.00-00              0x00000024   0x8DB6                1190/244       0/0/0
R2.00-00            * 0x0000002B   0x310F                1197/*         0/0/0
R3.00-00              0x00000030   0x59DA                1185/1198      0/0/0
R4.00-00              0x00000019   0x2789                1190/931       0/0/0
R4.01-00              0x00000008   0x25A8                1190/692       0/0/0
R4.02-00              0x00000008   0x3794                1190/770       0/0/0
R5.00-00              0x0000000D   0x4FD4                1190/619       0/0/0
R5.01-00              0x00000008   0x5D6C                1190/718       0/0/0
  • LSPID
    • LSP接收的主机名.伪节点ID-分片ID
  • Seq Num
    • 每收到一个更新就加一,初始位0x00000001最大为0xffffffff,当最大值之后,再次加一,就回变成0x00000000,然后就回停止isis,直到再次更新的到来。
  • LSP Holdtime/Rcvd
    • ISIS的LSP消息寿命为1200s,当路由器更新这个消息之后,就回开始倒数计时,当更新了900s之后,就回再次更新消息,其他路由器收到了之后就回刷新倒计时。
  • ATT/P/OL

    • ATT:默认路由器标记
    • P:区域修复,类似于OSPF中的虚链路
    • OL:overload,意思是路由器超载了,流量如果有别的路线,就尽量绕开这个路由器

    路由表

    R5#sh ip route isis
          1.0.0.0/24 is subnetted, 1 subnets
    i L2     1.1.1.0 [115/40] via 192.168.45.4, 00:00:28, Ethernet0/0
          2.0.0.0/24 is subnetted, 1 subnets
    i L2     2.2.2.0 [115/30] via 192.168.45.4, 00:10:28, Ethernet0/0
          3.0.0.0/24 is subnetted, 1 subnets
    i L2     3.3.3.0 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0
          4.0.0.0/24 is subnetted, 1 subnets
    i L2     4.4.4.0 [115/20] via 192.168.45.4, 00:54:30, Ethernet0/0
    i L2  192.168.24.0/24 [115/20] via 192.168.45.4, 00:54:30, Ethernet0/0
    i L2  192.168.34.0/24 [115/20] via 192.168.45.4, 00:54:30, Ethernet0/0
    i L2  192.168.123.0/24 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0

名词解释

OSI术语 OSI术语解释 IP中“类似”
IS 中间系统 路由器
ES 终端系统 PC主机,手机等等
PDU 数据单元 数据包
NSAP 用来标识一个服务的地址 IP+端口号
NET 不区分服务的NSAP地址,只能标识哪个节点 IP
SNPA 数据链路层用的地址 MAC地址
SysID 上面中间系统的ID OSPF中的Router-ID
LSP 链路状态数据单元 OSPF中的LSA
LSPDB 链路状态数据库 OSPF中的LSDB
伪节点 OSPF中的DR

ISO编址

NSAP地址

一台路由器多个接口需要多个IP地址来标识

一个路由器只需要一个NSAP就可以标识了,不同的接口使用术语电路(circuit)来标识

  • AFI
    • 1字节的授权和格式标识符
    • 可以确定这个地址的功能和格式,在TCP/IP中几乎无用
    • 当时规定了49为私有地址,所以现在TCP/IP中配置ISIS,我们习惯性都以49开头
  • IDI
    • 可变长的初始域标识符
    • 用于表示子域,在TCP/IP中不写
  • Area
    • 大致类同IP中的子网
    • 2字节,现在用来表示ISIS设备所属的区域
  • SystemID
    • 6直接系统ID
    • 一台设备可以配置多个NSAP地址,但是系统ID必须一样
  • NSEL

    • 用于识别流量应该被系统哪个进程使用
    • 在TCP/IP中,都是0

    将IP地址变成systemID的做法是这样的,比如:

  1. 192.168.12.1
  2. 192168012001
  3. 1921.6801.2001

    多区域划分

  • ISIS路由器必须一整台都属于同一个区域
  • 规定不同区域的路由器只能建立L2的邻居关系,也就是L2是用来连接区域间的
  • L1是区域内部的路由器
  • L1和L2是指路由器的角色,L1和L2邻居关系是指接口的邻居类型
  • 默认情况下ISIS路由器是同时具备L1和L2功能的,被称为L1/L2路由器

    推荐如上图这样,在一个区域边界的路由器上开启L2功能,这样就可以变为L1/L2路由器,负责区域内外链路状态的传递。

ISIS区域内的路由学习情况,类似于OSPF的T-stub区域的情况,也就是L1路由器不能学习到其他区域的路由以及ISIS的外部路由。并且会产生一条默认路由指向最近的L1/L2路由器。

下面查看R1的路由表

R1#sh ip route isis
      2.0.0.0/24 is subnetted, 1 subnets
i L1     2.2.2.0 [115/20] via 192.168.123.2, 00:00:03, Ethernet0/0
      3.0.0.0/24 is subnetted, 1 subnets
i L1     3.3.3.0 [115/20] via 192.168.123.3, 00:00:03, Ethernet0/0
      4.0.0.0/24 is subnetted, 1 subnets
i L2     4.4.4.0 [115/30] via 192.168.123.3, 00:19:03, Ethernet0/0
                 [115/30] via 192.168.123.2, 00:19:03, Ethernet0/0
      5.0.0.0/24 is subnetted, 1 subnets
i L2     5.5.5.0 [115/40] via 192.168.123.3, 00:19:03, Ethernet0/0
                 [115/40] via 192.168.123.2, 00:19:03, Ethernet0/0
i L1  192.168.24.0/24 [115/20] via 192.168.123.2, 00:00:03, Ethernet0/0
i L1  192.168.34.0/24 [115/20] via 192.168.123.3, 00:00:03, Ethernet0/0
i L2  192.168.45.0/24 [115/30] via 192.168.123.3, 00:19:03, Ethernet0/0
                      [115/30] via 192.168.123.2, 00:19:03, Ethernet0/0

我们发现R1依旧可以学习其他区域的路由,这个是因为默认情况下所有路由器在开启ISIS的时候都是L1/L2路由器,这样的话R1就会和R2和R3建立两种邻居状态,一个是L1还有一个是L2的,维持多个邻居状态会更加消耗系统的资源,所以我们不应该这样做。

router isis
 is-type level-1
# 把R1改成Level-1的路由器

检查R1的邻居状态

R1#show isis neighbors 

System Id       Type Interface     IP Address      State Holdtime Circuit Id
R2              L1   Et0/0         192.168.123.2   UP    22       R3.01              
R3              L1   Et0/0         192.168.123.3   UP    7        R3.01  

检查R1的路由表

R1#show ip route isis
i*L1  0.0.0.0/0 [115/10] via 192.168.123.3, 00:00:36, Ethernet0/0
                [115/10] via 192.168.123.2, 00:00:36, Ethernet0/0
      2.0.0.0/24 is subnetted, 1 subnets
i L1     2.2.2.0 [115/20] via 192.168.123.2, 00:00:36, Ethernet0/0
      3.0.0.0/24 is subnetted, 1 subnets
i L1     3.3.3.0 [115/20] via 192.168.123.3, 00:00:36, Ethernet0/0
i L1  192.168.24.0/24 [115/20] via 192.168.123.2, 00:00:36, Ethernet0/0
i L1  192.168.34.0/24 [115/20] via 192.168.123.3, 00:00:36, Ethernet0/0

我们查看R2的ISIS邻居表

R2#show isis neighbors 

System Id       Type Interface     IP Address      State Holdtime Circuit Id
R1              L1   Et0/0         192.168.123.1   UP    25       R3.01              
R3              L1   Et0/0         192.168.123.3   UP    8        R3.01              
R3              L2   Et0/0         192.168.123.3   UP    7        R3.01              
R4              L2   Et0/1         192.168.24.4    UP    8        R4.01              

R2和R3其实不需要两个邻居关系,他们同属于49.0001区域,但是R2和R3都不能设置为L1路由器,因为它们还负责和其他区域相连,可以修改接口的角色

interface Ethernet0/0
 isis circuit-type level-1
R2#show isis neighbors 

System Id       Type Interface     IP Address      State Holdtime Circuit Id
R1              L1   Et0/0         192.168.123.1   UP    25       R3.01              
R3              L1   Et0/0         192.168.123.3   UP    6        R3.01              
R4              L2   Et0/1         192.168.24.4    UP    9        R4.01

DIS

和OSPF类似,在一个MA(多路访问)网络中,需要选择一个指定路由器来收集其他邻居的更新消息,然后发送给所有成员,在OSPF中是DR来做这个事情,在ISIS中,是由PSN(伪节点)来做的。

伪节点其实是一个逻辑上的路由器,真实做伪节点工作的是DIS。

一个广播域中所有的路由器都会和PSN建立邻居关系,就像OSPF中一个广播域所有路由器都会和DR和BDR建立Full的邻居关系。

DIS的hello时间是1/3的正常hello时间,也就是3.3秒。也就意味着10s没有收到DIS的hello,就回重新选举DIS,而这个时候其他的路由器并没有到30s断开邻居。

DIS的选举(在ISIS中,DIS是可以被抢占的):

  1. 接口优先级(默认64),注意与OSPF不同的是,优先级为0的IS也参与DIS的选举,优先级数值越大越优。
  2. SNPA ,越大越优,在以太网中比较的就是MAC地址
  3. 系统ID,比大

    数据单元(PDU)

  • ISIS将自己的消息都封装在数据链路层之后,而OSPF是封装在网络层之后,也就是ISIS的封装效率更高

  • 有三种类型的PDU:IS-IS、ES-IS和CLNP

  • IS-IS的PDU有4种:

    • Hello
      • 由于建立和维护邻居关系
      • ESH
        • ES发送到IS的hello
      • ISH
        • IS发送到ES的hello
      • IIH
        • IS-IS之间的hello
    • LSP
      • 用来发布链路状态信息,类似于OSPF的LSA
    • CSNP(完全序列号PDU)
      • 用来请求完整的数据库信息
    • PSNP(部分序列号PDU)
      • 用来确认和请求链路状态信息

    ISIS报文格式

  • TLV是类型长度和值,用于携带ISIS各种消息

Level1 TLV字段
TLV 类型值 定义来源 备注
Area address 1 ISO10589 列出了路由器上配置的区域地址组。它只出现在非伪节点的 LSP 中,并且如果 LSP 被划分成不同的片段,那么该 TLV 字 段出现在第一段。
中间系统邻 接路 由 器 IS reachability 2 ISO10589 列举邻接的 L1-router,注意啊,我们这小节说的是 L1 router LSP 的 TLV 字段啊。这里头除了包含邻接 IS 的系统 ID,还有 一堆 metric
终端系统邻 接路 由 器 3 ISO10589 只在 L1 router 的 LSP 中出现。列举了邻接的 L1-router 和终 端主机。例如通过 ES-IS 协议搜寻到的 ISO CLNP 工作站。
认证信息 10 ISO10589 用于认证
IP 内部可达性信息 128 RFC1195 列举了直连的 IP 地址前缀列表,它只在非伪节点 LSP 中使用。 每个 IP 前缀分配了一堆的 metric。
支持协议 Protocols support 129 RFC1195 列举了集成型 IS-IS 协议支持的第三层协议,目前只有 CLNP (NLPID 0x81)和 IP(0xCC)
IP 接口地址 132 RFC1195 包含源路由器上配置的一个或多个 IP 地址,在 CISCO IOS 中 为最高的 loopback 口 IP
Level2 TLV字段
TLV 类 型 值 定义来源 备注
Area address 1 ISO10589 列出了路由器上配置的区域地址组。
中间系统邻 接路 由器IS reachability 2 ISO10589
分离指定层 2 中间系 统 4 ISO10589 这种 TLV 通过在 L2 router 之间建立一条穿过骨干网的虚链路 来支持区域修复
前缀邻接路由器 5 ISO10589 搜集可达的 NSAP 前缀信息,它只用于区域间 ISO CLNP 路 由选择(level2 路由)
认证信息 10 ISO10589 用于认证
IP 内部可达性信息 128 RFC1195 列举了直连的 IP 地址前缀列表
支持协议 Protocols support 129 RFC1195 列举了集成型 IS-IS 协议支持的第三层协议,目前只有 CLNP (NLPID 0x81)和 IP(0xCC)
IP 外部可达性信息 130 RFC1195 收集通过其他路由协议得到的 IP 路由信息
域间路由选 择协 议 信息 131 RFC1195 暂不支持
IP 接口地址 132 RFC1195 包含源路由器上配置的一个或多个 IP 地址,在 CISCO IOS 中 为最高的 loopback 口 IP

邻居关系

邻居关系的建立条件

  • 只有同一层次的相邻路由器才可能建立邻居
  • 对于L1路由器而言,area ID必须一致
  • 检查相邻路由器直连的网段,必须是同一个网段才可能建立邻居
  • MTU需要一样,因为ISIS在发送CSNP之类的消息的时候,如果过长,会进行分片,但是如果两边MTU不一致,会导致消息丢失。在hello消息中,会使用padding将数据大小直接填充到MTU值。

    建立过程

  1. A发送IIH给B,根据接口或者路由器的角色,发送目的MAC不一样
    1. 发送地址为L1,01:80:c2:00:00:14(这个是数据链路层的MAC组播)
    2. 发送地址为L2,01:80:c2:00:00:15(这个是数据链路层的MAC组播)
  2. B收到IIH之后,检查本地的邻接数据库,查看IIH中System ID是否存在
    1. 如果存在,就忽略IIH,并且更新计时器
    2. 如果不存在,就添加邻居,但是状态写成init,然后发送IIH回应
  3. A收到了IIH回应之后,再次发送IIH消息
  4. B再次收到A的IIH之后,将邻居关系设置位UP
  5. 互相发送CSNP,开始同步数据库内容

    触发更新条件

  • 邻接关系UP或Down
  • ISIS相关接口Up或Down
  • 引入的IP路由发生变化
  • 区间的IP路由发生变化
  • 接口的metric值发生变化
  • 周期性更新

    ISIS度量值

  • Default Metric

    • 所有ISIS路由器都支持,与带宽成反比,越小越优
    • 在Cisco设备上,不支持根据带宽来计算,每经过一个接口加10,变成跳数类似
  • Delay Metric
    • 链路的传输延迟,不支持
  • Expense Metric
    • 链路的传输开销,不支持
  • Error Metric

    • 链路的出错概率,不支持

    默认路由

    只能在L2或者L1/L2路由器上注入默认路由

    router isis
     default-information originate

    路由汇总

    只能在区域边缘的L1/L2路由器上做

    router isis
     summary-address 172.16.0.0 255.255.0.0 level-2

    overload-bit

    一台路由器如果资源不足,它可能就无法维护完整的链路状态数据库,数据流量到达此台设备可能就无法得到正常的转发,因此它有告知或者告警其他路由器的能力,具体的做法是在其自己产生的LSP中将Overload-bit置位。

    router isis
     set-overload-bit

文章作者: AaronXu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AaronXu !
评论
 上一篇
路由策略 路由策略
路由重发布 路由重发布是指连接到不同自制系统(比如不同组织所管理的网络)的边界路由器,在他们之间交换和通告路由选择信息的能力。 从一种协议到另一种协议 同一种协议的不同实例互相传递 路由重发布对路由器而言是对外的,执行重发布的路由器路
下一篇 
OSPF介绍 OSPF介绍
实验拓扑 配置IP,必须在每个路由器上配置lo0 略 配置OSPF,把所有的接口都宣告进OSPF
  目录