IS-IS路由协议
(Intermediate System-to-Intermediate System,中间系统到中间系统)
第一章 is-is的协议概述
    1. 发展史
        Is-is最早是iso为osi模型中CLNP而设计的协议,后来根据发展需要,也支持了TCP/IP协议,因此,is-is叫做integrated is-is或者dual is-is
        CLNP(connection less network protocol)是一种ISO网络层数据报协议,工作在网络层;主要提供无连接网络服务;使用NSAP地址和标题来识别网络设备;特性限制数据报停留在英特网中的时间。
    2. 基本特点
        Is-is是基于链路状态算法的IGP协议,它同时支持TCP/IP及OSI双重环境;
        a) Is-is属于ISO协议族,是CLNS的一部分
            CLNS(无连接网络服务)
            CLNS由三个协议构成:
                1. CLNP类似tcp/ip中的ip协议
                2. IS-IS 中建系统间的路由协议
                3. ES-IS主机系统与中间系统间的协议(相当于ip中的arp、icmp等)
        b) 链路状态路由协议:根据路由计算方法来分
        c) 支持OSI、IP双层环境;
        d) 路由收敛速度快,结构清晰,适合于大规模网络。得到广泛应用。
        e) 直接运行于链路层之上。
                与大多数路由协议不同,IS-IS直接运行于链路层之上:
                数据链路层由:FEFE标识
                报文由固定报文头和变长字段组成:
                IS-IS固定报文头:Ox83
                IS-IS变长字段:TLV表示
                    TLV(type-length-value)编码方式:
                        1、 编码方式高效率、扩展性好的报文编码方式;也称CLV(code-length-value)
                            T—type:采用不同的值定义不同类型;
                            L-length:整个TLV三元组的长度
                            V-value:本TLV的实际内容,最重要的部分
                        2、 TLV编码的有点:
                            可扩展性好,如果想增加对于新特性的支持,只需增加新的TLV类型。
    3. 基本概念
        a) 协议相关术语(一)
            缩略语        OSI中的概念                            IP中对应的概念
            IS         Intermediate system中间系统            Router路由器
            ES         End system端系统                  Host主机
            DIS            Designated intermediate system      Designated router(DR)
                        指派中间系统                     OSPF中的选举路由器
            Sys ID     System ID 系统ID                 OSPF中的router ID
            PDU            Packet  data unit报文数据单元        IP报文
            LSP            Link state protocol data unit       OSPF中的LSA 用来描述链路状态
                        链路状态协议数据单元


        b) IS-IS协议相关术语(二)
            缩略语        OSI中的概念                            IP中对应的概念
            NSAP       Network service access point        IP地址
                        网络服务访问点(网络层地址)
            NET            Network entity title网络实体标记
            IIH            IS to is hello pdu:is到is间hello  Ospf中的hello报文
            PSNP       部分序列号数据包7                   Ospf的ack报文或LSR报文
            CSNP       完全序列号数据包                    OSPF的DD报文

            Is-is的osi网络层地址编码方式:NSAP(相当于OSI的网络层CLNP)
            一个NSAP由三个部分组成:区域地址、system ID和N-selector
                        Area ID 区域地址   System ID      NSEL
                        变长             6字节            1字节
            System id:推荐指定方法:
                192.168.1.1 转换后1921.6800.1001
            网络标识实体:NET
                NET是一个特殊的NSAP地址
                n-selector部分为0
                NET是OSI协议栈中网络设备本身的标识
                一个NET至少8个字节,最多20个字节
        c) Is-is分层
            1. Level-1:普通区域
            2. Level-2:骨干区域(Backbone)
            骨干区域:是连续Level-2路由器的集合;由所有的L2(包含L1/L2)路由器组成,注意必须是连续(连通)的;也就是说骨干区域不能有L1;
            L1和L2运行相同的SPF算法;
            一个路由器可能同时参与L1和L2


        d) 区域
            1. IS-IS允许将整个路由域分为多个区域;
            2. 区域之间通过L2(L1/L2)路由器相连接;
            3. 一个路由器目前最多3个area id;
            4. 一个路由器只能属于一个区域,而不能像OSPF一样同一台路由器不同的接口属于不同的区域;
            5. 对于LEVEL-1路由器来说,只有属于同一区域才可以建立邻居,对于LEVEL-2路由器则没有此同一区域限制;
        e) IS-IS的分层路由域

        f) Level-1路由器(Totally stub)
            1. 只与本区域路由器形成邻居
            2. 只参与本区域内的路由,只保留本区域的数据库信息(LSDB)
            3. 利用本区域最近的L1/L2路由器作为区域外网络出口
            (缺省路由)
            如何知道谁是L1/L2路由器?
                通过IS-IS报文中的att标志位,att位由L1/L2产生;
                当L1/L2与别的路由器有连接事,他会在报文中设置att bit来告诉区域中的L1路由器,它有一个区域出口;对于L1路由器来说如果有多个L1/L2,它会选择离自己最近的,对于IP路由来说,具体表现L1安装一条缺省路由在路由表中。
        g) Level-2路由器
            1. 可以与其他区域路由器(L2或L1/2)形成邻居;
            2. 保存L2的链路状态数据库LSDB,含有所有域间路由信息;
            3. 保存整个骨干区的路由信息。
        h) L1/L2路由器(ABR)
            1. 可以和本区域的任何路由器形成邻居关系;可以和其他区域的L2或者L1/L2路由器形成邻居;
            2. 维护两个LSDB;
            3. L1的LSDB用于区域内的路由,L2的LSDB用于区域间路由;
            4. 完成它所有区域和骨干区域之间的路由信息交换,将L1的LSDB中的路由信息转换到L2的LSDB中,既承担L1的职责也承担L2的职责;
            5. 通常位于区域边界上,类似OSPF中的ABR。
        i) IS-IS协议适用的网络类型
            1. P-2-P网络
                PPP
            2. 广播网络
                Ethernet、toekn ring等
            3. IS-IS不能真正支持NBMA网络,可以将NBMA链路配置成子接口来支持。子接口类型为:P-2-P或者广播网络。
        j) IS-IS协议的9种报文类型
            1. IIH(IS-IS HELLO packets)建立和维护邻居关系
                a) Level-1    hello报文(广播网络中LEVEL-1)
                b) Level-2    hello报文(广播网络中LEVEL-2)
                c) Point-to-point hello报文(非广播网络中)
            2. LSP(Link state packets)链路状态报文,交换链路状态信息
                a) Level-1 LSP(level-1中的链路状态数据库)
                b) Level-2 LSP(level-2中的链路状态数据库)
            3. CSNP(complete sequence number packets)包括LSDB中所有LSP摘要信息,从而保持相邻路由器之间的LSDB的同步;类似于OSPF中的DD;广播网络中每10s发送一次,p-2-p网络中在刚开始建立邻居的时候发送。
                a) Level-1 CSNP
                b) Level-2 CSNP
            4. PSNP(partial sequence number packets)列举最近收到的一个或多个LSP序号,可以一次对多个LSP进行确认,发现LSDB不同步时,通过psnp请求邻居发送新的LSP,作用类似OSPF中的LSR和Lsack。
                a) Level-1 PSNP
                b) Level-2 PSNP
        k) 总结问题:
            1. IS-IS协议有哪些基本特点,常用术语有哪些?
            2. 如何表示IS-IS网络地址?
            3. IS-IS网络如何分层?每种类型路由器有什么作用?
            4. IS-IS支持哪些网络类型?
            5. IS-IS协议有哪些报文类型?
第二章    IS-IS的工作原理
    1. 邻居关系的建立
        a) IS-IS邻居关系建立
            1. 两台IS-IS路由器交互协议报文实现路由功能之前必须首先建立邻居;
            2. 在不同类型的网络上,IS-IS的邻居建立方式并不相同;
            3. IS-IS邻居关系建立遵循的规则:
                a) 只有同一层次的相邻路由器才有可能成为邻居;
                b) 对于level-1路由器来说要求区域号必须一致;
                c) 同一网段检查(在VRP中,isis运行在ip层上,要对对方 ip信息进行检查和收到isis报文的接口地址不在同一网断,将不形成邻居关系;可以避免ip的不可达性。)
        b) 广播网上的指定路由器:DIS
            1. DIS:designated IS 指定中间系统,相当于ospf中的DR
            2. 功能:在广播网络中创建和更新伪节点,并负责生成伪节点的LSP,用来描述网络上有哪些路由器。
            3. 伪节点用来描述广播网络中的一个虚拟节点,并非真实路由器。
        c) DIS选举规则
            1. DIS由IIH(hello报文)选举,具备最高优先级的路由器会被当选。如果所有路由器优先级相同,则最高MAC地址当选;
            2. LEVEL-1和LEVEL-2的DIS是分别选举的,选举结果可能不是同一个DIS;
            3. DIS发送Hello数据报的时间间隔是普通路由器的1/3,这样可以保证DIS失效可以被快速检测到;
            4. IS-IS优先级为0的路由器也参加选举;而ospf中为0的路由器不参加选举;
            5. 与OSPF不同,它的选举时抢占式,可预见的;(当一个新的路由器加入到路由域时,并符合成为DIS条件时,会被选举为新的DIS)
            6. IS-IS中不存在备份DIS,当一个DIS不能工作时,直接选举另一个;
            7. 同一网段的所有路由器形成邻接关系(OSPF中的DR和other之间是不形成邻接关系的)

    2. 链路状态数据库范洪过程
        a) 链路状态数据单元:LSP
            1. LSP ID:由三部分组成(system ID、伪节点ID(一字节)、LSP分片后的编号(一字节))
                Pseudo node ID:普通LSP为0;pseduo node id LSP为非0;
                LSP number:分片号(产生的LSP大于LSP  mtu将分片)
            2. LSP sequence number:LSP序列号
                a) 当路由器启动is-is时候,自己产生的LSP的序列号为1;
                b) 当发生变化需要重新生成LSP的时候,新的LSP的序号将在前一个LSP序列号的基础上加1,较大的序列号意味着LSP较新。
            3. LSP remaining life time:LSP的生存时间,用于老化旧的LSP
                a) Is-is的LSP的生存时间从1200秒倒计时到0(OSPF)
                b) 这个时间减为0之前,如果没有接收到新的LSP来更新LSDB,则这个LSP会从LSDB中清除;
                c) 在旧的LSP被从LSDB中清除后,它还会再保留ZeroAgeLifetime,当这个时间也达到时,它将会被真正删除。
            4. ATT位
                a) 由L1/L2路由器产生,用来指明始发路由器是否与其他路由器相连。
            5. OLV过载标志位
                a) 设置了过载标志位的LSP,虽然还在网络中扩散,但是在计算通过超载路由器的路由时不会被采用,及对路由器设置过载位后,其他路由器在进行SPF计算时,不会考虑这台路由器。当路由器内存不足时,系统自动在发送的LSP报文中设置过载标志位。

        b) 完全时序协议数据单元:CSNP
            1. CSNP分为两种:level-1 CSNP和level-2 CSNP
            2. CSNP包括LSDB中所有LSP的摘要信息,用于在泛红LSPDB时数据库同步,从而保持相邻路由器之间的LSDB的同步;
            3. 在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)
            4. 在点到点链路上,CSNP只在第一次建立邻接关系时发送。
        c) 部分协议数据单元:PSNP
            1. PSNP分为两种:level 1 PSNP和level 2 PSNP
            2. PSNP的主要功能:
                a) 用来请求接收最新的LSP,当路由器从邻居接收到CSNP时,通过比较自己的LSDB如果没有同步,路由器发送PSNP请求响应的LSP,以保持同步。
                b) 在点到点(p-2-p)链路上路由器用来作为ack应答以确认收到某个LSP
        d) Is-is数据库交换过程
            1. LSP报文泛红:
                指当一个路由器向相邻路由器报告自己的LSP后,相邻路由器再将同样的LSP报文,传送到除发送该LSP路由器以外的其他邻居,并这样逐级向LSP传送到整个层次内的一种方式,通过这种泛红,整个层次内的每一个路由器都可以拥有相同的LSP信息,并保持LSDB的同步。
                Is-is域内所有路由器都会产生LSP
            2. 产生新的LSP的时机:
                a) 邻接关系建立up或down
                b) IS-IS相关接口up/down
                c) 引入的IP路由发生变化
                d) 区域间的IP路由发生变化
                e) 接口被赋了新的metric值
                f) 周期性更新
        e) 广播网络数据库交换


            1. 新加入的RTC首先发送hello报文,与该域路由器建立邻居关系;
            2. 邻居关系建立以后,RTC等待LSP超时,然后将自己LSP发送到组播地址,
                LEVEL-1:0180 C200 0014
                LEVEL-2:0180 C200 0015
                及网络上所有的邻居都将收到该LSP;
            3. 该域中的DIP会把收到的RTC的LSP加入到LSDB中,并等待CSNP定时器超时,并发送CSNP报文,进行该网络内的LSDB同步,CSNP发送时间间隔缺省10s;
            4. 路由器RTC受到发来的CSNP报文,对比自己的LSDB数据库,发送PSNP报文,请求自己没有的LSP。
            5. DIS收到该PSNP请求报文后,发送对应的LSP,进行LSDB的同步,其中DIS的LSDB更新过程可以总结为以下四点:
                a) DIS接收到LSP,在数据库中搜索对应的记录,若没有该LSP,则将其加入数据库,并广播新数据库内容。
                b) 若数据库中的序列号小于报文中的序列号,就替换为新报文,并广播新数据库的内容。
                c) 若数据库中序列号较大,就向入端口发送一个本地数据库的该LSP的新报文。
                d) 若两个序列号相等,则不做任何事情。
        f) 点到点网络数据库交换(多确认机制)


            1. 邻居关系建立,请参考点到点邻居关系的建立。
            2. 第一次建立邻居时,路由器会先发送CSNP给对端,如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取响应的LSP,达到数据库同步后,路由器会启动点到点P2P接口上的LSP和PSNP定时器,等到LSP定时器超时后,发送所有的LSP报文。
            3. 如果在LSP定时超时后,还没有收到对端的PSNP报文作为应答,则重新发送该LSP,其中LSDB更新过程可以总结为以下三点:
                a) 如果收到的LSP序列号比已有的更大,则将这个新的LSP存入LSDB中,再通过一个PSNP报文确认收到这个LSP,最后将这个新LSP接着发送到其他邻居。
                b) 如果收到的LSP和已有的具有相同的序列号,则直接通过一个PSNP报文确认收到此LSP。
                c) 如果收到的LSP比已有的序列号更小,则直接给对方发送自己版本的LSP,然后等待对方给一个PSNP报文做回答。
第三章    IS-IS的路由计算
    1. IS-IS路由计算
        a) 链路状态协议路由算法
            通过可靠的扩散算法各路由器将其它路由器扩散来的拓扑信息收集起来,组成一张一致的、完整的拓扑图,依靠SPF算法来计算出自己的路由表。

    2. 路由***:Route Leaking
        a) 路由***
            1. Level-1区域只能和level-2区域相连
            2. 不同的level-1区域之间并没有相连
            3. Level-1区域的路由信息通过L1/L2路由器通告给level-2,因此L1/L2和L2路由器知道整个路由域的路由信息。但是在缺省情况下,L2路由器并不将自己知道的其他LEVEL-1区域以及骨干路由的信息通告给level-1区域,这样level-1区域将不了解本区域以外的信息,可能导致对本区域以外的地址选择最佳的路由;为解决上述问题,IS-IS提供了路由***功能,使L2路由器可将移植的其他L1区域以及L2区域的路由信息通告给指定的L1区域。
        b) 次优路由
            如下图所示:

            如果没有路由***,RTA要到达RTF,由于RTA并不知道本区域外部的路由,所以发往非本区域的报文,都是通过最近的L1/L2路由器RTC产生的缺省路由发送出去,这样RTA到RTF的花销为10+30+10=50;
            而RTA到RTF的最佳路径应该是RTA-RTB-RTD-RTE-RTF,因为这条路径的花销为40,这就造成了次优路由。
            为了解决这个问题,此时分别在RTC和RTD的L1/L2路由器上执行inport route isis level-2 into level-1 命令,使用了路由***后,再重新tracert一下,发现走的是最有路径。

第四章    isis与ospf的比较
    1. IS-IS和OSPF协议比较总结(一)
        比较点                IS-IS          OSPF
        最早为IP设计的       否              是
        链路状态IGP            是              是
        直接运行在链路上   是              否
        有区域概念          是              是
        适合大型网络     是              是
        有指定路由器     是              是
        DR选举时可确定的  是              否
                            抢占式的        非抢占式
                            优先级0         优先级0
                            可以参加选举 不参加选举
        产生LSP描述网络结构    是              是
        支持IP协议         是              是
        支持非IP协议        是              否
        划分区域方式     Level划分        接口划分

    2. IS-IS和OSPF协议比较总结(二)
        比较点                IS-IS                      OSPF
        使用范围           大型ISP中                 在企业网和isp中普遍使用
        复杂度                产生更少的LSPs              产生更多的LSAs
                            一般使用一个区域           一般配置多个区域
        可扩展性           可以支持相当大的单个区域   比较大的网络一般划分为多个区域
        对流量工作的支持   扩展支持                   扩展支持
        可调节性           非常好                        好