zoukankan      html  css  js  c++  java
  • 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位就永远不会清除,所以还是设置时间为好)。
     

  • 相关阅读:
    python 基础2.5 循环中continue与breake用法
    python 基础 2.4 while 循环
    python 基础 2.3 for 循环
    python 基础 2.2 if流程控制(二)
    python 基础 2.1 if 流程控制(一)
    python 基础 1.6 python 帮助信息及数据类型间相互转换
    python 基础 1.5 python数据类型(四)--字典常用方法示例
    Tornado Web 框架
    LinkCode 第k个排列
    LeetCode 46. Permutations
  • 原文地址:https://www.cnblogs.com/cyrusxx/p/12615746.html
Copyright © 2011-2022 走看看