IS-IS协议
历史起源
IS-IS(Intermediate System to Intermediate System)最初是国际标准化组织ISO(the International Organization for Standardization)为它的无连接网络协议CLNP(ConnectionLess Network Protocol)设计的一种动态路由协议
为了提供对IP的路由支持,IETF在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI环境中,称为集成化IS-IS(Integrated IS-IS或Dual IS-IS 资料中所指的IS-IS,如不加特殊说明,均指集成IS-IS)
IS-IS属于内部网关协议,用于自治系统内部。IS-IS是一种链路状态协议,使用SPF算法(Shortest Path First)进行路由计算
由于IS-IS的简便性及扩展性强的特点,目前在大型ISP的网络中被广泛地部署
IS-IS协议报文在数据链路层传输,但是属于网络层协议
路由计算过程
① 邻居关系建立
邻居关系建立主要是通过HELLO包交互并协商各种参数
② 链路信息交换
与OSPF不同,ISIS交互链路状态的基本载体不是LSA(link state advertisement),而是LSP(link state PDU);交互的过程没有OSPF协议那样经历了多个阶段,主要是通过CSNP报文和PSNP报文两种协议报文来同步,请求以及确认链路状态信息(承载的是链路状态信息摘要),而链路状态信息的详细拓扑和路由信息是由LSP报文传递
③ 路由计算
SPF计算和OSPF基本一样的,但ISIS算法分离了拓扑结构和IP网段,加快了网络收敛速度(ISIS协议的优化)
地址结构
网络服务访问点NSAP(Network Service Access Point)是OSI协议中用于定位资源的地址。NSAP的地址结构它由IDP(Initial Domain Part)和DSP(Domain Specific Part)组成。IDP和DSP的长度都是可变的,NSAP总长最多是20个字节,最少8个字节 习惯上配置为10B 由16进制进行表示
① IDP相当于IP地址中的主网络号。它是由ISO规定,并由AFI(Authority and Format Identifier)与IDI(Initial Domain Identifier)。AFI表示地址分配机构和地址格式,IDI用来标识域
② DSP相当于IP地址中的子网号和主机地址。它由High Order DSP、System ID和SEL三个部分组成。High Order DSP用来分割区域,System ID用来区分主机,SEL用来指示服务类型
③ AFI(1字节) IDI(2字节) HODSO(0-10字节) SID(6字节) NSEL(1字节)
Area ID(Area address)
① 既能够标识路由域,也能够标识路由域中的区域。因此,它们一起被称为区域地址,相当于OSPF中的区域编号(其中49代表路由域,0001表示区域)
② 一般情况下,一个路由器只需要配置一个区域地址,且同一区域中所有节点的区域地址都要相同。为了支持区域的平滑合并、分割及转换,在设备的实现中,一个IS-IS进程下最多可配置3个区域地址必须保证他们的system id都相同
System ID
用来在区域内唯一标识主机或路由器。在设备的实现中,它的长度固定为48bit(6字节)
在实际应用中,一般使用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
作用类似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可不必去关注
路由器分类
在OSPF协议里面也有一些比较特殊的路由器:如ABR路由器、ASBR路由器、区域内部路由器、骨干路由器等 代表这该设备可以执行不同的功能和角色
在IS-IS协议里面一共只有三种不同角色的路由器:level-1路由器、level-2路由器、level-1-2路由器 默认情况下 华为设备默认都是level-1-2角色
① level-1路由器只具有level-1的功能
② level-2路由器只具有level-2的功能
③ level-1-2路由器只具有level-1和level-2的功能
#
isis 100
is-level level-1 修改为level-1路由器
#
Level-1路由器
Level-1只能与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,只负责维护Level-1的链路状态数据库,该LSDB包含本区域内的路由信息,到本区域外的报文转发给最近的Level-1-2路由器
注意点:
① 能够和level-1建立起关系的只能在同一个区域里面的设备
Level-2路由器
Level-2路由器负责区域间的路由,它可以与相同或者不同区域的Level-2路由器或者不同区域的Level-1-2路由器形成邻居关系。Level-2路由器维护一个Level-2的LSDB,该LSDB包含区域间的路由信息
注意点:
② level-2路由器可以和同一个区域的level-2路由器建立起关系
③ level-2路由器可以和不同一个区域的level-2路由器建立起关系
④ level-2路由器可以和同一个区域的level-1-2路由器建立起关系
⑤ level-2路由器可以和不同一个区域的level-1-2路由器建立起关系
Level-1-2路由器
Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由 Level-1-2路由器可以与同一区域的Level-1形成Level-1邻居关系,也可以与其他区域的Level-2和Level-1-2路由器形成Level-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关系
小结如下
① 不同区域间,只能建立Level-2的邻接关系
② Level-2路由器可以与Level-2路由器建立邻接关系
③ Level-1-2路由器可以与Level-2路由器建立邻接关系
④ Level-1-2路由器可以与Level-1-2路由器建立邻接关系
IS-IS的拓扑结构
IS-IS协议的区域边界在整个Router,OSPF协议的区域边界在Router的接口
为了支持大规模的路由网络,IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构
一般来说,将Level-1路由器部署在非骨干区域,Level-2路由器和Level-1-2路由器部署在骨干区域。每一个非骨干区域都通过Level-1-2路由器与骨干区域相连
下图是一个运行IS-IS协议的网络,它与OSPF的多区域网络拓扑结构非常相似。整个骨干区域不仅包括Area1中的所有路由器,还包括其它区域的Level-1-2路由器
下图是IS-IS的另外一种拓扑结构图。在这个拓扑中,Level-2级别的路由器没有在同一个区域,而是分别属于不同的区域。此时所有物理连续的Level-1-2和Level-2路由器就构成了IS-IS的骨干区域
通过以上两种拓扑结构图可以体现IS-IS与OSPF的不同点:
① 在IS-IS中,每个路由器都只属于一个区域;而在OSPF中,一个路由器的不同接口可以属于不同的区域
② 在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域
③ 在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT(Shortest Path Tree);而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发
区域内算法
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时,各个接口的开销值根据如下表来确定
区域间路由
区域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路由器
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
④ 路由表里面有整个网络的路由信息
IS-IS支持的网络类型
① 点对点网络类型(如PPP、HDLC等)
② 广播多路访问网络类型(Ethernet等)
注意点
① 对于NBMA(Non-Broadcast Multi-Access)网络,如ATM,需对其配置子接口,并注意子接口类型应配置为P2P
② IS-IS不能在点到多点链路P2MP(Point to MultiPoint)上运行
IS-IS的报文类型
IS-IS报文有以下几种类型:HELLO PDU(Protocol Data Unit)、LSP和SNP
① Hello PDU
Hello报文用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)类似于OSPF的Hello报文
② LSP
链路状态报文LSP(Link State PDUs)用于交换链路状态信息 类似于OSPF中的LSA
③ SNP
序列号报文SNP(Sequence Number PDUs)通过描述全部或部分数据库中的LSP来同步各LSDB(Link-State DataBase),从而维护LSDB的完整与同步
CSNP(Complete Sequence Number PDU)类似于OSPF的DD报文传递的是LSDB里所有链路信息摘要
PSNP(Partial Sequence Number PDU)类似于OSPF的LSR或LSAck报文用于请求和确认部分链路信息
邻居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报文的类型
a) Level-1的hello报文
b) Level-2的hello报文
c) P2P的hello报文
邻居关系建立
P2P链路
在P2P链路上,分为两次握手机制(没有邻居列表)和三次握手机制
① 两次握手只要路由器收到对端发来的Hello报文,就单方面宣布邻居为up状态,建立邻居关系,不过容易存在单通风险
② 通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,与广播链路邻居关系的建立情况相同
以太网链路
在广播链路上,使用LAN IIH报文执行三次握手建立邻居关系
① 当收到邻居发送的合法Hello PDU报文里面没有自己的system ID的时候,状态机进入initialized
② 只有收到邻居发过来的Hello PDU有自己的system ID才会up,排除了链路单通的风险
③ 广播网络中邻居up后会选举DIS(虚节点),DIS的功能类似OSPF的DR(指定路由器)
DIS的介绍
DIS是指指定中间系统(Designated IS)DIS的功能类似OSPF的DR(指定路由器) 伪节点是指在广播网络中由DIS创建的虚拟路由器
在广播网络,需要选举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扩展作用)
DIS和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的关系
LSP报文
LSP PDU(Link State Protocol PDU)LSP类似于OSPF的LSA,承载的是链路状态信息,包含了拓扑结构和网络号
链路状态报文LSP(Link State PDUs)用于交换链路状态信息。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
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报文用于请求和确认部分链路信息
P2P网络LSDB同步过程
① 建立邻居关系之后,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报文只发送一次,邻居建立后立即发送
MA网络中DIS的LSDB同步交互过程
① 假设新加入的路由器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的同步
MA网络CSNP报文只由DIS组播发送,时间默认为10秒
链路状态信息的载体
IS-IS报文中的变长字段部分是多个TLV(Type-Length-Value)三元组 TLV也称为CLV(Code-Length-Value)
TLV的含义是:类型(TYPE),长度(LENGTH),值(VALUE)
使用TLV结构构建报文的好处是灵活性和扩展性好。采用TLV使得报文的整体结构固定,增加新特点只需要增加新TLV即可。不需要改变整个报文的整体结构
网络拓扑结构和路由信息用TLV结构表现使得报文的灵活性和扩展性得到了极大的发挥
不同PDU类型所包含的TLV是不同的
路由***
通常情况下,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的最优路由
ISIS和OSPF的区别
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)
术语对照表