IS-IS配置:
ISIS认证:
接口认证:
- 如果配置了send-only则表示仅对发送的Hello封装认证信息,而不检查收到的Hello报文是否通过了认证。在本端不需要进行认证检查且对端认证通过时,才可以建立起邻居关系。
- 如果没有配置send-only,此时应保证同一网络所有接口的相同级别的认证密码一致。
区域认证或路由器域认证:
- 对发送的LSP和SNP都封装认证信息,并检查收到的LSP和SNP是否通过认证,丢弃没有通过认证的报文。该情况下不配置参数snp-packet或all-send-only。
- 对发送的LSP封装认证信息并检查收到的LSP,对发送的SNP不封装认证信息,也不检查收到的SNP。该情况下需要配置参数snp-packet authentication-avoid。
- 对发送的LSP和SNP都封装认证信息,只检查收到的LSP,不检查收到的SNP。该情况下需要配置参数snp-packet send-only。
- 对发送的LSP和SNP都封装认证信息,不检查收到的LSP和SNP。该情况下需要配置参数all-send-only。
配置optional checksum:
在网络运行期间,IS-IS路由器可能会收到恶意报文的攻击,或者IS-IS报文被篡改,可能导致网络的重要信息被窃取,给网络造成重大损失。optional checksum特性是指在IS-IS路由器发送的CSNP、PSNP及Hello报文中,封装optional checksum TLV,对端在收到封装后的报文后,首先检查其携带的TLV是否正确,如果不正确,则拒绝接收,从而保证网络的安全性。
optional-checksum enable //使能IS-IS进程的optional checksum功能。
如果IS-IS接口或者区域已经配置了MD5认证或者含有生效MD5认证的Keychain认证,则IS-IS路由器发送Hello和SNP报文时不携带checksum TLV,只校验接收到的报文。
IS-IS的选路:
1 | preference 15 |
ISIS接口开销:
IS-IS有三种方式来确定接口的开销,按照优先级由高到低分别是:
- 接口开销:为单个接口设置开销。
- 全局开销:为所有接口设置开销。
- 自动计算开销:根据接口带宽自动计算开销。
如果没有为IS-IS接口配置任何开销值,IS-IS接口的默认开销为10,开销类型是narrow。
auto-cost enable:
//使能自动计算接口的开销值。
IS-IS接口开销和带宽对应关系表:
- | 开销值 | 接口带宽范围 |
| —- | ———————— |
| 60 | 接口带宽≤10Mbit/s |
| 50 | 10Mbit/s<接口带宽≤100Mbit/s |
| 40 | 100Mbit/s<接口带宽≤155Mbit/s |
| 30 | 155Mbit/s<接口带宽≤622Mbit/s |
| 20 | 622Mbit/s<接口带宽≤2.5Gbit/s |
| 10 | 2.5Gbit/s<接口带宽 |
配置ISIS对等价路由的处理方式:
当IS-IS网络中有多条冗余链路时,可能会出现多条等价路由,此时可以采取两种方式:
配置负载分担。流量会被均匀的分配到每条链路上。
该方式可以提高网络中链路的利用率及减少某些链路负担过重造成阻塞发生的情况。但是由于对流量转发具有一定的随机性,因此可能不利于对业务流量的管理。
配置等价路由优先级。针对等价路由中的每一条路由,明确指定其优先级,优先级高的路由将被优选,优先级低的路由可以作为备用链路。
该方式可以在不修改原有配置的基础上,指定某条路由被优选,便于业务的管理,同时提高网络的可靠性。
1 | [isis] maximum load-balancing 8 |
配置IS-IS路由渗透:
1 | [isis] import-route isis level-2 into level-1 |
控制Level-1设备是否生成缺省路由:
IS-IS协议规定,如果IS-IS Level-1-2设备根据链路状态数据库判断到通过Level-2区域比Level-1区域能够到达更多的区域,该设备会在所发布的Level-1 LSP内将ATT比特位置位。对于收到ATT比特位置位的LSP报文的Level-1设备,会生成一条目的地为发送该LSP的Level-1-2设备的缺省路由。
以上是协议的默认原则,在实际应用中,可以根据需要对ATT比特位进行手动配置以更好地为网络服务。
1 | [isis] attached-bit advertise { always | never} |
- always参数用来设置ATT比特位永远置位,收到该LSP的Level-1设备会生成缺省路由。
- never参数用来设置ATT比特位永远不置位,可以避免Level-1设备生成缺省路由,减小路由表的规模。
控制IS-IS的路由信息的交互
配置IS-IS发布缺省路由:
在具有外部路由的边界设备上配置IS-IS发布缺省路由可以使该设备在IS-IS路由域内发布一条0.0.0.0/0的缺省路由。在执行此配置后,IS-IS域内的其他设备在转发流量时,将所有去往外部路由域的流量首先转发到该设备,然后通过该设备去往外部路由域。
配置静态缺省路由虽然也可以实现该功能,但是当现网中有大量设备时,配置工作量巨大且不利于管理。
此外,采用IS-IS发布缺省路由的方式更加灵活。例如,如果存在多个边界设备,那么可以通过配置路由策略,使某台边界设备在满足条件时才发布缺省路由,从而避免造成路由黑洞。
1 | [isis] default-route-advertise [ always | match default | route-policy route-policy-name ] [ cost cost | tag tag | [ level-1 | level-1-2 | level-2 ] ] * [ avoid-learning ], |
参数 | 参数说明 | 取值 |
---|---|---|
always | 指定设备无条件的发布缺省路由,且发布的缺省路由中将自己作为下一跳。 | - |
match default | 如果在路由表中存在其他路由协议或其它IS-IS进程生成的缺省路由,则在LSP中发布该缺省路由。 | - |
route-policy route-policy-name | 指定路由策略名称。当该边界设备的路由表中存在满足路由策略的外部路由时,才向IS-IS域发布缺省路由,避免由于链路故障等原因造成该设备已经不存在某些重要的外部路由时,仍然发布缺省路由从而造成路由黑洞。此处的路由策略不影响IS-IS引入外部路由。 | 字符串形式,区分大小写,不支持空格,长度范围是1~40。当输入的字符串两端使用双引号时,可在字符串中输入空格。 |
cost cost | 指定缺省路由的开销值。 | 整数形式。取值范围根据cost-style而定:当cost-style为narrow、narrow-compatible或compatible时,取值范围是0~63;当cost-style为wide或wide-compatible时,取值范围是0~4261412864。 |
tag tag | 指定发布的缺省路由的标记值。只有当IS-IS的开销类型为wide、wide-compatible或compatible时,发布的LSP中才会携带tag值。 | 整数形式,取值范围为1~4294967295。 |
level-1 | 指定发布的缺省路由级别为Level-1。如果不指定级别,则默认为生成Level-2级别的缺省路由。 | - |
level-2 | 指定发布的缺省路由级别为Level-2。如果不指定级别,则默认为生成Level-2级别的缺省路由。 | - |
level-1-2 | 指定发布的缺省路由级别为Level-1-2。如果不指定级别,则默认为生成Level-2级别的缺省路由。 | - |
avoid-learning | 避免IS-IS进程学到其他路由协议或其它IS-IS进程生成的缺省路由并添加到路由表。如果路由表中已存在学到的缺省路由为活跃状态,则将此路由置为不活跃状态。 | - |
配置路由聚合:
1 | summary ip-address mask [ avoid-feedback | generate_null0_route | tag tag | [ level-1 | level-1-2 | level-2 ] ] * |
参数 | 参数说明 | 取值 |
---|---|---|
ip-address | 指定要生成聚合路由的IP地址。 | 点分十进制形式。 |
mask | 指定生成的聚合路由的IP地址的掩码。 | 点分十进制形式。 |
avoid-feedback | 表示避免通过路由计算学习到聚合路由。 | - |
generate_null0_route | 表示为防止路由循环而生成Null 0路由。 | - |
tag tag | 表示为发布的路由分配管理标签号。 | 整数形式,取值范围是1~4294967295。 |
level-1 | 表示只对引入到Level-1区域的路由进行聚合。如果没有指定Level级别,缺省为Level-2。 | - |
level-1-2 | 表示对向Level-1区域以及Level-2区域引入的路由都进行聚合。如果没有指定Level级别,缺省为Level-2。 | - |
level-2 | 表示只对引入到Level-2区域的路由进行聚合。如果没有指定Level级别,缺省为Level-2。 | - |
控制IS-IS路由的收敛:
配置Hello报文属性:
1 | isis timer hello hello-interval [ level-1 | level-2 ] |
参数 | 参数说明 | 取值 |
---|---|---|
hello-interval | 指定发送Hello报文的间隔时间。 | 整数类型,取值范围是3~255,单位是秒。缺省值是10秒。 |
level-1 | 指定Level-1级别Hello报文的发送间隔。如果没有指定级别,则默认级别为Level-1和Level-2。 | - |
level-2 | 指定Level-2级别Hello报文的发送间隔。如果没有指定级别,则默认级别为Level-1和Level-2。说明: 参数level-1和level-2仅在广播接口上是可配置的。因为在广播链路上,level-1和level-2的Hello报文会分别发送,其间隔时间也要分别设置。在点到点链路上只有一种Hello报文,所以不需要使用参数level-1和level-2。 | - |
1 | isis timer holding-multiplier number [ level-1 | level-2 ] |
参数 | 参数说明 | 取值 |
---|---|---|
number | 指定邻居保持时间为Hello报文的发送间隔时间的倍数。 | 整数形式,取值范围是3~1000。缺省值为3。 |
level-1 | 指定Level-1邻居的邻居保持时间。如果没有指定级别,则默认为Level-1和Level-2邻居指定邻居保持时间。 | - |
level-2 | 指定Level-2邻居的邻居保持时间。如果没有指定级别,则默认为Level-1和Level-2邻居指定邻居保持时间。 | - |
配置LSP报文属性:
LSP报文用于交换链路状态信息。通过配置LSP的基本属性,可以控制LSP报文的大小及最大有效时间。还可以通过使能LSP快速扩散,以及减小接口发送LSP报文的最小时间间隔和LSP的刷新周期可以加快LSP报文的扩散速度,可以使得网络快速收敛。但是如果网络变化比较频繁,又会过度占用CPU资源。此时可以通过配置LSP生成的智能定时器,既可以快速响应突发事件,加快网络的收敛速度,又可以在网络变化频繁时自动延长智能定时器的间隔时间,避免过度占用CPU资源。
配置的参数 | 作用 | 应用场景 |
---|---|---|
配置LSP的大小 | 控制生成和接收LSP的大小。 | 当链路状态信息变大时,可以增大生成LSP的报文长度,使得每个LSP可以携带更多的信息。 |
配置LSP的最大有效时间 | 控制LSP的最大有效时间,保证在未收到更新的LSP之前旧LSP的有效性。 | 路由器生成系统LSP时,会在LSP中填写此LSP的最大有效时间。当此LSP被其它路由器接收后,它的有效时间会随着时间的变化不断减小。如果路由器一直没有收到更新的LSP,而此LSP的有效时间已减少到0,LSP再保持60秒,若还未收到新的LSP,那么此LSP将被从LSDB中删除。 |
配置LSP的刷新周期 | 控制LSP的泛洪定时刷新,保持LSBD的同步。 | IS-IS网络主要通过LSP的泛洪实现链路状态的同步。泛洪即一个路由器向相邻路由器发送自己的LSP后,相邻路由器再将同样的LSP报文传送到除发送该LSP的路由器外的其它邻居,并这样逐级将LSP传送到整个层次内的一种方式。通过这种方式,整个层次内的每一个路由器就都可以拥有相同的LSP信息,并保持LSDB的同步。 |
配置接口发送LSP的最小时间间隔 | 控制LSP刷新时单个LSP之间的发送间隔。 | 减小发送LSP的最小时间间隔可以加快LSP的扩散速度。 |
配置LSP生成的智能定时器 | 智能控制LSP生成的频率,平衡提高收敛速度与减轻系统负荷之间的关系。 | 在运行IS-IS的网络中,当本地路由信息发生变化时,路由器需要产生新的LSP来通告这些变化。当本地路由信息的变化比较频繁时,立即生成新的LSP会占用大量的系统资源。为了加快网络的收敛速度,同时又不影响系统性能,通过配置LSP生成的智能定时器,该定时器可以根据路由信息的变化频率自动调整延迟时间。 |
配置LSP快速扩散 | 控制接口每次扩散LSP的数量,以便加快IS-IS网络的收敛速度。 | 当IS-IS收到其它路由器发来的LSP时,如果此LSP比本地LSDB中相应的LSP要新,则更新LSDB中的LSP,并用一个定时器定期将LSDB内已更新的LSP扩散出去。LSP快速扩散特性改进了这种方式,配置此特性的设备收到一个或多个比较新的LSP时,在路由计算之前,先将小于指定数目的LSP扩散出去,加快LSDB的同步过程。 |
配置点到点链路上的LSP重传时间间隔 | 控制LSP的重传间隔,保证点到点网络中LSDB的同步。 |
配置LSP的大小:
1 | [isis] lsp-length { originate | receive } max-size |
参数 | 参数说明 | 取值 |
---|---|---|
originate | 指定配置生成LSP报文的最大长度。 | - |
receive | 指定配置接收LSP报文的最大长度。 | - |
max-size | 指定LSP报文的最大长度。配置max-size参数时需注意,生成的LSP报文的max-size必须小于等于接收的LSP报文的max-size。 | 整数类型,取值范围是512~16384,单位是字节。缺省值是1497。说明: 由于目前接口支持的MTU最大值是9600字节,因此,为了实现两端的正常通信,LSP的报文最大长度允许的最大取值为9600–3=9597字节。 |
配置LSP的最大有效时间:
1 | timer lsp-max-age age-time |
配置LSP的刷新周期:
1 | timer lsp-refresh refresh-time |
配置接口发送LSP的最小时间间隔:
1 | isis timer lsp-throttle throttle-interval [ count count ] |
配置LSP生成的智能定时器:
1 | timer lsp-generation max-interval [ init-interval [ incr-interval ] ] [ level-1 | level-2 ] |
参数 | 参数说明 | 取值 |
---|---|---|
max-interval | 指定产生LSP(这些LSP具有相同的LSP ID)的最大延迟时间。 | 整数类型,取值范围是1~120,单位是秒,缺省值为2。 |
init-interval | 指定初次触发产生LSP的延迟时间。 | 整数类型,取值范围是1~60000,单位是毫秒。缺省情况下不使用这个延迟时间。 |
incr-interval | 指定两次产生具有相同的LSP ID的LSP之间的递增延迟时间。 | 整数类型,取值范围是1~60000,单位是毫秒。缺省情况下不使用这个延迟时间。 |
level-1 | 指定产生Level-1 LSP的延迟时间。如果没有指定Level,则同时配置产生Level-1和Level-2 LSP的延迟时间。 | - |
level-2 | 指定产生Level-2 LSP的延迟时间。如果没有指定Level,则同时配置产生Level-1和Level-2 LSP的延迟时间。 | - |
初次产生同一LSP(或者LSP分片)的延迟时间为init-interval;第二次产生同一LSP(或者LSP分片)的延迟时间为incr-interval。随后,每变化一次,延迟时间都增大为前一次的两倍,直到max-interval。稳定在max-interval三次或者IS-IS进程被重启,延迟时间又降回到init-interval。
在不使用incr-interval的情况下,初次产生同一LSP(或者LSP分片)仍然使用init-interval作为延迟时间,随后都是使用max-interval作为延迟时间。同样,稳定在max-interval三次或者IS-IS进程被重启,延迟时间又降回到init-interval。
在只使用max-interval的情况下,智能定时器退化为一般的一次性触发定时器。
配置LSP快速扩散:
1 | flash-flood [ lsp-count | max-timer-interval interval | [ level-1 | level-2 ] ] * |
参数 | 参数说明 | 取值 |
---|---|---|
lsp-count | 指定每个接口一次扩散LSP的最大数量。 | 整数形式,取值范围是1~15。缺省值是5。 |
max-timer-interval interval | 指定LSP扩散的最大间隔时间。 | 整数形式,取值范围是10~50000,单位是毫秒。缺省值是10毫秒。 |
level-1 | 表示在Level-1中使能此特性。如果命令中没有指定级别,则缺省同时在Level-1和Level-2中使能此功能。 | - |
level-2 | 表示在Level-2中使能此特性。如果命令中没有指定级别,则缺省同时在Level-1和Level-2中使能此功能。 | - |
配置点到点链路上LSP重传的时间间隔:
1 | isis circuit-type p2p [ strict-snpa-check ] |
配置CSNP报文属性:
全序列号报文CSNP(Complete Sequence Number
PDUs)包括LSDB中所有LSP的摘要信息,可以保证相邻设备间LSDB的同步。在广播网链路和点到点链路中,运行机制略有不同:
- 在广播网链路上,CSNP由DIS设备周期性的发送。当邻居发现LSDB不同步时,发送PSNP报文来请求缺失的LSP报文。
- 在点到点链路上,CSNP只在第一次建立邻接关系时发送。
1 | isis timer csnp csnp-interval [ level-1 | level-2 ] |
调整SPF的计算时间:
当网络变化比较频繁时,IS-IS会频繁的进行SPF计算。频繁的SPF计算会消耗系统大量的CPU资源,从而影响其他业务的运行。
配置智能定时器的优势在于当刚开始进行SPF计算时,两次计算的间隔时间较小,保证IS-IS路由的收敛速度。之后随着整个IS-IS网络的拓扑趋于稳定时,就可以适当的延长两次SPF计算的间隔时间,从而减少不必要的资源消耗。
1 | timer spf max-interval [ init-interval [ incr-interval ] ] |
参数 | 参数说明 | 取值 |
---|---|---|
delay-interval | 指定收到LSP后启动路由计算的抑制时间。 | 整数形式,取值范围是1~600,单位是秒。 |
threshold threshold-value | 指定进入抑制状态的阈值。即路由震荡threshold-value次之后进入抑制状态。 | 整数形式,取值范围是3~100,单位是次。缺省情况下,LSP进入计算抑制的阈值默认为30次。 |
配置ISIS路由按优先级收敛:
设备支持通过配置IS-IS路由的收敛优先级,可以使某些重要路由在网络拓扑发生变化时优先收敛。
1 | prefix-priority [ level-1 | level-2 ] { critical | high | medium } { ip-prefix prefix-name | 配置IS-IS路由的收敛优先级。tag tag-value } |
参数 | 参数说明 | 取值 |
---|---|---|
level-1 | 指定Level-1级别的IS-IS路由的收敛优先级。 | - |
level-2 | 指定Level-2级别的IS-IS路由的收敛优先级。 | - |
critical | 指定IS-IS路由的收敛优先级为critical。 | - |
high | 指定IS-IS路由的收敛优先级为high。 | - |
medium | 指定IS-IS路由的收敛优先级为medium。 | - |
ip-prefix prefix-name | 指定过滤路由的IP地址前缀名,为符合指定IP地址前缀的IS-IS路由配置收敛优先级。 | 字符串形式,区分大小写,不支持空格,长度范围是1~169。 |
tag tag-value | 指定过滤路由的tag值,为带有指定tag值的IS-IS路由配置收敛优先级。如果使用tag值来过滤需配置收敛优先级的IPv4路由,要求发送报文的IS-IS的cost-style类型不是narrow且IS-IS路由必须带有tag值。 | 整数类型,取值范围是1~4294967295。 |
配置LSP分片扩展:
通过配置LSP分片扩展,使运行IS-IS的设备生成多个LSP分片来发布信息,以便携带更多的IS-IS信息。
1 | lsp-fragments-extend [ [ level-1 | level-2 | level-1-2 ] | [ mode-1 | mode-2 ] ] * |
数 | 参数说明 | 取值 |
---|---|---|
level-1 | 指定在Level-1级别使能分片扩展。 | - |
level-2 | 指定在Level-2级别使能分片扩展。 | - |
level-1-2 | 指定在Level-1-2级别使能分片扩展。 | - |
mode-1 | 该模式可以兼容以前老版本不支持LSP分片扩展特性的情况。 | - |
mode-2 | 该模式要求所有路由器都支持LSP分片扩展特性。说明: 缺省情况下,使用mode-1和level-1-2两个参数。 |
在NBMA网络中配置Mesh Group:
通过在NBMA网络中配置Mesh Group,可以避免因LSP的重复扩散而造成的带宽浪费。
1 | isis mesh-group { mesh-group-number | mesh-blocked } |
参数 | 参数说明 | 取值 |
---|---|---|
mesh-group-number | 指定mesh-group的组号。 | 整数形式,取值范围是1~4294967295。 |
mesh-blocked | 设置该参数后,接口将被阻塞,不再向其它接口扩散收到的LSP。 |
配置过载位:
1 | set-overload [ on-startup [ timeout1 | start-from-nbr system-id [ timeout1 [ timeout2 ] ] | wait-for-bgp [ timeout1 ] ] [ send-sa-bit [ timeout3 ] ] ] [ allow { interlevel | external }* ] |
数 | 参数说明 | 取值 |
---|---|---|
on-startup | 表示路由器重启或者出现故障时,过载标志位在配置的时间内将保持被置位状态。 | - |
timeout1 | 指定系统启动后维持过载标志位的时间。 | 取值范围是5~86400,单位是秒,缺省值是600秒。 |
start-from-nbr system-id | 表示根据system ID指定的邻居的状态,配置系统保持过载标志位时长。 | 格式为XXXX.XXXX.XXXX。 |
timeout1 [ timeout2 ] | 指定与邻居状态相关的过载标志位置位的时间。 | 如果指定的邻居在timeout2超时前没有正常Up,则系统过载标志位维持时间为timeout2。timeout2的取值范围是5~86400,单位是秒,缺省值为1200秒(20分钟)。如果指定的邻居在timeout2超时前正常Up,系统过载标志位将继续维持timeout1时长。timeout1的取值范围是5~86400,单位是秒,缺省值是600秒(10分钟)。 |
wait-for-bgp | 表示根据BGP收敛的状态,设置系统保持过载标志位时长。 | - |
send-sa-bit | 设备重启后发送的Hello报文中携带SA Bit。 | - |
timeout3 | 指定设备重启后发送的Hello报文中携带SA Bit的时间。 | 整数形式,取值范围是5~120,单位是秒。缺省值是30秒。 |
allow | 表示允许发布地址前缀。缺省情况下,当系统进入过载状态时不允许发布地址前缀。 | - |
interlevel | 表示当配置allow时,允许发布从不同层次IS-IS学来的IP地址前缀。 | - |
external | 表示当配置allow时,允许发布从其它协议学来的IP地址前缀。 | - |
#ISIS 其他常见配置命令:
1 | adjacency-strict-check enable |
IS-IS配置示例
IS-IS综合实验示例:
实验拓扑如下:
实验要求:
公司A网络如实验拓扑所示,请根据如下需求对网络进行部署:
- R1所属区域ID为49.0001,R2、R3、R4和R5所属区域ID为49.0002,R6所属区域ID为49.0006,各个设备的System ID为0000.0000.000X;
- 根据拓扑通告相应设备上的接口,R6的E1/0/0运行IS-IS协议,但是不会将任何IS-IS报文发往E1/0/0所连接网段,另外IS-IS区域需要学习到E1/0/0直连网段的地址;
- R1为Level-2层级设备,R2和R3为Level-1-2层级设备,R4和R5为接口级别的Level-1层级设备,R6为接口的Level-2层级设备;
- 由于使用System ID标识设备不便于网络维护,请通过合适命令以使用设备编号(设备编号即为R1,R2,R3等)进行标识;
- R4与R5之间不能出现DIS,并建立可靠的邻居关系;
- IS-IS可以自动计算Cost;
- 选择合适的认证模式对区域49.0002的LSP和SNP进行验证,验证密码HUAWEI,认证类型为MD5;
- 为了进一步提升R4和R5之间带宽的利用率,需要禁止R4与R5相互发送Hello使用填充字段;
- R4将直连网段4.0.X.0/24引入IS-IS且不需要聚合;R1将直连网段1.0.X.0/24引入IS-IS,并进行最优聚合,请使用最少命令;
- R2与R3禁止将4.0.0.0/24和4.0.2.0/24发布进区域49.0001,请使用ACL,禁用Route-policy;保证R4和R5能够学习到汇总之后网段1.0.X.0/24,禁用Route-policy; R6禁止将R1产生的汇总路由加入到路由表;但是当R1存在汇总之后网段1.0.X.0/24的路由信息时,需发布缺省路由。
配置文件:
AR1:
1 | [AR1]display current-configuration |
AR2:
1 | [AR2]dis current-configuration |
AR3:
1 | <AR3>dis current-configuration |
AR4;
1 | [AR4]DIS current-configuration ] |
AR5:
1 | <AR5>dis current-configuration |
AR6:
1 | <AR6>dis current-configuration |