HCIP-ICT实战进阶04-ISIS原理与配置

HCIP-ICT实战进阶04-ISIS原理与配置

0 前言

IS-IS(Intermediate System to Intermediate System, 中间系统到中间系统)协议, 和OSPF一样属于内部网关协议, 也是一种采用SPF算法进行路径计算的链路状态协议.

image-20221102185114350

ISIS发展

ISIS最早是OSI七层模型里面出现的路由协议(OSPF是在TCP/IP模型里面出现).

在七层模型里面, 主要了解一下网络层服务:

  1. 无连接服务(CLNS)

    其中的协议主要分成三种:

    • CLNP--被路由协议
    • ISIS--中间系统到中间系统
    • ESIS--终端系统到中间系统

    IS-网络设备, ES-网络终端

  2. 面向连接的服务(CONS)

最早的ISIS协议是为了CLNP提供服务, 不支持IP网络, 最后进行了扩充和修订, 称为集成ISIS协议.

由于设计之初不太一样, 所以ISIS和OSPF报文的封装方式也不太一样.

  • ospf是利用IP进行外层封装
  • ISIS利用MAC进行外层封装

ISIS里面有自己的专属地址格式(NSAP地址--网络服务接入点, 类似ipv4&ipv6)

1 ISIS基本原理

1.1 NSAP地址组成

image-20221102185142727

由两个部分组成, 每个部分也有各自组成部分:

  1. IDP: 类似于IP地址的主网络号;
    • AFI: 地址分配机构和地址格式;
    • IDI: 用于标识域.
  2. DSP: 类似IP地址的子网号和主机地址;
    • High Order DSP: 用于分割区域;
    • system-id: 用于区域内唯一标识一台设备(类似于RID), 长度是固定为48bit(6Byte), 一般是采用设备的RID转换;
    • SEL: 用于表示服务类型, 不同传输协议会使用不同的标识, 目前最常用的就是00, 表示一个具体的地址.

NSAP地址长度为8-20byte(64-160bit), 两部分的长度是可变的.

上述IDP和DSP组成内容里面, 其中AFI和IDI一般主要有两种显示: 47(公网)、49(私网)

对于Area Address区域号码(类似于OSPF里面的区域划分), 不同厂商会有不同的概念:

  1. 认为DSP的High Order DSP就是区域号码;
  2. 认为IDP+DSP的High Order DSP就是区域号码.

比如一个NSAP地址可以这么写:

47.0001.1921.6800.1001.00
47-AFI和IDI

0001-区域(也有厂商会认为47.0001是区域号码)

1921.6800.1001-system-id

00-当前NSAP是一个具体地址(01表示伪节点)

system-id冲突

如果两台设备system-id冲突会发生什么?

在这之前先回顾类比OSPF的RID冲突:

  1. 两台设备直连, RID冲突: 无法建立邻居关系

  2. 两台设备同区域不是直连, R1-R2-R3(R1和R3冲突):

    邻居关系正常建立, R1和R3设备的路由条目会互相学到(但是用不了), R2设备的路由条目会一直变动(LSA更新), 之后R1或者R3会重新选举RID, 消除RID冲突, 恢复网络正常.

  3. 两台设备不同区域, 两台设备都没有进行外部路由引入, 则没有问题(三类LSA没有RID信息), 但如果有一台设备引入外部路由(五类LSA携带ASBR的RID), 则出现冲突, 无法重新选举, 需要手动调整.

回到ISIS, 两台直连设备出现system-id冲突, 会自动修改system-id, 两台设备可以正常建立邻居关系.

自动修改过程: 前两个字节为F; 后四个字节随机生成;

比如FFFF.1234.5678

ISIS默认开启了自动修改system-id的功能

开启配置命令(双重否定):

undo isis system-id auto-recover disable

1.2 NET

当SEL是00的时候, NSAP地址有一个特殊的名称: NET地址(类似于IP网络中的IP地址), 用于标识一台设备.

NET(Network Entity Title, 网络实体名称), 由区域地址(Area ID)和system ID组成, 可以看做特殊的NSAP.

image-20221102185231367

NET长度与NSAP相同, 最长的20Byte, 最短的8Byte.

在IP网络中运行ISIS时, 只需配置NET, 根据NET地址设备可以获取到Area ID和system ID.

NET地址会根据真实IP地址进行转换(推荐方式).

比如:

192.168.1.1->192.168.001.001->1921.6800.1001

举例

每台运行ISIS的网络设备至少需要拥有一个NET, 当然一台设备也可以同时配置多个NET, 但这些NET的system ID必须相同.

image-20221102185833891

在华为的网络设备上, System ID长度固定为6Byte, 在一个ISIS路由域中, 设备的system ID必须唯一, 为了便于管理, 一般根据Router ID配置system ID.

1.3 ISIS区域-路由分级

image-20221029105723894

在NET地址里面, 可以看到ISIS是有区域ID概念的, 但是要注意, ISIS的区域ID只影响邻居关系建立, 不会影响骨干区域和非骨干区域.

ISIS和ospf一样, 都有骨干区域和非骨干区域.

Level-1路由器

level-1设备, 非骨干区域设备, Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,维护一个Level-1的LSDB,该LSDB包含本区域的路由信息,到区域外的报文转发给最近的Level-1-2路由器.

Level-2路由器

level-2设备, 骨干区域设备:Level-2路由器负责区域间的路由,可以与同一区域或者其它区域的Level-2和Level-1-2路由器形成邻居关系,维护一个Level-2的LSDB,该LSDB包含区域间的路由信息。所有Level-2路由器和Level-1-2路由器组成路由域的骨干网,负责在不同区域间通信,骨干网必须是物理连续的。Level-2路由器是否形成邻居关系与区域无关.

Level-1-2路由器

level-1-2设备, 骨干区域连接非骨干区域设备, 但是属于骨干区域设备, 同时属于Level-1和Level-2的路由器称为Level-1-2路由器,可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻居关系,也可以与同一区域或者其他区域的Level-2和Level-1-2路由器形成Level-2的邻居关系Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由.

如果两台设备都是level-1-2设备, 则首先判断区域号码是否一致, 如果不一致, 则只建立Level-2关系, 如果不一致, 则建立Level-1和Level-2关系.

image-20221102225505289

骨干区域由level-2和level-1-2层级的设备构建而成, 非骨干区域由level-1层级设备构成.

ISIS的level层级是一台设备的属性, OSPF区域的划分是一个接口的属性.

1.5 ISIS的网络类型

ISIS支持的网络类型: 点到点网络(P2P)、广播(Broadcast);

OSPF支持的网络类型: p2p、非广播(nbma)、点到多点(p2mp)、广播.

image-20221102225746615

1.6 ISIS开销值(ISIS最大痛点)

image-20221029144715270

ISIS和OSPF一样, 会有开销值计算(都是SPF算法计算网络拓扑)

  • OSPF接口开销值是有计算公式(接口开销值=带宽参考值/接口带宽), 默认为1;
  • ISIS接口默认开销固定是10.

1.6.1 ISIS开销值类型

  1. narrow: 窄模式(默认)

    • 收发都是narrow;

    • 接口开销值受报文位数限制, 取值范围为(1~63), 整条链路开销值累加不能超过1023;

    • 窄模式不能携带其他路由的属性(比如segment routing).

  2. wide: 宽模式(常用)

    • 收发都是wide;

    • 开销值取值范围为(1 ~ 2^24-1), 累加上限为2^32-1;

    • 支持携带路由属性(segment routing必须使用宽模式).

  3. compatible: 兼容模式

    • 收发都是narrow和wide;

    • 一个接口从发送报文的时候同时携带窄模式和宽模式.

  4. narrow-兼容

    • 发送是narrow, 接收是narrow和wide.
  5. wide-兼容

    • 发送是wide, 接收是narrow和wide.

1.6.2 计算开销值

ISIS和OSPF一样, 都是去往目标网络的最短路径所有的出接口开销值累加.

当然, ISIS也可以类似OSPF, 手工指定, 或者自动计算:

  1. 接口开销: 为单个接口设置开销;
  2. 全局开销: 为所有接口配置开销;
  3. 自动计算开销: 根据接口带宽自动计算到达目的开销;

1.7 ISIS报文介绍

ISIS报文是直接封装在数据链路层的帧结构的.

image-20221102225931174

  1. Hello PDU: 在ISIS里面也称为IIH(IS-IS Hello), 用于发现、建立、维护邻居关系. 在广播网络中, level-1的关系之间使用level-1 IIH, level-2关系之间使用level-2 IIH; 在P2P网络中, 这只使用一种P2P IIH, 报文格式有所差别;

    Hello报文发送周期: 普通ISIS路由器是10s, 老化时间是30s, DIS是3.333s, 老化时间10s.

  2. LSP PDU: 链路状态报文, 用于交换链路状态信息.(不同于OPSF中LSA放在LSU报文中, LSP既可以是链路状态信息也是报文)

    LSP报文同样分成了两种:

    • level-1 LSP
    • level-2 LSP

    ISIS更新周期: 900s更新, 1200s老化, 倒计时(OSPF: 1800更新, 3600老化, 正计时)

    老化倒计时为0时, 会等待60s再删除, 但一般问的老化时间还是1200s.

  3. SNP PDU: 序列号报文, 主要是LSDB的摘要信息, 用于维护LSDB的完整性, 以及确保网络的LSDB是同步的.

    SNP又分为两种:

    • CSNP

    • level-1 CSNP

      • level-2 CSNP
    • PSNP

ISI报文类比OSPF:

  • IIH--Hello
  • CSNP--DD
  • PSNP--LSR/LSAck
  • LSP--LSU

拾遗: ospf报文中携带LSA摘要的报文有: DD、LSR、LSAck.

1.8 ISIS报文详细结构

  1. 数据链路层:

    • 源mac地址: 发送该报文的接口mac地址

    • 目的mac地址:

      • level-1: 01-80-c2-00-00-14
      • level-2: 01-80-c2-00-00-15

      组播mac地址(OSPF是组播IP地址: 224.0.0.5和224.0.0.6)

  2. type/length:

    1. 当该字段数值小于等于1500(0x05DC), 表示报文是IEEE 802.3结构;
    2. 当字段大于等于1536(0x0600), 表示报文是Ethernet II结构.

    目前学到比较多的数据帧, 结构都是Ethernet II结构, 比如ARP: 0x0806.

    目前有在使用802.3的协议主要就是ISIS.

  3. LLC子层:

    • DSAP: 目的服务访问点, ISIS报文的DSAP会写成0xfe
    • SSAP: 源服务访问点, ISIS报文的DSAP会写成0xfe
    • Control: 控制字段, 表面当前不是正规的TCP/IP报文.

1.8.1 ISIS数据封装--ISIS通用头部(类似OSPF的报头)

image-20221103215959010

  1. Intradomain Routeing Protocol Information Discriminator: 1Byte, 域内路由选择鉴别符, 在ISIS报文里面, 该字段固定为0x83
  2. PDU Header Length: 1Byte, PDU头部长度标识, ISIS通用
  3. Version: 1Byte, 版本号码, 当前固定为0x01
  4. system-id length: 1Byte, 表示NSAP地址或者NET地址的system-id长度; 如果为0, 表示system-id是正常6Byte, 如果是255, 表示system-id不正常为空.
  5. reserved: 3bit, 保留未使用
  6. PDU Type: 5bit, 表示ISIS报文类型, 一共9种:
    • 15--L1 IIH
    • 16--L2 IIH
    • 17--P2P IIH
    • 18--L1 LSP
    • 20--L2 LSP
    • 24--L1 CSNP
    • 25--L2 CSNP
    • 26--L1 PSNP
    • 27--L2 PSNP
  7. version: 1Byte, 版本号码, 重复定义, 固定0x01;
  8. reserved: 1Byte, 保留未使用, 重复定义;
  9. Max Area Address: 1Byte, 表示ISIS支持最大区域数量, 设置为1~254, 默认是0. 默认为0时, 表示当前设备支持3个区域.

1.8.2 ISIS数据封装--消息内容

变长CLV(Code-Length-Value) 三元组, 其实就是TLV数据结构:

  1. type: 当前内容类型;
  2. length: 内容长度;
  3. value: 具体携带内容.

TLV结构优点: 可拓展性非常强, OSPF报文几乎没有任何TLV结构, 所以OSPFv2只能支持IPv4, 但ISIS协议的报文是TLV结构, 想要支持后续版本只需要在内容中添加类型即可.

ISIS只是采用了单层TLV, BGP是TLV嵌套TLV再嵌套TLV(后话).

ISIS比较经典的TLV结构报文:

type 内容
2 中间系统邻接
128 内部路由可达信息(ISIS内部的路由信息)
129 现在ISIS为了支持哪种协议(IPv4&IPv6)
130 外部路由可达信息(ISIS引入的外部路由)
131 区域间路由
133 认证

OSPF中某一类LSA携带的内容是固定的, 无法更改, 但是ISIS通过TLV的形式, 可以任意填写type, 携带任意信息.

1.8.3 IIH报文

IIH报文用于建立和维持邻接关系, 广播网络中Level-1 ISIS路由器使用Level-1 LAN IIH;

广播网络中的Level-2 ISIS路由器使用Level-2 LAN IIH; 点到点网络中则使用P2P IIH.

image-20221103200055269

广播IIH

  1. 通用头部;

  2. Res/Circuit type: 1字节, 表示发送该PDU设备的层级, 前6bit未使用, 后2bit:

    • 00(0x0): 不可用

    • 01(0x1): level-1

    • 10(0x2): level-2

    • 11(0x3): level-1-2

  3. Source ID: 6字节, 始发该IIH报文设备的system-id;

  4. Holding time: 2字节, 保持时间, 邻居路由器等待始发路由器发送下一个IIH报文的时间间隔(老化时间)

  5. PUD length: 2字节, PDU数据包的长度

  6. res/priority 最前1bit保留未使用, 后7bit表示DIS优先级;

  7. LAN ID: DIS的system-id长度(7Byte)+1字节, 一般用于DIS的system-id和1字节伪节点标识.

  8. TLV: 可变长度域.

P2P IIH

  1. 通用头部;

  2. Res/Circuit type: 1字节, 表示发送该PDU设备的层级, 前6bit未使用, 后2bit:

    • 00(0x0): 不可用

    • 01(0x1): level-1

    • 10(0x2): level-2

    • 11(0x3): level-1-2

  3. Source ID: 6字节, 始发该IIH报文设备的system-id;

  4. Holding time: 2字节, 保持时间, 固定为30s(p2p不选举DIS);

  5. PUD length: 2字节, PDU数据包的长度;

  6. Local circuit ID: 1字节, 本地链路ID, 只有p2p网络会有该字段, 始发该报文的设备会给接口做一个唯一标识.

  7. TLV: 可变长度域.

1.8.4 LSP报文

(ISIS的LSP有两个意思: 一个是LSP{(LSU)}报文, 一个是LSP{LSA}信息), 这里讲的是LSP报文.

image-20221102184715016

  1. 通用头部;

  2. PDU Length: PDU长度

  3. Remaining lifetime: LSP生成时间, 1200s, 倒计时

  4. LSP ID: 由三个部分组成:

    • system-id

    • 伪节点id(circuit id): 是否为伪节点

    • lsp分片编号: 是否为最后一片;

      举例:

      0000.0000.0001.00-00 常规LSP

      0000.0000.0001.01-00 DIS发送的LSP

      0000.0000.0001.00-01 常规LSP的最后一片

  5. Seq: 4Btye, 序列号, 每次更新+1, 最大2^32-1;

  6. checksum: 校验和(从remaining lifetime之后的信息开始校验);

  7. P: 自动修复, 只和L2 LSP有关系, 类似虚连接, 但是没有厂商实现

  8. ATT: 始发路由器是一个与其他区域相连的设备, 该字段在L1/L2的LSP都存在, 但只有L1-2设备产生的L1的LSP才使用;

  9. OL: 过载位, 被置位的LSP会在网络中会传播, 但是不会进行SPF计算;

  10. IS type: 产生这个LSP的设备类型

    • 01: L1设备
    • 11: L2设备
  11. TLV: 可变长度域.

1.8.5 SNP报文

CSNP

全序列号报文, 携带某台设备的LSDB的所有LSP摘要信息, 主要在广播网络上由DIS发送(周期10s), 用于维护广播网络中所有设备的LSDB; 在p2p网络中, 也会有CSNP报文, 但只是在开始建立邻接关系才会使用.

image-20221103220812261

  1. PDU Length: PDU长度;
  2. Source ID: 6字节, 始发该CSNP报文设备的system-id;
  3. Strat LSP ID: 表示TLV字段中描述的LSP 范围的第一个 LSP ID;
  4. End LSP ID: 表示TLV字段中描述的LSP范围的最后一个LSP ID;
  5. TLV: 可变长度域.

PSNP

部分序列号报文, 只携带部分LSP摘要信息, 当设备发现LSDB不同步时, 通过PSNP报文来请求新的LSP信息. 在p2p网络中, 收到LSP信息需要用PSNP进行回复确认.

image-20221103221102946

  1. PDU Length: PDU长度;
  2. Source ID: 6字节, 始发该IIH报文设备的system-id;
  3. TLV: 可变长度域.

2 ISIS工作原理

2.1 DIS设备

ISIS的DIS属性:

类似于OSPF的DR, 但是不太一样

  1. DIS: 指定中间系统, 用于在广播网络中, 选举出一台DIS设备(广播网络需要选举DIS, P2P不需要), 减少链路状态信息泛洪.

  2. Hello时间: 普通ISIS路由器hello周期是10s, 但是当设备选举为DIS之后, 则hello时间修改为10/3 s, 修改这个hello周期时间是为了更快检测到DIS是否出现故障.

  3. 优先级: ISIS默认优先级是64, 可配置范围是0-127. (OSPF: 1, 0-255)

  4. 选举优先级规则:

    1. 比较优先级: 数值越大越优先;
    2. 比较mac地址, mac地址越大越优先(ISIS报文封装只有MAC地址没有IP地址).
  5. 如果设备之间的关系是Level-1-2关系, 则需要选举两个DIS, level-1一个, level-2一个.

  6. DIS支持抢占(OSPF不会), 所以没有备份(BDR).

  7. ISIS同一个广播网络里面, 虽然选举了DIS,但是所有设备之间依然是邻接关系(OSPF只保留DR和BDR与其他设备之间的邻接关系).

2.2 伪节点

image-20221103085255588

ISIS网络选举出一台DIS设备之后, DIS设备会创建一台虚拟路由器(伪节点), 该广播域的所有设备都和这台虚拟路由器建立邻接关系, 又因为伪节点是虚拟的, 所以查看邻接关系的时候, 看到的就是全设备的邻接关系, ISIS为了能够识别出伪节点的设备编号, 所以对于伪节点的ISIS会用DIS的system-id加上一个字节的Circuit ID标识(Circuit ID如果是伪节点则非0, 其他普通节点都是0).

创建伪节点就是类似于OSPF的DR, 由伪节点进行广播网络中的链路状态信息同步.

ISIS的DIS设备可以抢占.

  • 好处: 网络发生任何变动, 则DIS设备实时更改;
  • 坏处: 当DIS发生变动时, 伪节点也会变化, 链路信息需要重新泛洪.

2.3 ISIS邻接关系建立前提(原则)

  1. 两台设备层级需要一致, 需要两边设备具有相同层级的属性, 比如L1和L1, L2和L2, L2和L1-2, L1-2和L1-2;
  2. 如果是建立L1关系, 则Area ID(区域号码)需要一致, L2关系无影响;
  3. 两边设备需要处于同一个物理连接, 如果是广播网络, 则设备之间在同一个广播域; 如果是P2P设备, 则设备之间需要直连. 原因是ISIS使用数据链路成封装, 是组播MAC传递消息, 只能在单个网络内传递;
  4. 网络类型需要一致(p2p连接/广播网络), 或者是通过命令修改为同一个接口类型;
  5. 如果存在认证, 则两边认证需要保持一致.
  6. 最好是相同网段(默认情况下).

2.4 ISIS邻接关系建立

2.4.1 广播网络邻接关系建立

image-20221102191316906

前提: 广播网络中的IIH报文有两种(L-1 IIH和L-2 IIH), 目的MAC地址是组播MAC(L-1是14, L-2是15).

一开始两边的ISIS设备都是down状态, 以R1先发送为例:

  1. R1通过组播mac地址的方式发送一个IIH报文(该报文没有任何邻接信息);
  2. R2设备收到IIH报文, 认为自己可能有一个邻居R1, 此时R2将自己对于R1的邻居关系状态置为init(表示初始化, 需要确认);
  3. R2将IIH报文中的邻居设置为R1, 组播发送出去;
  4. R1收到该IIH报文后, 直接确认R2邻居是存在的, 与R2的邻居关系状态变为UP.;
  5. R1将IIH报文中的邻居设置为R2, 组播发送出去;
  6. R2收到IIH报文, 确认R1邻居关系, 与R1的邻居关系变为UP状态, 至此邻接关系建立完成.

两边都进入UP状态后, 设备会等到两个IIH报文的发送周期(20s), 然后进行DIS选举. 选举完DIS设备后, DIS设备IIH周期改为3.3333s发送, 10s老化.

ISIS和OSPF邻接建立的差别:

  1. 状态差别:

    • ISIS只有三种状态:down init up
    • OSPf有七个状态:down init 2-way exstart exchange loading full
  2. 选举时间点差别:

    • ISIS是邻接建立完成在选举DIS;
    • OSPF是邻接建立过程中选举DR(互发hello报文时)
  3. 默认优先级差别:

    • ISIS默认优先级是64, 优先级0参加选举;

    • OSPF默认优先级是1, 优先级0不参加选举;

2.4.2 P2P网络邻接建立

P2P网络邻接建立有两种方式:

两次握手机制(不可靠)

只要ISIS设备收到对端发送的IIH报文, 就认为该邻居UP. 同时down状态设备收到其他设备发送的IIH会直接进入UP状态.

两次握手机制存在非常大的问题, 如果R1设备向R2设备发送完IIH报文后立刻出现故障, R2依然会误认为R1已经UP了, R2也会进入UP状态, 从而出现网络故障.

三次握手机制(可靠, 默认)

image-20221029171538233

过程同广播网络邻接关系建立一致, 但邻接关系建立完之后不会也不需要选举DIS设备.

  1. 配置命令切换握手机制:

    isis ppp-negotiation 2-way
    isis ppp-negotiation 3-way
    

    只能在p2p网络使用.

  2. 配置命令让接口忽略IP地址检查:

    isis peer-ip-ingnore
    

    对接收到的IIH报文不进行对IP地址检查.

2.5 ISIS的LSDB

image-20221029171553768

3 ISIS LSP更新过程

3.1 广播网络LSP更新过程

image-20221103222632879

  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更新周期(10s), 然后发送CSNP报文;
  3. R3收到DIS发来的CSNP报文, 对比自己的LSDB(也是一种确认DIS是否收到自己LSP信息的一种方式, 如果DIS没收到R3的LSP报文, R3将再次发送自己的LSP信息), 然后向DIS发送PSNP请求自己没有的LSP信息;
  4. DIS收到该PSNP报文后向R3发送对于的LSP进行LSDB同步.

3.2 点到点网络LSP更新过程

image-20221102192443289

  1. A和B设备直线互相发送IIH报文, 进行ISIS邻接关系建立(P2P不用选举DIS);

  2. 邻接关系建立后, A和B互相发送CSNP报文, 收到对端发送的CSNP报文之后, 会检查本地LSDB和CSNP的摘要信息是否一致, 如果不一致, 则需要进行LSP更新; 如果一致, 则不需要更新;

  3. A发现不一致的情况下, A设备会向B发送一个PSNP报文用于请求对方的具体LSP信息;

  4. B设备收到PSNP请求之后, 根据请求消息内容, 将LSDB有关LSP信息封装到LSP报文里发送给A设备, 同时启动LSP重传定时器(5s);

    注意: ISIS的广播网络, DIS可以周期性发送CSNP, 所以广播网络不需要专门的确认机制, 但是P2P网络没有DIS, 也就是没有周期发送CSNP的设备, 所以需要进行确认.

  5. A设备收到LSP之后, 需要进行本地LSDB更新, 然后向B设备发送PSNP报文进行确认;

  6. B设备如果在计时器结束前收到PSNP确认, 则关闭计时器, 否则重新进行第3步.

3.3 LSP处理机制

不管是周期性更新, 还是网络变化出现触发更新, 都需要进行LSP报文的处理.

广播网络中, 如果A设备收到一个LSP报文更新, A设备会根据本地LSDB内容和LSP报文里面的LSP消息进行对比:

  1. 相同的路由信息, 对比序列号:
    • LSP序列号大于本地: 本地LSDB更新LSP信息, 组播向外发送更新内容.
    • LSP序列号小于本地: 收到LSP报文的接口会将LSP报文发送回去.
  2. 如果序列号一致, 比较remaining lifetime(剩余生存时间):
    • 如果LSP剩余生存时间大于本地LSDB, 说明LSP比较新, 更新本地LSDB的LSP信息, 组播向外发送更新内容;
    • 如果LSP剩余生存时间小于本地LSDB, 则将本地LSDB中的LSP信息通过LSP报文回复.
    • 如果剩余生存时间为0, 删除LSP.
  3. 如果剩余时间一致, 则比较校验和(checksum):
    • 如果收到LSP大于本地, 则更新LSDB;
    • 如果小于本地, 则将本地LSDB回复.
  4. 如果以上全部一致, 则该LSP报文无意义, 丢弃LSP报文.

点到点网络中, 更新的方式和后续处理和广播网络略有差别:

在收到LSP并判断为需要更新之后, 设备将收到的LSP加入LSDB, 并发送PSNP进行确认, 之后将这新的LSP信息发送给除了发送该LSP报文的其他邻居.

注意: 剩余时间在国际化标准文档中, 只要不是0, 就是一致的(只有0和非0), 如果是0就删除LSP报文, 不是0则不比较剩余时间.

但是华为设备不同:

  • 收到LSP剩余时间大于本地, 则认为本地比较新, 将本地LSP信息进行回复.
  • 收到LSP剩余时间小于本地, 则认为收到的比较新, 进行LSP更新.

猜测原因: 1. 喜欢和思科反着来(懂得都懂); 2. 遵循国际标准(振声).

4 ISIS路由计算

4.1 L-1(非骨干)路由器的路由计算

image-20221102200302486

通过区域内部泛洪L-1的LSP, 之后同区域内部LSDB同步之后, 再进行SPF算法.

4.2 L-2(骨干)路由器的路由计算

image-20221102200359574

通过区域内部泛洪L-2的LSP, 之后同区域内部LSDB同步之后, 再进行SPF算法.

4.3 L-1-2(骨干)路由器的路由计算

image-20221102200339711

生成两个层级的LSDB, 两个LSDB都会进行SPF计算, 最后生成的路由信息在加入路由表之后, 优先加入L-2的路由.

L-1-2设备会将L-1区域的LSP信息转换成L-2信息在L-2区域泛洪, 但不会将L-2信息转换成L-1信息.

但是为了L-1设备能与L-2区域进行通信, L-1/2会向L-1设备发送ATT=1的L-1 LSP, 用于告诉L-1的设备需要生成去往L-1-2设备的默认路由, 从而实现非骨干区域和骨干区域的通信.

如果需要L-1-2设备能够产生ATT置位, 则需要L-1和L-1-2设备唯一同一Area ID, L-2为不同的Area ID.

ATT产生的默认路由, 并不会专门生成一条LSP来传递, 而是直接将ATT-1写在LSP中, 让L-1的设备生成指向L-1-2的默认路由.

ATT置位是为了产生默认路由, 但在有明细路由存在时不会产生默认路由.

4.4 L-1路由器的次优路径问题

image-20221102200331330

L1收到两台L-1-2设备带有ATT=1的LSP, 生成两条默认路由分别指向两台L-1-2设备, L1只会计算去往L-1-2设备的开销值, 即两条默认路由cost=10, 形成负载分担.

如果R1需要去往R5, 从R3转发, 后续开销比从R2转发小, 出现次优路径, 此时需要配置路由渗透.

路由渗透就是L1-2的设备被允许,可以将L2的LSP信息转换成L1的LSP进行传递.

image-20221102200419646

5 ISIS认证

5.1 根据报文种类分类

  1. 接口认证: 接口视图下配置, 对L-1和L-2的IIH报文认证.

  2. 区域认证: ISIS进程视图下配置, 对L-1的SNP和LSP报文进行认证.

  3. 路由域认证: ISIS进程视图下配置, 对L-2的SNP和LSP报文进行认证.

5.2 根据认证方式认证

  1. 简单认证(明文): 将配置的密码直接加入报文中, 这种加密方式的安全性低于其他两种方式.
  2. MD5认证(密文): 通过将配置的密码进行MD5算法加密之后再加入报文中, 提高了密码的安全性;
  3. Keychain认证;
  4. HMAC-SHA256认证.

6 ISIS LSP分片

如果一台ISIS设备需要发送LSDB信息非常多, 此时可能一个LSP报文无法放置所有链路状态信息, 于是ISIS衍生出一种分片机制, 就是一台设备产生一个主体LSP和多个分片LSP报文.

分片的标识上面有讲过, 分片标识占用了一个字节, 在查看的时候, 显示为16进制, 因此, 一个系统的分片最多可以产生256个.

如果需要分片, 则一台设备会出现以下几个概念:

  1. 初始系统: 标识真实的ISIS进程(主体);
  2. 系统ID: 初始系统的system-id;
  3. 虚拟系统: 有初始系统虚拟出来的附加系统, 简单来说就是分片系统;
  4. 附加系统ID: 就是分片的虚拟系统的系统ID, 有网管设备同一分配;

分片的时候, 主体系统和附加系统会通过ISIS的24号TVL表示, 附加系统最多可以有50个, 所以主系统+附加系统可以有51个, 分片最多可以有51x256个.

7 ISIS快速收敛

和OSPF一样, 算法里分成了I-SPF和PRC算法

  • OSPF: 区域内不管出现什么变动都是触发I-SPF, 区域间触发PRC, 非常的笨;
  • ISIS: 网络发生更新时, 先判断拓扑是否变化, 如果没有变化, 只有路由变化, 则采用PRC算法; 如果拓扑变化则采用I-SPF算法, 将算法的理想使用情况实现.

7.1 智能定时器

同OSPF的智能定时器, 记不清的可以回顾我的这篇OSPF的博客.

ISIS快速扩散机制: ISIS正常情况下应该是收到LSP, 然后计算之后在发送出去, 快速扩散情况下收到LSP后不进行计算, 立刻发送给其他设备.

8 ISIS的基本配置

8.1 配置命令

  1. 创建ISIS进程并进入:

    [Huawei]isis [process-id]
    

    process-id: 进程id, 缺省为1.

  2. 配置网络实体名称(NET)(isis进程视图下):

    [Huawei-isis-1]network-entity net
    

    net为需要为其net地址, 例如: 49.0001.0000.0000.0001.00;

    NET地址不是在接口中配置, 而是在ISIS协议里面配置的, 一个进程可以创建至多三个, 但同一进程上net地址的system-id必须要相同.

  3. 为设备配置全局Level级别:

    [Huawei-isis-1]is-level {level-1 | level-1-2 | level-2}
    

    缺省情况下level为level-2.

    在网络运行的过程中, 改变ISIS设备的level可能会导致ISIS重启并可能会造成ISIS邻居断连, 建议在配置ISIS时就完成设备level的配置.

  4. 路由汇总(isis视图下)

    summary ip-address mask
    

    路由汇总的掩码不能用简写.

  5. 进入接口视图, 使能ISIS协议:

    [Huawei-g0/0/1]isis enable [process-id]
    

    配置后ISIS将通过该接口建立邻居、扩散LSP报文.

  6. 配置接口Level级别:

    [Huawei-g0/0/1]isis circuit-level [level-1|level-2|level-1-2]
    

    缺省情况下, 接口的level级别为level-1-2, 两台level-1-2在建立邻居关系时, 默认会建立level-1和level-2邻居关系(level-1-2), 如果希望只建立level-1或level-2邻居关系, 可通过修改接口的level级别实现.

  7. 设置接口网络类型为P2P:

    [Huawei-g0/0/1]isis circuit-type p2p
    

    缺省情况下, 接口网络类型根据物理接口决定.

    使用该命令将广播网接口模拟成P2P接口时,接口发送Hello报文的间隔时间、宣告邻居失效前IS-IS没有收到的邻居Hello报文数目、点到点链路上LSP报文的重传间隔时间以及1S-IS各种认证均恢复为缺省配置,而DIS优先级、DIS名称、 广播网络上发送CSNP报文的间隔时间等配置均失效

  8. 恢复接口的缺省网络类型:

    [Huawei-g0/0/1]undo isis circuit-type
    

    使用该命令恢复接口的缺省网络类型时,接口发送Hello报文的间隔时间、宣告邻居失效前IS-IS没有收到的邻居Hello报文数目、点到点链路上LSP报文的重传间隔时间、IS-IS各种认证、 DIS 优先级和广播网络上发送CSNP报文的间隔时间均恢复为缺省配置

  9. 修改接口的DIS优先级(需要先配置net地址)

    [Huawei-g0/0/1]isis dis-priority priority [level-1|level-2]
    

    该命令用来指定挑选对于层次的DIS是的接口优先级.缺省情况下, IS-IS接口DIS优先级为64.

  10. 配置ATT置位(ATT永远只会和L-1的LSP有关系):

    attached-bit advertise always
    

    无视ATT置位条件, 永远置位ATT

    永不置位ATT:

    attached-bit advertise always
    
  11. 路由渗透(在L-1-2设备上isis视图下配置):

    import-route isis level-1 into level-2
    

    命令的形式像ospf的路由引入, 但是这是isis的特殊命令, 表示需要将L2转换成L1进行路由渗透(路由泄露).

  12. 修改设备开销模式:

    isis cost-style [narrow|wide|compatible]
    

    如果需要修改开销值模式, 需要全网设备都修改.

  13. 修改接口开销值:

    isis cost cost
    

    注意不同开销模式的开销值取值范围.

  14. 接口认证配置:

    isis authentication-mode simple|md5|hmac|keychain plain|cipher password [level-1|level-2|send-only]
    

    未在结尾加上层级默认针对L1和L2的IIH报文.

    send-only: 只对发送的报文添加认证信息, 接收时无需认证.

  15. 区域认证配置:

    area-authentication-mode simple|md5|hmac|keychain plain|cipher password [all-send-only|snp-packet {authentication-avoid|send-only}]
    

    表示对L-1的SNP和LSP报文进行认证.

    all-send-only: 发送的SNP和LSP报文都会检查认证信息, 收到的SNP和LSP可以不检查认证.

    snp-packet authentication-avoid: LSP报文收发检查认证, SNP收发检查认证.

    snp-packet send-only: LSP和SNP发送携带认证信息, 但收到LSP检查认证, SNP不检查.

  16. 路由域认证配置:

    domain-authentication-mode simple|md5|hmac|keychain plain|cipher password []
    
  17. 快速扩散配置(isis视图下):

    flash-flood
    

8.2 查看命令

  1. 查看邻居:

    dis isis peer [verbose]
    

    verbose可以查看详细信息

  2. 查看设备上的LSP信息:

    dis isis lsdb [net]
    
  3. 查看ISIS进程:

    display current-configuration configuration  isis
    
  4. 查看接口isis接口运行状态及角色

    display isis interface [verbose]
    

小问题

  1. OSPF的LSU一定需要LSAck的回复进行确认吗?

    不一定, 当广播里面出现多台设备(DR BDR DRouter), DRouter设备向DR设备发送的LSU更新消息是不需要DR进行回复(LSAck)的, DR后续需要在整个网络中通告自己LSDB的链路状态信息, 若DRouter发现通告的信息没有自己的链路状态信息, 那么DRouter会重新向DR发送LSU.

    ISIS的广播网络LSDB同步类似:

    设备通过DIS发送的CSNP对比自己的LSDB确认DIS是否收到了自己的LSP信息, 不需要额外通过报文进行确认.

posted @ 2022-11-09 22:38  Qurare  阅读(784)  评论(0编辑  收藏  举报