ISIS 知识点

IS-IS地址
 
NET地址 = NSAP + 00(NSEL) 例:49.0000.0000.0001.00(16进制)
 
NESL类似于IP报文中的协议位,标志了不同的协议号,可以说是承载上层信息的字段(因为IS-IS本身不依赖于IP协议,也就不涉及IP相应的服务,只能自己来),目前所学这里就是00。
 
NSAP = Area ID + System ID   Area ID 定义所属区域,System ID 定义区域内每一个节点,其中Area ID 可为1-8 bytes,而System ID 固定为6 bytes。
 
IS-IS是在链路层上直接封装的路由协议,基于CLNS 构架,有节点概念 & 无接口概念,所以NET地址标志的是一台路由器,也就是名称中提到的IS(Intermediate System 中间系统)。
 
IS-IS在链路层定义了Circuit 和相应的SNAP(subnetwork point of attachment)。SNAP是由OSI 定义的Layer 2地址,针对不同的Circuit类型各有不同,比如在Ethernet中为Mac地址,在Frame-Relay中为DLCI值。
 
在Ethernet中,System ID (6 Bytes) 与Circuit ID (1 Byte) 连用来标记链路。比如1921.6800.0001.01(16进制表示,最后两位至FF),最后的01就是用来区别Router的各个接口,不过在Cisco路由器中,Circuit ID与主机名组合而不是System ID,比如RouterA.01。
 
保证System ID 在区域内唯一的方法是使用接口的Mac 地址或IP 地址,出于可读性的考虑建议使用IP地址,形式为 192.168.0.1  -->  1921.6800.0001。
 
IS-IS 基于CLNS网络设计,后来由于TCP/IP 协议族的兴起发展为集成IS-IS,对IP协议给予支持。不过即使是这样,在IS-IS中给接口配IP地址仍旧像挂一片叶子一样无足轻重,有Circuit ID 和 System ID,网络已经可以组建起来,IP地址本身不参与SPF运算(这里指IS-IS 本身的SPF,分支节点为各路由器,而不是IP网段)。
 
IS-IS链路
 
IS-IS支持的网络类型只有两种:Broadcast and Point-to-Point ,没有NBMA的概念。在NBMA主接口,点到多点子接口上IS-IS 都是发送LAN Hello,即当成广播型链路来思考,如果处于同一IP子网的接口没有形成邻接关系,对应的下一跳网络不会装进路由表。
 
在NBMA上部署IS-IS时,注意在广播模式下必须使用CLNS Map,并加上broadcast 关键字,拓扑为Full-Mesh。不过还是强烈建议使用点到点模式,应用子接口使每一条PVC对应一个IP子网,否则可能会有路由丢失。
 
CLNS MAP 命令:   frame-relay  map  clns  105  broadcast
 
Broadcast链路中,Level-1 和Level-2 区域各选举自己的DIS,不像Level-1区域每个Area选举一个DIS,Level-2路由器形成邻接关系并不受Area ID 的影响,所以选举DIS也是如此。Level-1 & 2 的DIS也不一定相同。
 
DIS是路由器的一个接口,同OSPF比较而言没有备份DIS,相应的解决备份问题的机制是DIS抢夺,代价是每抢夺一次会引起一组LSP的泛洪。同时IS-IS LSDB在LAN上不断同步,即CSNP的周期性发送,其实设计成周期性发送还有一个原因,那就是CSNP不要求有确认应答。
 
IS-IS 通过接口优先级 & 最高的Mac地址选出DIS (优先级范围 0-127,缺省为64,比大) 。IS只与DIS形成邻接关系,之间的通信不通过IP组播地址,这里依然强调的是不依赖IP协议,相应的解决方案是用二层组播Mac地址,Level-1的通告都发送到0180.c200.0014,Level-2的发送到0180.c200.0015。注意:这样的一个Mac组播地址是所有IS都监听的,不像OSPF中DR/DRother监听不同的组播地址,不过一个IS发出的PSNP请求只有DIS会用相应的LSP给予回应。
 
IS-IS的LSDB同步中,SNP(Sequence Number PDU,序列号报文)分为PSNP和CSNP,这个与OSPF的分组可以形成对应,PSNP对应的OSPF的LSR and LSAck,CSNP对应OSPF的DBD,但是针对不同的链路有细节上的差异。

1)Point-to-Point 链路上的LSDB 同步,CSNP只在点到点链路激活时发送一次,PSNP担当LSR和LSAck的职责,既作为链路信息查询,又用来确认每一个LSP数据包是否收到。
 
2)Broadcast 链路上的LSDB 同步,LSP不需要每一台接收它的路由器确认,DIS周期性的发送CSNP(间隔为10s),PSNP只相当于LSR。
 
思科对于IS-IS的度量值处理十分简单,默认接口度量(单链路开销)Cost=10,可设置为0~63之间的数值(2^6),路径度量(路由总开销)为0~1023(2^10),不过这是以前的窄带度量值,新版本的IOS已经扩展到24位的接口度量和32位的路径度量。
 
IS-IS通过Hello来形成邻接关系,针对链路类型的不同,IIH可以分为3种,点到点IIH(周期为10s),Level-1 LAN的IIH,Level-2 LAN的IIH(DIS发送Hello周期为3.3s)。而Hello还可以分为ESH(ES之间的Hello),ISH(IS与ES之间的Hello)以及IIH(IS间的Hello)。
 
IS-IS路由
 
OSI定义的IS-IS路由等级:
 
Level-0     ES与IS之间的路由,协议为ES-IS,类似于IP网络中的IRDP 协议。
 
Level-1 & Level-2     协议为IS-IS,Level-1为Area内路由,Level-2为Area间路由。
 
Level-3    在Domian 之间进行的路由,一般不涉及。   
 
 
IS-IS 路由器类型3种:Level-1 路由器    Level-1-2 路由器    Level-2 路由器
 
IS-IS 邻接关系3种:    Level-1 邻接       Level-1-2 邻接        Level-2 邻接
 
形成邻接关系的规则:
 
Level-1 和 Level-2 路由器       一定不能形成邻居关系
 
如果邻居是Level-2路由器       不管Area ID是否相同都能形成Level-2邻接关系
 
如果邻居是Level-1路由器       只有Area ID相同才能形成Level-1邻接关系
 
两台Level-1-2路由器之间        Area ID相同则为Level-1邻接;不同则为Level-2邻接关系
 
 
IS-IS 的LSP类型2种: LSP 1 &  LSP 2
 
LSP 1通告相连的Level-1 和Level-1-2 链路信息  LSP 1  -->  Level-1 LSDB --> Area内 路由
 
LSP 2通告相连的Level-2 和Level-1-2 链路信息  LSP 2  -->  Level-2 LSDB --> Area间 路由
 
IS-IS 链路类型(Circuit-Type)定义了该链路的等级和允许处理和泛洪的PDU类型,有3种:
 
Level-1 (只允许LSP 1通告) Level-1-2  (允许LSP 1 & 2通告) Level-2-only  (只允许LSP 2通告)
 
 
同一Area内的路由器Area ID必须相同,ES与所连路由器用相同的Area ID。Area ID用于Level-2路由(区域间路由),System ID用于Level-1路由(区域内路由)所以Area内必须唯一。具体来讲,Area间路由的时候,只考虑Area ID 不考虑System ID,Area内路由的时候,只考虑System ID 不考虑Area ID。
 
IS-IS在设计时应先定义好区域,骨干区域全为Level-2 Router,边界为Level-1-2 Router(最好规划到Level-1区域),末节区域为Level-1 Router。
 
当一个Level-2 或者Level-1-2路由器与其他Area的路由器相连时,它所发的LSP的ATT位为会设为1。Level-1区域作为末节会因此有默认路由注入,并选择最近的L1/2路由器作为本区域的出口。
 
IS-IS的路由优先级为:当去往同一目的地有多条路由可选时,L1路由优于L2路由。IS-IS外部路由默认以L2方式传播,因此在L1区域不会有外部路由,在Level-1路由器上执行的重发布也是无效的,就好象在OSPF的Stub区域做重发布一样。如果L1路由器一定要将外部路由重发布进来的话,可以用命令来实现:(config-router)# redistribute  connected  level-1 。
 
L2路由可能是Area间路由,也可能是外部路由,在IS-IS数据库里可以识别出来。如果达到某一目的地,同时存在L2外部路由和域间路由,那么IS-IS会根据最短路径来选择,而到达外部路由的路径以到达ASBR为准,因此可能会出现安装外部路由而没有安装域间路由的情况。这和OSPF明显区分内部路由和外部路由不同,在OSPF中如果已存在域间路由,外部路由在重发布进的时候会被过滤掉。 
 
上述的次优选路IS-IS可以通过路由泄漏来解决,即让L1路由器知道L2路由。配置在Leve-1区域出口上完成,在L1路由器的路由表泄漏的条目一“i ia” 表示,Metric会额外加上128:
 
(config)# access-list 101 permit ip host 1.1.10 any
 
(config-router)# redistribute  isis ip level-2 into level-1 distribute-list 101
 
在IOS操作中,IS-IS重发布进其他IGP(比如OSPF)时并不包含自己的直接接口,目前版本依然没有解决,处理这种状况又2种方案,要么将IS-IS的接口同时运行OSPF,要么在ABR上做重发布直连的配置:
 
(config)# route-map  from-isis
 
(config-route-map)# match  interface  loopback0  s1/0
 
(config)# router  ospf  10
 
(config-router)# redistribute  connected  subnets  route-map  from-isis
 
 
IS-IS特性
 
强扩展性:第一点,以路由器等级(Level)来划分骨干区域,没有实际上地理位置的制约,但设计时应该考虑。
 
第二点,IS-IS的边界在链路上,不像OSPF那样以ABR作为边界,这样每个Router只属于一个Area,而且可以通过设置使一个IS属于多个Area(默认最多为3个),这样在区域过度的时候不必中断,像ISP中的IS-IS往往就是一个单一的L2区域,仅提供区域的外部出口,这样新的Area可以作为L1类型直接连接到已经存在的L2区域。
 
第三点,IS-IS应用TLV来进行通告,TLV可以扩展出很多信息,格式无穷无尽(TLV是Type,Length,Value的缩写,更厂商自行设计,在编程时被翻译为“元组”,指的是大小固定的异构对象的集合)。

 
OL位设置:IS-IS有一个有趣的特性,如果它的设备由于内存不足无法记录完整的链路状态数据库时,它具有通知其他路由器的能力,其动作是在所发送的LSP数据包中设置OL位(Overload),表明自己可能不能进行正确的路由选择,所以在该路由器没有清除OL位之前,其他路由器不会通过这台路由器来转发,不过需要注意的是,由于LSDB可以针对L1或者L2,所以路由器可能只是在其中一层过载,而其他层内存还正常。
 
OL位目前最常用的地方是在BGP网络中,当一台新的路由器添加进网络,IGP会比BGP先收敛,如果另一台路由器根据收敛的IGP路由确认这台新添加进来的路由器是BGP路径的下一跳,而这时新路由器的BGP还没有完成收敛,就会造成路由黑洞。
 
在BGP收敛之前通过设置IS-IS的OL位,可以避免这个问题,其他路由器会绕过这台新的路由器进行选路,一旦BGP收敛,OL位将被清除。建议使用 set-overload on-startup 指定一个秒数说明IS-IS启动后需要设置OL位的时间(可设为300~500s),也可以加关键字 wait-for-bgp 使其在BGP完成收敛的时候清除OL位(不过一旦BGP由于某些原因没有起来,OL位就永远不会清除,所以还是设置时间为好)。
 

原文地址:https://www.cnblogs.com/cyrusxx/p/12615746.html