IS-IS路由协议基础知识

2023-07-31 04:00:07

网络协议太多了,如果不经常用或定期去复习它,真的很容易忘光的。接下来,龙哥与大家一起聊聊IS-IS路由协议,这样我也算是复习了一遍。如有讲错的地方,还请大家批评指正。


1、IS-IS


什么是IS-IS?


是Intermediate System to Intermediate System的简称。它也是一种内部网关路由协议,类似OSPF路由协议。也是基于SPF算法的链路状态协议。该协议是ISO 10589中定义,旨再ISO CLNS环境运行CLNP协议的路由器之间提供动态交换机路由信息的途径,并且ISIS协议可以自动计算最佳路径和选择路由。

学习一种路由协议的内部结构和底层操作机制,龙哥建议对其所在网络互连协议体系及相关技术做一个整体性的了解是很有帮助的。说简单点,就是了解IS-IS属于哪个网络层次的?怎么封装的?同个层次都有哪些协议?

谈到IS-IS,就需要和大家一下回顾一下OSI/RM 开放系统互联参考模型,OSI/RM是分为7个层次, 可能有些初学者问:“为啥要分层?” 分层的好处就是:兼容性及方便维护,即不同厂商、专家,只需关注某一层次,层次之间按标准对接。例如应用层的开发人员,只需重点关注应用层面,无需去学习网络层的技术,无需了解物理层的东西,也可以开发出一款不错的APP。后来出现了TCP/IP参考模型,这个模型被广泛采用,他们的参考模型,如下:


在OSI体系中,分两种数据通信服务:

1、面向连接网络服务(Connection Network Service,CONS)

2、无连接网络服务(Connectionless Network Service,CLNS)


注:什么是面向连接?即要求数据在通信节点之间传输之前,需要沿通信路径建立一个节点间的连接。面向无连接则不需要。
本期我们要聊的IS-IS是属于OSI体系中网络层的协议,IS-IS是CLNS网络环境中的一部。而OSPF是TCP/IP中传输层的协议,基于IP的。CLNS网络架构中,还有其他协议,比如CLNP,ES-IS。 CLNP就类似TCP/IP中的IP协议,ES-IS是终端到中间系统之间的协议,类似ICMP,DHCP,ARP等。


从上图,我们可以看出,CLNP、IS-IS、ES-IS都是同网络层的协议,分别被封装在数据链路层的帧内,这点跟OSPF就完全不同了,OSPF和IP不是同网络层的协议。由于TCP/IP已经广泛流行了,但又想使用IS-IS,怎么办呢?科学家们就进行了改良,使它既能支持OSI环境中,也能支持TCP/IP,经过改良的IS-IS,我们称集成的IS-IS。今后提到的IS-IS,如果没有特别说明,一般也是指集成的IS-IS。下面,我们来看看CLNP、IS-IS、ES-IS数据帧结构:


看完龙哥画的这个帧结构图,是不是对这几个协议,有了比较清晰的定位了。如果还看不懂,那龙哥再抓个包,拆个报文来看看,结合实际,往往能更加深刻去理解和消化新的东西。

(ISIS hello报文)


2、相关术语


先来了解一下几个相关的术语,

IS :intermediate system中间系统(好比常说的,Router 路由器)

DIS:Designated intermediate system(指定中间系统,好比OSPF的DR指定路由器)

ES:End system (就是终端,Host)

SysID:system ID(好比OSPF里的router id)

PDU:packet data unit报文数据单元(好比IP Packet)

LSP:link state protocol data units链路状态数据单元(注意这里的LSP不是MPLS中的LSP,这里好比OSPF的LSA

携带路由信息)

LSPDB:LSP database LSP数据库(好比OSPF中的LSDB)

NSAP:network service access point(CLNP地址+服务端口)

NET:其实也是NSAP,只不过是特殊一点而已,最后一字节为0,Areaid +router id)

ESH:end system hellos, 终端发出来的hello包

IIH:intermediate system to intermediate system hello PDU(相当于OSPF的hello报文)

PSNP:partial sequence number protocal data unit 部分序列号协议数据单元(类似OSPF的ACK、LSR)

CSNP:complete sequence number protocal data unit 全部序列号协议数据单元(类似OSPF的DBD报文)


3、NET


集成的IS-IS仍然使用CLNP中基于节点的地址来标识每一台路由器。CLNP地址被称为网络服务访问点(Network Service Access Point,NSAP)。


NSAP=area id+sys id+N



其中N是选择符,类似TCP/IP协议族中的端口号。

这里我们只需记住特殊的NSAP即可,就是N=00,也称为NET(网络实体名称)。


从ISIS 地址结构图,可知,NSAP总长最多是20个字节,最少8个字节


ISIS地址示例:

例子1:49.0001.1111.1111.1111.00

即,Area=49.0001 system id=1111.1111.1111 N=00


4、IS-IS整体拓扑



从ISIS整体拓扑,我们很容易了解到:

1、ISIS 允许将整个路由域分为多个区域,具有相同的Area ID的路由器属于同一个区域,一个路由器目前最多可配置3个不同的Area ID,配置不同的区域ID是为了平衡的进行区域合并、分割、转换用。注意:system id只能配置一个,唯一标识。

2、ISIS域中的路由器必须属于一个特定的物理区域,这是由NSAP的area id决定的,和OSPF不同的是,一个路由器必须整个属于某个区域,而不是像OSPF那样某个接口属于一个区域,其他接口又可以属于其他区域。

3、ISIS也分骨干区域和非骨干区域,但与OSPF不同,不是基于area id 来区别,OSPF骨干区域是area 0,ISIS是基于路由器类型来区域,L2路由器、L1/L2路由器,并且要连续的组成的区域,才是骨干区域。


5、ISIS路由器类型与层次

ISIS路由器分类:

1、Level-1 Routers(L1路由器)

2、Level-2 Routers(L2路由器)

3、Level-1 and Level-2 Routers(L1/L2路由器)


注:思科,华为路由器默认为L1/L2路由器。


Level 1 Router:位于普通区域内部

L1路由器只和本区域内的L1路由器(或具有L1功能的L1/2)形成邻居关系

L1路由器只有本区域L1的链路数据库(L1 LSDB),包含本区域内所有L1路由器的路由信息

通过与自己最近的L1/2路由器的ATT bit生成指向此台设备的默认路由作为出口路由。(有点像OSPF里的Stub区域)

在转发时,如果目的地在本区域内,则直接利用L1 LSDB生成的路由转发报文;如果目的地址不在本区域,则使用本区域最近的L1/2路由器作为区域外网络出口,但可能存在次优的路由。


Level 2 Router:位于骨干区域

可以和其他L2(或具备L2功能的L1/2路由器)形成邻居关系。

L2路由器有level 2 的链路状态数据库(L2 LSDB),它还包含所有的区域间路由信息。


L1/L2 Router:通常位于区域边界上

可以和本区域的任何级别路由器形成邻居关系;可以和其它区域相邻的L2或L1/2路由器形成L2邻居关系

可能有两个级别的链路状态数据库;L1用来作为域内路由,L2用来做域间路由。

完成它所在区域和骨干直接的路由信息的交换。既承担L1的职责也承担L2的职责。


注意:一个L1/L2 路由器如果和其它区域的路由器形成邻接关系,那么它将通告本区域内的L1路由器的路由信息,它有区域的出口点,具体方法:在生成本区域的L1 LSP时,将报文中的ATT bit置为1,发给区域内的L1邻居。

IS-IS由2个层次组成:

1、Level 2: 骨干区域(backbone),连续的Level2、Level1/2路由器集合。

注意:IS-IS的骨干区域不是某个特定的什么区域!!!!即49.00001 可以成为骨干区域,49.0002页可以成为骨干区域。

取决于路由器类型。

2、Level 1:相对于单个区域的概念,由本区域中的Level 1路由器构成,其路由信息将自动发布到骨干。


注意:一个IS-IS路由域并不一定需要有两个层次。如果你规划只部署一个区域,你可以是全部L1,也可以全部L2。

但一般优先推荐L2,因为L2有较好的扩展性。



红色区域:为骨干区域,绿色区域:为普通区域。