《重识云原生系列》专题索引:
- 第一章——不谋全局不足以谋一域
- 第二章计算第1节——计算虚拟化技术总述
- 第三章云存储第1节——分布式云存储总述
- 第四章云网络第一节——云网络技术发展简述
- 第四章云网络4.2节——相关基础知识准备
- 第四章云网络4.3节——重要网络协议
- 第四章云网络4.3.1节——路由技术简述
- 第四章云网络4.3.2节——VLAN技术
- 第四章云网络4.3.3节——RIP协议
- 第四章云网络4.3.4节——OSPF协议
- 第四章云网络4.3.4.3节——OSPF协议工作原理
- 第四章云网络4.3.5节——EIGRP协议
- 第四章云网络4.3.6节——IS-IS协议
- 第四章云网络4.3.7节——BGP协议
- 第四章云网络4.3.7.2节——BGP协议概述
- 第四章云网络4.3.7.3节——BGP协议实现原理
- 第四章云网络4.3.7.4节——高级特性
- 第四章云网络4.3.7.5节——实操
- 第四章云网络4.3.7.6节——MP-BGP协议
- 第四章云网络4.3.8节——策略路由
- 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术
1 IS-IS协议简介
1.1 前言
与OSPF协议非常的相似,IS-IS协议也是基于链路状态并使用最短路径优先算法进行路由的一种 IGP 协议。
IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统)路由协议最初是ISO(the International Organization for Standardization,国际标准化组织)为CLNP(Connection Less Network Protocol,无连接网络协议)设计的一种动态路由协议。现在CLNP网络已经基本不再别使用,但是IS-IS协议由于其优秀性,被保留了下来。
为了提供对IP路由的支持,通过对IS-IS进行扩充和修改,使IS-IS能够同时应用在TCP/IP和OSI环境中,形成了集成化IS-IS(Integrated IS-IS或Dual IS-IS)。现在提到的IS-IS协议都是指集成化的IS-IS协议,主要用于城域网和承载网。
1.2 IS-IS 协议特点
- 维护一个链路状态数据库,并使用SPF算法来计算最佳路径;
- 用Hello包建立和维护邻居关系;
- 使用区域来构造两级层次化的拓扑结构;
- 在区域之间可以使用路由汇总来减少路由器的负担;
- 支持VLSM和CIDR;
- 在广播多路访问网络通过选举指定IS(DIS)来管理和控制网络上的泛洪扩散;
- 具有认证功能;
- IS-IS采用Cost作为度量值;
- 快速收敛;
- 适合大型网络。
1.3 应用场景
园区网特点:
- 应用型网络,主要面向企业网用户。
- 路由器数量偏少,动态路由的LSDB库容量相对偏少,三层路由域相对偏少。
- 有出口路由的概念,对内部外部路由划分敏感。
- 地域性跨度不大,带宽充足,链路状态协议开销对带宽占用比偏少。
- 路由策略和策略路由应用频繁多变,需要精细化的路由操作。
OSPF的多路由类型(内部/外部),多区域类型(骨干/普通/特殊),开销规则优良(根据带宽设定),网络类型多样(最多五种类型)的特点在园区网得到了极大的发挥。
骨干网特点:
- 服务型网络,由ISP(互联网服务提供商)组建,并为终端用户提供互联服务。
- 路由调度占据绝对统治地位,路由器数量庞大。
- 架构层面扁平化,要求IGP作为基础路由为上层BGP协议服务。
- LSDB规模宏大,对链路收敛极度敏感,线路费用高昂。
- 追求简单高效,扩展性高,满足各种客户业务需求(IPV6/IPX)。
IS-IS的快速算法(PRC得到加强),简便报文结构(TLV),快速邻居关系建立,大容量路由传递(基于二层开销低)等一系列特点在骨干网有着天然的优势。
1.4 历史起源
原始的IS-IS协议主要是针对OSI七层模型设计的,也是就用于CLNP网络。但是现在我们不再使用CLNP网络,所有我们将IS-IS进行扩充和修改,使他能够被用于IP网络。现在我们提到的IS-IS都是重新设计之后的集成IS-IS。
注意:IS-IS工作在数据链路层
工作在数据链路层的好处:在网络层我们会面临各种各样的攻击手段,但是在数据链路层所遭受的攻击就会少的多。
1.5 IS-IS支持的网络类型
- 点对点网络类型(如PPP、HDLC等);
- 广播多路访问网络类型(Ethernet等);
注意点:
- 对于NBMA(Non-Broadcast Multi-Access)网络,如ATM,需对其配置子接口,并注意子接口类型应配置为P2P;
- IS-IS不能在点到多点链路P2MP(Point to MultiPoint)上运行;
2 IS-IS协议详解
IS-IS属于内部网关路由协议,用于自治系统内部。IS-IS是一种链路状态协议,与TCP/IP网络中的OSPF协议非常相似,使用最短路径优先算法进行路由计算。
ISO网络和IP网络的网络层地址的编址方式不同。IP网络的三层地址是常见的IPv4地址或IPv6地址,IS-IS协议将ISO网络层地址称NSAP(Network Service Access Point,网络服务接入点),用来描述ISO模型的网络地址结构。
运行IS-IS协议的网络包含了终端系统(End System)、中间系统(Intermediate System)、区域(Area)和路由域(Routing Domain)。一个路由器是Intermediate System(IS),一个主机就是End System(ES)。主机和路由器之间运行的协议称为ES-IS,路由器与路由器之间运行的协议称为IS-IS。区域是路由域的细分单元,IS-IS允许将整个路由域分为多个区域,IS-IS就是用来提供路由域内或一个区域内的路由。
2.1 基础术语
首先我们来了解一些IS-IS中的基本概念。
解释:
- IS(Intermediate System,中间系统)
IS是指运行IS-IS协议的路由设备。它是IS-IS协议中生成路由和传播路由信息的基本单元。就是指路由器
- RD(Routing Domain,路由域)
RD是指由多个使用IS-IS协议的路由器所组成的范围。
- Area(区域)
Area是IS-IS路由域的细分单元。IS-IS与OSPF一样,允许将整个路由域分为多个区域,且总体上也分为普通区域和骨干区域两类,但 IS-IS 的普通区域必须与骨干区域直接连接(没有OSPF中的“虚连接”),普通区域之间不能直接连接。
Area又可根据网络中路由器的类型划分为Level-1区域(全由Level-1路由器组成)和Level2区域(由Level-2和Level-1-2路由器组成)
- Sys ID(System ID,系统ID)
在IS-IS 协议中使用Sys ID 唯一标识一台路由器,必须保证在整个IS-IS 路由域中每台路由器的系统ID 都是唯一的,与OSPF 中的路由器ID(Router ID)一样。
- LSP(Link-State Packet,链路状态报文)
LSP是IS-IS网络中的设备用来通过泛洪方式向所有邻居通告自己的链路状态信息的报文,类似于OSPF 中的 LSA(链路状态通告)。网络中每台路由器都会产生带有自己系统ID标识的LSP报文,可以通过发送LSP不断更新自己的链路状态信息。
- LSDB(Link State DataBase,链路状态数据库)
路由器的每个区域都有一个专门存放该区域所接收的所有 LSP 报文的数据库。通过LSP的泛洪,最终使整个区域内的所有路由器拥有相同的LSDB。
- DIS(Designated IS,指定IS)
在IS-IS广播网络类型中需要选举一个指定IS(DIS),以便周期性地向区域内其他路由器进行区域LSDB 数据库的泛洪(区域内的非DIS 仅与DIS 之间进行LSDB 交互,非DIS之间不能直接进行LSDB交互),使整个区域中各路由器的LSDB同步。类似于OSPF中的DR。
2.2 IS-IS协议结构
2.2.1 协议报文结构
由于IS-IS原来是为CLNP设计的。CLNP网络不是使用IP地址来进行通信的,而是使用NSAP地址来进行通信。即便现在是集成IS-IS,但是使用NSAP地址这项还是保留了下来。
- NSAP地址
网络服务访问点NSAP(Network Service Access Point)是OSI协议中用于定位资源的地址。NSAP的地址结构它由IDP(Initial Domain Part)和DSP(Domain Specific Part)组成。IDP和DSP的长度都是可变的,NSAP总长最多是20个字节,最少8个字节 习惯上配置为10B 由16进制进行表示。NSAP地址由IDP与DSP组成,AFI(1字节) IDI(2字节) HODSO(0-10字节) SID(6字节) NSEL(1字节)。
- IDP
IDP相当于IP地址中的主网络号。它是由ISO规定,并由AFI(Authority and Format Identifier)与IDI(Initial Domain Identifier)。AFI表示地址分配机构和地址格式,IDI用来标识域。
- DSP
DSP相当于IP地址中的子网号和主机地址。它由High Order DSP、System ID和SEL三个部分组成。High Order DSP用来分割区域,System ID用来区分主机,SEL用来指示服务类型。
- Area ID(Area address)
Area Address(Area ID)由IDP和DSP中的High Order DSP组成,既能够标识路由域,也能够标识路由域中的区域。因此,它们一起被称为区域地址,相当于OSPF中的区域编号。
一般情况下,一个路由器只需要配置一个区域地址,且同一区域中所有节点的区域地址都要相同。为了支持区域的平滑合并、分割及转换,在设备的实现中,一个IS-IS进程下最多可配置3个区域地址必须保证他们的system id都相同。
- System ID
System ID用来在区域内唯一标识主机或路由器。在设备的实现中,它的长度固定为48bit(6字节),相当于OSPF中的Router ID。
在实际应用中,一般使用Router ID与System ID进行对应。假设一台路由器使用接口Loopback0的IP地址168.10.1.1作为Router ID,则它在IS-IS中使用的System ID可通过如下方法转换得到:
- 将IP地址168.10.1.1的每个十进制数都扩展为3位,不足3位的在前面补0,得到168.010.001.001;
- 将扩展后的地址分为3部分,每部分由4位数字组成,得到1680.1000.1001。重新组合的1680.1000.1001就是System ID;
- 实际System ID的指定可以有不同的方法,但要保证能够唯一标识主机或路由器。
- SEL
SEL的作用类似IP中的“协议标识符”,不同的传输协议对应不同的SEL。在IP上SEL均为00。NET地址,这个地址服务于IP环境,其中SEL=00。
- NET
网络实体名称NET(Network Entity Title)指的是设备本身的网络层信息,可以看作是一类特殊的NSAP(SEL=00)。NET的长度与NSAP的相同,最多为20个字节,最少为8个字节。在路由器上配置IS-IS时,只需要考虑NET即可,NSAP可不必去关注。
注意:在配置IS-IS过程中,NET最多也只能配3个。在配置多个NET时,必须保证它们的System ID都相同。
地址举例:
2.2.2 IS-IS的报文类型
在路由器之间通讯时,IS-IS使用的是ISO定义的协议数据单元(PDU)。IS-IS中使用的PDU类型主要有:IS-IS Hello PDU(IIH PDU)、链路状态PDU(LSP)、序列号报文(SNP):
- Hello PDU Hello报文类似于OSPF协议中的hello报文,负责形成路由器间的邻居关系,发现新的邻居,检测是否有邻居退出,也称为IIH(IS-to-IS Hello PDUs)。
- LSP 链路状态报文LSP(Link State PDUs)用于描述本路由器中所有的链路状态信息,类似于OSPF中的LSA。
- SNP 序列号报文SNP(Sequence Number PDUs)通过描述全部或部分数据库中的LSP来同步各LSDB(Link-State DataBase),从而维护LSDB的完整与同步,包含完全序列号数据包(CSNP)、部分序列号数据包(PSNP)两类报文:
- CSNP(Complete Sequence Number PDU)类似于OSPF的DD报文,CSNP包含了网络中每一个LSP的总结性信息,当路由器收到一个CSNP时,它会将该CSNP与其链路状态数据库进行比较,如果该路由器丢失了一个在CSNP中存在的LSP时, 它会发送一个组播PSNP,向网络中其它路由器索要其需要的LSP;
- PSNP(Partial Sequence Number PDU)类似于OSPF的LSR或LSAck报文,在点对点链路中用于确认接收的LSP;在点对点链路和广播链路中用于请求最新版本或者丢失的LSP。
IS-IS利用这些PDU与周围的路由器进行信息收集和交换,用来计算出IS-IS路由条目。
2.2.2.1 邻居hello报文
HELLO报文的作用是邻居发现,协商参数并建立邻居关系,后期充当保活报文。 IS-IS建立邻居关系和OSPF一样,通过hello报文的交互来完成。但是会根据场景分为三种类型的hello报文:
- 广播网中的Level-1 IS-IS使用Level-1 LAN IIH(Level-1 LAN IS-IS Hello),目的组播MAC为:0180-c200-0014;
- 广播网中的Level-2 IS-IS使用Level-2 LAN IIH(Level-2 LAN IS-IS Hello),目的组播MAC为:0180-c200-0015;
- 非广播网络中则使用P2P IIH(point to point IS-IS Hello)
Hello报文的类型:
- Level-1的hello报文;
- Level-2的hello报文;
- P2P的hello报文;
2.2.2 LSP 报文
LSP PDU(Link State Protocol PDU)LSP类似于OSPF的LSA,承载的是链路状态信息,包含了拓扑结构和网络号,LSP分为两种:Level-1 LSP和Level-2 LSP:
- Level-1 LSP由Level-1路由器传送;
- Level-2 LSP由Level-2路由器传送;
- Level-1-2路由器则可传送以上两种LSP
LSP的刷新间隔为15分钟,老化时间为20分钟,但是一条LSP的老化除了要等待20分钟外,还要等待60秒的零老化时延 LSP重传时间为5秒。 LSP报文中主要字段的解释如下:
- LSP报文中包含了两个重要字段是ATT字段、IS-Type字段:
- ATT字段:当Level-1-2 IS-IS在Level-1区域内传送Level-1 LSP时,如果Level-1 LSP中设置了ATT位,则表示该区域中的Level-1 IS-IS可以通过此Level-1-2 IS-IS通往外部区域S-Type用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS;
- IS Type字段:用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS(01表示Level-1,11表示Level-2);
- 协议报文都分为Level-1和Level-2两种,在MA网络中所有协议报文的目的MAC都是组播地址 实节点LSP伪节点LSP(只在广播链路存在):
- Level-1地址为:0180-C200-0014
- Level-2地址为:0180-C200-0015
2.2.3 SNP 报文
序列号报文SNP(Sequence Number PDUs)通过描述全部或部分数据库中的LSP来同步各LSDB(Link-State DataBase),从而维护LSDB的完整与同步。 SNP包括全序列号报文CSNP(Complete SNP)和部分序列号报文PSNP(Partial SNP),进一步又可分为Level-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP
注意: ① CSNP类似于OSPF的DD报文,传递的是LSDB里所有链路信息摘要。 ② PSNP类似于OSPF的LSR或LSAck报文,用于请求和确认部分链路信息。
协议报文都分为Level-1和Level-2两种,在MA网络中所有协议的目的MAC都是组地址:
- Level-1地址为:0180-C200-0014
- Level-2地址为:0180-C200-0015
2.3 IS-IS区域
为了支持大规模的路由网络,IS-IS在路由域内采用两级的分层结构。一个大的路由域被分成一个或多个区域(Areas)。并定义了路由器的三种角色:Level-1、Level-2、Level-1-2。区域内的路由通过Level-1路由器管理,区域间的路由通过Level-2路由器管理。下面简要说明一下这三类路由器角色:
- Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,维护一个Level-1的链路状态数据库,该链路状态数据库包含本区域的路由信息,到区域外的报文转发给最近的Level-1-2路由器。
- Level-2路由器负责区域间的路由,可以与同一区域或者其它区域的Level-2和Level-1-2路由器形成邻居关系,维护一个Level-2的链路状态数据库,该链路状态数据库包含区域间的路由信息。所有Level-2路由器和Level-1-2路由器组成路由域的骨干网,负责在不同区域间通信,路由域中的Level-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路由器维护两个链路状态数据库,Level-1的链路状态数据库用于区域内路由,Level-2的链路状态数据库用于区域间路由。
每台路由器只能属于一个区域,区域边界在链路上。
2.4 路由器分类
如上所述,在IS-IS中,路由器可以分为三种类型:
- Level-1路由器(只能创建Level-1的LSDB)
- Level-2路由器(只能创建Level-2的LSDB)
- Level-1-2路由器(路由器默认类型,能同时创建Level-1和Level-2的LSDB)
2.4.1 Level-1路由器
L1路由器是一个IS-IS普通区域内部的路由器,类似于OSPF网络中的普通区域内部路由器(IR),只能在非骨干区域中存在。
L1路由器只能与属于同一区域的L1和L1/2路由器建立L1邻接关系(不能与L2路由器建立邻接关系),交换路由信息,并维护和管理本区域内部的一个L1 LSDB。
L1 路由器的邻居都在同一个区域中,其 LSDB 包含本区域的路由信息以及到达同一区域中最近L1/2路由器(相当于OSPF中的ABR)的缺省路由,但到区域外的数据需由最近的L1/2路由器进行转发。
也就是说,L1路由器只能转发区域内的报文,或者将到达其他区域的报文转发到距离它最近,且在同一区域的L1/2路由器。
注意点:
① 能够和level-1建立起关系的只能在同一个区域里面的设备。
2.4.2 Level-2路由器
L2路由器是骨干区域中的路由器,主要用于通过与普通区域中的L1/2路由器(下面将介绍)连接,连接骨干区域和非骨干区域,类似于OSPF网络中的BR(骨干路由器),并负责在不同区域间的通信。L2路由器负责区域间的路由,它可以与相同或者不同区域的L2路由器或者不同区域的L1/2路由器形成邻居关系。L2路由器维护一个L2的LSDB,该LSDB包含区域间的路由信息。L2路由器只可能建立L2的邻接关系。
网络中的所有L2路由器和所有L1/2路由器连接在一起共同构成IS-IS网络的骨干网(注意,不是骨干区域),也称L2区域。IS-IS中的L2区域不是一个特定的区域,是由连接网络中各个区域的一部分路由器组成的,但必须物理是连续。
如下图:黄色圆圈中的路由器是L2路由器还是L1路由器,还是L1/2路由器?
答案是:L1/2路由器。
若是L1路由器,则整个网络中由L2路由器和L1/2路由器形成的骨干网(粗线部分)在物理上就是断开的,不连续,最终导致的结果就是不同区域间的L2 路由无法传递。也不可能是L2路由器,因为Area 2不是骨干区域。
注意点:
- level-2路由器可以和同一个区域的level-2路由器建立起关系;
- level-2路由器可以和不同一个区域的level-2路由器建立起关系;
- level-2路由器可以和同一个区域的level-1-2路由器建立起关系;
- level-2路由器可以和不同一个区域的level-1-2路由器建立起关系;
2.4.3 Level-1-2路由器
L1/2路由器类似于OSPF网络中的ABR(区域边界路由器),用于区域间的连接,缺省所有IS-IS路由器都是L1/2类型的。L1/2路由器既可以与同一普通区域的L1路由器以及其他L1/2路由器建立L1邻接关系,也可以与骨干区域L2路由器建立L2邻接关系。L1路由器必须通过L1/2路由器才能与其他区域通信。L1/2路由器必须维护以下两个LSDB:L1 LSDB 用于区域内路由,L2 LSDB用于区域间路由。但要注意的是,L1/2路由器不一定要位于区域边界,在区域内部也有可能存在L1/2路由器,如上图黄色圆圈中的路由器。
注意点:
- level-1-2路由器可以和同一个区域的level-1路由器建立起关系;
- level-1-2路由器可以和同一个区域的level-2路由器建立起关系;
- level-1-2路由器可以和不同一个区域的level-2路由器建立起关系;
- level-1-2路由器可以和同一个区域的level-1-2路由器建立两个关系;
- level-1-2路由器可以和不同一个区域的level-1-2路由器建立起level-2关系;
3 IS-IS的网络拓扑结构
3.1 网络分层路由域
IS-IS协议的区域边界在整个Router,OSPF协议的区域边界在Router的接口。为了支持大规模的路由网络,IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构。一般来说,将Level-1路由器部署在非骨干区域,Level-2路由器和Level-1-2路由器部署在骨干区域。每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。
下图是一个运行IS-IS协议的网络,它与OSPF的多区域网络拓扑结构非常相似。整个骨干区域不仅包括Area1中的所有路由器,还包括其它区域的Level-1-2路由器。
在OSPF中,骨干区域固定为Area 0,且非骨干区域要和骨干区域相连(没有通过物理连接的话则要进行虚连接)。但是在IS-IS中:
- 可以有多个骨干区域,且区域ID不固定
- 非骨干区域必须和骨干区域物理相连(通过L1/2路由器)
- 非骨干区域之间不能直接连接
Level-1-2级别的路由器可以属于不同的区域,在Level-1区域,维护Level-1的LSDB,在Level-2区域,维护Level-2的LSDB。
下图是IS-IS的另外一种拓扑结构图。在这个拓扑中,Level-2级别的路由器没有在同一个区域,而是分别属于不同的区域。此时所有物理连续的Level-1-2和Level-2路由器就构成了IS-IS的骨干区域。
此时有两个骨干区域:Area 1和Area 3。非骨干区域中的L1/2 路由器同时与两个骨干区域的L2 路由器连接,同时两个骨干区域之间也彼此连接(可以把它们看成一个大的虚拟骨干区域)。
通过以上两种拓扑结构图可以体现IS-IS与OSPF的不同点:
- 在IS-IS中,每个路由器都只属于一个区域;而在OSPF中,一个路由器的不同接口可以属于不同的区域;
- 在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域;
- 在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT(Shortest Path Tree);而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发;
3.2 区域内算法
SPF计算过程:
- 单区域LSDB同步完成;
- 生成全网拓扑结构图;
- 以本节点为根生成最短路径树;
- 默认跨越每个节点开销一样;
ISIS路由计算的开销方式: IS-IS在计算路由时 是不基于链路计算cost值的 没经过一跳 cost数值都加上10。
- Narrow模式(设备默认模式开销都是10,手工配置接口开销取值范围为1-63);
- Wide模式(设备默认模式开销都是10,手工配置接口开销取值范围是1-16777215); 进程下加入auto-cost enable命令,Narrow模式和Wide模式都会参考接口带宽大小计算开销值,只是参考准则有少许差异 缺省情况 模式为Narrow模式。
- 使能IS-IS自动计算接口的开销:
- 执行命令isis process-id ,进入IS-IS视图;
- 执行命令bandwidth-reference value,配置计算带宽的参考值 缺省情况下,带宽参考值为100,单位是Mbit/s;
- 执行命令auto-cost enable compatible ,使能自动计算接口的开销值;
- 只有当开销类型为wide或wide-compatible时,使用命令bandwidth-reference配置的带宽参考值才是有效的,此时各接口的开销值=(bandwidth-reference/接口带宽值)×10;
- 当开销类型为narrow、narrow-compatible或compatible时,各个接口的开销值根据如下表来确定;
3.3 区域间路由
- 如下图所示,区域49.0001访问区域49.0002:
- L1/2路由器RTA产生ATT置位为1的LSP;
- L1路由器收到ATT为1的LSP会产生下一跳指向L1/2路由器的默认路由;
- 区域49.0002访问区域49.0001:
- L1/2路由器RTA会把区域49.0001的明细路由以叶子节点方式挂载在L2级别的LSP上面并处在Level-2的LSDB中;
- L2路由器通过自己SPF计算得出访问Area49.0001的明细路由;
Level-1路由器的路由特点:
- 只拥有Level-1的链路状态数据库。
- 其链路状态数据库中只有本区域路由器LSP。
- 其路由表里没有其他区域的路由信息。
- 其路由表里都有一条默认路由,下一条是指向到Level-1-2路由器。(缺省路由,发送数据到其他区域,直接发送给L1/2)
Level-2路由器的路由特点:
- Level-2路由器只有Level-2的链路状态数据库。
- 其LSDB中有骨干区域路由器的LSP,但是没有Level-1路由器产生的LSP。
- 路由表里面有整个网络的路由信息。
Level-1-2路由器的路由特点:
- Level-1-2路由器同时拥有Level-2和Level-1的链路状态数据库。
- Level-1数据库包含本区域的LSP,Level-2数据库包含骨干区域LSP。
- 在自己产生的Level-1的LSP中设置了ATT比特位为1。
- 路由表里面有整个网络的路由信息。
4 路由计算过程
IS-IS协议的路由计算过程与OSPF非常相似,只是在细节上有所不同。
4.1 路由计算过程简介
- 邻居关系建立:
邻居关系建立主要是通过HELLO包交互并协商各种参数,包括电路类型(level-1/level-2),Hold time,网络类型,支持协议,区域号,系统ID,PDU长度,接口IP等。
- 链路信息交换:
与OSPF不同,ISIS交互链路状态的基本载体不是LSA(link state advertisement),而是LSP(link state PDU);交互的过程没有OSPF协议那样经历了多个阶段,主要是通过CSNP和PSNP两种协议报文来同步,请求以及确认链路状态信息(承载的是链路状态信息摘要),而链路状态信息的详细拓扑和路由信息是由LSP报文传递。
- 路由计算:
SPF计算和OSPF基本一样的,但ISIS算法分离了拓扑结构和IP网段,加快了网络收敛速度。
4.2 邻居关系
IS-IS目前只支持点对点(P2P)和广播多路访问网络(Broadcast Multiple Access)。
其他的网络中需要进行额外的配置才能支持,如:在帧中继等特殊环境下,可以通过创建子接口支持P2P的网络类型。
4.2.1 邻居HELLO报文
HELLO报文的作用是邻居发现,协商参数并建立邻居关系,后期充当保活报文。
IS-IS建立邻居关系和OSPF一样,通过hello报文的交互来完成。但是会根据场景分为三种类型的hello报文。
HELLO报文在IS-IS中叫做:IIH(IS-IS Hello)
- 在P2P网络中
使用P2P IIH(point to point IS-IS Hello)。但是其没有表示DIS(虚节点)的相关字段。
- 在广播多路访问网络中
广播网中的Level-1 IS-IS使用L1 LAN IIH(Level-1 LAN IS-IS Hello),目的组播MAC为:0180-c200-0014。
广播网中的Level-2 IS-IS使用L2 LAN IIH(Level-2 LAN IS-IS Hello),目的组播MAC为:0180-c200-0015。
IIH报文需要通过填充字段用于邻居两端协商发送报文的大小。
4.2.2 邻居建立关系(交互Hello报文的过程)
同样,在邻居建立关系的过程中,我们还是分P2P网络和广播多路访问网络来讲。
4.2.2.1 P2P网络
在P2P网络中,路由器建立邻居关系步骤非常简单,只需要进行两次的报文交互即可(两次握手),两次握手只要路由器收到对端发来的Hello报文,就单方面宣布邻居为up状态,建立邻居关系,不过容易存在单通风险。
在RFC3373中,P2P采用了三次握手的方式。通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,与广播链路邻居关系的建立情况相同。
4.2.2.2 广播多路访问网络
在广播链路上,使用LAN IIH报文执行三次握手建立邻居关系。
如下图:RTA发送IIH报文,报文中包含自己的系统ID,邻居状态为:null(不知道邻居是谁),RTB接收到了报文之后,发现RTA发送过来的报文里面没有自己的系统ID,RTB进入initialized(初始化状态),然后给RTA发送自己IIH报文,里面包含了自己的系统ID,并宣告邻居是RTA,RTA收到之后进入UP状态,并回复IIH报文,RTB收到之后进入UP状态,此时邻居关系建立完成。然后进行DIS选举。
只有收到邻居发过来的Hello PDU有自己的system ID才会up,排除了链路单通的风险。
4.2.2.3 DIS
DIS(Designated IS),指定中间系统,又叫虚节点。伪节点是指在广播网络中由DIS创建的虚拟路由器。广播网络中邻居up后会选举DIS(虚节点),DIS的功能类似OSPF的DR(指定路由器)。OSPF中DR的选举课参考DR与BDR选举
在广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔再进行DIS的选举:
- Hello报文中包含Priority字段,Priority值最大的将被选举为该广播网的DIS;
- 若优先级相同,接口MAC地址较大的被选举为DIS;
注意:
- IS-IS中DIS发送Hello时间间隔默认为10/3秒;
- 而其他非DIS路由器发送Hello间隔为10秒
DIS的作用:
- 进行SPF计算时,都把它当成虚节点,简化MA网络的逻辑拓扑(相同点);
- 都是为了减少LSP/LSA的泛洪(相同点);
- 在ISIS中还可以由DIS发送CSNP来同步链路的LSDB(ISIS扩展作用);
4.2.3 DIS与OSPF中DR对比
- 选举时优选级的比较,DIS的优先级为0也可以参与选举。OSPF中优先级为0不参与选举DR。
- 选举的过程需要一定的时间,OSPF选举DR/BDR需要waiting time达40秒,过程也较为复杂,而ISIS选举DIS等待两个Hello报文间隔就可以,简单快捷。
- 选举结果ISIS只有一个DIS,但是OSPF除了有DR,还有一个BDR用做备份。
- 选举结束后,后期有新的Router加入到链路进来,如果优先级比DIS高是可抢占的,但是DR是不可抢占的。
- 选举完成后,ISIS网络链路内所有的路由器之间都建立的是邻接关系。OSPF中DRothers只与DR/BDR形成full邻接关系, DRothers之间只有2-way的关系。
注意:
选举等待时间:DIS选举时间只有两个HELLO报文间隔,时间短,所以不需要备份。而OSPF的DR选举间隔为40S,时间长,重新选举造成网络瘫痪时间多长,所以有BDR的存在。
4.3 链路状态信息的载体
4.3.1 ISIS TLV
TLV实际上是一个数据结构,这个结构包含了这三个字段:类型(TYPE),长度(LENGTH),值(VALUE)。
许多报文都采用TLV,使用TLV结构构建报文的好处是灵活性和扩展性好。采用TLV使得报文的整体结构固定,增加新特点只需要增加新TLV即可。不需要改变整个报文的整体结构。
网络拓扑结构和路由信息用TLV结构表现使得报文的灵活性和扩展性得到了极大的发挥。不同PDU类型所包含的TLV是不同的。
IS-IS中链路状态信息的载体分为两类:
4.3.1.1 LSP PDU(Link State Protocol PDU)
(PDU就是报文的意思)
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报文分为两种:
- 实节点LSP
- 伪节点LSP(只在广播链路存在,DIS发出)
4.3.1.2 SNP PDU(Sequence Number PDU)
SNP PDU用于维护LSDB的完整与同步,报文里包含的是摘要信息(与LSP的完整信息对应)。SNP报文中又分两种:
- CSNP(Complete Sequence Number PDU)包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。CSNP可理解为OSPF中的DD报文,传递的是LSDB里所有的链路信息摘要。
- lPSNP(Partial Sequence Number PDU)包含部分LSDB中的LSP摘要信息,能够对LSP进行请求和确认。PSNP类似于OSPF的LSR或LSAck报文用于请求和确认部分链路信息。
注意:以上协议报文都分为Level-1、Level-2两种,在MA网络中所有协议报文的目的MAC都是组地址:
- Level-1地址:0180-c200-0014
- Level-2地址:0180-c200-0015
4.4 链路状态信息的交互
可以结合OSPF链路状态信息的交互来理解——OSPF(一)OSPF协议简介
4.4.1 P2P网络LSDB同步过程
如上图P2P网络LSDB同步过程:
举例说明步骤:
- A、B两个图书馆(RTA、RTB)建立了友好的合作关系(建立邻居),两个图书管商量着合作,A图书馆历史书较多,B图书馆小说较多。两家想要互相补充一下各自所缺的书籍。
- 这时,A图书馆首先发送给B图书馆一份书籍清单,清单上包含了A图书馆所有的书籍名称(CSNP:摘要信息),告诉B,我图书馆所有的书都在这份清单上,你没有的向我拿我再给你寄过来实体书。
- 图书馆B收到之后,列出了B没有的书,然后发送请求告诉图书馆A这些书是我没有的(PSNP:请求)。
- 图书馆A知道之后,就按照B发送过来的清单拿来实体书,然后打包发送给图书馆B(LSP:全部信息)。
- 图书馆B收到实体书之后,非常的开心,发送了一份感谢信给图书馆A(PSNP:确认)。
- 但是由于某些原因,感谢信丢失了。图书馆A没有收到。
- 过了一段时间之后(LSP重传定时器超时),图书馆A认为B没有收到A送出去的实体书,出于担心,A又重新寄了一份实体书过去(重新发送LSP)。
- 图书馆B又收到了一份实体书,再次很感谢,这时他也明白了上次的感谢信A应该是没有收到,于是重新发送了一份感谢信给A(重传PSNP:确认)。
对应的OSPF中也可拿这个举例,原理不变,只是报文变了一下而已。
正经步骤:
- 建立邻居关系之后,RTA与RTB会先发送CSNP给对端设备。
- 如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP。
- 假定RTB向RTA索取相应的LSP,此时向RTA发送PSNP。
- RTA发送RTB请求的LSP的同时启动LSP重传定时器,并等待RTB发送PSNP作为收到LSP的确认。
- 如果在接口LSP重传定时器超时后,RTA还没有收到RTB发送的PSNP报文作为应答,则重新发送该LSP直至收到RTB的PSNP报文作为确认。
注意:P2P网络CSNP报文只发送一次,邻居建立之后就立刻发送。
4.5 MA网络中DIS的LSDB同步交互过程
MA网络中新加入的路由器与DIS 的LSDB同步交互过程:
举例说明:
- 步骤A、B图书馆的合作越来越大,并确立了以图书馆B为老大的联盟(DIS),老大负责维护发送书籍清单等任务。
- 这时C图书馆也加入了进来(MA网络)。这时图书馆A和B的图书数据库已经同步(LSDB同步),图书馆C加进来之后,为了表达诚意,直接给老成员A和B送了自己独有的实体书(LSP)。
- 老大B收到了书之后,将书籍加入到联盟的图书数据库中(将RTC的LSP信息加入到LSDB中)。
- 然后为了联盟的共同稳定发展,老大定期(10s)在联盟内部发送书籍清单(CSNP),来保证三家图书馆的书籍都是全的。
- 由于图书馆C是刚加入进来的,他还没有A、B的书籍,当收到老大B发送的书籍清单之后(CSNP),C看了清单,列举了C没有的书籍,然后给老大发送请求(PSNP)。
- 老大知道了之后,就给C寄出实体书籍(LSP:注意:这里的是伪节点LSP)。
正经步骤:
- 假设新加入的路由器RTC已经与RTB(DIS)和RTA建立了邻居关系。
- 建立邻居关系之后,RTC将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻居都将收到该LSP。
- 该网段中的DIS会把收到RTC的LSP加入到LSDB中,并等待CSNP报文定时器超时(DIS每隔10秒发送CSNP报文)**并发送CSNP 报文,进行该网络内的LSDB同步。
- RTC收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP(如RTA和RTB的LSP就没有)。
- RTB作为DIS收到该PSNP报文请求后向RTC发送对应的LSP进行LSDB 的同步。
注意:lMA网络CSNP报文只由DIS组播发送,时间默认为10秒。
4.6 路由渗透
通常情况下,Level-1区域内的路由通过Level-1路由器进行管理。所有的Level-2和Level-1-2路由器构成一个连续的骨干区域。Level-1区域必须且只能与骨干区域相连,不同的Level-1区域之间并不相连。 Level-1-2路由器将学习到的Level-1路由信息装进Level-2 LSP,再泛洪LSP给其他Level-2和Level-1-2路由器。因此,Level-1-2和Level-2路由器知道整个IS-IS路由域的路由信息。但是,为了有效减小路由表的规模,在缺省情况下,Level-1-2路由器并不将自己知道的其他Level-1区域以及骨干区域的路由信息通报给它所在的Level-1区域。这样,Level-1路由器将不了解本区域以外的路由信息,可能导致与本区域之外的目的地址通信时无法选择最佳的路由。 为解决上述问题,IS-IS提供了路由渗透功能。通过在Level-1-2路由器上定义ACL(Access Control List)、路由策略、Tag标记等方式,将符合条件的路由筛选出来,实现将其他Level-1区域和骨干区域的部分路由信息通报给自己所在的Level-1区域。
RouterA发送报文给RouterF,选择的最佳路径应该是RouterA->RouterB->RouterD->RouterE->RouterF因为这条链路上的cost值为40。 但在RouterA上查看发送到RouterF的报文选择的路径是RouterA->RouterC->RouterE->RouterF,其cost值为70,不是RouterA到RouterF的最优路由。 RouterA作为Level-1路由器并不知道本区域外部的路由,那么发往区域外的报文都会选择由最近的Level-1-2路由器产生的缺省路由发送出去,所以会出现RouterA选择次最优路由转发报文的情况。 如果分别在Level-1-2路由器RouterC和RouterD上使能路由渗透功能,Aera10中的Level-1路由器就会拥有经这两个Level-1-2路由器通向区域外的路由信息。经过路由计算,选择的转发路径为RouterA->RouterB->RouterD->RouterE->RouterF,即RouterA到RouterF的最优路由。
4.7 路由算法
IS-IS的路由计算特点:
- 在本区域内路由器第一次启动的时候执行的是Full-SPF算法。
- 后续收到的LSP更新,如果是部分拓扑的变化执行的iSPF计算。
- 如果只是路由信息的变化,执行的就是PRC计算。
- 由于采用拓扑与网络分离的算法,路由收敛速度得到了加强。
ISIS路由计算的开销方式:
- Narrow模式(设备默认模式开销都是10,手工配置接口开销取值范围为1~63)。
- Wide模式(设备默认模式开销都是10,手工配置接口开销取值范围是1~16777215)。
进程下加入auto-cost enable命令,Narrow模式和Wide模式都会参考接口带宽大小计算开销值,只 是参考准则有少许差异。
4.8 协议认证
IS-IS的认证只限于明文口令,Cisco的IOS支持3个级别的认证:
- 邻居认证——相互连接的路由器接口必须配置相同的口令,同时必须为L1和L2类型的邻居关系配置各自的认证,L1邻居认证的密码和L2邻居的认证的密码可以不同。邻居认证通过命令“isis password”配置。
- 区域认证——区域内的每台路由器必须执行认证,并且必须使用相同的口令。区域认证通过命令“area-password”配置。
- 域认证——域内的每一个L2和L1/L2类型的路由器必须执行认证,并且必须使用相同的口令。域认证通过命令“domain-password”配置。
5 IS-IS与OSPF对比
- 网络类型和开销方式 IS-IS协议只支持两种网络类型,且所有带宽默认开销值都是一样的,OSPF协议支持四种网络类型,且会根据不同的带宽设定相应的开销值,对帧中继,按需链路等网络类型有很好的支持。
- 区域类型 IS-IS协议分L1/L2区域,L2区域是骨干区域有全部明细路由。L1去往L2只有默认路由。OSPF协议分骨干区域,普通区域,特殊区域。普通区域和特殊区域跨区域访问需要经过骨干区域。
- 报文类型 IS-IS协议路由承载报文类型只有LSP报文且里面路由信息是不区分内部与外部的,简单高效,无需递归计算。OSPF协议路由承载报文LSA类型多样,有1/2/3/4/5/7类等。路由级别等级森严,且需要递归计算,适合精细化调度计算。
- 路由算法 ISIS协议区域内某个节点上的网段发生变化时,触发的是PRC算法,收敛比较快,计算路由的报文开销也比较小。OSPF协议由于网络地址参与了拓扑的构建,在区域内当网段地址改变触发的是i-spf算法,相对来说过程繁琐复杂些。
- 扩展性 ISIS协议任何路由信息都使用TLV传递,结构简单,易于扩展,如对IPv6的支持只增加2个TLV就解决了。且ISIS本身对IPX等协议是支持的。OSPF协议本身是为IP特定开发的,支持IPv4和IPv6的OSPF协议是两个独立的版本(OSPFv2和OSPFv3)。
参考链接
IS-IS协议详解(一)IS-IS中的重要概念_Skye_Zheng的博客-CSDN博客_is-is协议
IS-IS协议详解(三)IS-IS路由计算过程:邻居建立、链路信息交换、路由计算_Skye_Zheng的博客-CSDN博客_isis路由计算
is-is_百度百科
IS-IS协议总结
IS-IS 路由协议详解 (一)_Joker_BLOG的博客-CSDN博客_is-is路由协议
IS-IS 路由协议详解 (二)
IS-IS详解(十四)——IS-IS路由开销计算与外部路由引入
IS-IS路由协议基础知识_mob604756ef35df的技术博客_51CTO博客
IS-IS协议的内容介绍_栗子老师的技术博客_51CTO博客