




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OSPF内容概要1.概述OSPF是一个内部网关协议,用于在单一自治系统内决策路由。它是基于链路状态的路由协议,链路状态是指路由器接口或链路的参数.这些参数是接口的物理条件:包括接口是Up还是Down、接口的IP地址、分配给接口的子网掩码、接口所连的网络,以及使用路由器的网络连接的相关费用。OSPF与其他路由器交换交换信息,但所交换的不是路由,而是链路状态。OSPF路由器不是告知其他路由器可以到达哪些网络及距离是多少,而是告知它的网络链路状态,这些接口所连的网络及使用这些接口的费用。各个路由器都有其自身的链路状态,称为本地链路状态,这些本地链路状态在OSPF路由域内传播,直到所有的OSPF路由器都有完整而等同的链路状态数据库为止。一旦每个路由器都接收到所有的链路状态,每个路由器可以构造一棵树,以它自己为根,而分支表示到AS中所有网络的最短的或费用最低的路由.OSPF对于规模巨大的网络,通常将网络划分成多个OSPF区域,并只要求路由器与同一区域的路由器交换链路状态,而在区域边界路由器上交换区域内的汇总链路状态,这样可以减少传播的信息量,且使最短路径计算强度减少。在区域划分时,必须要有一个骨干区域(即区域0),其它非0或非骨干区域与骨干区域必须要有物理或者逻辑连接。当有物理连接时,必须有一个路由器,它的一个接口在骨干区,而另一个接口在非骨干区.当非骨干区不可能与物理连接到骨干区时,必须定义一个逻辑的或虚拟链路,虚拟链路由两个端点和一个传输区来定义,其中一个端点是路由器接口,是骨干区域的一部分,另一端点也是一个路由器接口,但在与骨干区没有物理连接的非骨干区域中.传输区是一个区域,介于骨干区域与非骨干区域之间.2.术语在OSPF中,经常要使用以下术语:RouterID(路由器ID):用于标识每个路由器的32位数。通常,将最高的IP地址分配给路由器ID.如果在路由器上使用了回送接口,则路由器ID是回送接口的最高IP地址,不管物理接口的IP地址。Interface(接口):路由器和具有唯一IP地址和子网掩码的网络之间的连接。NeighborRouter(相邻路由器):带有到公共网络的接口的路由器。BroadcastNetWork(广播网络):支持广播的网络。Ethernet是一个广播网络。NonBroadcastNetWork(广播网络):支持多于两个连接路由器,但没有广播能力的网络,如帧中继和X。25等网络.在非广播网络中,有非广播多点访问网络NBMA(在同一个网络上,但不能通过广播访问到)和点到多点网络。DesignatedRouteer(指定路由器DR):在广播和NBMA网络中,指定路由器用于向公共网络传播链路状态信息。BackupDesignatedRouteer(后援指定路由器DR):在DR故障时,接替DR的路由器。AreaBorderRouter(区域边界路由器ABR):连接多个OSPF区域的路由器.AutonomousSystemBorderRouter(自治系统边界路由器ASBR):一个OSPF路由器,但它连接到另一个AS,或者在同一个AS的网络区域中,但运行不同于OSPF的IGP。Adjacency(紧邻):紧邻可以在点对点连接的两个路由器之间形成,也可在广播或NBMA网络的DR和非指定路由器之间形成,还可以在BDR和非指定路由器之间形成。OSPF路由状态信息只能通过紧邻被传送和接收。Flooding(洪泛):在OSPF区域内,扩散某一链路状态,以分布和同步路由器之间的链路状态数据库。Link-StateAdvertisement(链路状态宣告LSA):描述路由器的本地链路状态,通过该通告向整个OSPF区域扩散.ExternalRouting(外部路由):从另一个AS或另一个路由协议得知的路由可以作为外部路由放到OSPF中。有两种类型的外部路由,类型1的外部路由具有的费用包含OSPF的费用,加上从ASBR到网络的费用。类型2的外部路由具有的费用仅是ASBR到网络的费用,而内部的OSPF费用可以忽略不计。IntraareaRouting(区域内路由):在相同OSPF区域的网络之间的路由,这些路由仅依据从区域内所接收的信息。InterareaRouting(区域间路由):在两个不同的OSPF区域之间的路由。区域间的路径由三部分组成:从区域到源区域的ABR的区域内路径,从源ABR到目标ABR的骨干路径,最后是从目标ABR到目标区域的路径。RouteSummarization(路由汇总):要通告的路由可能有一个区域内的路由、来自另一个AS的路由,以及从另一个路由协议得知的路由,所有这些路由可以由OSPF汇总成一个路由宣告。汇总仅可以在ABR或ASBR上发生。StubArea(存根区):只有一个出口路径的区域。3.协议包格式IPHeader(Protocol=89)IPHeader(Protocol=89)OSPFPacketHeaderPacketType-SpecificDataOSPFPacketLSALSALSALSALSALSAHeaderLSADataOSPFPacketDataOSPF协议一共使用5种类型的路由协议包:包类型作用1:呼叫发现和维护邻居2:数据库描述紧邻间同步数据库内容3:链路状态请求要求从邻居获取LSA4:链路状态更新向邻居通告LSA5:链路状态确认对所通告的LSA给出确认消息无论何种类型的OSPF包都有以下一个公共的报文头:版本号包类型包长度路由器ID区域ID校验和认证类型身份验证身份验证版本号:目前版本号为2。不同版本号不能会话。包类型:包类型的标志,为5种包类型中的某种。包长度:以字节计算,包括OSPF包加上首部头的长度。路由器ID:产生OSPF传输包的路由器的标识,一般就是路由器的最高IP地址.区域ID:分配给路由器传输接口的区域的32位指示器。如果包经过虚拟链路来发送,那么区域ID为骨干区域ID(ID=0),因为虚拟链路是骨干区域的一部分。校验和:整个OSPF报文包括OSPF头的校验和,使用补运算进行计算。认证类型(AuType):身份验证的方法,其后64位域包含使用的证明类型所要求的数据。AuType=0表示无认证,AuType=1表示简单的口令认证,AuType=2表示MD5安全认证。3.1Hello包格式Hello呼叫报文用于发现路由器所连网络上的邻居.通过周期性地发出呼叫包,呼叫协议可用于确定邻居路由器接口是否仍然处于活动状态。在广播网络和NBMA网络,呼叫协议可以用于选取指定路由器。呼叫包被发送到Multicast多播地址AllSPFRouters(224。0。0.5).在播发期间,有些协议包也将发送到该地址。指定或后援指定路由器发送并接收到Multicast多播地址是AllDRRouters(224.0.0.6)。Hello报文是包类型为1的OSPF包,封装在OSPF报文头后面,其格式如下:版本号=2包类型=1包长度路由器ID区域ID校验和认证类型身份验证身份验证网络掩码HelloInterval选项路由器优先级RouterDeadInterval指定路由器后援指定路由器邻居路由器……邻居路由器网络掩码:发送呼叫报文的接口的子网掩码。如果这一掩码和呼叫报文接收接口的子网掩码不匹配,则该呼叫报文不能被接收。这样可以确保共享同一网络的路由器才能成为邻居关系。HelloInterval:在接口上发送呼叫报文的时间间隔,以秒为单位.如果两路由器不具有相同的呼叫周期,则不能成为邻居关系。选项:包含5个分配位,在RFC2178中对E位已经做了说明,它确定如何传播外部链路状态宣告。在存根区,Hello报文要将该位设置为0,不能接收设置为1的Hello报文。使邻居具有兼容性.因兼容性问题,路由器可以放弃邻居关系。路由器优先级:该选项影响指定路由器DR的选取.值0表示该路由器不能被选为DR.如果是其它值,则具有最高优先级的路由器将成为DR。缺省值为1,如果所有路由器都使用该缺省值年,则具有最高IP地址的路由器将被选为DR。RouterDeadInterval:该参数(以秒为单位)用于确定邻居是否还处于活动状态.如果在由RouterDeadInterval指定的秒数内没有从已建立的邻居处收到呼叫报文,那么,邻居被宣布为故障状态。如果Hello报文中的RouterDeadInterval与接收端口所设置的RouterDeadInterval值不相同,则丢弃该报文,确保两邻居路由器具有相同的参数。指定路由器(后援指定路由器):广播网络或NBMA网络上DR(BDR)接口的IP地址.在DR(BDR)的选举过程中,这个值可能是关于DR(BDR)的起源路由器的设想,而不是最终的DR(BDR)。如果因为DR(BDR)没有选举出来或者因为是对等网络,不存在DR(BDR)该值应该取值为0.0。0.0。邻居路由器:路由器在这个网络上所拥有的邻居路由器的列表,用路由器ID表示.如果在由RouterDeadInterval指定的时间内未能从某个邻居接收到Hello呼叫包,那么,这个邻居应该从此列表中除去。3。2数据库描述包数据库描述包(DatabaseDescriptionpacket,DD)是2型OSPF包。在形成紧邻过程中的路由器之间交换数据库描述包,且由它来描述链路状态数据库,达到邻居路由器间链路状态数据库的完全同步.根据接口数和网络数,可能需要不止一个数据库描述包,来传输整个链路状态数据库。在交换过程中,所涉及到的路由器要建立主从关系。主路由器发送本路由器的数据库描述包,而从路由器通过使用主路由器发送来的数据库描述序列号认可所接收到的数据库描述包,并将本路由器的LSA头部列表发送给主路由器,从而在主从路由器间判断链路状态数据库是否完全匹配,若有不匹配的LSA头部,则应发送链路状态请求报文,并以更新报文格式给予响应,获得最新LSA的全部信息。数据库描述包要封装在类型为2的OSPF报文头后面,其具体格式如下:版本号=2包类型=2包长度路由器ID区域ID校验和认证类型身份验证身份验证接口MTU选项00000IMMS数据库描述序列号LSA首部……LSA首部接口MTU:指示通过该接口可发送的最大IP包长度。当通过虚拟链路发送时,这个域设置为0。选项:显示路由器的能力,使路由器不向没有能力的邻居发送LSAs。I位:是Init位,要发送数据库序列中的第一个包,应设置为1。随后的包要设置为0.M位:若设置为1,则表示序列中还有更多的数据库描述包将要发送出去。若置为0,则表示数据库描述包已发送完毕。MS位:主从位,在数据库描述包交换期间,1表示路由器是主路由器,而0表示路由器是从路由器.数据库描述序列号:用于数据库的同步处理,确保所有的数据库描述包全部被接收到。主路由器在发送第一个数据描述包时,应将数据库描述序列号设置为一个独特的初始值,随后序列号逐渐递增.LSA首部:这是一个LSA首部列表,由本路由器的链路状态数据库的LSAs的头部组成这个LSA首部列表。这些头部有足够的信息来描述LSA和LSA的实例。链路状态请求包链路状态请求包是3型OSPF包.当两个路由器交换数据描述包的过程完成后,路由器可检测链路状态数据库部分是否有不一致或过时的LSA.此时,路由器可向邻居请求新一些的数据库描述包,以达到LSAs的完全同步。其格式为:版本号=2包类型=3包长度路由器ID区域ID校验和认证类型身份验证身份验证LS类型链路状态ID宣告路由器……LS类型链路状态ID宣告路由器LS类型:链路状态类型,有路由器LSA、网络LSA、汇总LSA、汇总LSA(ASBR)、AS-externalLSA等5种类型的LSA,分别取值1~5。链路状态ID:取值取决于LS类型,具体的取值见LSA首部定义。宣告路由器:产生LSA的路由器ID。链路状态更新包链路状态更新包是4型的OSPF包,用于实现LSA的洪泛,也用于对链路状态请求包的响应。每个链路状态更新包包含一个或多个LSA,而所发送的每个更新包要通过链路状态认可包来确认认可,未收到确认包,应对所发送的LSA定时重发,以确保洪泛过程的可靠性。具体格式如下:版本号=2包类型=4包长度路由器ID区域ID校验和认证类型身份验证身份验证LSA的个数LSAsLSA的个数:定义整个更新包中包含多少个LSA,直到OSPF包总长度达到1500字节。LSAs:由一系列LSA
组成一个列表。链路状态确认包链路状态确认包是5型OSPF包,该包可以确保LSA洪泛的可靠性。路由器从紧邻接收到LSA后,必须要用链路状态确认包给予明确的确认应答。LSA的确认是通过链路状态确认包中的LSA首部实现的.一个确认包可以同时对多个LSA进行确认.这些包发送到以下三个地址之一:多点传送地址AllDRouters、多点传送地址AllDSPFRouters、单点传送地址。具体格式如下:版本号=2包类型=5包长度路由器ID区域ID校验和认证类型身份验证身份验证LSAs的首部LSAs的首部:由一系列LSA的首部组成一个列表。4.链路状态LSA格式路由器可生成的链路状态信息有以下5种类型:类型1:路由器LSA,确定路由器的互连方式。由每个路由器产生,用来描述路由器的链路或接口的状态及费用。该LSA只能在本区域内洪泛;类型2:网络LSA,确定网络的互连方式。由DR产生,用于描述DR所连的多点访问网络和所连的路由器(包括DR自己),也在本区域内洪泛;类型3:ABR汇总LSA,用于传输已经被集成为单一网络信息的网络。由ABR路由器产生,将某区域上的汇总目的地址通告给另一个区域.事实上,ABR通过这些LSAs将自己所能到达的目的地(要汇总)通告给所连区域的各个区域内路由器InternalRouters;ABR也要将所连区域的目的地通告给骨干区域。当ABR产生汇总LSA时,同时要通告从ABR自己到目的地的费用,当ABR到目的地有多条路由时,应取费用最低的路由。同样,当ABR收到从另一ABR发来的同一条汇总LSA时,也要取费用低的LSA,将其通告给非骨干区;当路由器从ABR收到一条汇总LSA时,用简单的距离-—矢量法而不用SPF来计算本路由器到目的地的费用和路由:总费用包括本路由器到ABR的费用和LSA中所指明的费用.在ABR上,将某区域的有关目标网络通告给骨干区时,要对目标网络进行路由聚合,将一系列子网聚合成一个超网后,通告给骨干网络.聚合时,其超网的费用为子网中的最大费用。类型4:ASBR汇总LSA,用于传输已经被集成为单一网络信息的网络。也由ABR产生,与类型为3的汇总LSA相似,但本LSA是ABR将ASBR路由器主机为目的地的一个链路信息,描述本ABR到达ASBR的费用;类型5:外部路由信息AS—external—LSA,由其它协议传入的外部路由信息。由ASBR产生,将外部系统的路由信息在本系统的所有OSPF域内洪泛;每个LSA包都有一个由20个字节组成的首部,该首部用于封装LSA包.一般许多LSA在一个OSPF报文中被路由器交换,而LSA首部的功能唯一地标识每个LSA包.同时LSA首部还用于数据描述OSPF报文和链路状态确认OSPF报文中.其格式如下:链路状态时间选项链路状态类型链路状态ID宣告路由器ID链路状态序列号和校验长度在该首部中,选项、链路状态类型、链路状态ID、宣告路由器ID等字段描述LSA包的特征,而链路状态时间、链路状态序列号确定该LSA是否是最新的。链路状态时间:生成LSA的路由器将LS时域初始化为0,在洪泛过程中,每经过一个路由器,要按InfTransDelay的量增加,这个量表示传输LSA到下一个跳跃所需要的时间。当该时间达到所设定的MaxAge参数时,要撤消该LSA。选项:指示路由器的能力。目前使用的唯一一位是E位(外部指示),对存根区域,它是0,对所有其它所有区域,它是1。链路状态类型:描述LSA包的类型,取值为1~5。链路状态ID:取决于LSA包类型,具体取值如下:LS类型链路状态ID值1生成LSA的路由器ID2这个网络的DR的IP接口地址3ABR要通告的某区域内某一目标网络的IP地址4ABR要通告的某一ASBR的路由器ID5ASBR要通告的某一外部自治系统某一目标网络的IP地址宣告路由器ID:产生LSA的路由器ID。链路状态序列号:用于识别LSA包是否是一个最新包。路由器每生成一个新的LSA时,将该序列号加1。和校验:检测LSA包的正确性。长度:LSA包括其首部的长度。LSA头中的链路类型、链路状态ID和宣告路由器ID是一个LSA的唯一标志。一个LSA将有多个实例,不同的实例通过LS的序列号、LS的校验和及LS的Age字段来描述。因此,必须要决定其实例是否是最近的,这要通过检查LS的序列号、LS的校验和及LS的Age字段内容.4。1路由器链路状态宣告链路状态类型为1的LSA包是一种路由器链路状态宣告包,其链路状态ID就是路由器的OSPFID.路由器为每个有活动OSPF接口的区域生成一个路由器LSA。包含在路由器LSA中的信息是路由器接口在该区域的状态和费用,该LSA仅在本区域内传播。进入一个区域的所有路由器接口必须在一个路由器LSA中说明。在路由器LSA中,将通告路由器的各条链路或接口的状态和费用。链路状态ID就是产生该LSA的路由器ID。路由器LSA的具体格式如下:链路状态时间选项链路状态类型=1链路状态ID宣告路由器ID链路状态序列号和校验长度00000VEB0链路个数链路ID链路数据链路类型#TOS费用度量TOS0TOS度量值…….链路ID链路数据链路类型#TOS费用度量TOS0TOS度量值VEB:用于确定路由器可能有的链路的类型。V位显示路由器是虚拟链路的端点。如果路由器是ASBR,那么将设置E位;如果路由器是ABR,那么将设置B位。链路个数:可以同时携带若干个链路信息.每个链路包括链路ID、链路数据、链路类型、#TOS、费用度量、TOS、TOS度量值等信息,用于描述路由器某接口的链路信息。链路类型:有4种链路类型.链路类型将决定其它字段的取值.类型1:对等连接到另一个路由器类型2:到多点访问网络的传输网的连接类型3:到存根网的连接,某主机地址也可认为是一个特殊的存根网络,网络号即为主机地址,掩码为225.225.225。225。类型4:虚拟连接链路ID:链路ID描述路由器接口或链路所连接的对象。链路ID一般等于邻居路由器LSA头中的链路状态ID。取值及含义要取决于具体的链路类型。对链路类型1,为邻居路由器的ID。对链路类型2,为DR接口的IP地址。对链路类型3,为IP网络/子网号。对链路类型4,为邻居路由器的ID。链路数据:链路数据也将取决于具体的链路类型。如果路由器与存根网络相连,那么取值为这个网络的IP地址掩码。对其他类型的链路,则是路由器分配给该链路接口的IP地址。链路数据在生成IP路由表产生下一跳时要用。#TOS:链路服务类型号。在2328中,该TOS已不再使用。费用度量:链路的费用度量。TOS和TOS度量:IP的服务类型与服务度量值。网络链路状态宣告链路状态类型为2的LSA包是网络链路状态宣告,该LSA由DR产生和创建。一个网络LSA将通告该路由器上某一多点访问网络和所连接的路由器信息,该LSA也只能在本区域内扩散.链路状态ID标识DR到这个区域或网络的接口IP地址,费用度量不再需要,因为路由器直接连接到网络上,费用必为0。具体格式如下:链路状态时间选项链路状态类型=2链路状态ID宣告路由器ID链路状态序列号和校验长度网络掩码连接的路由器ID连接的路由器ID……连接的路由器ID网络掩码:标识该多点访问网络的网络掩码。连接的路由器:标识连接到该网络并且与DR成紧邻关系的路由器ID,包括DR本身路由器ID。所连紧邻路由器的数目可由LSA头中的长度决定。网络和ASBR汇总链路状态通告链路状态类型为3或4的LSA是网络和ASBR汇总链路状态宣告,两者都由区域边界路由器ABR生成,实现区域间目标链路的描述,它只能在同一个区域内洪泛。3型汇总LSA有IP地址目标,链路状态ID就是目标IP网络号,以描述ABR到该目标网络的费用,供其它区域的路由器计算到该汇总网络的费用(总费用应为:本路由器--——ABR----汇总的网络地址)。4型汇总LSA以一个自治系统边界路由器ASBR为其目标,而链路状态ID就是该ASBR的OSPF路由器ID,以描述ABR到ASBR之间的费用,它主要用于计算最佳的外部路由(某外部路由,对任一路由器来说,其总费用为本路由器—-—-ABR—---ASBR--——外部路由费用的和).链路状态ID是这两种类型LSA包之间的唯一区别。3型LSA还用于说明进入存根区域的默认路由,此时链路状态ID和网络掩码应设置为0.0.0。0,表示整个存根区可以通过该ABR到达外部任意路由.对于3型LSA,网络掩码就是目标网络的IP地址掩码,而对4型LSA,应该设置为0.费用度量值和路由器LSA相同,是ABR到该目标的费用.TOS和TOS度量是IP的服务类型和度量值。LSA的具体格式如下:链路状态时间选项链路状态类型=3或4链路状态ID宣告路由器ID链路状态序列号和校验长度网络掩码0费用度量值TOSTOS度量值4。4外部链路状态AS-externalLSA通告5型LSA是AS-externalLSA,由ASBR产生,它被用于说明自治系统以外的网络或路由,在整个自治系统(非存根区除外)内不加改变地洪泛,与路由器的链路状态数据库相独立地保存。链路状态ID域为目标网络的IP网络号,网络掩码为目的网络的掩码。在As-externalLSA中可以通告一条缺省路由,这时,链路状态ID为0。0。0。0,网络掩码也为0。0.0。0。E位用于指示外部路由是1型(E=0)还是2型(E=1),1型外部路由的度量值与内部OSPF路由域的度量具有相同的度量单位,2型外部路由的度量值大于内部OSPF路由域的度量。转发地址是指到达该外部目标网络的下一跳地址,一般是ASBR路由器,此时转发地址为0.0。0.0,表示将报文转发给产生该LSA的ASBR,但如果运行BGP协议得到外部路由的ASBR与另一自治系统的ASBR间的网络是一个多点访问网络,则转发地址应设置为该网络地址,这样可省略ASBR这个中间一跳.在该LSA中,由产生该LSA的ASBR路由器负责对该外部路由做上标志tag,以便在ASBR间传送另外的附加信息。具体格式如下:链路状态时间选项链路状态类型=5链路状态ID宣告路由器ID链路状态序列号和校验长度网络掩码E0000000费用度量值转发地址外部路由标志ETOSTOS度量值转发地址外部路由标志……5.链路状态数据库对路由器有活动接口的所有区域,路由器将维护每个区域各自的链路状态数据。在一个区域有接口的每个路由器,都有一个该区域同等的链路状态数据库。对每个区域的最短路径树的计算,分别由每个路由器以自己为树根进行。一个区域的链路状态数据库中的路由器LSA和网络LSA仅通过该区域传播。这个区域的链路状态数据库由路由器LSA、网络LSA及3型、4型汇总LSA(汇总LSA包含在区域数据结构中)组成.如果这个区域不是存根区,数据库还将包括外部路由信息AS—externalLSA。在数据库的查找过程中,是通过链路类型、链路状态ID和宣告路由器ID这3个特征值来查找的.当在传播过程中,路由器接收到一个LSA时,或路由器初始化LSA时,路由器将LSA增加到数据库中。当路由器接收到一个较新的LSA时,路由器生成一个新LSA时,或者LSA过于陈旧时,路由器将把LSA从数据库中删除。从路由器的数据库中删除任何LSA,也将从每个邻居的再传输列表中删除.每个区域都有一份相同的LSA,由LSA可以计算每个路由器将首创一个路由器LSA。如果路由器是DR,则路由器将为它是DR的网络生成一个网络LSA。ABR路由器将为区域间路由生成汇总LSA,而ASBR路由器将为外部路由生成AS—externalLSA。以下10个事件将触发产生新的LSA:当路由器首创的LSA的时限域到达值LSRefreshTime;路由器接口的状态发生改变。路由器ID是分配给路由器的最高IP地址,或分配给路由器的最高回送IP地址。如果具有最高IP地址的接口失败,那么路由器ID必须改变.网络的DR变化。邻居路由器变化为完全状态或不完全状态。区域内路由被增加、删除或修改。区域间路由被增加、删除或修改。路由器使一个接口在某区域内成为活动的.路由器的虚拟链路变化。外部路由变化。ASBR的路由器不再是ASBR。路由器将接收到的LSA保存在链路状态数据库中成为LSAs,由LSAs计算本路由器到各目的地的最短路径。每条LSA都有寿命Age,当达到MaxAge时,将从数据库中清除。因此,产生LSA的路由器每隔LSRefreshTime要对该LSA重新产生一个实例,并重新进行洪泛。为提高效率,某条LSA在刷新时并不立即洪泛,而是等待一个同步时间,将需要重新洪泛的LSA一并洪泛.6.指定路由器的选取在广播型网络上,需要选取DR和BDR。DR具有如下两个职责:代表该广播网络和网络上的其余路由器,由其发布该网络LSA;管理该网络上的扩散过程,网络上的所有路由器只有和DR之间有紧邻关系,在这种紧邻关系上实现LSA的洪泛,各路由器之间不能直接交互LSA;DR的选取是被接口的状态机所驱动(在接口状态迁移图中描述).一般来说,一个路由器接口被激活后,要检查该接口网络是否已经存在DR,如果已经存在DR,则不管本路由器的优先权有多大,也要接受原先所确定的DR,这样可以避免太多的变化,若还不存在DR,则如果本路由器在该网络具有最高优先权的话,它将成为DR。DR被选取后,该网络可抽象为以DR为中心的一点对多点的网络拓扑,只有在DR和其他路由器之间建立紧邻关系,发送LSA报文。必须要注意,一个路由器在某一网络接口上是DR,但在另一网络接口上可能不是DR,因此,DR是一个接口特性,并不是一个完整路由器。为保证系统的稳定可靠,除DR外,还要选取一个BDR,并在BDR与其他路由器之间也要建立紧邻关系,一旦DR失效,BDR立即替代DR,描述本网络及所有路由器的链路状态。起始时,DR和BDR均设置为0.0。0。0,表示DR和BDR没有被选取。路由器将在与自己具有双向邻居关系的邻居列表(要将本路由器看成是邻居列表中的一个邻居路由器,作为DR、BDR的侯选者)中,检查由Hello报文所宣告的各邻居路由器的优先级、DR、BDR来选取新的DR和BDR.在选取过程中,要排除任何优先级为0的邻居路由器,说明这样的路由器不符合成为DR或BDR的条件。然后,从符合条件的邻居路由器(具有非0优先级、和本路由器具有双向邻居关系)中运行如下算法:记录当前的DR和BDR,以在算法中进行比较;计算选取新的BDR;只有那些没有被Hello报文宣告为DR的路由器才有可能成为BDR.如果有一个或多个路由器被Hello报文宣告为BDR但又不是DR,则从这些被宣告为BDR的路由器中选择具有最高优先级的路由器作为BDR,在选取过程中,如果有相等优先级的路由器,那么,从中选择一个具有最大路由器ID的路由器作为BDR。如果没有一个路由器被宣告为BDR,则从所有的邻居路由器中(被宣告为DR的路由器仍然除外)选择具有最高优先级的路由器作为BDR,在选取过程中,如果有相等优先级的路由器,那么,也要从中选择一个具有最大路由器ID的路由器作为BDR。计算新的DR;如果有一个或多个路由器被Hello报文宣告为DR,则选择其中具有最高优先级的路由器作为DR,如果优先级相等,则选择具有最大路由器ID的路由器将作为DR.如果没有一个路由器被宣告为DR,则将新选出来的BDR作为DR。如果某个路由器新变成DR或BDR,或者某路由器不再成为DR或BDR,则要重复步骤2和步骤3,然后再到步骤5。例如某路由器成为DR后,在重复步骤2时,它就不能作为BDR.这样可以保证某路由器不被同时选为DR和BDR。按照计算结果,本路由器有可能成为DR或BDR,若这样,它将承担相应的职责,并设置相应的接口状态。如果本路由器成为DR,则接口状态为DR;如本路由器成为BDR,则接口状态为BDR;对其它情况,则接口状态为DROther。如果是NBMA网络,并且本路由器成为DR或BDR,则必须开始发送Hello报文给不符合成为DR条件的邻居路由器。如果以上计算导致DR或BDR发生改变,则这个接口上的紧邻关系也需要加以更改。一些紧邻关系需要形成,另一些紧邻关系需要解除。为此,为所有邻居状态在2-Way以上的邻居产生一个AdjOk?事件,这样,可以触发对紧邻关系合法性的检查。DR、BDR的选取之所以这么复杂,主要是为在DR失效时,BDR可以平滑的变为DR。简单说来,当OSPF路由器成为活动态并发现其邻居后,需要检查活动的DR和BDR。如果存在DR或BDR,则接受他们.如果没有BDR,则需要选取具有最高优先权的路由器为BDR,如果优先权相同,则选取具有最高路由器ID的路由器为BDR。如果没有DR,则将BDR选为DR,并重选BDR。值得注意的是,优先权影响DR和BDR的选取,但不能控制已经活动的DR、BDR,也就是说在DR、BDR选举出来后,具有更高优先权的邻居路由器不能再成为DR或BDR,最初的DR、BDR始终将有效。一旦DR、BDR选举出来,DR和其他路由器DROthers将建立紧邻关系。但各路由器的Hello报文仍然采用多播地址AllSPFRouters(224。0。0。5)发送,以跟踪邻居关系。其他路由器DROthers发送更新报文时应以多播地址AllDRRouters(224。0.0。6)发送,只有DR和BDR监听并接收该地址的报文,而DR发送更新报文时应以多播地址AllSPFRouters(224.0。0.5)发送,使所有其他路由器DROthers都能接收到,而不是向每个紧邻单独发送更新报文,这样可以提高效率。7。OSPF接口7。1OSPF接口数据OSPF协议主要关心链路和链路状态。在发送Hello报文、形成紧邻关系、发送LSA通告之前,必须要了解本身的接口状态及参数。OSPF路由器用自身的接口数据来构造Hello报文,通过发送Hello报文,将本接口的信息发送给邻居.的接口状态主要包括以下参数:IPAddressandMask:接口的IP地址及掩码,从该接口上发送OSPF报文时应将它作为IP的源地址。AreaID:接口及所连网络所属的OSPF区域ID。从该接口发送OSPF报文的区域ID。RouterID:作为宣告OSPF报文的路由器ID。NetworkType:接口所连网络的网络类型,有点对点、广播、NBMA、一点对多点、虚拟链路等网络。Cost:从本接口发送报文的费用,影响LSA中的metric。InfTransDelay:LSA通告离开该接口的延时时间,每个LSA离开该接口时,要在其寿命域加上该时间。State:接口所处的状态,是有限状态机中的某一状态.RouterPriority:路由器在该接口上的优先级。在多点访问网络上将影响到DR、BDR的选取。DesignatedRouter:在多点访问网络上,需要选取一个DR来描述该网络的状态。一个DR需要用其路由器ID和该路由器在该接口的IP地址表示.DR和该网络上的其它路由器构成紧邻关系,DR用网络LSA来通告该网络的状态,在网络LSA中将标识该DR的接口IP地址作为链路状态ID。BackupDesignatedRouter:在多点访问网络上,需要选取一个BDR,作为备用DR来描述该网络的状态。一个BDR需要用其路由器ID和该路由器在该接口的IP地址表示。BDR与该网络上的其他路由器构成紧邻关系。HelloInterval:在该接口上发送Hello报文的时间间隔。RouterDeadInterval:在该时间间隔内应该从该接口接收到由邻居发来的Hello报文,若在此时间内,未从邻居收到Hello报文,则可认为邻居已处于非活动状态。WaitTimer:在选取DR、BDR之前,等待邻居在Hello报文中宣告DR、BDR的时间间隔.RxmtInterval:在发送数据描述包和链路状态请求包时未能收到OSPF确认包,需要重新发送这些OSPF报文的时间间隔。HelloTimer:设置HelloInterval的一个定时器,当时间到达时,应在该接口上发送一个Hello报文。neighboringRouters:有效邻居路由器列表,由Hello报文产生该邻居列表。紧邻关系要从该邻居列表中产生.AuType:安全鉴权类型.AuthenticationKey:安全鉴权值.OSPF接口状态机OSPF接口在完全有效之前,将经历一系列状态,包括Down、Point-to-Point、Waiting、DR、Backup、Drother、LoopBack等7种状态.Down:是接口的初始状态。此时接口不能使用,所有的接口参数被设置为初始值,在接口上既不能发送也不能接收各种协议包。Point-to—Point:该接口状态仅适用于点对点、一点对多点和虚拟链路的网络类型.当接口状态迁移到该状态时,该接口已完全有效,可以间隔发送Hello报文,并和另一端的邻居开始试图建立紧邻关系.Waiting:该接口状态仅适用于广播网络和NBMA网络类型。在该状态下,路由器将通过Hello报文选取DR、BDR.为此,当接口迁移到该状态时,将发送和接收Hello报文,设置等待时间。只有在该状态下路由器试图识别DR和BDR,这样可以避免DR、BDR的太多变化。DR:仅适用于广播和NBMA网络,在该状态下,本路由器在该接口及所连网络上是DR,试图和该接口网络上的其他路由器建立紧邻关系。将由本路由器产生网络LSA,该网络LSA包括网络所连的所有路由器(包括DR自己)。Backup:仅适用于广播和NBMA网络,在该状态下,路由器在该接口及所连网络上是BDR,在DR失效时,它将提升为DR.它也试图和该接口网络上的其他路由器建立紧邻关系.它在洪泛过程中与DR的作用过程有所不同.DRother:仅适用于广播和NBMA网络,在该状态下,路由器在该接口及所连网络上既不是DR也不是BDR。它将和DR、BDR形成紧邻关系,并且跟踪网络上的邻居关系。Loopback:在该状态下,接口被软件或硬件环回。在该接口上不能发送报文,但在路由器LSA中仍然能通告接口的IP地址,使测试包能够发现其接口地址。IE3IE1IE3IE1PointtoPointWaitingBackupDRDRotherLoopbackDownDR/BDRElectionIE2IE1IE2IE5IE6IE8IE10IE3IE3IE4IE2IE2IE2IE7IE10IE10IE9IE3IE3IE3在状态迁移过程中,需要有以下事件来触发各状态的迁移:IE1(InterfaceUp):底层协议指示网络接口可以使用,对点对点、一点对多点、虚拟链路等网络类型,进入Point-to-Point状态,对广播网络、NBMA网络等多点访问网络类型,进入Waiting状态。IE2(InterfaceDwon):底层协议指示网络接口不能使用,进入Down状态。IE3(LoopInd):网络管理员或底层协议指示网络接口被环回,进入Loopback状态。IE4(UnLoopInd):网络管理员或底层协议指示网络接口环回被撤消,进入Down状态。IE5(BackupSeen):检测到或未检测到BDR的存在。从邻居收到一个Hello报文后,若本路由器和邻居已具有双向通信能力,即在Hello报文中能看到自己,则可以用两种方法判断是否是BackupSeen:a)从邻居收到一个Hello报文,在报文中该邻居被宣告为BDR;b)从邻居收到一个Hello报文,在报文中该邻居被宣告为DR并指示无BDR存在。若符合其中某一条件,则进入DR、BDR选取状态。IE6(WaitTimer):等待DR、BDR时间到,进入DR、BDR选取状态。IE7:本路由器被选择为该接口网络的DR,进入DR状态。IE8:本路由器被选择为该接口网络的BDR,进入BDR状态。IE9:本路由器既没有被选择为该接口网络的DR,也没有成为BDR,进入DRother状态.IE10(NeighborChange):在该网络接口上,有效的双向邻居关系发生变化,将重新进行DR、BDR的选取:1)和一个新邻居建立了双向通信,也就是说产生了一个新邻居,其邻居状态迁移到2-Way状态以上;2)和一个邻居的双向通信已失效,也就是说邻居状态迁移到Init以下状态;3)从一个双向邻居收到一个Hello报文,并指示自己成为新的DR或BDR;4)从DR路由器收到一个Hello报文,并指示它不再是DR;5)从BDR路由器收到一个Hello报文,并指示它不再是BDR;6)从一个双向邻居处收到一个Hello报文,其优先级发生变化;7)RouterDeadInterval时间已到,但不能从DR或BDR或两者的路由器收到Hello报文.当接口状态发生变化时,有可能需要产生新的路由器LSA(见RFC2178Section12。4),也有可能需要对邻居状态作出行动(Section10.3),改变邻居状态.8.OSPF邻居在OSPF的接口上,需要确定其邻居.确定邻居的目的是要和邻居建立一种紧邻关系,最终在紧邻间传送路由信息。建立紧邻关系,需要经过以下几个步骤:发现邻居;双向通信.在Hello报文中,两邻居都能在邻居列表中发现对方的路由器ID。数据库同步。邻居间相互交换数据库描述、链路状态请求、链路状态更新报文,以确保两邻居具有相同的链路状态数据库。为达到该目的,一个邻居为Master,另一邻居为Slave,由Master控制数据库描述的交换.构成紧邻关系.邻居关系的建立和维持要通过相互交换Hello报文来实现。在点对点或广播型网络上,Hello报文是发向多播地址AllSPFRouters(224。0。0.5),在NBMA、一点对多点、虚拟链路等网络上,Hello报文是发向一个具体的目标地址,是单播方式。邻居数据结构从本路由器接口上接收到Hello报文后,要将报文中所携带的有关邻居路由器的信息保存下来,形成邻居数据库。具体包括以下内容:NeighborID:邻居路由器ID。NeighborIPAddress:连接在该网络上的邻居接口的IP地址,在接收到Hello报文时获取得到.当OSPF报文单播给邻居时,该地址即是目的地址。AreaID:邻居接口所在的区域ID,若要构成邻居,区域ID必须相同。Interface:指示邻居被本路由器的哪个接口相连。NeighborPriority:邻居的优先级,由Hello报文携带。State:邻居在有限状态机中处于什么状态.InactivityTimer:未能从邻居接收Hello报文的时间定时器。PollInterval:专门用于NBMA类型的网络。因为在该网络中,邻居不能自动发现,邻居状态如果Down,则需要每隔PollInterval时间(比HelloInterval长)发送一个Hello报文。NeighborOptions:邻居对OSPF兼容能力的选项,在DD报文交换中获得,也列于hello报文中,在Hello报文中携带该信息。Neighbor’sDesignatedRouter:邻居所选取的DR,如邻居自己就是DR,则将影响对DR的计算.它用该网络上的接口IP地址表示。由Hello报文的DR域携带。Neighbor’sBackupDesignatedRouter:同DR;Master/Slave:Master/Slave关系,在ExStart状态时与邻居进行协商,确定哪个邻居控制数据库同步.DDSequenceNumber:当前正在发送给邻居的数据库描述DD报文的序列号。LastReceivedDatabaseDescriptionPacket:上次从邻居接收到的数据库描述DD报文选项中的Initilize(I)、More(M)、Master(MS)和DD序列号,这些信息用于决定下一个DD报文是否是该报文的一个复制报文。LinkStateRetransmissionList:已经洪泛给紧邻,但未从紧邻接收到确认报文的LSAs列表,这些LSA列表每隔RxmtInterval间隔(接口数据中已定义)要重发一次,直到从紧邻收到确认或紧邻关系被破坏。DatabaseSummaryList:在数据库同步过程中,要以数据库描述DD报文形式发送给邻居的LSAs列表(从链路状态数据库中产生的LSAs头部).在路由器处于交换状态时,这些LSAs构成链路状态数据库.LinkStateRequestList:链路状态请求列表,它们反映了需要从邻居接收到的LSAs,以同步两邻居之间的链路状态数据库.这张列表是在从邻居接收到的数据库描述DD报文中产生,并以链路状态请求报文发送给邻居。当从邻居接收到Update报文时,这些请求列表将逐步消灭。邻居状态机一个OSPF路由器在邻居成为紧邻之前,将在一些状态之间迁移其邻居状态.邻居状态有以下几种:Down:邻居会话的初始状态,指示在前一个RouterDeadInterval未能收到Hello报文,此时不能向邻居发送Hello报文,除非这些邻居在NBMA网络上(Hello报文以PollInterval间隔发送),如果邻居从其他较高的状态迁移到Down状态,则应将LinkStateRetransmissionList、DatabaseSummaryList、LinkStateRequestList等邻居数据清除。Attempt:该状态仅适用于NBMA网络上的邻居,这些邻居是由手工配置的。当与邻居所连的接口首次被激活且邻居被合法选为DR或者本路由器成为DR或BDR时,邻居状态将被迁移到该状态。此时,路由器将以HelloInterval间隔向邻居发送Hello报文。Init:该状态指示在前一个RouterDeadInterval已从邻居收到Hello报文,但在Hello报文中未能看到本路由器ID,和邻居的双向通信还未建立。在该状态及以上状态,本路由器可以在Hello报文的邻居列表域中将所看到的邻居以Hello包的形式发送出去。2-Way:该状态说明路由器接收到邻居发送来的Hello报文,并在Hello报文的邻居域中发现本路由器ID,双向通信已建立。对于多点访问网络,必须在该状态或以上状态,邻居才能被选为DR或BDR。在Init状态若能从邻居收到数据库描述DD报文,也能迁移到2—Way状态。ExStart:该状态是两邻居间建立紧邻关系的第一步。在该状态下,路由器和其邻居建立Master/Slave关系,协商DD报文的初始序列号以准备交换数据库描述报文。具有高的接口IP地址将成为Master.Exchange:在该状态下,将本路由器上的全部链路状态以DD报文方式发送给邻居。一次只能发送一个DD报文,因此可能要发送多个DD报文.每个DD报文都有一个序列号,并应得到明确的确认.在该状态下,也可向邻居发送链路状态请求报文,以向邻居请求最新的LSAs。在该状态或以上状态的所有紧邻将被用于洪泛过程,事实上,这些紧邻将完全可以发送和接收所有OSPF协议包。Loading:在该状态下,路由器将向邻居发送链路请求包,以获取更新的LSAs。这些LSAs在Exchange状态下发现,但还未接收到。Full:在该状态下,两邻居路由器完全是紧邻关系。这种紧邻关系将体现在路由器LSAs和网络LSAs中。DownAttemptExchangeLoadingDownAttemptExchangeLoadingFull2-WayExStartInitDP1DP2IE1IE2IE2IE8IE7IE6IE5IE4IE11IE11IE10IE9IE4下图详细描述了邻居状态从Down到Init的过程,并表明各种状态在IE3事件触发下都将直接迁移到Down状态。在2—way、ExStart、Exchange、Loading、Full等状态下可以接收Hello报文。ExchangeExchangeAttemptDownLoading2-WayFullInitExstartIE3IE3IE3IE3IE3IE3IE3IE4IE1IE2IE2下图是邻居状态从Init迁移到Full的详细过程:ExchangeExchangeLoadingFull2-WayExStartInitDP1DP2IE7IE5IE4IE8IE9IE10IE6IE11IE13IE11DP3DP3DP3DP3IE16IE16IE16IE16IE15IE15IE15IE15IE14IE14IE14IE14IE12IE12IE12IE13IE13IE13IE13邻居状态迁移需要有以下外部事件:IE1(Start):该事件仅发生在NBMA网络邻居上,由以下两种情形触发:与NBMA网络相连的接口首次成为活动口,邻居可以选取为DR;路由器可以成为DR或BDR,但邻居不能选为DR。IE2(HelloRecived):从邻居接收到一个有效的Hello报文。IE3(KillNbr,InactivityTimer,LLDown):邻居不再可达。这种不可达性可以由底层协议指示、OSPF进程本身明确指示、接口活动定时器到达指示。IE4(2-WayRecived):路由器首次从邻居发送来的Hello报文所携带的邻居列表中发现本路由器ID,或者从邻居接收到数据库描述报文DD。IE5:邻居不成为紧邻。IE6:该事件有以下两种情形:邻居状态首次迁移到2-Way状态接口状态发生变化IE7:和邻居应该形成紧邻关系.IE8(negotiationDone):Master/Slave关系建立,DD报文的序列号被交换。IE9(ExChangeDone):数据库描述包DD已交换完毕。IE10:存在链路状态请求条目。IE11(LoadingDone):不存在链路状态请求条目。IE12:紧邻关系应该被解除,然后重新开始.触发这个事件的情形如下:接收到一个非期待的DD序列号的数据库描述报文(SeqNumberMismatch);接收到的DD报文的选项不同于上次收到的DD报文中的选项(SeqNumberMismatch);接收到的DD报文不是第一个报文,但Init(I)位被置为1(SeqNumberMismatch);接收到一个链路请求报文,但在数据库中不存在该链路状态LSA(BadLSSeq);IE13(1-Way):从邻居收到Hello报文,但在Hello报文的邻居列表中未能发现本路由器ID。IE14(AdjOK?):本路由器接口状态发生变化.IE15:当前存在或正在形成的紧邻应该继续。IE16:当前存在或正在形成的紧邻不应该继续.在邻居状态迁移过程中,要作一些决策:DP1:和邻居间应该建立紧邻关系吗?若遇到以下某一情形或几个情形,应和邻居形成紧邻关系。网络类型是点对点网络类型是一点对多点网络类型是虚拟链路本路由器是邻居所在网络的DR本路由器是邻居所在网络的BDR邻居是DR邻居是BDRDP2:对邻居的链路请求列表为空吗?DP3:当前和邻居正在形成的紧邻关系继续吗?当邻居状态发生变化时,要重新选取DR、BDR。9.建立紧邻关系在点对点、一点对多点、虚拟链路等网络上的邻居总是能够成为紧邻的,除非彼此的Hello报文中的参数不同.在广播网络或NBMA网络上,只有DR、BDR和其它DRother邻居之间才能构成紧邻关系。在紧邻关系的建立过程中,要用到以下3种OSPF报文:数据库描述报文DD;链路状态请求报文;链路状态响应报文。当OSPF接口允许时,在该接口上将传输呼叫包.当从邻居接收到一个呼叫包时,但本路由器没有出现在邻居列表时,接口进入Init状态.处于这种状态时,连接到网络上的所有接口应包含在这张邻居列表中,当路由器看到自身的接口列在邻居列表中时,进入2—Way双向状态。处于双向或更高状态时,选取DR和BDR。当符合某种条件时(参见邻居状态迁移图),进入ExStart状态,开始交换链路状态信息.在这个状态,路由器要决定谁是主,谁是从,以及初始数据库描述序列号是什么,在协商过程,最终由主路由器决定DD报文的序列号,由此来同步LSA数据库。然后进入交换状态Exchange,路由器将发送数据库描述包DD给邻居路由器。发送完DD报文后,若没有链路状态请求报文,则进入Full状态。否则,进入Loading装载状态,发送链路状态请求报文.收到链路请求报文后,给邻居发送此请求的更新报文。若从邻居收到发送来的更新报文,对所有请求报文作出响应后,路由器也将进入Full状态。最终,双方都进入Full状态,形成紧邻关系。紧邻关系形成后,两路由器仍然相互周期性地发送Hello报文,以检测邻居是否仍然正常工作。数据库描述报文DD对紧邻形成过程具有重要意义。这些报文对源路由器链路状态数据库中的各条LSA,都携带着它的概要描述。这些描述不是LSA的全部特性,而仅是LSA的头部,该头部对接收路由器(邻居)来说,具有足够的信息决定它是否是自身链路状态数据库中LSA的拷贝.另外,DD报文选项中的3个特性比特决定着紧邻关系的形成过程:Init(I)比特,当置位时,说明是第一个DD报文;More(M)比特,当置位时,说明这不是最后一个DD报文;MS—bit主/从比特,主路由器发送DD报文时应置位。在ExStart状态开始主从路由器的协商,并确定交换数据库DD报文的序列号。刚开始时,发送一个空的DD报文(无任何LSA头部)给邻居,若还未从邻居接收到Hello报文,可以暂时将MS-bit位设置为1,将自己声称为主路由器,而将DD报文的序列号根据自身路由器的情况设置为一个合适的初始值。通过这样两个DD报文的协商,路由器ID较低的路由器将是从路由器,以后发送的DD报文中的MS—bit将设置为0,DD序列号也要设置为主路由器所给出的序列号。DD报文是邻居间以概括LSA方式扩散的第一个报文。当主从关系协商完毕,邻居状态进入Exchange状态。在Exchange状态,邻居间通过对各自链路状态数据库中所有LSA条目的描述来同步其链路状态数据库。DatabaseSummaryList是从链路状态数据库中产生出来的LSAs的头部,DD报文将以这些LSAs的头部发送给邻居。在数据库同步过程中,任一路由器若从邻居发送来的DD报文中发现邻居的一个LSA在本路由器的数据库中不存在或者邻居有一条更加新的LSA时,则应将该LSA放入链路请求队列LinkStateRequestList中。然后给邻居发送链路请求包以获取完整的LSA,邻居收到链路请求后,以Update更新报文方式来响应该LSA的请求.当收到LSA的响应报文后,将该请求条目从链路请求队列LinkStateRequestList中清除出去,并向邻居发送一个确认包,以对该LSA更新报文作出确认应答?.所有以Update更新方式所发送的报文必须逐一得到确认应答,发送出去的LSAs将加入到LinkStateRetransmissionList队列中,当被确认应答后,该LSA将从该队列中清除出去,否则,每隔一个RxmtInterval时间要重发该LSA.对LSA更新报文的确认应答有以下2种方式:显式确认:收到包含该LSA头的链路状态确认包隐式确认:收到一个完全相同的LSA更新报文主路由器将控制数据库的同步过程,并确保一次只能完成一个DD报文的同步(由主路由器控制DD报文的序列号,且必须在前一个DD报文得到确认应答后才能向从路由器发送下一个DD报文).当从路由器从主路由器收到一个DD报文后,从路由器将以相同的序列号给主路由器发送一个DD报文(可以看作为对主路由器发来的DD报文的一个确认应答).如果主路由器在RxmtInterval时间(在接口数据中定义的)内未能收到从路由器发送来的DD报文(序列号必须是主路由器上次发送出去的DD报文序列号),则应向从路由器再次重发该DD报文.从路由器发送DD报文给主路由器,可以认为只是对主路由器发来的DD报文的一种确认应答(当然在该DD报文中可携带本路由器上的链路状态数据LSAs的头部)。如果接收到的DD报文具有新的DD序列号(说明前一次应答的DD报文已被主路由器收到),则从路由器可以用这个新的序列号给主路由器发送一个新的DD报文。如果接收到的DD报文和前一次应答的DD报文序列号相同(说明前一次应答的DD报文未被主路由器收到),则从路由器应给主路由器重新发送上次的确认应答报文DD.当主路由器将自己的链路状态数据库的DD报文全部发送给从路由器后,并且从从路由器接收到的DD报文已标识M-bit为0,主路由器知道数据库同步已完成(当然要收到最后一个DD报文的确认应答报文)。当从路由器从主路由器接收到的DD报文已标识M-bit为0,并且自己的链路状态数据库的DD报文已全部应答给主路由器,将最后一个应答包DD报文中的M—bit设置为0后,从路由器也知道数据库同步已完成。由于从路由器必须要对接收到的每个DD报文给出确认应答(最后一个确认应答报文是否被主路由器收到,从路由器不用关心,主路由器自然会关心能否收到该报文,若收不到,主路由器会重新发送前一次的DD报文,从路由器还会再次作出确认应答),而主路由器必须要等待最后一个DD报文的确认应答报文,因此,从路由器总是最先知道数据库的同步过程是否已经结束.当数据库同步过程结束后(由More(M)比特标识),路由器将迁移到以下某一状态:若有链路状态请求报文,即在DD报文同步过程中,在LinkStateRequestList中产生了链路状态请求报文,则进入Loading状态;若没有链路状态请求报文,即在DD报文同步过程中,在LinkStateRequestList中没有产生链路状态请求报文,则进入Full状态;若进入Loading状态,则应按照LinkStateRequestList中的条目向邻居发送链路状态请求报文,由邻居对该请求作出响应,以Update报文格式将该LSA的全部信息发送给请求邻居。当请求邻居收到LSA的响应报文后,清除该请求条目。当所有请求条目都被响应后,路由器将进入Full状态。RT1RT2RT1RT2DownDownHello(DR=0.0.0.0,NeighborsSeen=0)Hello(DR=RT2,NeighborsSeen=RT1)InitExstartDD(Seq=x,I=1,M=1,MS=1)ExstartDD(Seq=y,I=1,M=1,MS=1)DD(Seq=y,I=0,M=1,MS=0)Exchange(Slave)Exchange(Master)DD(Seq=y+1,I=0,M=1,MS=1)DD(Seq=y+1,I=0,M=1,MS=0)…….…….……DD(Seq=y+n,I=0,M=0,MS=1)DD(Seq=y+n,I=0,M=0,MS=0)LoadingLSRequestLSUpdateLSRequestLSUpdateFullFull值得注意的是,链路请求与链路响应报文的处理不一定非要在数据库同步结束后进行,也可以在数据库同步过程中处理,一旦出现链路状态请求,立即进行处理。这样,在数据库同步结束后,两路由器将全部进入Full状态。10.洪泛过程概论OSPF路由域的拓扑结构可以用链路状态数据库来描述,拓扑结构的变化将反映在LSAs的变化上。洪泛过程就是将这些变化的LSAs或新的LSAs在整个网络中进行传送,确保每个节点的数据库被更新,并在各个节点上保持一致。洪泛过程将用以下两种OSPF报文来实现:更新报文UpdatePackets确认报文AcknowledgementPackets以上两种报文只在紧邻间发送与接收。一条变化的或新的LSA首先通告给其紧邻,由紧邻继续向其它紧邻扩散,最终达到向整个网络的所有节点扩散。在点对点的网络,更新报文将以多播地址AllSPFRouters(224。0.0.5)发送给紧邻。在一点对多点的网络和虚拟链路上,将以紧邻接口的单播地址来发送更新报文。在广播网络上,只有在DRothers(包括BDR?)和DR、BDR之间形成紧邻关系。DRothers路由器发送更新报文时,以DRouters(224。0。0。6)发送给其紧邻DR和BDR,只有DR才能接收并可继续洪泛给另外的DRothers(BDR只能接收下来,不能在该接口上作进一步洪泛)。DR路由器以AllSPFRouters这个多播地址将更新报文发送给网络上的其它所有的DRothers。BDR可以从DRothers接收到更新报文,但不能将其在该网络接口上继续洪泛,除非DR失效,它将代替DR。在NBMA网络上,DR、BDR有类似功能,但是DRothers要以单播地址向DR和BDR发送更新报文,DR也要以单播地址向DROthers发送更新报文。要保证各个节点具有相同的链路状态数据库,洪泛过程必须可靠。发送LSAs的路由器必须确保LSAs被紧邻接收,接收路由器必须知道接收到的LSAs是正确的。洪泛的正确性可以由以下几种方法来保证:隐式应答紧邻可以将接收到的LSA以副本方式发给原路由器.这种情况可能刚好要向原路由器发送LSAs。显式应答当从紧邻接收到一个LSA时,应以链路状态确认应答报文进行应答。一个应答报文可以对多个LSAs同时进行应答.应答包中仅携带LSA的头部(信息已足够了),不需要完整的LSA。当路由器向某紧邻首次发送一个LSA时,要将该LSA放入该紧邻的LinkStateRetransmissionList中,这个LSA要每隔RxmtInterval时间重发一次,直到被紧邻应答或紧邻断裂。重发报文应以单播方式发送,不管网络类型如何.延时应答应答报文可以延时应答,也可以直接应答。延时应答可以将许多LSAs的应答包含在一个应答包中.在广播网络上,从各紧邻收到LSAs后,可以用一个应答报文在多播地址上发送应答包。延时的时间不能大于RxmtInterval时间,以免产生不必要的重发。在一般情况下,在各种网络上发送应答报文的目的地址和发送更新报文的目的地址处理方法相同.直接应答直接发送应答报文总是以单播方式发送。当遇到下列情况时,应立即应答:接收到了一个重复的LSA,上一次的应答可能丢失,应给紧邻立即应答;接收到的LSA中的Age已经达到MaxAge,且本路由器又没有该LSA的实例。Sequenceing,Checksums,Aging每个LSA都包含以上3项值,以确保链路状态数据库中的LSA是最新的LSA。LSA序列号取值范围为InitialSequenceNumber(0x80000001)~MaxSequenceNumber(0x7fffffff).当路由器刚产生一条LSA时,其序列号为InitialSequenceNumber,路由器每次产生LSA的一个新实例时,路由器将该LSA的序列号增加1.如果LSA的序列号达到MaxSequenceNumber,必须要产生该LSA的一个新实例。路由器必须要从所有数据库中删除该LSA。这种方法可以这样实现:将该LSA的Age设置为MaxAge,并向所有紧邻洪泛。一旦所有紧邻对该过时的LSA作出了应答,序列号为InitialSequenceNumber新的LSA的实例将被洪泛。LSA校验和为区分新旧LSA增加了一种手段。和校验是对整个LSA(除Age字段,以免在中途路由器上由于Age的变化,要重新计算校验和)。对链路状态数据库中的每一个LSA要每隔5分钟做一次和校验,以确保数据库中的LSA是正确的.Age是LSA的一个寿命,其范围在0~3600秒之间.当路由器产生一条LSA时,路由器将其Age设置为0,在洪泛过程中,每经过一个路由器,将增加InfTransDelay秒.当LSA保存在链路状态数据库中时,Age也要增加。当一条LSA的Age到达MaxAge时,要重新洪泛并将其清除出数据库,当需要清除出数据库时,要将Age设置为MaxAge并重新洪泛。只有产生LSA的路由器才能将Age设置为MaxAge.当同一个LSA收到多个不同的实例时,路由器通过以下方法,选择最新的LSA:比较序列号.序列号越高,越是最新的LSA;若序列号相同,则比较校验和,和越大,越是最新的LSA;如果校验和相同,则比较Age,若只有一条LSA的Age为MaxAge,则它是最新的LSA;如果Age相差超过MaxAgeDiff(15分钟),则具有小的Age的LSA是最新的;任何一条不满足,则LSA是相同的.11.OSPF区域Area一个OSPF路由域可以分解为若干区域,这样可以带来以下几个好处:同个区域内的路由器才需要具有相同的链路状态数据库,不需要在整个OSPF路由域具有相同的链路状态数据库,这样,可以减小数据库规模,减少对内存的影响;链路状态数据库越小,LSA的处理也越少,对CPU的影响也越小;链路状态数据库在同一个区域内维护,大部分洪泛过程在本区域内进行。当区域内某链路变化时,只影响本区域路由器的LSAs,而本区域的汇总路由不一定变化,因此,可能不影响其它区域。一个OSPF区域是一组共同的路由器和它们的接口。一个区域最多不能超过60个路由器,一般为25个路由器较为合适。在各个区域上,将有以下3种协议报文:在同个区域内的路由器之间的Intra—area报文;在不同区域间的Inter—area报文;外部自治系统的External报文。在区域划分时,必须要有区域0,它是作为骨干区域的,要为其它各个区域负责汇总每个区域的拓扑结构。因此,不同区域间的报文都要通过骨干区来交换,不能直接交换。非骨干区与骨干区可以由某路由器直接连接,也可以通过虚拟链路来连接。作为虚拟链路端点的两个路由器,其中一个连接着骨干区,另一个连接着非骨干区,并且两路由器都至少有一个接口连接着某个公共的区域,该公共区域是虚拟链路两端点的路由器用来传输协议报文的传送区。虚拟链路属于骨干区,协议处理虚拟链路上的两端路由器就好象处理骨干区中两个点对点的骨干网络,在骨干区的拓扑图中,就好象两个路由器被传送区内部路由费用连接着,其报文的传送要经过传送区的内部路由.存根区是不能作为虚拟链路的传送区的,不需要类型4和类型5的LSA。划分区域后,路由器将分为以下4种类型:InternalRouters:所有接口属于同一区域的路由器。这些路由器只有一个单一的链路状态数据库,实行单一的路由算法。AreaBorderRouters(ABRs):将一个或多个区域连接到骨干区域的路由器。这些路由器的作用类似区域间交换路由信息的网关。ABR至少有一个接口连接到骨干区,另外的接口可以连接到其它非骨干区,并且要为每个区域维护一个独立的链路状态数据库,因此,ABR要有较大的内存和较强的CPU处理能力.一般一个ABR所能连接的区域不超过3个。ABR要对各个区域的链路状态数据库实行独立的路由算法,并将各个区域的拓扑结构信息变成汇总路由信息给骨干区域,然后由骨干区域将这些汇总信息扩散到其它区域。为实现合理的路由汇总,要求每个区域有一组连续的IP地址空间。在区域间使用不连续的IP编址,若ABR仍然进行汇总,则将导致一个OSPF路由器错误的转发报文.BackboneRouters:至少有一个接口连接到骨干区域的路由器。AutonomousSystemBoundaryRouters(ABR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考前心理调适2025年信息系统项目管理师试题及答案
- 知识提升信息系统项目管理师试题及答案
- 长线备考西方政治考试的方案试题及答案
- 机电工程2025年外部环境试题及答案
- 西方政治制度与文化遗产保护的结合探讨试题及答案
- 政治变革中的青年参与关系试题及答案
- 网络工程中的团队协作与试题及答案
- 解析软件设计师考试问答试题及答案
- 机电工程国际技术标准试题及答案
- 2023人教版数学一年下册《认识人民币》说课稿及教学反思共三
- 纳米陶瓷喷涂施工方案范本
- 银行诉讼案件管理办法
- 危险性较大的分部分项工程专项施工方案编制指南
- 云南省昆明市成考专升本2023年医学综合真题及答案
- 生物质材料及应用淀粉
- GB/T 4223-2004废钢铁
- GB/T 36148.1-2018船舶与海上技术海上环境保护围油栏第1部分:设计要求
- GB 2811-1989安全帽
- 端子压接规范标准
- 新版《药品管理法》解读课件
- 东南大学附属中大医院ECMO操作记录单
评论
0/150
提交评论