ISIS学习笔记

关于System ID:

  1. 一个中间系统(路由器)至少有一个NET(最多可有254个),默认最多3个。
  2. 同一AREA中间系统必须有相同的area ID(level-2, level-2)。
  3. 每个中间系统在一个area中必须有一个唯一的System ID。
  4. 一个域中的两个Level-2中的系统不同有相同的System ID。
  5. NSA至少为8个字节,最多20个字节。
  6. 对于IP应用程序而言,1字节定义的AFI(标识二进制DSP语法的地址域),最少2字节定义实际区域信息,6字节定义系统ID和1字节的NSEL,故SNAP地址最少为10字节。

IS-IS整体拓扑:

为了支持大规模的路由网络,IS-IS在自治系统内采用骨干区域与非骨干区域两级分层结构。一般来说,将level-1路由器部署在非骨干区域,level-2路由器和Level-1-2路由器部署在骨干区域。每一个非骨干区域都通过level-1-2路由器与骨干区域相连。

IS-IS中选举DIS是为了减少LSP在网络中的通告次数,避免带宽浪费。

ISIS中DIS的特点:

  1. ISIS中只有DIS而没有备份的DIS。同时DIS可以被抢占。原因是ISIS中所有的路由器之间都可以建立邻接关系。并且DIS设备的hello报文是每隔10/3秒发送次,在华为中是3秒发送一次,holdtime时间是9秒,可以更快的发送DIS故障,重新选举DIS。非DIS设备每隔10s发送一次IIH,holdtime为30s。
  2. Level-1和Level-2分开选举DIS。

如何选举DIS?

  1. 比较优先级,优先级越大越优。默认优先级为64,在ISIS中如果将优先级设置为0,同样可以参加选举。
  2. 如果优先级一样,需要比较MAC地址,MAC地址越大越优。

影响ISIS邻居建立的条件?

  1. 区域ID不一致。(只会影响level-1)

  2. 网络类型不一致。

  3. 运行级别不一致。(注:在华为中如果系统级别和接口电路级别不同,以系统级别为准。)

    修改接口级别主要用在以下两种场景:

    1. 只向该网段发送和接收L1或者L2的报文。
    2. 只将该接口的路由宣告进L1或L2。 (系统级别包含接口级别)

    level-1 和 level-2 无法建立。

    levle-1和level-1 (需保证区域ID一致)

    level-1 和level-1-2 (需保证区域ID一致)

    level-2 和level-2 (level-2的邻居建立不会检查区域ID)

    level-2 和level-1-2 (level-2的邻居建立不会检查区域ID)

    level-1-2 和level-1-2 。(可以建立level-1的关系,但需保证区域ID一致。可以建立level-2的关系,不检测区域ID)

  4. 接口认证不一致。

    注:在ISIS中如果收到报文中携带本地不识别的TLV,可以忽略并透传给其他邻居。

    1. 接口认证:会影响邻接的建立。
    2. 区域认证:不会影响邻接的建立,但会影响L1区域的SNP和LSP报文的接收。
    3. 域的认证:不会影响邻接的建立,但会影响L2区域的SNP和LSP报文的接收。
  5. MTU不一致。(ISIS中存在隐式的MTU检测机制通过IIH报文)

    1. 广播网:1497:在广播网中发送的所有的IIH报文都会按出接口的MTU值进行填充。
    2. 点到点:1500:在点到点网络中建立邻接关系之前发送的IIH报文长度会按出接口的MTU值进行填充。建立邻接关系以后不填充,发送正常的IIH报文。

    配置:

    1. interface gi0/0/0

      mtu 1100 \接口下修改MTU为1100

      isis 1

      is-level level-2

      cost-style wide

      lsp-length originate 1097\修改后同时需修改进程下的LSP的长度,长度要小于等于计算后的MTU值。

      在接口在可通过配置isis small-hello,可以建立邻接关系。通过这种方式关闭MTU隐是检测。

  6. system-id长度不一致。(默认是6个字节)

  7. max area数量不一致。(默认是3个)

  8. system id冲突(只限于直连设备)

  9. 多拓扑。(接口下既可以支持IPv6,也可以支持IPv4 )(思科中会有影响,华为默认会在TlV中携带多拓扑信息,不影响。)

  10. IP地址不在同一个网段(ISIS在广播网中是开启源检查的,并且不能关闭。P2P也是默认开启,但是 可以关闭)

ISIS支持的网络类型:

只支持广播和点到点,不支持非广播,如果想支持非广播,需要改为点到点。

ISIS具体的报文:

  1. Hello PDU (IIH)用于建立和维护邻居关系

    1. level-1 Lan IIH(01-80-C2-00-00-14)
    2. level-2 Lan IIH (01-80-C2-00-00-15)
    3. P2P IIH
  2. LSP PDU用于交换链路状态信息

    1. Level-1 LSP
    2. Levle-2 LSP
  3. SNP PDU用于维护LSDB的完整与同步,且为摘要信息

    CSNP:

    1. Level-1 CSNP
    2. Levle-2 CSNP

    CSNP:

    1. Level-1 CSNP
    2. Levle-2 CSNP

广播网中邻接建立过程:

在广播网中采用的是可靠的邻接建立过程,如果在接收的IIH报文中看到了自己接口的MAC地址,说明邻接已经收到并确认了自己发送的IIH报文。那么本地维护邻居的状态变为UP状态。

在广播网中通过IS邻居TLV携带邻居接口MAC地址的方式保证邻居建立的可靠性。

在点到点网络中邻接建立的过程:(2Way和3way的过程)

2Way是属于两次握手,没有可靠性保证。只要收到邻接发送的IIH报文,并检测通过,维护邻居的状态为UP状态。

3Way是属于三次握手,在点到点网络中使用3way的方式保证邻接建立的可靠性。新增一种TLV,点到点邻居状态TLV。

点到点邻居状态TLV中包含四个参数:

  1. state:本地当前维护邻居的状态。
  2. 本地接口扩展电路ID(4B)
  3. 邻居的System ID
  4. 邻接接口的扩展电路ID(4b)

注:在华为中默认是3way的建立过程。

扩展电路ID:4B.

ISIS LSP交互过程

广播网中LSP的交互过程:

  1. 所有设备之间建立邻接关系。

  2. 向组播地址通告自己的LSP,Level-1的组播地址01-80-C2-00-00-14,level-2的组播地址:01-80-C2-00-00-15。

  3. 由DIS收集LSP,并每隔10s发送一次CSNP,在CSNP报文中通告DIS设备中LSDB中所有LSP的摘要信息(LSP头部信息)。

  4. 其他设备收到DIS发送的CNSP报文后,需要查看在CNSP报文中是否包含自己的LSP,如果包含说明DIS收到了自己发送的LSP。如果没有需要重传。同时,还需要将CSNP中的摘要信息和本地的LSDB做对比,查看本地去缺少哪些LSP,后续通过PSNP报文向DIS请求自己缺少的LSP。

  5. DIS收到PSNP报文后回复PSNP报文中请求的LSP。

    注:上述过程中所有的报文都是以组播方式交互。

如何在广播网中保证LSP报文交互的可靠性:

通过DIS每隔10s发送一次CSNP报文。

点到点中LSP的交互过程:

  1. 首先建立邻接关系。
  2. 开始互相发送CSNP,在CSNP报文中包含本地LSBD中所有LSP的摘要信息。
  3. 收到邻居发送的CSNP报文,需要将CSNP报文中的LSP摘要信息和自己的LSDB做对比,查看缺少的LSP,并通过PSNP报文请求缺少的LSP。
  4. 收到PSNP请求后,回复LSP报文。
  5. 收到LSP报文后回复PSNP确认接收到的LSP。

注:在点到点网络中PSNP报文有两个作用,请求和确认。

在OSPF中收到LSA后,先给邻居发送LSA,后进行SPF计算。

在ISIS中收到LSP后,小进行SPF计算,后给邻居发送LSP。

SSN/SRM标志:

发送序列号/发送路由管理

都是基于发送、接收LSP的接口设置。用于LSP完整性、可靠性的保证。

P2P链路:

  • SSN标志:用于P2P链路接收方,在收到一个LSP时设置,在完成PSNP确认时清除。
  • SRM标志:用于P2P链路发送方,在发送一个LSP时设置,在收到其PSNP确认时清除。

广播网链路:

  • SSN标志:用于广播网链路数据库同步过程中,请求完整的LSP。
  • SRM标志:用于广播网链路发送方,在发送一个LSP时设置,但在LSP传送出去后被立即清除,因为广播链路不需要PSNP确认。

LSP的老化处理:

ISIS的LSP最大老化时间为1200s(20分钟),通告间隔时间为900s(15分钟)。在ISIS中LSP是通过剩余老化时间来维护的(倒计时),如果LSP的剩余老化时间为0,说明该LSP需要被清除。如果LSP的剩余老化时间为0,需要再等待60s(零老化时间)后将LSP删除。

在ISIS中如何判断LSP的新旧:

  1. 需要比较序列号。序列号越大越新。
  2. 如果序列号一样,比较看LSP的剩余老化时间是否为0,。如为0,LSP为最新。
  3. 如果LSP的剩余老化时间不为0,则认为一致。

华为的比较方法:

  1. 若收到的LSP比本地的序列号更小,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。若收到的LSP比本地的序列号大更大,则将这个新的LSP存入自己的LSDB,再通过一个PSNP报文来确认收到此LSP,最后再将这个新的LSP发送个除了发送该LSP的邻居以外的邻居。
  2. 若收到的LSP序列号和本地相同,则比较Remaining Lifetime,若收到LSP的剩余老化时间小于本地LSP的剩余老化时间,则将收到的LSP存入LSDB中并发送PSNP报文来确认收到此LSP,然后将该LSP发送给LSP的邻居以外的邻居。若收到LSP的剩余老化时间大于本地的。则直接发送给对方本地的LSP,然后等待对方给自己一个PSNP报文作为确认。
  3. 若收到的LSP和本地LSP的序列号和Remaining Lifetime都相同,则比较Checksum,若收到LSP的Checksum大于本地LSP的Checksum,则将收到的LSP存入LSDB中并发送PSNP报文俩确认收到此LSP。然后将该LSP发送给LSP的邻居以外的邻居。若收到LSP的Checksum小于本地LSP的Checksum,则直接发送给对方本地的LSP,然后等待对方给自己一个PSNP报文作为确认。
  4. 若收到的LSP和本地LSP的序列号,Remaining Lifetime和Checksum都相同,则不转发该报文。

ISIS LSDB是由几部分组成的?

ISIS LSDB

图:ISIS LSDB

  1. 0000.0000.000 是system id。

  2. 00是伪节点ID部分。如果位00表示是标准的LSP,标准的LSP每台ISIS路由器都会通告,如果为非0值,说明是伪节点的LSP,伪节点LSP只有DIS才会通告。(* 部分表示是本地产生的LSP。)

  3. -00是LSP的分片部分。标准分片:默认最多可以分256片(00-255)。00是首部分片,在00片中包含所有协议的TLV头部,而其他分片只有通告数据。如果接收过程中00片丢失,那么后续的分片都会被丢弃。

  4. ATT:区域边界标识位

  5. P:分段区域修复位(用于虚链路,但是各厂商均不支持。该比特位只有在L2 LSP才会被置位)

  6. OL:overload过载位:如果邻居通告的LSP中OL位置位,那么需要通告该邻居到达的目的路由,都不会再该邻居做计算。但是该邻居通告的直连路由,还可以做计算(需要经过该邻居转发的路由不再做计算,但是该邻居始发的路由还可以做计算)。

    OL位的设置有两种方式:

    1. 自动设置:内存不足。 协议联动(ISIS over BGP)。
    2. 手动设置。(用于流量的割接)

路由渗透:

Level1-2路由器手动将Level 2层级路由渗透到level 1层,可以避免level 1路由器路由次优路由。

在ISIS中Level-1区域的设备需要通过默认路由访问骨干区域,并且默认路由不是由Level1/2的设备通告的,而是由Level-1区域中的设备自动生成的。

Level-1区域的设备什么情况下会生成一条默认路由?

  1. 收到的Level-1的LSP中ATT位置位,就需要生成该设备的默认路由。

  2. 如果区域中存在多条Level-1的LSP中ATT位置位,则生成一条离自己最近的设备的默认路由。

    只有Level1-2的设备才会通告ATT位置1的Level1的LSP。

什么情况下Level1-2的设备才会通告一条ATT置位的Level1的LSP?

  1. Level1/2的设备在骨干区域(level2)中存在活动的邻接关系。
  2. 骨干区域的区域ID不能和Level1/2的区域ID一样。

ISIS的度量值类型:

窄度量:

  • 通过一个字节的长度,表示度量值。在这一个字节中,前两个比特位用于标志位。后面的六个bit表示度量值。
  • 第一bit:up、dowm比特位,如果为0,代表Up,如果为1,代表down。主要目的是用于防环。如果收到的路由条目中down比特位置位,该路由不能被通告会level2的区域。
  • 第二个bit :标识路由类型。(internal/external),如果为0,表示内部路由(internal),如果为1,表示外部路由(external)。
  • 窄度量中同时还划分了四种度量值,分别为:
    1. 默认度量。(目前只有这个在使用)
    2. 延迟度量。
    3. 差错度量。
    4. 开销度量。

窄度量中接口下可以配置的最大度量值为63,转发路径上度量值之和最大为1024.如果在窄度量的环境中收到的路由条目的度量值大于1024,则该路由不选路。

ISIS中度量值的配置方式:

  1. 默认值为10.
  2. 手动设置。

宽度量(4B):

宽度量:接口COST = (bandwidth-reference/接口带宽)* 10;

窄度量:根据接口带宽范围有固定的cost值。

想要支持IPv6的话必须使用宽度量。

22TLV(3B)扩展的IS可达性

135TLV(4B)扩展的IP可达性

注:如果设备两端的度量类型不一致,无法计算路由。

什么场景下需要用到wide metric(宽度量)?

  1. 支持IPv6
  2. 携带Tag
  3. 支持MPLS-TE
  4. cost值范围不够用

ISIS的认证方式:

  1. 接口认证:

    只对Level-1和level-2的Hello报文进行认证。

  2. 区域认证(area):

    对Level-1的SNP和LSP报文进行认证。

  3. 路由域认证(domain):

    对Level-2的SNP和LSP报文进行认证。

    认证方式:

    1. 明文认证
    2. MD5

在负载是影响选路的配置weight:

  1. nexthope命令用来设置等价路由的优先级。

  2. 在IS-IS根据SPF算法算出等价路由后,再根据weight的权重从这些等价路由中选择下一跳,值越小越优。

  3. nexthop ip-address weight value

    value值范围:1-254。缺省值255.

坚持原创技术分享,您的支持将鼓励我继续创作!