ISIS特性介绍

IS-IS基本概念

ISIS协议概述

1、与ospf一样,属于IGP路由,是一种链路状态型路由协议,使用最短路径优先算法(SPF)

2、进行路径计算,能够同时应用在TCP/IP与OSI环境中,因此被运营商广泛应用。

OSI与TCP/IP参考模型

 ISIS属于2.5层协议

  • CLNP(无连接网络协议):OSI的网络协议,类似TCP/IP的IP协议
  • CLNS(无连接网络服务):类似IP的尽力而为的服务,OSI通过CLNP来提供CLNS;
  • NPDU(网络层协议数据单元):OSI的网络层协议报文,类似IP报文
  • NSAP(网络服务接入点):OSI中的网络层地址,类似IP地址

ISIS区域

为了支持大规模的路由网络,IS-IS在路由域内采用两级的分层结构,即一个大的Domain(域)可以被分为多个Areas(区域)。如下图所示为一个运行IS-IS协议的网络,整个骨干区域(backbone)不仅包括Area1中的所有L2路由器,还包括其它区域的L1/2路由器。结合图示,介绍下IS-IS网络中三种不同级别的路由器:

 

  • Level-1路由器(同一区域)

Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系。一个Level-1路由器只负责维护本区域内的LSDB(Link State Database,链路状态数据库),对于目的地不在本区域内的路由,Level-1路由器会将该路由的目的地标识为最近的Level-1-2路由器。Level-1的邻接关系的建立,区域ID必须一致。

  • Level-2路由器(不同区域)

Level-2路由器负责区域间的路由,可以与Level-2或其它区域的Level-1-2路由器形成邻居关系维护一个Level-2的LSDB,该LSDB包含区域间的路由信息。

所有Level-2级别的路由器组成路由域的骨干网,负责在不同区域间通信,路由域中Level-2级别的路由器必须是连续的,以保证骨干网的连续性。只有Level-2级别的路由器才能直接与区域外的路由器交换数据报文或路由信息。

  • Level-1-2路由器(路由器默认的类型,能同时创建Level-1和level-2的LSDD)跨区域

同时属于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路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由。

一般来说,将Level-1路由器部署在区域内,Level-2路由器部署在区域间,Level-1-2路由器部署在Level-1和Level-2路由器的中间。一般只有L1-2 L2 L1-2这样搭建才能通。

L1 L1/2 L2
负责区域内路由 负责区域内和区域间路由 负责区域间路由
仅与相同区域的L1、L1/2建立邻居 与相同或不同区域内或间L1、L1/2、L2建立邻居 与相同或不同区域内或间L1/2、L2建立邻居

接口的级别

对于Level-1-2路由器,可能需要与某个对端只建立Level-1的邻接关系,与另一个对端只建立Level-2的邻接关系。可以通过设置相应接口的级别来限制接口上所能建立的邻接关系,如Level-1的接口只能建立Level-1的邻接关系,Level-2的接口只能建立Level-2的邻接关系。

ISIS的网络类型

ISIS支持两种类型的网络:广播网和P2P网。

  • 广播链路:如Ethernet、Token-Ring等
  • 点到点链路:如P2P等。

IS-IS基本协议

相关概念

DIS和伪节点

DIS(Designated Intermediate System,指定中间系统)是在IS-IS通信过程中,被选举出来作为中介路由器的一个中间系统。伪节点(Pseudonodes)是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和一个字节的Circuit ID(非0值)标识。

DIS用来创建和更新伪节点,并负责生成伪节点的LSP报文。网络中的路由器都只需要通告单条链路到伪节点,通过伪节点得到整个网络的路由信息,而不需要和所有的路由器进行报文交互,简化了网络拓扑,使路由器产生的LSP长度较小。另外,当网络发生变化时,需要产生的LSP数量也会较少,减少SPF的资源消耗。

SPF算法

SPF(Short Path First,最短路径优先算法)也叫Dijkstra(荷兰数学家)算法,在链路状态路由协议中用来计算到网络的最短路径。根据该算法,本地路由器以本身为根,依据网络拓扑生成一棵最短路径树(SPT),计算出到网络中所有目的地的最短路径。在IS-IS中,SPF算法分别独立的在Level-1和Level-2数据库中运行。

IS中间系统节点,即路由器。

Area区域:由一组连续的路由器、主机和连接它们的网络链路组成的实体。类似于OSPF的Area。

Domain区域:由一组相互连接的Area组成。相当于传统的自治系统。

OSPF和ISIS比较

对比项 OSPF IS-IS
区域划分 接口 路由器
骨干区域 Area0 L2和L1/L2组成
路由算法 SPF(同一个区域内) SPF(骨干区域和非骨干区域都运行SPF算法),确保无环路

ISIS地址结构

OSI地址使用NSAP(NetworkService Access Point)形式,NSAP的地址结构如图所示,它由IDP(InitialDomain Part)和DSP(DomainSpecific Part)组成。IDP和DSP的长度都是可变的,NSAP总长最多是20个字节,最少8个字节。

  • IDP 由AFI (Authorityand Format Identifier)与IDI(InitialDomain Identifier)两部分组成。AFI表示地址分配机构和地址格式, IDI 用来标识域。
  • DSP 由 High Order DSP、System ID 和 SEL三个部分组成。High Order DSP用来分割区域, System ID (6bytes)用来区分主机,SEL(NSAP-Selector ,1 byte)用来指示服务类型。

Area address:

标识路由域,也能够标识路由域中的区域,同一Level-1区域内的所有路由器必须具有相同的区域地址, Level-2区域内的路由器可以具有不同的区域地址。

System ID:

用来在区域内唯一标识主机或路由器,它的长度固定为48bit(6字节),一般使用RouterID与System ID进行对应。

例如:将loopback0的 IP 地址168.10.1.1(Router ID) 的每个十进制数都扩展为3 位,不足 3位的在前面补 0,得到168.010.001.001;将扩展后的地址分为 3 部分,每部分由4 位数字组成,得到 1680.1000.1001,就是System ID。

注意:System ID 的指定可以有不同的方法,但要保证能够唯一标识主机或路由器。

SEL:

SEL的作用类似 IP中的“协议标识符”,不同的传输协议对应不同的SEL。在 IP上 SEL 均为00。

NET(NetworkEntity Title):

网络实体名称 指的是设备本身的网络层信息,可以看作是一类特殊的NSAP(SEL=00)。在路由器上配置 IS-IS时,只需要考虑 NET即可,NSAP 可不必去关注。

ISIS报文类型

ISIS报文结构分为通用包头、专用包头、可变长包头。

ISIS报文有以下几种类型:HELLO PDU(Protocol Data Unit)、LSP和SNP。

Hello PDU

Hello报文用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)。其中,广播网中的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字段。

 LSP

链路状态报文LSP(Link State PDUs)用于交换链路状态信息。LSP分为两种:Level-1 LSP和Level-2 LSP。Level-1 LSP由Level-1 IS-IS传送,Level-2 LSP由Level-2 IS-IS传送,Level-1-2 IS-IS则可传送以上两种LSP。
LSP报文中主要字段的解释如下:

  • ATT字段:当Level-1-2 IS-IS在Level-1区域内传送Level-1 LSP时,如果Level-1 LSP中设置了ATT位,则表示该区域中的Level-1 IS-IS可以通过此Level-1-2 IS-IS通往外部区域。

  • OL(LSDB Overload)字段:过载标志位。

设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过过载路由器的路由时不会被采用。即对路由器设置过载位后,其它路由器在进行SPF计算时不会使用这台路由器做转发,只计算该节点上的直连路由。

  • IS Type字段:用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS(01表示Level-1,11表示Level-2)。

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包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒);在点到点链路上,CSNP只在第一次建立邻接关系时发送。
  • PSNP只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行确认,当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP

类型 全称 备注
CSNP Complete Sequence Numbers PDU 通告LSDB中所有摘要信息
PSNP Partial Sequence Number PDU 请求和确认链路状态信息

IS-IS报文中的变长字段部分是多个TLV(Type-Length-Value)三元组。TLV也称为CLV(Code-Length-Value)。

常见的TLV(类型-长度-值):

TLV TYPE 名称 所应用的PDU类型
1 Area Addresses IIH、LSP
2 IS Neighbors(LSP) LSP
4 Partition Designated Level2 IS L2 LSP
6 IS Neighbors(MAC Address) LAN IIH
7 IS Neighbors(SNPA Address) LAN IIH
8 Padding IIH
9 LSP Entries SNP
10 Authentication Information IIH、LSP、SNP
128 IP Internal Reachability Information LSP
129 Protocols Supported IIH、LSP
130 IP External Reachability Information L2 LSP

131

Inter-Domain Routing Protocol Information L2 LSP
132 IP Interface Address IIH、LSP

ISIS通用报文格式

IS-IS报文是直接封装在数据链路层的帧结构中的。PDU可以分为两个部分,报文头和变长字段部分。其中头部又可分为通用头部和专用头部。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别。

IS-IS的PDU有4种类型:Hello报文,LSP,CSNP,PSNP。

类型 全称 备注
IIH ISIS Hello PDU 建立和维护邻居关系
LSP Link State PDU 传输链路状态信息
SNP Sequence Numbers PDU 描述数据库中的LSP
PDU类型对应关系表

类型值

PDU类型

简称

15

Level-1 LAN IS-IS Hello PDU

L1 LAN IIH

16

Level-2 LAN IS-IS Hello PDU

L2 LAN IIH

17

Point-to-Point IS-IS Hello PDU

P2P IIH

18

Level-1 Link State PDU

L1 LSP

20

Level-2 Link State PDU

L2 LSP

24

Level-1 Complete Sequence Numbers PDU

L1 CSNP

25

Level-2 Complete Sequence Numbers PDU

L2 CSNP

26

Level-1 Partial Sequence Numbers PDU

L1 PSNP

27

Level-2 Partial Sequence Numbers PDU

L2 PSNP

  • Intradomain Routing Protocol Discriminator:1字节,ISIS协议类型,域内路由选择协议鉴别符,设置为0x83,0x83表示集成ISIS。
  • Length Indicator:1字节,ISIS协议类型。PDU头部的长度(包括通用头部和专用头部),以字节为单位。可以理解为去除TLV部分后的ISIS报文大小。
  • Version/Protocol ID Extension:1字节,版本/协议标识扩展,设置为1(0x01)。
  • ID Length:1字节,SystemID区域的长度,NSAP地址或NET中System ID区域的长度。值为0时,表示System ID区域的长度为6字节。值为255时,表示System ID区域为空(即长度为0)。
  • R(Reserved):保留,设置为0。
  • PDU Type:5bits,PDU的类型。对于集成ISIS,IS-IS PDU共有9种类型,详细信息请参考下表。
  • Version:1字节,设置为1(0x01)。
  • Maximum Area Address:1字节,支持的最大区域个数。设置为1~254的整数,表示该IS-IS进程实际所允许的最大区域地址数;设置为0,表示该IS-IS进程最大只支持3个区域地址数

抓包示例

IS-IS Hello报文

Hello报文用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)。其中,ISIS的Hello报文有三种:Level-1 IIH、Level-2 IIH和P2P IIH。

发送哪种报文是由ISIS中间系统决定的(IS决定,也就是路由器自己),通过在ISIS Header中的PDU Type进行标识。

广播网中的Level-1路由器使用Level-1
LAN IIH;广播网中的Level-2路由器使用Level-2 LAN IIH;非广播网络中则使用P2P IIH。它们的报文格式有所不同。

IIH描述了形成的是哪种邻居关系,邻居关系实际由ISIS Header中的PDU Type和ISIS Hello的Circuit字段共同决定。

Hello报文格式

 

主要字段的解释如下:

  • Reserved/Circuit Type:8bit,高位的6比特保留,值为0。低位的2比特表示路由器的类型(01表示L1,10表示L2,11表示L1/L2)。
  • Source ID:6字节,发出Hello报文的路由器的System ID。
  • Holding Time:2字节,维持ISIS邻居的时间,也叫保持时间。在此时间内如果没有收到邻居发来的Hello报文,则中止已建立的邻居关系。相当于OSPF中的Dead Interval。注意与OSPF不同,可以不一致。

默认Holding timer=hello*3

  • PDU Length:2字节,描述整个ISIS的报文的总长度,单位是字节。与公共的Header的Length Indicator做比较可以定剩余TLV的长度。
  • Local Circuit ID:1字节,表示本地链路ID和TLV
  • Area address: T=1,L=2。描述所在区域。ISIS允许有3个区域。每有1个区域,则Value增加2字节。(Length数值也相应增加2)
  • IP Interface address:T=132,L=4。描述自己运行ISIS的接口协议。
  • Protocol Supported:T=129,L=1。描述ISIS自己支持的协议,IP取值0xcc,IPv6取值为0x8e。如果都支持,则L=2,Value相应增加。
  • Restart signaling:T=211,L=3。
  • Priority:7bits,选举DIS的优先级,取值范围为0~127。数值越大,优先级越高。
  • LAN ID:包括DIS的System ID和一字节的伪节点ID。
  • Point-to-point Adjacency state:T=240,L=5。描述邻接状态和本地电路ID。

ISIS进程视图下决定路由器发送哪种IIH报文:Level-1设置ISIS Header的PDU Type=15,Level-2设置ISIS Header的PDU Type=16,对于路由器存在PPP链路则在该链路上设置ISIS Header的PDU Type=17

ISIS路由器默认的为level-1-2,因此在广播网上可以发送两种IIH。

从图中可以看出,P2P IIH中的多数字段与LAN IIH相同。不同的是没有Priority和LAN ID字段,而多了一个Local Circuit ID字段,表示本地链路ID。 

IS-IS LSP报文格式

主要字段的解释如下:

  • PDU Length:PDU的总长度,以字节为单位。

  • Remaining Lifetime:LSP的生存时间,以秒为单位。
  • LSP ID:由三部分组成,System ID、伪节点ID(一字节)和LSP分片后的编号(一字节)。
  • Sequency Number:LSP的序列号。
  • Checksum:LSP的校验和。
  • P(Partition Repair):仅与L2 LSP有关,表示路由器是否支持自动修复区域分割。
  • ATT(Attachment):由Level-1-2路由器产生,用来指明始发路由器是否与其它区域相连。虽然此标志位也存在于Level-1和Level-2的LSP中,但实际上此字段只和Level-1-2路由器始发的L1 LSP有关。此字段有4bit,用来表明相连的区域所使用的度量方式。

从右至左这4位依次表示如下所示:

    • 第4位:缺省度量;
    • 第5位:时延度量;
    • 第6位:代价度量;
    • 第7位:差错度量。
  • OL(LSDB Overload):过载标志位。设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过超载路由器的路由时不会被采用。即,对路由器设置过载位后,其它路由器在进行SPF计算时不会考虑这台路由器。当路由器内存不足时,系统自动在发送的LSP报文中设置过载标志位。

  • IS Type:生成LSP的路由器的类型。用来指明是Level-1还是Level-2路由器(01表示Level-1,11表示Level-2)。

ISIS的实现过程

IS-IS网络中所有路由器之间实现通信,主要通过以下几个步骤:

  • 邻居关系建立
  • LSDB同步
  • 路由计算

邻居关系建立

两台运行ISIS的路由器在交互协议报文实现路由功能之前必须要建立邻居关系,在不同类型的网络上,IS-IS的邻居建立方式也不同。ISIS通过IIH报文建立邻居。

邻居关系的建立主要是通过HELLO包交互并协商各种参数,包括电路类型(level-1/2),hold time,网络类型,支持协议,区域号,系统ID,PDU长度,接口IP等。

ISIS按照如下原则建立邻居关系

  1. 只有同一层次的相邻路由器才有可能成为邻居
  2. 对于Level-1的路由器来说,区域号必须一致
  3. 链路两端的ISIS接口的网络类型必须一致
  4. 相同的mtu值
  5. 只有同一网段的相邻路由器才有可能成为邻居
  6. 相同认证
  7. 在P2P网络中,system-id长度要一致,最大区域地址数要相同
  • 广播链路邻居关系的建立

RouterA、RouterB、RouterC和RouterD都是Level-2路由器。RouterA新加入到此广播网络中。

IS-IS网络中两台路由器建立邻居关系的过程(类似于三次握手)可以概括为:
1、DeviceA发送LAN Hello报文,DeviceB收到此报文后,检测到neighbor字段不包含本地MAC地址,则将自己和DeviceA的邻居状态标识为Initial;
2、DeviceB回复LAN Hello报文给DeviceA,DeviceA收到该报文,检测到neighbor字段中包含了本地的MAC地址,于是将DeviceB邻居状态标识为Up;
3、DeviceA再次发送LAN Hello报文给DeviceB,DeviceB收到这个neighbor字段包含本地MAC地址的Hello报文后,将DeviceA邻居状态标识为Up。此时,邻居正式建立。

选举DIS

在广播网中,任意两台路由器之间都要传递信息。如果网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系。这使得任何一台路由器的状态变化都会导致多次传递,浪费了带宽资源。为解决这一问题,IS-IS协议定义了DIS,所有路由器都只将信息发送给DIS,由DIS将网络链路状态广播出去。使用DIS和伪节点可以简化网络拓扑,使路由器产生的LSP报文长度较小。另外,当网络发生变化时,需要产生的LSP数量也会较少,减少SPF的资源消耗。

选举过程

DIS选举发生在邻居关系建立后,Level-1和Level-2区域的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。IS-IS协议选举DIS的过程是每一台路由器接口都被指定一个L1类型的优先级和L2类型的优先级,路由器通过其每一个接口发送Hello数据包,并在Hello数据包中通告它的优先级。DIS优先级数值最大的被选为DIS。如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会被选中。不同级别的DIS可以是同一台路由器,也可以是不同的路由器。

在选举DIS过程中,IS-IS协议与OSPF协议的不同点是:

  • 优先级为0的路由器也参与DIS的选举;
  • 当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,此更改会引起一组新的LSP泛洪。

P2P链路邻居关系的建立

 

 

 

方式 建立邻居形式 优缺点 可靠性 
2-way方式 只要设备收到IS-IS Hello报文,就会单方向建立起邻居关系

缺点:

  • 当链路状态反复波动引起CSNP报文丢失,导致LSDB在一个完整的LSP报文更新周期内不能达到同步。
  • 路由器间存在两条及以上的链路时,如果某条链路上到达对端的单向状态为Down,而另一条链路同方向的状态为Up,路由器之间还是能建立起邻接关系。导致没有检测到故障的路由器在转发报文时仍然试图通过状态为Down的链路导致报文丢失。

 

低 
3-way方式 通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系  优点:保证在双方状态都为Up时建立邻居,实现报文安全传输。  高

P2P三次握手和广播网络三次握手的区别在于,P2P三次握手在交互的报文中携带了邻接状态,而广播环境中则是通过机制完成。

LSDB同步

IS-IS属于链路状态协议,IS-IS设备是直接从其他使用链路状态协议的路由器获得第一手的信息。每台路由器产生关于本身、直连网络及这些链路状态的信息,这些信息通过邻接路由器传向其他路由器,每台路由器都保存一份信息,但决不改动信息。最终每台路由器都有了一个相同的有关互联网络的信息,即完成LSDB的同步。实现LSDB同步的这一过程就称为LSP泛洪。LSP报文的“泛洪”指当一个路由器向相邻路由器报告自己的LSP报文后,相邻路由器再将同样的LSP报文传送到除发送该报文的路由器外的其它邻居,并这样逐级将LSP报文传送到整个层次内的一种方式。通过这种“泛洪”,整个层次内的每一个路由器就都可以拥有相同的LSP信息,并保持LSDB的同步。

IS-IS路由域内的所有路由器都会产生LSP报文,以下事件会触发生成一个新的LSP报文:

1、邻居Up或Down

2、IS-IS相关接口Up或Down

3、引入的IP路由发生变化

4、区域间的IP路由发生变化

5、接口被赋了新的metric值

6、周期性更新

不同路由器收到新的LSP报文的处理过程为:

1、广播链路的LSDB更新过程

广播网LSDB同步过程:广播网的LSDB同步主要通过DIS更新LSDB实现,其过程如下图所示。

 

1、DIS接收到LSP报文,在数据库中搜索对应的记录。若没有该LSP,则将其加入数据库,并广播新数据库内容。

2、若收到的LSP序列号大于本地LSP的序列号,就替换为新报文,并广播新数据库内容。(比较LSP序列号,选择LSP序列号大的)

3、若收到的LSP序列号小于本地LSP的序列号,就向入端接口发送本地LSP报文。

4、若收到的LSP和本地LSP的序列号相等,则比较Remaining Lifetime。若收到的LSP报文的Remaining Lifetime为0,则将本地的报文替换为新报文,并广播新数据库内容;若收到的LSP报文的Remaining Lifetime不为0而本地LSP报文的Remaining Lifetime为0,就向入端接口发送本地LSP报文。(比较Remaining Lifetime,选择比较Remaining Lifetime为0的)

5、若收到的LSP和本地LSP的序列号相等且Remaining Lifetime都不为0,则比较Checksum。若收到的LSP报文的Checksum大于本地LSP的Checksum,就替换为新报文,并广播新数据库内容;若收到的LSP的Checksum小于本地LSP的Checksum,就向入端接口发送本地LSP报文。

6、若收到的LSP和本地LSP的Checksum也相等,则不转发该报文。(比较checksum,选择checksum大的)

2、P2P的LSDB更新过程

P2P的LSDB更新过程

1、若收到的LSP比本地LSP的序列号大,则将这个新的LSP存入自己的LSDB,并发送PSNP报文来确认收到此LSP,之后将这新的LSP发送给除了发送该LSP的邻居以外的邻居。

2、若收到的LSP比本地的序列号小,则将本地LSP发送给对方,然后等待对方发送的PSNP报文作为确认。(比较LSP序列号)

3、若收到的LSP序列号和本地LSP的序列号相同,则比较Remaining Lifetime,若收到的LSP报文的Remaining Lifetime为0,则将收到的LSP存入LSDB中并发送PSNP报文来确认收到此LSP,然后将该LSP发送给除了发送该LSP的邻居以外的邻居;若收到的LSP报文的Remaining Lifetime不为0而本地LSP报文的Remaining Lifetime为0,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。

4、若收到的LSP和本地LSP的序列号相同且Remaining Lifetime都不为0,则比较Checksum,若收到LSP的Checksum大于本地LSP的Checksum,则将收到的LSP存入LSDB中并发送PSNP报文来确认收到此LSP,然后将该LSP发送给除了发送该LSP的邻居以外的邻居;若收到LSP的Checksum小于本地LSP的Checksum,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。

5、若收到的LSP和本地LSP的Checksum也相等,则不转发该报文。

路由计算

当网络达到收敛状态,即完成了LSDB同步的过程,IS-IS就将使用链路状态数据库中的信息执行SPF路由计算,得到最短路径树,之后利用该最短路径树构建转发数据库,即建立路由表

IS-IS协议使用链路开销计算最短路径,在华为路由器上,接口的缺省开销值为10,且可以通过配置修改。一条路由的总代价为沿此路由路径方向的每一个出接口的开销值简单相加。到达某个目的地可能存在多条路由,其中代价最小的为最优路由。

对于Level-1路由器来说,路由计算具有另外一个功能:为区域间路由选择计算到达最近的Level-2路由器的路径。当一台Level-1-2路由器与其他区域相连时,路由器将通过在它的LSP中设置ATT位为1来通告这种情况,对于Level-1路由器,路由计算过程将选择开销最小的Level-1-2路由器作为它区域间的中介路由器。

IS-IS路由信息控制

在实际应用中,IS-IS协议根据SPF算法计算出来的路由有时并不能满足运营商所有需要,可能出现如下弊端:如路由表中条目过多降低路由查找的速度、网络中链路利用率不均衡等,这些都不能很好地满足网络规划和流量管理的需要。

为了达到优化IS-IS网络和便于流量管理的目的,需要对网络中的路由进行更加精确的控制。IS-IS实现对路由信息控制的手段主要包括路由渗透、路由聚合、负载分担、管理标记、IS-IS Mesh Group、link-group。

路由渗透

当IS-IS网络中同时部署了Level-1区域和Level-2区域时,缺省情况下,Level-2路由器并不将自己知道的Level-1区域以及骨干区域的路由信息通报给Level-1区域。这样,Level-1路由器将不了解本区域以外的路由信息,可能导致对本区域之外的目的地址无法选择最佳的路由。

路由渗透功能通过在Level-1-2路由器上定义路由策略、Tag标记等方式,将符合条件的路由筛选出来,实现将其他Level-1区域和骨干区域的部分路由信息通报给自己所在的Level-1区域,使Level-1区域能够获得全网的路由信息,如下图所示。

DeviceA、DeviceB、DeviceC和DeviceD同属于Area10区域,DeviceA和DeviceB为Level-1路由器,DeviceC和DeviceD为Level-1-2路由器。

DeviceE、DeviceF同属于Area20区域,为Level-2路由器。

DeviceA发送报文给DeviceF,选择的最佳路径应该是DeviceA->DeviceB->DeviceD->DeviceE->DeviceF。因为这条链路上的cost值为10+10+10+10=40,但在DeviceA上查看发送到DeviceF的报文选择的路径是:DeviceA->DeviceC->DeviceE->DeviceF,其cost值为10+50+10=70,不是DeviceA到DeviceF的最优路由。

这是由于DeviceA并不知道本区域外部的路由,所以发往非本区域网段内的报文都是通过由最近的Level-1-2路由器产生的缺省路由发送出去的。

此时分别在Level-1-2路由器DeviceC和DeviceD上使能路由渗透。再查看报文选择的路径,发现路径是DeviceA->DeviceB->DeviceD->DeviceE->DeviceF,为DeviceA到DeviceF的最优路由。

路由聚合

当IS-IS网络规模较大时,如果某IP地址范围内的链路频繁Up和Down会导致链路不稳定,路由聚合通过将多条具有相同IP前缀的路由聚合成一条路由,可以避免网络中的路由震荡,并且有效减少路由表中的条目,减小对系统资源的占用,方便路由管理。如下图所示:

路由器DeviceA、DeviceB和DeviceC都运行IS-IS路由协议实现互连。

DeviceA属于区域20,DeviceB和DeviceC属于区域10。

DeviceA是L2设备,DeviceB是L1/2设备,DeviceC是L1设备。

DeviceB同时维护Level-1和Level-2的LSDB,并且将Level-1区域的3个网段(172.16.1.0/24、172.16.2.0/24和172.16.3.0/24)的路由渗透到Level-2区域。此时,如果由于链路故障造成DeviceC的直连接口172.16.1.1/24频繁在Up和Down状态间变化,那么该抖动会通告到Level-2区域,频繁的触发LSP的扩散和DeviceA进行SPF计算,从而造成对DeviceA的CPU占用较高甚至出现网络震荡。

如果在DeviceB上配置对以上3个Level-1区域网段的路由进行路由聚合,即将以上3条路由聚合为一条路由172.16.0.0/16,则既可以减少DeviceB的路由表条目,又可以降低Level-1区域的链路抖动对Level-2区域的路由收敛的影响。

 

参考链接:

https://blog.csdn.net/zzj244392657/article/details/127284732?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166962861316782388050815%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166962861316782388050815&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-11-127284732-null-null.nonecase&utm_term=isis&spm=1018.2226.3001.4450

https://blog.csdn.net/qq_38265137/article/details/80438222

https://blog.csdn.net/fengxingzhe008/article/details/127936714?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-127936714-blog-80438222.pc_relevant_landingrelevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-127936714-blog-80438222.pc_relevant_landingrelevant&utm_relevant_index=4

posted @   leagueandlegends  阅读(708)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示