IS-IS动态路由协议笔记(上)基本工作原理
IS-IS动态路由协议笔记(上)基本工作原理
和OSPF一样,IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统)也是一种基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议。IS-IS最初是国际化标准组织ISO为它的无连接网络协议CLNP设计的一种动态路由协议。
为了提供对IP的路由支持,IETF在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI环境中,修订后的IS-IS协议被称为集成化的IS-IS。由于IS-IS的简便性及扩展性强的特点,目前在大型ISP的网络中被广泛地部署。
本节笔记,主要介绍IS-IS协议的基本原理,包括协议报文结构,路由器分类,并分析IS-IS协议的DIS(中间系统)与OSPF的DR(指定路由器)的区别。
基本概念
IS-IS最初是国际标准化组织ISO(the International Organization for Standardization)为它的无连接网络协议CLNP(ConnectionLess Network Protocol)设计的一种动态路由协议。
IS-IS属于内部网关协议,用于自治系统内部。IS-IS是一种链路状态协议,使用最短路径优先算法进行路由计算。
园区网特点:
l 应用型网络,主要面向企业网用户。
l 路由器数量偏少,动态路由的LSDB库容量相对偏少,三层路由域相对偏少。
l 有出口路由的概念,对内部外部路由划分敏感。
l 地域性跨度不大,带宽充足,链路状态协议开销对带宽占用比偏少。
l 路由策略和策略路由应用频繁多变,需要精细化的路由操作。
l OSPF的多路由类型(内部/外部),多区域类型(骨干/普通/特殊),开销规则优良(根据带宽设定),网络类型多样(最多五种类型)的特点在园区网得到了极大的发挥。
骨干网特点:
l 服务型网络,由ISP(互联网服务提供商)组建,并为终端用户提供互联服务。
l 路由调度占据绝对统治地位,路由器数量庞大。
l 架构层面扁平化,要求IGP作为基础路由为上层BGP协议服务。
l LSDB规模宏大,对链路收敛极度敏感,线路费用高昂。
l 追求简单高效,扩展性高,满足各种客户业务需求(IPV6/IPX)。
l IS-IS的快速算法(PRC得到加强),简便报文结构(TLV),快速邻居关系建立,大容量路由传递(基于二层开销低)等一系列特点在骨干网有着天然的优势。
路由计算过程
IS-IS路由协议在计算路由的过程上,大体还是分为三步:建立邻居关系、同步LSDB数据库、执行SPF路由计算。虽然看起来和OSPF相差不大,但细节上会有些许的差异。
Step 1:邻居关系建立
邻居关系建立主要是通过HELLO包交互并协商各种参数,包括电路类型(level-1/level-2),Hold time,网络类型,支持协议,区域号,系统ID,PDU长度,接口IP等。
Step 2:同步LSDB数据库(链路信息交换)
与OSPF不同,ISIS交互链路状态的基本载体是LSP(link state PDU)而不是LSA(link state advertisement);交互的过程没有OSPF协议那样经历了多个阶段,主要是通过CSNP和PSNP两种协议报文来同步,请求以及确认链路状态信息(承载的是链路状态信息摘要),而链路状态信息的详细拓扑和路由信息是由LSP报文传递。
Step 3:路由计算
SPF计算和OSPF基本一样的,但ISIS算法分离了拓扑结构和IP网段,加快了网络收敛速度。
拓扑结构
由于IS-IS原来是为CLNP设计的。CLNP网络不是使用IP地址来进行通信的,而是使用NSAP地址来进行通信。即便现在是集成IS-IS,但是使用NSAP地址这项还是保留了下来。
IS-IS路由协议具有两种地址类型:
① 网络服务访问点(NSAP)– NSAP 地址用来标识网络层服务,每种服务对应一个 NSAP 地址。
② 网络实体标题(NET)– NET 地址用来标识网络层实体或过程,而不是服务。
以下会分别对这两种地址类型进行简要的介绍。
(1) NSAP地址:
NSAP地址是由IDP和DSP组成的。
① IDP
相当于IP地址中的主网络号。它是由ISO规定,并由AFI与IDI两部分组成。AFI表示地址分配机构和地址格式,IDI用来标识域。
② DSP
相当于IP地址中的子网号和主机地址。它由High Order DSP、System ID和SEL三个部分组成。High Order DSP用来分割区域,System ID用来区分主机,SEL用来指示服务类型。
③ Area Address(Area ID)
由IDP和DSP中的High Order DSP组成,既能够标识路由域,也能够标识路由域中的区域。因此,它们一起被称为区域地址,相当于OSPF中的区域编号。
④ System ID
用来在区域内唯一标识主机或路由器。在设备的实现中,它的长度固定为48bit(6字节)。
⑤ SEL
作用类似IP中的“协议标识符”,不同的传输协议对应不同的SEL。在IP上SEL均为00。
(2) NET地址
网络实体名称NET指的是设备本身的网络层信息,是一类特殊的NSAP地址,其长度与NSAP的相同,最多为20个字节,最少为8个字节,且SEL字段为00。而在路由器上配置IS-IS路由协议时,只要考虑NET即可。
NET的在配置IS-IS过程中,NET最多也只能配3个。在配置多个NET时,必须保证它们的System ID都相同。
NET地址举例:
路由器分类
IS-IS路由器主要分为三种类型:Level-1、Level-2和Level-1-2。
l Level-1:只能创建Level-1的LSDB
Level-1路由器负责区域内的路由,只能在非骨干区域中存在。
只能与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,只负责维护Level-1的链路状态数据库,该 LSDB 包含本区域内的路由信息,到本区域外的报文转发给最近的Level-1-2路由器。Level-1路由器只可能建立Level-1的邻接关系。
Level-1 路由器的邻居都在同一个区域中,其 LSDB 包含本区域的路由信息以及到达同一区域中最近Level-1-2路由器(相当于OSPF中的ABR)的缺省路由,但到区域外的数据需由最近的Level-1-2路由器进行转发。也就是说,Level-1路由器只能转发区域内的报文,或者将到达其他区域的报文转发到距离它最近,且在同一区域的Level-1/2路由器。
l Level-2:只能创建Level-2的LSDB
Level-2路由器负责区域间的路由,它可以与相同或者不同区域的Level-2路由器或者不同区域的Level-1-2路由器形成邻居关系。Level-2路由器维护一个Level-2的LSDB,该LSDB包含区域间的路由信息。Level-2路由器只可能建立Level-2的邻接关系。
网络中的所有Level-2路由器和所有Level-1-2路由器连接在一起共同构成IS-IS网络的骨干网(注意,不是骨干区域),也称Level-2区域。IS-IS中的Level-2区域不是一个特定的区域,是由连接网络中各个区域的一部分路由器组成的,但必须物理是连续。
l Level-1-2:可以同时创建Level-1和Level-2的 LSDB ,是路由器的默认类型。
同时属于Level-1和Level-2的路由器称为Level-1-2路由器。Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由。
Level-1-2路由器可以与同一区域的Level-1形成Level-1邻居关系,也可以与其他区域的Level-2和Level-1-2路由器形成Level-2的邻居关系。
Tips:只能建立Level-2的邻接关系
① Level-2与Level-2可以建立邻接关系
② Level-1-2可以与Level-2建立邻接关系
③ Level-1-2可以与Level-1-2建立邻接关系
总结来看,相应级别的路由器可以建立相应级别的邻居,但是Level-1级别邻居的建立要求两个路由器之间处于同一区域,而Level-2级别邻居的建立不要求两个路由器处以同一区域。
根据IS-IS路由器邻居关系,可以将IS-IS划分为两个区域——骨干区域和非骨干区域。
由Level-2的IS-IS邻居构成的区域为骨干区域,由L1的IS-IS邻居构成的区域为非骨干区域,骨干区域和非骨干区域的边界在Level 1-2路由器上。
由于IS-IS没有类似于OSPF的Vlink机制,因此IS-IS的骨干区域必须是连续的。
IS-IS协议报文结构
IS-IS报文是直接封装在数据链路层的帧结构中的。PDU可以分为两个部分:报文头和变长字段部分。其中报文头部又可分为通用头部和专用头部。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别,如下图所示。
l PDU Common Header:PDU通用头部
l PDU Specific Header:PDU专用头部
l Variable Length Fields (CLV):变长字段
IS-IS的PDU有4种类型:Hello报文,LSP,CSNP,PSNP。以下仅介绍Hello报文一种格式类型。
(1)IS-IS通用报文头格式
l Interdomain Routing Protocol Discriminator: 域内路由协议鉴别符(占1个字节),IS-IS协议值固定为0x83。
l Length Indicator: IS-IS报文头部长度(占1个字节),单位为字节,包括通用报文和专用报文头部,不包括CLV字段。
l Version/Protocol ID Extension: 版本/协议标识扩展(占1个字节),固定为0x1。
l ID Length: NSAP地址中,System ID区域的长度(占1个字节)。注意,当该字段值为0时,表示System ID长度为6,值为255时,表示System ID长度为0。
l Reserved: 保留字段,恒为0。
l PDU Type: PDU报文类型(一共9种)。
l Version: IS-IS版本,恒为0x1。(IS-IS通用报文头部有两个Version字段)
l Maximum Area Address: 同时支持的最大区域个数(占1个字节)。该字段值默认值为0,且此时的“0”,表示支持的最大区域个数为3。
Tips:PDU中的变长字段部分是多个CLV(Code-Length-Value)组成的三元组。CLV也称为TLV(Type-Length-Value)。
附录:PDU类型对应关系表
类型值 |
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)IS-IS Hello报文头格式
可以通过在IS-IS视图中修改IS-IS的级别来控制IS-IS路由器发送的Hello包类型,同时,在运行IS-IS协议的接口上,也可以修改IS-IS的级别,但这会对Hello包的发送造成影响。
IS-IS协议的Hello包的发送有一个较为复杂的原则,具体如下:
① Level-1和Level-2路由器在广播型链路上,只发相应级别的Hello包,此时发送的Hello级别只与IS-IS视图下配置的路由器级别有关,而与接口上配置的IS-IS链路级别无关。
② Level-1-2路由器在广播型链路上既发送Level-1的Hello包,也发送Level-2的Hello包。
但是Level-1-2路由器发送Hello包的类型收到链路上配置的IS-IS级别的影响,当链路上配置IS-IS级别为Level-1时,则该路由器在该链路上只发Level-1的Hello包,当链路上配置IS-IS级别为Level-2时,则该路由器在该链路上只发Level-2的Hello包。
IS-IS协议仅支持点对点和广播网络类型。而两种网络类型的Hello报文头部略有不同,以下进行分别介绍。
Ⅰ、网络类型为广播时,其Hello报文(L1 LAN IIH 或 L2 LAN IIH)头格式如下:
其报文格式详解如下:
l Reserved/Circuit Type: 路由器类型(占1个字节)。高位的6比特保留,值为0。低位的2比特表示路由器的类型(01表示Level-1,10表示Level-2,11表示Level-1-2)。
l Source ID: 发出Hello报文的IS-IS路由器System ID(占6个字节)。
l Holding Time: 保持时间(占2个字节)。在此时间内如果没有收到邻居发来的Hello报文,则中止已建立的邻居关系。
l PDU Length: PDU的总长度(占2个字节)。表示整个IS-IS报文的长度,包括头部,Hello报文,以及后面的TLV字段。单位是字节。
l Priority: 选举DIS的优先级(占1个字节)。取值范围为0~127。数值越大,优先级越高。当该字段的值相等时,则比较MAC地址,值越大越优先。
l LAN ID: 包括DIS的System ID和一字节的伪节点ID。
参考链接:https://blog.csdn.net/weixin_40228200/article/details/119974828
Ⅱ、网络类型为点对点时,其Hello报文(Point-to-Point IIH)头格式如下:
从图中可以看出,P2P IIH中的多数字段与LAN IIH相同。不同的是没有Priority和LAN ID字段,而多了一个Local Circuit ID字段,表示本地链路ID。
IS-IS协议邻居关系建立
在P2P链路上,分为两次握手机制和三次握手机制。
l 两次握手只要路由器收到对端发来的Hello报文,就单方面宣布邻居为up状态,建立邻居关系,不过容易存在单通风险。
l 通过三次发送P2P的IS-IS Hello PDU最终建立起邻居关系,与广播链路邻居关系的建立情况相同。
在广播链路上,使用LAN IIH报文执行三次握手机制建立邻居关系。
l 当收到邻居发送的Hello PDU报文里面没有自己的system ID的时候,状态机进入initialized。
l 只有收到邻居发过来的Hello PDU有自己的system ID才会up,排除了链路单通的风险。
l 广播网络中邻居up后会选举DIS(虚节点),DIS的功能类似OSPF的DR(指定路由器)。
附录:IS-IS协议的DIS介绍以及DIS和DR的类比
(1)DIS与伪节点的概念
DIS是指指定中间系统(Designated IS)。
伪节点是指在广播网络中由DIS创建的虚拟路由器。
(2)DIS的特点
在广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔再进行DIS的选举。
Hello报文中包含Priority 字段,Priority值最大的将被选举为该广播网的DIS。若优先级相同,接口MAC地址较大的被选举为DIS。IS-IS中DIS发送Hello时间间隔默认为10/3秒,而其他非DIS路由器发送Hello间隔为10秒。
(3)DIS与DR的类比
不同点:
相同点:
① 进行SPF计算时,都把它当成虚节点,简化MA网络的逻辑拓扑。
② 都是为了减少LSP/LSA的泛洪。
③ 在ISIS中还可以由DIS发送CSNP来同步链路的LSDB(ISIS扩展作用)。