资源描述
课程 DA000009
IS-IS协议
ISSUE 1.0
DA000009 IS-IS协议 ISSUE1.0
课程说明
目 录
课程说明 1
课程介绍 1
课程目标 1
第1章 IS-IS协议基本原理 2
1.1 IS-IS概览 2
1.2 链路状态协议简介 3
1.3 L1和L2的基本概念 5
1.4 IS-IS的基本工作原理 6
1.5 报文分类 8
1.6 邻居建立及数据库同步 10
1.7 DIS与伪节点 12
1.8 IS-IS协议的地址编码方式 14
1.9 节点识别 15
1.10 泛洪算法 17
1.11 IS-IS与OSPF比较 18
1
DA000009 IS-IS协议 ISSUE1.0
课程说明
课程说明
课程介绍
本课程主要介绍IS-IS路由协议的原理。IS-IS是一种链路状态协议,基于SPF算法,以寻找到目标的最佳路径,由于SPF算法本身的优势,IS-IS协议天生具有抵抗路由环路的能力。
课程目标
完成本课程的学习后,您应该能够:
l 了解IS-IS协议的基本原理
l 掌握IS-IS协议的报文分类以及地址编码发式
l 了解IS-IS协议与OSPF协议的异同点
21
DA000009 IS-IS协议 ISSUE1.0
第1章 IS-IS协议基本原理
第1章 IS-IS协议基本原理
1.1 IS-IS概览
IS-IS(Intermediate System-to-Intermediate System:中间系统到中间系统)是一种路由选择协议,是基于OSI域内(intradomain)的路由选择协议,Intermediate System是OSI中Router的叫法。IS-IS可以用作IGP(Interior Gateway Protocol:内部网关协议)以支持纯IP环境、纯OSI环境和多协议环境。IS-IS是一种链路状态协议,基于SPF算法,以寻找到目标的最佳路径,由于SPF算法本身的优势,IS-IS协议天生具有抵抗路由环路的能力。
1.2 链路状态协议简介
LSP:Link State PDU,含有链路状态信息的IS-IS报文。
链路状态协议都是基于近邻关系的,每个路由器公开其链路的开销和状态。所以区域里每个路由器知道区域内所有活动的链路,并知道有关这些活动链路所标识路由器发起的信息,然后把该状态信息传播到其他路由器。传播信息使所有路由器保持同一数据库。每个路由器用唯一的地址来标识,从而避免了循环。
在路由器接收到有关所有其它路由器及其链路的信息之后,每个单个的路由器运行SPF算法,该算法是基于Dijkstra算法,以计算到每个已知目标的最佳路径。(Dijkstra算法是个分布式算法,由每个路由器在处理完信息之后执行。)
运行SPF算法生成整个区域的拓扑结构,同一层次中的所有路由器有相同的LSDB,LSDB中储存着同一层次中所有路由器产生的LSP,LSP通过可靠泛洪机制,由产生它的路由器扩散到整个可达区域。
1.3 L1和L2的基本概念
如图,该路由系统分为两层,Level1和Level2,同一区域内的路由器交换信息的节点组成1层(L1),区域内的所有L1路由器知道整个区域的拓扑结构,负责区域内的数据交换。区域之间通过L2路由器相联接,各个区域的边缘路由器组成骨干网,是2层(L2),L2 负责区域间的数据交换对于一个要送往另一个区域的数据报,不管它的目的区域到底在哪。
L1 IS总是将数据报直接送往位于该区域内最近的L2 IS,该数据报再通过Lever2路由系统到达目的区域,然后再通过目的区域的L1 IS路由系统到达目标。
1.4 IS-IS的基本工作原理
L1路由器: 接收来自其他系统的报文,如果报文的目的地址在本区域内,就直接将报文转发到目的系统;如果报文的目的地址在本区域外,则将报文转交给离自己最近的一个L1L2路由器。
l 仅拥有同一区域中的路由器。
l 拥有自己区域中的信息。
l 观察L1 LSP,寻找“最近”的L1L2路由器。
l 安装一条通向“最近”L1L2路由器的缺省路径。
L2路由器:接收来自L1路由器的报文,并按照目的地址将报文转交给其他区域的L2路由器。接收来自其他区域的L2路由器的报文,并按照目的地址将报文转发。
l 可能拥有其他区域中的邻居。
l 拥有关于L2拓扑的信息。
l 拥有关于什么L1目标可以到达,以及如何通过L2拓扑到达它的信息。
l L2路由其通常也执行L1路由,因此通常称可以执行L1路由的L2路由器为L1L2路由器。
l 骨干区L2必须是连续的。
L1/L2:完成它所在的区域和骨干之间的路由信息的交换,既承担L1的职责也承担L2的职责。
1.5 报文分类
1. 链路状态数据单元(Link State PDU)
用来在区域中传播链路状态记录。 分为两种:Level 1 Link State PDU和Level 2 Link State PDU,处在层次1的路由器产生L1 LSP,处于层次2的路由器产生L2 LSP,LSP只会泛洪到自己的所属层次。1层LSP中包含它都有什么邻居,它的接口都处在什么网段中等信息,只用于本地区域。 2层LSP中包含它都有什么邻居,通过它都能够到达什么网段等信息即包含IS-IS里所有可到达前缀的信息。链路状态报文,含有一个路由器的所有信息,包括邻接、所连接的IP前缀、OSI终端系统、区域地址等。
2. Hello报文(IIH PDU)
用于维护邻接。 问候包发送到组播MAC层地址,来确定其它系统是否在运行IS-IS。在IS-IS里有三种问候包:一种是点对点接口的、一种是对Level 1路由器的和一种是对Level 2路由器的。发送到Level 1路由器和Level 2路由器的问候给定了不同组播地址。所以,Level 1路由器连接到与Level 2路由器驻留的地方,但看不到Level 2的问候,反过来也是一样。 当链路初始化时或从近邻接收到问候包时,发送问候包,此时,初始化邻接。在从近邻接收到问候的基础上,路由器把问候包发送回近邻,表明路由器看到了问候。这时,就建立了双向联系。这就是邻接的在线状态(up state)。
3. 全时序协议数据单元(CSNP:Complete Sequence Numbers Protocol Data Unit)
CSNP分为两种:Level 1 CSNP和Level 2 CSNP。用于广播链路上的LSPDB同步。 DIS在广播接口上每10秒发送一次CSNP。CSNP包含了本地数据库里所有LSP的完整列表。正如前面所提到,CSNP用于数据库同步。在串行线路上,只在第一次邻接时发送CSNP。
4. 部分时序协议数据单元(PSNP:Partial sequence Number Protocol Data Unit)
PSNP分为两种:Level 1 PSNP和Level 2 PSNP。
用于非广播链路时,类似于p2p链路上的ACK,响应LSP报文。
在广播链路上,PSNP用于数据库同步。当路由器从近邻接收到CSNP时,注意到CSNP丢失了部分数据库,路由器发送PSNP请求新的LSP。
1.6 邻居建立及数据库同步
上图显示了两台路由器间如何通过发送协议报文建立邻居关系及邻居状态机的变化过程。
(1) Router A的一个连接到广播类型网络的接口上运行了IS-IS,该接口使用组播地址发送协议Hello报文,此时Router A在该网络上未发现任何邻居,故Hello报文中的邻居字段为空。
(2) Router B接收到Router A发送的Hello报文后,为Router A创建一个邻居的数据结构,并且将该邻居的状态设为Init.。Router B 发送一个Hello报文给Router A,并且在将Router A的MAC地址包含在报文的邻居字段中,表明Router B已经受到来自Router A的Hello 报文。
(3) Router A接收到Router B发送的Hello报文后,同样为Router B创建一个邻居的数据结构,并且将该邻居的状态设为Init.。Router A 再发送一个Hello报文给Router B,并且在将Router B的MAC地址包含在报文的邻居字段中,表明Router A已经受到来自Router B的Hello 报文
(4) 当Router B再次接收到Router A发送的Hello报文后,检查到本地已经有Router A的邻居数据结构了,表明之前已经受到来自该邻居的Hello报文,同时检测到所接受到的邻居报文的邻居字段中有本地路由器的MAC地址,表明对端已经接受到本端的Hello报文,经过双方的检测后将邻居状态设为Up,下一步双方开始发送各自的链路状态数据库。
(5) 双方建立邻居关系后,DR也会同时选举出来(发送两个Hello报文后),双方开始向对段发送本端的链路状态报文(LSP)。为保证邻居链路状态数据库的同步性及减少网络报文流量,每个路由器并不与广播网上的每一台路由器同步数据库,而是采用DR同步数据库的方式,既每个路由器只与DR同步链路状态数据库,这样广播网上同步的次数将从N*N减少到(N-1)。
(6) 当DR选举出来并且邻居间经过一段时间的数据链路状态报文交换后,DR将发送CSNP报文,该报文只包括本地数据库中LSP的摘要信息(并不包含实际的LSP),每一条摘要信息用LSPID来唯一标识一条LSP。
(7) 当接收到CSNP报文后,将CSNP报文中的LSP与本地的数据库中的LSP进行比较,如果发现本地缺少相应的LSP,本地将发送PSNP报文用来请求该LSP,PSNP中包括所缺少的LSP摘要描述,如果发现本地有更多的LSP信息,则直接发送该LSP给DR。
(8) 当DR接收到PSNP后,发送该PSNP指定的LSP来同步链路状态数据库。
经过一定时间后,整个网络的链路状态数据库完全同步,则网络出于稳定状态,只定时发送Hello报文维系邻居关系,发送LSP维系数据库同步。
注意:
只有同一层次的相邻路由器才有可能成为邻居,而只有成为邻居,才交换IS-IS信息。
1.7 DIS与伪节点
DIS:Designated IS,指定中间系统,广播网上的领袖路由器,相当于OSPF中的DR。
Pseudonodes:伪结点。
将多重访问链路模拟成伪结点,由DIS产生,和本网络中的所有路由器建立联系。
DIS负责生成伪节点的LSP,伪节点和本网络中的所有路由器建立联系,并且不允许它们之间直接联系。
IS-IS 协议中,广播子网和NBMA网络在外部被看成一个伪节点。同一网络中的IS 之间会根据各自优先权选出一个DIS(Designated IS)。网络中的非DIS 会向DIS 报告自己的链路状态信息,而DIS 则代表整个网络中所有的IS 报告链路状态信息。选举DIS 的原因与OSPF 中选举DR 的原因一样,其目的是为了减少不必要的邻接关系和路由信息的交换。 伪节点不是一个真实的路由器,但它要占用一个额外的LSP 项。伪节点LSP是由DIS 创建的。
DIS的选举过程:
IS-IS 协议中,DIS 的选举是自动进行的。选举的依据是同一网络中各接口的优先权,如果最高的优先权的接口不止一个则从这些优先权相同的接口中找MAC 地址最大的。DIS 的选举是在IS 自身进行的,网络中的各个IS 根据所在网络的接口上的邻居信息来进行选举。由于整个网络中的邻居信息是一致的,所以各自进行的选举结果是相同的。
注意:
1. 只有在广播和NBMA类型的网络接口上才会选举DIS,在Point-to-Point类型的接口上不需要DIS 的选举;
2. DIS 是针对IS 的接口而言的。某台IS 在这个接口上可能是DIS ,而在另一个接口却可能不是;
3. 不同层次有不同层次的DIS,即L1级的广播网选举L1级的DIS,L2级的广播网选举L2级的DIS;
4. IS-IS中不存在备份DIS,当一个DIS不能工作时,直接选举另一个;
5. DIS由整个广播网络上优先级最高的IS担当,如果两个路由器拥有相同的优先权,则选择具有最大MAC地址的一个。
DA000009 IS-IS协议 ISSUE1.0
第1章 IS-IS协议基本原理
1.8 IS-IS协议的地址编码方式
IS-IS协议地址称为NET(Network Entity Title),可分成三部分:
l 区域地址 该部分长度是可变的。区域地址标识区域的路由域长度,并在路由域里固定。
l System ID 长度为6个八位字节,在一个自治系统中值是唯一的。
l N选择器 长度总是1个八位字节,用来指定上层协议。当N选择器设置成0时,用于IP网络。
所有的IS-IS地址必须遵从如下限制:
l 一个中间系统(路由器)至少有一个NET(实际中最多有3个,所有NET 必须有相同的System ID),不能有两个中间系统具有相同的NET 。
l 一个路由器可以有一个或多个区域地址。 多NET设置只有当区域需要重新划分时才需要使用,例如多个区域的合并或者将一个区域划分为多个不同的区域。这样可以保证在进行重新配置时仍然能够保证路由的正确性。
l IS-IS NET地址至少需要八个字节:一个字节的区域地址,六个字节的系统标识和一个字节的N 选择器,最多为20个字节。
1.9 节点识别
1. 系统ID
唯一标识自治系统内的一个IS。
2. 伪节点ID
伪节点ID只有在广播子网或者NBMA上才有,它的值是伪节点在DIS 上对应接口的接口ID,DIS的伪节点ID 不为0。
3. LSP Number
由于一个IS 中的链路状态信息太多从而导致在一个链路状态的报文中不能装下,这些信息只能装在多个报文中。IS 给每一个分片分配一个LSP Number 号。
4. 链路状态报文ID
LSPID=System ID + Pseudonode ID + LSP Number
例子:
0001.0002.0003.00-00
粗体字:系统ID
斜体字:伪节点ID
下划线:LSP Number
注意:
在IIH PDU中的报文结构中,源节点标识SOURCE ID=System ID+Pseudonode ID,而不是LSP ID。
1.10 泛洪算法
为什么要保持数据的一致性?
IS-IS 是基于链路状态算法的路由协议,每个IS根据自身的链路状态数据库运行SPF 算法计算路由。如果每个IS 上的链路状态数据库不一致,则有可能导致路由黑洞和循环。
IS-IS协议适用的链路(Links)包括点对点的联接(Point to Point Links)、广播网联接(Broadcast Links)、NBMA(Non-Broadcast Multi-Access )。
所有的IS 都会生成一个代表自己的链路状态报文,如果是广播子网和NBMA 的DIS ,DIS 还会生成一个代表伪节点的链路状态报文。链路状态报文不是一成不变的,当链路状态发生改变时会生成新的报文。
以下改变会触发新的链路状态报文,
l 邻居/接口的Up/Down
l 接口的度量发生改变
l 定期的刷新
1.11 IS-IS与OSPF比较
IS-IS和OSPF是链路状态路由协议的两个最典型的代表,都采用SPF算法来计算路由;
由于具有快速收敛、无环路等特点,IS-IS和OSPF都能很好地支持大型网络,但从全球的部署来看,采用OSPF的还是占了多数,而IS-IS在近几年开始得到比较多的应用;
IS-IS和OSPF一样采用Hello协议来维护邻居关系,但IS-IS的Hello协议与OSPF具体实现上有所不同;
IS-IS和OSPF都采用分层路由的概念,都有骨干区域,为网络规划提供了比较灵活而且实际的设计方案;
为了控制链路状态数据库的规模和复杂度,IS-IS和OSPF在广播网络上都选举DR来担任数据库同步的主要角色,但在细节处理上还是有较大的差别的;
对协议报文的验证能力是所有高级路由协议所必须具备的功能,IS-IS对于协议报文的验证处理是有些特别的,它按照Level和PDU类型来处理;
IS-IS和OSPF对路由开销的度量(metric)都采用了接口可配置的cost,能够比较正确地反映网络的实际情况;
在支持大型网络的时候,触发更新的Update方式比周期性广播方式要节约大量的协议报文所产生带宽消耗;
对于每个LSP(LSA)都有一个记时器相关联,正常情况下在一定时间内(较长时间)会更新重新计时,如果在规定时间内没有收到新的更新,将从数据库中清除该LSP(LSA),不再用做路由计算用;
对于边缘区域中的路由器,一是通过区域划分,二是通过设置区域类型来减少对路由器资源的需求。IS-IS可以将区域中的路由器设置为level-1 only类型,OSPF可以将整个区域设置为stub来减少数据库的大小,同时保证正确路由。
IS-IS最初是为ISO的标准协议,为CLNS(connect less network service 无连接网络服务)设计的,后来增加了对IP的支持;而OSPF一开始就是IETF为IP网络设计的;由于IS-IS历史上是为CLNS路由而制定的,发展比较缓慢,对于IP的支持很多地方需要改进,虽然已经提出了draft,但大部分还没有形成RFC,CNLP(connect less network protocol 无连接网络协议)和IP双环境使用的优势并不明显,是一个不是很成熟的协议; OSPF是专门为IP设计的,更适合IP的路由,发展成熟,标准化程度高,支持厂商多,使用多缺点暴露多,改进也多。
IS-IS协议直接在链路层上运行,报文直接封装在链路层报文中,支持CLNS、IP等多种协议;OSPF报文封装在IP中,只支持IP协议;
IS-IS协议中整个路由器只能全部属于一个区域,区域边界位于两个路由器之间,路由器的LSDB按Level来维护;而OSPF按接口来,一个路由器可以属于多个区域,为每个区域维护一个LSDB数据库;
OSPF通过特殊的区域ID Area0区来定义骨干区,而IS-IS是通过连续的L2路由器来组成骨干区;
IS-IS的采用的Hello协议比较简单,OSPF比较复杂;而且IS-IS检查比较宽松,邻居之间的Hello和Dead等间隔不一定必须一样,不像OSPF要求必须一致才能形成邻居关系;
IS-IS的LSP生存时间是从20分钟(可配置)往下计算到0来清除旧的LSP,而OSPF是从0往最大值涨到60分钟(周期不可配置)来清除更新旧的LSA的;
IS-IS协议的DR选举比较简单,而且是抢占式可预见的,优先级最高的是DR,优先级别为0的也可能成为DR;为了保证变动比较小,OSPF协议DR选举机制比较复杂并不可预见,优先级最高的不一定是DR,优先级为0的不可能成为DR,并且有BDR的概念,DR失败,BDR立即承担DR的职责,而IS-IS没有BDR,DR失败,重新选举DR;
IS-IS不支持P-2-MP类型的网络,并且NBMA网络都只能设置为子接口模拟成P2P来运行;OSPF可以很好地支持以下各种网络类型:Broadcast,NBMA,P-2-P,P-2-MP;
标准的IS-IS 接口cost取值为:0-63,对链路层区分不够,并且一个网络的metric达到1024就认为不可达;而OSPF接口cost取值范围为:0-1024,一个网络的metric达到65535才认为不可达。
展开阅读全文