天天看点

ISIS协议与Quagga ISIS配置ISIS协议

ISIS协议

参考:

ISIS协议详解

华为-ISIS路由协议(原理+配置实操)

quagga手册 ISIS协议部分根据:RFC1195、RFC5308、ISO10589

协议-ISIS基础知识

ISIS基础知识——很详细

原理

IS-IS是一种链路状态路由协议,每一台路由器都会生成一个LSP,它是该路由器所有使能IS-IS协议接口的链路状态信息的集合。

  • 通过跟相邻设备建立IS-IS邻接关系,互相更新本地的LSDB,使LSDB与整个IS-IS网络其他设备的LSDB同步,
  • 然后根据LSDB运用SPF算法计算出IS-IS路由。如果此IS-IS路由是到目的地址的最优路由,则此路由会记录到IP路由表中,并指导报文的转发。

ISIS是ISO定义的OSI协议栈中**无连接网络服务CLNS(Connectionless Network Service)**的一部分,用于动态路由数据包。

CLNS由以下三个协议构成:

  • CLNP:类似TCP/IP中的IP协议。IP协议为TCP/IP传输层服务。CLNP为OSI传输层服务。
  • ISIS:中间系统的路由协议,类似于IP中的OSPF
  • ES-IS:主机系统与中间系统间的协议,就像IP中的ARP,ICMP等。

ISIS是封装在二层中的,这点与IP中的协议是不同的。IS-IS是在链路层上直接封装的路由协议,基于CLNS 构架,有节点概念 & 无接口概念,

拓扑结构与路由器类型

拓扑结构

  • IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构。
  • 一般来说:
    • 将Level-1路由器部署在非骨干区域
    • 将Level-2路由器部署在骨干区域
    • 每一个非骨干区域都通过Level-1-2路由器与骨干区域相连
  • IS-IS 的一个路由器的所有接口肯定在同一个区域

路由器类型

ISIS协议与Quagga ISIS配置ISIS协议
ISIS协议与Quagga ISIS配置ISIS协议

Level-1路由器

  • 负责区域内的路由
  • 只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系
  • 属于不同区域的Level-1路由器不能形成邻居关系
  • 只负责维护Level-1的链路状态数据库LSDB(本区域的路由信息)
  • 到本区域外的报文转发给最近的Level-1-2路由器

Level-2路由器

  • 负责区域间的路由
  • 可以与同一或者不同区域的Level-2路由器或者其它区域的Level-1-2路由器形成邻居关系
  • Level-2路由器维护一个Level-2的LSDB(包含区域间的路由信息)
  • 所有Level-2级别(即形成Level-2邻居关系)的路由器组成路由域的骨干网,负责在不同区域间通信
  • 路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性
  • Level-2级别的路由器才能直接与区域外的路由器交换数据报文

Level-1-2路由器

  • 同时属于Level-1和Level-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用于区域间路由
ISIS协议与Quagga ISIS配置ISIS协议

九种报文

  • Hello:用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)
    • Broadcast L1-Hello 用于建立Level-1 的邻居关系
    • Broadcast L2-Hello 用于建立Level-2 的邻居关系
    • P2P Hello:点到点网络的hello报文
  • LSP:(链路状态PDU)类似于OSPF的LSU(Link-state update),分为Level-1、Level-2,用于交换链路状态信息,触发更新或 15分钟周期更新
  • CSNP(完全序列号数据包)类似于OSPF的DD(Database Description Packets)报文,分为Level-1、Level-2,包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。
  • PSNP(部分序列号数据包)类似于OSPF的LSRequest或LSAck报文,分为Level-1、Level-2
ISIS协议与Quagga ISIS配置ISIS协议

邻居关系建立

网络类型

  • 广播网络
  • 点到点网络:
    • 2Way是属于两次握手,没有可靠性保证。只要收到邻接发送的IIH报文,并检测通过,维护邻居的状态为UP状态。
    • 3Way是属于三次握手,在点到点网络中使用3way的方式保证邻接建立的可靠性。

建立条件:

只有同一层次的相邻路由器才有可能成为邻居。

对于Level-1路由器来说,区域号必须一致。

链路两端IS-IS接口的网络类型必须一致。

链路两端IS-IS接口的地址必须处于同一网段。

ISIS邻居路由器的类型对形成邻接类型的规则

参考:

ISIS邻居路由器的类型对形成邻接类型的规则

形成邻接关系的规则:

  • Level-1 和 Level-2 路由器 一定不能形成邻居关系
  • Level-1或level-1-2的邻居是Level-2路由器 不管Area ID是否相同都能形成Level-2邻接关系
  • Level-1或level-1-2的邻居是Level-1路由器 只有Area ID相同才能形成Level-1邻接关系
  • 两台Level-1-2路由器之间 Area ID相同则为Level-1邻接;不同则为Level-2邻接关系

DIS(Designated Intermediate System)

在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS,在邻居关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。——类似于OSPF的DR,但没有BDR即备份的DIS。

作用:

  • 周期性10s发送CSNP报文,CSNP相当于DBD 接收PSNP请求,回复LSP应答(同时担当ACK确认)
  • 创建和更新伪节点(Pseudonodes)
  • 负责生成伪节点的LSP(Link state Protocol Data Unit),用来描述这个网络上有哪些网络设备。

hold time

用于设置邻居在收到 hello 数据包后认为此路由器可运行(启动)的时间长度。如果邻居在指定时间内没有收到另一个 hello 数据包,它会将此路由设备标记为不工作(关闭)。保持时间本身在 hello 数据包中公布。

在测试收敛时,如果停止某个容器,会导致对端的veth-pair也被删除,这对运行isis的容器似乎有较大影响:

  • isis都需要接口信息,配置再zebra和isis配置文件中,如果本机的接口也被删除,是不是不符合实际?

LSP交互

广播网络:

需要借助DIS。

  • 所有设备:向组播地址通告自己的LSP
  • **DIS:**收集LSP,并每隔10s发送一次CSNP。其中,CSNP报文中通告DIS设备中LSDB中所有LSP的摘要信息
  • 其他设备:收到DIS的CSNP报文后:
    • 查看在CNSP报文中是否包含自己的LSP,如果包含,说明DIS收到了自己发送的LSP;如果没有需要重传
    • 将CSNP中的摘要信息和本地的LSDB做对比,查看本地去缺少哪些LSP,后续通过PSNP报文向DIS请求自己缺少的LSP
  • DIS:收到PSNP报文后回复PSNP报文中请求的LSP

点对点网络:

  • 首先建立邻接关系。
  • 开始互相发送CSNP,在CSNP报文中包含本地LSBD中所有LSP的摘要信息。
  • 收到邻居发送的CSNP报文,需要将CSNP报文中的LSP摘要信息和自己的LSDB做对比,查看缺少的LSP,并通过PSNP报文请求缺少的LSP。
  • 收到PSNP请求后,回复LSP报文。
  • 收到LSP报文后回复PSNP确认接收到的LSP。

NET地址

概述

运行 IS-IS 协议的路由器必须有一个被称为 NET (Network Entity Title)的网络地址,NET 也称为网络实体名,可唯一标识一台路由器,长度为 8 至 20 字节,是可变长的,采用 16 进制写法,两位代表一个字节。

从下图可以看出:

  • area id是变长的,1-13字节,L2路由选择需要
  • system id是固定长度,6字节,L1路由选择需要
  • NET中的SEL总是为00

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0bZe2vdm-1629967347759)(images/ISIS协议.assets/image-20210806211949069.png)]

NET地址的分配规则

Area ID

  • 同一区域中所有节点的区域ID必须相同

System ID

  • 同一路由选择域中所有节点的系统ID长度必须相同
  • L2 IS的系统ID必须在路由选择域范围内唯一
  • L1 IS的系统ID必须在区域范围内唯一
  • 同一路由器上的多个NET的系统ID必须相同(似乎一个路由器可以最多配置3个NET)

配置NET地址的方法

一台路由器使用接口Loopback0的IP地址1.1.1.1作为Router ID,那么SystemID可以进行如下转换:

1、配置System ID

  • 补足3位:将IP地址1.1.1.1的每一部分都扩展为3位,不足3位的在前面补0:001.001.001.001
  • 4位分割:将扩展后的地址001.001.001.001重新划分为3部分,每部分由4位数字组成,得到的0010.0100.1001就是System ID

2、配置Area ID

  • 这台路由器属于area 1区域,则区域号设置为49.0001

3、拼凑NET地址

  • 由于NET的SEL总是00
  • 这台路由器的NET地址为:49.0001. 0010.0100.1001. 00

4、根据杨宁老师的PPT,可以设置为最简单的8字节区域ID(一个字节的area id也够用)加系统ID格式:

  • 如:49. 0010.0100.1001. 00
  • 但又有文献说49是固定格式,可以尝试一下

ISIS和OSPF的相同点和区别

相同点

  • 链路状态数据库和基于Dijkstra的SPF算法
  • 使用Hello报文形成和维护邻接关系
  • 使用区域构成层次化的拓扑结构
  • 支持区域间的路由汇总
  • 无类别路由选择
  • 在广播型多址网络上选取DR
  • 更新、决定和泛洪处理
  • 收敛能力

区域区别

IS-IS区域

  • 没有专门的骨干区域,由L2和L1/L2路由器连接形成IS-IS骨干,可穿越多个区域
  • 区域边界在链路上(一个路由器只属于一个域)
  • 一台IS-IS路由器属于一个区域

OSPF区域

  • 所有非骨干区域连接在一个中心的骨干区域(area0)上
  • 区域边界在路由器上(一个路由器可能同时属于多个域,看接口划分域)
  • 一条链路属于一个区域

其他区别

IS-IS

  • LS信息:LSP,一个分组
  • 每个区域可支持到1000台路由器
  • 只定义2种网络类型:广播型、点到点(非广播型)
  • ISIS的DR(DIS)选取不同于OSPF——只选取DR,不选取BDR

OSPF

  • LS信息:LSA,多种类型,封装在LSU分组中
  • 每个区域可支持到50台路由器
  • 定义4种网络类型:广播型、点到点、NBMA、点到多点

IS-IS路由渗透

作用:

Level 1-2 和 Level-2 路由将自己知道的其他 Level-1 区域以及 Level-2 区域的路由信息通报给指定的 Level-1 区域的过程,需要手动配置。

原理:

缺省情况下,level-1-2和level-2路由器并不会将自己知道的路由域中其他level-1区域以及骨干区域的路由信息通报给level-1区域。于是,level-1路由器只能通过自动生成缺省路由来访问区域以外的任何目的地,类似ospf的Totally Stub区域。但缺省路由未必最优,因此需要让level-1知道其他外部区域的路由信息。

这种情况下需要手动配置路由渗透。

import-route isis level-2 into level-1  //在level-1-2路由器上配置
           

其他细节:

控制Level-1设备是否生成缺省路由:

IS-IS协议规定,如果IS-IS Level-1-2设备根据链路状态数据库判断到通过Level-2区域比Level-1区域能够到达更多的区域,该设备(level-1-2)会在所发布的Level-1 LSP内将ATT比特位置位。对于收到ATT比特位置位的LSP报文的Level-1设备,会生成一条目的地为发送该LSP的Level-1-2设备的缺省路由。

Quagga ISIS配置

一个简单的例子可以参考quagga.pdf P62。

quagga与思科的配置差异

router isis (ISIS进程名配置)

  • 作用:配置ISIS进程名,也是指定area的tag

    ip router isis

    命令也使用该名字
  • 用法:

    router isis + process_name

  • 在思科配置中,

    router isis

    不需要加进程名字,而在quagga中必须使用

    router isis WORD

    的形式指定ISIS 进程的名字。而这个进程的名字将被激活ISIS接口命令使用(ip router isis WORD)。

ip address 和 ip router isis WORD

都需要用到

interface

命令,与接口配置有关。

1、ip address

  • 作用:获取接口信息,是针对接口的配置,在zebra.conf中配置
  • 用法:

    ip address ip_address/prefix

2、ip router isis

  • 作用:用于在该接口上激活ISIS邻接关系,在isisd.conf中配置
  • 用法:

    ip router isis + process_name

3、ip address和ip router isis应该要一起使用

需要注意一点,在思科路由器配置里:

  • ①接口信息(ip address address/prefix命令)是与②在接口上激活ISIS邻接关系(ip router isis WORD)命令是放在一起的。
# 对思科路由器配置
!
interface eth0
 ip address 10.1.255.5 255.255.255.252
 ip router isis
           

然而,在quagga中,需要在zebra中填写①接口信息,而在isisd中②激活ISIS邻接关系。

此外:

  • ip router isis 还需要写明该ISIS进程的名字,如下图的“r1”,而在思科配置中没有;
  • ip address 只能用斜线标记法
  • 用法:
# 对quagga
# zebra.conf中
!
interface eth0
 ip address 10.1.255.5/30 # 注意用“斜线标记法”,需要写网络前缀所占位数
# isisd.conf中
interface eth0
 ip router isis r1 #
           

其他配置

router配置

net(NET配置)
  • 作用:配置路由器net地址
  • 用法:

    net XX.XXXX. ... .XXX.XX

is-type(路由器类型配置)
  • 作用:配置路由器类型
  • 用法:

    is-type [level-1 | level-1-2 | level-2-only]

  • 默认情况下都是level-1-2
router isis r1
 net 01.0001.0000.0001.00
 is-type level-1
           

接口配置

isis circuit-type(接口类型)
  • 作用:配置接口邻接关系的类型
  • 用法:

    isis circuit-type [level-1 | level-1-2 | level-2]

isis network point-to-point(网络类型)
  • 作用:配置网络类型
  • 用法:

    isis network point-to-point

  • 默认是广播网络

继续阅读