88584339_p0 1440.jpg

1. Intermediate System to Intermediate(中间系统到中间系统)特征


  • 与 OSPF 一样,也是采用 SPF 算法(迪杰斯特拉算法 Dijkstra),基于 IGP 协议、链路状态的路由协议
  • 采用「TLV」结构,扩展性好
    • 对 IPv6 的支持不需要对协议做大改动,只需要扩展新的 TLV 或 子TLV 就可以支持新的协议和特性
    • 支持 IPv6、TM、MT 等协议和特性
  • 原始 ISIS 不支持 IP 地址,改进后既支持[CLNP 也支持 IP](集成化 ISIS)
  • 集成 ISIS 可以支持纯 CLNP 网络或者纯 IP 网络,或者运行 CLNP 和 IP 的双重网络
  • ISIS 是 ISO 定义 OSI 协议栈中的无连接网络服务「CLNS」,用于动态路由数据包。由三个协议构成
    • CLNP:无连接网络协议,是 OSI 传输层服务(协议栈)。类似于 IP 协议栈的 TCP/IP 传输层服务(为 TCP/IP 传输层服务)
    • ISIS:中间系统(路由器)间的路由协议。类似于 IP 中的 OSPF
    • ESIS:边界到中间系统的协议。类似于 IP 中的 ARP、IGMP(RD)等
  • ISIS 通过「MAC 地址」标识邻居
  • ISIS Hello time 和 Dead Time 不一致不会影响邻居的建立
  • ISIS 没有内外部路由区分,优先级都为「15」
  • ISIS 在 MA 中通过目的组播 MAC 地址交互协议报文
    • Level-1: 0180-C200-0014
    • Level-2: 0180-C200-0015
  • 默认级别是 Level-1/2,Level-1 和 Level-2 分别采用 SPF 算法,分别生成最短路径树 SPT
  • ISIS 是「基于设备」来划分区域的,每个链路可以属于不同的区域,单个区域没有骨干和非骨干的概念
  • ISIS 只支持 Broadcast 和 P2P(PPP、HDLC等)两种网络类型,P2P 采用 240 TLV
    • 在 NBMA 等特殊环境下,可以通过创建子接口支持 P2P 的网络类型
  • ISIS 默认情况下,引入的 Metric = 64、内部 Metric = 10。如果修改 Cost-style 为 Wide,引入 Metric = 0、内部 Metric = 10
  • ISIS 的 IIH 每「10s」周期发送,Holding 时间为「30s(IIH的3倍关系)」。IIH 时间或 Holding 时间与邻居不一致,不会影响邻居建立,会自动协商(以周期时间小的为主)
  • ISIS 只能在接口下进行路由的宣告
  • 区域扁平化、收敛极快、承载庞大,一般应用于大型网络,承载 BGP 协议
  • P2P 网络下,设备通告每条 LSP 都会生成对应的 SRM 值,只有收到对应的 PSNP 后才会进行撤销;当设备收到 LSP 时,会为每条 LSP 生成对应 SSN,表示需要回复对应的 PSNP
  • ISIS 在网络设计时必须保证 Level-2 路由器是连续的「不能被分割,因为没有 Virtual Link」;保证所支持的多个路由协议是连续的

    2. OSI 与 IETF 术语对比


image.png

缩略语 OSI 术语(ISIS) ISIS 术语特性 IETF 术语(OSPF)
IS(Intermediate System) 中间系统 / 路由器(Router)
ES(End System) 末端区域 / 终端设备(Host)
Sys ID(System ID) System ID / Router ID
DIS(Designated Intermediate System) 指定中间系统(DIS) / 指定路由器(DR)
IIH(ISIS Hello PDU) Hello Message / Hello Message
LSP(Link State PDU) 链路状态协议数据单元(LSP)
- 是单独存在的报文,作用等同于 OSPF 的 LSA,但是按报文来说等同于 OSPF 的 LSU
- MA 网络中,LSP 没有确认机制,但是会通过收到的 CSNP 消息中查看是否有自己发送的 LSP 进行隐式确认(如果有自己发送的 LSP,说明自己发送的 LSP 对端已经收到,所以相当于确认)
链路状态通告(LSA)
CSNP(Complete Sequence Number PDU) 完全序列号协议数据单元(CSNP)
- 只有 DIS 才会发送 CSNP 消息
数据库描述(DD)
PSNP(Partial Sequence Number PDU) 部分序列号协议数据单元(PSNP)
- 在广播类型中只是用于请求(等同于 OSPF 中的 LSR)
- 在 P2P 类型中用于请求和确认(等同于 OSPF 中的 LSR/LSAck)
链路状态请求(LSR)
链路状态确认(LSAck)

3. ISIS 地址结构


image.png

1)NSAP(网络服务访问点)

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

    • IDP(AFI 必须携带,IDI 可以省略)
      • AFI:用来表示地址分配机构和地址格式
      • IDI:用来标识域
    • DSP(System ID 和 SEL 必须携带,High Order DSP 可以省略)
      • High Order DSP:用来分隔区域
      • System ID:用来区分主机
      • SEL:用来表示服务类型

        2)NET 地址

  • NET 地址是一个特殊的 NSAP 地址(NET 地址中最后一个字段 SEL = 00,标识基于 IP)

  • 在设备上配置 ISIS 时,只需要考虑 NET 地址,没有 NET 地址 ISIS 无法运行
  • NET 地址包含了 Area ID + System ID + SEL(例如:49.0000.1111.1111.1111.00)
    • AFI + IDI + High Order DSP 相当于 OSPF 的 Area ID(最小 = 1Bit,最大 = 13Bit)
      • ISIS 私有 AFI 号:49
      • 不同区域之间只能建立 Level-2 邻居关系
      • 相同区域之间既可以建立 Level-1,也可以建立 Level-2 邻居关系
    • System ID 相当于 OSPF 的 Router ID,唯一标识一台主机或路由器(固定为 6Bit)
      • 必须在整个区域和域中的 Level-2 上保持唯一(不能冲突,否则会影响邻居建立)
    • SEL 相当于 TCP 的端口号,固定为 00 标识基于 IP
  • 一个设备至少有一个 NET 地址,最多配置 3 个 NET 地址
    • 配置多个 NET 地址时 System ID 必须相同
    • 在 Level-1 中建立连接时,Area ID 必须相同
    • 在 Level-2 中建立连接时,Area ID 可以不同

      4. ISIS 的特性


1)区域和路由器级别

接口下修改级别,需要进程级别下包括了接口的级别才有效(接口级别需要兼容进程级别)

  • ISIS 有两个 Area,分别对应两种级别
    • 非骨干区域(一般不用):对应 Level-1
    • 骨干区域(一般只用该区域):对应 Level-2
  • Level-1 路由器
    • Level-1 只负责区域内的路由,只能与相同区域的Level-1 或 Level-2 形成邻居关系
    • Level-1 不能学习到 Level-2 的路由,因为「Lelvel-1 是作为叶子」挂在到「Level-2」网络(默认)
  • Level-2 路由器
    • Level-2 负责区域间的路由,可以与同区域或不同区域的 Level-2 或 Level1/2 形成邻居关系
    • Level-2 的 LSDB 包含 ISIS Domain 的所有路由信息,Level-2 必须是连续的
    • Level-2 可以学习到 Level-1 的路由
  • Level-1/2 路由器

    • Level-1/2 同时维护两个级别的 LSBD
    • Level-1/2 既可以学习到 Level-1 也可以学习到 Level-2 的路由,相当于 OSPF 中的 ABR
      • 如果 Level-2 和 Level-1/2 设备之间相连,Level-1 和 Level-1/2 路由器建立连接,Level-2 会将 LSP 的 ATT = 1,Level-1 路由器收到后会自动生成一条默认路由指向 Level1/2 路由器

        2)路由器角色类型

        在 Broadcast 中高效的同步数据库

  • DIS(指定中间路由器)

    • Lelvel-1 和 Level-2 的 DIS 是分别选举的,可以为不同级别的 DIS 设置不同的优先级,默认优先级是「64」
    • 优先级为 0 时,也会参与选举,而且 DIS 支持「抢占」
      • DIS 是用来同步 LSDB 的,保证所有设备的 LSDB 都相同
      • 同一网段上同一级别的路由器会建立全互联(Full 状态)关系(包括所有非 DIS 设备,不区分邻居和邻接关系)
      • DIS 发送 Hello 时间间隔「10/3」秒(华为是 3s,所以 ISIS 中不需要备份 DIS),而其他非 DIS 设备「10s」发送一次 Hello 报文
    • DIS 会收集所有的 LSP,形成一个 CSNP。只有 DIS 才会「每 10s」发送一次 CSNP 消息
  • 伪节点
    • 由 DIS 来创建和更新伪节点
    • 伪节点负责生成伪节点 LSP,收集所有的 LSP 信息用来描述网络上的所有设备
  • DIS 的选举
    1. 比较优先级,越大越优(默认 64,优先级范围 0~127)
    2. 比较 MAC 地址,越大越优
  • DIS 在 Broadcast 网络中的作用:DIS 定期发送 CSNP 用于「同步和隐式确认」
  • ISIS-DIS 与 OSPF-DR 对比 | 类比点 | IDIS | DR | | —- | —- | —- | | 选举优先级 | 所有优先级都可以参与选举(默认优先级 64) | 优先级为 0,不参与选举(默认优先级 1) | | 选举等待时间 | 2 个 Hello 报文间隔 | 40s | | 备份 | / | 有 BDR | | 邻接关系 | 所有设备之间都是邻接关系 | DRohter 之间是 2-Way 关系,DRother 与 DR 和 BDR 之间是 Full 关系 | | 抢占性 | 支持抢占 | 不支持抢占 | | 作用 | 周期发送 CSNP,保障 MA 网络的 LSDB 同步(DIS 每 10/3 秒发送一次) | 主要减少 LSA 泛洪 |

3)认证

OSPF 的认证在 Header 中,而 ISIS 的认证是采用 TLV 10 挂在到报文中的

  • 支持的认证方式
    • 明文认证:将密码直接加入到报文中,安全性不高
    • MD5 认证:通过 MD5 计算后在加入到报文中,提高密码安全性
    • Keychian 认证:通过随时间变化的密码链表来提升网络安全性
  • 接口认证(影响邻居和所有级别的路由):只对 Level-1/2 的 Hello 报文进行认证
    1. 发送带认证 TLV 的 Hello 报文,并对收到的报文进行认证检查
    2. 发送带认证 TLV 的 Hello 报文,不对收到的报文进行认证检查(send-only)
  • 区域认证(只影响 Level-1 的路由):对 Level-1 的 SNP 和 LSP 报文进行认证(可以设置 LSP 和 SNP 分开认证)
    1. 发送带认证 TLV 的 LSP 报文,并且对收到的 LSP 报文进行认证检查
    2. 发送带认证 TLV 的 LSP 和 NSP 报文,并对收到的 LSP 和 NSP 报文进行认证检查
    3. 发送带认证 TLV 的 LSP 和 SNP 报文,不对收到的 LSP 和 SNP 报文进行认证检查
    4. 发送带认证 TLV 的 LSP 和 SNP 报文,只检查收到的 LSP 报文认证,不检查收到的 SNP 报文认证
  • 路由域认证(只影响 Level-2 的路由):对 Level-2 的 SNP 和 LSP 报文进行认证
    • 与区域认证一致,可以分别设置 LSP 和 SNP 的认证

      5. ISIS Message


1)Message Type

ISIS 有 3 种报文类型,9 种报文

  • IIH(Hello PDU):用于建立和维护邻居关系
    • Level-1 IIH
    • Level-2 IIH
    • P2P IIH(非广播网络使用)
  • LSP PDU:用于交互链路状态信息
    • Level-1 LSP
    • Level-2 LSP
  • SNP PDU:用于维护 LSDB 的完整性和同步(为摘要信息)

    • PSNP(完全序列号协议数据单元,用于同步 LSP)
      • Level-1 PSNP
      • Level-2 PSNP
    • CSNP(部分序列号协议数据单元,用于请求和确认 LSP)
      • Level-1 CSNP
      • Level-2 CSNP

        2)ISIS Message Header

        ISIS分为 “通用报文头部” 和 “专用报文头部”

  • ISIS 所有的报文结构都有相同的 PDU 格式

image.png

① Generic Message Header

image.png
Generic Message Header 格式解析

  • Intradomain Routeing Protocol Discriminator:域内路由选择协议鉴别符
  • Length Indicator:ISIS 头部报文长度
  • Version/Protocol ID Extension:版本/协议扩展标识符
  • ID Length:NSAP 地址或 NET 中 System ID 的长度
  • PDU Type:PDU类型
    • 15 = L1 Hello IIH
    • 16 = L2 Hello IIH
    • 17 = P2P Hello IIH
    • 18 = L1 LSP
    • 20 = L2 LSP
    • 24 = L1 CSNP
    • 25 = L2 CSNP
    • 26 = L1 PSNP
    • 27 = L2 PSNP
  • Version:版本号
  • Maximum Area Address:最大支持的区域个数(最大 NET 地址数量)

    ② TLV 结构

    TLV = CLV:Type-Length-Value(类型-长度-值) = Code-Length-Value(编码-长度-值)

  • 报文中的可变长字段部分是由多个三元组组成的

image.png

  • TLV Code 编码对应PDU类型

image.png

3)IIH Message

用于邻居发现、协商参数并建立邻居关系,收敛完成后用于保活,与 OSPF 相同,通过 Hello 包交互并协商各种参数(Level-1/Level-2、Hold Time、网络类型、支持协议、区域号、系统ID、PDU 长度、接口 IP 等)

  • Broadcast 网络中 Level-1 使用目的组播 MAC(0180-C200-0014)交互报文
  • Broadcast 网络中 Level-2 使用目的组播 MAC(0180-C200-0015)交互报文
  • ISIS Hello time 和 Dead Time 不一致不会影响邻居的建立
  • 非广播网络中则使用 P2P IIH 交互 Hello 报文。P2P IIH 中与 OSPF 的 DR 一样,不需要选举 DIS,所以没有 DIS(伪节点)字段

    ① Broadcast IIH Message(Levle-1 and Level-2)

    image.png
    Broadcast IIH Message 格式解析

  • Reserved/Circuit Type:级别类型

    • 01 = Level-1
    • 10 = Level-2
    • 11 = Level-1/2
  • Source ID:发送 Hello 报文的设备 System ID
  • Holding Time:死亡时间,默认30s(是 Hello Time 的三倍)
  • PDU Length:报文总长度,由通用头部长度 + IIH 报文长度
  • Priority:优先级,用于选举 DIS,越大越优先,默认「64」
  • LAN ID:DIS 和伪节点的 System ID

    ② P2P IIH Messgae

    image.png
    P2P IIH Message 格式解析

  • Reserved/Circuit Type:级别类型

    • 01 = Level-1
    • 10 = Level-2
    • 11 = Level-1/2
  • Source ID:发送 Hello 报文的设备 System ID
  • Holding Time:死亡时间,默认30s(是 Hello Time 的三倍)
  • PDU Length:报文总长度,由通用头部长度 + IIH 报文长度
  • Local Circuit ID:本地链路 ID,用于标识不同链路,便于区分拓扑

    4)LSP PDU Message(Level-1 and Level-2)

    Level-1 和 Level-2 的 LSP 报文格式相同

  • LSP 分为实节点 LSP 和伪节点 LSP(伪节点 LSP 只存在广播链路)。实节点 LSP 相当于 OSPF 的 LSA(LSU),伪节点 LSP 相当于 OSPF 的 Type 2 LSA

    • Level-1 LSP 由 Level-1 路由器传送
    • Level-2 LSP 由 Level-2 路由器传送
    • Level-1/2 路由器既可以传送 Level-1 和 Level-2 的 LSP
  • LSP 中包含了两个重要字段
    • ATT 字段:用于标识 L1/2 路由器告知 L1 路由器自动生成指向 L1/2 路由器的默认路由
    • IS-Type 字段:用来表示生成此 LSP 的 ISIS 类型是 Level-1 还是 Level-2
  • 与 OSPF 不同,ISIS 的 LSP 刷新时间是倒计时

image.png
LSP PDU Message 格式解析

  • PDU Length:LSP PDU的总长度
  • Remaining Lifetime:LSP的剩余生存时间
  • LSP ID:由 System ID、DIS ID 和 LSP 分片后的编号组成
  • Sequency Number:LSP的序列号
  • Checksum:LSP的校验和
  • P(Partition Repair):只在 L2 LSP中有效,表示是否支持自动修复区域分割
  • ATT(Attachment):由Level-1-2路由器产生,表明是否与其他区域相连
    • Default:缺省度量
    • Delay:时延度量
    • Expense:代价度量
    • Error:差错度量
  • OL(LSDB Overload):过载标志位,当路由器内存不足时,自动下发该字段为 1 的 LSP
  • IS Type: 生产 LSP 的路由器角色类型

    5)SNP PDU Message

    ① CSNP(Levle-1 and Level-2)

    用于同步 LSP,相当于 OSPF 的 DD 报文

  • CSNP 包括 LSDB 中所有 LSP 的[摘要信息],可以在相邻路由器间保持 LSDB 的同步

  • CSNP 在 P2P 下只发送一次,在广播下每「10s」周期性由 DIS 发

image.png
CSNP PDU Message 格式解析

  • PDU Length:CSNP PDU 的长度
  • Source ID:生成该 CSNP 的 System ID
  • Start LSP ID:CSNP 报文中第一个 LSP 的 ID 值
  • End LSP ID:CSNP 报文中最后一个 LSP 的 ID 值

    ② PSNP(Levle-1 and Level-2)

    PSNP 包含部分 LSDB 中的 LSP 摘要信息,能够对 LSP 进行请求和确认。在 Broadcast 中相当于 OSPF 的 LSR(请求作用),在 P2P 中相当于 OSPF 的 LSR 和 LSAck(请求和确认作用)

image.png
PSNP PDU Message 格式解析

  • PDU Length:CSNP PDU 的长度
  • Source ID:生成该 CSNP 的 System ID

    6. 路由计算


1)建立邻居关系

ISIS 两个邻居路由器只需要交互 IIH 就认为形成了邻接关系。而 OSPF 中,两台路由器交互了 Hello(2-Way) 后只形成邻居关系,只有交换完成 LSA 才会进入 Full 状态,标识为邻接关系

① 建立邻居关系的条件

  • 建立条件
    • 相同的网络类型
    • 同一网段
    • 同一层次
    • 整个邻居ISIS区域中,System ID不能冲突
    • 相连邻居的接口不能为被动端口
    • 认证正确
    • 相同的MTU值
  • Level-1 级别邻居关系的建立条件
    • Area ID 需要一致
    • Level-1 路由器可以和 Level-1 路由器建立 Level-1 邻居关系
    • Level-1 路由器可以和 Level-1/2 路由器建立 Level-1 邻居关系
  • Level-2 级别邻居关系的建立条件
    • Area ID 可以不一致
    • Level-2 路由器可以和 Level-2 路由器建立 Level-2 邻居关系
    • Level-2 路由器可以和 Level-1/2 路由器建立 Level-2 邻居关系
  • 在 P2P 中,System ID 长度要一致,最大区域地址要相同

    ② Broadcast 网络的邻居关系建立

  • 因为广播网络需要选举 DIS,在邻居关系建立后,路由器会等待两个 Hello 报文间隔,进行选举 DIS

  • 在广播网络的 LSP 中,倒数第三位 = 非0,表示是伪节点 DIS。最后一位 = 1,表示是分片 LSP(1 条 LSP 无法承载,所以分片)
  • 三次握手(3-Way)建立过程,包含 6 TLV(有邻居的 MAC 地址)

image.png

  1. RTA 发送广播 IIH,在 IIH 中添加上自己的 MAC 地址,报文中没有邻居的标识
  2. RTB 收到报文后,将自己的邻居状态标识为 Initialized 后,回复 IIH 时添加上邻居的 MAC 地址(标记出 RTA 是 RTB 的邻居)
  3. RTA 收到报文后,将自己与 RTB 的邻居状态标识为 Up,向 RTB 回复 IIH 时添加上邻居的 MAC 地址(标记出 RTB 是 RTA 的邻居)
  4. RTB 收到报文后,将自己与 RTA 的邻居状态标识为 Up,然后成功建立邻居关系

    ③ P2P 网络的邻居关系建立

  • P2P 链路上,邻居关系的建立不同于广播链路,会分为两次握手和三次握手机制(默认是三次握手机制,并且兼容两次握手机制)
  • 两次握手存在的问题:与对端的链路单方向 Down,设备之间邻居关系能正常建立,但会影响 SPF 算法,导致数据包仍然会发往 Down 的链路
  • 两次握手(2-Way)建立过程

image.png

  • 只要设备收到对端发来的 Hello 报文,就将接口 UP,表示建立邻居关系(广播网络也适用)
    • 三次握手(3-Way)建立过程,包含 240 TLV(有邻居的 System ID)

image.png

  1. RTA 发送广播 IIH,报文中没有邻居的标识
  2. RTB 收到报文后,将自己的邻居状态标识为 Initialized 后,向 RTA 回复 IIH 时添加上邻居的 System ID(标记出 RTA 是 RTB 的邻居)
  3. RTA 收到报文后,将自己与 RTB 的邻居状态标识为 Up,向 RTB 回复 IIH 时添加上邻居的 System ID(标记出 RTB 是 RTA 的邻居)
  4. RTB 收到报文后,将自己与 RTA 的邻居状态标识为 Up,然后成功建立邻居关系

    2)LSP 交互过程和同步

    链路信息交换与 OSPF 不同,ISIS 交互链路状态的基本载体是 LSP(链路状态协议数据单元)。LSP 是单独存在的报文,而 OSPF 的 LSA 是由 LSU 承载的

① 触发 LSP 的条件

  • LSP 的正常刷新时间间隔「900s(15min)」、老化时间「1200s(20min)」、LSP 重传时间「5s」。当一条 LSP 到达 1200s,进行老化后,还需要等待 60s 的零老化时延
  • 什么情况下会触发新的 LSP

    • 邻居 Up 或 Down
    • IS-IS 相关接口 Up 或 Down
    • 引入的 IP 路由发生变化
    • 区域间的 IP 路由发生变化
    • 接口被赋了新的 metric 值
    • 周期性更新

      ② Broadcast DIS 同步和 LSP 新旧比较

  • DIS 会收集所有 LSP 并每隔 10s 泛洪 CSNP,每个设备收到 CSNP 后对比自身的 LSDB 是否完整,如果发现缺少了某条 LSP,会发送 PNSP 用于请求该条 LSP,DIS 收到后会响应 LSP,对端收到 LSP 不需要确认(因为 DIS 会定期泛洪 CSNP,相当于[隐式确认]

  • 同步过程

image.png

  1. C 首先发送 Hello 报文,与该广播域中的路由器建立邻居关系
  2. 建立邻居关系之后,C 等待 LSP 刷新定时器超时,然后将自己的 LSP 发往组播地址(Level-1:0180-C200-0014;Level-2:0180-C200-0015)。这样网络上所有的邻居都将收到该 LSP
  3. DIS 会把收到 C 的 LSP 加入到 LSDB 中,并等待 CSNP 报文定时器超时发送 CSNP 报文,进行该网络内的 LSDB 同步
  4. C 收到 DIS 发来的 CSNP 报文,对比自己的 LSDB,然后向 DIS 发送 PSNP 报文请求自己没有的 LSP
  5. DIS 收到该 PSNP 报文请求后向 C 发送对应的 LSP 进行 LSDB 的同步(不需要确认,等待下一次 CSNP 进行隐式确认)
    • LSP 新旧比较
  • DIS 接收到 LSP,如果 LSDB 中没有对应的记录。则加入到 LSDB,并组播更新最新 LSDB
  • 比较 LSP 中剩余老化时间是否为 0 ,如果为 0 ,该 LSP 为最优
  • 比较 LSP 中的 Sequence(越大越新)
    • 若收到的 LSP Sequence > 本地 LSP Sequence,则替换为新的报文,并组播更新最新 LSDB
    • 若收到的 LSP Sequence < 本地 LSP Sequence,则向入端口发送本地 LSP 报文
  • 若两个 Sequence 相等,就比较 Remaining Lifetime(越小越新)
    • 若收到的 LSP Remaining Lifetime = 0,则替换为新的报文,并组播更新最新的 LSDB
    • 若收到的 LSP Remaining Lifetime ≠ 0,则向入端口发送本地 LSP 报文
  • 若 Remaining Lifetime 相等,就比较 Checksum(越大越新)
    • 若收到的 LSP Checksum > 本地 LSP Checksum ,则替换为新的报文,并组播更新最新的 LSDB 内容
    • 若收到的 LSP Checksum < 本地 LSP Checksum ,则向入端口发送本地 LSP 报文
  • 若序列号、剩余寿命、校验和都相等,则不转发该报文

    ③ P2P DIS 同步和 LSP 新旧比较

  • 建立邻居关系后就开始发送 CSNP,对端响应 PSNP 请求索取相应的 LSP
  • 本端发送请求的 LSP 后并启动 LSP 重传定时器,等待对端响应 PSNP(如果定时器超时也为收到对端的 PSNP,则重新发送,直到收到对端的确认 PSNP)
  • 现实抓包中,建立邻居关系后,相互发送 LSP 进行同步,通过 PSNP 确认收到的 LSP,然后相互发送一次 CSNP[P2P 唯一发送一次]
  • 同步过程

image.png

  1. A 先与 B 建立邻居关系
  2. 建立邻居关系之后,A 与 B 会先发送 CSNP 给对端设备。如果对端的 LSDB 与 CSNP 没有同步,则发送 PSNP 请求索取相应的 LSP
  3. B 向 A 索取相应的 LSP。A 发送 B 请求的 LSP 的同时启动 LSP 重传定时器,并等待 B 发送的 PSNP 作为收到 LSP 的确认
  4. 如果在接口 LSP 重传定时器超时后,A 还没有收到 B 发送的 PSNP 报文作为应答,则重新发送该 LSP 直至收到 PSNP 报文
    • LSP 新旧比较
  • 比较 LSP 中剩余老化时间是否为 0 ,如果为 0 ,该 LSP 为最优
  • 比较 LSP 中的 Sequence(越大越新)
    • 若收到的 LSP Sequence > 本地 LSP Sequence,则替换为新的报文,并组播更新最新 LSDB
    • 若收到的 LSP Sequence < 本地 LSP Sequence,则向入端口发送本地 LSP 报文
  • 若两个 Sequence 相等,就比较 Remaining Lifetime(越小越新)
    • 若收到的 LSP Remaining Lifetime = 0,则存入到 LSDB 中并发送 PSNP 报文来确认收到此 LSP
    • 若收到的 LSP Remaining Lifetime ≠ 0,则向对方发送本地 LSP 报文,然后等待对方回复的 PSNP 作为确认
  • 若两个 Remaining Lifetime 相等,就比较 Checksum(越大越新)
    • 若收到的 LSP Checksum > 本地 LSP Checksum,则存入到 LSDB 中并发送 PSNP 报文来确认收到此 LSP
    • 若收到的 LSP Checksum < 本地 LSP Checksum ,则向对方发送本地 LSP 报文,然后等待对方回复的 PSNP 作为确认
  • 若序列号、剩余寿命、 Checksum 都相等,则不转发该报文

    3)执行 SPF 路由计算

  • 以自身为根,计算出到达整个 ISIS 中(目标网络)的最短路径树

    7. 增强特性


1)区域间路由

  • Level-1/2 设备使用 ATT = 1 字段标识 Level-1 设备自动生成默认路由
  • Level-1/2 设备与对端在同一区域是不会向 Level-1 设备下放默认路由。必须是不同区域,Level-1/2 设备才会将 ATT 字段置位

    • Level-1/2 设备会把 Level-1 的明细路由以叶子节点方式挂载在 Level-2 的 LSP 上,并处于 Level-2 的 LSDB 中(Level-2 设备通过 SPF 计算后,可以计算出到达 Level-1 设备的明细路由)

      2)路由渗透

      Level-1/2 路由器将 Level-2 的路由信息渗透到 Level-1,可以避免 Level-1 中的次优路径问题和防环

  • Level-1 设备只会计算到达 Level-1/2 设备的开销,无法知道全局开销,所以造成次优路径

  • 使用 “**U-bit**“ 位用于防止渗透后产生环路

    • U-bit = 1:不会再将 Level-2 渗透到 Level-1 的路由在传递到原始区域

      3)路由过载

  • 使用 “OL-bit” 标识过载状态。标志为过载状态后,其他设备在进行 SPF 计算时不会使用该设备作为转发,只计算该设备上的直连路由

    • 只有对去往该设备直连的流量才会把数据包发往该设备
    • 只针对于过路路由
  • 一般用在承载 BGP 的核心 ISIS
  • 除了设备异常或 CPU 占用过高自动进入过载状态,也可以手动配置进入过载状态

    4)Wide Metric

    ISIS 默认情况下,引入的 Metric = 64、内部 Metric = 10。如果修改 Cost-style 为 Wide,引入 Metric = 0、内部 Metric = 10

  • Wide 接口开销扩展到 16777215、路由开销扩展到 4261412864

  • 只有宽度量值才能识别 Tag,窄度量值不识别 Tag 标签(窄度量分为默认度量、延时度量、差错度量、开销度量)
    • 窄度量默认 1字节
      • 7bit=up/down
      • 6bit=内部和外部度量(默认内部)
      • 5-0bit=用于标识度量值,所以导致接口可以配置的最大开销63,链路上整体开销最大1024
  • 窄度量 Narrow
    • 2 TLV:用来携带邻居信息
    • 128 TLV:用来携带域内 ISIS 路由信息
    • 130 TLV:用来携带域外 ISIS 路由信息
  • 宽度量 Wide
    • 22 TLV:用来携带邻居信息
    • 135 TLV:用来携带 ISIS 路由信息,并可以携带 Sub TLV
  • 发送和接收的类型 | 开销类型 | 接收 | 发送 | | —- | —- | —- | | narrow(窄度量模式) | narrow | narrow | | narrow-compatible(窄度量兼容模式) | narrow 或 wide | narrow | | compatible(完全兼容模式) | narrow 或 wide | narrow 或 wide | | wide-compatible(宽度量兼容模式) | narrow 或 wide | wide | | wide(宽度量模式) | wide | wide |

5)网络收敛特性

  • 增量最短路径优先级算法 I-SPF(针对节点)
    • 当网络拓扑发生变化时,只针对受影响的节点进行路由计算,而不对所有节点重新进行 Full-SPF 计算,从而加快路由计算时延。除了第一次计算时需要计算全部节点外,每次只计算受到影响的节点
      • 对 OSPF 来说:P2P、Transnet、Virtual Link 发生变化都会运行 I-SPF 算法
      • 对 ISIS 来说:只有 NET 地址变化才会运行 I-SPF 算法
  • 部分路由计算RPC(针对路由,在 I-SPF 之上)
    • 当网络上路由发生变化时,只针对发生变化的路由进行重新计算(只针对叶子进行计算,因为叶子是挂载到骨干上的)
      • 对 OSPF 来说:只有 Stub 节点发生变化才会运行 RPC 算法
      • 对 ISIS 来说:只要 NET 地址没有发送变化都只会允许 RPC 算法
    • PRC的原理与 I-SPF 相同,都是只对发生变化的路由进行重新计算。不同的是,PRC 不需要计算节点路径,而是根据 I-SPF 算出来的 SPT 来更新路由。在路由计算中,叶子代表路由,节点则代表路由器。如果 I-SPF 计算后的 SPT 改变,PRC 会只处理那个变化的节点上的所有叶子;如果经过 I-SPF 计算后的 SPT 并没有变化,则 PRC 只处理变化的叶子信息
  • 智能定时器
    • 当网络频繁发送变化时,会消耗系统大量的 CPU 资源进行 SPF、LSP 计算。可以自动延长定时器间隔时间(一般缺省为 5 秒),降低对其他业务的影响
    • 该定时器首次超时是一个固定的时间。如果在定时器超时前,又有触发定时器的事件发生,则该定时器下一次的超时时间会增加
      • SPF 计算智能定时器
      • LSP 生成智能定时器
  • 快速扩散
    • 边学边发,减轻大量 LSP 一起发送对网络设备带来冲击。在路由计算之前,先将小于指定数目的 LSP 扩散出去,加快 LSDB 的同步过程
    • 缺省情况下,接口发送LSP报文最小间隔时间 50ms,最大发送条目 10
  • 优先级收敛

    • 匹配指定的 IP 前缀路由,让特定的路由优先级较高,使得这些路由快速收敛。从而使关键业务受到的影响减小
      • Critical:最高级别
      • High:高级别
      • Medium:中等级别,32位主机默认
      • low:低级别,其他路由默认

        6)等价路由权重值

  • 当网络中有多条冗余链路时,可能会出现多条等价路由(到达某一目的网段有多条等开销路径)

  • 可以通过修改每条等价路由权重值(优先级),在不修改接口开销的情况下,明确指定路由的下一跳,使得该路由被优选

    8. LSP 分片扩展


1)LSP 工作原理

  • 当 ISIS 发布的报文 PDU 信息过大,会生成 LSP 分片用来携带更多的 ISIS 信息。LSP 分片由 LSP ID 中的 LSP Number 字段标识,最多产生 256 个 LSP 分片(字段的长度是 1 字节)
    • 初始系统(Originating System):实际运行 ISIS 协议的路由器(真正的 ISIS 进程),允许一个单独的 ISIS 进程像多个虚拟路由器一样发布 LSP
    • 系统 ID(Normal System-ID):初始系统的系统 ID,每个系统 ID 都标识一个系统
    • 虚拟系统(Virtual System):由附加系统 ID 标识的系统,用来生成扩展 LSP 分片,这些分片在其 LSP ID 中携带附加系统 ID
    • 附加系统 ID(Additional System-ID):虚拟系统的系统 ID,由网络管理器统一分配
    • 24 号 TLV(IS Alias ID TLV):表示初始系统与虚拟系统的关系
  • 每个系统 ID 都标识一个系统,每个系统都最多可生成 256 个 LSP 分片。通过增加附加系统 ID,可以最多配置 50 个虚拟系统,从而使得 IS-IS 进程最多可生成 13056 个LSP分片

    • 使能分片扩展功能之后,如果存在由于报文装满而丢失的信息,系统会提醒重启 ISIS
    • 重启之后,初始系统会尽最大能力装载路由信息,装不下的信息将放入虚拟系统的 LSP 中发送出去,并通过 24 号 TLV 来告知其他路由器此虚拟系统和自己的关系

      2)LSP 分片工作模式

      image.png

      ① Mode-1

      用于网络中的有路由器不支持LSP分片扩展特性

  • 虚拟系统参与路由 SPF 计算,初始系统发布的 LSP 中携带了到每个虚拟系统的链路信息。虚拟系统发布的 LSP 也包含到初始系统的链路信息(在网络中虚拟系统看起来与初始系统相连的真实路由器是一样的)。是为了兼容不支持分片扩展的老版本所做的一个过渡模式。在老版本中,IS-IS 无法识别 IS Alias ID TLV,所以虚拟系统的 LSP 必须表现的像一个普通 IS-IS 发出的报文

    • RouterB 是不支持分片扩展的路由器,RouterA 设置为 Mode-1 模式的分片扩展
    • RouterA1 和 RouterA2 是 RouterA 的虚拟系统,RouterA 将一部分路由信息放入 RouterA1 和 RouterA2 的 LSP 报文中向外发送
    • RouterB 收到 RouterA、RouterA1 和 RouterA2 的报文时,认为对端有三台独立的路由器,并进行正常的路由计算
    • 同时 RouterA 到 RouterA1 和 RouterA2 的开销都是 0,所以,RouterB 到 RouterA 的路由开销值与 RouterB 到 RouterA1 和 RouterA2 路由开销值都相等
  • 注意:

    • 虚拟系统的 LSP 中包含和原 LSP 中相同的区域地址和过载标志位。如果还有其它特性的 TLV,也必须保持一致
    • 虚拟系统所携带的邻居信息指向初始系统,Metric 为最大值减 1;初始系统所携带的邻居信息指向虚拟系统,Metric必须为0。这样就保证了其它路由器在进行路由计算的时候,虚拟系统一定会成为初始系统的下游节点

      ② Mode-2

      用于网络中所有路由器都支持LSP分片扩展特性

  • 虚拟系统不参与路由 SPF 计算,网络中所有路由器都知道虚拟系统生成的 LSP 实际属于初始系统。在该模式下工作的 IS-IS,可以识别 IS Alias ID TLV 的内容,并作为计算 SPT 和路由的依据

    • RouterB 是支持分片扩展的路由器,RouterA 设置为 Mode-2 模式的分片扩展
    • RouterA1 和 RouterA2 是 RouterA 的虚拟系统,RouterA 将一部分路由信息放入到 RouterA1 和 RouterA 2的 LSP 报文中向外发送
    • 当RouterB 收到 RouterA1 和 RouterA2 的 LSP 时,通过 IS Alias ID TLV 知道它们的初始系统是 RouterA,则把 RouterA1、RouterA2 所发布的信息都视为 RouterA 的信息

      9. 路由过滤


  • 在引入外部路由时,先引入在进行过滤
    • 先做 Import
    • 在做 Filter-policy
  • Filter-Policy(过滤策略):运行完 SPF 算法,但不加入路由表,并不会过滤 LSP
    • Import:在 Normal 设备上过滤的是路由信息,如果在 L1/2 上使用,不仅会过滤路由信息,也会影响 L2 设备的路由
    • Export:在路由引入时使用才有效

      10. ISIS IPv6


新增了两个 TLV 实现对 IPv6 的支持

1)236 TLV(Reachability TLV)

  • 通过前缀、度量、标记等描述IPv6网络前缀的可达性。使用一个 X-bit 来区分 “内部” 和 “外部”

image.png

  • U(up/down): 标识这个前缀是否是从高 level 通告下来的(用来防环路)
  • X(external original): 标识这个前缀是否是从其他路由协议中引入过来的
  • S(subtlv present): 子 TLV 标识位(可选)

    2)232 TLV(Interface Address TLV)

  • 相当于IPv4中的 “IP Interface Address” TLV,只不过把原来的 32bit 的 IPv4 改为 128bit 的 IPv6

  • TLV232 跟 TLV132 相似,是直接从 132 映射过来的。132 最多支持 64 个 IPv4 地址,232 最多支持 16 个 IPv6 地址
  • 每个接口的地址长度变成 128bits
  • 在不同的 PDU 中,字段内容不同
    • IIH 中,只能包含发送 IIH 包的接口 Link-Local 地址
    • LSP 中,只能包含 IS 的 Non-Link-Local 地址(例如:GUA 地址)

image.png

11. ISIS IPv6 扩展内容


1)ST 单拓扑

  • ISIS 为所有协议维护相同的 SPT,IPv4 和 IPv6 的拓扑必须一致(共用一个拓扑)
  • 不足之处
    • ISIS 为 IPv4 和 IPv6 维护相同的 SPT,这意味着 IPv4 和 IPv6 的拓扑必须一致
    • IPv6 的路由信息是通过 IPv4 的拓扑计算的,如果不一致会导致转发层面出故障
  • 存在的问题
    • 不适合分离拓扑的网络部署
    • 部署不灵活,所有接口都必须同时运行 ISIS IPv4 和 ISIS IPv6,维护相同的拓扑
    • 不能使用 IPv4 区域来链接不同的 IPv6 区域,否则 IPv4 区域会丢弃 IPv6 的流量

image.png

2)MT 多拓扑

  • MT 可以使 ISIS 在一个路由域中维护多个拓扑,为 IPv4 和 IPv6 分别维护不同的拓扑
  • ISIS协议主要包括的方面:
    • 邻居的建立
    • 路由可达(Preix Reachable)和路由器可达(IS Reachable)的发布
    • SPF 计算和路由计算
  • 达到多拓扑的相互隔离,以上几个方面均要求携带 MT 参数,以满足要求
  • SPF 计算的路由计算在路由器内识别完成
  • 定义了 4种 TLV 分别满足多拓扑,实现了通用环境下 ISIS MT 的交互过程
    1. Compatible:兼容模式(兼容 IPv4 和 IPv6 拓扑),SFP 只在 IPv4(标准)拓扑上运行
    2. Enable-mt-spf:在兼容模式下开启 MT-SPT,SFP 只在 IPv6 拓扑上运行
    3. Standard:IPv6 的标准拓扑(单拓扑),必须保证所有链路支持一致的拓扑模式,IPv4 和 IPv6 的拓扑必须一致(共用一个拓扑)
    4. IPv6:IPv6 MT(多拓扑),链路可以配置成 IPv4 或 IPv6,SFP 都在各自的拓扑进行计算

image.png

12. 规划 ISIS


1)NET 地址规划

NET 格式: AA BBBB CCCC DDDD SSSS SSSS SSSS 00

  • Area ID = AA.BBBB.CCCC.DDDD
    • AA:地址格式标识符AFI(AFI=49的地址为OSI协议的私有地址)
    • BBBB :可以是国家编码,例如中国 0086
    • CCCC :可以是省编码,自己定义,例如辽宁省 0003
    • DDDD :可以是设备所在站点编码,自己定义,例如辽宁省大连站点 3821
  • System ID = SSSS.SSSS.SSSS
    • 业界通行的做法是通过设备 Loopback0 地址演绎,生成 System ID
  • NSEL 始终为 00

    2)分层分区域规划

  • 所有 ISIS 路由器都工作在 Backbone,Level-2 级别(首选)

  • 所有 ISIS 路由器都工作在同一个 Area

    3)Cost 规划

  • ISIS Cost 设计比较灵活

    • 可以根据链路物理带宽设计
    • Cost 的设计决定网络流量的走向
    • 所以除了考虑上述 2 个因素外,更重要的是考虑客户对网络流量走向的需求。这就要求在 Cost 设计前,要清楚不同端到端场景的流量走向
  • ISIS 有三种设置链路 Cost 值的方法:

    • 在接口视图下设置接口的 Cost 值
    • 在系统视图下设置 ISIS 实例下所有接口 Cost 值
    • 在系统视图下根据带宽自动计算 Cost 值

      4)安全性规划

  • ISIS 支持三种认证方式:接口认证、区域认证、域认证

  • 上述三种认证都支持简单密码和高密的 MD5 方式认证。高密的 MD5 认证方式具有更高的安全性(推荐高密的 MD5)

    5)可靠性规划(ISIS 快速收敛设计)

  • BFD For ISIS:链路故障快速检测

  • ISPF(Incremental SPF):加快路由收敛(缺省支持)
  • PRC(Partial Route Calculation):加快路由收敛(缺省支持)
  • LSP Fast Flooding :加快 LSDB 同步

    6)现网常见配置

    image.png