首页 > 知识点讲解
       OSPF协议
知识路径: > 计算机网络原理 > Internet 协议 > 网络层协议 > 开放最短路径优先协议 OSPF > 
被考次数:11次     被考频率:高频率     总体答错率:46%     知识难度系数:     
考试要求:掌握      相关知识点:24个      
        为了响应不断增长的建立越来越大的基于IP的网络需要,IETF成立了一个工作组专门开发一种开放的、基于大型复杂IP网络的链路状态路由选择协议。由于它依据一些厂商专用的最短路径优先(SPF)路由选择协议开发而成,而且是开放性的,因此称为开放式最短路径优先(Open Shortest Path First,OSPF)协议,和其他SPF一样,它采用的也是Dijkstra算法。OSPF协议现在已成为最重要的路由选择协议之一,主要用于同一个自治系统。
        OSPF协议采用了“区域”的设计,提高了网络可扩展性,并且加快了网络会聚时间。也就是将网络划分成为许多较小的区域,每个区域定义一个独立的区域号并将此信息配置给网络中的每个路由器。从理论上说,通常不应该采用实际地域来划分区域,而是应该本着使不同区域间的通信量最小的原则进行合理分配。
        OSPF是一种典型的链路状态路由协议。采用OSPF的路由器彼此交换并保存整个网络的链路信息,从而掌握全网的拓扑结构,独立计算路由。因为RIP路由协议不能服务于大型网络,所以IETF的IGP工作组特别开发链路状态协议——OSPF。目前广为使用的是OSPF第二版,最新标准为RFC2328。
               OSPF路由协议概述
               OSPF作为一种内部网关协议,用于在同一个自治域(AS)中的路由器之间发布路由信息。区别于距离矢量协议(RIP),OSPF具有支持大型网络、路由收敛快、占用网络资源少等优点,在目前应用的路由协议中占有相当重要的地位。
                      基本概念和术语
                      下面介绍OSPF的基本概念和术语:
                      (1)链路状态。
                      OSPF路由器收集其所在网络区域上各路由器的连接状态信息,即链路状态信息(Link-State),生成链路状态数据库(Link-State Database)。路由器掌握了该区域上所有路由器的链路状态信息,也就等于了解了整个网络的拓扑状况。OSPF路由器利用“最短路径优先算法(Shortest Path First,SPF)”,独立地计算出到达任意目的地的路由。
                      (2)区域。
                      OSPF协议引入“分层路由”的概念,将网络分割成一个“主干”连接的一组相互独立的部分,这些相互独立的部分被称为“区域”(Area),“主干”的部分称为“主干区域”。每个区域就如同一个独立的网络,该区域的OSPF路由器只保存该区域的链路状态。每个路由器的链路状态数据库都可以保持合理的大小,路由计算的时间、报文数量都不会过大。
                      (3)OSPF网络类型。
                      根据路由器所连接的物理网络不同,OSPF将网络划分为4种类型:广播多路访问型(Broadcast MultiAccess)、非广播多路访问型(None Broadcast MultiAccess,NBMA)、点到点型(Point-to-Point)、点到多点型(Point-to-MultiPoint)。
                      广播多路访问型网络,如Ethernet、Token Ring、FDDI。NBMA型网络,如Frame Relay、X.25、SMDS。Point-to-Point型网络,如PPP、HDLC。
                      (4)指派路由器(DR)和备份指派路由器(BDR)。
                      在多路访问网络上可能存在多个路由器,为了避免路由器之间建立完全相邻关系而引起的大量开销,OSPF要求在区域中选举一个DR。每个路由器都与之建立完全相邻关系。DR负责收集所有的链路状态信息,并发布给其他路由器。选举DR的同时也选举一个BDR,在DR失效时,BDR担负起DR的职责。
                      当路由器开启一个端口的OSPF路由时,将会从这个端口发出一个Hello报文,以后它也将以一定的间隔周期性地发送Hello报文。OSPF路由器用Hello报文来初始化新的相邻关系以及确认相邻的路由器邻居之间的通信状态。
                      对广播型网络和非广播型多路访问网络,路由器使用Hello协议选举出一个DR。在广播型网络里,Hello报文使用多播地址224.0.0.5周期性广播,并通过这个过程自动发现路由器邻居。在NBMA网络中,DR负责向其他路由器逐一发送Hello报文。
                      操作
                      OSPF协议操作总共经历了建立邻接关系、选举DR/BDR、发现路由器等步骤。
                      (1)建立路由器的邻接关系。
                      所谓“邻接关系”(Adjacency)是指OSPF路由器以交换路由信息为目的,在所选择的相邻路由器之间建立的一种关系。路由器首先发送拥有自身ID信息(Loopback端口或最大的IP地址)的Hello报文。与之相邻的路由器如果收到这个Hello报文,就将这个报文内的ID信息加入到自己的Hello报文内。
                      如果路由器的某端口收到从其他路由器发送的含有自身ID信息的Hello报文,则它根据该端口所在网络类型确定是否可以建立邻接关系。
                      在点对点网络中,路由器将直接和对端路由器建立邻接关系,并且该路由器将直接进入到步骤(3)操作:发现其他路由器。若为MultiAccess网络,该路由器将进入选举步骤。
                      (2)选举DR/BDR。
                      不同类型的网络选举DR和BDR的方式不同。
                      MultiAccess网络支持多个路由器,在这种状况下,OSPF需要建立起作为链路状态和LSA更新的中心节点。选举利用Hello报文内的ID和优先权(Priority)字段值来确定。优先权字段值大小为0~255,优先权值最高的路由器成为DR。如果优先权值大小一样,则ID值最高的路由器选举为DR,优先权值次高的路由器选举为BDR。优先权值和ID值都可以直接设置。
                      (3)发现路由器。
                      在这个步骤中,路由器与路由器之间首先利用Hello报文的ID信息确认主从关系,然后主从路由器相互交换部分链路状态信息。每个路由器对信息进行分析比较,如果收到的信息有新的内容,路由器将要求对方发送完整的链路状态信息。这个状态完成后,路由器之间建立完全相邻(Full Adjacency)关系,同时邻接路由器拥有自己独立的、完整的链路状态数据库。
                      在MultiAccess网络内,DR与BDR互换信息,并同时与本子网内其他路由器交换链路状态信息。
                      在Point-to-Point或Point-to-MultiPoint网络中,相邻路由器之间互换链路状态信息。
                      (4)选择适当的路由器。
                      当一个路由器拥有完整独立的链路状态数据库后,它将采用SPF算法计算并创建路由表。OSPF路由器依据链路状态数据库的内容,独立地用SPF算法计算到每一个目的网络的路径,并将路径存入路由表中。
                      OSPF利用量度(Cost)计算目的路径,Cost最小者即为最短路径。在配置OSPF路由器时可根据实际情况,如链路带宽、时延或经济上的费用设置链路Cost大小。Cost越小,则该链路被选为路由的可能性越大。
                      (5)维护路由信息。
                      当链路状态发生变化时,OSPF通过Flooding过程通告网络上其他路由器。OSPF路由器接收到包含新信息的链路状态更新报文,将更新自己的链路状态数据库,然后用SPF算法重新计算路由表。在重新计算过程中,路由器继续使用旧路由表,直到SPF完成新的路由表计算。新的链路状态信息将发送给其他路由器。值得注意的是,即使链路状态没有发生改变,OSPF路由信息也会自动更新,默认时间为30分钟。
               OSPF路由协议的基本特征
               前文已经说明OSPF路由协议是一种链路状态的路由协议,为了更好地说明OSPF路由协议的基本特征,将OSPF路由协议与距离矢量路由协议之一的RIP比较如下:
               RIP中用于表示目的网络远近的唯一参数为跳(Hop),即到达目的网络所要经过的路由器个数。在RIP路由协议中,该参数被限制最大为15,即RIP路由信息最多能传递至第16个路由器;对于OSPF路由协议,路由表中表示目的网络的参数为Cost,该参数为一虚拟值,与网络中链路的带宽等相关,即OSPF路由信息不受物理跳数的限制,因此OSPF比较适合于大型网络中。
               RIPv1路由协议不支持变长子网屏蔽码(VLSM),被认为是RIP路由协议不适用于大型网络的又一个重要原因。采用变长子网屏蔽码可以在最大限度上节约IP地址。OSPF路由协议对VLSM有良好的支持性。
               RIP路由协议路由收敛较慢。RIP路由协议周期性地将整个路由表作为路由信息广播至网络中,该广播周期为30s。在一个较为大型的网络中,RIP会产生很大的广播信息,占用较多的网络带宽资源。由于R1P协议30s的广播周期,影响了RIP路由协议的收敛,甚至出现不收敛的现象。OSPF是一种链路状态的路由协议,当网络比较稳定时,网络中的路由信息是比较少的,并且其广播也不是周期性的,因此OSPF路由协议即使是在大型网络中也能够较快地收敛。
               在RIP中,网络是一个平面的概念,并无区域及边界等的定义。随着无级路由CIDR概念的出现,RIP协议就明显落伍了。在OSPF路由协议中,一个网络,或者说是一个路由域可以划分为很多个区域,每一个区域通过OSPF边界路由器相连,区域间可以通过路由汇聚来减少路由信息,减小路由表,提高路由器的运算速度。
               OSPF路由协议支持路由验证,只有互相通过路由验证的路由器之间才能交换路由信息。而且OSPF可以对不同的区域定义不同的验证方式,提高网络的安全性。
               建立OSPF邻接关系过程
               OSPF路由协议通过建立交互关系来交换路由信息,但并不是所有相邻的路由器都会建立OSPF交互关系。下面简要介绍OSPF建立adjacency的过程。
               OSPF协议是通过Hello协议数据包来建立及维护相邻关系的,同时也用其来保证相邻路由器之间的双向通信。OSPF路由器会周期性地发送Hello数据包,当这个路由器看到自身被列于其他路由器的Hello数据包里时,这两个路由器之间会建立起双向通信。在多接入的环境中,Hello数据包还用于发现指定路由器(DR),通过DR来控制与哪些路由器建立交互关系。
               两个OSPF路由器建立双向通信之后的第二个步骤是进行数据库的同步,数据库同步是所有链路状态路由协议的最大的共性。在OSPF路由协议中,数据库同步关系仅仅在建立交互关系的路由器之间保持。
               OSPF的数据库同步是通过OSPF数据库描述数据包(Database Description Packets)来进行的。OSPF路由器周期性地产生数据库描述数据包,该数据包是有序的,即附带有序列号,并将这些数据包对相邻路由器广播。相邻路由器可以根据数据库描述数据包的序列号与自身数据库的数据作比较,若发现接收到的数据比数据库内的数据序列号大,则相邻路由器会针对序列号较大的数据发出请求,并用请求得到的数据来更新其链路状态数据库。
               将OSPF相邻路由器从发送Hello数据包,建立数据库同步至建立完全的OSPF交互关系的过程分成几个不同的状态,如下所述。
               (1)Down:这是OSPF建立交互关系的初始化状态,表示在一定时间之内没有接收到从某一相邻路由器发送来的信息。在非广播性的网络环境内,OSPF路由器还可能对处于Down状态的路由器发送Hello数据包。
               (2)Attempt:该状态仅在NBMA环境,如帧中继、X.25或ATM环境中有效,表示在一定时间内没有接收到某一相邻路由器的信息,但是OSPF路由器仍必须通过以一个较低的频率向该相邻路由器发送Hello数据包来保持联系。
               (3)Init:在该状态时,OSPF路由器已经接收到相邻路由器发送来的Hello数据包,但自身的IP地址并没有出现在该Hello数据包内,也就是说,双方的双向通信还没有建立起来。
               (4)2-Way:这个状态可以说是建立交互方式真正的开始步骤。在这个状态,路由器看到自身已经处于相邻路由器的Hello数据包内,双向通信已经建立。指定路由器及备份指定路由器的选择正是在这个状态完成的。在这个状态,OSPF路由器还可以根据其中的一个路由器是否指定路由器或根据链路是否点对点或虚拟链路来决定是否建立交互关系。
               (5)Exstart:这个状态是建立交互状态的第一个步骤。在这个状态,路由器要决定用于数据交换的初始的数据库描述数据包的序列号,以保证路由器得到的永远是最新的链路状态信息。同时,在这个状态路由器还必须决定路由器之间的主备关系,处于主控地位的路由器会向处于备份地位的路由器请求链路状态信息。
               (6)Exchange:在这个状态,路由器向相邻的OSPF路由器发送数据库描述数据包来交换链路状态信息,每一个数据包都有一个数据包序列号。在这个状态,路由器还有可能向相邻路由器发送链路状态请求数据包来请求其相应数据。从这个状态开始,可以说OSPF处于Flood状态。
               (7)Loading:在Loading状态,OSPF路由器会就其发现的相邻路由器的新的链路状态数据及自身的已经过期的数据向相邻路由器提出请求,并等待相邻路由器的回答。
               (8)Full:这是两个OSPF路由器建立交互关系的最后一个状态,这时建立起交互关系的路由器之间已经完成了数据库同步的工作,它们的链路状态数据库已经一致。
               OSPF的DR及BDR
               在DR和BDR出现之前,每一台路由器和他的所有邻居成为完全网状的OSPF邻接关系,这样5台路由器之间将需要形成10个邻接关系,同时将产生25条LSA。而且在多址网络中,还存在自己发出的LSA从邻居的邻居发回来,导致网络上产生很多LSA的拷贝。所以基于这种考虑,产生了DR和BDR。
                      完成的工作内容
                      DR将完成如下工作:
                      (1)描述这个多址网络和该网络上剩下的其他相关路由器。
                      (2)管理这个多址网络上的flooding过程。
                      (3)同时为了冗余性,还会选取一个BDR,作为双备份之用。
                      选取规则
                      DR BDR选取规则:DR BDR选取是以接口状态机的方式触发的。
                      (1)路由器的每个多路访问(Multi-access)接口都有个路由器优先级(Router Priority),8位长的一个整数,范围是0~255,Cisco路由器默认的优先级是1,优先级为0的话将不能选举为DR/BDR。优先级可以通过命令ip ospf priority进行修改。
                      (2)Hello包里包含了优先级的字段,还包括了可能成为DR/BDR的相关接口的IP地址。
                      (3)当接口在多路访问网络上初次启动的时候,它把DR/BDR地址设置为0.0.0.0,同时设置等待计时器(Wait Timer)的值等于路由器无效间隔(Router Dead Interval)。
                      选取过程
                      DR BDR选取过程:
                      (1)路由器X在和邻居建立双向(2-Way)通信之后,检查邻居的Hello包中Priority,DR和BDR字段,列出所有可以参与DR/BDR选举的邻居。
                      (2)如果有一台或多台这样的路由器宣告自己为BDR(也就是说,在其Hello包中将自己列为BDR,而不是DR),选择其中拥有最高路由器优先级的成为BDR;如果相同,选择拥有最大路由器标识的。如果没有路由器宣告自己为BDR,选择列表中路由器拥有最高优先级的成为BDR(同样排除宣告自己为DR的路由器),如果相同,再根据路由器标识。
                      (3)按如下计算网络上的DR。如果有一台或多台路由器宣告自己为DR(也就是说,在其Hello包中将自己列为DR),选择其中拥有最高路由器优先级的成为DR;如果相同,选择拥有最大路由器标识的。如果没有路由器宣告自己为DR,将新选举出的BDR设定为DR。
                      (4)如果路由器X新近成为DR或BDR,或者不再成为DR或BDR,重复步骤(2)和(3),然后结束选举。这样做是为了确保路由器不会同时宣告自己为DR和BDR。
                      (5)要注意的是,当网络中已经选举了DR/BDR后,又出现了1台新的优先级更高的路由器,DR/BDR是不会重新选举的。
                      (6)DR/BDR选举完成后,DRother只和DR/BDR形成邻接关系。所有的路由器将组播Hello包到AllSPFRouters地址224.0.0.5以便它们能跟踪其他邻居的信息,即DR将泛洪update packet到224.0.0.5;DRother只组播update packet到AllDRouter地址224.0.0.6,只有DR/BDR监听这个地址。
                      筛选过程
                      简单地说,DR的筛选过程如下:
                      (1)优先级为0的不参与选举。
                      (2)优先级高的路由器为DR。
                      (3)优先级相同时,以router ID大为DR;router ID以回环接口中最大IP为准;若无回环接口,以真实接口最大IP为准。
                      (4)默认条件下,优先级为1。
               OSPF路由器类型
               OSPF路由器类型如下图所示。
               
               OSPF路由器类型
                      区域内路由器(Internal Routers)。
                      该类路由器的所有接口都属于同一个OSPF区域。
                      区域边界路由器ABR(Area Border Routers)。
                      该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
                      骨干路由器(Backbone Routers)。
                      该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
                      自治系统边界路由器(AS Boundary Routers,ASBR)。
                      与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
               OSPF LSA类型
               随着OSPF路由器种类概念的引入,OSPF路由协议又对其链路状态广播数据包(LSA)做出了分类。OSPF将链路状态广播数据包主要分成以下6类,如下表所示。
               
               LSA类型
               (1)1类LSA(路由器LSA):每台路由器都通告1类LSA,描述了与路由器直连的所有链路(接口)状态,只能在本区域内扩散。
               (2)2类LSA(网络LSA):只有DR才有资格产生,只能在本区域内扩散,描述了多路访问网络的所有路由器(Router ID)和链路的子网掩码。
               (3)3类LSA(汇总LSA):只有ABR可以产生,能在整个OSPF自治系统扩散,描述了目的网路的路由(还可能包含汇总路由)。
               (4)4类LSA(汇总LSA):仅当区域中有ASBR时,ABR才会产生,该LSA标识了ASBR,提供一条前往该ASBR的路由。
               (5)5类LSA(外部LSA):只能由ASBR产生,描述了前往OSPF自治系统外的网络的路由,被扩散到整个AS(除各种末节区域外)。
               (6)7类LSA(用于NSSA的LSA):只能由NSSA ASBR产生,只能出现在NSSA,而NSSA ABR将其转换为5类LSA并扩散到整个OSPF自治系统。
               OSPF区域类型
               根据区域所接收的LSA类型不同,可将区域划分为以下几种类型:
               (1)标准区域:默认的区域类型,它接收链路更新、汇总路由和外部路由,如下图所示。
               
               标准区域示例
               (2)骨干区域:骨干区域为Area 0,其他区域都与之相连以交换路由信息,该区域具有标准区域的所有特征。
               (3)末节区域:不接收4类汇总LSA和5类外部LSA,但接收3类汇总LSA,使用默认路由到AS外部网络(自动生成),该区域不包含ASBR(除非ABR也是ASBR)。
               (4)绝对末节区域:这个是Cisco专用。它不接收3类、4类汇总LSA和5类外部LSA,使用默认路由到AS外部网络(自动生成),该区域不包含ASBR(除非ABR也是ASBR)。
               (5)NSSA:不接收4类汇总LSA和5类外部LSA,但接收3类汇总LSA且可以有ASBR,使用默认路由前往外部网络,默认路由是由与之相连的ABR生成的,但默认情况下不会生成,要让ABR生成默认路由,可使用命令area area-id nssa default-information-originate。
               (6)绝对末节NSSA:这个是Cisco公司专用。它不接收3类、4类汇总LSA和5类外部LSA且可以有ASBR,使用默认路由到AS外部网络,默认路由是自动生成的。
               每一种区域中允许泛洪的LSA总结如下表所示。
               
               区域允许LSA总结
               注:*为ABR路由器使用一个类型3的LSA通告默认路由。
               虚链路
               在OSPF路由协议中存在一个骨干区域(Backbone),该区域包括属于这个区域的网络及相应的路由器,骨干区域必须是连续的,同时也要求其余区域必须与骨干区域直接相连。骨干区域一般为区域0,其主要工作是在其余区域间传递路由信息。所有的区域,包括骨干区域之间的网络结构情况是互不可见的,当一个区域的路由信息对外广播时,其路由信息是先传递至区域0(骨干区域),再由区域0将该路由信息向其余区域作广播。
               
               骨干区域不连续虚链路
               在实际网络中,可能会存在骨干区域不连续或某一个区域与骨干区域物理不相连的情况,在这两种情况下,系统管理员可以通过设置虚拟链路的方法来解决,如上图和下图所示。
               
               与骨干区域物理不相连虚链路
               虚拟链路设置在两个路由器之间,这两个路由器都有一个端口与同一个非骨干区域相连。虚拟链路被认为是属于骨干区域的,在OSPF路由协议看来,虚拟链路两端的两个路由器被一个点对点的链路连在一起。在OSPF路由协议中,通过虚拟链路的路由信息是作为域内路由来看待的。
               OSPF配置命令汇总
               OSPF常用配置命令如下表所示。
               
               OSPF配置命令汇总
               OSPF配置实例
               下面,以如下图所示的一个网络为例说明OSPF路由选择协议的配置方法,该网络中有0和1两个区域,其中R1的S1端口、R2的S0端口属于区域0;而R3、R1的S0端口、R2的S1端口则属于区域1。
               
               OSPF配置拓扑图
               下面列出三个路由器配置OSPF的指令:
               
               从上面的配置实例中可以知道,在配置OSPF时可以将子网进行合并,以减少条目,提高效率。例如,R3的邻接子网有192.168.1.0、192.168.2.0、192.168.3.0三个,因此可以合并为192.0.0.0/255.0.0.0;当然合并为192.168.0.0/255.255.0.0也是可行的。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2019 All Rights Reserved 软考在线版权所有