ISIS概述
ISIS属于 IGP 协议中的链路状态路由协议,所以 ISIS 很多工作模式和特点,和 OSPF 都是类似的,比如
都是支持网络的层次化设计,分为骨干层和非骨干层
设备之间传递的的都是链路状态信息,不是路由条目信息
都是支持无线规模的网络
但是,相比较 OSPF 而言, ISIS 更加的安全,同时扩展性更强,因为 ISIS 的报文时直接封装在 2 层头部后面的,没有 IP 头部,但是 OSPF 的报文时直接封装在 IP 头部后面的,同时 ,ISIS的所有功能的实现,在报文的解构都是亿 TLV 的形式实现的,扩展更强一些。比如 ISIS可以支持 IPv4、IPv6 地址 、CLNP 地址。
我们平时所说的 OSPF 仅仅支持 ipv4 ,如果想要支持 IPv6 的 话,需要重新开发一个新版本的 OSPF ,比如 OSPFv3 。
ISIS当年开发出来,主要是为了传输 CLNP地址表示的路由条目。ISIS 协议中的 IS,我们交中间系统,也就是现在的路由器。
当时的网络称之为 CLNS ( 无线的网落服务 ),在网络中的设备都必须配置有地址才可以,而这个就是 CLNP 地址,类似于现在 IP 地址。之前网络中的仍和一个终端设备,我们交 ES( end system ),相当于现在的电脑。
ISIS 就是现在路由器和路由器之间传递信息得协议,也就是路由协议
IS-ES ,就是在路由器和终端之间传递信息得协议,类似与现在得 ARP,
所以, ISIS本身就是用于 CLNP 环境中,传递路由信息。但是对于 3 层地址而言,当初出了 CLNP 以外,还有 IP 地址。显而易见的,IP 活了, CLNP 没落了。由此,在设备之间得 IP 路由得 OSPF 活了,在设备之间传递 CLNP 的 ISIS 没落了。
由于 ISIS 的扩展性太强了,后来又被逐渐的使用了,现在的 ISIS 可以同时支持多种类型的 地址,所以今天的 ISIS 都叫做 " 集成的 ISIS "。
ISIS的工作原理
- 建立邻居表,包含的是链路了 UP 状态的邻居设备的信息
- 同步数据库,包含的是整个区域中的所有链路状态信息 ( LSP )
- 计算路由表,包含的是每个 ISIS 路由器独立计算出来的 路由条目
ISIS的报文类型
- hello :用于邻居表的建立、维护和拆除
- SNP : sequenece nember packet,序列号报文
- 1 CSNP: 完全序列号报文,相当于 OSPF 的 DD 报文
- 2 PSNP :部分序列后报文,相当于 OSPF 的 LSR ,LSAck
- LSP : link state packet ,相当于 OSPF 的 LSA
ISIS的基本配置
ISIS 基本概念
- 区域
- 与 OSPF 中的区域类似,都分为骨干区域和非骨干区域
- 骨干区域和非骨干区域的互联原则都是:非骨干区域必须直接连着骨干区域
- 在 ISIS 中,骨干区域陈伟 Level-2 区域
- 所谓的 level-2 区域,指的是该区域的中的所有的 ISIS 邻居类型都是 level-2
- 在 ISIS 中,非骨干区域称之为 level-1 区域
- 所谓的 level-1 区域,指的是该区域中的所有的 ISIS 的邻居关系类型都是 level-1
- 为什么 ISIS 中得所有的报文类型都有 level-1 和 level -2 呢?
- 因为 ISIS 协议中的所有的报文类型,都有 level-1 和 level -2 两种类型
- 那为什么 ISIS 的报文有分为两种类型呢?
- 不同类型的设备,就产生了不同类型的报文
- 进程号
- 在 ISIS 中,进程号的作用与 OSPF 协议中的作用是完全相同的
- 不同的 ISIS 进程号,就想让于不同的 ISIS 协议
- router-id
- 虽然我们在上面 3 个概念中,在 OSPF 中都找到了对应的概念。但是在 ISIS 协议中,上述的几个概念,是通过一个 地址来体现的,即 NET 地址 ( network entity title )网络实体标识符
- Net ( 任何一个运行了 ISIS 协议的设备,都必须配置一个 NET 地址 )
- NET 地址的结构:可变长度,8-20 个字节
- 分为三个部分:区域号 + 系统 ID + 选择符
- 区域号:可变的,长度是 1-13 字节。组织的就是区域号
- 系统 ID :固定长度,长度是 6 个字节。指的就是 router-id
- 选择符:固定长度,长度是 1 个字节,在目前的 IP 网络中,永远都是 00
- 注意,上述的 3 个部分,都是以 16进制的数值表示的
- 特点,永远是以 1 个字节开头,1 个字节结尾
- 例如: 49.0001.0000.0000.0001.00
- 选择符 :00
- 系统 ID : 0000.0000.0001
- 区域号 : 49.0001
- NET 地址的结构:可变长度,8-20 个字节
ISIS配置案例
- 拓扑
- 基本配置
-
R1
undo terminal moniteer
system-view
sysname R1
interface gi0/0/0
ip address 192.168.12.1 24
quit
isis 1 # 指定进程号为 1 如果不选默认为 1
network-entity 49.0000.0000.0001.00 # 配置 network-entity 地址
quit
interface gi0/0/0
isis enable 1 该接口宣告进入到 ISIS 进程 1中
quitdisplay isis peer
R2
undo terminal moniteer
system-view
sysname R2
interface gi0/0/1
ip address 192.168.12.2 24
quitisis 2 # 指定进程号为 1 如果不选默认为 1
network-entity 49.0000.0000.0002.00
quit
interface gi0/0/1
isis enable 2 # 该接口宣告进入到 ISIS 进程 2 中
quitdisplay isis peer
-
重要字段解释:
@ system id ,相当于邻居设备的 router-id
@ interface ,表示本地与对端设备建立邻居时候使用的接口
@ circuit id ,表示的是电路 ID ,其实说的是“ 伪节点 ” ,就是 DIS 或者 DR
@ State ,表示的是邻居的状态,总共有三种 : down --init ---up
@ holdtime,表示的邻居的最大蠢货时间,默认是 30 S;当该计时器倒计时为 0 的时候,则删除邻
居关系
@ type ,表示的是邻居关系之间的类型
@ PRI ,表示邻居的 “ 优先级 ” ,用于 选举 DIS的
ISIS各种级别的相关解释
ISIS各种级别的含义 | ||
IS-level | 系统 level | 表示的是路由器产生报文的能力 |
level-1 | 表示该设备只能产生 level-1 的报文 | |
level-2 | 表示该设备只能产生 level-2 的报文 | |
level-1-2 | 表示该设备只能产生level-1、level-2 的报文 | |
circuit-level | 接口 level | 表示的是接口收、发报文的能力 |
level-1 | 表示该接口只能收、发 level-1 | |
level-2 | 表示该接口只能收、发 level-2 | |
level-1-2 | 表示该接口只能收、发 level-1和 level-2 报文 |
接口类型,保持默认1/2 | |||
R2-L1 | R2-L2 | R2-L1/L2 | |
R1-L1 | L1 | 无 | L1 |
R1-L2 | 无 | L2 | L2 |
R1-L1/L2 | L1 | L2 | L1/L2 |
ISIS 报文分析 ——-hello
重要字段解释:
PDH Type # 表示的是 ISIS报文的类型
ISIS的报文类型,是由设备的类型以及报文的出接口的类型决定的。
设备的类型:决定了可以产生什么类型的报文,默认都是 Level-1-2
接口的类型:决定了一个端口上允许发送和接的报文类型,默认都是 level-1-2
如果互相建立邻居的两个设备之间,他们产生和发送的报文的类型无法兼容,则无法建立邻居
如果想要修改“ 路由了下 ”,可以使用命令:
isis 1
is-level levle-1 //将该设备的 IS 类型修改为 level -1
quit
验证命令:display isis brief -----> system level:
[R1]isis 1
[R1-isis-1]is-level level-1
如果想要修改 “ 接口类型 ”,可以使用命令
interface gi0/0/x
isis circuit-type level-1 //指定该接口只能收和发 L1 的报文
验证命令:display isis interface gi0/0/x ---> type
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]isis circuit-level level-1
[R1-GigabitEthernet0/0/0]quit
可以看到此时 Type 已经由 L1/L2 变成了 L1
Max Areas : 一个 ISIS 路由器可以同时加入最多 3 个ISIS 区域;该参数是可以修改的,如果不 同,则无法建立邻居。
System ID : 表示的是发送这个 ISIS 报文的设备系统 ID,不能相同
Holdtimer :表示的是“ 如果在改时间内无法接收对方发送过来的数据包 ”,则删除邻居。在需要选 举 DIS 的“ 广播网络环境 ” 中,DIS的 holdtier 是 9S;
非 DIS 的 holdtier 是 30 S;
并且,DIS 的 hello 时间是 3S。非 DIS 的时间是 1/3
priority:优先级,默认是 64.用于 DIS 的选举
Area Address :表示的是发送这个 ISIS 报文的设备所属于的区域,
相同区域的设备,可以建立 L1 的邻居,也可以建立 L2 的邻居
不同区域的 设备,只能建立 L2 的邻居
interface Address :表示的是发送这个 ISIS 报文的接口的 IP 地址。想要建立邻居的话,接口的 IP 地址必须能够互通才可以。
所以,能够影响 ISIS 邻居建立的因素:
- 接口的 IP 地址必须互通
- 双方的设备类型和接口类型,必须兼容
- 双方支持的最大区域数,必须相同
- 系统 ID,不能相同
- ISIS 认证,必须成功
- ISIS 接口的网络类型必须相同( 要么都是广播,要么都是 P2P )修改接口的网络类型的命令:
interface gi0/0/x
isis circuit-type p2p --> 修改为点到点
undo isis circuit-type boardcast 修改为广播
ISIS数据分析
ISIS数据库字段
在ISIS 协议中,数据库分为两种: L1 数据库和 L2 数据库
一个 ISIS 路由器到底有哪种类型的数据库,完全取决于路由器的“ 系统类型 ”
display isis lsdb # 查看 ISIS 数据库
以上显示的都是 ISIS 数据库中的 LSP 的简要信息
LSPID ,表示的是 LSP 的名字,由三部分组成;
系统 ID,表示这个 LSP 是由那个 设备产生的;
伪节点标识符,表示该 LSP 是不是由 DR产生的;
如果该字段是 0,这说明不是 DR 产生的,此时也叫 “ 非伪节点 LSP ”, 里面包含了路由条目信息
如果该字段不是 0.这说明是由 DR 产生的;类似于 2 类 LSA ,其中不包 含路由条目信息
分段标识符,表示这个 LSP 有没有被分段;
如果该字段是 0 ,说明没有被分段
如果该字段不是 0 ,说明被分段了,
同时 ,通过import-ruote 方式引入的路由,也会进入到分段的 LSP 中
Seq Num,序列号,作用于 OSPF 的 LSA 序列号相同。表示 LSP 的新成都。每当 LSP 变化一 次,序列号就会自动加 1
Holdtime , 保持时间,类似于 OSPF 中的 LSA 的 age 字段,用于表示 LSP 的有效期。在 ISIS 中
ISIS 最大的存活时间是 1800S,并且是倒计时,为 0 时,就删除该 LSP
APP/P/OL,在 LSP 中, 3 个标记位,分别表示了不同的功能;
ATT:关联位
如果为 1,说明产生这个 LSP 的路由器,和骨干区域相连
如果为 0,说明这个 LSP 的路由器,没有和骨干区域相连
P :该标记位,在 ISIS 中,一直保留,没有使用起来
OL: overload,超载位
如果为1 ,说明产生这个 LSP 的路由器,系统资源不足,所以,在计算路由条目的时 候,就不能将这个路由器作为下一跳转发设备
---------------------------------------------------------------------- 、
注意
虽然我们平时将LSP 分为 L1 的 LSP 和 L2 的LSP,但是,我们从计算路由的角度,还可以将 LSP 分为:
伪节点 LSP:就是 DIS 产生的,类似于 2 类 LSA ,其中没有路由信息
非伪节点 LSP,才是 ISIS 真正用来传递路由/计算路由的 LSP
另外,默认情况下:
L1 区域的路由,会自动的就进入到 L2 区域
L2 区域的路由,不会自动进入到 L1 的区域
所以,为了实现 L1 和 L2 的互通
同时连接 L1/L2 区域路由 ( 俗称 OSPF 中的 ABR ),会产生 1 个 ATT位为1 的 LSP传递给自己所连接的 L1 区域的所有路由
然后 L1 区域的素有系统级别为 level-1 的路由器,收到该 LSP 以后。发现 ATT 为 1,所以就计算出一个“ 默认路由 ”。
所以,通过上面的描述,我们会发现:
ISIS 的 L1 区域,特别像 OSPF 中的 totally stub 区域
通过 ISIS 来计算路由
- ISIS的数据库中,包含的是:自己产生的 LSP 以及同区域的邻居设备产生的 LSP
- LSP 分为:伪节点 LSP和非伪节点 LSP
- 伪节点 LSP,是由 DIS 产生的,用于表示 DIS 的管理范围,类似于 2 类 LSA,不能用来计算路由
- 非伪节点 LSP,是任何一个路由器都会产生的 ,类似于 1 类 LSA ,其中 包含的都是自己本身宣告的哪些路由。【 以后在计算路由的时候,应该是仅仅关注“ 非伪节点 LSP ”就可以了 】
- 未分段的 LSP:包含的都是路由器自己本身的 “ 内部路由 ”,开销等于接口的开销
- 所谓的 ISIS 的内部路由,指的就是通过 “ ISIS enable ** ” 启用 ISIS 协议产的路由
- 每个接口启用 ISIS 以后,都会有一个默认的开销 ——cost ;通常物理接口的开销都是 10,虚拟端口的开销( loopback )默认都是 0
- 分段的 LSP:包含的都是 路由器的 “ 外部路由 ”,默认的开销都是统一的 64
- 所谓的 ISIS 外部路由,指的是通过 “ import-route *** ” 选的路由条目
- 未分段的 LSP:包含的都是路由器自己本身的 “ 内部路由 ”,开销等于接口的开销
- 虽然上述提到的“ 非伪节点 LSP ”可以用来“ 表示 ” 路由,但是真正用来计算路由的时候,仅仅依靠这些 LSP,还是不够的。因为 这些 LSP 中,仅仅包含了路由条目的一部分;网段/掩码的类型,开销值,但是不包含下一跳的 IP 地址
- 如果想要 “ 完整的计算出路由条目 ”,还要依靠 ISIS邻居神之间的互联接口 IP 地址,该 IP 地址就是路由表的 路由条目的下一跳 IP 地址。而该 IP 地址已经在 建立邻居的时候,通过 ISIS的 hello 报文,互相传递给对方了。并且,我们在设备的 ISIS 邻居表的详细信息中,也是可以产看到这个 IP 地址的 ,命令如下:
-
[R5]display isis peer verbose # 查看 ISIS 邻居的详细信息
Peer information for ISIS(1)
System Id Interface Circuit Id State HoldTime Type PRI
-------------------------------------------------------------------------------
0000.0000.0003 GE0/0/0 0000.0000.0003.01 Up 9s L2 64MT IDs supported : 0(UP)
Local MT IDs : 0
Area Address(es) : 49.0001 邻居设备所在的区域 ID
Peer IP Address(es) : 192.168.35.3 邻居设备的接口 IP 地址
Uptime : 00:00:41
Adj Protocol : IPV4
Restart Capable : YES
Suppressed Adj : NO
Peer System Id : 0000.0000.0003 邻居设备的系统 ID
ISIS数据库同步
针对广播的网络环境
- 与 OSPF 相同,在广播网络环境下,ISIS 认为一个网段中,存在很多的 ISIS 路由器,所以,设备在同步数据库的时候,效率就会降低
- 所以,为了提高 ISIS 邻居设备之间的数据库同步效率,我们选择一个类似于 OSPF 中的 DR 的设备,叫做 DIS ( 伪节点 ) ,用于实现数据库的快速同步
- 首先说一下 DIS 的选举原则:
- 首先,比较的是接口的 DIS 的优先级,数值越大越好,默认是64
- 然后,比较的是接口的 MAC 地址,越大越好
- DIS 与 DR 的区别
- 在 ISIS 中,优先级为 0 的,ISIS 路由器也有资格参与 DIS 的竞选
- 在 OSPF ,中,优先级为 0 的 OSPF 路由器,不能参与 DR 竞选,只能是 DRother
- 在 ISIS 中,是不存在备份的 BDIS
- 在 OSPF 中,可以存在备份的 BDR
- 在 ISIS中,DIS 是可以被抢占的
- 在 OSPF 中,DR 是非常稳定的,不允许被抢占
- 在 ISIS 中,优先级为 0 的,ISIS 路由器也有资格参与 DIS 的竞选
- 为什么 ISIS 广播环境下,可以不需要 DIS?
- 因为普通的 ISIS 路由器发送的 hello 报文周期是 10 s,最大存活时间是 30s;即网络故障出现以后,普通的 ISIS 路由器需要 30 S 才可以发现故障,但是作为 DIS 身份的 ISIS 路由器发送报文的速度是非常快的。hello 时间是 3.3s。最大的存活时间是 10s
- 为什么 DIS 是可以被抢占的?
- 因为在 ISIS 广播环境中,多个ISIS 路由器之间建立邻居,同步数据库的时候,刚开始的都是“ 全部数据库 ”同步,并且不仅仅是 与 DIS 进行同步。这点与 OSPF 不同
- 任何两个建立邻居关系的设备,都会进行数据库同步。但是一旦同步以后,DIS 也拥有了整个区域中的所有的数据信息。
- 所以此时 DIS 就会周期性的发送 CSNP报文( 类似于 OSPF 中的 DD 报文 ),包含了整个数据库中的 所有 LSP 的简要信息,目的就是为了 让大家时刻知道整个数据库的条目的信息变化
- 如果每个路由器发现自己的数据库的简要信息和CSNP中,完全相同。说明整个区域的 数据库是没有变化的
- 如果发现不同,则直接发送一个个 PSNP,进行请求那个自己没有的 LSP ( 类似于 LSR)此时收到 PSNP 的 ISIS 路由器,就会发送一个 LSP 条目进行更新 ( 类似于 LSA ),为了确保整个数据库同步过程更加的 可靠,ISIS 没有专门弄一个类似于 OSPF 的 LSACK报文,而是告知:让 DIS 周期性的发送 CSNP报文,来变相的实现数据库的同步、确认。
修改和查看 DIS 的优先级
interface gi0/0/x
isis dis-priority *** level -1 / level -2
quit
display isis interface gi0/0/x 查看修改后的 DIS 优先级
display isis peer 关注 circuit-id 字段
display isis interface 查看最后的是 DIS ( y/y)
- 针对广播的网络环境
- 与OSPF相同,在广播网络环境下,ISIS认为一个网段中,存在很多的ISIS路由器。所以,设备在同步数据库的时候,效率就会降低。
- 所以为了提高ISIS邻居设备之间的数据库同步效率,我们选择一个类似于OSPF中的 DR 的设备,叫做 DIS (伪节点)。用于实现数据库的快速同步。
- 首先说一下DIS的选举原则:
[R1]display isis interface
Interface information for ISIS(1)
--------------------------------
Interface Id IPV4.State IPV6.State MTU Type DIS
GE0/0/0 001 Up Down 1497 L1/L2 Yes/No
针对点到点的网络环境
例如 R1 和 R2 建立 ISIS 邻居关系:
- 和 R2 都发送一个hello 报文,然后与对方建立邻居
- R1 和 R2 开始同步数据库,首先向彼此发送一个CSNP ( 相当于 DD )通过比较,发现彼此的书苦苦还是有些不同的
- R1 和 R2 就开始发送 PSNP ( 相当于 LSR ,)请求自己本地数据库中没有的 LSP
- R1 和 R2 就开始 回应 LSP ( 想让与 LSU 中包含的 LSA )
- R1 和 R2 收到对方回应的自己想要的 LSP 以后,就直接返回一个 PSNP( 相当于 LSACK ),用于告知对方:已经收到了对方传递过来的 LSP
- 最终,两个设备之间的数据库,就完全同步了。
ISIS路由表分析
- 内部路由
- 外部路由
- 路由属性
- 优先级
- 默认是 15,表示的是路由条目的稳定性,仅仅是本地起作用
- 如果想要修改优先级的 话,使用命令;
- isis 1
- preference ** # 修改设备上所有的 ISIS 路由器的优先级
- isis 1
- 如果想要修改优先级的 话,使用命令;
- 默认是 15,表示的是路由条目的稳定性,仅仅是本地起作用
- 开销值
- 是基于表示这个路由的 LSP 的传递方向上的所有入端口的开销的累加和,计算而来
- 默认情况下,一个ISIS 路由最大的开销值是 1024,。所以这样一来,就会导致 ISIS 的网络规模收到了限制,所以 ISIS 的开销属性,是可以分为两种类型的
- 窄带开销类型:接口默认是 10.最大是 63,路由条目开销最大 1024
- 宽带开销类型:在该类型中,接口的开销最大是2 的 24次方;路由条目开销是 2的 32次方,【 想要支持更加丰富的上层应用,都必须将ISIS 的开销类型改为宽带 】
- 如果想要修改ISIS 开销类型,必须确保全网的所有 ISIS路由器的开销类型得是 “ 互相兼容的 ”,强烈建议都是 wide 的类型
- 配置 ISIS 的cost 类型的命令:
- isis 1
- cost-style?
- compatible ,发两种类型的,收两种类型的
- narrow ,发narrow,收narrow
- narrow-compatible ,发narrow,收narrow 和 wide
- wide ,发wide,收 wide
- wide-compatible ,发wide,收narrow和wide
- 如果互相建立 的 ISIS 路由器,他们的 cost 类型。无法互相兼容,就会导致:ISIS邻居依然是存在的,但是路由条目无法计算出来!
- isis 1
- 配置 ISIS接口的COST 的 命令
- interface gi0/0/x
- isis cost *** level-1 /level-2/ level-1-2
- quit
- display isis interface gi0/0/x
- interface gi0/0/x
- 注意:但凡修改 ISIS 的任何命令,都要在回车之前,打个问号,看看是否可以跟 level 参数,确定当前修改的参数,是针对 level-1 的,还是针对 level-2 的
- ISIS 区域之间的路由传递特点
- L1 区域的路由,可以自动的进入到 L2区域
- L2 区域的路由,不会进入到 L1 区域
- 所以,L1 区域访问 L2 区域或者其他区域链路时候,使用的都是“ 默认路由 ”,而不是“ 精准的明细路由 ”
- L1 区域的默认路由,都是自己计算出来的
- 首先,l1 区域的 L1/L2 路由器( 同时连接着 L1 区域和 L2 区域 )会产生1 个 ATT 位为 1 的 level-1 的 LSP [ 该 L1/L2 路由器,必须成功建立 L2 邻居关系 ]
- 其次, L1 的纯的 L1 路由器,基于该 LSP 计算出一个 L1的默认路由
- 正是因为 L1 区域通常使用的” 默认路由 ”访问其他区域,所以在 L1 秋雨存在多个 L1/L2 路由器的情况( 类似于 OSPF 的区域中存在多个ABR 一样 ),就有可能会出现“ 数据转发的次优路径 ”问题。为了解决该问题。我们可以:
- 在 L1 区域的路由器上,基于数据转发路径的规划,调整“默认路由 ”开销,从而影响数据的转发路径
- 在 L1/L区域的 L1/L2 路由器上,手动的将 L2 的路由“ 泄露到 ” L1 区域,从而让 L1 区域的路由器获得更多的明细路由,从而影响数据转发路径【 常用手段—— ISIS 路由泄露 】
- ISIS 路由泄露的配置命令:( L2 ---L1)
- 在 L1/2 路由器上配置:
- isis { 进程号 }
- import-route isis level-2 into level-1 { 策略 }
- isis { 进程号 }
- ISIS 除了通过 ATT 位,可以计算出来默认路由来,还可以使用类似于OSPF 的方式,来产生默认路由:
- 第一种:无条件的 产生 ISIS 的默认路由
- 即不管自己有没有默认路由,都可以通过ISIS 产生 1个默认路由
- isis
- default-route-advertise always # 永远产生 1 个默认路由,但是该命令产生的默认路由,默认只能进入到 L2 的 LSP,
- 如果想要在 L1 的路由器上配置 “ 产生默认路由 ”,就必须使用命令:
- isis
- default-route-advertise always level-1 # 永远产生 1个默认路由,通过 L1 的 LSP 表示
- isis
- isis
- 即不管自己有没有默认路由,都可以通过ISIS 产生 1个默认路由
- 第二种
- 即自己本地必须存在 1 个默认路由,才可以产生 ISIS 的默认路由
- 确保自己本地路由表中是有默认路由的
- 使用下面的配置命令:
- isis
- default-route-advertise # 默认只能通过 L2 的 LSP 表示
- 想要在 L1 的 LSP ,通过该方式产生默认路由,,只能:
- default-route-advertise level-1
- isis
- 并且我们总结出规律:
- 通过 default-route-advertis 命令产生的 默认路由优先级,要高于 通过 “ ATT ”位计算出来的默认路由
- 即自己本地必须存在 1 个默认路由,才可以产生 ISIS 的默认路由
- 第一种:无条件的 产生 ISIS 的默认路由
- ISIS 路由的产生方式
- 接口下宣告( isis enable *** )
- 该方式产生的路由,叫做 ISIS 的内部路由
- 该方式产生的路由,存在与设备产生的 “ 非伪节点 LSP ”中
- 进程下宣告 ( import-route *** )
- 该方式产生的路由,叫做 ISIS 的外部路由
- 该方式产生的路由,存在于设备产生的 “ 分段 LSP 中 ”
- 该方式产生的路由。默认情况下,只能进入到 L2 的 LSP 中
- 接口下宣告( isis enable *** )
- 优先级
ISIS区域对比
ISIS 中的 L2 区域:默认情况下,可以接收任何区域发送guolde路由,以及导入的外部路由
ISIS 中的 L1 区域:默认情况下,不要外部路由,也不要 L2 区域的路由。所以类似于 OSPF 中的 totally stub 区域
ISIS 的路由传递 : L2 不会进入到 L1; L1 会自动的进入到 L2
我们看下 R2上的路由:
R5路由
如果 L2 想要进入到 L1,就得需要 : ISIS 路由泄露( 将 L2 的路由,导入到区域 L1 )
此时再看 R2 路由
默认,L1 进入到 L2 区域,是自动的,全部的 L1 路由,都进入到 L2 区域;不可控制
如果想要控制这种转发行为,也是可以的,但是必须通过命令:
R3
isis 1
import-route isis level-1 into level-2 { 策略 }
例如:
在 R4上,L1 区域的路由进入到 L2 区域的时候,不允许 10.10.1.1/32 的过去,其他路由,都是允许的。
从而,确保 R5 访问 10.10.1.1 /32 的时候,都选择走 R3
R4
创建 ACL ,匹配感兴趣的路由 : 10.10.1.1/32,然后干掉,允许其他路由
acl 2000
rule 10 deny source 10.10.1.1 0.0.0.0
rule 20 permit source any
此时我们可以看到 路由的下一跳已经由 192.168.45.4 换成了 192.168.35.3 了,说明 ACL 已生效
- 在匹配 路由条目的时候,如果使用ACL,那只能使用“ 基本 ACL ”
- 基本 ACL 的名字的取值空间为 : 2000-2999
- 基本 ACL 在匹配路由条目的时候,不精准,只能匹配路由的网段,不能匹配掩码
- 基本 ACL 的“ 规则条目 ”中,所使用的不是 “ 反掩码 ” ,而是“ 通配符 ”
- 在 ACK 中的通配符,我们仅仅关系“ 通配符中的 0 ” 所对应的 “ 网段 ”中的 位,必须和我们在 ACL 中写的 “ 条件 ” 是相同的
例如:
上述的通配符是 0.0.0.0 ,所以我们在使用这个 ACL 匹配路由的时候
查看“ 路由条目 ”的所有 bit,因为通配符是 32 bit 的 0,并且。备件仓的路由条目的“ 网段 ” 的 32 bit。必须和我们在 ACL中 写的 10.10.1.1 的所有 32 bit 相同。
此时才叫做“ 该路由匹配住了 该 ACL ” 只有匹配住了才能执行动作 “ deny ”
192.168.1.0/24
192.168.1.0/25
192.168.1.0/26
192.168.1.0/27
以上是独立的 4个路由,但是如果我们使用 ACL: 192.168.1.0 0.0.0.0 就可以将上诉的 4 个路由,全部匹配住;
192.168.1.0/24
192.168.1.238/25
192.168.1.192/26
192.168.1.224/26
以上是独立的 4个 路由,如果使用 ACL : 192.168.1.0 0.0.0.255 既可将上述的 4 个路由,全部匹配住;
在 ISIS 进程中,通过 impor-route isis 命令调用 ACL
ISIS认证
ISIS链路认证
该类型的认证,在链路上配置,仅仅针对hello 报文加密和解密
最终影响的是ISIS 的邻居表( L1 和L2 的邻居 )
配置命令:
接口下配置的明文认证,针对的是 接口上收和 发的 hello 报文;
interface gi0/0/0
isis authentication-mode simple HCIE
quit
接口下配置的密文认证,针对的是接口上收和 发 的 hello 报文;
interface gi0/0/0
isis authencitation-mode md5 HUWEI
quit
当我们在接口上,通过上述的命令,启用了 ISIS 认证以后
- 对于发送的报文,是一定要带着秘密的
- 对于接收的报文,有密码。是一定要检查秘密的
- 如果收的报文,有密码,且是正确的,则认证成功
- 如果收的报文,没有密码,则认证失败
- 如果一个 ISIS 的接口,没有启用认证:
- 对于发送的报文,一定没有密码
- 对于接收的报文,一定不会检查密码相关的内容的
- 如果收的报文,没有密码,则正常接收
- 如果收的报文,有密码,直接忽略,正常接收
ISIS 区域认证
该类型的认证,是在进程下配置的,仅仅针对 level-1 的 SNP 和 LSP 加密和解密,最终 影响的 L1 的数据库。以及 L1 的路由表
配置命令
应该在 L1 区域的所有路由器上都得配置,否则会导致 L1 区域无法同步,从而无法正常 计算 L1 的路由
isis 1
area-authentication-mode simple HCIE
或者
area-authentication-mode MD5 HCIE
ISIS域认证
该类型的认证,是在进程下配置的,仅仅针对 level-2 的 SNP 和 LSP 加密和界面,最终影响的 L2 的数据库,以及 L2 的路由表
配置命令:
在 L2 区域的所有设备上都要配置该命令。否则影响 L2 区域的数据库同步
isis
domain-authentication-mode md5 HCIE
或者
domain-authentication-mode simple HCIE
ISIS路由汇总
产生背景
当前的网络环境下,进行汇总,可以实现节省对端设备的系统资源。但是主要的目的就是为了提高网络的稳定性
因为一旦进行了路由汇总,那么在发送路由的时候就不发送明细路由了,仅仅发送“ 汇总之后的路由 ” ,所以很多明细路由不稳定的时候,对邻居设备是无感知的
汇总配置
- 在 ISIS 协议中华,无论是内部路由,还是外部路由;无论是 L1 的路由,还是 L2 的路由,都可以进行汇总
- 在 ISIS 协议中,只有在 “ 产生” 这些明细路由的设备上,才可以进行汇总
- 如果想要确认明细路由的 “ 产生 ” 设备,就去看包含这个明细路由的 LSP 的 “ 系统 ID ” 是谁,就可以了
- 配置命令
- 假如在 L1 设备 R 1 上,有 4个接口,宣告进入到 ISIS
- 然后最这些路由进行汇总
- interface loopback 1
- ip address 10.10.1.1 32
- isis enable 1
- quit
- interface loopback 2
- ip address 10.10.2.2 32
- isis enable 1
- quit
- interface loopback 3
- ip address 10.10.3.3 32
- isis enable 1
- quit
- interface loopback 4
- ip address 10.10.4.4 32
- isis enable 1
- quit
- isis 1
- summary 10.10.0.0 255.255.0.0 level-1
如何写出正确的“ 汇总路由 ”
汇总路由的“ 网段 ” ---指的是被汇总的哪些明细路由的 “ 公共部分 ”
针对多个明细路由,相同的位,直接写
针对多个明细路由,从那些不同的位开始,后面的全部都写成0
10.10.1.1---》0000 0001
10.10.2.2---》0000 0010
10.10.3.3---》0000 0011
10.10.4.4---》0000 0100
公共部分 :10.10.0.0
汇总路由的“掩码 ” ---指的是被汇总的那些明细路由的“ 公共部分 ”,有多个 bit 是相同的,在上述的例子中, 4 个 明细路由的,前面的 12 bit 。都是相同的,所以此时的掩码是 21
所以,最终汇总路由是: 10.10.0.0/21
ISIS路由过滤
-
ISIS中不存在针对 LSP 的过滤
-
ISIS中存在针对路由的过滤--filter-policy [ 用法与 OSPF 中,完全相同 ]
-
入方向 filter-policy ,指的是路由从数据库中进入到路由表中的时候,起作用,,针对任何类型的路由都起作用
-
出方向 filter-policy ,仅仅是针对通过 import-route 方式引入的路由起作用
-