IS-IS

在这里插入图片描述

前言

近几年来吗,随着网络在ISP中广泛应用,IS(Intermediate System,中间系统)-IS路由协议已经变得很普及。IS-IS最初是由DECnet公司开发的,1985年被ISO采纳并更名为IS-IS,是工作在OSI无连接网络服务(CLNS)环境中的链路状态路由协议。1991年Cisco公司的IOS软件开始支持IS-IS。IS-IS仅支持CLNS路由选择,而集成的IS-IS支持IP和CLNS路由选择。本文重点介绍集成的IS-IS路由协议。

文章目录

  • 前言
  • IS-IS概述
    • IS-IS特征
    • IS-IS术语
    • IS-IS路由器类型
    • IS-IS数据包格式
      • 一、IS-IS LAN Hello 数据包格式
      • 二、IS-IS点到点Hello数据包格式
      • 三、IS-IS LSP 数据包格式
      • 四、IS-IS SNP数据包格式
  • 总结

IS-IS概述

IS-IS特征

IS-IS是一个非常灵活的路由协议,具有很好的可扩展性,而且已经整合了诸如MPLS(多协议标记交换)之类的特征,其主要特征如下:

  1. 维护一个链路状态数据库,并使用SPF算法来计算最佳路径。
  2. 用Hello包来建立和维护邻居关系。
  3. 使用区域来构造两级层次化的拓扑结构。
  4. 在区域之间可以使用路由汇总来减少路由器的负担。
  5. 支持VLSM和CIDR.
  6. 在广播多路访问网络中,通过选举指定IS(DIS)来管理和控制网络上的泛洪扩散。
  7. 支持明文和MD5验证。
  8. IS-IS采用Cost作为度量值。
  9. IS-IS管理距离为115。
  10. 快速收敛。
  11. 适合大型网络。

虽然IS-IS和OSPF都是链路状态路由协议,但是二者之间是有区别的,见下表
IS-IS_第1张图片

IS-IS术语

  1. CLNS(Connectionless Network Service,无连接网络服务):提供数据的无连接传送,在数据传输之前不需要建立连接,它描述提供给传输层的服务。
  2. CLNP (connectionless Network Protocol,无连接网络协议):是OSI参考模型中网络层的一种无连接的网络协议,和IP有相同的特质。
  3. ES(End system,端系统):没有路由能力的网络节点。
  4. IS(Intermediate System,中间系统):有数据包转发能力的网络节点即路由器。
  5. LSP(Link State Packet,链路状态数据包):在IS-IS协议中,LSP在区域中交换链路状态信息,以建立链路状态数据库。
  6. NSAP(Network Service Access Point,网络服务访问点):是CLNS的地址,类似于IP包头中的IP地址,与IP地址不同,CLNS的地址不代表接口而代表代表节点,IS-IS的LSP通过NSAP地址来标识路由器并建立拓扑表和底层的IS-IS路由选择树,因此即使纯粹的IP环境也必须有NSAP地址。NSAP地址。NSAP地址长度范围为8—20字节,其构图如下
    在这里插入图片描述
  • AFI和IDI构成NSAP地址的初始域部分,其中AFI是机构格式标识符,如39代表ISO数据国别编码,45表示E.164,49表示本地管理,相当于RFC1918的私有地址。IDI是ADI的子域。
  • 高于DSP、系统ID和NSEL构成NSAP地址的特定域部分,其中高位DSP用来将域划分为不同的区域。系统ID用来标识OSI设备。NSEL标识设备中的进程。

在IGP中运行IS-IS时,Cisco使用最简单的NSAP地址格式,即区域地址、系统ID和NSEL3个部分,如49.0001.2222.2222.2222.00.

  • 区域地址:至少一个字节,有AFI和区域标识符组成。在上例中,AFI的值为49,区域标识符为0001.
  • 系统ID:6字节长的标识符。在上例中,系统ID为2222.2222.2222。
  • NSEL(网络选择标识):对于路由器,NSEL总是为0.
  1. NET(Network Entity Titles,网络实体标题):是当NSAP地址格式中NSEL为0的NSAP地址。
  2. SNPA(Subnetwork Point of Attachment, 子网连接点):是和三层地址对应的二层地址,它通常被定义为LAN环境中的MAC地址,帧中继和ATM环境中的DLCI,在HDLC接口中SNPA被设置为“HDLC".由于NSAP和NET相当于一个设备或节点,那么SNPA就相当于用来区分该设备上的不同接口。
  3. SNP(Sequence Nunmber PDUs,序列号PDU):确保IS-IS的链路状态数据库同步以及使用最新的LSP计算路由。
  4. PSNP(Partial SNP,部分SNP):确认和请求丢失的链路状态信息,是链路状态数据库中的完整LSP的一个子集。
  5. CSNP(Complete SNP,完整SNP):描述链路状态数据库中的完整LSP列表。
  6. DIS(Designated Interediat Syste,指定中间系统):在IS-IS中广播链路本身被视为一个伪节点,需要选举一个路由器作为DIS来代表该伪节点。
  7. Level(级别):IS-IS规范定义了4种类型路由级别,如下图所示。
  • Level 0:根据ES和IS进行路由。
  • Level 1: 在IS-IS区域内进行,根据区域内的系统ID进行路由。
  • Level 2:在IS-IS区域之间进行,根据区域ID进行路由。
  • Level 3:在IS-IS域之间进行,类似IP中的BGP,Cisco没有实现Level 3路由,是通过IRDP(域间路由协议)来完成这种功能。
    IS-IS_第2张图片

IS-IS路由器类型

为了支持IS-IS路由级别Level 1和Level2, IS-IS 定义3种类型路由器,如下图所示。

  1. L1路由器:通过LSP获得所在区域内的路由信息,类似OSPF的内部路由器。
  2. L1/2路由器:通过LSP获得所在区域内和区域间的路由信息,类似OSPF的ABR.
  3. L2路由器:通过LSP获得区域间的路由信息,类似OSPF的主干路由器。连接到L2和L1/2路由器的路径被称为主干,所有主干都必须是连续的。
    IS-IS_第3张图片

IS-IS数据包格式

IS-IS路由协议使用三大类数据包: Hello 数据包、LSP 数据包和SNP数据包,共计9种具体的数据包。每种数据包都有一一个特定 的类型号,在IS-IS 的数据包包头中,有一个数据包类型字段,此字段中所包含的信息就是IS-IS 数据包的类型号,路由器就是通过类型号来识别所收到的数据包的类型的。数据包的类型和类型号的对应关系如下表所示。IS-IS_第4张图片
每种类型的数据包包头字段是相同的,长度为8字节,如下图所示,各字段含义如下所述。

  1. 域内路由选择协议标识符:是ISO 9577 分配给IS-IS 的一个固定的值,用于标识网络层协议数据单元的类型,对于IS-IS数据包,该字段的值永远都为0x83.
  2. 长度标识符:标识该固定头部字段的长度。
  3. 版本/协议ID扩展:当前始终为1。
    IS-IS_第5张图片
  4. ID长度:表示系统D的长度,值为0表示长度为6字节:值为255表示长度为0,即为空;值为1~8的整数,表示系统ID具有相同长度的字节数。在Cisco的路由器上,该字段始终为0。
  5. R:保留位,没有使用的比特位,始终为0。
  6. 数据包类型:是一个5比特的字段,标识IS-IS数据包的类型,如IS-IS数据包类型和对应的类型号
    表所示。
  7. 版本:当前为1.
  8. 保留:当前设置为全0。
  9. 最大区域地址数: IS 区域所允许的最大区域地址数量。值为1~254的整数,表示该区域所允许的最大区域地址数量;值为0表示最多支持3个区域地址数, Cisco的默认值为0。

一、IS-IS LAN Hello 数据包格式

Level 1和Level 2 LAN的Hello的数据包格式是相同的,只是在头部的数据包类型字段的值不同,格式如下图所示,各字段含义如下所述。

IS-IS_第6张图片

  1. 电路类型: 2比特,01 表示L1路由器,10表示 L2路由器,11表示L1/2路由器,如果为00,该数据包被忽略。
  2. 源ID:发送该数据包的路由器的系统ID.
  3. 抑制时间:用来通知它的邻居路由器在认为这台路由器失效之前应该等待的时间。如果在抑制时间内收到邻居发送的Hello包,将认为邻居依然处于存活状态。在IS-IS中,默认情况下抑制时间是发送Hello包间隔的3倍。
  4. 数据包长度:整个数据包的长度,包括包头和TLV字段。
  5. 优先级:接口的DIS优先级,用来在BMA或者NBMA网络中选举DIS。优先级数值越高,路由器成为DIS的可能性越大。L1和L2的DIS是分别选举的。
  6. LANID:由DIS的系统ID和1字节的伪节点ID组成,LAN ID用来区分同一台DIS上的不同LAN.

二、IS-IS点到点Hello数据包格式

IS-IS点到点Hello 数据包格式如下图所示,从IS-IS点到点Hello数据包的格式可以看出,大部分字段与LAN Hello数据包的格式相同。但是在点到点Hello数据包中没有“优先级”字段,因为在点到点链路上不需要选举DIS。而且使用“本地电路ID”字段代替了LAN数据包中的“LANID”字段。本地电路ID是由发送Hello数据包的路由器分配给这条电路的标识,并且在路由器的接口上是唯一一的。在点到点链路的另一端,Hello 数据包中的本地电路ID的值可能相同,也可能不同。IS-IS_第7张图片

三、IS-IS LSP 数据包格式

LSP数据包分为Level 1 LSP和Level 2 LSP,它们各自承载了IS-IS 不同层次的路由选择信息,但是它们有着相同的数据包格式。LSP格式如下图所示,各字段含义如下所述。
IS-IS_第8张图片

  1. 数据包长度:整个数据包的长度。
  2. ②剩余生存时间: LSP 到期前的生存时间。当生存时间为0时,LSP将从链路状态数据库中被清
  3. LSP ID:用来标识不同的LSP和生成LSP的源路由器。LSP ID包括系统ID、伪节点标识符和LSP编号三部分。
  4. 序列号: 32比特无符号数,主要作用是让路由器能够识别-一个LSP的新旧版本。
  5. 校验和:主要用于检查被破坏的LSP或者还没有从网络中清除的过期LSP。
  6. P:即分区,表示区域划分或者分段区域的修复位。当P位被设置为1时,表明始发路由器支持自动修复区域的分段情况。对于Cisco路由器来说,该位始终为0。
  7. ATT:即区域关联,L1/L2 路由器在其生成的L1 LSP中设置该字段以通知同-区域中的L1路由器自己与其他区域相连。当L1区域中的路由器收到L1/2路由器发送的ATT位被置位的L1LSP后,它将创建-条指向L1/2路由器的默认路由,以便数据可以被路由到其他区域。虽然ATT位同时在L1 LSP和L2 LSP中进行了定义,但是它只会在L1 LSP中被置位,并且只有L1/2路由器会设置这个字段。
  8. OL:即超载,表示路由器的资源状态。如果该位被置位,就表示路由器发生了超载。被设置了超载位的LSP不会在网络中进行泛洪,并且当其他路由器收到设置了超载位的LSP后,在计算路径信息时不会考虑此LSP,因此最终计算出来的到达目的地的路径将绕过超载的路由器。
  9. Is类型:表示LSP是来自L1路由器还是L2路由器,也表示收到此LSP的路由器将把这个LSP放到L1链路状态数据库中还是L2链路状态数据库中。01表示L1, 11表示L2,00 与10未使用。

四、IS-IS SNP数据包格式

SNP数据包分为CSNP和PSNP. CSNP与PSNP都包含了路由器本地链路状态数据库中LSP的摘要信息。其中CSNP包含的是所有LSP的摘要信息,PSNP包含的是部分LSP的摘要信息。CSNP 数据包格式如下图所示,其中起始LSP ID表示TLV字段中描述的LSP 范围的第一一个 LSP ID,结束LSP ID表示TLV字段中描述的LSP范围的最后一个LSP ID.
IS-IS_第9张图片
PSNP数据包格式如下图所示,通过对比可以看出, PSNP数据包的格式与CSNP相似,只不过没有起始LSP ID和结束LSP ID两个字段。由于PSNP携带的只是部分LSP的摘要信息,所以不需要起始和结束LSP ID字段。IS-IS_第10张图片

总结

作为链路状态路由协议,IS-IS 基于ISO CLNS,设计之初是为了实现ISO CLNP路由,在后来加上了对IP路由的支持,具有良好的灵活性、可扩展性和稳定性。从选择来说,IS-IS更适合运营商级的网络,而OSPF非常适合企业级网络。本章介绍了IS-IS 特征、数据包格式和路由器类型等内容。

你可能感兴趣的