2024年1月2日发(作者:)

WRITTEN BY BLA2KBL2OD

IS-IS NETWORK

DESIGN SOLUTIONS

(DEMO)

WRITTEN BY BLA2KBL2OD

AKA CCIE#15101

-1-

WRITTEN BY BLA2KBL2OD

模块一 原理篇

-2-

WRITTEN BY BLA2KBL2OD

CHAPTER.1 IS-IS的介绍

OSI参考模型,也叫做OSI协议栈,是由ISO开发出来的(请参见ISO 7498文档).OSI协议栈其中高层(上三层)偏向于应用,低层(下四层)偏向于数据传输服务.最初的OSI协议栈里用于网络服务的组件只定义了面向连接的通信服务(CONS).CONS是由两种规范制定出来的:

1.(请参见ISO 8208文档).

2.(请参见ISO 8348文档).

之后出现了的补完版本,叫

Amendment 1>.该规范定义了用于网络设备之间的无连接通信服务,即后来的无连接网络服务(CLNS).CONS和CLNS的区别就在于,后者不需要预先建立端到端的路径用于通信设备的数据包转发;取而代之的是在源和目标之前依靠路由器当前已知的最佳路径独立的转发数据包.

CLNS是靠如下3种ISO协议支持的:

1.无连接的网络协议(CLNP):ISO 8473.

-IS协议:ISO 9542.

-IS协议:ISO 10589.

这3种协议为独立的3种网络层协议共存于OSI协议栈的第3层.区分它们的办法是通过协议格式中第1个8位位组里的初始协议标识符(IPI):

CLNP类似IP,但是是为ISO传输协议提供网络服务,而不像IP是为了TCP/IP协议族的传输协议所服务.和IP不同的是,CLNP,ES-IS和IS-IS都是独立封装成数据链路帧.

ES-IS协议是用于同一网段或链路上的ISO端设备和直连的路由器自动的交换信息并邻接的协议.ES-IS协议的另一种数据包叫路由重定向(RD)数据包,它是路由器告知ISO端设备一条更为优先的路径信息.ISO的RD类似IP环境中的ICMP重定向.ES-IS的操作可以和IP环境里的ICMP,ARP和DHCP结合使用;但ES-IS和IP端工作站无关,这种环境依靠的是ARP进行层3到层2地址信息的映射,并且IP环境中,端工作站通常是使用默认网关的方式来发现与其直连的路由器.一些IS-IS的操作会依靠到ES-IS的功能,因此,即使是在一个纯IP的环境里使用IS-IS,仍然需要ES-IS做为支持.例如,路由器交换ES-IS相关的ISH信息后,才能促使点到点链路IS-IS的邻接.

IS-IS协议是用于在ISO CLNS环境里运行CLNP的路由器动态提供路由信息交换的协议,它采用的是逐跳选择的方式来进行路由选择.IS-IS的几大目标:

1.做为域内的路由协议.

2.对当前网络有整体认识并自动选择最佳路由.

3.当网络发生故障后可以快速收敛.

4.保证网络的稳定性.

-3-

WRITTEN BY BLA2KBL2OD

5.有效的利用网络资源,比如路由器的内存和CPU资源以及带宽.

为了达到这几个目标,IS-IS协议就被设计成了一种基于链路状态的IGP,并支持层1(L1)和层2(L2)的路由等机制,来保证上述目标的完成.

IETF RFC 1195号文档定义了IS-IS协议的版本,也就是如今我们所使用的集成IS-IS(integrated IS-IS)或叫它双IS-IS(dual IS-IS).集成IS-IS不仅适用于ISO CLNS环境,还适用于IP环境.

-4-

WRITTEN BY BLA2KBL2OD

CHAPTER.2 集成IS-IS的基本概念

由于路由器的作用是将流量从一个网络节点转发到另一个网络节点.因此ISO 10589文档里,把路由器称为中间系统(IS).IS-IS的路由域可以为纯IP环境,纯CLNP环境,或IP和CLNP的混合环境.正如之前所提到,IS-IS协议最初只是为了支持CLNP,RFC 1195文档将ISO 10589文档进行了扩展用以支持IP,也就是现在的集成 1195文档定义了:

1.纯IP环境只路由IP流量,但是支持处理和转发用于IS-IS操作的OSI数据包.

2.纯ISO环境只运载用于IS-IS操作的ISO流量.

3.双栈环境可以路由上述两种流量.

RFC 1195文档对这种IP和CLNP混合环境加以限制:同一区域(area)里的IS必须拥有一致的L1链路状态数据库,这就使得同一区域里的设备必须进行照相同的配置,要么是IP,要么是CLNP,要么是IP和CLNP的混合环境.但是放眼整个IS-IS路由域,就无此限制:某些区域只路由IP流量,某些区域只路由CLNP流量,剩下的区域同时路由两种流量.

IS-IS协议里也采用了和OSPF类似的区域的概念用于层次化的路由.在纯IP环境里,集成IS-IS仍然使用基于CLNP的传统编址方式来鉴别路由器.CLNP地址也叫网络服务访问点(NSAP).NSAP由3部分组成:

1.区域标识符(area ID).

2.系统标识符(SysID).

3.N选择符(NSEL).

区域ID相同的一组IS即为同一区域.在CLNP路由法则里,L1路由只交换SysID信息;L2路由需交换区域ID信息.IS-IS协议里路由器有3种路由角色:L1路由器,L2路由器和L1-2路由器.L1-2类似OSPF里的区域边界路由器(ABR),提供了到达其他区域的信息交换能力.在CISCO的路由器上配置IS-IS,默认即为L1-2路由器:

一些非面向连接的协议,比如IP和CLNP,把传输流量称之为数据包(packet).在ISO 10589文档里,数据包被称为协议数据单元(PDU).IS-IS的数据包分3类:

包:建立和维持IS-IS邻接关系.

2.链路状态包(link state packet,LSP):在IS-IS节点之间分发路由信息.

-5-

WRITTEN BY BLA2KBL2OD

3.序列号包(sequence number packet,SNP):用于控制路由信息的分发.

hello包又分如下3类:

1.局域网L1 hello包(LAN Level 1 hello packets,PDU类型:15).

2.局域网L2 hello包(LAN Level 2 hello packets,PDU类型:16).

3.点到点hello包(point-to-point hello packets,PDU类型:17).

LSP又分如下两类:

1.L1 LSP(PDU类型:18).

2.L2 LSP(PDU类型:19).

SNP又分如下4类:

1.L1完全序列号包(L1 CSNP,PDU类型:24).

2.L2完全序列号包(L2 CSNP,PDU类型:25).

3.L1部分序列号包(L1 PSNP,PDU类型:26).

4.L2部分序列号包(L2 PSNP,PDU类型:27).

每个IS-IS数据包的类型是由包头和一个带有特定数字的表示相关的路由信息的可选的变长字段组成的.每个变长字段包含1字节长的类型标签用于描述它所包含的协议信息.类型(type),长度(length)和值(value)就组成了TLV字段,TLV字段实际上就是一组变长字段的集合:

1.T:在ISO 10589文档里它叫做C(code);但是人们更喜欢采用RFC 1195文档里的叫法(T).它是一个数字,每个值有着不同的定义,比如如果T为128,代表IS-IS域内路由(TLV:IP Internal Reachability

Information).

2.L:TLV的总长.

3.V:表示TLV内容的值.

IS-IS协议提供的路由功能可以分为两类:

1.子网依靠(subnetwork-dependent):负责IS-IS的邻接.

2.子网独立(subnetwork-independent):负责IS-IS路由信息的交换.

在IS-IS里,子网是指数据链路层(data link layer).并且在IS-IS里,子网只有点到点(point-to-point)链路和广播型(broadcast)两种.

ISO CLNP将网络设备分为以下两类:

1.端系统(ES):比如主机和服务器.

2.中间系统(IS):比如路由器.

在IP环境里,可以通过诸如RIP,OSPF等路由协议,加上ARP完成数据的传输;在CLNP环境里,可以使用IS-IS和ES-IS来完成这一任务.在CISCO设备上,ES-IS是自动启用的无需手动设置.

ES-IS的作用是在纯ISO环境里完成主机和路由器的通信过程(比如DECnet Phase V网络结构);在IP环境里,ES-IS只和促进路由器与路由器邻接有关系,IP主机不参与这一过程(取而代之的是依靠ARP和IP默认网关).在CLNP环境里:

-6-

WRITTEN BY BLA2KBL2OD

在LAN环境里,ES和IS通过发送ESH和ISH信息彼此相互发现.ES将ESH信息发送到09-00-2B-00-00-05(AllIntermediateSystems);IS将ISH信息发送到09-00-2B-00-00-04(AllEndSystems).ES-IS允许ES定位离它最近的IS,来访问别的非直连网段.

IS-IS的邻接根据网络类型的不同而稍有不同,并且所采用的hello信息也不同:

-to-point IIH:用于点到点链路的邻接..

1 LAN IIH:用于广播型链路L1的邻接.

2 LAN IIH:用于广播型链路L2的邻接.

它们之间的区别在于,point-to-point IIH里用的是本地电路ID(circuit ID),而Level 1/2 LAN IIH用的是LAN ID;并且point-to-point IIH里没有优先级(priority)字段.

IIH发送的时间间隔(hello interval)是变化的,抖动的最大时间不超过原先的25%,这样方式了网络上同时出现大量IIH.在CISCO的设备上,对于普通路由器,hello interval是10秒;对于多路访问网络环境里的指定中间系统(DIS)是3.3秒.IS-IS使用hello乘数(multiplier)来决定邻接什么时候切断邻接关系,即保持时间(hold time).在CISCO设备上,乘数默认值为3,因此可以得出hold time为30秒.除了周期性发送IIH外,如下情况会触发IIH的发送:

信息的改变.

环境里,DIS的选举或重新指定.

在CISCO的设备上,点到点链路IIH hello interval默认为10秒.point-to-point IIH里的电路类型(circuit

type)为L1,L2和L1-2.当点到点链路的设备收到ISH信息后,它先检查本地数据库的SysID看和该ISH发送方的SysID是否一致,从而决定是否是新的邻接.如果一致,说明邻接关系已经存在,那么它将忽略该ISH;如果不一致,本地路由器将创建新的邻接,并把邻接状态设置为初始化(initializing)已经系统类型设置为未知(unknown).接下来,邻接关系会进入到建立(up)状态,系统类型也会由未知道转变成IS.在这一过程里,本地路由器无法决定它所发送的hello包是否到达了远程对端.正如ISO 10589文档所定义的,point-to-point IIH的TLV里不包含IS Neighbors TLV信息(类型:6),这也就使得我们无法使用三次握手的方式来决定hello包是否有被对方收到.这可能会出现一方的邻接状态建立而另一方未建立的局面.不过,一份Internet草案提交给IETF,通过采用三次握手的方法来保证邻接建立的可靠性,并且该草案向后兼容ISO 10589文档,该草案在IIH里采用Point-to-Point Adjacency State TLV字段(类型:240)保证传输的可靠性,不支持该TLV字段路由器会忽略这一TLV字段,从而向后兼容.

在默认的操作模式里,IIH将会被填充到出站接口的MTU大小.当路由器发送hello包的时候,根据你的配置,电路类型设置为L1,L2或者L1-2.路由器为每条链路分配一个唯一的本地电路ID.另外一个关键性的需求是,IS-IS的SysID长度必须一致.如果长度不一致(通过IIH里的ID Length字段鉴别),路由器将丢弃该设备的SysID为6字节的固定长度(ID Length的值为0),这就表示,如果要和CISCO设备相互操作,就必须把ID Length的值设置为0.另外,邻接双方支持的区域最大编址数必须匹配,默认CISCO设备-7-

WRITTEN BY BLA2KBL2OD

最多支持3个区域,最近的IOS版本可以支持到255个区域.同样的,如果双方支持的区域最大编址数不匹配,同样会导致IIH的丢弃.路由器通过比较IIH里的区域ID,来决定邻接类型为L2,还是默认的L1-2(默认,可以修改为L1).如果双方配置了认证,路由器将在IIH里附加Authentication TLV字段(类型:10).ISO 10589文档和RFC 1195文档只定义了基于明文的简单认证方式.当路由器切断邻接关系的时候,它会发送通知信息,从本地数据库里移除相应条目,并产生新的LSP进行洪泛.

广播型环境的邻接和点到点链路稍有不同:

1.当接口启用后,路由器立即发送IIH(这点和点到点链路里,收到ISH才触发IIH的发送有所不同).

2.广播型网络由一个叫做伪节点(pseudonode)的设备,也就是DIS,把多路访问环境将邻接管理复杂性降低到最小.

3.根据配置的不同,广播L1和L2的IIH到特定MAC地址.

4.邻接双方通过三次握手来对双向通信进行确认,保证可靠性(这和点到点链路里的Point-to-Point

Adjacency State TLV字段功能类似).

DIS的选举是由最高的接口优先级(默认值为64)和SNPA地址(MAC地址)所决定的.如下图:

LAN L1/2 IIH和point-to-point IIH相比,多了优先级(7位长度)字段,并且电路ID也被改成了LAN ID.L1和L2的IIH分别被广播到以下地址:

1.L1:01-80-C2-00-00-14(AllL1ISs).

2.L2:01-80-C2-00-00-15(AllL2ISs).

当LAN接口启用IS-IS后,路由器立即向外发送带有本地定义LAN ID(由自己的SysID和一个唯一的本地电路ID组成)的IIH.同时,该接口也会监听ESH,ISH和IIH用来发现直连的邻接设备.随后运行DIS选举进程,来决定L1和L2的DIS.接下来形成L1,L1-2邻接的过程和点到点链路类似.

正如之前所提到的,所有连接到同一LAN的IS-IS设备将hello包组播到AllL1ISs/AllL2ISs地址,继而相互邻接.当邻接关系建立后,开始交换链路状态信息,即LSP的洪泛.LSP洪泛的两个关键需求如下:

1.更新的时间精度和信息精度.

2.最小带宽占用和低处理成本.

和OSPF不同的是,IS-IS里没有备份DIS的选举;如果DIS出现故障,其他的路由器将立刻成为发送hello包的时间间隔默认是3.3秒,比其他路由器要频繁些,因此这就可以保证DIS在出现问题后被快速的取代.并且在广播型的多路访问环境里,周期性的数据库同步,可以允许网络无中断的情况下强占DIS的角色(这点也和OSPF里的DR不同).因此,如果现有环境里新加入一台接口优先级更高的设备,那么它将立刻成为 10589文档里的IS-IS规范定义了3种DIS:

Level 1 DIS(LAN L1 DIS).

Level 2 DIS(LAN L2 DIS).

ion-designated Level 2 IS(分区指定L2 DIS).

-8-

WRITTEN BY BLA2KBL2OD

分区指定L2 DIS提供了一种修复隔离的IS-IS L1区域的方法.在两个隔离的分区指定L2 DIS,经由L2骨干区域,建立IS-IS虚链路(virtual link),从而连接被隔离的L1区域(有点类似OSPF里的虚链路).不过遗憾的是CISCO的设备不支持该技术.LAN L1-2 DIS的作用,是负责:

1.产生伪节点的LSP,用于向整个网络上的设备报告当前网络环境信息.

2.进行LSP的洪泛.

接下来我们再来看看IS-IS的路由信息库(RIB).RIB是由两个组件组成:

1.链路状态数据库(LSDB).

2.转发数据库(Forwarding Database).

首先IS-IS路由器产生本地的链路状态信息,并从邻居那里接收到相应的链路状态信息,之后进行拷贝并继续向别的邻居宣告.同一区域里的IS-IS路由器通过SNP的同步,维系着相同的L1 LSDB;而L2 LSDB里保存着和其他区域相互通信的区域前缀信息.接下来,IS-IS路由器使用最短路径优先(SPF)算法创建出转发数据库.SPF分别为L1和L2运算单独的算法.IS-IS转发数据库,只保存着IS-IS的最佳路由.

-9-

WRITTEN BY BLA2KBL2OD

CHAPTER.3 集成IS-IS的编址

IS-IS的编址方式,只需要为每个节点设置一个NSAP地址,但也可以在IS-IS路由器上定义多个NSAP地址.NSAP地址格式如下图:

一个常见的NSAP地址由3部分组成:

1.区域ID.

.

.

当NSEL设置为0的时候,NSAP地址就叫网络实体命名(NET).在一个纯ISO CLNS环境里,普通的数据包的源和目标地址里的NSEL的值都为非0;但在纯IP环境里,比如Internet,没有CLNP的应用程序,因此我们常采用NET.

NSAP地址长度是不固定的,最大可以有20字节长.其中CISCO只支持6字节定长的只需要在本区域保持唯一性即可,而无需在整个IS-IS路由域里保持唯一.为IS-IS路由器配置多个NET,可以使IS-IS路由器多宿主到其他区域.在正常情况下,一个L1 IS-IS路由器只在本区域进行LSP洪泛;如果配置多个NET后,LSP洪泛的边界就被扩大到这几个区域上.例子如下:

R2配置如下:

!

router isis

net 49.0001.1921.6800.1024.00

net 49.0002.1921.6800.1024.00

!

刚开始R1和R2处于区域49.0001;R3处于区域49.0002.它们之间维系着L2的邻接关系.如果R2配置了第2个NET(49.0002.1921.6800.1024.00),由于它们共享49.0002这个区域前缀,R2和R3之间将建立L1的邻接,这就使得两个区域合并成了1个区域:

-10-

WRITTEN BY BLA2KBL2OD

如果将上述两张拓扑图顺序反转,那么我们还可以得出结论,可以通过配置多个NET,达到区域的分割作用.另外,我们还可以使用NET的重编号,在R1,R2和R3上同时配置两个NET,再把之前的第1个NET给移除,完成NET的重编号任务,这样可以实现无中断的平滑割接.

-11-

WRITTEN BY BLA2KBL2OD

CHAPER.4 IS-IS的链路状态数据库

IS-IS LSP包含如下信息:

1.区域信息.

2.邻接路由器.

子网.

4.度量(metric)信息.

5.认证(authentication)信息.

之前在前面提到过,IS-IS数据包分为:

包.

.

.

hello包用于建立和维持邻接关系;LSP分为L1 LSP和L2 LSP,负责路由信息的收集;而SNP保证了洪泛的可靠性.

下图是LSP的格式信息:

LSP有中一个字段叫做剩余生存周期(Remaining Lifetime),和这一字段相关联的两个值为LSP最大生存周期和LSP刷新时间间隔.ISO 10589文档定义的LSP最大生存周期为1200秒(20分钟);而CISCO的产品可以手动配置最大到653350秒.当源路由器生成一条LSP后,正于生存周期的时间设置为LSP的最大生存-12-

WRITTEN BY BLA2KBL2OD

周期,并且时间开始递减.当剩余生存周期减少到LSP刷新时间间隔时,源路由器将重新生成该LSP;否则当剩余生存周期减少到0后,该LSP将被清除掉.

而LSP刷新时间间隔是指即使网络没有变化,源路由器重新生成该LSP的时间间隔.当LSP被重新生成后,剩余生存周期的计时器将被重置为LSP最大生存周期,并重新进行洪泛.ISO 10589文档定义的LSP刷新时间间隔为900秒(15分钟);而CISCO的产品可以手动配置最大到653350秒.如果路由器不周期性的刷新LSP,当剩余生存周期的计时器减少为0后,在60秒后,所有保存的有该LSP拷贝信息的路由器将从自己的LSDB里清除该LSP.这60秒的最后机会也叫0生存周期(ZeroAgeLifetime),在CISCO产品上不可手动设置.在一个稳定的环境里,可以适当的将LSP刷新时间间隔的值设置的稍微大点,同样也要将LSP最大生存周期的时间稍稍高于LSP刷新时间间隔的值.

LSP ID用于鉴别不同的LSP,由以下3个组件组成:

:6字节.

2.伪节点ID(PSN ID):1字节.

编号:1字节.

如下是常规LSP的LSP ID:

.00-00

其中为SysID;第1个00为PSN ID,如果这个值非0,即为伪节点产生的LSP(PSN LSP);第二个00为LSP编号,用于LSP的分片,第1个分片的值为00.如果LSP的任意分片在传输过程中丢失,接收方会丢弃所收到的其他分片并要求所有LSP分片重传.LSP最大的体积为1492字节.ISO 10589文档要求hello包要填充到出站接口的MTU或LSP最大字节数,这就意味着邻接双方的MTU必须相等.如果做了主机名解析,LSP ID中的SysID部分还可以为主机名,如:RTA.00-00.

在LSP包头中有4字节用于LSP的序列号字段.当路由器首次连接到网络时,产生的LSP的序列号为1,当再次产生该LSP后序列号以1递增.LSP的序列号用于鉴别LSDB里LSP的新旧.而校验和字段用于对LSP的校验,来保证LSP信息的完整性.LSP校验和字段,在LSP的传播过程中是不会被修改的.如果一个路由器收到损坏的LSP,即LSP校验和不符,它将产生一个比该损坏的LSP的序列号值更高的LSP,并把它朝整个网络洪泛,并把之前损坏的LSP的剩余生存周期重置为0,这样其他的路由器就会用这个序列号较高的LSP,去更新之前的旧的LSP.通过这种方式,路由器来除去那些校验和不符的LSP.当然在CISCO的设备上,我们可以通过lsp-ignore-errors命令把这些损坏的LSP做本地日志记录,忽略这些损坏的LSP.

LSP包头中的最后一个字节,有一个1比特长的隔离字段(partition bit),一个4比特长的附着字段(attached bit),一个1比特长的超载字段(overload bit),和一个2比特长的IS类型(IS type)字段.

在原始的ISO 10589规范里,隔离字段用来描述通过创建一个到达L2的替代L1路径,来修复那些被隔离的L1区域.这种方式是在两个隔离L1区域具备L2功能的路由器,叫做隔离指定L2 IS上建立一种叫做虚链路(virtual link)或虚邻接(virtual adjacency)的特殊邻接关系.隔离指定L2 IS通过把隔离位设置为1的方式来广播虚邻接关系,这样L1路由器就可以在隔离的L1区域里转发数据:

-13-

WRITTEN BY BLA2KBL2OD

但是CISCO IOS不支持这种隔离区域的修复,所以通常把隔离位的值设置为0,并忽略那些值为1的LSP.

附着位位于LSP包头中最后一个字节的第4,5,6,7位.在ISO 10589规范里,L1路由器把去往其他区域的流量转发给离自己最近的L2路由器,L2路由器通过设置L1 LSP里的附着位,向那些L1路由器宣告自己的存在.即使L2路由器同时设置了L1和L2 LSP里的附着位,该行为也只关注L1 LSP里的附着位.

LSP包头中最后一个字节的第3位是超载位.如果该位设置为1,它表示路由器发生了超载条件.所谓超载条件是指路由器的性能由于内存和CPU资源不足而受到抑制.设置有超载位的LSP将不会被反复洪泛和用于最佳路径的计算,即产生了超载路由器将会被流量绕行,除非超载路由器是整个路径的最后一跳.CISCO

IOS里可以通过set-overload-bit命令来手动设置超载位.这样,我们可以通过设置超载位,让流量故意避开某些路由器.

IS类型字段用来表示该LSP是来自L1还是L2路由器,其中01表示L1,11表示L2;而值00和10未使用.

TLV 128和TLV 130包含了IP内部和外部可达性度量的信息.默认的度量标准(default),必须被所有的设备所支持,而延迟(delay),花费(expense)和错误(error)为可选度量标准.这四种度量标准相互独立,上述可选三种度量标准用于QoS路由,但目前CISCO IOS只支持默认的度量标准.并且这四种度量标准里,只有默认度量,有内部(internal)和外部(external)之分.在CISCO IOS上,度量是根据出站接口所连链路而设定的,并且CISCO IOS不会根据链路带宽自动设置度量.不管链路带宽如何,默认每条链路的度量都为10.根据ISO 10589规范,规定从源到目标设备的开销最大为1023,每条链路开销最小为1,最大为63.而后续的IS-IS广义度量(wide metric),TLV 22和135,将度量值的上限进行了扩展.TLV 22将24个比特用于接口度量;而链路总开销,由之前的10比特,扩展到当前32比特.在CISCO IOS里可以使用metric-style wide启用广义度量功能;而使用metric-style transition可以将狭义度量(narrow metric)平滑过渡到广义度量.

-14-

WRITTEN BY BLA2KBL2OD

数据校验方面,IS-IS并不使用数据链路层循环冗余校验码(CRC)来对数据的完整性进行校验,它使用LSP的校验和字段来进行数据校验.

SNP用来保证LSP洪泛的完整性.SNP分以下两种:

.

.

CSNP和PSNP享有相同的数据包格式,承载着LSP的摘要信息.它们之间主要的不同点在于,CSNP是路由器它自身LSDB里所有已知LSP摘要的集合;而PSNP只是某个特定子网LSP的摘要信息.CSNP和PSNP均分L1和L2两种.在广播型环境里,DIS周期性的广播CSNP.而PSNP的作用是用来在点到点链路里确认LSP是否收到,以及不论哪种网络环境里,通过PSNP来请求那些未收到的LSP.

和OSPF一样,IS-IS也需要通过对LSP的洪泛,来保证LSDB的同步.每个IS-IS路由器聚集周围的信息,比如它自身和邻居的SysID,直连IP子网信息等,存放在LSP里.LSP通过洪泛机制,最终到达区域里的每个节点.在稳定条件下,每个区域里所有路由器的L1 LSDB是一致的.当LSDB同步后,SPF算法计算出到达目标网络的最佳路径,并把最佳路径放置在转发数据库里;而L2 LSDB存储着不同区域之间的信息.

IS-IS也有一套完整的计时器和标记体系来管理一些像洪泛和SPF计算的进程.这类体系用来优化各进程的资源占用,比如内存和带宽的占用,计时器还可以帮助最佳路径的收敛.标记方面,路由发送信息(SRM)和序列号发送(SSN)标记在洪泛和数据库同步过程中扮演重要角色.SRM标记用来控制LSP的发送;而SSN标记用来:

1.在点到点链路确认LSP的收到与否.

2.在广播型环境里数据库同步过程中请求完整的LSP信息.

下图是点到点链路LSP的洪泛过程:

-15-

WRITTEN BY BLA2KBL2OD

下图是广播型环境LSP的洪泛过程:

和OSPF不同,IS-IS里网络环境只分为点到点型和广播型,并未指定NBMA网络的附加类型.因此通常采用点到点子接口或多点子接口的方式进行配置.但这样可能会产生大量额外的LSP洪泛.因此,可以采用IS-IS互联组(mesh group)来解决这一难题.通常情况下,路由器会把LSP从除了收到该LSP以外的所有接口洪泛出去.IS-IS互联组将路由器接口,尤其是那些NBMA网络的各种子接口进行分组,那么从互联组里的某一个子接口收到的LSP,是不会洪泛到该组里的其他子接口上去.互联组的这一特性,是由于IS-IS假定所有路由器都处于全互联(full mesh)的状态.通过互联组,可以解决LSP洪泛的冗余问题.但如果全互联状态被打破,某些路由器可能就收不到相应的LSP的拷贝.因此,要保证有洪泛的替代路径以便所有节点都能收到相应的LSP.如下图:

-16-

WRITTEN BY BLA2KBL2OD

在上图所描述的环境里,将A,C,D和F分进互联组,而B和E用来防止在互联组的全互联情况被打破后,做LSP洪泛的替代路径.在这种情况下,假如A从互联组里的其他成员收到LSP,A将把该LSP只洪泛给非互联组成员(B和E).这一特性在CISCO IOS已经得到支持,并提交给IETF来做为一个行业标准特性.

LSP的生成时间间隔分为两种:

1.最大生成时间间隔:也叫LSP刷新时间间隔.默认900秒(15分钟).

2.最小生成时间间隔:连续两个LSP生成的时间间隔,默认30秒.

两个连续的LSP的传输时间间隔为33毫秒.如果在传输过程中遭遇丢失现象,LSP重传的时间间隔默认为5秒.

-17-

WRITTEN BY BLA2KBL2OD

模块二 实验篇

-18-

WRITTEN BY BLA2KBL2OD

CHAPTER.5 配置集成IS-IS

实验一:配置基本的IS-IS

配置步骤如下:

1.如果要将IS-IS运行在双栈环境,先启用CLNS路由.一旦启用IS-IS进程后,会自动启用该命令:

Router(config)#clns routing

2.启用IS-IS,可选关键字tag做为本地标识:

Router(config)#router isis [tag]

3.定义NET地址:

Router(config-router)#net {NET}

4.在接口启用IS-IS:

Router(config-if)#ip router isis [tag]

5.如果将IS-IS运行在双栈环境,还需在接口启用CLNS路由:

Router(config-if)#clns router isis [tag]

示例:

R1配置如下:

!

router isis

net 49.0001.0000.0000.0001.00

!

interface FastEthernet 0/0

ip address 192.168.0.1 255.255.255.0

ip router isis

!

R2配置如下:

!

router isis

net 49.0001.0000.0000.0002.00

!

interface FastEthernet 0/0

ip address 192.168.0.2 255.255.255.0

ip router isis

-19-

WRITTEN BY BLA2KBL2OD

!

interface Serial 0/0

ip address 10.0.0.1 255.255.255.252

ip router isis

!

R3配置如下:

!

router isis

net 49.0002.0000.0000.0003.00

!

interface Serial 0/0

ip address 10.0.0.2 255.255.255.252

ip router isis

!

实验二:在NBMA网络上配置IS-IS之ATM点到点子接口方式

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.定义NET地址:

Router(config-router)#net {NET}

3.建立ATM PVC:

Router(config-subif)#atm pvc {vcd vpi vci} {aal-encap}

4.在接口启用IS-IS:

Router(config-subif)#ip router isis [tag]

示例:

R1配置如下:

!

clns routing

!

interface ATM1/0.1 point-to-point

ip address 10.0.0.1 255.255.255.252

ip router isis

atm pvc 2 0 10 aal5snap

!

router isis

-20-

WRITTEN BY BLA2KBL2OD

net 49.0001.0000.0000.0001.00

!

R2配置如下:

!

clns routing

!

interface ATM1/0.1 point-to-point

ip address 10.0.0.2 255.255.255.252

ip router isis

atm pvc 2 0 10 aal5snap

!

router isis

net 49.0002.0000.0000.0002.00

!

实验三:在NBMA网络上配置IS-IS之ATM多点子接口方式

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.定义NET地址:

Router(config-router)#net {NET}

3.定义ATM映射组:

Router(config-subif)#map-group {name}

4.在接口启用IS-IS:

Router(config-subif)#ip router isis [tag]

5.创建ATM映射列表:

Router(config)#map-list {name}

6.增加目标IP地址到本地的映射:

Router(config-map-list)#ip {ip-address} atm-vc {vcd} broadcast

7.增加目标NET地址到本地的映射:

Router(config-map-list)#clns {NET} atm-vc {vcd} broadcast

示例:

R1配置如下:

!

clns routing

!

-21-

WRITTEN BY BLA2KBL2OD

interface ATM1/0.1 multipoint

ip address 10.0.0.1 255.255.255.252

ip router isis

atm pvc 2 0 10 aal5snap

map-group ISC

!

router isis

net 49.0001.0000.0000.0001.00

!

map-list ISC

ip 10.0.0.2 atm-vc 2 broadcast

clns 49.0002.0000.0000.0002.00 atm-vc 2 broadcast

!

R2配置如下:

!

clns routing

!

interface ATM1/0.1 multipoint

ip address 10.0.0.2 255.255.255.252

ip router isis

atm pvc 2 0 10 aal5snap

map-group ISC

!

router isis

net 49.0002.0000.0000.0002.00

!

map-list ISC

ip 10.0.0.1 atm-vc 2 broadcast

clns 49.0001.0000.0000.0001.00 atm-vc 2 broadcast

!

实验四:IS-IS的IP路由汇总之L1-2与L2类型

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.配置IP路由汇总,如不指定路由级别,那么宣告出来的汇总路由的为L2类型:

Router(config-router)#summary-address {ip-address} {mask} [level-1|level-1-2| level-2]

[tag tag] [metric metric]

示例:

-22-

WRITTEN BY BLA2KBL2OD

R1配置如下:

!

interface Loopback 0

ip address 172.16.0.1 255.255.255.0

ip router isis

!

interface Loopback 1

ip address 172.16.1.1 255.255.255.0

ip router isis

!

interface Loopback 2

ip address 172.16.2.1 255.255.255.0

ip router isis

!

interface Loopback 3

ip address 172.16.3.1 255.255.255.0

ip router isis

!

interface Ethernet 0

ip address 10.0.0.1 255.255.255.252

ip router isis

!

router isis

net 49.0001.0000.0000.0001.00

summary-address 172.16.0.0 255.255.252.0 level-1-2 tag 1 metric 11

!

实验五:IS-IS的IP路由汇总之L1类型

配置步骤如下:

1.要宣告一条L1的汇总路由,只有通过重分发(redistribute)的方式,并且在进行重分发的同时,必须指定级别为L1.如果重分发的协议为静态路由,还必须指定关键字ip.而内部和外部度量类型的区别在于,外部度量的值比内部度量的值大128:

Router(config-router)#redistribute {protocol} [ip] [metric metric] [metric-type

{internal|external} [level-1|level-1-2| level-2] [route-map map-name]

2.配置路由汇总的时候,同时指定汇总路由的级别为L1.另外,当L1的汇总路由再传递到别的区域时,由于不同的区域只传递L2的路由,因此该L1的汇总路由会变为L2的汇总路由:

Router(config-router)#summary-address {ip-address} {mask} [level-1|level-1-2| level-2]

[tag tag] [metric metric]

-23-

WRITTEN BY BLA2KBL2OD

示例:

R1配置如下:

!

interface Loopback 0

ip address 172.16.0.1 255.255.255.0

!

interface Loopback 1

ip address 172.16.1.1 255.255.255.0

!

interface Loopback 2

ip address 172.16.2.1 255.255.255.0

!

interface Loopback 3

ip address 172.16.3.1 255.255.255.0

!

interface Ethernet 0

ip address 10.0.0.1 255.255.255.252

ip router isis

!

router isis

net 49.0001.0000.0000.0001.00

redistribute connected metric 11 metric-type internal level-1

summary-address 172.16.0.0 255.255.252.0 level-1

!

实验六:IS-IS的IP默认路由

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.宣告L2类型的IP默认路由:

Router(config-router)#default-information originate [route-map map-name]

示例:

-24-

WRITTEN BY BLA2KBL2OD

R3配置如下:

!

router isis

net 49.0002.0000.0000.0003.00

default-information originate

!

interface FastEthernet 0/0

ip address 192.168.0.2 255.255.255.0

ip router isis

!

interface Serial 0/0

ip address 10.0.0.1 255.255.255.252

ip router isis

!

实验七:IS-IS的IP从地址的宣告

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.配置IP从地址,当主IP地址被宣告后,从地址将自动被宣告:

Router(config-if)#ip address {ip-address} {mask} secondary

示例:

R1配置如下:

!

interface Loopback 0

ip address 172.16.0.1 255.255.255.0

ip address 172.16.4.1 255.255.255.0 secondary

!

interface Loopback 1

-25-

WRITTEN BY BLA2KBL2OD

ip address 172.16.1.1 255.255.255.0

ip address 172.16.5.1 255.255.255.0 secondary

!

interface Loopback 2

ip address 172.16.2.1 255.255.255.0

ip address 172.16.6.1 255.255.255.0 secondary

!

interface Loopback 3

ip address 172.16.3.1 255.255.255.0

ip address 172.16.7.1 255.255.255.0 secondary

!

interface Ethernet 0

ip address 10.0.0.1 255.255.255.252

ip router isis

!

router isis

net 49.0001.0000.0000.0001.00

redistribute connected metric 11 metric-type internal level-1

summary-address 172.16.0.0 255.255.248.0 level-1

!

实验八:IS-IS的安全性之明文认证

配置步骤如下:

1.配置IS-IS邻居间认证:

Router(config-if)#isis password {password} [level-1|level-2]

2.配置IS-IS区域认证:

Router(config-router)#area-password {password}

3.配置IS-IS域内认证:

Router(config-router)#domain-password {password}

示例:

R1配置如下:

!

router isis

net 49.0001.0000.0000.0001.00

-26-

WRITTEN BY BLA2KBL2OD

area-password Nortel

domain-password juniper

!

interface FastEthernet 0/0

ip address 192.168.0.1 255.255.255.0

ip router isis

isis password cisco level-1

!

R2配置如下:

!

router isis

net 49.0001.0000.0000.0002.00

area-password Nortel

domain-password juniper

!

interface FastEthernet 0/0

ip address 192.168.0.2 255.255.255.0

ip router isis

isis password cisco level-1

!

interface Serial 0/0

ip address 10.0.0.1 255.255.255.252

ip router isis

!

R3配置如下:

!

router isis

net 49.0002.0000.0000.0003.00

domain-password juniper

!

interface Serial 0/0

ip address 10.0.0.2 255.255.255.252

ip router isis

!

实验九:IS-IS的安全性之MD5加密认证

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.定义认证钥匙链(key chain):

Router(config-router)#authentication key-chain {name} [level-1|level-2]

3.定义认证方式:

-27-

WRITTEN BY BLA2KBL2OD

Router(config-router)#authentication mode {md5|text} [level-1|level-2]

4.可以基于接口的启用认证:

Router(config-if)#isis authentication key-chain {name} [level-1|level-2]

5.定义只对出站LSP进行认证.如果在启用MD5加密认证之前先使用该命令,可以做到认证的平滑过渡:

Router(config-router)#authentication send-only [level-1|level-2]

示例:

R1配置如下:

!

router isis

net 49.0001.0000.0000.0001.00

authentication key-chain cisco level-1

authentication mode md5 level-1

authentication send-only level-1

!

interface FastEthernet 0/0

ip address 192.168.0.1 255.255.255.0

ip router isis

!

R2配置如下:

!

router isis

net 49.0001.0000.0000.0002.00

authentication key-chain cisco level-1

authentication mode md5 level-1

authentication send-only level-1

authentication send-only level-2

!

interface FastEthernet 0/0

ip address 192.168.0.2 255.255.255.0

ip router isis

!

interface Serial 0/0

ip address 10.0.0.1 255.255.255.252

-28-

WRITTEN BY BLA2KBL2OD

ip router isis

isis authentication key-chain juniper level-2

!

R3配置如下:

!

router isis

net 49.0002.0000.0000.0003.00

authentication mode md5 level-2

authentication send-only level-2

!

interface Serial 0/0

ip address 10.0.0.2 255.255.255.252

ip router isis

isis authentication key-chain juniper level-2

!

实验十:IS-IS的区域间路由泄露

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.修改度量标准为广义度量:

Router(config-router)#metric-style wide

2.配置区域间路由泄露.在配置路由泄露的时候要注意,重分发的度量类型必须为内部类型:

Router(config-router)#redistribute isis ip {level-1|level-2} into {level-2|level-1}

[[distribute-list ACL-number]|[route-map map-name]]

示例:

R1配置如下:

!

interface Loopback 0

ip address 172.16.0.1 255.255.255.0

ip router isis

!

interface Loopback 1

ip address 172.16.1.1 255.255.255.0

ip router isis

!

interface Loopback 2

-29-

WRITTEN BY BLA2KBL2OD

ip address 172.16.2.1 255.255.255.0

ip router isis

!

interface Loopback 3

ip address 172.16.3.1 255.255.255.0

ip router isis

!

interface Ethernet 0

ip address 10.0.0.1 255.255.255.252

ip router isis

!

router isis

net 49.0001.0000.0000.0001.00

metric-style wide

summary-address 172.16.0.0 255.255.252.0 level-2

redistribute isis ip level-2 into level-1

!

实验十一:IS-IS的IS类型修改

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.全局修改IS类型:

Router(config-router)#is-type [level-1|level-1-2|level-2-only]

3.可以基于接口修改IS类型:

Router(config-if)#isis circuit-type [level-1|level-1-2|level-2-only]

示例:

R1配置如下:

!

router isis

net 49.0001.0000.0000.0001.00

is-type level-1

!

interface FastEthernet 0/0

-30-

WRITTEN BY BLA2KBL2OD

ip address 192.168.0.1 255.255.255.0

ip router isis

!

R2配置如下:

!

router isis

net 49.0001.0000.0000.0002.00

is-type level-1

!

interface FastEthernet 0/0

ip address 192.168.0.2 255.255.255.0

ip router isis

!

interface Serial 0/0

ip address 10.0.0.1 255.255.255.252

ip router isis

isis circuit-type level-2-only

!

R3配置如下:

!

router isis

net 49.0002.0000.0000.0003.00

!

interface Serial 0/0

ip address 10.0.0.2 255.255.255.252

ip router isis

isis circuit-type level-2-only

!

实验十二:IS-IS的度量修改

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.全局修改度量值:

Router(config-router)#metric {metric} [level-1|level-2]

3.基于接口修改度量值:

Router(config-if)#isis metric {metric|maximum} [level-1|level-2]

4.修改度量类型为狭义,广义标准,或者两者都支持:

Router(config-router)#metric-style {wide|narrow|transition}

示例:

-31-

WRITTEN BY BLA2KBL2OD

R1配置如下:

!

clns routing

!

interface ATM1/0.1 point-to-point

ip address 10.0.0.1 255.255.255.252

ip router isis

atm pvc 2 0 10 aal5snap

!

router isis

net 49.0001.0000.0000.0001.00

metric-style wide

metric 100

!

R2配置如下:

!

clns routing

!

interface ATM1/0.1 point-to-point

ip address 10.0.0.2 255.255.255.252

ip router isis

atm pvc 2 0 10 aal5snap

isis metric 200

!

router isis

net 49.0002.0000.0000.0002.00

metric-style wide

!

实验十三:IS-IS各类计时器的修改

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.修改hello包发送时间间隔.当采用关键字mininal之后,hold time将被修改为1秒:

Router(config-if)#isis hello-interval {seconds|minimal} [level-1|level-2]

3.修改hello包发送时间与hold time的倍数关系,默认为3倍:

Router(config-router)#isis hello-multiplier {multiplier} [level-1|level-2]

-32-

WRITTEN BY BLA2KBL2OD

4.修改连续两次SPF算法计算的时间间隔,以及初始化和后续SPF计算的时间延迟,默认参数分别为10秒,5500毫秒和5500毫秒:

Router(config-router)#spf-interval [level-1|level-2] {max-wait} [initial second]

5.修改CSNP发送的时间间隔:

Router(config-router)#isis csnp-interval {seconds} [level-1|level-2]

6.修改LSP的传输延迟.默认33毫秒:

Router(config-if)#isis lsp-interval {msecs}

7.修改LSP重传的时间间隔.默认为5秒:

Router(config-if)#isis retransmit-interval {seconds}

8.修改PRC计算的时间间隔,以及初始化和后续PRC计算的时间延迟,默认参数分别为5秒,2000毫秒和5000毫秒:

Router(config-router)#prc-interval {max-wait} [initial second]

示例:

R1配置如下:

!

clns routing

!

interface ATM1/0.1 point-to-point

ip address 10.0.0.1 255.255.255.252

ip router isis

atm pvc 2 0 10 aal5snap

isis hello-interval 5

isis lsp-interval 15

isis retransmit-interval 3

!

router isis

net 49.0001.0000.0000.0001.00

isis hello-multiplier 5

spf-interval 15 7500 7500

isis csnp-interval 15

!

R2配置如下:

!

clns routing

!

interface ATM1/0.1 point-to-point

-33-

WRITTEN BY BLA2KBL2OD

ip address 10.0.0.2 255.255.255.252

ip router isis

atm pvc 2 0 10 aal5snap

isis hello-interval 5

!

router isis

net 49.0002.0000.0000.0002.00

isis hello-multiplier 5

prc-interval 7 3000 7000

!

实验十五:IS-IS的优先级修改

配置步骤如下:

1.修改IS-IS优先级别,范围从0到127,默认为64:

Router(config-if)#isis priority {priority} [level-1|level-2]

2.将特定接口的出站LSP做标记:

Router(config-if)#isis tag {tag}

3.将打上标记的路由前缀的优先级设置的更高,这样可以达到快速收敛的目的:

Router(config-router)#ip route priority high tag {tag}

示例:

R1配置如下:

!

interface Loopback 0

ip address 172.16.0.1 255.255.255.0

ip router isis

!

interface Loopback 1

ip address 172.16.1.1 255.255.255.0

ip router isis

!

interface Loopback 2

ip address 172.16.2.1 255.255.255.0

ip router isis

!

interface Loopback 3

ip address 172.16.3.1 255.255.255.0

ip router isis

!

-34-

WRITTEN BY BLA2KBL2OD

interface Ethernet 0

ip address 10.0.0.1 255.255.255.252

ip router isis

isis priority 127

isis tag 1

ip route priority high tag 1

!

router isis

net 49.0001.0000.0000.0001.00

!

实验十六:IS-IS的被动接口

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.将接口设置为被动状态:

Router(config-router)#passive-interface {default|type/number}

3.只宣告被抑制的接口:

Router(config-router)#advertise-passive-only

示例:

R1配置如下:

!

interface Loopback 0

ip address 172.16.0.1 255.255.255.0

ip router isis

!

interface Loopback 1

ip address 172.16.1.1 255.255.255.0

ip router isis

!

interface Loopback 2

ip address 172.16.2.1 255.255.255.0

ip router isis

!

interface Loopback 3

ip address 172.16.3.1 255.255.255.0

ip router isis

!

-35-

WRITTEN BY BLA2KBL2OD

interface Ethernet 0

ip address 10.0.0.1 255.255.255.252

ip router isis

!

router isis

net 49.0001.0000.0000.0001.00

advertise-passive-only

passive-interface default

!

实验十七:IS-IS的性能调试

配置步骤如下:

1.启用IS-IS:

Router(config)#router isis [tag]

2.设置IS-IS可以指定的最大地址数,范围从3到234:

Router(config-router)#max-area-addresses {number}

3.将只有两台设备的广播型环境更改为点到点环境:

Router(config-if)#isis network point-to-point

4.基于接口暂时性的关闭IS-IS:

Router(config-if)#isis protocol shutdown

5.全局关闭IS-IS:

protocol shutdown

6当LSP装满条目后,适当丢弃来自外部的重分发路由,或者丢弃来自别的路由级别的路由条目:

Router(config-router)#lsp-full suppress {external [interlevel]}

7.忽略LSP的校验和失败行为:

Router(config-router)#ignore-lsp-errors

8.禁止hello包的填充:

Router(config-if)#no isis hello padding

示例:

R1配置如下:

!

interface Loopback 0

ip address 172.16.0.1 255.255.255.0

ip router isis

isis protocol shutdown

!

interface Loopback 1

ip address 172.16.1.1 255.255.255.0

-36-

WRITTEN BY BLA2KBL2OD

ip router isis

!

interface Loopback 2

ip address 172.16.2.1 255.255.255.0

ip router isis

!

interface Loopback 3

ip address 172.16.3.1 255.255.255.0

ip router isis

!

interface Ethernet 0

ip address 10.0.0.1 255.255.255.252

ip router isis

isis network point-to-point

no isis hello padding

!

router isis

max-area-addresses 5

net 49.0001.0000.0000.0001.00

net 49.0002.0000.0000.0001.00

net 49.0003.0000.0000.0001.00

net 49.0004.0000.0000.0001.00

net 49.0005.0000.0000.0001.00

lsp-full suppress external interlevel

ignore-lsp-errors

!

-37-

WRITTEN BY BLA2KBL2OD

模块三 案例篇

-38-

WRITTEN BY BLA2KBL2OD

CHAPTER.6 IS-IS网络设计原则

经典的IP网络设计,是网络分为三个组件:

1.核心层(core layer).

2.汇聚层(distribution layer).

3.接入层(access layer).

而经典的IS-IS网络设计,是将网络分为L2骨干区域和L1路由区域:

L1路由区域通常做为末节(stub)区域,L1-2路由器在L1 LSP里设置ATT位.因此L1区域里的路由器会根据默认路由寻找离自己最近的L1-2路由器.但是这样一来,可能会产生路由次优化的问题:

为了解决上述问题,CISCO IOS里提供了一种叫做区域间路由泄露的特性.当启用该特性后,L1-2路由器会把某个特定IP前缀的信息从L2 LSDB注入到L1 LSDB.在设计IS-IS网络的时候,另外一点要注意的是,L2-39-

WRITTEN BY BLA2KBL2OD

骨干区域必须连续,换句话说,L1路由器不应该夹在两台具备L1-2或L2路由器之间.

通常在进行网络设计的时候,先从核心层入手.核心层最主要的功能就是快速的交换IP数据包.因此,路由器CPU资源占用情况就不得不考虑在内.尽可能的使用路由汇总技术.核心层是否要分割成不同的骨干区域还是要根据节点数来定.就目前而言,理论上一个IS-IS区域最多可以放1000台路由器.

和任何一种IGP一样,IS-IS也有不足与限制之处.比如在广义度量出现之前,狭义度量就是一大限制.区域方面,在区域间路由泄露特性出现之前,如果我们想要把某个区域配置成类似OSPF里的末节区域(stub

area),即把IS-IS区域里除了连接到L2骨干区域以外所有的路由器都定义为L1路由器,但这样一来,去往其他区域唯一的办法就是寻找离自己最近的L1-2路由器,这样可能会产生路由的次优化问题.当然,如果不想解决这种问题也无可厚非,但如果你想把IS-IS部署在ISP网络里,并和BGP协同操作的时候,这种片面选路的方式,就成为IS-IS一大限制.IS-IS还有一大限制,是许多IGP都有的,即所支持路由条目数量的上限.目前IS-IS路由器支持最多30000条路由条目,这个数字是由IS-IS路由器最多支持256个LSP的分片,每个分片最多携带121个IP前缀所得来的.

度量方面,如果现有环境不支持广义度量标准,那只有根据路由策略,手动指定链路开销,并且和OSPF不同,IS-IS不会根据链路带宽自动配置每条链路的开销.有些应用,比如多协议的标签交换流量工程(MPLS

TE)只支持广义度量.在配置方面,狭义和广义度量可以并存,这是为了度量标准的迁移.

除了层次化的设计,IS-IS网络也可以采用平坦式的网络设计,将所有节点都划分在同一区域里.这样一来,所有的路由器都维系着一份相同的LSDB,也无需考虑区域间路由泄露等问题.采用这种结构可能会导致SPF运算的过于频繁和复杂.但我们可以采用部分路由计算(PRC)来降低SPF运算的复杂性. IP前缀是定位于SPF树的末节部分(即树叶).这样,某个IP子网的变化只会触发PRC而不会引起SPF进行完整的运算,从而对CPU资源进行节约.比如在CISCO GSR 12000系列路由器上,IS-IS对CPU资源的占用率不到1%.

在ISP网络里,很多时候IS-IS做为IGP,为BGP解析下一跳和保证本地子网的可达性.当同时运行IS-IS和BGP的路由器重启后,即使IS-IS已经宣告了下一跳的可达性,但它在转发流量之前可能没有足够的时间来接收完整的BGP表,这样一来,某些流量就会被丢弃.为了避免这一情况的发生,可以设置IS-IS LSP的超载位,来告诉其他路由器在计算最佳路径的时候,先不要把这台路由器考虑进去.然后,等这台路由器接收完整的BGP表之后,把超载位设置为0,重新洪泛LSP.这一特性在CISCO IOS里可以通过命令set-overload-bit on-startup wait-for-bgp来完成.在多数情况下,BGP的收敛时间小于5分钟.不过根据一些特定因素,比如BGP对等体数量,链路带宽等因素,这个时间会稍稍增加.CISCO IOS会在10分钟后清除超载位.

在IS-IS网络收敛方面,首先要提到链路故障检测.比如连接串行链路的路由器串行接口通常是根据CSU/DSU的电信号来检测物理层是否正常;而光纤接口是根据光信号进行检测.这类故障检测通常在毫秒级的时间单位内就能被检测到.当然光凭这一点,是无法保证链路的完整性和有效性,因此还需要第二层的keepalive信息,比如HDLC和PPP的keepalive信息.这类第二层协议的keepalive信息和第三层协议的hello包作用相似.默认keepalive信息每10秒发送一次;而连续30秒未收到后续keepalive信息,将宣告链路失效.如果第二层的检测正常后问题依然存在,还要进行第三层的检测.

在CISCO IOS里,IIH信息默认的holdtime为30秒.在最近的CISCO IOS版本里,可以通过isis

hello-interval minimal命令将holdtime的值设置为1秒;这个时候IIH的发送时间间隔就被更改为333-40-

WRITTEN BY BLA2KBL2OD

毫秒.通过对IIH信息holdtime值的修改,可以达到调整IS-IS收敛速度的功效.但在有些ISP里,holdtime被修改为60秒,这是为了保持网络的稳定性.当把holdtime更改为1秒后,此时CPU资源,带宽资源以及内存缓冲区资源的占用情况较之前高出很多.因此,可以通过no hello-padding命令去除IIH信息里的填充物,来节约资源占用情况.虽然这样可以快速检测出链路故障,但可能会导致网络的不稳定;在LSP传输方面,如果传输时间间隔采用默认的33毫秒,假如LSDB有600条LSP,那么洪泛完整的LSDB就需要20秒的时间.不过可以通过降低LSP传输时间间隔的方式,来达到加快IS-IS网络收敛的目的;算法计算方面,可以通过spf-interval命令修改SPF计算的时间间隔;使用prc-interval命令修改PRC计算的时间间隔.

-41-

WRITTEN BY BLA2KBL2OD

CHAPTER.7 IS-IS案例分析

时间关系,将在过些日子发布完整版本,希望我的笔记可以帮助各位对IS-IS有更深层的理解.

关注完整版的发布,请访问下面这个帖子:

/bbs/?tid=15043

完整版计划加入一些工程CASE和排错心得.请各位多多支持!

ps.新加坡太热!网络太龟速!

红头发. 07.9.12

-42-