07、IS-IS
ISIS基础
IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO为它的CLNP
(ConnectionLessNetwork Protocol,无连接网络协议)设计的一种动态路由协议。
为了提供对IP路由的支持,对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI(Open System Interconnect,开放式系统互联)环境中,我们将扩展后的IS-IS称为集成IS-IS。
NSAP(Network Service Access Point,网络服务访问点)是OSI协议栈中用于定位资源的地址,类似于TCP/IP模型中的IP地址。
NET
NET(Network Entity Title,网络实体名称)是OSI协议栈中设备的网络层信息,主要用于路由计算,由区域地址(Area ID)和System ID组成,可以看作是特殊的NSAP(SEL为00的NSAP)。
NET的长度与NSAP的相同,最长为20Byte,最短为8Byte。
在IP网络中运行IS-IS时只需配置NET,根据NET地址设备可以获取到Area ID以及System ID。

- SEL:长度固定1Byte,00表示支持TCP/IP协议
- System ID:长度固定6Byte,唯一标识一台路由器。与OSPF了Router ID类似。
- Area ID:长度不固定,称为区域地址,相当于OSPF中的区域编号。
从有往左读NET地址比较好。
NET的配置举例
每台运行IS-IS的网络设备至少需拥有一个NET,当然,一台设备也可以同时配置多个NET,但是这些NET的System ID必须相同。
在一个IS-IS路由域中,设备的System ID必须唯一,为了便于管理,一般根据Router ID配置System ID。

扩展为3位:在前面加上若干个0。
IS-IS区域划分
IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构:
- Level-1路由器部署在非骨干区域。
- Level-2路由器和Level-1-2路由器部署在骨干区域。
- 每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。

IS-IS与OSPF的不同点:
- 在IS-IS中,每个路由器都只属于一个区域;而在OSPF中,一个路由器的不同接口可以属于不同的区域。
- 在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域。
- 在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT(Shortest Path Tree);而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。
IS-IS路由器的分类
Level-1路由器:
- 区域内部路由器。只与同一区域的L1或L2路由器建立邻接关系(Level-1邻接关系)
- 只负责维护Level-1的链路状态数据库LSDB,该LSDB只包含本区域的路由信息。
Level-2路由器:
- 骨干路由器。与同一或者不同区域的L2路由器或者L1/2路由器形成邻接关系(Level-2邻接关系)。
- 维护一个Level-2的LSDB,该LSDB包含整个IS-IS域的所有路由信息。
- Level-2级别(即形成Level-2邻接关系)的路由器必须是物理连续的。
Level-1-2路由器:
- 同时属于Level-1和Level-2的路由器称为Level-1-2路由器。
- 与同一区域中的L1或L1-2路由器形成Level-1邻接关系。
- 与不同区域中的L2或L1-2形成Level-2邻接关系。
Level-1-2路由器与同一区域中的Level-1-2路由器,能够既建立L1邻接关系,又建立L2邻接关系。与不同区域中的Level-1-2路由器只能建立L2邻居。
在华为路由器上配置IS-IS时,缺省时,路由器全局Level为Level-1-2,当然,可以通过命令修改该设备的类型.

IS-IS支持的网络类型
IS-IS会自动根据接口的数据链路层封装决定该接口的缺省网络类型, IS-IS支持两种类型的网络:
- 广播(Broadcast): 如Ethernet。
- 点到点(P2P): 如PPP、 HDLC等。
IS-IS开销值
IS-IS使用Cost(开销)作为路由度量值,Cost值越小,则路径越优。IS-IS链路的Cost与设备的接口有关,与OSPF类似,每一个激活了IS-IS的接口都会维护接口Cost。缺省Cost为10。
一条IS-IS路径的Cost等于本路由器到达目标网段沿途的所有链路的Cost总和。
IS-IS有三种方式来确定接口的开销,按照优先级由高到低分别是:
- 接口开销:为单个接口设置开销。
- 全局开销:为所有接口设置开销。
- 自动计算开销:根据接口带宽自动计算开销。
早期的IS-IS开销类型为narrow,最大值只有63。通常都将开销类型设置为开销类型为wide,接口开销值可以扩展到16777215。
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类型不同而有所差别。

TLV的含义是:类型(TYPE),长度(LENGTH),值(VALUE)。实际上是一个数据结构,这个结构包含了这三个字段。
使用TLV的好处是,灵活性和扩展性好。
通用头部字段解释:
- 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区域的长度为6Byte。
- R(Reserved):保留,固定为0。
- Version:固定为0x01。
- Max.Areas:支持的最大区域个数。设置为1~254的整数,表示该IS-IS进程实际所允许的最大区域地址数;设置为0,表示该IS-IS进程最大只支持3个区域地址数。
IS-IS报文类型概述
IS-IS的PDU有4种类型:
- IIH(IS-IS Hello) ---------> OSPF Hello
- LSP( Link State PDU,链路状态报文) ---------> OSPF LSU
- CSNP(Complete Sequence Number PDU,全序列号报文) ---------> OSPF DD
- PSNP(Partial Sequence Number PDU,部分序列号报文) ---------> OSPF LSR
IIH:用于建立和维持邻接关系, 广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH; 广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH; 点到点网络中则使用P2P IIH。
LSP:用于交换链路状态信息。LSP分为两种,Level-1 LSP、Level-2 LSP。
SNP:通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。
SNP包括CSNP和PSNP,进一步又可分为Level-1CSNP、 Level-2 CSNP、 Level-1 PSNP和Level-2 PSNP。
IS-IS邻接关系建立
IS-IS按如下原则建立邻接关系:
- 只有同一层次的相邻路由器才有可能成为邻接。
- 对于Level-1路由器来说,Area ID必须一致。
- 链路两端IS-IS接口的网络类型必须一致。
- 链路两端IS-IS接口的地址必须处于同一网段(默认情况下)。
IIH报文
IIH报文用于建立和维持邻接关系,广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH。
IIH报文发送间隔10s,保持时间Hollding Time为IIH的3倍,30s。
重要字段:
- Holding Time : 保持时间(30s)。在此时间内如果没有收到邻接发来的Hello报文,则中止已建立的邻接关系。
- Priority :选举DIS的优先级,取值范围为0~127。数值越大,优先级越高。(DIS类似于DR)
- 该字段只在广播网中的Hello消息(LAN IIH消息)携带;点到点网络的Hello消息(P2P IIH消息)没有此字段,也没有此字段之前的R保留位。

广播网络中的邻接关系建立过程
两台运行IS-IS的路由器在交互协议报文实现路由功能之前必须首先建立邻接关系。
在广播网络中,使用三次握手建立邻接关系。

- Level-1 IIH和Level-2 IIH发送的组播地址分别为01-80-C2-00-00-14、01-80-C2-00-00-15。
- Down:邻接关系的初始状态。
- Initial:收到IIH,但是报文中的邻接列表未包含路由器自身的System ID。
- UP:收到IIS,且邻接列表中包含路由器自身的System ID。
点到点网络中的邻接关系建立过程
点到点网络中,邻接关系的建立使用两次握手方式:只要路由器收到对端发来的Hello报文,就单方面宣布邻接为Up状态,建立邻接关系。
两次握手机制存在明显的缺陷,华为设备在点到点网络中使用IS-IS时,默认使用三次握手建立邻接关系。此方式通过三次发送P2P IIH最终建立起邻接关系。

DIS与伪节点
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS(Designated Intermediate System)【指定中间系统】。
DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。
伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和Circuit ID(非0值)标识。

Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。
DIS的选举规则如下:
- DIS优先级数值最大的被选为DIS。
- 优先级相同,选择MAC地址大的。
DIS发送Hello PDU的时间间隔是普通路由器的1/3,这样可以确保DIS出现故障时能够被更快速地被发现。
DIS类似于OSPF中的DR,区别如下:
| IS-IS | OSPF | |
|---|---|---|
| 是否可抢占 | 可抢占 | 不可抢占 |
| 优先级范围 | 0~127 | 0~255 |
| 优先级为0是否参与选举 | 0也参与选举 | 0不参与选举 |
| 优先级默认值 | 64 | 1 |
| 广播王中的邻接关系 | 同一网段的同一级别都建立邻接 | 路由器只于DR和BDR建立邻接 |
链路状态数据库同步
LSP
IS-IS链路状态报文LSP用于交换链路状态信息。LSP分为两种:Level–1 LSP和Level–2 LSP。Level–1 LSP由Level-1路由器传送,Level–2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP。
两类LSP有相同的报文格式。
重要字段:
- Remaining Lifetime : LSP的生存时间,以秒为单位。
- LSP ID:由三部分组成,System ID、伪节点ID和LSP分片后的编号。
- Sequence Number: LSP的序列号。在路由器启动时所发送的第一个LSP报文中的序列号为1,以后当需要生成新的LSP时,新LSP的序列号在前一个LSP序列号的基础上加1。更高的序列号意味着更新的LSP。
- ATT(Attachment):由Level-1-2路由器产生,用来指明始发路由器是否与其它区域相连。虽然此标志位也存在于Level-1和Level-2的LSP中,但实际上此字段只和Level-1-2路由器始发的L1 LSP有关。
ISIS中的LSDB
display isis lsdb
分片号:全0表示未分片
伪节点标识:全0表示实节点,非0表示伪节点

查看非伪节点的LSP 【路由+拓扑】
display isis lsdb 0100.0000.1001.00-00 verbose

查看伪节点LSP 【拓扑信息】

CSNP与PSNP
CSNP包含该设备LSDB中所有的LSP摘要,路由器通过交互 CSNP来判断是否需要同步LSDB。
- 在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)。
- 在点到点网络上,CSNP只在第一次建立邻接关系时发送。
CSNP关键字段:
- Source ID:发出CSNP报文的路由器的System ID。
- Start LSP:CSNP报文中第一个LSP的ID值。
- End LSP ID:CSNP报文中最后一个LSP的ID值。
PSNP只包含部分LSP的摘要信息(与CSNP不同):
- 当发现LSDB不同步时,PSNP来请求邻居发送新的LSP。
- 在点到的网络中,当收到LSP时,使用PSNP对收到的LSP进行确认。
LSP的同步过程
广播网络中
新加入的路由器采用组播地址发送L1或(和)L2的LSP,使网络上所有的邻接都收到该LSP。

点到点网络中
点到点网络中,可以使用PSNP对收到的LSP进行确认

LSP的处理机制
IS-IS通过交互LSP实现链路状态数据库同步,路由器收到LSP后,按照以下原则处理:
- 若收到的LSP比本地LSP的更优,或者本地没有收到的LSP:
- 在广播网络中:将其加入数据库,并组播发送新的LSP。
- 在点到点网络中:将其加入数据库,并发送PSNP报文来确认收到此LSP,之后将这新的LSP发送给除了发送该LSP的邻居以外的邻居。
- 若收到的LSP和本地LSP无法比较出优劣,则不处理该LSP。

保活时间也就是生存时间。
路由计算
L1路由器的路由计算
R1是Level-1路由器,只维护Level-1 LSDB,该LSDB中包含同属一个区域的R2及R3以及R1自己产生的Level-1 LSP。
R1根据LSDB中的Level-1 LSP计算出Area 49.0001内的拓扑,以及到达区域内各个网段的路由信息。
R2及R3作为Area 49.0001内的Level-1-2路由器,会在它们向该区域下发的Level-1 LSP中设置ATT标志位。 R1作为Level-1路由器,会根据该ATT标志位,计算出指向R2或R3的默认路由。

缺省时, R1只能通过指向R2或R3的默认路由到达区域外部,但是R1距离R2和R3路由器的Cost值相等,那么当R1发送数据包到192.168.20.0/24时,就有可能选择路径2,导致出现次优路径。

路由渗透【解决L1次优路径】
缺省情况下,Level-1-2路由器不会将到达其他区域的路由通告本Level-1区域中。
通过路由渗透,可以将区域间路由通过Leve-1-2路由器传递到Level-1区域,此时Leve-1路由器可以学习到其他区域的详细路由,从而计算出最优路径。

L1-2路由器的路由计算
R2及R3都维护Level-1 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0001的路由。
R2及R3都维护Level-2 LSDB,它们能够通过这些LSDB中的LSP计算出Area 49.0002的路由。
R2及R3将到达Area 49.0001的路由以Level-2 LSP的形式发送到Area 49.0002。

L2路由器的路由计算
R4及R5作为Level-2路由器,只会维护Level-2 LSDB,它们能够根据该LSDB计算出到达全网各个网段的路由。

思考题

1、ABCD。 2、ACD。
总结
每一台运行IS-IS的路由器都至少有一个NET地址。IS-IS采用分层架构,所有Level-2和Level-1-2路由器共同构成了骨干区域,同一区域的Level-1路由器构成了普通区域。
IS-IS协议有四种报文类型,分别是IIH、CSNP、PSNP、LSP。
Level-1路由器只维护区域内的LSDB,Level-1路由通过离自己最近的Level-1-2路由器到达区域外部,为了避免次优路径,可以在Level-1-2路由器上部署路由渗透的特性。
IS-IS支持三种认证类型,分别是接口认证、区域认证、路由域认证。
IS-IS协议与OSPF协议都是链路路由状态协议,两者都需要维护LSDB。

浙公网安备 33010602011771号