zoukankan      html  css  js  c++  java
  • ISIS TLV Cyrus

    IS-IS TLV
    根据不同的IS-IS PDU类型和特定的网络环境,紧跟在各种类型IS-IS PDU之后的是TLV(Type/Length/Value)字段,PDU报头与TLV字段构成了一个完整的IS-IS PDU。在ISO10589和RFC1195这二种当前IS-IS标准中,使用代码(code)这个词,而不是类型(type),但由于TLV用于其他协议标准中,故TLV比CLV在网络文献中使用的多,在这里我们也使用TVL代替CLV。在IS-IS PDU所使用的各种TLV中,既有ISO 10589中定义的,也有RFC 1195中定义的。ISO中定义的TLV用于CLNP网络环境,但是其中的大多数也用于IP网络环境。RFC中定义的TLV只用于IP环境。对于一个IS-IS PDU,后面既可以携带支持CLNP协议的TLV,又可以携带支持IP协议的TLV。如果一个路由器不能识别一个TLV,那么将忽略它。

    Encoding of Variable Length Fields
    如上图中所示,TLV中包括Type、Length和Value三个字段:
    -Code(Type):表示TLV的类型,不同的TLV使用不同的类型号来区别,Type长度为1字节。
    -Length:表示TLV中Value字段的长度,长度为1字节,所以这意味着Value字段长度的最大值为255字节。
    -Value:表示实际承载的值,长度是可变的,最大为255字节。
    下表中列出了IS-IS中所使用的各种TLV,以及这种TLV由哪种标准进行定义:

    对于TLV 4,它用于之前我们介绍的区域修复功能;TLV 133是IETF为IP验证而定义的TLV,但是大多数实现中都使用TLV 10来支持验证。
    使用TLV的最大优点就是增强了协议的扩展性,当需要扩展协议的功能时,只需要定义新的TLV就可以。下表中列出了部分IETF为增强IS-IS协议的功能所定义的一些新的TLV。

    每种IS-IS PDU都使用特定的TLV,但是有一些TLV也被多种类型的IS-IS PDU所共享,下表中列出了各种IS-IS PDU所使用的TLV:

    从上表可以看出,唯一一个被所有IS-IS都使用的是TLV 10,验证信息。下面我们将对这些TLV中一些常用的和重要的TLV进行介绍,关于其他的TLV和扩展的TLV可以参见相应的标准文档。
    1.犌�虻刂稵LV(TLV 1)
    区域地址TLV列出了始发路由器上配置的区域地址。它只出现在非伪节点LSP中。当一台路由器配置了多个区域前缀时,此TLV将携带多个区域地址。
    - 类型——1
    - 长度——1字节
    - 值——nx(1字节的地址长度+可变的区域地址)
    如下图所示:从采集到数据的代码中可以看到其值为十六进制01,如红框中所示。

    2.犞屑湎低沉诰覶LV(LSP)(TLV 2)
    中间系统邻居TLV(LSP)用于LSP PDU中,它列出了始发路由器的IS-IS邻居(包括伪节点)和到达每个邻居的链路的度量值。
    - 类型——2
    - 长度——1字节
    - 值——1字节

    3.犞斩讼低沉诰覶LV(TLV 3)
    终端系统邻居TLV只用于L1 LSP中,它列出邻接的L1路由器和ES。例如通过ES-IS协议发现运行CLNP协议的工作站。
    - 类型——3
    - 长度——1字节
    - 值——可变

    4.犞屑湎低沉诰覶LV(Hello)(TLV 6)
    中间系统邻居TLV用于Hello PDU中,它列出了本地路由器所有邻居的SysID。与OSPF中Hello报文中的邻居列表一样,当IS-IS路由器收到其他路由器的Hello PDU后,便将其SysID加入到自己发送的Hello PDU中。在点到点Hello PDU中不使用此TLV,因为在点到点链路中不需要选举DIS。在L1 LAN IIH中只列出L1邻居,同样在L2 LAN IIH中也只列出L2邻居。
    - 类型——6
    - 长度——1字节
    - 值——可变

    5.犔畛銽LV(TLV 8)
    填充TLV用于所有Hello PDU中。为了建立邻接关系,IS-IS协议与OSPF协议一样都需要双方具有同样的接口MTU(Maximum Transmission Unit,最大传输单元)。这种保持两个邻接的路由器具有同样的MTU的机制是必需的。这样就不会产生由于双方的MTU值不匹配而导致一方不能接收另一方发送的报文。OSPF与IS-IS使用了不同的机制来检查MTU不匹配的情况。在OSPF中,通过在DBD报文中嵌入接口MTU字段使路由器检查MTU是否匹配。在IS-IS中,路由器将Hello PDU的大小填充至接口MTU的大小。由于一个TLV的长度最长为255字节,所以通常会使用多个填充TLV。
    - 类型——8
    - 长度——1字节
    - 值——可变

    6.燣SP条目TLV(TLV 9)
    LSP条目TLV只用于CSNP和PSNP报文中。它列出了每个LSP的LSP ID、剩余时间、序列号和校验和。这些字段可以唯一的标识出一个LSP的实例。
    - 类型——9
    - 长度——1字节
    - 值——可变

    7.犙橹ば畔�LV(TLV 10)
    验证信息TLV是唯一一个用于所有IS-IS PDU的TLV。验证信息TLV只有在配置了验证时才会使用。路由器通过将密码或者密文插入到IS-IS的PDU中实现路由选择信息交互的安全性。
    - 类型——10
    - 长度——1字节
    - 值——可变

    8.營P内部可达性信息TLV(TLV 128)
    IP内部可达性信息TLV用于LSP PDU中。它列出了与始发LSP的路由器相直连的IP地址及掩码信息。每个IP前缀都被分配了一个度量值,这个度量值表示该IP前缀对应的链路度量值。该TLV不会出现在伪节点LSP中。

    9.犞С值男�門LV(TLV 129)
    支持的协议TLV用来标识始发路由器所支持的第三层网络层协议,例如仅支持CLNP、仅支持IP或同时支持CLNP和IP。

    10.營P外部可达性信息TLV(TLV 130)
    与IP内部可达性信息TLV一样,这类TLV也只用于LSP PDU中。它列出了IS-IS路由选择域外部的IP地址和掩码信息。这类路由信息通常都是通过路由重分发引入到IS-IS路由域中的外部路由信息。
    11.犛蚣渎酚裳≡裥�樾畔�LV(TLV 131)
    域间路由选择协议(IRDP)信息TLV只用于L2 LSP中。IETF定义此TLV用于支持在IS-IS路由域边界上与其他域间路由选择协议的交互,用来透传来自外部路由选择协议的信息。
    12.營P接口地址TLV(TLV 132)
    IP接口地址TLV用于列出始发IS-IS PDU的接口的地址(IP地址)。

    13.犂┱沟腎S可达性TLV(TLV 22)
    IETF后来定义扩展的IS可达性TLV用来代替类型2的中间系统邻居TLV(LSP)。不使用IS-IS扩展度量(使用窄度量)时,只有6bit(0~63)可以用来表示度量值;当使用IS-IS扩展度量(或称作宽度量)时,这个TLV就用来代替类型2的TLV。扩展的IS可达性TLV使用24bit表示度量值,扩大了度量的取值范围。
    14.犂┱沟腎P可达性TLV(TLV 135)
    与扩展的IS可达性TLV一样,IETF定义扩展的IP可达性TLV用来代替类型128(IP内部可达性TLV)和类型130(IP外部可达性TLV)的TLV。当使用IS-IS扩展度量(宽度量)时,这个TLV就用来代替类型128和类型130的TLV。扩展的IP可达性TLV使用32bit表示度量值。
     

  • 相关阅读:
    JAVA中的SimpleDateFormat yyyy和YYYY的区别
    Mysql的MVCC
    SELECT语句中的for update的用法(锁的运用)
    今天简单说一下cdc 的使用
    sqlserver cdc用法
    JAVA | Java对象的内存分配过程是如何保证线程安全的?
    物联网(莹石云)WIFI一键配置原理分析(zz)
    Dell xps 13 9350待机时总是关机的处理方法
    Vue系列:在vux的popup组件中使用百度地图遇到显示不全的问题
    如何通过百度地图将经纬度转换为地址信息
  • 原文地址:https://www.cnblogs.com/cyrusxx/p/12824187.html
Copyright © 2011-2022 走看看