IS-IS报文类型、邻接建立

293 阅读12分钟

IS-IS报文格式

  • 是直接封装在数据链路层的帧结构中
  • PDU(Protocil Data Unit,协议数据单元)可以分为两个部分,报文头(IS-IS Header)和变长字段部分(Variable Length Fields)
  • 其中Header又可以分为通用头部(PDU Common Header)和专用头部(PDU Specific Header)。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别

image.png

通用报头

image.png

  • Intradomain Routing Protocol Discriminator:域内路由选择协议鉴别符,固定为0x83
  • Length Indicator:IS-IS头部的长度(包括通用头部和专用头部),以Byte为单位
  • Version/Protocal ID Extension:版本/协议标识扩展,固定为0x01
  • System ID Length:NSAP地址或者NET中System ID区域的长度。值为0时,表示System ID区域的长度为6Byte
  • R(Reserved):保留,固定为0
  • Version:固定为0x01
  • Max.Areas:支持的最大区域个数。设置为1-254的整数,表示该IS-IS进程实际所允许的最大区域地址数;设置为0,表示该IS-IS进程最大只支持3个区域地址数
报文类型概述

IIH(IS-IS Hello)、LSP(Link State PDU,链路状态报文)、CSNP(Complete Sequence Number PDU,全序列号报文)、PSNP(Partial Sequence Number PDU,部分序列号报文)

  • IIH:用于建立和维持邻接关系、广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH
  • LSP:用于交换链路状态信息。LSP分为两种,Level-1 LSP、Level-2 LSP
  • SNP:通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。SNP包括CSNP和PSNP,进一步又可分为Level-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP
常见的TLV
  • 类型(TYPE)、长度(LENGTH)、值(VALUE)。实际上是一个数据结构,这个结构包含了这三个字段
  • 使用TLV结构构件报文的好处是灵活性和扩展性好。采用TLV使得报文的整体结构固定,增加新特性只需要增加新TLV即可,不需要改变整个报文的整体结构

image.png

IIH

IIH报文用于建立和维持邻接关系,广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH

image.png

  • Reserved/Circuit Type:表示路由器的类型(01表示L1、10表示L2、11表示L1/L2)
  • Source ID:发出Hello报文的路由器的System ID
  • Holding Time:保持时间。在此时间内如果没有收到邻接发来的Hello报文,则中止已建立的邻接关系
  • Priority:选举DIS的优先级,取值范围0-127.数值越大,优先级越高。该字段只在广播网中的Hello消息(LAN IIH消息)携带;点到点网络的Hello消息(P2P IIH消息)没有此字段,也没有此字段之前的R保留位
  • LAN ID:包括DIS的System ID和伪节点ID。该字段只在广播网中的Hello消息(LAN IIH消息)携带;点到点网络的Hello消息(P2P IIH消息)没有此字段
  • Local Circuit ID:本地链路ID。该字段只在点到点网络的Hello消息(P2P IIH消息)携带;广播网中的Hello消息(LAN IIH消息)没有此字段
LSP

LSP用于交换链路状态信息。分为:Level-1 LSP和Level-2 LSP。Level-1 LSP由Level-1路由器传送,Level-2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP。两类LSP的报文格式相同

image.png

  • Remaining Lifetime:LSP的生存时间,以秒为单位
  • LSP ID:由三部分组成,System ID、伪节点ID和LSP分片后的编号
  • Sequence Number:LSP的序列号。在路由器启动时所发送的第一个LSP报文中的序列号为1,以后当需要生成新的LSP时,新LSP的序列号在前一个LSP序列号的基础上加1。更高的序列号意味着更新的LSP
  • Checksum:LSP的校验和
  • ATT(Attachment):由Level-1-2路由器产生,用来指明始发路由器是否与其它区域相连。虽然此标志位也存在于Level-1和Level-2的LSP中,但实际上此字段只和Level-1-2路由器始发的L1 LSP有关。
  • OL(LSDB Overload,1bit):过载标志位。设置了此字段的LSP虽然还会在网络中扩散,但是在计算通过超载路由器的路由时不会被采用。即对路由器设置过载位后,其他路由器在进行SPF计算时,不会考虑这台路由器。当路由器内存不足时,系统自动在发送的LSP报文中设置过载标志位
  • IS Type(2bit):生成LSP的路由器的类型。用来指明是Level-1还是Level-2路由器(01表示Level-1,11表示Level-2)
CSNP

CSNP包含该设备LSDB中所有的LSP摘要,路由器通过交互CSNP来判断是否需要同步LSDB

  • 在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)
  • 在点对点网络上,CSNP只在第一次建立邻接关系时发送

image.png

  • Source ID:发出CSNP报文的路由器的System ID
  • Start LSP:CSNP报文中第一个LSP的ID值
  • End LSP ID:CSNP报文中最后一个LSP的ID值
PSNP

PSNP只包含部分LSP的摘要信息

  • 当发现LSDB不同步时,PSNP来请求邻接发送新的LSP
  • 在点对点网络中,当收到LSP时,使用PSNP对收到的LSP进行确认

image.png

  • Source ID:发出PSNP报文的路由器的System ID

建立邻接关系原则

  • 只有同一Level的相邻路由器才有可能成为邻接
  • 对于Level-1路由器来说,Area ID必须一致
  • 链路两端IS-IS接口的网络类型必须一致
  • 链路两端IS-IS接口的地址必须处于同一网段(默认情况下)

由于IS-IS是直接运行在数据链路层上的协议,并且最早设计是给CLNP使用的,IS-IS邻接关系的形成与IP地址无关,但在实际的部署中,在IP网络上运行IS-IS时,需要检查对方的IP地址的。如果接口配置了从IP,那么只要双方有某个IP(主IP或者从IP)在同一网段,就能建立邻接,不一定要主IP相同

广播网络中的邻接关系建立过程(三次握手)

image.png

建立邻接关系的过程如下:

  1. 在Down状态下,R1组播(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)发送Level-1 LAN IIH,此报文中邻接列表(Neighbour)为空
  2. R2收到此报文后,将邻接状态标识为Initial。然后,R2再向R1回复Level-1 LAN IIH,此报文中标识R1为R2的邻接
  3. R1收到此报文后,将自己与R2的邻接状态标识为UP。然后R1再向R2发送一个标识R2为R1邻接的Level-1 LAN IIH
  4. R2收到此报文后,将自己与R1的邻接状态标识为UP。这样,两个路由器成功建立了邻接关系
  5. 广播网络中需要选举DIS,在邻接关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举
DIS与伪节点

image.png

  • 在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS(Designated Intermediate System)
  • DIS用来创建和更新伪节点,并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和Circuit ID(非0值)标识

DIS的选举

  • Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级
  • 选举规则:
    • DIS优先级数值最大的被选为DIS
    • 如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会成为DIS
  • DIS发送Hello PDU的时间间隔是普通路由器的1/3,这样可以确保DIS出现故障时能够被更快速的发现
  • IS-IS中DIS与OSPF协议中DR的区别:
    • 在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举
    • 在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR
    • 在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系
点到点网络中的邻接关系建立过程(两次握手)

image.png

  • 点到点网络中,邻接关系的建立使用两次握手方式:只要路由器收到对端发来的Hello报文,就单方面宣布邻接为UP状态,建立邻接关系
  • 两次握手机制存在明显缺陷,华为设备在点到点网络中使用IS-IS时,默认使用三次握手建立邻接关系。此方式通过三次发送P2P IIH最终建立起邻接关系

同步LSP

广播网络中LSP的同步过程

image.png

广播网络中新加入路由器与DIS同步LSDB数据库的过程:

  1. 新加入的路由器R3首先发送IIH报文,与该广播域中的路由器建立邻接关系,建立邻接关系后,R3等待LSP刷新定时器超时,然后将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻接都将接收到该LSP
  2. 该网段中的DIS会把收到R3的LSP加入到LSDB中,并等待CSNP报文定时器超时并发送CNSP报文
  3. R3收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP
  4. DIS收到该PSNP报文请求后向R3发送对应的LSP进行LSDB的同步
点到点网络中LSP的同步过程

image.png

点到点网络上LSDB数据库的同步过程:

  1. R1先与R2建立邻接关系
  2. 建立邻接关系之后,R1与R2会先发送CNSP给对端设备。如果对端的LSDB与CNSP没有同步,则发送PSNP请求索取相应的LSP
  3. 假设R2向R1索取相应的LSP
  • R1发送R2请求的LSP的同时启动LSP重传定时器,并等待R2发送的PSNP作为收到LSP的确认
  • 如果在接口LSP重传定时器超时后,R1没有收到R2发送的PSNP报文作为应答
  • 则R1重新发送LSP
  • R2收到LSP后,发送PSNP进行确认
LSP的处理机制

image.png

IS-IS通过交互LSP实现链路状态数据库同步,路由器收到LSP后,按照以下原则处理:

  • 若收到的LSP比本地LSP的更优,或者本地没有收到的LSP
    • 在广播网络中,将其加入数据库,并组播发送新的LSP
    • 在点到点网络中,将其加入数据库,并发送PSNP报文来确认收到此LSP,之后将这新的LSP发送给除了发送该LSP的邻居以外的邻居
  • 若收到的LSP和本地LSP无法比较出优劣,则不处理该LSP

路由器的路由计算

Level-1路由器的路由计算

image.png

  • R1是Level-1路由器,只维护Level-1 LSDB,该LSDB中包含同属一个区域的R2和R3以及R1自己产生的Level-1 LSP
  • R1根据LSDB中的Level-1 LSP计算出Area 49.0001内的拓扑,以及到达区域内各个网段的路由信息
  • R2和R3作为Area 49.0001内的Level-1-2路由器,会在它们向该区域下发的Level-1 LSP中设置ATT标志位,用于向区域内的Level-1路由器宣布可以通过自己到达其他区域。R1作为Level-1路由器,会根据该ATT标志位,计算出指向R2或R3的默认路由
Level-1路由器的次优路径的问题

缺省时,R1只能通过指向R2或R3的默认路由到达区域外部,但是R1距离R2和R3路由器的Cost值相等,那么当R1发送数据包到192.168.20.0/24时,就有可能选择路径2,导致出现次优路径

image.png

解决方案——路由渗透:

  • 缺省情况下,Level-1-2路由器不会将到达其他区域的路由通告本Level-1区域中
  • 通过路由渗透,可以将区域间路由通过Level-1-2路由器传送到Level-1区域,此时Level-1路由器可以学习到其他区域的详细路由,从而计算出最优路径
Level-2路由器的路由计算

image.png

  • R2和R3都维护Level-1 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0001的路由
  • R2和R3都维护Level-2 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0002的路由
  • R2和R3将到达Area 49.0001的路由以Level-2 LSP的形式发送到Area 49.0002