前文我们了解了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

  提示:在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

  验证:在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

  在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 包;

HCNP Routing&Switching之IS-IS报文结构和类型的更多相关文章

  1. HCNP Routing&Switching之BGP报文结构、类型和状态

    前文我们了解了BGP的邻居建立条件.优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html:今天我们来聊一聊BGP ...

  2. HCNP Routing&Switching之IS-IS邻居建立、LSDB同步、拓扑计算和路由形成

    前文我们了解了IS-IS的报文结构和类型相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15260670.html:今天我们来聊一聊IS-IS建立邻居. ...

  3. HCNP Routing&Switching之BGP路由宣告

    前文我们了解了BGP报文结构.类型以及邻居状态相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15422924.html:今天我们来聊一聊BGP路由宣告 ...

  4. HCNP Routing&Switching之动态路由协议IS-IS基础

    前文我们了解了OSPF的特殊区域相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15236330.html:今天我们来聊一聊另一动态路由协议IS-IS相 ...

  5. HCNP Routing&Switching之组播技术-组播协议IGMP

    前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html:今天我们来聊一聊组播协议中IGMP协议相关话题: 组播 ...

  6. HCNP Routing&Switching之OSPF LSA更新规则和路由汇总

    前文我们了解了OSPF外部路由类型以及forwarding address字段的作用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15225673.html: ...

  7. HCNP Routing&Switching之IS-IS路由聚合和认证

    前文我们了解了IS-IS路由渗透和开销相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15302382.html:今天我们来聊一聊IS-IS路由聚合和认 ...

  8. HCNP Routing&Switching之路由控制、路由策略和IP-Prefix List

    前文我们了解了IS-IS路由聚合和认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15306645.html:今天我们来聊一聊路由控制技术中的路由策 ...

  9. HCNP Routing&Switching之路由控制-策略路由

    前文我们了解了路由策略工具Route-Policy相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15322135.html:今天我们来聊一聊策略路由相 ...

随机推荐

  1. 四、从GitHub浏览Prism示例代码的方式入门WPF下的Prism之Mvvm的13示例

    上一篇之分析了示例,没有最终写DEMO,把这一篇分析完,总结后一起写Prism下的MVVM例子. 这一篇开始分析从13示例开始,分析到MVVM主要部分结束然后写一个分析后的总结DEMO 添加一段新的内 ...

  2. js原始数据类型有哪些,引用数据类型有哪些

    js的数据类型划分方式为 原始数据类型和 引用数据类型 栈: 原始数据类型(Undefined,Null,Boolean,Number.String) 堆: 引用数据类型(对象.数组.函数) 两种类型 ...

  3. 搭建NFS文件共享

    1.概述: NFS(Network File System)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件.简单的讲就是可以挂载远程主机的共享目录到本地, ...

  4. 为什么不建议使用WordPress呢?

    程序过于注重扩展性与动态配置解析,导致执行流程中包含大量的钩子.判断.文件加载等操作,导致执行效率偏低,对服务器要求较高.对系统的开销,尤其是CPU等部分消耗较大,据观察,单个请求在腾讯云s1主机单核 ...

  5. js中其他数据类型的值转为字符串的相关总结

    有这样一个面试题: 此题考查的是其他类型的值转换为字符串后的结果 下面我们就由此来总结一下其他类型的值转为字符串后的值都是什么? 从上面的实例可以看出,基本数据类型的值转换成字符串都如我们预期的那样. ...

  6. 用于在公网环境下测试的Telnet/SSH服务器

    google: public telnet server list for example: telnet nethack.alt.org ssh nethack@alt.org

  7. Ubuntu Server安装telnet服务时"Unable to locate package telnetd"解决方法

    装好Ubuntu Server 12.04后,用apt-get安装telnetd报"E: Unable to locate package telnetd",解决方法如下: 虚拟机 ...

  8. DrJava试用笔记

    安装方便:只要配好JAVA_HOME,用java -jar drjava-stable-20120818-r5686.jar即可启动,算是绿色软件: 特色功能:交互式命令行,可以在调试程序时改变变量值 ...

  9. JVM G1GC的算法与实现

    G1GC 是什么? 一些基本概念 实时性 G1GC 有什么特点? G1GC 的堆结构是什么样的? G1GC 的执行过程是什么样的? 并发标记 并发标记是什么 标记位图 执行步骤 步骤 1--初始标记阶 ...

  10. Linux 鸟叔的私房菜--完全结束

    2018年10月22日 我不想再拖下去了,一本书看不完就无法进行下一本书的阅读,可能算是我的一个强迫症(借口吧) 之前看05年第一版<鸟叔的Linux私房菜>停在脚本语言那里,迟迟没有前进 ...