zoukankan      html  css  js  c++  java
  • ISIS数据包格式

    ISIS packet format
    如果协议中运行ISIS,那么在二层帧中Type封装Data-link header(OSI family0xFEFE)
    IS-IS header:first byte is 0x83
    ES-IS herder:first byte is 0x82
    CLNP herder:first byte is 0x81

    Hello数据包分为三种类型:
    L1 LAN IS-IS Hello PDU(类型号15)
    L2 LAN IS-IS Hello PDU(类型号16)
    点到点 IS-IS Hello PDU(类型号17)
    链路状态数据包LSP分为两种类型:
    L1 LSP(类型号18)
    L2 LSP(类型号20)
    序列号数据包SNP分为四种类型:
    L1完全序列号数据包(CSNP,Complete SNP)(类型号24)
    L2完全序列号数据包(CSNP)(类型号25)
    L1部分序列号数据包(PSNP,Partial SNP)(类型号26)
    L2部分序列号数据包(PSNP)(类型号27)

    ==================================================

    一,hello
        是子网依赖功能的路由选择操作的关键
        作用:Hello包用于建立和维护ISIS邻居的邻接关系(10s发送一次)
        Level 1 LAN IS-IS Hello                  PDU 15
        Level 2 LAN IS-IS Hello                  PDU 16
        Point-to-point Hello                         PDU 17

        (1)报头区别:点到点IIH有个本地电路ID。LAN IIH 有一个LAN ID和优先级信息
        (2)TLV区别:点到点中没有关于中间系统邻居信息,因此扩展了TLV 240来保证可靠性。都含有,区域地址;填充;验证信息
        (3)点到点形成邻居是需要ES-IS的支持,来得的对方的二层地址。
        L1 IIH的组播地址为:0180-C200-0014;
        L2 IIH的组播地址为:0180-C200-0015;
        P-2-P IIH采用单播地址进行通信。

        *在Cisco路由器上,缺省的抑制时间是Hello时间间隔的3倍
        两个IS-IS邻居之间的Hello时间间隔与保持时间是不需要匹配的,每一台路由器都会认同它的邻居通告的保持时间

    ===============================================================

    二,LSP链路状态数据包
        主要在子网无关路由选择中使用
        子网无关路由选择管理这路由选择信息收集进程
        Level 2 Link State PDU包含IS-IS路由区域中所有可到达前缀的信息;
        Level 1 Link State PDU只用于本地区域。
        作用:LSP报文描述了本路由器中所有的链路状态信息。功能上类似于OSPF协议中的LSA。
        Level 1 LSP        PDU 18                  
        Level 2 LSP        PDU 20

    以下三个标志组合起来用来唯一标识一个LSP
    SourceID(产生该LSP的结点或伪结点的SysID);
    Pseudonode ID:对普通LSP为0;对Pseudonode LSP非0,这是区分一个LSP是否是伪结点产生的标志;
    LSP number:分片号(产生的LSP大于LSP MTU将分片)    

    LSP id例子:00c0.0040.1234.01--00, 其中:
        SourceID:00c0.0040.1234
        Pseudonode ID:01(表明为伪结点产生的)
        分片号:0

    LSP Sequence Number:
        每个LSP(含LSP分片)都有一个自己的序列号,网络变化加1
        用于同步数据库,较大的意味着LSP较新
        LSP报头有4个字节用于序列号的范围:0-2^32。
        //用30秒间隔刷新来算,用完它大概要用4000年。假如真的用完了,ISIS会失效一段时间,路由器会重启,将序列号至为1

    LSP Remaining lifetime:
    每个LSP(含LSP分片)都有一个变化的生存时间相联系,用于老化旧的LSPs
    当生存时间超时,LSP将从网络中清除
        //IS-IS路由协议的LSP生存时间从1200秒(20分钟)倒计时到 0,我们也可以设置最大为65535秒的生存时间;而OSPF路由协议的生存时间从0秒正计时到3600(60分钟)。
        //IS-IS路由协议产生LSP的路由器会在15分钟时主动发起泛洪,进行LSP的更新,
        //OSPF路由协议产生LSA的路由器会在30分钟时主动发起泛洪,更新LSA。

    =================================================================

    三,SNP序列号数据包
        作用:保证路由选择信息扩散进程的可靠性,以及数据库同步,以范围来描述数据库LSDB中的所有的LSPs。
        
        <1>Complete Sequence Number packets (CSNP)  CSNP分为两种:Level 1 CSNP和Level 2 CSNP。
        Level 1 CSNP            PDU 24 
        Level 2 CSNP            PDU 25
        在广播网络上,CSNP报文由DIS定期发送(缺省10秒的周期),在点到点串行线路上,只在第一次形成邻接时发送CSNP来同LSDB。
        如果路由器的LSDB非常大,将分成多个CSNP发出。功能上类似于OSPF协议中的DD报文。
        包含地址范围,各LSP的简要信息:LSPid,SequeceNumber, checksum, remainning lifetime等重要信息。

        <2>Partial Sequence Number Packets (PSNP)  PSNP分为两种:Level 1 PSNP和Level 2 PSNP。
        Level 1 PSNP             PDU 26
        Level 2 PSNP             PDU 27
        PSNP报文用于数据库同步,主要有以下功能:
        在点到点(p2p)链路上路由器用来相互交换作为Ack应答以确认收到某个LSP。类似于OSPF中LS ack 报文。
        在广播网络中用来请求发送最新的LSP,当路由器从近邻接收到CSNP时,注意到某些LSP本地数据库中没有的(或自己的比较旧),路由器发送PSNP请求新的LSP。类似于OSPF中的LS Request报文。
        PSNP在头中利用LSPid,SequenceNumber,Remainning lifetime, LSP checksum来描述LSPs,仅仅包含有LSP报文的头部。


    ++++++++++++++++++++++++++++++++++++++++++++++++
    以下是详细包格式
    一、IS-IS PDU报头格式
    在所有IS-IS PDU起始的8个字节都是该数据包的头部字段,并且对于所有的PDU数据包类型(包括Hello报文、LSP和SNP)都是公用的、相同的。下图所示为IS-IS PDU数据包起始的8个字节:

    Figure . IS-IS header fields
    -Intradomain Routing Protocol Discriminator:域内路由选择协议鉴别符。这是ISO 9577分配给IS-IS的一个固定的值,用于标识网络层PDU的类型,对于IS-IS PDU,该字段的值永远都为0x83。
    -Length Indicator:长度标识符。标识该固定头部字段的长度。
    -Version/Protocol ID Extension:版本/协议ID扩展。当前始终为1。
    -ID Length:ID长度。用于表示源ID(SysID)的长度。值为0表示长度为6字节;值为255表示长度为0,即为空;1~8的整数,表示SysID具有相同长度的字节数。
    -PDU Type:PDU类型。这是一个5bit的字段,用于标识IS-IS数据包的类型。值为15表示L1 LAN IIH;值为16表示L2 LAN IIH;值为18表示L1 LSP;值为20表示L2 LSP;值为24表示L1 CSNP;值为25表示L2 CSNP;值为26表示L1 PSNP;值为27表示L2 CSNP。
    -Version:版本。当前为1。
    -Reserved:保留位。没有使用的bit位,始终为0。
    -Maximum Area Addresses:最多区域地址。表示我们可以为一个路由器配置多少个不同的区域前缀。值为0表示最多支持3个区域地址数,默认情况下值为0。
    -Additional Header Fields:附加报头字段。至此字段之前的8个字节对于所有的IS-IS PDU都是相同的。附加报头字段将根据不同的PDU类型而不同。
    -TLV Fields:TLV字段。用于承载IS-IS TLV。
    如下图采集到PDU报头。


    二、IS-IS Hello PDU格式
    对于L1 LAN IIH PDU和L2 LAN IIH PDU,它们有着相同的报文格式和功能:

    Figure 3-5. IS-IS LAN Hello (PDU Types 15, 16).
    -Reserved:保留的6bit位。当前没有使用,始终为0。
    -Circuit Type:电路类型。01表示L1路由器,10表示L2路由器,11表示L1/2路由器。
    -Source ID:源ID。发送该PDU的路由器的SysID。
    -Holding Time:保持时间。用来通知它的邻居路由器在认为这台路由器失效之前应该等该的时间。如果在保持时间内收到邻居发送的Hello PDU,将认为邻居依然处于存活状态。这个保持时间就相当于OSPF中的dead interval(死亡间隔)。在IS-IS中,默认情况下保持时间是发送Hello PDU间隔的3倍,但是在配置保持时间时,是通过指定一个Hello报文乘数(hello-multiplier)进行配置的。例如,如果Hello PDU的间隔为10s,Hello报文乘数为3,那么保持时间就是30s(10s x 3)。
    -PDU Length:PDU长度。整个PDU报文的长度。包括固定报头和TLV字段。
    -Priority:优先级。接口的DIS优先级,用来在广播LAN中选举DIS。优先级数值越高,路由器成为DIS的可能性越大。
    -LAN ID:局域网ID。由DIS的SysID与1字节的伪节点ID组成,LAN ID用来区分同一台DIS上的不同LAN。
    如下图采集到的报文格式。

    下图所示为点到点IIH PDU的报文格式:
    从点到点IIH PDU的格式可以看出,大部分字段与L1/L2 LAN IIH PDU的报文格式相同。但是在点到点IIH PDU中没有“Priority”字段,因为在点到点网络上不需要选举DIS。而且使用“Local Circuit ID”代替了LAN IIH PDU中的“LAN ID”字段。
    Local Circuit ID(本地电路ID)由发送Hello PDU的路由器分配给这条电路的标识,并且在路由器的接口上是唯一的。在点到点链路的另一端,Hello报文中的本地电路ID可能或也可能不为同样的值。

    Figure 3-4. Point-to-Point Hello Packet (PDU Type 17).

    三、IS-IS LSP PDU格式
    LSP PDU分为L1 LSP和L2 LSP。L1 LSP和L2 LSP各自承载了IS-IS不同层次的路由选择信息,但是它们有着相同的报文格式。

    Figure. LSP format
    每个LSP都包含着这些重要的信息:LSP ID、LSP序列号、LSP校验和、剩余时间、区域关联状态、超载状态以及区域划分。
    -PDU Length:PDU长度。整个PDU报文的长度。包括固定报头和TLV字段。
    -Remaining Lifetime:剩余时间。此LSP到期前的生存时间。当生存时间为0时,LSP将被从链路状态数据库中清除。
    -LSP ID:LSP标识符。用来标识不同的LSP和生成LSP的源路由器。LSP ID包括三个部分:SysID、伪节点标识符(Pseudonode ID)和LSP编号。
    -Sequence Number:序列号。LSP序列号主要用于使路由器能够识别一个LSP的新旧版本,这也与OSPF的LSA中携带的序列号是相同的作用。
    -Checksum:校验和。校验和主要用于检查被破坏的LSP或者还没有从网络中清除的过期LSP。当一台路由器收到一个LSP,在将该LSP放入到本地链路数据库和将其再泛洪给其他邻接路由器之前,会重新计算LSP的校验和,如果校验和与LSP中携带的校验和不一致,则说明此LSP传输过程中已经被破坏。
    -P:Partition,分区。表示区域划分或者分段区域的修复位。当P位被设置为1时,表明始发路由器支持自动修复区域的分段情况。
    -ATT:Attached,区域关联。L1/L2路由器在其生成的L1 LSP中设置该字段以通知同一区域中的L1路由器自己与其他区域相连。通常来说就是L2骨干区域相连。当L1区域中的路由器收到L1/2路由器发送的ATT位被置位的L1 LSP后,它将创建一条指向L1/2路由器的默认路由,以便数据可以被路由到其他区域。虽然ATT位同时在L1 LSP和L2 LSP中进行了定义,但是它只会在L1 LSP中被置位,并且只有L1/2路由器会设置这个字段。
    -OL:Overload,超载。表示路由器的资源状态。如果该bit被置位,就表示路由器发生了超载。超载是指路由器没有足够的系统资源(CPU资源和内存资源)用来处理路由选择交换信息。被设置了超载位的LSP不会在网络中进行泛洪,并且当其他路由器收到设置了超载位的LSP后,在计算路径信息时不会考虑此LSP,因此最终计算出来的到达目的地的路径将绕过超载的路由器。设置超载位还可以使数据的传输路径绕过某个特定的路由器。
    -IS Type:中间系统类型。该字段表示了此LSP是来自L1路由器还是L2路由器。这也表示了收到此LSP的路由器将把这个LSP放到L1链路状态数据库还是L2链路状态数据库。01表示L1,11表示L2,00与10未使用。
    下图是采集到报文。

    四、IS-IS SNP PDU格式
    SNP PDU分为CSNP和PSNP。其中CSNP包含L1 CSNP和L2 CSNP;PSNP包含L1 PSNP和L2 PSNP。CSNP与PSNP都包含了路由器本地链路状态数据库中LSP的摘要信息。其中CSNP包含的是所有LSP的摘要信息,PSNP包含的是部分LSP的摘要信息。下图所示为CSNP的报文格式。

    Level 1/2 Complete Sequence Numbers PDU
    -PDU Length:PDU长度。整个PDU报文的长度。包括固定报头和TLV字段。
    -Source ID:源ID。发送该PDU的路由器的SysID。
    -Start LSP ID:起始LSP ID。表示TLV字段中描述的LSP范围的第一个LSP ID。
    -End LSP ID:结束LSP ID。表示TLV字段中描述的LSP范围的最后一个LSP ID。
    如下图所示,是采集到的报文。

    下图所示为PSNP的报文格式。

    Level 1/2 Partial Sequence Numbers PDU
    通过上图可以看出,PSNP报文的格式与CSNP的相似,只不过没有Start LSP ID和End LSP ID两个字段。由于PSNP携带的只是部分LSP的摘要信息,所以不需要起始和结束字段。
    如下图是采集到的报文。


     

  • 相关阅读:
    Nginx的Mainline version、Stable version、Legacy version的版本区别
    十个程序员必备的网站推荐
    各大OJ题目分类
    ubuntu 12 安装bcm 43142无线网卡驱动
    unp.h
    Linux优秀软件整理
    陈皓一起写Makefile 概述
    开源资源目录
    (三)鸟哥Linux读书笔记
    CSS3实现选项卡
  • 原文地址:https://www.cnblogs.com/cyrusxx/p/12824188.html
Copyright © 2011-2022 走看看