Login
升级VIP 登录 注册 安全退出
当前位置: 首页 > word文档 > 合同模板 > 路由原理与设计之五--OSPF路由协议

路由原理与设计之五--OSPF路由协议

收藏

本作品内容为路由原理与设计之五--OSPF路由协议,格式为 doc ,大小 4397568 KB ,页数为 54页

路由原理与设计之五--OSPF路由协议


('第1章OSPF协议基本概念本课程由浅入深介绍了OSPF协议的基本概念,OSPF路由计算过程,以及如何合理规划设计OSPF网络。相信您学完本课程,定能迅速成为一个OSPF高手。假设您对计算机网络结构有一定了解,记住OSPF就是去寻找到某个终点计算机的最短路径的方法。1.1OSPF协议概述现在Internet已广泛应用于军事,科技,教育,工农业等各个领域,发挥着越来越重要的作用,它标志着信息时代的兴起。Internet的重要基础是TCP/IP协议(TransmissionControlProtocol/InternetProtocol即传输控制协议/国际互连网协议),该协议是计算机用于网络通信的标准,它是一个协议族,包含控制,传输,标识等各方面的子协议。TCP/IP协议中,寻找一台计算机到另一台计算机的路由是很重要的,一方面,要判断是否能找到路,一方面,找到路后找一条短的路(花费时间最小),再一方面,不能循环最好还应该能动态处理路由变化,如:接口的UP或DOWN,时间花费的变化,网络结构的改变等。网络上的节点通常通过路由器与整个网络联系,它需要知道到达网络的另一个节点的路由。IETF(InternetEngineeringTaskForce)于1988年提出的OSPF是一个基于链路状态的动态路由协议。当前OSPF协议使用的是第二版,最新的RFC是2328。协议的基本思路如下:在自治系统中每一台运行OSPF的路由器收集各自的接口/邻接信息称为链路状态,通过Flooding算法在整个系统广播自己的链路状态,使得在整个系统内部维护一个同步的链路状态数据库,根据这一数据库,路由器计算出以自己为根,其它网络节点为叶的一根最短的路径树,从而计算出自己到达系统内部可达的最佳路由。OSPF是一类InteriorGatewayProtocol(内部网关协议IGP),它处理在一个自治系统中的路由表信息。1.2OSPF协议基本特征OSPF协议具有如下特点:适应范围——OSPF支持各种规模的网络,最多可支持几百台路由器。快速收敛——如果网络的拓扑结构发生变化,OSPF立即发送更新报文,使这一变化在自治系统中同步。无自环——由于OSPF通过收集到的链路状态用最短路径树算法计算路由,故从算法本身保证了不会生成自环路由。子网掩码——由于OSPF在描述路由时携带网段的掩码信息,所以OSPF协议不受自然掩码的限制,对VLSM提供很好的支持。区域划分——OSPF协议允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用网络的带宽。等值路由——OSPF支持到同一目的地址的多条等值路由,即到达同一个目的地有多个下一跳,这些等值路由会被同时发现和使用。路由分级——OSPF使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。支持验证——它支持基于接口的报文验证以保证路由计算的安全性。组播发送——OSPF在有组播发送能力的链路层上以组播地址发送协议报文,即达到了广播的作用,又最大程度的减少了对其他网络设备的干扰。1.3OSPF相关术语与OSPF协议相关的术语主要包括:(1)RouterIDOSPF域中路由器的唯一标识(2)Area区域(3)Cost花费值(4)ABR、ASBR区域边界路由器、自治系统边界路由器(5)LSA链路状态通告(6)LinkType链路类型,包括广播,非广播,点到点,点到多点(7)DR和BDR指定路由器和非指定路由器(8)区域类型骨干区域,STUB区域,TRANSIT区域(9)Virtual-Link虚连接接下来的课程我们将会对这些术语作详细介绍。1.4RouterIDRouterID:OSPF协议使用一个被称为RouterID的32位无符号整数来唯一标识一台路由器。基于这个目的,每一台运行OSPF的路由器都需要一个RouterID。这个RouterID一般需要手工配置,一般将其配置为该路由器的某个接口的IP地址。由于IP地址是唯一的,所以这样就很容易保证RouterID的唯一性。在没有手工配置RouterID的情况下,一些厂家的路由器(包括Quidway系列)支持自动从当前所有接口的IP地址自动选举一个IP地址作为RouterID。RouterID选择注意点:(1)首先选取最大的loopback接口地址(2)如果没有配置loopback接口,那么就选取最大的物理接口地址(3)可以通过命令强制改变RouterID:VRP平台系统视图下,routerid(4)如果一台路由器的RouterID在运行中改变,则必须重启OSPF协议或重启路由器才能使新的RouterID生效协议号:OSPF协议用IP报文直接封装协议报文,协议号是89。1.5Area区域OSPF引入区域的概念是为了隔离和区分自治系统内的各部分,并由此减少路由器必须维护的整个自治系统的信息量,可以针对不同区域的拓扑特点采用不同的策略,也就意味着减少了路由器间传输和维护的OSPF路由表的额外信息。一个自治系统可以划分为多个区域。OSPF使用Area实现了分层----两层模式,即transitarea(backbone或area0)和regularareas(nonbackboneareas)。transitarea负责的主要功能是IP包快速和有效的传输,互联OSPF其他区域类型。一般的,这个区域里不会出现终端用户(enduser)。regularareas负责的主要功能就是连接用户和资源,这种区域一般是根据功能和地理位置来划分。一般情况下,一个regulararea不允许其他区域的流量通过它到达另外一个区域,必须穿越transitarea,比如area0。regularareas还可以有很多子类型,比如stubarea,和not-so-stubbyarea。区域号用一个32bit的整数来标识,可以定义为IPaddress格式,也可以用一个十进制整数表示(ie.Area0.0.0.0,orArea0)。其中,区域0.0.0.0保留为骨干区域,非骨干区域一定要连接到骨干区域。为何需要骨干区域:OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号(AreaID)是0,通常被称为骨干区域(BackboneArea)。由于划分区域之后,区域之间是通过ABR将一个区域内的已计算出的路由封装成Type3类的LSA发送到另一个区域之中来传递路由信息。需要注意的是:此时的LSA中包含的已不再是链路状态信息,而是纯粹的路由信息了。或者说,此时的OSPF是基于D-V算法,而不是基于链路状态算法的了。这就涉及到一个很重要的问题:路由自环。因为D-V算法无法保证消除路由自环。如果无法解决这个问题,则区域概念的提出就是失败的。通过分析D-V算法中路由环的产生的原因可知,自环的产生主要是因为生成该条路由信息的路由器没有加入生成者的信息,即每一条路由信息都无法知道最初是由谁所生成。OSPF协议在生成LSA时首先将自己的RouterID加入到LSA中,但是如果该路由信息传递超过两个区域后,就会丧失最初的生成者的信息。解决的方法是:所有ABR将本区域内的路由信息封装成LSA后,统一的发送给一个特定的区域,再由该区域将这些信息转发给其他区域。在这个特定区域内,每一条LSA都确切的知道生成者信息。在其他区域内所有的到区域外的路由都会发送到这个特定区域中,所以就不会产生路由自环。这个“特定区域”就是骨干区域。由上面的分析可知:所有的区域必须和骨干区域相连,也就是说,每一个ABR连接的区域中至少有一个是骨干区域。而且骨干区域自身也必须是连通的。注意:如果自治系统被划分成一个以上的区域,则必须有一个区域是骨干区域,并且保证其它区域与骨干区域直接相连或逻辑上相连,且骨干区域自身也必须是连通的。1.6COST值在OSPF路由协议中,最短路径树的树干长度,即OSPF路由器至每一个目的地路由器的距离,称为OSPF的Cost。Cost值应用于每一个启动了OSPF的链路,它是一个16bit的正数,范围是1~65535。Cost值越小,说明路径越好。OSPF选择路径是依靠整个链路Cost值的总和。那么Cost值是如何计算的呢?1.7Cost(续)OSPF协议中,Cost值的计算方法是用108/链路带宽。在这里,链路带宽以bps来表示。也就是说,OSPF的Cost与链路的带宽成反比,带宽越高,Cost越小,表示OSPF到目的地的距离越近。举例来说,56k的链路花费是1785,10M以太网链路花费是10,64k的链路花费是1562,T1的链路花费是64。缺省情况下,接口按照当前的波特率自动计算接口运行OSPF协议所需的开销。1.8ABR&ASBRABR区域边界路由器(AreaBorderRouter):连接多个OSPF区域的路由器。ASBR自治系统边界路由器(AutonomousSystemBorderRouter):一个OSPF路由器,但它连接到另一个AS,或者在同一个AS的网络区域中,但运行不同于OSPF的IGP。上图通过不同标志的线条显示了AS内部和AS外部之间路由信息交换的情况。1.9思考题什么是RouterID?有什么作用?为什么要划分区域?怎样合理规划区域?Cost值有什么作用?第2章OSPF网络类型本章我们将重点介绍OSPF通过LSA描述的几种网络类型。2.1OSPF通过LSA描述网络拓扑OSPF以本路由器邻接网络的拓扑结构为基础计算路由。每台路由器将自己邻接的网络拓扑描述出来,传递给所有其它的路由器。根据链路层协议类型,OSPF将网络分为四种类型:(1)广播类型:链路层协议是Ethernet、FDDI、TokenRing,以组播的方式发送协议报文,选举DRBDR。(2)非广播多路访问NonBroadcastMultiAccess(NBMA)类型:链路层协议是帧中继、ATM、HDLC或X.25时。手工指定邻居,选举DR/BDR,DR/BDR要求和DROTHER完全互连。(3)点到多点Point-to-Multipoint(p2mp)类型:没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必然是由其他网络类型强制更改的,常见的做法是将非全连通的NBMA改为点到多点的网络。多播hello包自动发现邻居,不要求DR/BDR的选举。(4)点到点Point-to-point(p2p)类型:链路层协议是PPP或LAPB。无需选举DRBDR,当只有两个路由器的接口要形成邻接关系的时候才使用。NBMA网络是指非广播、多点可达的网络,典型的有ATM。可通过配置轮询间隔来指定路由器在与相邻路由器构成邻接关系之前发送轮询Hello报文的时间周期。若在NBMA网络中并非所有路由器之间都直接可达时,可将接口配置成p2mp方式。若该路由器在NBMA网络中只有一个对端,则也可将接口类型改为p2p方式。NBMA与p2mp之间的区别:(1)在OSPF协议中NBMA是指那些全连通的、非广播、多点可达网络。而点到多点的网络,则并不需要一定是全连通的。(2)在NBMA上需要选举DR与BDR,而在点到多点网络中没有DR与BDR。(3)NBMA是一种缺省的网络类型,例如:如果链路层协议是ATM,OSPF会缺省的认为该接口的网络类型是NBMA(不论该网络是否全连通)。点到多点不是缺省的网络类型,没有哪种链路层协议会被认为是点到多点,点到多点必须是由其它的网络类型强制更改的最常见的做法是将非全连通的NBMA改为点到多点的网络。(4)NBMA用单播发送协议报文,需要手工配置邻居。点到多点是可选的,即可以用单播发送,又可以用多播发送报文。如上图所示,显示了四种类型的拓扑。其中,通过Hub连接的是广播型网络,两台路由器直接相连的是点到点类型网络,FR/X.25连接的NBMA类型网络,点到多点不是缺省的网络类型,需要手工设置。2.2邻居关系太多?对于广播和NBMA类型的网络,其内部网络路由器之间是全连接的。如果网络内有上百台路由器,那么将会形成很多的邻接关系,两两互相形成,即100(100-1)。这些邻居关系要定期更新链路状态数据库LSDB,这样就会消耗大量的系统资源?应该怎么处理呢?2.3DR和BDRDR的概念:在广播和NBMA类型的网络上,任意两台路由器之间都需要传递路由信息(flood),如果网络中有N台路由器,则需要建立N(N-1)/2个邻接关系。任何一台路由器的路由变化,都需要在网段中进行N(N-1)/2次的传递。这是没有必要的,也浪费了宝贵的带宽资源。为了解决这个问题,OSPF协议指定一台路由器DR(DesignatedRouter)来负责传递信息。所有的路由器都只将路由信息发送给DR,再由DR将路由信息发送给本网段内的其他路由器。两台不是DR的路由器(DROther)之间不再建立邻接关系,也不再交换任何路由信息。这样在同一网段内的路由器之间只需建立N个邻接关系,每次路由变化只需进行2N次的传递即可。DR的产生过程:通过Hello报文的所带priority位,和DR、BDR信息,可以选出该网段的DR。所有路由器认可一个优先级最高的路由器作为DR,优先级次高的作为BDR,所有这个网段的路由器与DR,BDR构成邻接关系。哪台路由器会成为本网段内的DR并不是人为指定的,而是由本网段中所有的路由器共同选举出来的。DR的选举过程如下:登记选民本网段内的运行OSPF的路由器;登记候选人本网段内的Priority>0的OSPF路由器;Priority是接口上的参数,可以配置,缺省值是1;竞选演说一部分Priority>0的OSPF路由器自己是DR;投票在所有自称是DR的路由器中选priority值最大的当选,若两台路由器的priority值相等,则选RouterID最大的当选。选票就是HELLO报文,每台路由器将自己选出的DR写入HELLO中,发给网段上的每台路由器;稳定压倒一切:由于网段中的每台路由器都只和DR建立邻接关系。如果DR频繁的更迭,则每次都要重新引起本网段内的所有路由器与新的DR建立邻接关系。这样会导致在短时间内网段中有大量的OSPF协议报文在传输,降低网络的可用带宽。所以协议中规定应该尽量的减少DR的变化。具体的处理方法是,每一台新加入的路由器并不急于参加选举,而是先考察一下本网段中是否已有DR存在。如果目前网段中已经存在DR,即使本路由器的priority比现有的DR还高,也不会再声称自己是DR了。而是承认现有的DR。快速响应:如果DR由于某种故障而失效,这时必须重新选举DR,并与之同步。这需要较长的时间,在这段时间内,路由计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR(BackupDesignatedRouter)的概念。BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR,由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由计算。注意:网段中的DR并不一定是priority最大的路由器;同理,BDR也并不一定就是priority第二大的路由器。DR是指某个网段中概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上可能是BDR,或者是DROther。只有在广播和NBMA类型的接口上才会选举DR,在point-to-point和point-to-muiltipoint类型的接口上不需要选举。两台DROther路由器之间不进行路由信息的交换,但仍旧互相发送HELLO报文。他们之间的邻居状态机停留在2-Way状态。广播网络或NBMA类型的网络需要选举指定路由器DR(DesignatedRouter)和备份指定路由器BDR(BackupDesignatedRouter)。路由器接口的优先级Priority将影响接口在选举DR时所具有的资格。优先级为0的路由器不会被选举为DR或BDR。DR由本网段中所有路由器共同选举。Priority大于0的路由器都可作为“候选者”,选票就是Hello报文,OSPF路由器将自己选出的DR写入Hello报文中,发给网段上的其它路由器。当同一网段的两台路由器都宣布自己是DR时,选择Priority高的。如果Priority相等,选择RouterID大的。如果DR失效,则网络中的路由器必须重新选举DR,并与新的DR同步,为了缩短这个过程,OSPF提出了BDR(BackupDesignatedRouter,备份指定路由器)的概念,与DR同时被选举出来。BDR也与本网段内的所有路由器建立邻接关系并交换路由信息。DR失效后,BDR立即成为DR,由于不需要重新选举,并且邻接关系已经建立,所以这个过程可以很快完成。这时,还需要选举出一个新的BDR,但已不会影响路由的计算。需要说明的是:DR并不一定是网段中Priority最大的路由器;同理,BDR也并不一定就是Priority第二大的路由器。若DR、BDR已经选择完毕,即使有一台Priority值更大的路由器加入,它也不会成为该网段中的DR。DR是网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上可能是BDR,或者是DROther。只有在广播或NBMA类型的接口时才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。2.4思考题(1)LSA描述的网络类型主要有哪些?(2)为什么要选举DR和BDR?它们有什么作用?第3章OSPF路由计算过程在介绍了OSPF协议的各种术语之后,接下来我们详细介绍OSPF协议路由计算的过程。3.1OSPF报文头Version#OSPF版本号,当前版本2。TypeOSPF报文类型,包括Hello、DD、LSR、LSU和LSAck等五种报文。RouterID报文起源的RouterID。AreaID一个32位的数,标识报文属于哪个区域,所有OSPF报文只属于单个区域,且只有一跳。当报文在虚链接上承载时,会打上骨干区域0.0.0.0的标签。Checksum包的整个内容的校验,从OSPF报文头部开始,但是除了64位的认证字段。AuType认证类型包括四种:0(无需认证),1(明文认证),2(密文认证)和其他类型(IANA保留)。当不需要认证时,只是通过Checksun检验数据的完整性;当使用明文认证时,64位的认证字段被设置成64位的明文密码;当使用密文认证时,对于每一个OSPF报文,共享密钥都会产生一个“消息位”加在OSPF报文的后面,由于在网络上从来不以明文的方式发送密钥,所以提高了网络安全性。3.2OSPF五种协议报文OSPF的报文类型一共有五种:HELLO报文(HelloPacket):最常用的一种报文,周期性的发送给本路由器的邻居,使用的组播地址224.0.0.5。DR和BDR发送和接收报文使用的组播地址是224.0.0.6。HELLO报文内容包括一些定时器的数值,DR,BDR,以及自己已知的邻居。根据RFC2328的规定,要保持网络邻居间的hello时间间隔一致。需要注意的是,hello时钟的值与路由收敛速度、网络负荷大小成反比。缺省情况下,p2p、broadcast类型接口发送Hello报文的时间间隔的值为10秒;p2mp、nbma类型接口发送Hello报文的时间间隔的值为30秒。DD报文(DatabaseDescriptionPacket):路由信息(连接状态传送报文)只在形成邻接关系的路由器间传递。首先,它们之间互发DD(databasedescription)报文,告之对方自己所拥有的路由信息,内容包括LSDB中每一条LSA的摘要(摘要是指LSA的HEAD,通过该HEAD可以唯一标识一条LSA)。这样做是为了减少路由器之间传递信息的量,因为LSA的HEAD只占一条LSA的整个数据量的一小部分,根据HEAD,对端路由器就可以判断出是否已经有了这条LSA。DD报文有两种,一种是空DD报文,用来确定Master/Slave关系(避免DD报文的无序发送),确定Master/Slave关系后,才发送有路由信息的DD报文,收到有路由信息的DD报文后,比较自己的数据库,发现对方的数据库中有自己需要的数据,则向对方发送LSR(LinkStateRequest)报文,请求对方给自己发送数据。LSR报文(LinkStateRequestPacket):两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的或是对端更新的LSA,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。LSU报文(LinkStateUpdatePacket):用来向对端路由器发送所需要的LSA,内容是多条LSA(全部内容)的集合。LSAck报文(LinkStateAcknowledgmentPacket)由于没有使用可靠的TCP协议,但是OSPF包又要求可靠的传输,所以就有了LSAck包。它用来对接收到的LSU报文进行确认。内容是需要确认的LSA的HEAD(一个报文可对多个LSA进行确认)。DD报文、LSR报文、LSU报文发出后,在没有得到应有的对方相应的LSR、LSU、LSAck报文时,会重发。(例外:对DD报文若收到后发现没有必要产生连接状态请求报文,则不发连接状态请求报文。)同步后数据改变,则只向形成Adjacency关系的路由器发LSU报文。3.3邻接关系的形成与维持为了交换路由信息,邻居路由器之间首先要建立邻接关系,并不是每两个邻居路由器之间都能建立邻接关系。Hello报文主要负责建立和维护邻接关系,周期性的在路由器的接口上发送。当路由器发现自己被列在邻居路由器的hello报文中,双向通信就建立起来。在不同类型的链路上,hello报文工作的方式也不同。HELLOInterval:接口上发送报文的时间间隔,以秒为单位。如果两路由器不具有相同的呼叫周期,则不能成为邻接关系。DEADInterval:如果在DEADTIME指定的秒数内没有从已建立的邻居处收到报文,那么,邻居被宣布为故障状态。如果Hello报文中的DeadInterval与接收端口所设置的DeadInterval值不相同,则丢弃该报文。因此,要确保两邻居路由器具有相同的参数。邻接关系形成之后,接下来就是同步链路状态数据库。3.4OSPF邻居状态机Down:邻居状态机的初始状态,是指在过去的Dead-Interval时间内没有收到对方的Hello报文。Attempt:只适用于NBMA类型的接口,处于本状态时,定期向那些手工配置的邻居发送HELLO报文。Init:本状态表示已经收到了邻居的HELLO报文,但是该报文中列出的邻居中没有包含我的RouterID(对方并没有收到我发的HELLO报文)。2-Way:本状态表示双方互相收到了对端发送的HELLO报文,建立了邻居关系。在广播和NBMA类型的网络中,两个接口状态是DROther的路由器之间将停留在此状态。其他情况状态机将继续转入高级状态。ExStart:在此状态下,路由器和它的邻居之间通过互相交换DD报文(该报文并不包含实际的内容,只包含一些标志位)来决定发送时的主/从关系。建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。Exchange:路由器将本地的LSDB用DD报文来描述,并发给邻居。Loading:路由器发送LSR报文向邻居请求对方的LSA。Full:在此状态下,邻居路由器的LSDB中所有的LSA本路由器全都有了。即,本路由器和邻居建立了邻接(adjacency)状态。注:灰色的状态是指稳定的状态,其他状态则是在转换过程中瞬间(一般不会超过几分钟)存在的状态。本路由器和状态可能与对端路由器的状态不相同。例如本路由器的邻居状态是Full,对端的邻居状态可能是Loading。3.5邻接关系形成后开始相互交流数据库交换的过程主要包括:(1)主从关系协商(2)DD报文交换(3)LSA请求(4)LSA更新(5)LSA应答下面的内容我们详细介绍OSPF数据库交换过程。、3.6OSPF协议数据库交换过程上图显示了两台路由器之间如何通过发送5种协议报文来建立邻接关系,以及邻居状态机的迁移。(1)RT1的一个连接到广播类型网络的接口上激活了OSPF协议,并发送了一个HELLO报文(使用组播地址224.0.0.5)。由于此时RT1在该网段中还未发现任何邻居,所以HELLO报文中的Neighbor字段为空。(2)RT2收到RT1发送的HELLO报文后,为RT1创建一个邻居的数据结构。RT2发送一个HELLO报文回应RT1,并且在报文中的Neighbor字段中填入RT1的Routerid,表示已收到RT1的HELLO报文,并且将RT1的邻居状态机置为Init。(3)RT1收到RT2回应的HELLO报文后,为RT2创建一个邻居的数据结构,并将邻居状态机置为Exstart状态。下一步双方开始发送各自的链路状态数据库。为了提高发送的效率,双方需先了解一下对端数据库中那些LSA是自己所需要的(如果某一条LSA自己已经有了,就不再需要请求了)。方法是先发送DD报文,DD报文中包含了对本地数据库中LSA的摘要描述(每一条摘要可以惟一标识一条LSA,但所占的空间要少得多)。由于OSPF直接用IP报文来封装自己的协议报文,所以在传输的过程中必须考虑到报文传输的可靠性。为了做到这一点,在DD报文的发送过程中需要确定双方的主从关系。作为Master的一方定义一个序列号seq,每发送一个新的DD报文将seq加一。作为Slave的一方,每次发送DD报文时使用接收到的上一个Master的DD报文中的seq。实际上这种序列号机制是一种隐含的确认方法。如果再加上每个报文都有超时重传,就可以保证这种传输是可靠的。RT1首先发送一个DD报文,宣称自己是Master(MS=1),并规定序列号为x。I=1表示这是第一个DD报文,报文中并不包含LSA的摘要,只是为了协商主从关系。M=1说明这不是最后一个报文。(4)RT2在收到RT1的DD报文后,将RT1的邻居状态机改为Exstart,并且回应了一个DD报文(该报文中同样不包含LSA的摘要信息)。由于RT2的RouterID较大,所以在报文中RT2认为自己是Master,并且重新规定了序列号为y。(5)RT1收到报文后,同意了RT2为Master,并将RT2的邻居状态机改为Exchange。RT1使用RT2的序列号y来发送新的DD报文,该报文开始正式地传送LSA的摘要。在报文中RT1将MS=0,说明自己是Slave。(6)RT2收到报文后,将RT1的邻居状态机改为Exchange,并发送新的DD报文来描述自己的LSA摘要,需要注意的是:此时RT2已将报文的序列号改为y+1了。(7)上述过程持续进行,RT1通过重复RT2的序列号来确认已收到RT2的报文。RT2通过将序列号+1来确认已收到RT1的报文。当RT2发送最后一个DD报文时,将报文中的M=0,表示这是最后一个DD报文了。(8)RT1收到最后一个DD报文后,发现RT2的数据库中有许多LSA是自己没有的,将邻居状态机改为Loading状态。此时RT2也收到了RT1的最后一个DD报文,但RT1的LSA,RT2都已经有了,不需要再请求,所以直接将RT1的邻居状态机改为Full状态。(9)RT1发送LSRequest报文向RT2请求所需要的LSA。RT2用LSUpdate报文来回应RT1的请求。RT1收到之后,需要发送LSAck报文来确认。上述过程持续到RT1中的LSA与RT2的LSA完全同步为止。此时RT1将RT2的邻居状态机改为Full状态。注意:以上讨论是基于系统初始化达到同步过程的描述。但在系统达到同步后,某一台路由器的路由表发生变化(如:接口UP,DOWN,花费改变),OSPF的处理方法就有所不同:只对路由变化的部分,发送变化对应的LSU报文,对路由减少的项(接口或路由器DOWN掉),把Age位置位为MaxAge(3600秒),收到该LSU报文的路由器比较自己的路由表,如果跟自己的路由表不同,则把路由表更新,发送相应的LSU报文。如此类似链式反应的发送,我们称之为“泛洪”,把升级的路由表在系统内同步了。数据库同步的简要概括:路由信息(LSA)只在形成邻接关系的路由器之间传递,通过互发DD报文来实现。假设RTA、RTB为两台具有邻接关系的路由器,首先RTA发送一种空DD报文,用来确定Master/Slave关系(避免DD报文的无序发送)。然后RTA发送有路由信息DD报文给RTB,RTB将报文与自己的数据库比较。如果发现对方那里有自己需要的数据,则向对方发送连接状态请求报文,请求对方给自己发送相应数据。RTA收到连接状态请求报文后,按要求发送新的路由信息给对方,即发送连接状态升级报文。收到连接状态升级报文后,RTB会发送连接状态响应报文,以示收到。通过邻接间的连接状态传送报文的传递,路由信息在同一个网段内达到同步。可能会有路由器属于同一区域内的两个不同网段A、B(只需在两个接口上配置OSPF),那么,这个路由器会把A、B网段的信息互相传播以使两网段的信息同步。依此类推:区域内不同网段的信息可以全部达到同步。作为边界路由器,由协议规定,它应该属于骨干,它会把它得到的路由信息摘要,发给骨干上其他点。骨干上的点会首先得到全自治系统的拓扑结构,然后把它传道所连的非骨干区域内部。这样,所有的路由器都得到了整个自治系统的拓扑结构。对于ASBR,发送自己接收到的其他AS传送来的LSA给本AS内部的路由器,同样也将本AS内部的信息组合成LSA发送到其他AS的ASBR。这样任何一个路由器都可以知道整个网络的LADB。即可以判断是否存在一条通往网络上其他节点的路由。3.7OSPF协议路由计算过程上图中描述了通过OSPF协议计算路由的过程。由四台路由器组成的网络,连线旁边的数字表示从一台路由器到另一台路由器所需要的花费。为简化问题,我们假定两台路由器相互之间发送报文所需花费是相同的。首先,每台路由器都根据自己周围的网络拓扑结构生成一条LSA(链路状态广播),并通过相互之间发送协议报文将这条LSA发送给网络中其它的所有路由器。这样每台路由器都收到了其它路由器的LSA,所有的LSA放在一起称作LSDB(链路状态数据库)。显然,4台路由器的LSDB都是相同的。其次,由于一条LSA是对一台路由器周围网络拓扑结构的描述,那么LSDB则是对整个网络的拓扑结构的描述。路由器很容易将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。显然,4台路由器得到的是一张完全相同的图。最后,接下来每台路由器在图中以自己为根节点,使用SPF算法计算出一棵最短路径树,由这棵树得到了到网络中各个节点的路由表。显然,4台路由器各自得到的路由表是不同的。这样每台路由器都计算出了到其它路由器的路由。由上面的分析可知:OSPF协议计算出路由主要有以下三个主要步骤:描述本路由器周边的网络拓扑结构,并生成LSA。将自己生成的LSA在自治系统中传播。并同时收集所有的其他路由器生成的LSA。根据收集的所有的LSA计算路由。路由计算用的算法是Dijkstra算法,描述如下:Step1:把root加入最小树,设root可直达的顶点为候选人。Step2:若候选人列表空,则最小树生成完成,否则候选人列表中选取花费最小的,加入到最小树中。Step3:把新加入的顶点所能直达的顶点列为候选人。Step4:在候选人名单里除去最小树中已出现的,回Step2工作过程:通过LSDB可得各路由器的连接(link)状态(state),利用Dijkstra算法,可由“内”向“外”,从区域内到区域间,从AS内到AS外,逐步生成最小树,进而生成路由表。在计算过程中,以路由器附属的每一个区域为出发点,计算每一个区域的最小树(相当与一个阶段性的最小树),区域的最小树包括该区域内部路由器和子网,该区域所知道的其它区域的子网节点,该区域所知道的ASBR路由器,ASE节点,系统根据所得的区域的最小树,逐区域改进最小树,最后生成全局的最小树,改进路由表,并根据路由表的变化,调用生成和发送连接状态传送报文的函数,向外发送新的连接信息。下面详细介绍路由表计算过程:(1)初始化,保存旧的路由表。(2)用Dijkstra算法计算Intra_Area的路由(包括ABR)。(3)通过检查SummaryLSA,计算InterArea的路由,若Router是区域边界的ABR,则只检查Backbone的Summary_LSA。(4)Root是ABR且连着TransitArea,检查是否有更好的路由(指利用虚连接改进路由)。(5)通过ASExternalLSA,计算AS外部路由。计算是按根节点所连的区域逐个区域来计算的,对于每一个区域,分别进行计算,且在计算过程中逐步改进路由表。路由比较规则:若有两个不同路由到同一个节点,按以下规则选取:同一级别的路由比较总是选小的花费的路由.对于不同级别的路由,分为含AS外部的路由:(1)INT路由(区域内路由与区域间路由)在AS外路由之前考虑,即不含外部路由的路由优先于含外部路由的路由。(2)type1在ypte2之前考虑,小type2比大type2优先。(3)若新的AS外部路由仍不可从当前的路由表入口的路由区分大小,选择基于Intra_AS的到ASBR路由。(4)仍不可分,选少花费的。(5)视为等价ASE花费路由。例如:从路由器A有一条到路由器B的1类外部路由rt1,总的花费是100,现在路由器得到一条新的由A到B的新的路由rt2:若rt2是自治系统内部路由,则系统将rt2加入路由表,同时删去路由表中的rt1。若rt2是2类外部路由,则系统忽略rt2路由。不含AS外部路由的路由:优先级由高到低为:(1)区域内路由(2)骨干区域内路由(3)区域间路由(指从经过了两个区域的路由但又不是虚连接构成的骨干区域内路由)比较时,先看两条路由的优先级是否相同,如果相同的话,按一定规则取的花费小的路由。花费相同的两条路由视为等价路由。如果优先级不同的话,取高优先级的路由。3.8思考题(1)OSPF协议报文有哪些?(2)OSPF协议路由计算的过程是怎样的?第4章LSA链路状态通告这一部分我们重点介绍OSPF各种链路状态通告LSA,也是深刻理解OSPF协议的关键。4.1LSA头部首先,我们分析一下LSA报文头:所有LSA头部都有20个字节,它包含了足够的信息来唯一标识一条LSA(LStype,LinkStateID,andAdvertisingRouter)。LSA多实例在同一时候可以存在于路由域中,它被用来决定哪一个实例是最新的。LSA头部还包括LS老化、LS序列号和LS校验和等字段。LSage,用来标识LS产生的时间。生成LSA的路由器将LS时域初始化为0,在洪泛过程中,每经过一个路由器,要按InfTransDelay的量增加,这个量表示传输LSA到下一个跳所需要的时间。当该时间达到所设定的MaxAge参数时,要撤消该LSA。Options,用来描述支持的路由域,主要包括DC、EA、N/P、MC、E、T等选项。DC指的是始发路由器支持DemandCircuits(按需拨号等);EA指的是始发路由器支持ExternalAttributesLSAs(现在未推广);N/P只用在Hello中N=1,说明支持NSSA,P只用在NSSA中,通知ABR把type7的LSA翻译成type5的LSA;MC只在MOSPF中用到;E表示可以接受外部路由(不是stub区),在一个area中的所有router此位必须一致,(Hello中体现)否则邻接关系无法建立;T表示始发路由器支持TOS。LStype,链路类型。每种类型的LSA都有唯一的通告格式。LinkStateID,这个字段标识被描述的网络环境的一部分,LinkStateID的内容取决于LSA的类型,即不同类型的LSA其LinkStateID也是不同的。比如,当LSA的类型是Type1时,LinkStateID是始发路由器的RouterID;当LSA的类型是Type2时,LinkStateID是DR在该网段上接口的IP地址;当LSA的类型是Type3时,LinkStateID是被通告的网络/子网的IP地址;当LSA的类型是Type4时,LinkStateID是被通告ASBR的RouterID;当LSA的类型是Type5时,LinkStateID是目的地的IP地址。AdvertisingRouter,指始发此LSA的路由器的RouterID。比如在Network-LSAs中,这个字段就是DR在该网段上接口的IP地址。LSsequencenumber,用于识别LSA包是否是一个最新包。路由器每生成一个新的LSA时,将该序列号加1。LSchecksum用来检查LSA的完整性,包括除了LSage之外的LSA头部的内容。Length,LSA的长度,用bytes表示。LSA的头部包括20字节。LSA头中的链路类型、链路状态ID和通告路由器的RouterID是一个LSA的唯一标识。一个LSA将有多个实例,不同的实例通过LS的序列号、LS的校验和及LS的Age字段来描述。因此,必须要决定其实例是否是最近的,这要通过检查LS的序列号、LS的校验和及LS的Age字段内容。4.2LSA分类LSA分类:OSPF是基于链路状态算法的路由协议,所有对路由信息的描述都是封装在LSA中发送出去。LSA根据不同的用途分为不同的种类,主要有如下类型的LSA:RouterLSA(Type=1):是最基本的LSA类型,所有运行OSPF的路由器都会生成这种LSA。主要描述本路由器运行OSPF的接口的连接状况,花费等信息。对于ABR,它会为每个区域生成一条RouterLSA。这种类型的LSA传递的范围是它所属的整个区域。NetwrokLSA(Type=2):本类型的LSA由DR生成。对于广播和NBMA类型的网络,为了减少该网段中路由器之间交换报文的次数而提出了DR的概念。一个网段中有了DR之后不仅发送报文的方式有所改变,链路状态的描述也发生了变化。在DROther和BDR的RouterLSA中只描述到DR的连接,而DR则通过NetworkLSA来描述本网段中所有已经同其建立了邻接关系的路由器。(分别列出它们RouterID)。同样,这种类型的LSA传递的范围是它所属的整个区域。NetworkSummaryLSA(Type=3):本类型的LSA由ABR生成。当ABR完成它所属一个区域中的区域内路由计算之后,查询路由表,将本区域内的每一条OSPF路由封装成NetworkSummaryLSA发送到区域外。LSA中描述了某条路由的目的地址、掩码、花费值等信息。这种类型的LSA传递的范围是ABR中除了该LSA生成区域之外的其他区域。ASBRSummaryLSA(Type=4):本类型的LSA同样是由ABR生成。内容主要是描述到达本区域内部的ASBR的路由。这种LSA与Type3类型的LSA内容基本一样,只是Type4的LSA描述的目的地址是ASBR,是主机路由,所以掩码为0.0.0.0。这种类型的LSA传递的范围与Type3的LSA相同。ASExternalLSA(Type=5):本类型的LSA由ASBR生成。主要描述了到自治系统外部路由的信息,LSA中包含某条路由的目的地址、掩码、花费值等信息。本类型的LSA是唯一一种与区域无关的LSA类型,它并不与某一个特定的区域相关。这种类型的LSA传递的范围整个自治系统(STUB区域除外)。MulticastOSPFLSA(Type=6):使用在OSPF多播应用程序里。Not-So-StubbyArea(Type=7):使用在Not-So-Stubbyarea(NSSA)里。External-Attributes-LSA(Type=8):特殊的LSA,还没有实现。当BGP信息需要在OSPF上承载时,需要用到此LSA。opaqueLSA(Type=9~11):用于MPLS流量工程,有关此LSA的详细应用请参考MPLS流量工程培训教材或RFC2370文档。4.3LSA进一步阐述如上图所示,我们进一步阐述各种类型的LSA。两个自治系统,分别是AS100和AS200,其中Area0是骨干区域,Area2和Area3是非骨干区域,Area4是NSSA区域,Area3经过中间区域Area2与骨干区域通信。AS100内部运行OSPF协议,AS200内部运行RIPv2协议。自治系统之间通过BGP连接。4.4RouterLSA(Type1)上图显示了Type1LSA报文格式,不包括LSA报文头:Router-LSAs是Type1LSAs,区域中的每台路由器产生一条Router-LSAs,特定区域内该路由器的所有链路都要描述在一个LSA里面,这种类型的LSA描述了到这个区域的路由器链路的状态和花费,所有到这个区域的路由器的链路必须用唯一的Router-LSAs描述出来。在router-LSAs里,LinkStateID字段被设置成路由器的OSPFRouterID。Router-LSAs仅仅被泛洪到特定的区域,不再传播到其他区域。VEB:用于确定路由器的链路类型。V比特,V指virtual,路由器是虚链路的端点;E比特,E指external,当设置此位时,表示这台路由器是自治系统边界路由器;B比特,指border,当设置此位时,表示这台路由器是区域边界路由器。#links,一台Router可以同时携带若干个链路信息,每个链路包括链路ID、链路数据、链路类型、#TOS、费用度量、TOS、TOS度量值等信息,用于描述路由器某接口的链路信息。LinkID,标识路由器连接对象,这个值取决于链路状态类型。当链路类型是Type1,则为邻居路由器的ID;当链路类型type2,则为DR接口的IP地址;当链路类型type3,则为IP网络/子网号;当链路类型type4,则为邻居路由器的ID。LinkData,这个值同样取决于链路类型字段。Type,链路类型的简短描述,包括通过Point-to-point链路连接到另一台Router,连接到一个transit网络,连接到一个stub网络和Virtuallink。#TOS,链路服务类型号。在RFC2328中,该TOS已不再使用。Metric,链路费用度量。TOS,和TOSmetric,IP的服务类型与服务度量值。4.5RouterLSAofRT4上图显示了RT4的Type1类型的LSA。因为是Type1类型的LSA,根据OSPF协议规定,Lsid就是产生此LSA的RouterID,即4.4.4.4。Advrtr:4.4.4.4表明这条LSA的始发者是4.4.4.4路由器。LinkID:3.3.3.3是说RT4连接的对象,发送的数据是40.1.1.1,两者之间连接类型是Virtual虚连接。4.6NetworkLSA(Type2)上图显示了Type2LSA报文格式,不包括LSA头部:Network-LSAs是Type2类型的LSA。在广播和NBMA类型的网络中,这种类型的LSA由DR路由器产生,描述了到这个网络的所有路由器,包括DR自己。Type2类型的LSA将通告该路由器上某一多点访问网络和所连接的路由器信息,该LSA也只能在本区域内扩散。链路状态ID标识DR到这个区域或网络的接口IP地址,费用度量不再需要,因为路由器直接连接到网络上,费用必为0。NetworkMask,标识该多点访问网络的网络掩码。AttachedRouter,标识连接到该网络并且与DR成紧邻关系的RouterID,包括DR本身的RouterID。4.7RT6LSA上图显示了RT6的Type2类型的LSA。因为是Type2类型的LSA,根据OSPF协议规定,Lsid就是DR在该网段上接口的IP地址,即60.1.1.2。Advrtr表明这条LSA的始发者是6.6.6.6这台路由器。AttachedRouter表明与DR有紧邻关系的路由器是2.2.2.2,当然包括它自己6.6.6.6。4.8SummaryLSA(Type3,4)上图显示了Type3,4类型的LSA报文格式,不包括LSA头部:Summary-LSAs指的是Type3和Type4类型的LSA,两者都由区域边界路由器生成,实现区域间目标链路的描述,它们只能在同一个区域内泛洪。Type3类型的LSA用来描述ABR到该目标网络的费用,供其它区域的路由器计算到该网络的费用。Type4类型的LSA以一个自治系统边界路由器ASBR为其目标,而链路状态ID就是该ASBR的OSPF路由器ID,以描述ABR到ASBR之间的费用,它主要用于计算最佳的外部路由。链路状态ID是这两种类型的LSA之间的唯一区别。对于Stub区域,Type3类型的LSA也被用来描述一条默认路由。当描述一条默认路由时,summary-LSA的LinkStateID总被设置成目标网络和掩码是0.0.0.0。Metric,路由花费值。4.9Type3ofRT2上图显示了RT2的Type3类型的LSA。因为是Type3类型的LSA,根据OSPF协议规定,当LSA的类型是Type3时,LsID就是被通告的网络或子网的IP地址,在这里就是40.1.1.0网段地址。该网段的掩码是255.255.255.0,花费值是1562。这条LSA最初是由4.4.4.4通告的。4.10Type4ofRT5上图显示了RT5的Type4类型的LSA。因为是Type4类型的LSA,根据OSPF协议规定,当LSA的类型是Type4时,LsID就是被通告ASBR的RouterID,在这里ASBR的RouterID是1.1.1.1。而这条LSA最初是由4.4.4.4路由器通告的,到这个ASBR的花费值是3125。如果某个区域内有ASBR,则这个区域的ABR在向其他区域生成路由信息时必须单独为这个ASBR生成一条Type4类型的LSA,内容主要包括这个ASBR的RouterID和到他所需的花费值。4.11ExternalLSA(Type5)上图显示了Type5类型的LSA报文格式,不包括LSA头部:AS-externalLSA是Type5类型的LSA,由ASBR产生,它被用于说明自治系统以外的网络或路由,在整个自治系统(除stub区域)内不加改变地泛洪,与路由器的链路状态数据库相独立地保存。链路状态ID域为目标网络的IP网络号,网络掩码为目的网络的掩码。在As-externalLSA中可以通告一条缺省路由,这时,链路状态ID为0.0.0.0,网络掩码也为0.0.0.0。E位用于指示外部路由是1型(E=0)还是2型(E=1),1型外部路由的度量值与内部OSPF路由域的度量具有相同的度量单位,2型外部路由的度量值大于内部OSPF路由域的度量。Forwardingaddress,转发地址是指到达该外部目标网络的下一跳地址,一般是ASBR路由器,此时转发地址为0.0.0.0,表示将报文转发给产生该LSA的ASBR,但如果运行BGP协议得到外部路由的ASBR与另一自治系统的ASBR间的网络是一个多点访问网络,则转发地址应设置为该网络地址,这样可省略ASBR这个中间一跳。在该LSA中,由产生该LSA的ASBR路由器负责对该外部路由做上标志tag,以便在ASBR间传送另外的附加信息。4.12ExternalType1如果E比特位是0,也就是Type1类型的外部Metric,意味着被表示成与链路状态相同的花费值(用接口花费值表示)。此时,R2接口Cost值比R1的小,因此到达外部网络N1的路径下一跳选择R2是最优的。4.13ExternalType2Metric被指定为Type2的外部Metric,意味着这条路径花费比其他任何一个都要大。如图所示,从R3到达目标网络N1有两条路径,其中下一跳为R2的路径已被标识为ExternalType2,路径花费值比任何一个都要大,因此选择下一条为R1的路径。4.14Type5Details上图显示了RT2的Type5类型的LSA。因为是Type5类型的LSA,根据OSPF协议规定,当LSA的类型是Type5时,LsID就是目的地的IP地址,在这里就是80.0.0.0网段地址。这条LSA由1.1.1.1路由器通告的,在通告的同时也包括掩码、花费以及转发地址这样一些参数值。4.15NSSA(Type7)除了下面描述的,Type7-LSA和type-5LSA是相同的:(1)在LSA头部,Type字段是7。(2)Type-7LSA只在NSSA区域产生并泛洪,不能泛洪到骨干区域和其他区域,与stub区域一样,NSSA区域不能接收产生Type5类型的报文。(3)在NSSA区域边界路由器,type-7LSA被转换成type-5LSA后泛洪到骨干区域。(4)Type7LSA有一个P(propagate)位,用来标记区域边界路由把Type-7LSA转换成Type-5LSA。4.16Type7Details上图显示了RT2的Type7类型的LSA。在这个组网中,Area4是NSSA区域。RT2在Area4的边界,为了访问外部网络,RT2产生了一条Type7类型的LSA,这条LSA主要包括这条LSA的产生者(2.2.2.2),目标网段(0.0.0.0),掩码(0.0.0.0),花费(1)以及转发地址(0.0.0.0)。4.17初始状态的LSA当一个路由器的接口上启动了OSPF,那么就会生成一个且只生成一个LSA---RouterLSA。随着邻居关系向邻接关系的过渡,这些ROUTERLSA会根据从对方学到的LSA信息,发生一些变化,比如生成NETWORKLSA或其他类型的LSA。4.18LSA交换之后接下来是?邻接关系形成之后,开始进行路由计算,具体的计算过程参见我们将要介绍的第四部分。4.19思考题(1)LSA主要包括哪些类型?(2)Network-LSA、Net-Summary-LSA、Asbr-Summary-LSA和AS-External-LSA主要区别是什么?第5章设计规划OSPF网络前面四部分内容我们把OSPF协议基本概念和原理介绍完了,接下来我们来看一下如何设计规划OSPF网络。5.1OSPF区域为什么需要划分区域:随着网络规模日益扩大,网络中的路由器数量不断增加。当一个巨型网络中的路由器都运行OSPF路由协议时,就会遇到如下问题:每台路由器都保留着整个网络中其他所有路由器生成的LSA,这些LSA的集合组成LSDB,路由器数量的增多会导致LSDB非常庞大,这会占用大量的存储空间。LSDB的庞大会增加运行SPF算法的复杂度,导致CPU负担很重。由于LSDB很大,两台路由器之间达到LSDB同步会需要很长时间。网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“动荡”之中,为了同步这种变化,网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更糟糕的是:每一次变化都会导致网络中所有的路由器重新进行路由计算。解决上述问题的关键主要有两点:减少LSA的数量;屏蔽网络变化波及的范围。OSPF协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是在逻辑上将路由器划分为不同的组。区域的边界是路由器,这样会有一些路由器属于不同的区域(这样的路由器称作区域边界路由器——ABR),而一个网段只能属于一个区域。划分成区域之后,给OSPF协议的处理带来了很大的变化。每一个网段必须属于一个区域,或者说每个运行OSPF协议的接口必须指名属于某一个特定的区域,区域用区域号(AreaID)来标识。区域号是一个从0开始的32位整数。不同的区域之间通过ABR来传递路由信息。划分区域后的好处:由于划分区域后ABR是根据本区域内的路由生成LSA,则可以根据IP地址的规律先将这些路由进行聚合后再生成LSA,这样做可以大大减少自治系统中LSA的数量。划分区域之后,网络拓扑的变化首先在区域内进行同步,如果该变化影响到聚合之后的路由,则才会由ABR将该变化通知到其他区域。大部分的拓扑结构变化都会被屏蔽在区域之内了。OSPF网络被划分成多个区域之后,路由计算的方法也发生了变化:只有同一个区域内的路由器之间会保持LSDB的同步,网络拓扑结构的变化首先在区域内更新。区域之间的路由计算是通过ABR来完成的。ABR首先完成一个区域内的路由计算,然后查询路由表,为每一条OSPF路由生成一条Type3类型的LSA,内容主要包括该条路由的目的地址、掩码、花费等信息。然后将这些LSA发送到另一个区域中。在另一个区域中的路由器根据每一条Type3的LSA生成一条路由,由于这些路由信息都是由ABR发布的,所以这些路由的下一跳都指向该ABR。关于Type3LSA更详细的描述,请参见4.8SummaryLSA。5.2Transit区域Transitarea负责的主要功能是IP包快速和有效的传输,互联OSPF其他区域类型。一般的,这个区域里不会出现终端用户(enduser)。Transit区域可以接收SummaryLSA和ExternalLSA。5.3Transit区域上图显示了Transit区域收发报文的情况。Area51是Transit区域,它会转发来自骨干区域所有的LSA。5.4Stub区域STUB区域:只有一个接口与外部相连的网络,如一个PPP可视为一个stub网络。STUB区域是指那些不传播Type5类型(即引入的外部路由)的LSA的区域。在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。为了保证到自治系统外的路由依旧可达,由该区域的ABR生成一条缺省路由(0.0.0.0)传播到区域内,因为所有到自治系统外部的路由都必须通过ABR才能到达。STUB区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常的,STUB区域位于自治系统的边界,是那些只有一个ABR的非骨干区域。或者该区域虽然有多个ABR,但这些ABR之间没有配置虚连接。配置STUB区域的一些注意事项:骨干区域不能配置成STUB区域,虚连接不能穿过STUB区域。如果想将一个区域配置成STUB区域,则该区域中的所有路由器都必须都配置该属性。STUB区域内不能存在ASBR,即自治系统外部路由不能引入到区域内,区域的自治系统外部路由也不能在本区域内传播和传递到区域外。5.5Stub区域上图显示了Stub区域转发报文的情况。Area51是Stub区域,可以接收Type3类型的LSA,但不可以引入Type5类型的LSA。Stub区域虽然有效减少了路由信息量,但它同样需要访问外部网络,因此会在该区域的ABR上生成一条默认路由,用来访问外部网络。5.6完全Stubby区域完全Stub区域与Stub区域的区别在于它可以拒绝Type3类型的LSA进入该区域,这样可以进一步减少路由信息交换量。同样,在该区域的ABR上,会生成一条默认路由访问外部网络。5.7完全Stubby区域上图显示了完全Sbub区域接收路由信息的情况。Area51是完全Stub区域。把某个区域设置成完全Stub区域,不仅可以最大程度减少路由信息交换量,而且可以提高网络的稳定性。5.8NSSA区域NSSA区域:STUB区域虽然为合理的规划OSPF网络描绘了美好的前景,但她在实际的组网中又不具备可操作性,因为实际网络中不可能每台路由、每个接口都运行OSPF路由协议,STUB区域必然需要存在ASBR路由器。为此协议设计者提出了一种新的概念NSSA,并且作为OSPF协议的一种扩展属性单独在RFC1587中描述。NSSA需要完成如下任务:(1)自治系统外的ASE路由(自治系统外部路由)不可以进入到NSSA区域中,但是NSSA区域内的路由器引入的ASE路由可以在NSSA中传播并发送到区域之外。即:取消了STUB关于ASE的双向传播的限制(区域外的进不来,区域里的也出不去),改为单向限制(区域外的进不来,区域里的能出去)。(2)由于是作为OSPF标准协议的一种扩展属性,应尽量减少与不支持该属性的路由器协调工作时的冲突和兼容性问题。为了解决ASE路由(自治系统外部路由)单向传递的问题,NSSA中重新定义了一种LSA——Type7类型的LSA,作为区域内的路由器引入外部路由时使用,该类型的LSA除了类型标识与Type5不相同之外,其它内容基本一样。这样区域内的路由器就可以通过LSA的类型来判断是否该路由来自本区域内。但由于Type7类的LSA是新定义的,对于不支持NSSA属性的路由器无法识别,所以协议规定:在NSSA的ABR上将NSSA内部产生的Type7类型的LSA转化为Type5类型的LSA再发布出去,并同时更改LSA的发布者为ABR自己。这样NSSA区域外的路由器就可以完全不用支持该属性。从上述描述可以看出:在NSSA区域内的所有路由器必须支持该属性(包括NSSA的ABR),而自治系统中的其他路由器则不需要。由于NSSA是由STUB区域的概念改进得来,所以她的名字叫做:"not-so-stubby"area,本意是:不是那么STUB的区域。5.9NSSA区域上图显示了NSSA区域收发报文的情况。Area51是NSSA区域,可以有选择的引入外部路由。5.10虚链接VirtualLink虚连接:由于网络的拓扑结构复杂,有时无法满足每个区域必须和骨干区域直接相连的要求,例如图中的Area19。为解决此问题,OSPF提出了虚连接的概念。虚连接是指在两台ABR之间,穿过一个非骨干区域(转换区域——transitArea),建立的一条逻辑上的连接通道。可以理解为两台ABR之间存在一个点对点的连接。“逻辑通道”是指两台ABR之间的多台运行OSPF的路由器只是起到一个转发报文的作用(由于协议报文的目的地址不是这些路由器,所以这些报文对于他们是透明的,只是当作普通的IP报文来转发),两台ABR之间直接传递路由信息。这里的路由信息是指由ABR生成的type3的LSA,区域内的路由器同步方式没有因此改变。5.11虚链接举例上图为我们提供了一种通过虚链接提高网络可靠性的方法。Area2和Area3都与骨干区域Area0有物理连接,但是我们又配置了从Area3到Area0中间经过Area2的虚链接。当Area3到Area0的物理连接失效后,那么Area3通过虚链接经过Area2同样可以访问骨干区域。同理,当RT7与RT5之间的物理连接失效后,RT7可以通过虚链接经过Area1访问RT6。5.12路由聚合路由聚合:路由聚合是减少路由条目的有效手段,OSPF本身支持路由聚合,但是对应用路由聚合的位置和聚合的路由类型是有严格要求的。换句话说,OSPF的路由聚合并不是随意在哪一台设备上都能作的,而且在特定的设备上,可聚合的路由类型也是特定的:对OSPF“内部路由”的聚合只能在ABR上操作,OSPF-ASE路由的聚合只能在ASBR上操作。OSPF的路由聚合是在type3LSA和type5LSA上实现的。在ABR上,路由器会将每个area内部的网段信息以type3LSA在其他area中发布的,自然在ABR上就可以对OSPF“内部路由”进行聚合。同样,在ASBR上,路由器会将每一条外部路由以一个type5的LSA进行表述。除了ABR和ASBR以外的路由器不会主动产生type3和type5的LSA,所以也不能对type3和type5的LSA作任何形式的改动。对于ABR来说,本身就需要发布type3的LSA,所以将多个type3LSA聚合为一个type3LSA不会对影响整个网络的拓扑,对于ASBR对type5LSA的处理是同样的道理。结合上一节的内容,在将直联路由引入到OSPF中的时候,建议应用“network”命令,这样生成的OSPF“内部路由”可以在ABR上进行灵活的控制,有效防止非0area内局部网络状态的改变引起全网的路由振荡。5.13没有聚合的情况上图显示了没有在区域边界路由器ABR上实施聚合的情况。从中可以清楚的看出,10.1.1.0、10.1.2.0和10.1.3.0等所有的子网路由通过ABR全部发给了骨干区域,给网络的稳定性造成了一定的影响。5.14聚合后的情况上图显示了在区域边界路由器ABR上实施路由聚合的情况。从中可以看出,只有聚合后的10.0.0.0、20.0.0.0和30.0.0.0三个网段路由被ABR通告给骨干区域Area0,链路状态的变化不会影响到区域外的路由信息,提高了网络可靠性。5.15网内流量部署如上图所示,我们看一下如何合理部署OSPF网内流量。对于只存在一个ABR的非骨干区域,本区域的所有上行流量都会通过这台设备上行。我们主要来分析一下对于网络拓扑比较完备的area0,在这个组网中,RA、RB作为核心设备,假设RA、RB都有上行到外网的链路,一般情况下,我们希望整网的对外流量能够同时应用RA、RB的对外链路上行,并且在一条对外链路出现故障时,全部流量能够自动切换到另一条链路上行。但是OSPF并不能像BGP那样“随心所欲”的进行路由策略控制,虽然OSPF本身也有比较多的路由选优原则,但是留给用户可控的参数确只有cost,自然我们在作流量控制的时候,也就只有这一种工具了。我们可以采取建立流量分担组和使用等值负载分担来实现。第一种方法,建立负载分担组。其中一组主用到RTA的链路上行,另外一组主用到RTB的链路上行,实现这种需求,我们只需要对RC-1、RC-2、RD-1的两条链路赋予不同的cost值即可,主用链路的cost值小于备用链路cost值,对于OSPF协议来说,链路默认的cost值是“108/链路带宽(以bit为单位)”,这样,对于100M或者更大的链路带宽cost都是1,不能很好的体现实际的链路情况,目前对于最大带宽是1G的网络,一般我们采取“10000/链路带宽(以Mbit为单位)”的方式来设置链路的cost值。当然了,对于带宽相等的主/备用链路,我们需要额外为备用链路定义一个足够大的cost值。OSPF协议中另外一个需要注意的问题就是默认路由的发布,除了需要进行必要的配置以外,OSPF默认只有在本机有一条默认路由的时候,才会向外发布type5的默认路由LSA。第二种方法,使用等值负载分担。对于相同的目的网段,有多个不同的下一跳,在我们的典型网络模型中,如果RC-1的两条上行链路赋予相同的cost值,那么对于RTA、RTB发布的默认路由来说,在RC-1上就会有两个不同的下一跳,更进一步一步说,如果RC-1、RC-2、RD-1上行的链路cost全部相等,那么对于RC-1、RC-2、RD-1之间的互访流量来说,都有两条开销相同的链路。广泛意义上说,负载分担就是能够完成到某个目的地空间的数据流量可以通过不同的转发路径到达目的,对于特定的网络来说,我们可以将“目的空间”进行划分,使其中一部分流量通过唯一的链路转发,另外一部分通过其他链路转发,最终同样能够完成链路带宽的复用。在目前的网络规划中,等值负载分担一般只在局部链路进行应用,最常见的就是有多条链路互连的两台直联设备之间,但是随着链路捆绑技术的发展,这种应用也逐步被“链路捆绑”所取代,因为“链路捆绑”与等值负载分担相比,有节省IP地址和便于管理的优势。5.16外部路由引入如上图所示,我们介绍一下设计OSPF网络时如何合理引入外部路由。众所周知,在网络的接入层,一般设备的级别较低,部署OSPF对设备的压力较大,而且,对于单链路上行的网络拓扑来说,配置静态路由也同样可以很好解决互通性问题。我们需要解决的问题是,如何将这些通过静态或者直联方式(运行OSPF的路由器的下行接口作为终端的网关)接入的业务网段引入到OSPF协议中,使整个网络的互通性得到保证。将外部路由引入到OSPF中,有两种方式:通过“network”命令将该端口使能OSPF,同时,该端口IP地址对应的网段路由信息也会从在各类型LSA中有所体现,其他运行OSPF的设备可以通过相应的LSA计算出对应的路由信息(这种方式只适用于直联路由的引入);通过“import-route”命令将其他协议发现的路由信息以type5(在NSSA区域中以type7形式)的LSA发布到OSPF中,每条外部路由对应一条LSA。注意:对于这种只需要发布业务网段,并不需要建立OSPF邻居的接口,需要配置silent-interface,确保网络的安全性。另外,在OSPF协议中,支持邻居之间的认证机制,建议邻居之间进行加密配置,避免其他路由器“方便”的接入网络,造成网络信息的泄漏。以上两种方式虽然都可以将外部路由引入OSPF,但是对于OSPF来说,通过两种方式引入的路由信息是区别对待的。对于通过“network”命令引入的路由信息,在OSPF中是“内部路由”,是OSPF根据最短路径优先算法精确计算出来的;对于通过“import-route”命令引入的路由信息在OSPF中是“外部路由(OSPF-ASE)”,没有精确的拓扑信息,OSPF协议本身并不保证这种路由信息出现环路,当然,只有在IP地址分配错误的网络中(同一IP网段分配给多个地方使用),OSPF外部路由才有成环的可能。除了拓扑信息不完善以外,OSPF-ASE路由在聚合方面也没有OSPF路由灵活。5.17OSPF验证功能OSPF能够利用一个认证字段来验证一个作为邻居连接的路由器是否确定,是否属于一个网络的路由器。由于所有的在一个区域内的OSPF路由器必须有相同的路由信息,因此很自然地OSPF路由器不允许过滤掉路由。利用认证一个OSPF路由器能够确认一个新的路由器已经加入到网络中,并且知道应该与它交换拓扑信息,用这种方式,OSPF不仅阻止了许多不应该的访问,也有助于保持网络的稳定性。5.18思考题(1)如何合理规划OSPF区域?(2)路由聚合有什么好处?是在哪些设备上部署?(3)在OSPF网络中,如何规划网络流量?(4)路由引入时,哪些是需要注意的?',)


  • 编号:1700672052
  • 分类:合同模板
  • 软件: wps,office word
  • 大小:54页
  • 格式:docx
  • 风格:商务
  • PPT页数:4397568 KB
  • 标签:

广告位推荐

相关合同模板更多>