ISIS
一、基本概念
-
IS-IS链路状态路由协议,使用最短路径优先算法
-
IS-IS针对OSI 七层模型设计的;工作在链路层之上的网络协议;
-
网络类型:广播网络、P2P网络
-
报文类型:Hello PDU、LSP、SNP
-
DIS伪节点选举(只在广播型网络)
-
网络划分:骨干区域和非骨干区域
-
路由器分类:Level-1路由器、Level-2路由器、Level-1-2路由器
-
由连续的L2和L1/2路由器组成的网络就是骨干网络;L1路由器组成的网络为非骨干网络
二、地址结构
-
NSAP:网络服务访问点,由IDP和DSP组成。结构如下:
-
-
IDP:相当于IP地址中的主网络号,由ISO规定,并由AFI和IDI组成。AFI表示地址分配机构和地址格式;IDI用来标识域
-
DSP:相当于IP地址中的子网号和主机地址,由High Order DSP(分割域)、System ID(区分主机)和SEL(服务类型)组成。
-
NEL:网络实体名称;指的是设备本身的网络层信息,可以看作是一类特殊的NSAP
- NEL的长度与NSAP相同;最多20字节,最小8字节;
- ISIS配置的时候只考虑NEL地址即可,NSAP不必关注;SEL=00
- NET地址最多配置三个,注意:必须保证system ID相同
三、路由器级别
-
Level-1:L1路由器普通区域;建立邻居时有区域概念,不同区域不能建立邻居关系
-
Level-2:L2路由器是骨干区域;与连续的L1/2路由器组成骨干区域;没有区域概念,只能与L2和L1/2建立邻居关系
-
Level-1/2:连接L1和L2之间的路由器,类似OSPF中的ABR路由器;即可以与L1建立邻居关系,也可以与L2建立邻居关系
- 注意:L1/2路由器维护两张lsdb库,L1和L2是分开的;
- 两台L1/2路由直连,同区域可以建立L1和L2邻居关系,不同区域只能建立L2的邻居关系
四、报文格式
1、hello IIH:用于建立和维持邻居关系
-
L1 LAN IIH:广播网络中L1邻居关系建立和维护
-
L2 LAN IIH:广播网络中L2邻居关系建立和维护
-
P2P IIH:非广播网络中使用
-
hello时间默认是10s,超时时间为3倍的hello时间
2、LSP PDU:链路状态报文
-
L1 LSP:由L1或者L1/2路由器产生;
-
L2 LSP:由L2或者L1/2路由器产生;
-
非广播链路上统一使用组播MAC地址:0900-2B00-0005
3、SNP PDU:序列号PDU
-
CSNP:完全序列号PDU,用于发布完整链路状态数据库
-
L1 CSNP
-
L2 CSNP
-
在广播网络里,由DIS没10s发送一次
-
在P2P网络里,只发送一次
-
-
PSNP:部分序列号PDU,用于请求和确认链路状态信息
- L1 PSNP
- L2 PSNP
注意:
-
广播链路上:
- L1 采用目的组播地址:0180-C200-0014
- L2 采用目的组播地址:0180-C200-0015
-
P2P链路上:新建邻居Hello报、发送LSP等都向组播地址发送
- 统一采用目的组播地址:0900-2B00-0005
五、邻居建立
-
邻居建立必要条件:路由器级别一致、L1的邻居区域号一致、互联地址必须在同一个网段、网络类型必须一致
-
邻居状态:
- down:没有收到邻居的hello包
- init:收到邻居的hello包,但是没有发现自身的mac地址,称为one-way
- up:收到含有自己接口mac地址的hello包
-
P2P网络:
- P2P网络不选举DIS虚节点
- 默认是三次握手机制,兼容两次握手机制
- isis ppp-negotiation 3-way P2P链路上默认是3次握手机制,兼容两次握手机制
- isis ppp-negotiation 3-way only 只采用3次握手建立邻居,不兼容两次我周
- isis ppp-negotiation 2-way 只采用两次握手建立邻居,忽略不处理p2p adj state tlv
-
广播网络:
- 选举DIS,每10s由DIS发送CSNP
- 默认情况下L1和L2都发送hello报文
- 采用三次握手机制,邻居建立完成后,两个hello time间隔选举DIS
- 注意:邻居列表是用接口MAC地址来标识的
-
DIS选举
- 只在广播链路上选举DIS,具有抢占性,DIS:发送hello时间为10/3的时间
- 默认优先级为64,优先级越大越优,0代表优先级最小相同则比较接口MAC地址,越大越优
- 优先级取值为1-127;大小为1字节,只用到7个bit,2个7次方就是127
- DIS分级别:在L1/2路由器之间,L1邻居选举L1的DIS,L2邻居选举L2的DIS
- DIS作用:保证全互联,每10s发送一次csnp(邻居之间是全互联状态)
- DIS标识:systemID.00-00【00:代表实节点,显示非0代表DIS 00:代表分片】
六、LSP
从报文角度分两种:L1 LSP和L2 LSP
从LSP的用途去看LSP分两种,实节点LSP和伪LSP
-
实节点LSP相当于1类LSA,每台ISIS路由器都会产生用于描述自身直连的链路状态
-
ISIS通知实节点LSP描述P2P直连路由也描述广播型链路的直连路由伪节点相当于OSPF 2类LSA,广播型链路上有DIS产生,用于描述广播链路
-
ISIS的伪LSP携带的是纯拓扑信息,没有携带路由信息
-
LSP ID=system id+伪节点标识符-分片标识符
- system id:标识产生该LSP路由器的system id
- 伪节点标识符:如果等于0则表示LSP是实节点的LSP,如果非0则表示LSP是伪节点的LSP
- 分片表示符:用于描述同一路由器产生不同的LSP
判断LSP新旧
-
序列号越大越新
-
如果序列号相同,则判断剩余时间是否等于0,等于0的认为是最新,同时等于0代表删除一条LSP
-
如果都不等于0,则比较校验和越大越新,检验和相等则认为LSP一样
-
LSP:初始时间1200s,每隔15分钟即900s更新一次,seq+1
-
重传时间:5s 老化时间:20分钟,还有60s的零老化时间
产生新的LSP的原因:
-
邻居UP或者DOWN
-
ISIS相关接口UP或down
-
引入的IP路由发生变化
-
区域间的IP路由发生变化
-
接口被赋予了新的metric值
-
周期性更新
收到LSP处理过程:
-
将接收的新LSP合入到自己的LSDB数据库中,并标记为flooding(泛洪)
-
向加入isis进程的接口发送新的LSP(收到该LSP接口不发)
-
邻居再扩散到邻居
P2P链路同步:
-
采用目的组播地址为:0900-2B00-0005
-
P2P链路上PSNP两种作用:作为ack应答报文确认收到LSP 和 用来请求所需的LSP
- 同步过程:
-
- 两台路由器直连情况:A和B路由器先建立邻居关系
-
建立邻居关系后A和B会先发送CSNP给对端设备,如果LSDB和CSNP没有同步,则发送PSNP请求索取缺少的LSP
-
-
假设B向A发送PSNP请求缺少的LSP,A发送B请求的LSP同时启动LSP重传定时器,等待B回复PSNP应答
-
-
-
如果重传定时器超时后还没有收到,则重新发送该LSP知道收到PSNP报文(重传时间为5s)
-
p2p链路PSNP两种作用:作为ACK的应答报文和用来请求所需的LSP
-
-
更新过程:
-
若收到一个LSP比自己本地序列号更小,则直接给对方发送自己的LSP,然后等待对方回复PSNP报文确认
-
-
- 若收到一个LSP比自己本地序列号更大,则将更新到自己LSDB,回复一个PSNP报文确认
-
- 若收到一个LSP和本地相同,通过新旧LSP判断,此处考查的如何判断一条新旧LSP
广播链路上同步:
-
L1 采用目的组播地址:0180-C200-0014
-
L2 采用目的组播地址:0180-C200-0015
-
同步过程:
-
-
新加入的路由器首先发送hello报文,与该广播域中的路由器建立邻居关系
-
建立邻居关系后将自己的LSP发送组播地址(L1:0180-C200-0014 L2:0180-C200-0015)这样网络上所以邻居都收到该LSP
-
DIS会把收到的LSP加入到LSDB中,等到CSNP周期性泛洪时发送出去
- 新加入的路由器收到DIS发来的CSNP报文时,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP
-
DIS收到PSNP报文请求后回复对应的LSP进行LSDB同步
- 更新过程与P2P一致,只不过更新的时候由DIS接收并发送;
-
七、路由泄露
-
连续的L2或者L1/2路由器组成的区域为骨干区域
-
L1和L1/2路由器组成的区域为非骨干区域
-
默认L1/2路由器将L1区域的路由泄露到骨干区域
1、骨干区域如何访问非骨干区域?
-
L1/2路由器将L1的路由作为自身直连的叶子进行描述,并通过L2的LSP携带在骨干区域泛洪
2、非骨干区域如何访问骨干区域?
-
默认情况下L1/2路由器不会将L2的路由转化成L1的LSP在非骨干区域泛洪
-
ISIS非骨干区域类似OSPF的完全stub区域,通过缺省路由访问骨干区域
3、非骨干区域缺省路由怎么计算?
-
由L1/2路由器产生的L1的LSP中通过ATT bit来进行缺省路由的计算
-
@ATT(骨干区域连接符)用表明L1/2的路由器和骨干区域连接,ATT置1
-
@当L1/2的路由器至少有一个不在相同区域的L2的邻居时,ATT才会置1
-
ATT比特位只会在L1的LSP的置1
4、缺省路由计算
-
该路由的下一跳为L1/2的路由器SPF树的下一跳
-
该路由的开销为到L1/2的路由器的SPF树的开销
5、ATT bit控制
-
attached-bit advertise always 设置ATT bit总是置1;只能在L1/2设置
-
attached-bit advertise never 设置ATT bit总是置0;针对非骨干区域不产生默认路由;
-
attached-bit avoid-learning 设置L1路由器是否不进行缺省路由的计算;同一个区域如果存在多个L1/2路由器,彼此不进行缺省路由计算,防止路由环路。
6、通过缺省路由访问骨干区域存在什么问题?
-
次优路由
-
无法感知明细路由状态,存在或者失效都通过缺省路由访问业务,导致带宽浪费
-
在MPLS网络中,明细路由缺失导致MPLS网络中LSP无法正常建立
7、如何优化?
-
手动调整缺省路由的开销,通过修改链路开销实现
-
通过路由泄露将骨干区域的路由泄露到非骨干区域,泄露到非骨干区域的L2路由DU(Distributionbit)置1,表明该路由来自非骨干区域
8、为什么泄露到非骨干区域DU置1?
-
由于L1的路由会默认转化成L2的路由在骨干区域泛洪,为了防止L2的路由泄露到L1区域后再次传回到骨干区域,有环路风险,所以将路由DU置1
-
L1/2路由器不会将DU=1的L1路由再次传回到骨干区域
9、非骨干区域传到骨干区域的路由为什么不会置1?
-
L2的路由默认不会传到L1的路由区域,所所以不存在环路风险
如果管理员将L2的路由器泄露到L1的区域,那么默认传到L2区域的L1路由会再次传回L1区域吗?
-
不会,L1的路由优于L2的路由
ISIS路由优先顺序:L1>L2>DU置1的L1路由
OL:过载比特位,通过set-overload命令设置,其他路由器不会再进行SPF算法不在沿着OL=1的路由器继续往下计算SPF树,OL的路由器作为树上的末端节点;
L1/2设置ol bit后将不在执行路由泄露功能,无论是否配置路由泄露
八、开销值
-
Narrow:窄度量值
- 默认开销都是10;默认模式
- 取值范围1~63
- 只计算narrow的LSP路由,发送narrow的LSP;可以接收wide但是不会计算,会继续向邻居泛洪
-
wide:宽度量值如果两端模式不一样,不影响邻居关系建立,但是会影响部分路由计算不完整为什么要使用宽度量值风格,因为wide支持路由打TAG
- 取值范围1~16777215
- 可以接收narrow但是不计算,会继续泛洪
-
注意使用时有参数,其中有兼容模式
九、LSP分片
-
当IS-IS要发布链路状态数据报文PDU中的信息量太大时,会生成很多LSP分片用来携带ISIS的信息;
-
在IS-IS中每个系统ID都标识一个系统,每个系统最多生成256个LSP分片,当256个分片不都使用时通过增加附加系统ID,最多配置50个虚拟系统,从而使IS-IS进程最多生成13056个LSP分片
-
工作模式:
- mode-1:用于网络中部分路由器不支持LSP分片扩展特性
- mode-2:用于网络中所有路由器支持LSP分片扩展特性
十、主机映射
-
主机映射就是把ISIS比较长的system id变成较短的内容
十一、路由汇总
-
L1/2路由器执行汇总,但是只能对自身直连的路由汇总,无法对非直连路由做汇总
-
L1/2路由上执行区域间路由汇总,类似OSPF的ABR(泄露同时可以针对泄露路由做汇总)
-
在ASBR上对引入的外部路由执行汇总
-
汇总路由继承明细路由cost值最小的
-
华为ISIS汇总路由的外部路由不用分片LSP描述,而是当成自身直连的路由进行描述
-
当所有明细路由失效汇总路由才会失效
-
L1/2路由器引入外部路由由指定引入路由的级别,不受泄露机制的影响
-
在L1/2上以L1的路由引入外部路由时,DU bit置0
-
summary 1.0.0.0 255.0.0.0 avoid-feedback generate_null0_route
- avoid-feedback:用于防环,不对聚合路由进行路由计算
- generate_null0_route:表示防止路由环路,从而生成null 0的路由
十二、认证
-
接口认证:针对L1和L2 hello报文进行认证
-
区域认证:针对L1的SNP和LSP报文进行认证(ISIS进程下:area-authentication-mode)
-
路由域认证:针对L2的SNP和LSP报文进行认证(ISIS进程下:domain-authentication-mode)
- 对于区域和路由域认证可以设置为SNP和LSP分开认证
-
本地发送LSP报文和SNP报文都携带TLV,收到LSP报文和SNP报文进行认证检查
-
本地发送LSP报文和SNP报文携带TLV认证,对收到LSP报文认证检查,但不对收到SNP报文进行检查
-
本地发送LSP报文和SNP报文携带TLV认证,对收到LSP报文和SNP报文都不进行认证检查
-
十三、优化
-
链路故障,通过BFD实现毫秒级快速检测
-
I-SPF和PRC
-
LSP 生成智能定时器
- 拓扑发生改变时会产生新的LSP通知全网,由于LSP机制可能无法及时通告给邻居。从而使网络收敛较慢
- 根据路由信息变化的频率自动调整生成LSP的时间
- 命令:time lsp-generation 参数
-
LSP 快速泛洪
- 正常:收到LSP后加入到LSDB库里,等待周期性泛洪
- 优化:收到LSP后,在路由计算之前先将小于指定数目的LSP扩散出去
- 命令:timer spf 参数
-
SPF 算法智能定时器
- 如果网络震荡频繁会不断产生新的LSP,从而引发路由器不算计算路由,导致消耗资源
- 优化:根据网络震荡频繁次数,计算路由的次数会减少;
- 命令:timer spf 参数
- 按优先级收敛
-
广播链路改成p2p
十四、TLV
-
IS-IS协议基于TLV机制来协议各项属性的
-
TLV机制运行路由协议只携带需要的TLV属性即可
-
扩展性强,如果协议需要支持新的特性,则需要开发新的TLV属性即可
-
T:属性类型(固定类型) L:长度 V:取值
-
BGP和思科eigrp也是基于TLV属性
-
参考值:
-
十五、IPv6中的ISIS
-
新增两个TLV:IPv6 Reachability TLV和IPv6 interface Address TLV
-
IPv6 Reachability(IPv6可达性)TLV:
-
IPv6 interface Address(IPv6接口地址)TLV
-
报文:
MT多拓扑协议
-
开启多拓扑协议,IPv4和IPv6各自计算路由的根,不共有一棵树
-
ipv6 enable topology standard 默认模式
-
ipv6 enable topology ipv6 开启多拓扑
-
新增四种TLV:
- Multi-Topology Identifier:多拓扑标识符(229)
- Multi-Topology Intermediate System:多拓扑中间系统(222)
- Multi-Topology Reachable IPv4 Prefixes:多拓扑IPv4可达信息(235)
- Multi-Topology Reachable IPv6 Prefixes:多拓扑IPv6可达信息(237)
- Multi-Topology Identifier:多拓扑标识符(229)