• HCNP Routing&Switching之IS-IS报文结构和类型


      前文我们了解了IS-IS动态路由协议基础相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15249328.html;今天我们来聊一聊IS-IS动态路由协议的报文结构和类型相关话题;

      IS-IS报文结构

      提示:IS-IS动态路由协议是封装在数据链路层之上,主要由IS-IS头部和IS-IS可变长字段CLVs组成;其中IS-IS头部里面又分为通用头部和专用头部;

      实验:如下拓扑,配置IS-IS

      R1的配置

    sys
    sys R1
    int g0/0/0
    ip add 172.16.10.1 24
    
    isis 1
    net 10.0000.0000.0001.00
    is-le level-1
    int g0/0/0
    isis en 1
    View Code

      提示:在R1上g0/0/0接口上启用isis以后,对应isis进程就正常运行了;

      在R1上抓包,看看ISIS数据包结构

      提示:可以看到在R1上能够正常抓到ISIS L1类型的hello包,其中hello包里有通用头部和专用头部,对应专用头部里又有可变长字段;

      R2的配置

    sys
    sys R2
    int g0/0/0
    ip add 172.16.10.2 24
    int g0/0/1
    ip add 192.168.11.2 24
    
    isis 1
    net 10.0000.0000.0002.00
    is-le level-1-2
    int g0/0/0
    isis en 1
    int g0/0/1
    isis en 1
    View Code

      验证:在R1或R2上查看ISIS邻居信息

      R3的配置

    sys
    sys R3
    int g0/0/0
    ip add 192.168.11.3 24
    
    isis 1
    net 11.0000.0000.0003.00
    is-le level-2
    int g0/0/0
    isis en 1
    View Code

      在R2上抓包看看对应报文结构

      提示:可以看到在R2的g0/0/0口可以抓到L1的hello包和L2的hello包,他们的专用hello包里都是leve1 and 2;

      专用包头字段解释

      提示:通用头部里每个字段都是1字节;Intra Domain Routing Protocol Discriminator字段用于描述动态路由协议的描述0x83表示ISIS协议,该字段的值固定不变;PDU Header Length字段用于描述PDU包头的长度(包含通用头部和专用头部),单位是字节;version/protocol id extension字段用于描述对应isis的版本或协议标识扩展,设置为1(0x01),一般这个字段都是1,固定不变;ID Length用于描述NSAP地址或NET地址中的system ID长度,值为0表示system ID的长度为6字节,值为255时,表示system ID为空(长度为0);R(Reserved)是保留字段,设置为0;PDU type 用于描述对应专用包头的类型;ISIS PDU共有9种类型;version 用于描述isis版本,设置为1,固定不变;Maximun area address字段用于描述支持的最大区域个数;设置为1-254的证书,表示该IS-IS进程实际所允许的最大区域地址数,设置为0,表示该IS-IS进程最大只支持3个区域地址数;

      更改R1的g0/0/0接口网络类型为P2P,再次抓包看看对应数据包结构

      提示:可以看到更改R1的g0/0/0接口网络类型为p2p以后,对应isis邻居就被情况了;其原因是R1和R2的所发送的hello包类型不同;

      在R1上抓包,看看对应hello包类型是否和R2一样?

      提示:现在R1的g0/0/0接口上抓包,可以看到对应R1发送的hello包类型为p2phello ;

      广播网络hello包和p2p网络hello包对比

      提示:通用包头基本没有变化,变化的是在专用包头里;对于广播网络中的hello包,里面主要比p2p网络中的hello包多了priority 字段和DIS ID两个字段;其主要原因是广播网络中,对应会选举DIS,所以会有优先级和dis id的信息;而p2p网络中不需要选举DIS,所以priority字段和dis id字段没有;其他字段两者几乎都有,没有太大的区别;

      专有包头字段解释

      Reserved/circuit:该字段占用1字节,其中高位的6比特保留,其值为0;低位的2比特用来表示路由器的类型;01表示L1,10表示L2,11表示L1/2;

      Source ID:用于描述发出该hello报文的路由器system ID;

      Holding Time:用于描述hello包的保持时间;在此时间内如果没有收到邻居发来的Hello报文,则终止已建立的邻居关系;

      PDU Length:用于描述PDU的总长度,单位是字节;PDU是ISO网络模型里对应数据包的称呼,我们可以理解为TCP/IP里的包,段,帧,比特等术语;

      Priority:用于描述选举DIS的优先级,取值范围为0-127;数值越大,优先级越高;

      LAN ID:用于描述包含DIS的system ID 和1字节的伪节点ID;

      Local Circuit ID:用于描述本地链路ID;

      IS-IS报文类型总结

      提示:ISIS报文总共就只有上述三种类型;其中IIH表示ISIS的hello PDU,主要作用是建立和维护邻居关系;LSP主要用来传输链路状态信息,类似OSPF里的LSU(LSA)包的作用;SNP主要用来描述数据库中的LSP,类似ospf中的DD包;

      hello报文类型

      提示:isis里hello报文类型有三种;L1 LAN IIH、L2 LAN IIH和p2p IIH这三种;其中p2p里部分L1和L2,它只有一种;L1主要是广播网络中的L1路由器发送;L2主要是广播网络中的L2路由器发送;

      SNP报文类型

      提示:SNP报文中分CSNP(完全SNP)和PSNP(部分SNP),完全SNP包主要作用是通告LSDB中所有摘要信息,类似OSPF里的DD包;部分SNP主要作用是请求和确认链路状态信息;类似ospf里的LSR和LSACK的作用;

      IS-IS报文中的可变长字段

      提示:IS-IS报文中的变长字段部分是多个TLV(Type-Length-Value)三元组;TLV也称为CLV(Code-Length-Value);以上只是部分CLV代码和对应字段、PDU类型;可变长字段的存在主要是对IS-IS的扩展,比如我们要让IS-IS支持IPV6,我们只需要在TLV/CLV里加上对ipv6的相应字段即可,不需要像ospf专门开发一个版本支持ipv6;这也是IS-IS扩展性强的原因;

      PDU类型对照表

      提示:对于不同PDU类型,其类型值各有不同;比如类型代码为15则表示是L1 hello包;类型代码为17则表示对应PDU类型为P2P网络的hello 包;

    作者:Linux-1874
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    redis的事务不是原子性
    Jenkins持续集成 入门实践
    Docker入门实践
    程序员该有的职业素养
    ubuntu sudoers配置错误
    日志分析工具 Log Parser
    压力测试记录
    Winscp使用sudo user登录
    Linux下通过NFS共享文件夹
    Jexus 5.4.6 on CentOS 6.6
  • 原文地址:https://www.cnblogs.com/qiuhom-1874/p/15260670.html
Copyright © 2020-2023  润新知