五、IS-IS报文
1、IS-IS报文格式
IS-IS报文是直接封装在数据链路层的帧结构中的。
PDU(Protocol Data Unit,协议数据单元):
报文头(IS-IS Header)
变长字段(Variable Length Fields )。
IS-IS Header:
通用头部(PDU Common Header)
专用头部(PDU Specific Header)
对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别。
2、IS-IS通用头部详解
PDU可以分为两个部分,报文头和变长字段部分。其中头部又可分为通用头部和专用头部。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别。
通用头部:所有报文都会存在该头部 并且格式都是一样的。
Intradomain Routing Protocol Discriminator:域内路由选择协议鉴别符,固定为0x83。
Length Indicator:IS-IS头部的长度(包括通用头部和专用头部),以Byte为单位。
Version/Protocol ID Extension:版本/协议标识扩展,固定为0x01。
System ID Length:NSAP地址或NET中System ID区域的长度。值为0时,表示System ID区域的长度为6 Byte。
R(Reserved):保留,固定为0。 Version:固定为0x01。
Max.Areas:支持的最大区域个数。设置为1~254的整数,表示该IS-IS进程实际所允许的最大区域地址数;设置为0,表示该IS-IS进程最大只支持3个区域地址数。
3、IS-IS报文类型
类型 | 全称 | 备注 |
IIH(Hello报文) | ISIS Hello PDU | 建立和维护邻居关系 |
LSP(链路状态报文) | Link State PDU | 传输链路状态信息 |
SNP(序列号报文) | Sequence Numbers PDU | 描述数据库中的LSP |
(1)PDU类型
IS-IS的PDU有4种类型:Hello报文(3),LSP(2),SNP(CSNP(2),PSNP(2))。
类型值 | PDU类型 | 简称 |
15 | Level-1 LAN IS-IS Hello PDU | L1 LAN IIH |
16 | Level-2 LAN IS-IS Hello PDU | L2 LAN IIH |
17 | Point-to-Point IS-IS Hello PDU | P2P IIH |
18 | Level-1 Link State PDU | L1 LSP |
20 | Level-2 Link State PDU | L2 LSP |
24 | Level-1 Complete Sequence Numbers PDU | L1 CSNP |
25 | Level-2 Complete Sequence Numbers PDU | L2 CSNP |
26 | Level-1 Partial Sequence Numbers PDU | L1 PSNP |
27 | Level-2 Partial Sequence Numbers PDU | L2 PSNP |
(2)Hello报文 (IIH报文(IS-to-IS))
Hello报文主要用于邻居发现,协商参数并建立和维持邻居关系,称为IIH(IS-to-IS Hello PDU)。
1)Hello报文分类
根据链路和邻居级别又可以分为三种:
(1)L1 Hello报文(Level-1 IIH)。 用于在广播型链路上建立L1的邻居。
(2)L2 Hello报文(Level-2 IIH)。 用于在广播型链路上建立L2的邻居。
(3)P2P Hello报文(P2P IIH)。 用于在P2P链路上建立L1和L2的邻居。
发送哪种报文是由ISIS中间系统决定的(IS决定,就是路由器自己),通过在ISIS Header中的PDU Type进行标识。
IIH描述了形成的是哪种邻居关系,邻居关系实际由ISIS Header中的PDU Type和ISIS Hello的Circuit字段共同决定。
2)Hello间隔(Hello报文不影响邻居的建立)
Hello报文10s发送一次,邻居失效时间为3倍的发送间隔(30s)
但是当选举DIS后,DIS路由器会10/3s周期性发送Hello报文,非DIS路由器还是10s发送一次
当非DIS路由器在10s没有收到DIS发的Hello报文,则认为DIS失效
当DIS路由器/非DIS路由器在30s没有收到非DIS路由器发送的Hello报文,则认为邻居失效
3)Hello报文详情
IIH报文需要通过填充字段,用于邻居两端协商发送报文的大小。
1)广播多路网络
广播:LAN IIH组播发送,分为L1、L2两种(Level-1 LAN IIH、Level-2 LAN IIH)。
2)P2P网络
在P2P网络中,使用P2P IIH(IS-IS Hello)。但是没有表示DIS(虚节点)的相关字段。
P2P IIH中相对于LAN IIH来说,多了一个表示本地链路ID的Local Circuit ID字段,缺少了表示广播网中DIS的优先级的Priority字段以及表示DIS和伪节点System ID的LAN ID字段。
(3)LSP链路状态报文
链路状态报文LSP(Link State PDU)用于交换完整的链路状态信息(携带完整信息)。 (类似于OSPF中的LSU报文)。
LSP通用报头
1)LSP分类
从报文角度LSP分为两种:
1、Level-1 LSP由Level-1 IS-IS传送,用于描述非骨干区域链路状态表。
2、Level-2 LSP由Level-2 IS-IS传送,用于描述骨干区域链路状态表。
Level-1-2 IS-IS则可传送以上两种LSP。L1和L2LSP的区别只存在于报文级别上,但是具体的内容没有差别。
从用途角度LSP分为:
1、实节点LSP。相当于OSPF Type1 LSA,每台运行IS-IS协议的路由器都会产生,用于描述自身直连链路状态。
2、伪节点LSP。相当于OSPF Type 2 LSA,广播型链路上由DIS产生,用于描述广播型链路。
2)L1、L2 LSP报文详情
LSP报文中主要字段的解释如下:
ATT字段:用来标识该路由是L1/L2路由器发送的。
当Level-1-2 IS-IS在Level-1区域内传送Level-1 LSP时,如果Level-1 LSP中设置了ATT位,则表示该区域中的Level-1 IS-IS可以通过此Level-1-2 IS-IS通往外部区域。
OL(LSDB Overload)字段:过载标志位。
对路由器设置过载位后,其它路由器在进行SPF计算时不会考虑这台路由器
当路由器内存不足时,系统自动在发送的LSP报文中设置过载标志位
IS Type字段:用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS(01表示Level-1,11表示Level-2)。
从用途或者说从发布者,LSP报文分为两种:
实节点LSP:P2P与广播型网络都产生,类似OSPF的1类LSA,每台ISIS路由器都会产生用于描述自身直连的链路状态。
伪节点LSP:只有广播型网络会产生,类似OSPF的2类LSA(每条广播型链路产生一条)
伪节点LSP相当于OSPF Type 2LSA,广播型链路上由DIS产生,用于描述广播型链路。
在伪节点LSP中,只包含邻接信息而不包含路由信息。
4)LSP包含信息
IS-IS LSP区分
IS-IS协议通过LSP ID唯一区分一条LSP。
LSP ID一共8Byte,由三个部分:system-id、伪结点标识符、分片标识符组成。
system-id:用于标识LSP的产生路由器,类似于OSPF的Advertised Router。
伪节点标识符:用于描述IS-IS路由器的真实链路信息,
当伪节点标识符为0时,代表此LSP为实结点LSP;当伪节点标识符不为0时,代表此LSP为伪结点LSP,此时system-id为链路上DIS的system-id。
分片标识符:用于描述同一态IS-IS路由器产生的不同LSP。
若需要描述的连路由信息很多,一条LSP无法承载时,就会使用此字段进行分片。
LSP ID system-id与伪节点标识符之间使用点号隔开,伪节点标识符和分片标识符之间使用短杠隔开。
LSP ID=system id+伪节点标识符-分片标识符
System id:标识产生此LSP的路由器(类似于OSPF的Advertised Router) 6字节
伪节点标识符:标识LSP的类型。1字节
00:代表实节点LSP(1类LSA)
非00:代表伪节点LSP(2类LSA)
分片标识符:当LSP携带的内容过多而产生分片,对分片进行的编号。 1字节(当IS-IS要发布的链路状态协议数据报文PDU(Protocol Data Unit)中的信息量太大时,IS-IS路由器将会生成多个LSP分片,用来携带更多的IS-IS信息。)
OSPF报文依靠IP报文来分片,ISIS需要自己分片
设备启用ISIS后,会自动为接口分配一个接口ID(节点标识符)
[Huawei]dis isis interface
Interface information for IsIS(l)
Interface Id IPV4.State IPV6.State MTU Type DIS
GE0/0/0 001 UP Down 1497 L1/L2 NO/NO
GE0/0/1 002 UP Down 1497 L1/L2 NO/NO
(4)DIS(伪节点)
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS。
DIS(designated intermediate system,指定中间系统/伪节点)在广播网络中由DIS创建的一台虚拟路由器。
DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。
伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和Circuit ID(非0值)标识。
DIS在伪节点LSP中通告LAN中的所有邻居。
LAN中的所有路由器在它们的LSP中通告自己与伪节点的连接性。
在OSPF中DR不会和自己建立邻居,在ISIS中,DIS会和自己建立邻居。DIS类似于一个伪节点。
1)伪节点的作用
减小路由器LSP的大小
使路由器LSP更稳定
使SPF计算更快
2)DIS特点
在广播网络中需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔(6s)在进行DIS选举。ISIS中DIS发送Hello时间间隔为10/3秒。(DIS是3s hello时间)
Hello报文中包含Priority字段,Priority的值最大的将被选举为该广播网中的DIS,若优先级相同,接口MAC地址最大的被选举为DIS。
在一个LAN中,必须有一个路由器被选举成为DIS,选举基于接口优先级。DIS的选举是抢占式的。
3)DIS的选举规则
Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。
DIS的选举规则如下:
1、比较接口优先级,大的优先。 默认优先级等于64。
如果所有接口的优先级一样,具有最大的MAC地址(SNPA)的路由器将当选DIS。
SNPA(sub network point of attachment):指的是MAC地址,在帧中继网络中,SNPA是local data link connection identifier(DLCI)
2、比较接口mac地址,大的优先。
如果SNPA是一样的,具有最大的system ID的路由器将当选为DIS。
3、比较system ID,最大的system ID的路由器优先。
DIS发送Hello PDU的时间间隔是普通路由器的1/3,这样可以确保DIS出现故障时能够被更快速地被发现。
4)IS-IS中DIS与OSPF协议中DR的区别
类比点 | ISIS DIS | OSPF DR |
选举条件 | 先比优先级再比MAC地址 | 先比优先级再比router id |
选举优先级 | 所有优先级都参与选举 | 优先级为0,不参与选举 |
选举等待时间 | 所有优先级都参与选举 | 40s |
hello时间 | DIS是3s hello时间 SIS选举只需要6s,两个hello时间 | DR是10s或30s hello时间 选举DR需要40s |
备份 | 所有优先级都参与选举 | 有(BDR) |
邻接关系 | 所有路由器互相都是邻接关系 | DR和BDR建立邻接关系 DR Other之间都是邻居关系是2-way关系 |
抢占性 | 会抢占,DIS周期性的发送CSNP | 不会抢占 |
作用 | 周期发送CSNP,保障MA网络LSDB同步 | 主要为了减少LSA泛洪 |
5)修改DIS优先级
interface GigabitEthernet0/0/0
ip address 10.1.35.3 255.255.255.0
isis enable 1
isis dis-priority 127 level-2
6)查看非伪节点与伪节点的LSP
(5)SNP序列号报文
序列号报文SNP(Sequence Number PDU)描述全部或部分数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。
1)SNP报文分类
SNP报文可以分为两大类、四小类:
1、CSNP(Complete Sequence Number PDU,全序列号报文) (类似OSPF的DD报文) 主要用于通告链路状态数据库(LSDB)摘要。
又细分为:
L1 CSNP L1级别的完全序列号PDU,类似OSPF DD报文。
L2 CSNP L2级别的完全序列号PDU,类似OSPF DD报文。
2、PSNP(Partial Sequence Number PDU,部分序列号报文) 用于请求和确认链路状态信息。
又细分为:
L1 PSNP L1级别的部分序列号PDU,类似于OSPF的LSR和LSACK。
L2 PSNP L2级别的部分序列号PDU,类似于OSPF的LSR和LSACK。
2)CSNP报文详情
CSNP报文:主要用于通告链路状态数据库(LSDB)摘要。
包括LSDB中所有LSP的摘要信息,路由器通过交互CSNP来判断是否需要同步LSDB,从而可以在相邻路由器间保持LSDB的同步。
CSNP:分为L1和L2两种,用于描述各自的LSDB当中的所有LSP的摘要信息。
CSNP发送间隔:
在广播网络(MA)上,CSNP由DIS定期发送(缺省的发送周期为10秒),增加可靠性。
在点到点链路(P2P)上,CSNP只发送一次,邻居状态UP后发送一次。
L1、L2 CSNP报文通用字段
CNSP全序列号报文,描述LSDB中全部LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。 (类似OSPF的DD报文,传递的是LSDB里所有的链路信息摘要)
2)PSNP报文详情
PSNP报文:用于请求和确认链路状态信息。
PSNP只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行确认,当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP。
在广播网络(MA)中,当收到LSP时,使用PSNP对收到的LSP进行确认。
PSNP只包含部分LSP的摘要信息(与CSNP不同):
当发现LSDB不同步时,PSNP来请求邻居发送新的LSP
在点到点的网络中,当收到LSP时,使用PSNP对收到的LSP时行确认
PSNP:分为L1和L2两种,用于请求LSP和确认作用。
L1、L2 PSNP报文通用字段
PSNP部分序列号报文,PSNP只列举最近收到的一个或多个LSP的序号,能够一次对多个LSP进行确认。当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP。(类似OSPF的LSR和LSACK报文)
4、IS-IS常见的TLV
TLV(Type-Length-Value)是一个数据结构,包含以下三个字段:类型(TYPE),长度(LENGTH),值(VALUE)。
许多报文都采用TLV,使用TLV结构构建报文的好处是灵活性和扩展性好。采用TLV使得报文的整体结构固定,增加新特点只需要增加新TLV即可。不需要改变整个报文的整体结构。
网络拓扑结构和路由信息用TLV结构表现使得报文的灵活性和扩展性得到了极大的发挥。
使用TLV的作用
使用TLV结构来构建报文,增加灵活性与扩展性。
增加新特点只需要增加新的TLV即可,不需要改变整个报文的整体结构。
(1)TLV的类型
不同的TLV存在于不同的IS-IS PDU报文中
(2)IS-IS路由器开销相关TLV
narrow风格的开销类型和wide风格的开销类型,使用不同的TLV来描述自己的路由信息,IS-IS路由器之间就是通过在TLV上的不同来判断邻居IS-IS路由器所采用的开销风格。
在配置IS-IS组网时,要注意尽量使得IS-IS路由器之间开销风格一致,负责IS-IS组网时就容易出现问题。当IS-IS的开销类型与自身不兼容时,不影响相互之间IS-IS邻居的建立,也会正常接收邻居的LSP报文并存入自身的LSDB中。但是本身却不计算邻居的路由信息。
1)Narrow类型下使用的TLV:(设备默认模式开销都是10,手工配置接口开销取值范围为1~63)
128号TLV(IP Internal Reachability TLV):用来携带路由域内的IS-IS路由信息。
130号TLV(IP External Reachability TLV):用来携带路由域外的IS-IS路由信息。
2号TLV(IS Neighbors TLV):携带拓扑信息(邻居信息)。
Narrow度量值风格的LSP报文如下:
2)Wide类型下使用的TLV:(设备默认模式开销都是10,手工配置接口开销取值范围是1~16777215)
132号TLV: 携带接口的IPv4地址,用于计算下一跳
135号TLV(Extended IP Reachability TLV):用来替换原有的IP reachability TLV,携带IS-IS路由信息,它扩展了路由开销值的范围,并可以携带sub TLV。
22号TLV(IS Extended Neighbors TLV):携带拓扑信息(邻居信息)。
Wide度量值风格的LSP报文如下:
进程下加入auto-cost enable命令,Narrow模式和Wide模式都会参考接口带宽大小计算开销值,只 是参考准则有少许差异。
整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:CSDN】