本文简要分析IS-IS协议的原理和应用,利用GNS3仿真器搭建环境,对IS-IS协议进行实验配置,供学习记录。GNS3仿真环境中运行的是Cisco IOS镜像,比CPT更加接近真实环境,而且CPT也不支持ISIS协议。 初次使用GNS3踩了个坑,用的镜像配置起来是正常的,但是ISIS协议却配不通,折腾了几天换了个镜像就好了,所以使用GNS3一定要确保镜像正常,不然事倍功半浪费时间。
按照作用于AS的范围,常见路由协议可划分为两类:
- 内部网关协议 (Interior Gateway Protocols, IGP):具体包括RIP、OSPF、IS-IS、EIGRP等,一般由单个ISP运营于一个AS内,有统一的自治系统号,目前大型企业内部多使用OSPF、IS-IS,小型企业内部使用RIP或静态路由
- 外部网关协议 (Exterior Gateway Protocols, EGP):BGP是目前唯一使用的一种EGP协议,它是AS间的路由协议,一般用于不同ISP之间交换路由信息,以及大型企业、政府等具有较大规模的私有网络
下面对内部网关协议IS-IS进行介绍:
一、基本原理
IS-IS (Intermediate System-to-Intermediate System) 也是一种链路状态路由协议,最初设计用来应用于CLNP网络 (Connectionless Network Protocol,无连接网络协议,OSI体系中的网络层协议,类似TCP/IP模型中的IP协议),后因TCP/IP迅速发展和广泛应用,IS-IS对此进行了扩充和修改,使它能够同时应用在TCP/IP和OSI。
与OSPF协议相似,IS-IS同样使用最短路径优先算法 (Shortest Path First, SPF, 也称为Dijkstra算法) 生成最短路径树并构造路由表,其路径开销 (Cost) 计算基于接口的带宽,相比于OSPF,IS-IS更加适用于如ISP、数据中心等规模和承载量更大、区域类型相对简单、层次扁平化的大型网络。
IS-IS同样将AS划分成多个逻辑区域,分为骨干区域和非骨干区域,但其不再使用编号区分骨干区域和非骨干区域,而是基于路由器的级别 (Level)。IS-IS报文工作在链路层,每个区域中所有路由器通过组播 (Level-1: 01-80-C2-00-00-14, Level-2: 01-80-C2-00-00-15) 的方式维护着一个相同的链路状态数据库 (Link State DataBase, LSDB),LSDB存放着接口的相关信息 (IP地址、带宽以及所连接的邻居等),IS-IS路由器通过各自的LSDB进行路由计算。
(一) 路由器类型
IS-IS中的路由器按层次划分:
-
Level-1 (L1):负责区域内路由,它只与同一区域的L1和L1-2路由器形成L1邻居关系,维护一个L1的LSDB,该LSDB只包含本区域的路由信息,到区域外的报文要转发给最近的L1-2路由器。 -
Level-2 (L2):负责区域间路由,可以与同一区域的L2路由器,或者不同区域的L1-2路由器形成L2邻居关系,维护一个L2的LSDB,该LSDB包含区域间的路由信息,负责在不同区域间通信,路由域中的L2路由器必须是物理连续的,以保证骨干网的连续性。 -
Level-1-2 (L1-2):同时属于L1和L2的路由器,可以与同一区域的L1和L1-2路由器形成L1邻居关系,也可以与不同区域的L2和L1-2路由器形成L2的邻居关系。L1路由器必须通过L1-2路由器才能连接至其他区域。L1-2路由器维护两个链路状态数据库,L1的链路状态数据库用于区域内路由,L2的链路状态数据库用于区域间路由。
(二) 区域类型
与OSPF相同,分为骨干区域和非骨干区域,L2邻居关系的路由器 (L2和L1-2路由器) 构成骨干区域,L1邻居关系的路由器 (L1和L1-2路由器) 构成非骨干区域,非骨干区域必须通过L1-2路由器与骨干区域相连,IS-IS协议中没有虚链路的概念,骨干区域与非骨干区域在物理上都必须是一个整体。 非骨干区域只维护自身区域的LSDB,骨干区域维护自身以及非骨干区域的LSDB,骨干区域和非骨干区域联系的唯一纽带就是L1-2路由器,当信息在骨干和非骨干区域之间传输时,L1-2路由器充当信息中转枢纽,具体如下:
- 骨干区域访问非骨干区域时,L1-2路由器将L1级别的路由作为自身直连的节点进行描述,并通过L2级别的LSP在L2区域进行泛洪,因此骨干区域上的路由器知道非骨干区域的路由信息;
- 非骨干区域访问骨干区域时,L1-2路由器下发一条访问骨干区域的缺省路由指向路由器自身,缺省路由通过ATT比特位进行标记,由非骨干区域路由器计算得到。
注意:骨干区域和区域并不是一个概念,L1-2路由器可以划分到L1区域也可以划分到L2区域,但L1-2和L2路由器一起构成了一个连续的骨干区域。
(三) NSAP地址转换
ISO网络和IP网络的网络层地址的编址方式不同,IP网络的三层地址是常见的IPv4地址或IPv6地址,而ISO网络层地址称为NSAP (Network Service Access Point,网络服务接入点),即便现在是集成IS-IS,但是使用NSAP地址这项还是保留了下来,NSAP由IDP与DSP两个部分组成,如下图所示:
- IDP (Initial Domain Part):相当于IP地址中的主网络号 (网段),由AFI (Authority and Format ID) 与IDI (Inter-Domain ID) 两部分组成,AFI表示地址分配机构和地址格式,IDI表示AFI的子域
- DSP (Domain Specific Part):相当于IP地址中的子网号和主机地址,它由High Order DSP、System ID和SEL三个部分组成,High Order DSP用来分割区域,System ID用来区分主机,一般要保持全局唯一性,相当于OSPF中的Router-ID,SEL用来指示服务类型,在IP网络中SEL为00。
IDP和DSP中的High Order DSP一起组成区域地址,用于标识IS-IS划分的区域,相当于OSPF中的区域编号,一般情况下,一个路由器只需要配置一个区域地址,且同一区域中所有节点的区域地址都要相同,有时为了支持区域的平滑合并、分割及转换,在设备的实现中,一个IS-IS进程下最多可配置3个区域地址。
IP地址向NSAP转换方法,一般设置环回接口 (Loopback Interface) 地址,将32位Lookback地址补齐成48位,分割后再补齐获得,具体如下图所示:(实际上在配置时可以有不同方法,但需要满足字节长度要求和全局唯一性) 区域地址 (AREA ID) 最前边1个字节AFI为组织格式标识符,代表一个独立的组织机构,49表示OSI协议的私有地址,39表示ISO国家代码,47表示ISO国际代码,后两个字节IDI为初始域标识符,代表AFI的子域,0001为区域编号。
(四) 网络类型
基于链路层网络协议,IS-IS支持两种网络类型: (注意网络类型不同于物理拓扑,其划分主要基于网络在链路层运行的协议)
- 点到点网络 (Point to Point, P2P):链路层协议如PPP和HDLC,此类网络不用进行DIS的选举,直接形成邻接关系
- 广播多路访问网络 (Broadcast Multi-Access, BMA):链路层协议如以太网 (IEEE 802.3),可以 (泛洪) 发送广播和组播报文,需要进行DIS的选举
(五) DIS
在广播多路访问网络中,IS-IS需要在每个区域所有的路由器中选举一个作为DIS (Designated Intermediate System),用于创建伪节点并负责生成伪节点的链路状态协议数据单元LSP (Link State Protocol Data Unit),用来描述这个网络上的设备信息,同一区域内的路由器会通过DIS周期性 (10/3s) 发送CSNP来同步LSDB,路由器之间只有邻居关系,而在OSPF中,邻居关系的路由器不一定用于同步LSDB,只有在DROTHER与DR和BDR建立邻接关系才同步LSDB。 伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。伪节点用DIS的System ID和一个字节的Circuit ID (非0值) 标识,伪节点可以减小LSP大小,提高SPF计算速度。
DIS的选举通过比较优先级,当有多个IS-IS路由器时,优先级高的选为DIS,与OSPF不同的是,优先级为0的路由器也参与DIS的选举,而且DIS没有备份;如果优先级相同则通过比较SNPA大小,SNPA大的选为DIS,在局域网中SNPA为MAC地址。
(六) 路由器状态
OSPF根据同步LSDB的阶段来划分路由器状态,而IS-IS路由器仅根据邻居关系建立过程区分三种路由器状态:
- Down:没有收到邻居HELLO包时的状态
- Initiated:收到邻居HELLO包,但是在HELLO包中没有发现自身信息
- Up:收到邻居HELLO包,并发现自身信息,随后会进行DIS选举
(七) 工作过程
以常见的BMA类型网络为例,IS-IS基本工作过程如下:
① 建立邻居关系:IS-IS路由器初始化时,所有相邻路由器之间通过HELLO报文发现并建立邻居关系,邻居关系的路由器状态为Up;
② 同步LSDB:互为邻居关系的路由器首先选举出DIS,刚加入区域的路由器会发送LSP,DIS收到LSP后将相应信息加入自身LSDB,然后定期向邻居路由器发送完全序列号数据包 (Complete Sequence Number Packets, CSNP),CSNP中包括LSP的摘要信息,包括接口地址、带宽、邻居等链路状态信息,如果收到CSNP的路由器发现数据包中LSP描述没有自身信息,则会返回特殊序列号数据包 (Partial Sequence Numbers PDU, PSNP),DIS收到PSNP后会发送相应的LSP,直到单个区域内所有的路由器都形成相同的LSDB;
③ 构建路由表:同一个区域内的路由器会结合自身LSDB信息,使用SPF算法生成最短路径树,构建出各自的区域内路由表;L1-2路由器将L1级别的路由作为自身直连的节点进行描述,并通过L2级别的LSP在L2区域进行泛洪,因此骨干区域上的路由器既有自身区域又有非骨干区域的路由信息,而非骨干区域路由器只有自身区域的路由信息,当其访问骨干区域时,L1-2路由器下发一条访问骨干区域的缺省路由指向路由器自身。
④ 路由信息维护:一方面,当路由器的邻居状态发生改变,或是自身路由信息发生变化时,会触发LSP更新;另一方面,DIS会周期性发送CSNP,当区域中有路由器状态发生变化时会返回PSNP请求LSP以完成LSDB的同步。LSDB完成同步后,如果路由信息更新则会重新计算生成新的路由表项。
(八) 优缺点分析
优点:
- 收敛速度快,能够在最短的时间内将路由变化传递到整个自治系统
- 支持大量网络节点和网络平移、分割、合并,适用于超大规模网络
- 采用路径开销 (Cost) 作为度量标准,路径开销计算基于接口的带宽
- 划分区域进行管理,减少大规模网络中协议运行的流量和开销
- 协议相对OSPF更加简化,配置简单
缺点:
二、实验配置
(一) 实验拓扑
以BMA型网络为例,拓扑如下: R1、R2、R3、R4所在区域Area ID为49.0001 R5、R6、R11、R12所在区域Area ID为49.0002 R7、R8、R9、R10所在区域Area ID为49.0003
(二) 配置命令
(基础配置略过,只记录路由相关配置部分)
# R1、R2、R3、R4都是L2路由器,配置命令相似,以R1配置为例
# R1、R2、R3、R4所在区域Area ID为49.0001
R1(config)# interface loopback 1
R1(config-if)# ip address 10.10.11.1 255.255.255.0
R1(config-if)# exit
R1(config)# router isis
R1(config-router)# net 49.0001.0100.1001.0001.00
R1(config-router)# is-type level-2-only
R1(config-router)# exit
R1(config)# interface fa0/0
R1(config-if)# no shutdown
R1(config-if)# ip address 1.1.1.1 255.255.255.0
R1(config-if)# ip router isis
R1(config-if)# exit
R1(config)# interface fa0/1
R1(config-if)# no shutdown
R1(config-if)# ip address 4.4.4.1 255.255.255.0
R1(config-if)# ip router isis
R1(config-if)# exit
R1(config)# interface fa1/0
R1(config-if)# no shutdown
R1(config-if)# ip address 5.5.5.1 255.255.255.0
R1(config-if)# ip router isis
R1(config-if)# exit
# R5、R7、R9、R11都是L1-2路由器,配置命令相似,以R5配置为例
# R5、R11所在区域Area ID为49.0002,R7、R9所在区域Area ID为49.0003
R5(config)# interface loopback 1
R5(config-if)# ip address 10.10.11.5 255.255.255.0
R5(config-if)# exit
R5(config)# router isis
R5(config-router)# net 49.0002.0100.1001.0005.00
R5(config-router)# is-type level-1-2
R5(config-router)# exit
R5(config)# interface fa0/0
R5(config-if)# no shutdown
R5(config-if)# ip address 5.5.5.2 255.255.255.0
R5(config-if)# ip router isis
R5(config-if)# exit
R5(config)# interface fa0/1
R5(config-if)# no shutdown
R5(config-if)# ip address 6.6.6.1 255.255.255.0
R5(config-if)# ip router isis
R5(config-if)# exit
# R6、R8、R10、R12都是L1路由器,配置命令相似,以R6配置为例
# R6、R12所在区域Area ID为49.0002,R8、R10所在区域Area ID为49.0003
R6(config)# interface loopback 1
R6(config-if)# ip address 10.10.11.6 255.255.255.0
R6(config-if)# exit
R6(config)# router isis
R6(config-router)# net 49.0002.0100.1001.0006.00
R6(config-router)# is-type level-1
R6(config-router)# exit
R6(config)# interface fa0/0
R6(config-if)# no shutdown
R6(config-if)# ip address 6.6.6.2 255.255.255.0
R6(config-if)# ip router isis
R6(config-if)# exit
配置后可用命令查看路由信息:
# 查看isis配置信息
Router# show isis ?
# 查看所有路由表项
Router# show ip route
# 查看IS-IS路由表项
Router# show ip route isis
# 查看IP路由协议配置参数和运行情况
Router# show ip protocols
可见骨干区域路由器 (L2、L1-2) 路由信息中有全网的路由信息,而非骨干区域路由器 (L1) 路由信息中只有本区域的路由信息,以及指向0.0.0.0的默认路由表项。
如果一次性需要配置多个路由器,可以先将命令逐行写出,然后复制粘贴就可以一次性完成配置,如下所示:
|