IS-IS动态路由协议笔记(中)路由计算方法
IS-IS动态路由协议笔记(中)路由计算方法
中间系统到中间系统(IS-IS,Intermediate system to intermediate system,读作“i-sys”)是一种内部网关协议,是电信运营商普遍采用的内部网关协议之一。
标准的IS-IS协议是由国际标准化组织制定的ISO/IEC 10589:2002 所规范的。但是标准的IS-IS协议是为无连接网络服务(CLNS)设计的,并不直接适合于IP网络,因此互联网工程任务组制定可以适用于IP网络的集成化的IS-IS协议,称为集成IS-IS,它由RFC 1195等RFC文档所规范。由于IP网络的普遍存在,一般所称的IS-IS协议,通常是指集成IS-IS协议。
由笔记的上篇我们可知,IS-IS路由协议的路由收敛过程与OSPF路由协议相仿,均可分为建立邻居关系,同步LSDB数据库,执行SPF路由算法三个步骤,但细节上有所不同。
本节笔记,我们继续讨论IS-IS协议链路状态信息的载体和交互,路由算法SPF的计算过程,网络分层路由域内(外)的概念,最后总结IS-IS协议和OSPF协议的差异性。
TLV三元组
PDU中的变长字段部分是多个TLV(Type-Length-Value)三元组。TLV也可以称为CLV(Code-Length-Value)。
如上图所示:TLV的含义是:类型(TYPE),长度(LENGTH),值(VALUE)。实际上是一个数据结构,这个结构包含了这三个字段。
网络拓扑结构和路由信息使用TLV结构构建报文,使报文结构的灵活性和扩展性获得提升。TLV结构使报文的整体结构固定,增加新特点时只需要增加新TLV即可,不需要改变整个报文的整体结构。
链路状态信息载体
IS-IS路由协议与其他路由协议不同,是直接运行在数据链路层上的。对等路由器间通过PDU来传递链路状态信息,完成链路状态数据库(LSDB)的同步。
IS-IS中的PDU主要分为三大类:Hello PDU,LSP PDU,SNP PDU。
① Hello PDU用于建立和维持邻居关系。已经在笔记上篇进行详细的介绍,此处进行总结:
- 网络类型为点对点时,其Hello报文为:P2P IIH
与LAN IIH相比多了Local Circuit ID字段,表示本地链路ID。
- 网络类型为广播时,其Hello报文为:L1 LAN IIH或L2 LAN IIH
分别有Priority字段代表选举DIS的优先级,LAN字段代表DIS的System ID和一字节的伪节点ID
② LSP PDU(Link State Protocol PDU)用于交换链路状态信息。
LSP类似于OSPF的LSA,承载的是链路状态信息,描述所处网络的拓扑结构和网络号。可分为实节点和伪节点LSP(只在广播链路存在)。
LSP报文中包含了两个重要字段:ATT字段、IS-Type字段。其中ATT字段用于标识该路由是Level-1还是Level-2路由器发送的,IS-Type用来指明生成此LSP的IS-IS类型是Level-1还是Level-2 IS-IS。
- Level-1 LSP由Level-1 路由器传送。
- Level-2 LSP由Level-2 路由器传送。
- Level-1-2 路由器则可传送以上两种LSP。
LSP的刷新间隔为15分钟;老化时间为20分钟。但是一条LSP的老化除了要等待20分钟外,还要等待60秒的零老化时延;LSP重传时间为5秒。
③ SNP PDU(Sequence Number PDU)用于维护LSDB的完整与同步,且为摘要信息。
SNP PDU分为CSNP(用于同步LSP)和PSNP(用于请求和确认LSP)两类。
- CSNP(Complete Sequence Number PDU):包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。类似于OSPF的DD报文用于传递的是LSDB里所有链路信息摘要。DIS每隔10秒发送一次CSNP报文。
- PSNP(Partial Sequence Number PDU):包含部分LSDB中的LSP摘要信息,能够对LSP进行请求和确认。类似于OSPF的LSR或LSAck报文用于请求和确认部分链路信息。
Tips:IS-IS协议使用组播MAC地址作为发送IIH的目的地址
协议报文都分为Level-1和Level-2两种,在广播(MA)网络中所有协议报文的目的MAC都是组地址:
Level-1地址为:0180-C200-0014
Level-2地址为:0180-C200-0015
链路状态信息的交互
IS-IS协议同步LSDB的过程,可分为P2P网络和MA网络两种情况进行讨论。
情况一 :P2P(点对点)网络LSDB同步过程
Step ①:建立邻居关系之后,RTA与RTB会先发送CSNP给对端设备。(P2P网络CSNP报文只发送一次,在邻居建立后立即发送)
Step ②:如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP。假定RTB向RTA索取相应的LSP,此时RTB向RTA发送PSNP。
Step ③:RTA发送RTB请求的LSP的同时启动LSP重传定时器,并等待RTB发送PSNP作为收到LSP的确认。
Step ④⑤⑥:如果在接口LSP重传定时器超时后,RTA还没有收到RTB发送的PSNP报文作为应答,则重新发送该LSP直至收到RTB的PSNP报文作为确认。
Tips:P2P网络CSNP报文只发送一次,邻居建立后立即发送。
情况二:MA网络中新加入的路由器与DIS 的LSDB同步交互过程:
假设新加入的路由器RTC已经与RTB(DIS)和RTA建立了邻居关系。
Step ①:建立邻居关系之后,RTC将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻居都将收到该LSP。
Step ②: 该网段中的DIS会把收到RTC的LSP加入到LSDB中,并等待CSNP报文定时器超时(DIS每隔10秒发送CSNP报文)并发送CSNP 报文,进行该网络内的LSDB同步。
Step ③:RTC收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP(如RTA和RTB的LSP就没有)。
Step ④:RTB作为DIS收到该PSNP报文请求后向RTC发送对应的LSP进行LSDB 的同步。
Tips:MA网络CSNP报文只由DIS组播发送,时间默认为10秒。
路由计算方法
(1)IS-IS的计算特点
① 在本区域内路由器第一次启动的时候执行的是Full-SPF算法。
② 后续收到的LSP更新,如果是部分拓扑的变化执行的iSPF计算。
③ 如果只是路由信息的变化,执行的就是PRC计算。
④ 由于采用拓扑与网络分离的算法,路由收敛速度得到了加强。
(2)IS-IS路由计算的开销方式
- Narrow模式(设备默认模式开销都是10,手工配置接口开销取值范围为1~63)。
- Wide模式(设备默认模式开销都是10,手工配置接口开销取值范围是1~16777215)。
Tips:进程下加入auto-cost enable命令,Narrow模式和Wide模式都会参考接口带宽大小计算开销值,只是参考准则有少许差异。
(3)SPF计算过程
Step 1:单区域LSDB同步完成
Step 2:生成全网拓扑结构图
Step 3:以本节点为根生成最短路径树
Step 4:默认跨越每个节点开销一样
网络分层路由域
为了支持大规模的路由网络,IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构。一般来说,将Level-1路由器部署在非骨干区域,Level-2路由器和Level-1-2路由器部署在骨干区域。每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。
IS-IS协议的区域边界在整个Router,OSPF协议的区域边界在Router的接口。
拓扑中为一个运行IS-IS协议的网络,它与OSPF的多区域网络拓扑结构非常相似。整个骨干区域不仅包括Level-2的所有路由器,还包括Level-1-2路由器。
Level-1-2级别的路由器可以属于不同的区域,在Level-1区域,维护Level-1的LSDB,在Level-2区域,维护Level-2的LSDB。
拓扑所体现的IS-IS与OSPF不同点:
① 在IS-IS中,每条链路可以属于不同的区域;而在OSPF中,每个链路只属于一个区域;
② 在IS-IS中,单个区域没有物理的骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域;
③ 在IS-IS中,Level-1和Level-2级别的路由器分别采用SPF算法,分别生成最短路径树SPT;在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。
区域间路由
如下图所示:将Level-1路由器部署在非骨干区域,Level-2路由器和Level-1-2路由器部署在骨干区域。每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。以下介绍各类型路由器的路由特点。
I、区域 49.0001由Level-1路由器组成。
① Level-1路由器维护Level-1的链路状态数据库,该链路状态数据库中只有本区域路由器LSP。
② 其路由表里不仅没有其他区域的路由信息,且都有一条默认路由:当访问非本区域路由器时,下一跳指向到Level-1-2路由器。
II、区域49.0002由Level-2路由器组成。
① Level-2路由器维护Level-2的链路状态数据库,该链路状态数据库中存有骨干区域路由器的LSP,但没有Level-1路由器产生的LSP。
② 其路由表里面存有整个网络的路由信息。
III、Level-2和Level-1-2路由器共同部署在骨干区域中,其中骨干区域与非骨干区域是通过Level-1-2路由器相连的。
① Level-1-2路由器同时拥有Level-2和Level-1的链路状态数据库,其中Level-1数据库包含本区域的LSP,Level-2数据库包含骨干区域LSP。
② 在自己产生的Level-1的LSP中设置了ATT比特位为1。
③ 其路由表里面有整个网络的路由信息。
综合上述各类型路由器的路由特点,可以将区域间路由互访时,路由器工作步骤大致归纳如下:
情况一 当区域49.0001访问区域49.0002
① Level-1-2路由器RTA产生ATT置位为1的LSP
② Level-1路由器收到ATT为1的LSP会产生下一跳指向Level-1-2路由器的默认路由
情况二 当区域49.0002访问区域49.0001
① Level-1-2路由器RTA会把区域49.0001的明细路由以叶子节点方式挂载在L2级别的LSP上面并处在Level-2的LSDB中
② Level-2路由器通过自己SPF计算得出访问区域49.0001的明细路由
Tips:ATT比特位的补充说明(仅限了解就好)。
关于ATT(Attachment)字段,在本节笔记的介绍LSP PDU时已有提及,现提供补充说明:
该字段由Level-1-2路由器产生,用于标识该路由是Level-1/Level-2路由器发送的。虽然此标志位也存在于Level-1和Level-2的LSP中,但实际上此字段只和Level-1-2路由器始发的Level-1 LSP有关。
IS-IS与OSPF的差异性
IS-IS协议与OSPF协议都是链路状态路由协议,且均采用SPF算法进行路由计算,那么两种协议之间存在什么差异呢?在网络规划时应该如何选择要使用的协议呢?
差异性 |
IS-IS |
OSPF |
网络类型 |
少 |
多 |
开销方式 |
复杂 |
简便 |
区域类型 |
少 |
多 |
路由报文类型 |
简单 |
多样 |
路由收敛速度 |
很快 |
快 |
扩展性 |
强 |
一般 |
路由负载能力 |
超强 |
强 |
可以根据自己的实际需求进行选择。以下对差异性进行详细说明:
① 网络类型和开销方式:
IS-IS协议只支持两种网络类型,且所有带宽默认开销值都是一样的;
OSPF协议支持四种网络类型,且会根据不同的带宽设定相应的开销值,对帧中继,按需链路等网络类型有很好的支持。
② 区域类型:
IS-IS协议分Level-1/Level-2区域,Level-2区域是骨干区域存有全部明细路由,Level-1去往Level-2只有默认路由。
OSPF协议分骨干区域、普通区域和特殊区域,普通区域和特殊区域跨区域访问均需要经过骨干区域。
③ 报文类型:
IS-IS协议路由承载报文类型只有LSP报文且里面路由信息是不区分内部与外部的,简单高效,无需递归计算。
OSPF协议路由承载报文LSA类型多样,有1/2/3/4/5/7类等。路由级别等级森严,且需要递归计算,适合精细化调度计算。
④ 路由算法:
ISIS协议区域内某个节点上的网段发生变化时,触发的是PRC算法,收敛比较快,计算路由的报文开销也比较小。
OSPF协议由于网络地址参与了拓扑的构建,在区域内当网段地址改变触发的是i-spf算法,相对来说过程繁琐复杂些。
⑤ 扩展性:
ISIS协议任何路由信息都使用TLV传递,结构简单,易于扩展,如对IPv6的支持只增加2个TLV就解决了。且ISIS本身对IPX等协议是支持的。
OSPF协议本身是为IP特定开发的,支持IPv4和IPv6的OSPF协议是两个独立的版本(OSPFv2和OSPFv3)。
Tips:术语对照表
缩略语 |
OSI术语 |
IETF术语 |
IS |
Intermediate System |
Router |
ES |
End System |
Host |
DIS |
Designated Intermediate System |
OSPF中的DR |
SysID |
System ID |
OSPF中的Router ID |
LSP |
Link State PDU |
OSPF中的LSA |
IIH |
IS-IS Hello PDU |
OSPF中的Hello报文 |
PSNP |
Partial Sequence Number PDU |
OSPF中的LSR或LSAck报文 |
CSNP |
Complete Sequence Number PDU |
OSPF中的DD报文 |
至此,IS-IS协议的基础理论知识的介绍暂时告一段落,下一节笔记将会继续介绍IS-IS路由协议配置举例。
至此,IS-IS协议的基础理论知识的介绍暂时告一段落,下一节笔记将会继续介绍IS-IS路由协议配置举例。