首页 > 技术文章 > IS-IS

tmjblog 2020-04-05 23:51 原文

从中间系统到中间系统协议,IGP,DV协议,直接运行在二层,使用SPF算法进行路由计算。

ISIS最早不是给TCP/IP设计的,是给CLNS(无连接网络)设计的,但是CLNS被淘汰了,ISIS的开发者给ISIS协议加上了TCP/IP的支持模块,将其变为集成的ISIS,但是依旧不如OSPF流行。所以渐渐被人遗忘。

近年来云计算数据中心崛起,数据中心网络日益复杂,而OSPF的区域划分很不自由,并且OSPF是基于IP来进行信息传递的,而数据中心并不是完全TCP/IP的网络环境,所以OSPF使用受到很大限制。

主要用于运营商的大规模路由网络。

基本术语:

 

 

9.1 ISO编址

 

 

9.2 区域分类

  • 骨干区域

  • 非骨干区域

非骨干区域与骨干区域通过Level-1-2路由器相连

9.3 路由器分类

  • Level-1路由器

    部署在非主干区域,负责区域内的路由,与同一区域内同级别和Level-1-2路由器形成邻接关系,只负责维护Level-1的LSDB,包含本区域的路由信息,到区域外的报文转发给最近的Level-1-2路由器。

  • Level-2路由器

    部署在骨干区域,负责区域间的路由,可以与同一或不同区域的Level-2路由器或者其它区域的Level-1-2的路由器形成邻接关系,维护一个Level-2的LSDB,包含区域间的路由信息。

  • Level-1-2路由器

    同时部署在骨干区域和非骨干区域,Level-1必须通过Level-1-2路由器才能连接至其他区域。同时维护两个LSDB。

9.4 DIS和PSN

支持广播链路和点到点,不支持P2MP,对于NBMA网络,如ATM,需对其配置子接口。

在广播网络中,IS-IS需要在所有路由器中选举一个路由器组作为DIS,负责创建和更新PSN(伪节点),并负责生成PSN的LSP用来描述这个网络上的网络设备。

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

  • DIS优先级大的会被选中,如果有多台,MAC地址较大的会被选中,0级也会参与选举。

  • 不同级别DIS可以是一台路由器也可以是不同的路由器,不存在备份DIS。

  • 当有符合DIS条件的新路由器加入时,会被选举为新的DIS。

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

9.5 报文类型

  • Hello PDU

    用于建立和维持邻接关系,又称IIH(IS-to-IS Hello PDUs)默认10秒发送一次,PSN和DIS默认3.3秒,3倍Hello时间没收到就判定邻接Down。

  • LSP

    链路状态报文LSP用于交换链路状态信息。LSDB中的LSP寿命是1200s,每隔900s刷新一次。

  • SNP

    描述全部和部分路由数据库中的LSP来同步至LSDB从而维护LSDB的完整与同步,序列号报文可分为CSNP全序列号报文和PSNP部分序列号报文

    • CSNP包括LSDB中所有LSP的摘要信息,在广播网络中由DIS定期发送,点到点链路上,CSNP只在第一次建立邻接关系时发送。

    • PSNP只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行请求和确认。

9.6 邻接建立过程

IS-IS需按照如下规则建立关系:

  • 只有同一层次的路由器才有可能建立邻接

  • 对于Level-1路由器来说,区域号必须一致

  • 链路两端IS-IS接口的网络类型必须一致,且接口地址必须处于同一网段。

9.6.1 广播网络邻接建立过程:

  1. RouterA广播发送Level-2 LAN IIH,此报文中无邻接标识。

  2. RouterB收到此报文后,将自己和RouterA的邻接状态标识为Initial。然后,RouterB再向RouterA回复Level-2 LAN IIH,此报文中标识RouterA为RouterB的邻接。

  3. RouterA收到此报文后,将自己与RouterB的邻接状态标识为Up。然后RouterA再向RouterB发送一个标识RouterB为RouterA邻接的Level-2 LAN IIH。

  4. RouterB收到此报文后,将自己与RouterA的邻接状态标识为Up。这样,两个路由器成功建立了邻接关系。

这里与Level-2为例,Level-1与此一样。因为是广播网络,需要选举DIS,所以在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。

9.6.2 P2P网络邻接接关系建立:

三次握手机制:通过三次发送P2PIIH最终建立邻接关系,类似广播邻接关系的建立。

9.7 LSP交互过程

所有路由器都会产生LSP,以下是会触发一个新LSP的事件:

  • 邻接Up或Down

  • IS-IS相关接口Up或Down

  • 引入的路由发生变化

  • 区域间的路由发生变化

  • 接口被赋予新的开销值

  • 周期性更新

 

收到邻接新的LSP处理过程:

  1. 合入自己的LSDB中,并标记为flooding;

  2. 发送新LSP到除收到该LSP的接口之外的接口;

  3. 邻接再扩散到其它邻接

 

LSP报文的“泛洪”(flooding)是指当一个路由器向相邻路由器通告自己的LSP后,相邻路由器再将同样的LSP报文传送到除发送该LSP的路由器外的其它邻接,并这样逐级将LSP传送到整个层次内所有路由器的一种方式。

每个LSP都有一个标识自己的4字节序列号,在路由器启动时所发送的第一个LSP报文中的序列号为1,之后新的LSP序列号在前一个LSP序列号上+1,序列号越大,LSP越新。如果序列号到头,路由器就停止运行1260S,不过基本上不可能,即便是每秒钟产生一个LSP,也要等到136年之后才能从1到OxFFFFFFFF

9.8 路由渗透

由于L1路由器无法学习到其他区域的条目,只能通过最近的L1/L2路由器下发的默认路由离开本区域。所以有时候会出现次优路径。

可以尝试着在L1/L2路由器上泄露一部分L2的条目到L1路由器上,来防止这种情况的发生。

9.9 认证

通过TLV形式携带认证信息,认证TLV的类型为10。

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

  • 接口认证:是指使接口以指定方式和密码对Level-1和Level-2的Hello报文进行认证。

    有以下两种设置:

    • 发送带认证TLV的认证报文,本地对收到的报文也进行认证检查。

    • 发送带认证TLV的认证报文,但是本地对收到的报文不进行认证检查。

  • 区域认证:是指运行IS-IS的区域以指定方式和密码对Level-1的SNP和LSP报文进行认证。

  • 路由域认证:是指运行IS-IS的路由域以指定方式和密码对Level-2的SNP和LSP报文进行认证。

    • 对于区域和路由域认证,可以设置为SNP和LSP分开认证。

      • 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都进行认证检查。

      • 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文携带认证TLV,但不对收到的SNP报文进行检查。

      • 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文不携带认证TLV,也不对收到的SNP报文进行认证检查。

      • 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都不进行认证检查。

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

  • 明文认证:一种简单的认证方式,将配置的密码直接加入报文中,这种认证方式安全性不够。

  • MD5认证:通过将配置的密码进行MD5算法之后再加入报文中,这样提高了密码的安全性。

  • Keychain认证:通过配置随时间变化的密码链表来进一步提升网络的安全性

9.10 网络收敛

OSPF使用LSA通告描述网络结构,即有向图。路由器会将LSDB转换成一张带权的有向图,各个路由器得到的有向图完全相同。

各个路由器根据有向图使用SPF算法计算出一棵以自己为根的最短路径树。

当部分拓扑结构(最短路径树的结构)发生变化时,采用增强SPF算法(ISPF),只需将变化了的少量拓扑进行修正。

当拓扑不变而路由信息发生变化时,用部分路由计算算法(PRC),只需根据原有的拓扑生成新的路由信息。

 

 

推荐阅读