IGP协议-ISIS

ISIS邻接关系的建立

ISIS的邻居状态机:只有down、init、up三种状态

广播网

  • 在广播网络上,使用LAN IIH报文来建立邻接关系。有两种类型的LAN IIH:L1 LAN IIH(组播MAC:01-80-C2-00-00-14)和L2 LAN IIH (组播MAC:01-80-C2-00-00-15) 。
  • Level-1路由器通过交互L1 LAN IIH报文来建立邻接关系;Level-2路由器通过交互L2 LAN IIH报文来建立邻接关系;Level-1-2路由器会同时交互L1 LAN IIH报文和L2 LAN IIH报文来建立邻接关系。
    广播邻接关系建立
    以两台L2路由器在广播链路上建立邻居关系为例:
  1. R1组播发送Level-2 LAN IIH(组播MAC:01-80-C2-00-00-15),此报文中无邻居标识。
  2. R2收到此报文后,将自己和R1的邻居状态标识为Initial。然后,R2再组播向R1回复Level-2 LAN IIH,此报文中标识R1为R2的邻居(6号TLV,通过R1的接口MAC地址进行标识)。
  3. R1收到此报文后,将自己与R2的邻居状态标识为Up。然后R1再组播向R2发送一个标识R2为R1邻居的Level-2 LAN IIH。
  4. R2收到此报文后,将自己与R1的邻居状态标识为Up。这样,两个路由器成功建立了邻居关系。
    因为是广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔再进行DIS的选举。Hello报文中包含Priority字段,Priority值最大的将被选举为该广播网的DIS,若优先级相同,接口MAC地址较大的被选举为DIS

报文细节

报文细节

P2P

在P2P连路上,邻接关系建立不同于广播链路,分为两次握手机制和三次握手机制(默认)
P2P邻接关系建立

  1. 两次握手2-way(容易存在单通的风险,即链路两端分别为Up和Down)
    只要路由器收到对端发来的Hello报文,就单方面宣布邻居为Up状态,建立邻居关系
  2. 三次握手3-way(默认方式)
    通过三次发送P2P的Hello PDU最终建立邻居关系,类似广播邻居关系建立
    240号TLV包含:邻居状态、接口ID、system-id和自己的接口ID

3-way报文

增加P2P邻接TLV,类型为240,长度为15B,其中电路ID用于标识接口(广播网络使用MAC地址来标识接口),而system-id用于标识节点
3-way报文

ISIS的LSP交互过程

广播网络

LSP交互不需要确认,CSNP和PSNP中是LSP的摘要信息
CSNP报文在广播网络中的作用:确认机制,相当于ACK
PSNP报文在广播网络中的作用:请求(LSR)
广播网络LSP交互过程

  1. 新加入的路由器R3已经与R2(DIS)、R1建立邻居关系
  2. R3使用组播地址发送自己的LSP
  3. R2收到R3的LSP之后,会将R3的LSP内容加入LSDB中,并等待CSNP报文定时器超时(10s)并发送CSNP报文,进行该网络的LSDB同步
  4. R3收到DIS发来的CSNP后,对比自己的LSDB,然后向R2发送PSNP用来请求自己没有的LSP如果R3发现CSNP中缺少自己的LSP的内容,即DIS没有收到自己的LSP,R3会再次组播发送自己的LSP(通过该机制保证广播网中LSP的可靠性)
  5. R2收到R3发来的PSNP之后,将R3请求的LSP用组播方式发送给R3R3发送PSNP之后如果没有收到LSP,R3会在5秒后重新发送该PSNP

P2P网络

LSP交互需要确认
PSNP报文在P2P网络中的作用:作为ACK应答以确认收到的LSP,用来请求所需的LSP
在P2P链路上,CSNP只会发送一次
P2P网络LSP交互过程
理论步骤:

  1. 建立邻接关系之后首先都发送一个CSNP,通告本地的LSDP摘要信息
  2. 两端设备接收到CSNP之后和本地LSDB做比较,发送PSNP请求自己缺少的LSP
  3. 收到对方的PSNP之后回复具体的LSP
  4. 收到对方发来的LSP之后,需要再回复一个PSNP进行确认
    实际抓包过程:第一阶段R1和R2各发一个LSP;第二阶段R1和R2各发送一个PSNP;第三阶段R1发送LSP,R2发送CSNP进行确认

ISIS的SSN和SRM标志

SSN/SRM标志在发送、接收LSP的接口下配置,只具有本地意义,用于LSP完整性、可靠性保证,虽然两种网络中都存在,但是只有在P2P网络中才有意义。

P2P

SSN标志:用于P2P链路接收方,在收到一个LSP时设置,在完成PSNP确认时清除(即发送了用于确认该LSP的PSNP后删除)
SRM标志:用于P2P链路发送方,在发送一个LSP时设置,在收到其PSNP确认时清除

广播

SSN标志:用于broadcast链路数据库同步过程中,请求完整的LSP。
SRM标志:用于broadcast链路发送方,在发送一个LSP时设置,但在LSP传送出去后被立即清除,因为broadcast链路不需要PSNP确认。

路由渗透(路由泄漏)

简而言之,路由渗透解决非骨干区域访问骨干区域时,因为不知道明细路由而导致的次优路径问题
Level-1的路由通过Level-1-2传递进Level-2,但是Level-2的路由并不会传递进Level-1。因此,Level-1-2和Level-2路由器知道整个IS-IS路由域的路由信息。但是,为了有效减小路由表的规模,在缺省情况下,Level-1-2路由器并不将自己知道的其他Level-1区域以及骨干区域的路由信息通报给它所在的Level-1区域。这样,Level-1路由器将不了解本区域以外的路由信息,可能导致与本区域之外的目的地址通信时无法选择最佳的路由。
关联ISIS选路原则
路由渗透
未配置ISIS的路由渗透之前:
R1不知道本区域外部的任何路由,那么发往区域外的报文会选择最近的Level-1-2路由器(即R3)产生的默认路由发送出去,所以R1会选择次优路径(R1--R3--R5--R6),但是流量返回的路径是R6--R5--R4--R2--R1,同时还造成往返路径不一致,如果存在防火墙,会导致流量不通的问题

产生ATT置位的LSP(Level-1的默认路由)的条件

ISIS中的ABR(Level-1-2)生成默认路由(ATT=1)的条件:一边为Level-1,另外一边为Level-2

  1. 设备运行级别为Level-1-2
  2. 在Level-2的区域中有一个活动的邻接关系
  3. Level-2的区域ID不能和Level-1的区域ID相同即Level-1-2设备的区域ID和Level-1相同,和Level-2不同

关于第3点的理解:
区域的“不同”的准确含义是“包含”,即level-1-2设备的area如果包含了level-2邻居的area那么不置位,不包含则置位(默认可以配置3个NET地址,即3个area)
通俗的理解:level-1-2设备认为level-1可以通过level-2到达更多区域才会将ATT置位,其中area信息通过报文中tlv0交互

路由泄漏之后防环

level-1-2的路由器在向level-1泄露路由时,这些level-2的LSP会将UP/DOWN置位,当这些泄露的路由再次想传入level-2时,level-1-2的路由器不会再向level-2的路由器传这些泄露的LSP。

三个重要比特位:
P(PRTtition):分区位。仅与Level-2的LSP有关(即只在Level-2区域才会被置位),表示路由器是否支持自动修复区域分割。(用于虚链路,但是目前并没有用过)
ATT(Attach):连接位。由Level-1-2路由器产生,但仅与Level-1的LSP有关(即只在Level-1区域才会被置位,使Level-1路由器产生指向Level-1-2路由器的默认路由),表示产生此LSP的路由器(Level-1-2路由器)与多个区域相连接。
OL(Overload):过载标志位。表示本路由器因内存不足而导致LSDB不完整。其它路由器在得知这一信息后,就不会再利用这台路由器转发需要经过它传送的数据流,但到此路由器直连地址的报文仍然可以被转发(一般用于承载BGP的核心ISIS,即isis over bgp)

利用OL过载位的场景

利用OL过载位的场景
  1. R5、R6之间建立EBGP邻居关系,R6与R3、R2、R4之间通过lo0分别建立IBGP邻居关系,lo0互通是通过isis协议。R2的lo0访问R5的lo0,下一跳选择R3,因为R3的cost更小。
  2. 假设R3和R6之间的链路断开,则R3不再通告R6的路由条目,R2会将下一跳切换到R4。
  3. 如果此时R3与R6之间的链路恢复,isis邻居已经建立,但是IBGP邻居还未建立(IBGP邻居建立依赖于IGP),此时R3会向R2通告R6的路由。如果R2此时切换到R3,R3与R6之间的IBGP邻居还未建立,可能造成丢包。为了避免这种场景,需要用到isis over bgp,即R3再通告LSP时,首先会查看BGP邻居状态,如果BGP邻居未建立,则将该LSP的OL位置位,那么R2收到此OL位置位的LSP,则进行SPF计算时不考虑此条LSP。

ISIS选路原则

Level-1>Level-2>leaked(注意内部优先级)

  1. Level-1:先查看是否和目标在同一区域,若在通过Level -1路由访问,若不在则使用缺省默认路由通过最近的Level-1-2路由器访问
  2. Level-2路由器访问某个目标时,直接通过Level-2数据库访问
  3. Level-1-2路由器访问目标时,先查看是否和目标在同一区域,若在同一区域通过Level-1路由访问,若不在同一区域通过Level-2数据库访问

ISIS收敛特性

和OSPF收敛特性基本相同,但是RPC对ISIS的支持优于对OSPF的支持,因为ISIS的路由均是通过TLV进行传递的,但是OSPF传递路由的有1、3、5、7类LSA,RPC不支持1类LSA

  1. 快速收敛
    1. 增量最短路径优先算法ISPF:只对受影响的节点进行路由计算,仅第一次计算全部节点
    2. 部分路由计算PRC:PRC的原理和ISPF相同,都是只对发生变化的路由进行重新计算。
    3. 智能定时器
    4. LSP快速扩散:接口上发送LSP报文的最小间隔为50毫秒,每次发送LSP报文的最大数目是10
      LSP默认发送间隔为900秒,老化时间(剩余老化时间)为1200秒,如果LSP剩余时间变为0,还需要在等待60S(零老化时间)才会从LSDB中删除。ospf和isis均不能删除不是自身产生的路由,即不能删除不是自己产生的LSA或者LSP。但是isis如果收到的lsp是有问题的,是可以删除的,删除时间为1260秒,这点和ospf不同
  2. 按优先级收敛

度量值

1. Narrow模式

设备默认模式开销都是10,手工配置接口开销取值范围为1-63

  • 2号TLV(IS Neighbors TLV),IS可达性TLV,用来携带邻居信息,通告节点
  • 128号TLV(IP Internal Reachability TLV),IP内部可达性TLV,用来携带路由域内的IS-IS路由信息,通告内部路由
  • 130号TLV(IP External Reachability TLV),IP外部可达性TLV,用来携带路由域外的IS-IS路由信息,通告外部路由

4种度量值

每个度量1个字节,经常用的是默认度量,而延迟度量、开销度量、差错度量主要用在QOS路由选择中

  1. 默认度量:跟接口带宽成反比,参考带宽/带宽=cost (默认情况下,所有路由器都必须支持这个默认度量)
    1. 7bit:up/downup为1,用于防环Level-1-2的路由器不会将来自Level-2的路由发布进Level-1。如果将Level-2的路由泄漏进Level-1,那么up/down会置1,up/down置位的Level-1的LSP不会再被通告进Level-2
    2. 6bit:内部度量/外部度量外部度量为1 (默认是内部度量)
    3. 5bit~0bit(6bit) :用于表示度量值, 即最大为为63。接口下配置的最大度量值为63,转发路径上累加度量值不能超过1024,否则不参与计算
  2. 延迟度量:用来表示链路传输的延迟
  3. 开销度量:用来表示链路传输的开销
  4. 差错度量:用来表示链路传输的错误
    4种度量值

2. Wide模式

设备默认开销模式都是10,手工配置接口开销取值范围为1-16777215
OSPF与ISIS协议都被扩展以便携带MPLS TE接口参数,对于ISIS协议来说,使用以下两种新的TLV:

  • 22号TLV(IS Extended Neighbors TLV),扩展IS可达性TLV,用来携带邻居信息
  • 135号TLV(Extended IP Reachability TLV),扩展IP可达性TLV,用来替换原有的IP reachability TLV,携带ISIS路由信息,它扩展了路由开销值的范围,并可以携带sub TLV
    接收和发送的类型详细列表
    使用宽度量的场景:
  1. 最大63的度量值已经不能满足要求
  2. 配置需要支持IPv6
  3. 外部路由需要携带tag(管理标记),tag也是包含在度量值中的
    管理标记:管理标记特性允许在IS-IS域中通过管理标记对IP地址前缀进行控制,可以简化管理。其用途包括控制不同级别和不同区域间的路由引入,以及在同一路由器上运行的IS-IS多实例

auto-cost
华为独有的计算cost值的方式,根据带宽自动计算接口开销,参数compatible表示使能根据带宽自动计算接口开销的兼容模式
如果在接口和isis进行下都没有配置开销值,则此接口的开销由系统自动计算

  1. 当开销类型为wide或wide-compatible时:接口的开销值= (参考带宽/接口带宽值)×10
    配置auto-cost enable compatible命令后:接口的开销值= 参考带宽/接口带宽值
  2. 当开销类型为narrow、narrow-compatible或compatible时,不同带宽开销值如下:10M以内60,100M以内50,155M以内40,622M以内30,2.5G以内20,大于2.5G为10

ISIS认证

分类

  1. 接口认证
    对Level-1和Level-2的Hello报文进行认证
    针对Hello报文做的认证,会影响ISIS邻居,也会影响路由
    有以下两种设置
    1. 发送带认证TLV的认证报文,本地对收到的报文也进行认证检查
    2. 发送带认证TLV的认证报文,但是本地对收到的报文不进行认证检查
  2. 区域认证
    对Level-1的SNP和LSP报文进行认证
    针对Level-1的SNP和LSP做的认证,不会影响ISIS邻居,但是会影响Level-1的LSDB的同步,仅影响Level-1的路由,不会影响Level-2的路由
  3. 路由域认证
    对Level-2的SNP和LSP报文进行认证
    针对Level-2的LSP和SNP的认证,不会影响ISIS邻居,但是会影响Level-2的LSDB的同步,仅影响Level-2的路由,不影响Level-1的路由
    可以设置为SNP和LSP分开认证:
    1. 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都进行认证检查
    2. 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文携带认证TLV,但不对收到的SNP报文进行检查
    3. 本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文不携带认证TLV,也不对收到的SNP报文进行认证检查
    4. 本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都不进行认证检查

报文认证方式

  1. 明文认证
  2. MD5认证
  3. Keychian认证:通过配置随时间变化的密码链表来进一步提升网络的安全性

认证信息的携带形式

ISIS通过TLV的形式携带认证信息,认证TLV的类型为10,具体格式如下:

  • Type:ISO定义认证报文的类型值为10,长度为1字节
  • Length:指定认证TLV值的长度,长度1字节
  • Value:指定认证的具体内容,其中包括了认证的类型和认证的密码,长度为1~254字节,其中认证的类型为1字节,具体定义如下:
    • 0:保留的类型
    • 1:明文认证
    • 54:MD5认证
    • 255:路由域私有认证方式

LSP

ISIS的LSDB更新过程

  1. DIS接收到LSP,在数据库中搜索对应的记录,若没有该LSP,则将其加入数据库,并广播新数据库内容
  2. 序列号越大越优:若收到的LSP序列号大于本地LSP的序列号,就替换为新报文,并广播新数据库内容;若收到的LSP序列号小本地LSP的序列号,就向入接口发送本地LSP报文
  3. RemainingLifetime剩余生存时间越小越优:若两个序列号相等,则比较RemainingLifetime。若收到的LSP的RemainingLifetime小于本地LSP的Remaining Lifetime,就替换为新报文,并广播新数据库内容;若收到的LSP的Remaining Lifetime大于本地LSP的Remaining Lifetime,就向入端接口发送本地LSP报文。
  4. Checksum越大越优:若两个序列号和RemainingLifetime都相等,则比较Checksum。若收到的LSP的Checksum大于本地LSP的Checksum,就替换为新报文,并广播新数据库内容;若收到的LSP的Checksum小于本地LSP的Checksum,就向入端接口发送本地LSP报文。
  5. 若两个序列号、Remaining Lifetime和Checksum都相等,则不转发该报文

LSP产生的原因

  1. 邻居Up或Down
  2. ISIS相关接口Up或Down
  3. 引入的IP路由发生变化
  4. 区域间的IP路由发生变化
  5. 接口被赋了新的metric值
  6. 周期性更新

收到邻居新的LSP的处理过程

  1. 将接收的新的LSP合入到自己的LSDB数据库中,并标记为flooding
  2. 发送新的LSP到除了收到该LSP的接口之外的接口
  3. 邻居再扩散到其他邻居

LSP ID

LSP ID

LSP分片

当ISIS要发布的链路状态协议数据报文PDU中的信息量太大时,IS-S路由器将会生成多个LSP分片,用来携带更多的ISIS信息
ISIS LSP分片由LSP ID中的LSP Number字段进行标识,这个字段的长度是1字节。因此,一个IS-IS进程最多可产生256个LSP分片(最多携带路由3万左右),携带的信息量有限。IS-IS可以配置虚拟的SystemID (最多可配置50个,即isis进程最多可生成51*256个LSP分片),并生成虚拟IS-IS的LSP报文来携带路由等信息。
为什么需要分片?因为isis不是通过IP承载的,是通过链路层承载的,链路层本身不具备分片的能力,只能依靠isis自身实现
如果LSP分片之后,没有收到分片序列号为0的LSP,那么后续的LSP将全部丢弃,因为00分片中包含该LSP的头部信息

工作模式

LSP分片工作模式
  1. Mode-1
    用于网络中的部分路由器不支持LSP分片扩展特性的情况
    RouterB是不支持分片扩展的路由器,RouterA1和RouterA2是RouterA的虚拟系统,RouterB认为对端有三台独立的路由器,并进行正常的路由计算。同时RouterA到RouterA1和RouterA2的开销都是0
  2. Mode-2
    用于网络中所有路由器都支持LSP分片扩展特性的情况
    RouterB通过IS Alias ID TLV24号TLV,用来表示初始系统与虚拟系统的关系知道他们的初始系统是RouterA,则把RouterA1,RouterA2所发布的信息都视为RouterA的信息

路由算法

设备默认接口开销值都是10

SPF计算过程

  1. 单区域LSDB同步完成
  2. 生成全网拓扑结构图
  3. 以本节点为根生成最短路径树
  4. 默认跨越每个节点的开销一样

ISIS的计算特点

  1. 在本区域收到的LSP更新,如果是部分拓扑的变化执行的SSPF内路由器第一次启动的时候执行的是Full-SPF算法
  2. 如果只是路由信息的变法,执行的是PRC算法
  3. 由于采用拓扑与网络分离的算法,路由收敛速度得到了加强

路由聚合

summary ip-address mask [ avoid-feedback | generate_null0_route | tag tag-value | [ level-1 | level-2 | level-1-2 ] ]

  • avoid-feedback
    避免从另外一个level学到自己发布的聚合路由。
    如果另外一个level中有与summary地址相同的学习路由,则认为该路由是其他路由器学到了本地路由器发布的summary路由后,渗透到另外一个level并发布的。此时avoid-feedback产生作用,该路由变为inactive,从RM路由表中删除。
  • generate_null0_route
    指定生成Null 0路由,以防止路由循环。
  • tag
    指定发布路由的管理标签号
  • level-1、level-2、level-1-2
    对指定区域的路由进行聚合。如果配置时没有指定Level,缺省为Level-2

补充

ISIS地址结构

NSAP

NSAP是OSI协议中用于定位资源的地址,相当于OSI的网络层协议CLNP的地址(类似IP地址的概念)
由IDP和DSP组成,IDP和DSP的长度都是可变的,NSAP总长度最多是20字节,最少是8字节

  • IDP相当于IP地址中的主网络号,是由ISO规定的,由AFI的IDI两部分组成
    • AFI表示地址分配机构和地址格式(长度固定为1B)
    • IDI用来标识域
  • DSP相当于IP地址中的子网号和主机地址,由HighOrderDSP、SystemID、SEL三部分
    • HighOrderDSP用来分割区域
    • SystemID用来区分区域
    • SEL用来指示服务类型

AreaAddress(AreaID)由IDP和DSP中的HighOrderDSP组成,既能够标识路由域,也能够标识路由域中的区域,它们一起被称为区域地址,类似OSPF中的区域编号AreaID,同一Level1区域内的所有路由器必须具有相同的区域地址,Level2区域内的路由器可以具有不同的区域地址

  • SystemID用来在区域内唯一标识主机或路由器,在设备的实现中,它的长度固定为48bit(6字节),一般情况先,使用设备的RouterID转换为SystemID
  • SEL的作用类似于IP中的“协议标识符”,不同的传输协议对应不同的SEL,在IP上SEL均为00,长度固定为1B(8bit)

NET

NET是一类特殊的NSAP(SEL=00),在路由器上配置ISIS时,只需要考虑NET即可

  • 网络实体名称NET指的是设备本身的网络层的意思,可以看做是一类特殊的NSAP(SEL=00),NET的长度与NSAP相同,最多为20字节,最少为8字节,在路由器上配置ISIS时,只需要考虑NET即可,NSAP不必去关注
  • 在配置ISIS过程中,NET最多只能配置3个,在配置多个NET时,必须保证他们的SystemID都相同
    没有NET地址ISIS无法运行,该地址包含了区域ID和系统ID,而他本质上是一个ISO地址,最后的SEL等同于TCP的端口号,永远等于00
TCP/IP协议栈 IP协议 IP地址 OSPF AreaID+RouterID
OSI系统 CLNP协议 NSAP地址 ISIS NET标识符

ISIS地址结构
最短长度8B:1B的AFI + 6B的SystemID + 1B的SEL
ISIS地址例子
用ISIS做网络设计需要注意:保证L2路由器连续

关于SystemID

  • 一个中间系统(路由器)至少有一个NET,华为设备最多支持3个
  • 同一个Area的中间系统必须有相同的AreaID(Level1必须一样,Level2可以不一样)
  • 每个中间系统在一个Area中必须有一个唯一的SystemID
  • 一个domain中的两个Level2中间系统不能有相同的SystemID
  • NSAP至少为8字节,最多为20个字节
  • 对于传统IP应用程序而言,1字节定义AFI(标识二进制DSP语法的地址域),最少2字节定义实际区域信息(IDI+HighOrder+DSP),6字节定义系统ID和1字节的NSEL,故NSAP地址最少为10字节

ISIS整体拓扑

ISIS整体拓扑
将Level-1路由器部署在非骨干区域,Level-2路由器和Level-1-2(类似ABR,ISIS默认设置)路由器部署在骨干区域。每一个非骨干区域都通过Level-1-2路由器与骨干区域相连

  • 在OSPF中,每个链路只属于一个区域;而在IS-IS中,每个链路可以属于不同的区域OSPF基于接口,即一个设备上的多个接口可以属于不同的Area;ISIS基于设备,即一个设备只能属于一个Level
  • 在IS-IS中,单个区域没有物理的骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域
  • 在IS-IS中,Level-1和Level-2级别的路由器分别采用SPF算法,分别生成最短路径树SPT;在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。

ISIS路由器分类

Level-1路由器

  1. Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,属于不同区域的Level-1路由器不能形成邻居关系
  2. Level-1路由器只负责维护Level-1的LSDB,该LSDB包含本区域的路由信息
  3. 到本区域外的报文转发给最近的Level-1-2路由器
  4. Level-1路由器必须通过Level-1-2路由器才能连接至其他区域

Level-1区域建立的条件:

  1. 要求Area号必须一致
  2. Level-1路由器可以和Level-1、Level-1-2路由器建立Level-1的邻居

Level-2路由器

  1. Level-2路由器负责区域间的路由,可以和同一或者不同区域的Level-2或Level-1-2路由器形成邻居关系
  2. Level-2路由器维护一个Level-2的LSDB,该LSDB包含ISIS区域内的所有路由信息
  3. 所有Level-2级别(即形成Level-2邻居关系)的路由器组成路由域的骨干网,负责在不同区域间通信,路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性

Level-2区域建立的条件:

  1. Area号可以不一致
  2. Level-2路由器可以和Level-2、Level-1-2路由器建立Level-2的邻居

Level-1-2路由器(默认)

  1. 同时属于Level-1和Level-2的路由器
  2. 可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻居关系,也可以和其他区域的Level-2和Level-1-2路由器形成Level-2邻居关系
  3. Level-1路由器必须通过Level-1-2路由器才能连接至其他区域
  4. Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由
    既有Level-1又有Level-2的情况下,Level-1-2必须和Level-1的AreaID保持一致,否则无法建立邻居,导致无法进行通信

Level-1-2路由器之间建立什么样的邻居?
区域号不同:一个,Level-2区域
区域号相同:两个,Level-1区域和Level-2区域

ISIS术语

术语对照表
  • IIH,hello时间10秒,hold时间30秒
  • LSP相当于LSU,那么TLV相当于LSA
  • ISIS只支持P2P和广播网络,PSNP分为两种报文,一种是请求LSP(类似LSR,可用于p2p和广播),一种是确认LSP(类似LSAck,只用于p2p)

ISIS报文类型

ISIS的9种报文:
ISIS的9种报文
其他常见TLV:https://www.cnblogs.com/cyrusxx/p/12615744.html
ISIS报文类型-2

1. Hello PDU(IIH)(hello报文)

用于邻居发现,协商参数并建立邻居关系,后期充当保活报文。ISIS目前只支持点到点和广播两种网络类型。
在广播网络中,ISIS通过MAC地址来标识邻居(OSPF是通过RID来标识的);在P2P中,是通过系统ID来标识邻居的,通过电路ID来标识自己的哪个接口与对端相连。
广播网中的Level-1 IS-IS使用Level-1 LAN IIH,Level-2 IS-IS使用Level-2 LAN IIH;非广播网络中则使用P2P IIH。
它们的报文格式有所不同。P2P IIH中相对于LAN IIH来说,多了一个表示本地链路ID的Local Circuit ID字段,缺少了表示广播网中DIS的优先级的Priority字段以及表示DIS和伪节点System ID的LAN ID字段。
LSDB-DIS

Level-1 LAN IIH

组播MAC:01-80-c2-00-00-14
L1和L2的帧格式

Level-2 LAN IIH

组播MAC:01-80-c2-00-00-15

P2P IIH

简而言之:将多字节的Priority和LAN ID替换成1字节的Local Circuit ID
非广播网络中则使用P2P IIH,但是其没有表示DIS(虚节点)的相关字段
P2P的帧格式

2. LSP PDU(链路状态报文)

用于交换链路状态信息,相当于OSPF的LSU
Level–1 LSP由Level-1路由器传送,Level–2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP
Level-1 LSP和Level-2 LSP具有相同的报文结构
LSP PDU

  • ATT:区域关联位
    当L1区域中的路由设备收到Level-1-2路由设备发送的ATT位被置位的L1 LSP后,它将创建一条指向Level-1-2路由设备的缺省路由。
    虽然ATT位同时在L1 LSP和L2 LSP中进行了定义,但是它只会在L1 LSP中被置位,并且只有L1/2路由设备会设置这个字段。
  • OL:过载标志位
    设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过过载设备的路由时不会被采用,即对设备设置过载位后,其它设备在进行SPF计算时不会使用这台设备做转发,只计算该节点上的直连路由。
  • IS Type:生成LSP的IS-IS类型
    用来指明是Level-1还是Level-2 IS-IS(01表示Level-1,11表示Level-2)

3. SNP PDU(序列号报文)

用于维护LSDB的完整与同步,且为摘要信息

CSNP(全序列号报文)

类似于OSPF的DBD信息,用来同步LSDB,DIS定期泛洪CSNP(10秒)
分为Level-1 CSNP和Level-2 CSNP
CSNP

  • Source ID:发出CSNP报文的设备的System ID
  • Start LSP ID:CSNP报文中第一个LSP的ID值
  • End LSP ID:CSNP报文中最后一个LSP的ID值

PSNP(部分序列号报文)

在广播网络中,类似于OSPF的LSR;在P2P网络中,类似于OSPF的LSR和LSAck。非DIS设备向DIS发送PSNP,用于请求非DIS设备上缺少的LSDB中的详细路由信息
分为Level-1 PSNP和Level-2 PSNP
PSNP

ISIS网络类型

ISIS支持的网络类型

  • P2P,例如PPP和HDLC不选举DIS
  • 广播
    • DIS:指定中间系统,为了在广播网络中实现更高效的数据库同步
    • 伪节点:用来模拟广播网络的一个虚拟节点,并非真实的路由设备,用DIS的System ID和一个字节的Circuit ID(非0值)标识。使用伪节点可以简化网络拓扑,使路由设备产生的LSP长度较小。
      伪节点

DIS

在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS,Level-1和Level-2的DIS是分别选举的
可以为不同级别的DIS选举设置不同的优先级,优先级为0的路由器也参与DIS的选举,只是具有最小可能成为DIS,且DIS选举支持抢占
同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系,但LSDB的同步仍然依靠DIS来保证
DIS用来创建和更新伪节点,并负责生成伪节点的链路状态协议数据单元LSP,用来描述这个网络上有哪些网络设备
IS-IS中DIS发送Hello时间间隔为10/3秒,而其他非DIS路由器发送Hello间隔为10秒,ISIS的LSP的更新时间为900秒,Hold time时间为1200秒,是从大往小减的
ISIS系统中没有DIS也能完成数据库同步

为什么DIS不需要备份的DIS?

  1. DIS支持抢占
  2. DIS发送Hello消息的时间为10/3秒,可以让ISIS快速发现DIS失效,重新选举DIS
  3. ISIS主要用在运营商网络中,而运营商网络一般很少会更换设备,所以影响不大

为什么在ISIS中DIS可以被抢占?

  1. 在ISIS中所有的设备都可以建立邻接关系
  2. ISIS主要用在运营商网络中,而运营商网络一般很少会更换设备,所以影响不大

DIS的选举

  1. 优先级越大越优,默认优先级为64,取值范围(0-127)
  2. MAC地址越大越优

追问

影响ISIS邻居建立的条件

建立邻居关系原则:同一层次(级别)、同一区域(只有L1会做严格检查)、同一网段、同一网络类型

1. 运行级别和区域ID

区域ID只影响Level-1邻居的建立,Level-1只能和同一区域的Level-1或Level-1-2建立Level-1级别的邻居

  1. level1-level2:无法建立
  2. level1-level1:level1
  3. level1-level1/2:level1
  4. level2-level1/2:level2
  5. levle2-level/2:level2
  6. level1/2- level1/2:
    1. 区域号相同level1和level2
    2. 区域号不同则只有Level2关系

2. System-ID

system-id标识一台路由器,具有唯一性,默认是6个字节,如果system-id长度不一致或者直连设备的system-id冲突则无法建立邻居

3. 认证

接口认证是对Level-1和Level-2的Hello报文的认证,区域认证是对Level-1的SNP和LSP的认证,路由域认证是对Level-2的SNP和LSP的认证,对于区域和路由域的认证可以设置为SNP和LSP分别认证。认证方式分为明文认证、MD5认证和keychian认证。
接口认证不一致影响邻居的建立,区域认证和路由域认证不一致可以正常建立邻居,但是无法正常同步LSDB

4. MTU

ISIS中存在隐式的MTU检测机制,通过IIH报文,P2P为1500,广播网为1497,少的那3字节的原因如下:
ISIS通过802.3承载,3字节用于802.2头部(即LLC,包含DSAP、SSAP和Control三部分),标识上层协议。
广播网络中所有的Hello报文都会使用Padding填充,但是P2P只有在建立邻居时的Hello报文才会被填充,其他的Hello报文不会被填充。

5. 接口的网络类型

P2P和广播网络无法建立邻居,因为这两种网络类型建立邻居所需的TLV不同,P2P的3次握手模式使用240号TLV,而广播网络使用6号TLV。但是可以通过将以太网接口模拟成P2P接口,建立P2P链路邻居关系。

6. IP地址不在同一个网段

默认开启源检查,只影响广播网
ISIS邻居关系的形成与IP地址无关,但在IP网络上运行ISIS协议,要检查设备两端的IP地址。如果设备接口配置了辅用IP地址,那么只要双方有某个IP地址(主用IP地址或者辅用IP地址)在同一网段,就能建立邻居,不要求设备两端的主用IP地址相同。
Hello报文不携带掩码,只携带IP,路由器用收到的IP与本地接口的掩码进行与运算,必须处于同一个网段,如192.168.1.1/24和192.168.1.200/25之间建立邻居,结果.1侧显示对端为init状态,.200侧显示无邻居。
当链路两端ISIS接口的地址不在同一网段时,如果配置接口对接收的Hello报文不作IP地址检查,也可以建立邻居关系。对于P2P接口,可以配置接口忽略IP地址检查;对于以太网接口,需要将以太网接口模拟成P2P接口,才可以配置接口忽略IP地址检查。

7. cost-style

度量值类型不同不影响邻居的建立,但是影响路由的计算。
窄度量和宽度量主要有以下3点区别:

  1. 窄度量值最大为63,宽度量值最大为2的24次方
  2. 窄度量不支持TLV的分片,但是宽度量支持
  3. 用来通告路由信息的TLV类型不同,窄度量的TLV为2号、128号和130号,而宽度量为22号和135号

8. 其他

  1. max area数量不一致 (默认是3个)
  2. 多拓扑,即一边只有IPv4,另外一边有IPv4和IPv6
  3. p2p中3次握手和2次握手无法建立邻居,因为所使用的TLV不同,2次握手使用17号TLV,3次握手使用240号TLV

DR和DIS的区别

  1. 选举时机的比较。DR是在建立邻居关系之后选举,而DIS是在邻接关系建立后,需要再等待两个Hello报文间隔
  2. 选举时优选级的比较。DIS的优先级为0也可以参与选举,但DR优先级为0不参与选举;DR先比优先级再比RouteID,而DIS先比优先级再比MAC地址
  3. 选举的过程需要一定的时间。OSPF选举DR/BDR需要waiting time达40秒,过程也较为复杂,而ISIS选举DIS等待两个Hello报文间隔就可以,简单快捷
  4. 选举结果。ISIS只有一个DIS,但是OSPF除了有DR,还有一个BDR用做备份
  5. 选举结束后。后期有新的Router加入到链路进来,如果优先级比DIS高是可抢占的,但是DR是不可抢占的
  6. 选举完成后。DIS的发送Hello报文时间是3秒,DR是10秒或者30秒。ISIS网络链路内所有的路由器之间都建立的是邻接关系。OSPF中DRothers只与DR/BDR形成邻接关系, DRothers之间只有2-way的关系
  7. 作用不同。DIS周期性发送CSNP,保证网络中的LSDB同步,而DR的存在主要是为了减少泛洪
    ISIS的DIS与OSPF的DR区别

ISIS和OSPF的区域的区别

ISIS中Level-2可以学习到Level-1中的路由,但是Level-1无法学习到Level-2的路由。Level-1类似ospf的nssa区域,而Level-2类似ospf的骨干区域,即isis的骨干区域是由连续的level-2的路由器组成的

  1. ospf区域类型一致才能建立邻居,isis只有在level-1时才要求一致
  2. ospf区域类型更加丰富,isis只有2种
  3. 表示形式不一样,ospf使用点分十进制,isis表示方法比较复杂
  4. 在ospf中,一条链路只能属于一个区域,而在isis中,一条链路可以属于不同的区域ospf是基于接口的,isis是基于设备的

OSPF和ISIS的异同

相同点

  1. 维护一个链路状态数据库
  2. 都利用Hello包形成和维护邻居
  3. 使用区域概念来构成层次化的拓扑接口
  4. 都提供在区域之间进行地址汇总的能力
  5. 无类路由协议
  6. 都选举一个指定路由器来描述广播性网络
  7. 认证能力

不同点

差异性 ISIS OSPF
网络方式 少,2种 多,5种
开销方式 复杂 简便,参考带宽100M
区域类型 少,2种 多
路由报文类型 简单 多样
路由收敛速度 很快 快
扩展性 强 一般
路由负载能力 超强 强

1. 基本点比较

  1. ospf只支持IP,而isis支持IP和CLNP环境
  2. ospf通过IP承载,协议号89;isis通过链路层承载,安全性相对高些
  3. ospf基于接口划分区域,区域类型多,区域0为骨干区域;而isis基于设备划分区域
  4. ospf支持的网络类型有P2P、P2MP、NBMA、广播、虚链路,而isis仅支持广播和P2P

2. 邻接关系比较

  1. ospf邻接关系只有一种,但是isis邻接关系分level-1和level-2邻接关系
  2. ospf的DR优先级为0则不参与选举、不支持抢占、有BDR,而isis的DIS优先级为0参与选举DIS、支持抢占、没有备份DIS
  3. ospf中只有DR other之间是邻居关系,其余均是邻接关系,但是isis网络中所有设备均是邻接关系

3. 链路状态数据库同步过程比较

  1. ospf的LSA种类多,数据库结构复杂,因此定位故障困难;而isis的LSP只有路由器LSP和伪节点LSP,数据库结构简单,定位故障容易
  2. ospf的LSA的生存周期从0递增(maxage=3600,refresh周期为1800,不可调),而isis是从最大值递减(maxage=1200,refreshment 周期为900,可调)

4. 路由计算过程比较

  1. ospf将前缀作为SPF的节点,而isis将前缀作为叶子,叶子发生变化时可以用PRC来更新叶子而不需要进行SPF计算
  2. ospf的接口开销根据接口带宽变化,而isis的接口开销值在缺省时相同,所有接口默认为10
  3. ospf在区域内任何路由变化(LSA1/2中路由条目)均会触发iSPF计算,仅3类、5类、7类LSA的变化才使用PRC,而isis任何路由变化都是PRC

5. 性能及扩展能力比较

ospf支持按需链路而isis不支持,但是isis采用TLV结构,扩展性更好

ISIS IPv6

1. IPv6增加了哪两个TLV

  1. 232号TLV(IPv6 Interface Address):它相当于IPv4中的132号TLV(IP Interface Address),只不过把原来的32比特的IPv4地址改为128比特的IPv6地址
  2. 236号TLV(IPv6 Reachability):通过定义路由信息前缀、度量值等信息来说明网络的可达性

NLPID是标识网络层协议报文的一个1字节字段,IPv6的NLPID值为0x8E(ipv4是0xCC)。如果isis支持IPv6,那么向外发布IPv6路由时必须携带NLPID值

2. isis多拓扑指是什么

isis多拓扑是指在一个isis自治域内运行多个独立的IP拓扑。例如IPv4拓扑和IPv6拓扑,而不是将它们视为一个集成的单一拓扑。这有利于isis在路由计算中根据实际组网情况来单独考虑IPv4和IPv6网络。根据链路所支持的IP协议类型,不同拓扑运行各自的SPF计算,实现网络的相互屏蔽。

ISIS在帧中继环境下使用什么网络类型

帧中继环境
网络类型为P2P,且只能采用2次握手的方式建立邻居,接收LSP,但是并不计算路由(即没有路由条目),可以在HUB上采用子接口的方式解决。
如果采用3次握手,假设R1和R2先建立邻居(有路由条目),那么R3无法与R1建立邻居,因为R1给R3发送的IIH中的SystemID和电路ID并不是R3的,而是R2的。