IS-IS动态路由协议1.前言为什么要学习IS-IS路由协议,这是我们学习一个协议前要了解的。IS-IS路由协议与OSPF路由协议都是链路状态路由协议,他们不但适合应用于LAN的环境,而且更多使用在城域网的环境中,目前城域网技术的发展有三个主流方向,即IP城域网技术、城域以太网技术、光城域网技术。在IP城域网中关键技术包括路由技术、端到端的QoS管理、接入网技术和用户/业务管理。在路由技术中最常用的就是BGP、OSPF和IS-IS三种路由协议。如果想了解城域网的知识,所以需要先学习IS-IS路由协议。2.OSI与CLNS概述OSI(OpenSystemInterconnect)参考模型是一个国际化标准,用于增强不同厂商设备之间的互操作性。它定义了一个7层的模型,并且详细规定了各层的功能,同时也确定了计算机网络的标准。制定OSI七层参考模型的是ISO(InternationalOrganizationforStandardization,国际标准化组织)。对于数据通信和信息技术的发展来说,OSI参考模型起到了重要的作用。它提供了开放式的标准架构,使不同厂商生产的通信设备之间可以进行互联和互操作。ISO七层模型的每一层都定义了单一的功能,可以将相关功能组合成功能层,从而简化和方便了协议的设计。OSI参考模型中的网络服务规范定义了网络设备之间使用无连接通信的功能,也就是CLNS(ConnectionlessNetworkService,无连接网络服务)。顾名思义,使用CLNS,无需在发送数据之间建立端到端的路径。下图中展示的是CLNS中所包括的协议组件,这些协议组件都由ISO所定义。正如上图所示,CLNP(ConnectionlessNetworkProtocol,无连接网络协议)、IS-IS、ES-IS(EndSystem—IntermediateSystem,终端系统—中间系统)都是ISO定义的独立的OSI第三层(网络层)的协议,这些协议分别在不同的ISO标准中定义:CLNP:在ISO8473中定义,定义了CLNS所使用的协议。IS-IS:在ISO10589中定义,定义了在使用CLNP的网络中,中间系统与中间系统间进行路由信息的交换方式。ES-IS:在ISO9542中定义,定义在使用CLNP的网络中,终端系统与中间系统间进行路由信息交换的方式。CLNP这个名词可能很多人都比较陌生,它是一个OSI网络层协议。打个比方来说,它就相当于我们所熟悉的IP协议,而IP定义为用来为TCP/IP协议栈提供网络层服务。与IP一样,CLNP也是一个无连接的协议,不提供可靠的数据连接,而且也独立于下层(数据链路层)协议。我们都知道,IP是TCP/IP协议栈中唯一的网络层协议,高层的协议和数据全都封装在IP数据包中进行传输。这不同于CLNS网络环境,在CLNS中,CLNP、IS-IS、ES-IS都是独立的网络层协议,它们都直接被封装到数据链路层的帧中进行传输。如同IP一样,CLNP也有一套自己的寻址体系,我们称之为CLNP地址。CLNP地址的结构和寻址方式与我们熟悉的IP地址有着很大的差别。在OSI术语中,主机(例如PC)被称为ES(终端系统),路由器被称为IS(中间系统)。ES-IS可以说是一种终端系统和路由器之间的“语言”或路由协议。它用来使同一网段或链路的终端系统和路由器之间可以彼此发现对方,并可以让ES能够获悉其网络层地址。总结来说,ES-IS主要有以下几种功能:使ES获悉其所在的区域,即区域前缀在ES与IS之间建立邻接关系建立数据链路层地址到网络层地址(CLNP地址)的映射可以看出,ES-IS在CLNS网络环境中的作用就好像IP网络中的ICMP、ARP与DHCP协议的协同工作。在ES-IS工作过程中,终端系统通过发送ESH(ESHello)报文到特定的地址,目的是向路由器通告自己的存在。路由器通过监听ESH报文,以发现网络中存在的ES,以便后续将到达特定ES地址的数据包转发给ES。在ES-IS中,路由器通过发送ISH(ISHello)报文到特定地址,也向ES通告其自身的存在。ES也监听ISH,如果收到多个IS发送的ISH,ES将随即进行选择,并将所有数据都发送给这个IS。需要注意的是,通常我们的终端系统,例如PC,都不使用ES-IS,因为这些PC都运行的是TCP/IP协议栈,类似ES-IS的工作都由TCP/IP协议栈中的ARP、ICMP、DHCP协议来完成。下图所示为CLNS中ES-IS的工作机制:IS-IS是CLNS中一个重要的组成部分,它是一个用来在CLNS网络环境中使路由器与路由器(IS与IS)之间动态的交换路由信息的协议,IS-IS在ISO10589中进行了定义。IS与IS,即路由器与路由器之间的通信使用IIH(IS-ISHello)报文。IS-IS的设计主要是为了满足CLNS网络中的如下需求:在路由域内执行路由选择协议功能为网络提供最佳路由当网络出现故障后,能够快速的收敛提供无环路的网络提供网络的稳定性提供网络的可扩展性合理利用网络资源为了满足如上需求,IS-IS被设计成一种链路状态路由协议,并且使用SPF最短路径优先算法以实现快速的收敛和无环路网络。之前所提到的IS-IS,它仅支持CLNS网络环境,而不支持IP网络环境中的路由信息交换。后来,IETF在RFC1195中对IS-IS进行了修改和扩展,称之为集成IS-IS(IntegratedIS-IS)或双重IS-IS(DualIS-IS)。集成IS-IS的制定是为了使其能够同时应用在TCP/IP网络和OSI网络中,使其能够为IP网络提供动态的路由信息交换。集成IS-IS是一个能够同时处理多个网络层协议(例如IP和CLNP)的路由选择协议。相反,OSPF只支持IP一种网络层协议,即OSPF仅支持IP路由。而集成IS-IS可以支持纯CLNP网络或纯IP网络,或者同时支持CLNP和IP两种网络环境,并为其提供路由功能。集成IS-IS协议经过多年的发展,已经成为一个可扩展的、功能强大的、易用的IGP路由选择协议,并且在运营商网络中得到了更多的应用和部署,主要用来实现域内的IP路由选择。3.OSI路由选择OSI规范中定义了四种路由选择级别,分别为L0、L1、L2和L3。L0路由选择L0路由选择是发生在ES与IS之间的,它通过使用ES-IS进行路由信息的交换。正如之前介绍ES-IS那样,ES通过侦听IS发送的ISH报文来获知IS的存在。当ES要向其他ES发送信息是,它将把数据包发送到IS。同样,IS也侦听ES发送的ESH报文以获知ES的存在,当有数据包要发送个某个ES时,它便根据通过ESH获取到的信息发送个特定的ES。这个过程就称为L0路由选择。L1路由选择从图中可以看出,L1路由选择发生在同一区域内的IS之间。所谓区域是指在CLNP地址中拥有相同区域前缀的一组ES和IS。这里的区域概念与OSPF中的区域非常相似。同一个区域中的IS之间通过交换路由信息后,便得知了本区域内的所有路径。当IS收到一个到目标地址是本区域内地址的数据包后,通过查看数据包的目的地址以将数据包发往正确的链路或目的地。可以看到,L1路由也就是区域内的路由选择。L2路由选择当IS收到一个目的地址不是本区域的数据包时,数据包将被转发到其他区域的IS,其他区域的IS再将其转发到正确的目的地或者将数据包中继到其他区域,以便由其他区域的IS转发到正确的目的地。这样的路由被称作L2路由选择,可以看到,L2路由选择是发生在区域之间的,所以也称作区域间路由。L3路由选择了解了L0、L1、L2路由选择后,我们已经可以猜测出L3路由选择的作用了,L3路由选择就是域间的路由。L3路由选择类似与IP路由中的BGP(BorderGatewayProtocol,边界网关协议),它的目的是在不同的路由域或自治系统(AS,AutonomousSystem)间交换路由信息,并将去往其他自治系统的数据包转发到正确的自治系统以便到达最终目的地。这些自治系统之间可能拥有不同的路由拓扑,所以不能直接进行路由信息的交换。通常L3路由选择都是由IRDP(Inter-DomainRoutingProtocol,域间路由选择协议)来完成的,IRDP的功能类似于IP路由中的BGP路由协议。4.IS-IS路由选择IS-IS所完成的路由功能就是L1和L2路由选择,也就是说IS-IS用来在同一个路由域内进行区域内和区域间的路由选择。IS-IS路由选择分为两个等级,即L1和L2。IS-IS区域中的L1路由选择负责路由到区域内的终端系统(ES)和IS。在同一个路由选择区域中,所有设备的区域地址都相同。区域内的路由选择是通过查看地址中的系统ID后,然后选择最短的路径来完成的。L2路由选择是在IS-IS区域之间进行的。路由器通过L2路由选择获悉L1路由选择区域的位置信息,并建立一个到达其他区域的路由表。当路由器收到数据包后,通过查看数据包的目标区域地址(非本区域的区域地址),选择一条最短的路径来路由数据包。由于IS-IS负责L1和L2等级的路由,IS-IS路由器等级(或称IS-IS路由器类型)可以分为三种:L1路由器(Level1)、L2路由器(Level2)和L1/2(Level1/2)路由器。L1路由器属于同一个区域并参与Level1路由选择的路由器称为L1路由器。L1路由器类似于OSPF中的非骨干内部路由器。在CLNP网络环境中,L1路由选择负责收集本区域内所有主机和路由器的信息,可以说L1路由器只关心本区域的拓扑结构。L1路由器将去往其他区域的数据包发送到最近的L1/2路由器上。L2路由器属于不同区域的路由器通过实现Level2路由选择来交换路由信息,这些路由器成为L2路由器或骨干路由器。L2路由器类似于OSPF中的骨干路由器。在CLNP网络环境中,L2路由器与其他L2或L1/2路由器交换区域前缀信息。对于IP网络环境,在L1路由选择中,仅在区域内交换IP前缀信息,而不同区域的IP前缀信息由连接到骨干区域的执行L2路由选择的路由器交换。L1/2路由器同时执行L1和L2路由选择功能的路由器为L1/2路由器,L1/2路由器类似于OSPF中的ABR(区域边界路由器),它的主要职责是搜集本区域内的路由信息,然后将其发送给其他区域的L1/2路由器或L2路由器;同样,它也负责接收从其他区域的L2路由器或L1/2路由器发来的区域外信息。可以说所有L1/2路由器与L2路由器组成了整个网络的骨干(Backbone)。此外,需要注意的是,对于IS-IS来说,骨干必须是连续的,也就是说具有L2路由选择功能的路由器(L1路由器或L1/2路由器)必须是物理上相连的。总结这三种类型的路由器的作用,可以归纳为:L1路由器负责收集区域内的路径信息L2路由器负责收集区域间的路径信息L1/2路由器负责收集区域内和区域间的路径信息,这类似与OSPF中的ABR5.IS-IS与OSPF对比1、IS-IS与OSPF的相同点从IS-IS与OSPF的功能上讲,它们之间存在着这么大的相似之处,虽然它们在结构上有着差异:IS-IS与OSPF同属于链路状态路由协议。作为链路状态路由协议,IS-IS与OSPF都是为了满足加快网络的收敛速度、提高网络的稳定性、灵活性、扩展性等这些需求而开发出来的高性能的路由选择协议。IS-IS与OSPF都使用链路状态数据库收集网络中的链路状态信息,链路状态数据库存放的是网络的拓扑结构图,而且区域中的所有路由器都共享一个完全一致的链路状态数据库。IS-IS与OSPF都使用泛洪(flooding)的机制来扩散路由器的链路状态信息。IS-IS与OSPF都使用相同的报文(OSPF中的LSA与IS-IS中的LSP)来承载链路状态信息。IS-IS与OSPF都分别定义了不同的网络类型,而且在广播网络中都使用指定路由器(OSPF中的DR,IS-IS中的DIS)来控制和管理广播介质中的链路状态信息的泛洪。IS-IS与OSPF同样都是采用SPF算法(Dijks