您好,欢迎访问三七文档
1OSPF路由协议综述OSPF是链路状态路由协议(link-stateroutingprotocol),属于内部网关路由协议。链路状态路由协议具有以下基本特征:1.对网络发生的变化能够快速响应(快速响应网络变化)。2.当网络发生变化的时候发送触发式更新(triggeredupdate)(被动更新链路状态)。3.发送周期性更新(链路状态刷新),间隔时间为30分钟(定时主动更新链路状态)。OSPF工作原理介绍链路状态路由协议只在网络拓扑发生变化以后产生路由更新.当链路状态发生变化时候,检测到变化的设备创建LSA(linkstateadvertisement),通过使用组播地址传送给所有的邻居设备,然后每个设备拷贝一份LSA,更新它自己的链路状态数据库(linkstatedatabase,LSDB),接着再转发LSA给其他的邻居设备。这种LSA的洪泛(flooding)保证了所有的路由设备在更新自己的路由表之前更新它自己的LSDB。最总利用SPF算法根据LSDB得到路由表。工作原理总结:链路变化--检测到变化的设备创建LSA(linkstateadvertisement)----组播传送给所有邻居设备---邻居收到LSA拷贝一份用来更新自己本地的链路状态数据库LSDB(linkstatedatabase),然后转发LSA给其他邻居设备-整个网络LSDB的同步更新LSDB---SPF算法(shortestpathfirth)---到达目的网络的最佳路径---SPFTree----选出最佳路径----加入路由表OSPF协议引入“分层路由”的概念,将网络分割成一个“主干”连接的一组相互独立的部分,这些相互独立的部分被称为“区域”(Area),“主干”的部分称为“主干区域”。每个区域就如同一个独立的网络,该区域的OSPF路由器只保存该区域的链路状态。每个路由器的链路状态数据库都可以保持合理的大小,路由计算的时间、报文数量都不会过大。OSPF的网络设计要求是双层层次化(2-layerhierarchy),包括如下2层:1.transitarea(backbone或area0)2.regularareas(non-backboneareas)transitarea负责的主要功能是IP包快速和有效的传输。transitarea互联OSPF其他区域类型,一般这个区域里不会出现端用户(enduser)。regularareas负责的主要功能就是连接用户和资源。这种区域一般是根据功能和地理位置来划分,一般一个regulararea不允许其他区域的流量通过它到达另外一个区域。regulararea之间的数据必须穿越transitarea。2注意:area1和area2或3之间的连接是不允许的,它们都必须通过backbonearea0进行连接.Cisco建议每个区域中路由器的数量为50到100个。构建area0的路由器称为骨干路由器(backbonerouter,BR),如上图,A和B就是BR;区域边界路由器(areaborderrouter,ABR)连接area0和nonbackboneareas.如图,C,D和E就是ABR.ABR通常具有以下特征:1.分隔LSA洪泛的区域2.是区域地址汇总的主要因素3.一般做为默认路由的源头4.为每个区域保持LSDB理想的设计是使每个ABR只连接2个区域,backbone和其他区域,3个区域为上限。OSPFCalculation链路状态路由协议使用Dijkstra算法(典型的SPF算法)来查找到达目标网络中的最佳路径.所有的路由器拥有相同的LSDB后,把自己放进SPFtree中的root里,然后根据每条链路的耗费(cost),选出耗费最低的做为最佳路径,最后把最佳路径放进forwardingdatabase(路由表)里,形成路由表。下图就是一个SPF计算的例子:1.LSA遵循splithorizon原则,H对E宣告它的存在,E把H的宣告和它自己的宣告再传给C和G;C和G再和之前类似,继续传播开来……2.X有4个邻居:A,B,C和D,假设这里都是以太网,每条网链路的耗费为10,经过计算,路由器可以算出最佳路径.上图的右半部分实线所标即为最佳路径LSAOptions关于LSA的操作流程图如下:3TypesofOSPFPacketsOSPF包的五种类型如下:1.hello:用来建立邻居关系的包2.databasedescription(DBD):用来检验路由器之间数据库的同步3.linkstaterequest(LSR):链路状态请求包4.linkstateupdate(LSU):特定链路之间的请求记录5.linkstateacknowledgement(LSAck):确认包OSPFPacketHeaderFormat五种OSPF包都是直接被封装在IP包里的而不使用TCP或UDP.由于没有使用可靠的TCP协议,但是OSPF包又要求可靠的传输,所以就有了LSAck包.如下图所示就是OSPF包在IP包里的形式:Data字段解释:1.对于hello包来说,该字段是已知邻居的列表;2.对于DBD包来说,该字段包含的是LSDB的汇总信息,包括RID等等;3.对于LSR包来说,该字段包含的是需要的LSU类型和需要的LSU类型的RID;4.对于LSU包来说,包含的是完全的LSA条目,多个LSA条目可以装在一个包里;5.对于LSAck来说,字段为空。4OSPF网络类型根据路由器所连接的物理网络不同,OSPF将网络划分为四种类型:1.广播多路访问型(BroadcastMultiAccess)。(eg:Ethernet,TokenRing,FDDI)2.非广播多路访问型(NoneBroadcastMultiAccess,NBMA)。(eg:FrameReday,X.25)3.点到点型(Point-to-Point)。(eg:PPP,HDLC)4.点到多点型(Point-to-MultiPoint)。关于DR和BDR在多路访问网络上可能存在多个路由器,为了避免路由器之间建立完全相邻关系而引起的大量开销,OSPF要求在区域中选举一个DR。每个路由器都与之建立完全相邻关系。DR负责收集所有的链路状态信息,并发布给其他路由器。选举DR的同时也选举出一个BDR,在DR失效的时候,BDR担负起DR的职责。点对点型网络不需要DR,因为只存在两个节点,彼此间完全相邻。协议组成OSPF协议由Hello协议、交换协议、扩散协议组成。可参考RFC2328中的具体描述。DR和BDR的选举原则:1、广播网络或NBMA类型的网络需要选举指定路由器DR(DesignatedRouter)和备份指定路由器BDR(BackupDesignatedRouter);2、路由器接口的优先级Priority将影响接口在选举DR时所具有的资格。优先级为0的路由器不会被选举为DR或BDR;3、DR由本网段中所有路由器共同选举。Priority大于0的路由器都可作为“候选者”,选票就是Hello报文,OSPF路由器将自己选出的DR写入Hello报文中,发给网段上的其它路由器。当同一网段的两台路由器都宣布自己是DR时,Priority高的胜出。如果Priority相等,则RouterID大的胜出;4、如果DR失效,则网络中的路由器必须重新选举DR,并与新的DR同步,为了缩短这个过程,OSPF提出了BDR(BackupDesignatedRouter,备份指定路由器)的概念,与DR同时被选举出来。BDR也与本网段内的所有路由器建立邻接关系并交换路由信息。DR失效后,BDR立即成为DR,由于不需要重新选举,并且邻接关系已经建立,所以这个过程可以很快完成。这时,还需要选举出一个新的BDR,这时不会影响路由的计算。DR和BDR的指导思想:选举制:DR是各路由器选出来的,而非人工指定的,虽然管理员可以通过配置priority干预选举过程。终身制:DR一旦当选,除非路由器故障,否则不会更换,即使后来的路由器priority更高。世袭制:DR选出的同时也选出BDR来,DR故障后,由BDR接替DR成为新的DR。DR和BDR的注意事项:1、只有在广播和NBMA的链路上才会选举DR,在PTP和PTMP的链路上不会选举DR。2、DR是针对一个网段内的设备选举的,对于一台路由器来说,可能它在某个接口上是DR3、在其它接口上是BDR、DROther,或者因为是PTP的链路而不参加DR的选举。4、在广播的网络上必须存在DR才能够正常工作,但BDR不是必需的。55、一个网段中即使只有一台路由器,也要选举DR。6、由于“终身制”的原因,网段中的DR不一定是priority最高的,但通常是“来的早”的路由器。LSA类型链路状态信息包括接口的IPv6前缀(prefix)、网络掩码、接口连接的网络(链路)类型、与该接口在同一网络(链路)上的路由器等信息。这些链路状态信息由不同类型的LSA携带,在网络上传播。OSPF有以下七种LSA类型:1、路由器LSA(RouterLSA)由区域内所有路由器产生,并且只能在本个区域内泛洪广播。这些最基本的LSA通告列出了路由器所有的链路和接口,并指明了它们的状态和沿每条链路方向出站的代价。2、网络LSA(NetworkLSA)由区域内的DR或BDR路由器产生,报文包括DR和BDR连接的路由器的链路信息。网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪。3、网络汇总LSA(NetworksummaryLSA)由ABR产生,可以通知本区域内的路由器通往区域外的路由信息。在一个区域外部但是仍然在一个OSPF自治系统内部的缺省路由也可以通过这种LSA来通告。如果一台ABR路由器经过骨干区域从其他的ABR路由器收到多条网络汇总LSA,那么这台始发的ABR路由器将会选择这些LSA通告中代价最低的LSA,并且将这个LSA的最低代价通告给与它相连的非骨干区域。4、ASBR汇总LSA(ASBRsummaryLSA)也是由ABR产生,但是它是一条主机路由,指向ASBR路由器地址的路由。5、自治系统外部LSA(AutonomoussystemexternalLSA)由ASBR产生,告诉相同自治区的路由器通往外部自治区的路径。自治系统外部LSA是惟一不和具体的区域相关联的LSA通告,将在整个自治系统中进行泛洪。6、组成员LSA(GroupmembershipLSA)组播OSPF(MOSPF协议)7、NSSA外部LSA(NSSAExternalLSA)由ASBR产生,几乎和LSA5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA5报文,但是NSSA中不能有LSA5报文,所有ASBR产生LSA7报文,发给本区域的路由器。OSPF路由器角色1.内部路由器2.区域边界路由器3.AS边界路由器4.指定路由器5.备份指定路由器6总结:OSPF的核心是链路状态数据库LSDB。LSDB是路由器计算路由选择的原始数据,OSPF协议的大部分机制是与LSDB的维护同步有关的。回顾:OSPF工作原理:链路变化------LSA-------LSDB------SPFTree-------RoutingInfoHello数据包Hello数据包定期在所有运行了OSPF的接口上发送,用来建立和维护邻居关系。连接在同一条链路上的路由器必须对某些参数协商一致才能形成邻居关系。这些参数包含在Hello数据包中。Hello数据包中也包含用来选举DR/BDR的参数。Hello数据包的结构如图所示。Hello数据包中个字段的含义如下:InterfaceID--接口标志符。路由器的每一个接口都有一个唯一的标志符。Routerpriority--路由器优先级。路由器根据该值选举DR/BDR。Options--该24比特字段出现在Hello包、DDP和某些LSA中,OSPF路由器使用该字段实现某些与其他路
本文标题:SPF路由协议综述
链接地址:https://www.777doc.com/doc-2850030 .html