OSPF协议概述.doc_第1页
OSPF协议概述.doc_第2页
OSPF协议概述.doc_第3页
OSPF协议概述.doc_第4页
OSPF协议概述.doc_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OSPF内容概要1概述OSPF是一个内部网关协议,用于在单一自治系统内决策路由。它是基于链路状态的路由协议,链路状态是指路由器接口或链路的参数。这些参数是接口的物理条件:包括接口是Up还是Down、接口的IP地址、分配给接口的子网掩码、接口所连的网络,以及使用路由器的网络连接的相关费用。OSPF与其他路由器交换交换信息,但所交换的不是路由,而是链路状态。OSPF路由器不是告知其他路由器可以到达哪些网络及距离是多少,而是告知它的网络链路状态,这些接口所连的网络及使用这些接口的费用。各个路由器都有其自身的链路状态,称为本地链路状态,这些本地链路状态在OSPF路由域内传播,直到所有的OSPF路由器都有完整而等同的链路状态数据库为止。一旦每个路由器都接收到所有的链路状态,每个路由器可以构造一棵树,以它自己为根,而分支表示到AS 中所有网络的最短的或费用最低的路由。OSPF对于规模巨大的网络,通常将网络划分成多个OSPF区域,并只要求路由器与同一区域的路由器交换链路状态,而在区域边界路由器上交换区域内的汇总链路状态,这样可以减少传播的信息量,且使最短路径计算强度减少。在区域划分时,必须要有一个骨干区域(即区域0),其它非0或非骨干区域与骨干区域必须要有物理或者逻辑连接。当有物理连接时,必须有一个路由器,它的一个接口在骨干区,而另一个接口在非骨干区。当非骨干区不可能与物理连接到骨干区时,必须定义一个逻辑的或虚拟链路,虚拟链路由两个端点和一个传输区来定义,其中一个端点是路由器接口,是骨干区域的一部分,另一端点也是一个路由器接口,但在与骨干区没有物理连接的非骨干区域中。传输区是一个区域,介于骨干区域与非骨干区域之间。2术语在OSPF中,经常要使用以下术语:Router ID(路由器ID):用于标识每个路由器的32位数。通常,将最高的IP地址分配给路由器ID。如果在路由器上使用了回送接口,则路由器ID是回送接口的最高IP地址,不管物理接口的IP地址。Interface (接口):路由器和具有唯一IP地址和子网掩码的网络之间的连接。Neighbor Router(相邻路由器):带有到公共网络的接口的路由器。Broadcast NetWork(广播网络):支持广播的网络。Ethernet是一个广播网络。NonBroadcast NetWork(广播网络):支持多于两个连接路由器,但没有广播能力的网络,如帧中继和X.25等网络。在非广播网络中,有非广播多点访问网络NBMA(在同一个网络上,但不能通过广播访问到)和点到多点网络。Designated Routeer (指定路由器DR):在广播和NBMA网络中,指定路由器用于向公共网络传播链路状态信息。Backup Designated Routeer (后援指定路由器DR):在DR故障时,接替DR的路由器。Area Border Router(区域边界路由器ABR):连接多个OSPF区域的路由器。Autonomous System Border Router(自治系统边界路由器ASBR):一个OSPF路由器,但它连接到另一个AS,或者在同一个AS的网络区域中,但运行不同于OSPF的IGP。Adjacency(紧邻):紧邻可以在点对点连接的两个路由器之间形成,也可在广播或NBMA网络的DR和非指定路由器之间形成,还可以在BDR和非指定路由器之间形成。OSPF路由状态信息只能通过紧邻被传送和接收。Flooding(洪泛):在OSPF区域内,扩散某一链路状态,以分布和同步路由器之间的链路状态数据库。Link-State Advertisement(链路状态宣告LSA):描述路由器的本地链路状态,通过该通告向整个OSPF区域扩散。External Routing(外部路由):从另一个AS 或另一个路由协议得知的路由可以作为外部路由放到OSPF中。有两种类型的外部路由,类型1的外部路由具有的费用包含OSPF的费用,加上从ASBR到网络的费用。类型2的外部路由具有的费用仅是ASBR到网络的费用,而内部的OSPF费用可以忽略不计。Intraarea Routing(区域内路由):在相同OSPF区域的网络之间的路由,这些路由仅依据从区域内所接收的信息。Interarea Routing(区域间路由):在两个不同的OSPF区域之间的路由。区域间的路径由三部分组成:从区域到源区域的ABR的区域内路径,从源ABR到目标ABR的骨干路径,最后是从目标ABR到目标区域的路径。Route Summarization(路由汇总):要通告的路由可能有一个区域内的路由、来自另一个AS的路由,以及从另一个路由协议得知的路由,所有这些路由可以由OSPF汇总成一个路由宣告。汇总仅可以在ABR或ASBR上发生。Stub Area(存根区):只有一个出口路径的区域。3协议包格式 IP Header ( Protocol = 89) OSPF Packet Header Packet Type-Specific DataOSPF PacketLSALSALSALSALSA LSA HeaderLSA DataOSPF Packet DataOSPF包共有5种包类型,任意一种包都需要加上OSPF的报文头,最后封装在IP中传送,一个OSPF包的最大长度为1500字节。其结构如下:OSPF协议一共使用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.1 Hello包格式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 数据库描述包 数据库描述包(Database Description packet,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.3 链路状态请求包 链路状态请求包是3型OSPF包。当两个路由器交换数据描述包的过程完成后,路由器可检测链路状态数据库部分是否有不一致或过时的LSA。此时,路由器可向邻居请求新一些的数据库描述包,以达到LSAs的完全同步。其格式为:版本号 = 2包类型 = 3包长度路由器ID区域ID校验和认证类型身份验证身份验证LS类型链路状态ID宣告路由器LS类型链路状态ID宣告路由器LS类型:链路状态类型,有路由器LSA、网络LSA、汇总LSA、汇总LSA(ASBR)、AS-external LSA等5种类型的LSA,分别取值15。链路状态ID:取值取决于LS类型,具体的取值见LSA首部定义。宣告路由器:产生LSA的路由器ID。3.4 链路状态更新包 链路状态更新包是4型的OSPF包,用于实现LSA的洪泛,也用于对链路状态请求包的响应。每个链路状态更新包包含一个或多个LSA ,而所发送的每个更新包要通过链路状态认可包来确认认可,未收到确认包,应对所发送的LSA定时重发,以确保洪泛过程的可靠性。具体格式如下:版本号 = 2包类型 = 4包长度路由器ID区域ID校验和认证类型身份验证身份验证LSA的个数LSAsLSA的个数:定义整个更新包中包含多少个LSA,直到OSPF包总长度达到1500字节。LSAs:由一系列LSA组成一个列表。3.5 链路状态确认包 链路状态确认包是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将自己所能到达的目的地(要汇总)通告给所连区域的各个区域内路由器Internal Routers;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包的类型,取值为15。链路状态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就是路由器的OSPF ID。路由器为每个有活动OSPF接口的区域生成一个路由器LSA。包含在路由器LSA中的信息是路由器接口在该区域的状态和费用,该LSA仅在本区域内传播。进入一个区域的所有路由器接口必须在一个路由器LSA中说明。在路由器LSA中,将通告路由器的各条链路或接口的状态和费用。链路状态ID就是产生该LSA的路由器ID。路由器LSA的具体格式如下:链路状态时间选项链路状态类型 = 1链路状态ID宣告路由器ID链路状态序列号和校验长度0 0 0 0 0 V E B0链路个数链路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的服务类型与服务度量值。4.2 网络链路状态宣告 链路状态类型为2的LSA 包是网络链路状态宣告,该LSA由DR产生和创建。一个网络LSA将通告该路由器上某一多点访问网络和所连接的路由器信息,该LSA也只能在本区域内扩散。链路状态ID标识DR到这个区域或网络的接口IP地址,费用度量不再需要,因为路由器直接连接到网络上,费用必为0。具体格式如下:链路状态时间选项链路状态类型 = 2链路状态ID宣告路由器ID链路状态序列号和校验长度网络掩码连接的路由器ID 连接的路由器ID连接的路由器ID网络掩码:标识该多点访问网络的网络掩码。连接的路由器:标识连接到该网络并且与DR成紧邻关系的路由器ID,包括DR本身路由器ID。所连紧邻路由器的数目可由LSA头中的长度决定。4.3 网络和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 费用度量值 TOS TOS度量值4.4 外部链路状态AS-external LSA通告 5型LSA是AS-external LSA,由ASBR产生,它被用于说明自治系统以外的网络或路由,在整个自治系统(非存根区除外)内不加改变地洪泛,与路由器的链路状态数据库相独立地保存。链路状态ID域为目标网络的IP网络号,网络掩码为目的网络的掩码。在As-external LSA中可以通告一条缺省路由,这时,链路状态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链路状态序列号和校验长度网络掩码 E 0000000 费用度量值 转发地址 外部路由标志E TOS TOS度量值 转发地址 外部路由标志 5.链路状态数据库 对路由器有活动接口的所有区域,路由器将维护每个区域各自的链路状态数据。在一个区域有接口的每个路由器,都有一个该区域同等的链路状态数据库。对每个区域的最短路径树的计算,分别由每个路由器以自己为树根进行。一个区域的链路状态数据库中的路由器LSA 和网络LSA仅通过该区域传播。这个区域的链路状态数据库由路由器LSA、网络LSA及3型、4型汇总LSA(汇总LSA包含在区域数据结构中)组成。如果这个区域不是存根区,数据库还将包括外部路由信息 AS-external LSA。在数据库的查找过程中,是通过链路类型、链路状态ID和宣告路由器ID这3个特征值来查找的。当在传播过程中,路由器接收到一个LSA时,或路由器初始化LSA时,路由器将LSA增加到数据库中。当路由器接收到一个较新的LSA时,路由器生成一个新LSA时,或者LSA过于陈旧时,路由器将把LSA从数据库中删除。从路由器的数据库中删除任何LSA,也将从每个邻居的再传输列表中删除。 每个区域都有一份相同的LSA,由LSA可以计算 每个路由器将首创一个路由器LSA。如果路由器是DR,则路由器将为它是DR 的网络生成一个网络LSA。ABR路由器将为区域间路由生成汇总LSA,而ASBR路由器将为外部路由生成AS-external LSA。以下10个事件将触发产生新的LSA:1) 当路由器首创的LSA的时限域到达值LSRefreshTime;2) 路由器接口的状态发生改变。路由器ID是分配给路由器的最高IP地址,或分配给路由器的最高回送IP地址。如果具有最高IP地址的接口失败,那么路由器ID必须改变。3) 网络的DR变化。4) 邻居路由器变化为完全状态或不完全状态。5) 区域内路由被增加、删除或修改。6) 区域间路由被增加、删除或修改。7) 路由器使一个接口在某区域内成为活动的。8) 路由器的虚拟链路变化。9) 外部路由变化。10) ASBR的路由器不再是ASBR。路由器将接收到的LSA保存在链路状态数据库中成为LSAs,由LSAs计算本路由器到各目的地的最短路径。每条LSA都有寿命Age,当达到MaxAge时,将从数据库中清除。因此,产生LSA的路由器每隔LSRefreshTime要对该LSA重新产生一个实例,并重新进行洪泛。为提高效率,某条LSA在刷新时并不立即洪泛,而是等待一个同步时间,将需要重新洪泛的LSA一并洪泛。6指定路由器的选取在广播型网络上,需要选取DR和BDR。DR具有如下两个职责:1) 代表该广播网络和网络上的其余路由器,由其发布该网络LSA;2) 管理该网络上的扩散过程,网络上的所有路由器只有和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优先级、和本路由器具有双向邻居关系)中运行如下算法:1) 记录当前的DR和BDR,以在算法中进行比较;2) 计算选取新的BDR; 只有那些没有被Hello报文宣告为DR的路由器才有可能成为BDR。 如果有一个或多个路由器被Hello报文宣告为BDR但又不是DR,则从这些被宣告为BDR的路由器中选择具有最高优先级的路由器作为BDR,在选取过程中,如果有相等优先级的路由器,那么,从中选择一个具有最大路由器ID的路由器作为BDR。 如果没有一个路由器被宣告为BDR,则从所有的邻居路由器中(被宣告为DR的路由器仍然除外)选择具有最高优先级的路由器作为BDR,在选取过程中,如果有相等优先级的路由器,那么,也要从中选择一个具有最大路由器ID的路由器作为BDR。3) 计算新的DR; 如果有一个或多个路由器被Hello报文宣告为DR,则选择其中具有最高优先级的路由器作为DR,如果优先级相等,则选择具有最大路由器ID的路由器将作为DR。如果没有一个路由器被宣告为DR,则将新选出来的BDR作为DR。4) 如果某个路由器新变成DR或BDR,或者某路由器不再成为DR或BDR,则要重复步骤2和步骤3,然后再到步骤5。例如某路由器成为DR后,在重复步骤2时,它就不能作为BDR。这样可以保证某路由器不被同时选为DR和BDR。5) 按照计算结果,本路由器有可能成为DR或BDR,若这样,它将承担相应的职责,并设置相应的接口状态。如果本路由器成为DR,则接口状态为DR;如本路由器成为BDR,则接口状态为BDR;对其它情况,则接口状态为DROther。6) 如果是NBMA网络,并且本路由器成为DR或BDR,则必须开始发送Hello报文给不符合成为DR条件的邻居路由器。7) 如果以上计算导致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.1 OSPF接口数据OSPF协议主要关心链路和链路状态。在发送Hello报文、形成紧邻关系、发送LSA通告之前,必须要了解本身的接口状态及参数。OSPF路由器用自身的接口数据来构造Hello报文,通过发送Hello报文,将本接口的信息发送给邻居。的接口状态主要包括以下参数:IP Address and Mask:接口的IP地址及掩码,从该接口上发送OSPF报文时应将它作为IP的源地址。Area ID:接口及所连网络所属的OSPF区域ID。从该接口发送OSPF报文的区域ID。Router ID:作为宣告OSPF报文的路由器ID。Network Type:接口所连网络的网络类型,有点对点、广播、NBMA、一点对多点、虚拟链路等网络。Cost:从本接口发送报文的费用,影响LSA中的metric。InfTransDelay:LSA通告离开该接口的延时时间,每个LSA离开该接口时,要在其寿命域加上该时间。State:接口所处的状态,是有限状态机中的某一状态。Router Priority:路由器在该接口上的优先级。在多点访问网络上将影响到DR、BDR的选取。Designated Router:在多点访问网络上,需要选取一个DR来描述该网络的状态。一个DR需要用其路由器ID和该路由器在该接口的IP地址表示。DR和该网络上的其它路由器构成紧邻关系,DR用网络LSA来通告该网络的状态,在网络LSA 中将标识该DR的接口IP地址作为链路状态ID。Backup Designated Router:在多点访问网络上,需要选取一个BDR,作为备用DR来描述该网络的状态。一个BDR需要用其路由器ID和该路由器在该接口的IP地址表示。BDR与该网络上的其他路由器构成紧邻关系。HelloInterval:在该接口上发送Hello报文的时间间隔。RouterDeadInterval:在该时间间隔内应该从该接口接收到由邻居发来的Hello报文,若在此时间内,未从邻居收到Hello报文,则可认为邻居已处于非活动状态。Wait Timer:在选取DR、BDR之前,等待邻居在Hello报文中宣告DR、BDR的时间间隔。RxmtInterval:在发送数据描述包和链路状态请求包时未能收到OSPF确认包,需要重新发送这些OSPF报文的时间间隔。Hello Timer:设置HelloInterval的一个定时器,当时间到达时,应在该接口上发送一个Hello报文。neighboring Routers:有效邻居路由器列表,由Hello报文产生该邻居列表。紧邻关系要从该邻居列表中产生。AuType:安全鉴权类型。Authentication Key:安全鉴权值。7.2 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地址,使测试包能够发现其接口地址。IE3IE1 Point to PointWaitingBackup DR DRotherLoopback Down DR/BDRElectionIE2IE1IE2IE5IE6IE8IE10IE3IE3IE4IE2IE2IE2IE7IE10IE10IE9IE3IE3IE3 下图揭示了在外部事件作用下OSPF接口状态的迁移过程: 在状态迁移过程中,需要有以下事件来触发各状态的迁移: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(见RFC2178 Section 12.4),也有可能需要对邻居状态作出行动(Section 10.3),改变邻居状态。 8OSPF邻居 在OSPF的接口上,需要确定其邻居。确定邻居的目的是要和邻居建立一种紧邻关系,最终在紧邻间传送路由信息。建立紧邻关系,需要经过以下几个步骤:1) 发现邻居;2) 双向通信。在Hello报文中,两邻居都能在邻居列表中发现对方的路由器ID。3) 数据库同步。邻居间相互交换数据库描述、链路状态请求、链路状态更新报文,以确保两邻居具有相同的链路状态数据库。为达到该目的,一个邻居为Master,另一邻居为Slave,由Master控制数据库描述的交换。4) 构成紧邻关系。 邻居关系的建立和维持要通过相互交换Hello报文来实现。在点对点或广播型网络上,Hello报文是发向多播地址AllSPFRouters(224.0.0.5),在NBMA、一点对多点、虚拟链路等网络上,Hello报文是发向一个具体的目标地址,是单播方式。81 邻居数据结构从本路由器接口上接收到Hello报文后,要将报文中所携带的有关邻居路由器的信息保存下来,形成邻居数据库。具体包括以下内容:Neighbor ID:邻居路由器ID。Neighbor IP Address:连接在该网络上的邻居接口的IP地址,在接收到Hello报文时获取得到。当OSPF报文单播给邻居时,该地址即是目的地址。Area ID:邻居接口所在的区域ID,若要构成邻居,区域ID必须相同。Interface:指示邻居被本路由器的哪个接口相连。Neighbor Priority:邻居的优先级,由Hello报文携带。State:邻居在有限状态机中处于什么状态。Inactivity Timer:未能从邻居接收Hello报文的时间定时器。PollInterval:专门用于NBMA类型的网络。因为在该网络中,邻居不能自动发现,邻居状态如果Down,则需要每隔PollInterval时间(比HelloInterval长)发送一个Hello报文。Neighbor Options:邻居对OSPF兼容能力的选项,在DD报文交换中获得,也列于hello报文中,在Hello报文中携带该信息。Neighbors Designated Router:邻居所选取的DR,如邻居自己就是DR,则将影响对DR的计算。它用该网络上的接口IP地址表示。由Hello报文的DR域携带。Neighbors Backup Design

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论