华为OSPF总结1OSPF基本概念1.1拓扑和路由器类型OSPF整体拓扑OSPF把自治系统划分成逻辑意义上的一个或多个区域,所有其他区域必须与区域0相连。路由器类型区域内路由器(InternalRouter):该类设备的所有接口都属于同一个OSPF区域。区域边界路由器ABR(AreaBorderRouter):该类路由器可以同时属于两个以上的区域,但其中一个接口必须在骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。骨干路由器(BackboneRouter):该类路由器至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部路由器都是骨干路由器。自治系统边界路由器ASBR(ASBoundaryRouter):与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。拓扑所体现的IS-IS与OSPF不同点在OSPF中,每个链路只属于一个区域;而在IS-IS中,每个链路可以属于不同的区域;在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域;在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由发布还是距离矢量算法,区域之间的路由需要通过骨干区域来转发。1.2OSPF网络类型,DR,BDR介绍OSPF支持的网络类型点到点P2P类型:当链路层协议是PPP、HDLC时,缺省情况下,OSPF认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。点到多点P2MP类型(Point-to-Multipoint):没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。在该类型的网络中以组播形式(224.0.0.5)发送Hello报文,以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。NBMA类型(Non-broadcastmultipleaccess):当链路层协议是ATM时,缺省情况下,OSPF认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。广播类型(Broadcast):当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。在该类型的网络中,通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF路由器的预留IP组播地址;224.0.0.6的组播地址为OSPFDR的预留IP组播地址。以单播形式发送DD报文和LSR报文。在至少含有两个路由器的广播型网络和NBMA网络都有一个指定路由器(DR)和一个备份指定路由器(BDR)DR/BDR的作用减少邻居关系的数量,从而减少链路状态信息和路由信息的次数。Drother只与DR/BDR建立完全邻接关系。DR与BDR之间建立完全邻接关系。DR产生网络LSA来描述NBMA网段或者广播网段信息。DR/BDR选举规则DR/BDR由OSPF的Hello协议选举,选举是根据端口的路由器优先级(RouterPriority)进行的。如果RouterPriority被设置为0,那么该路由器将不允许被选举成DR或者BDR。RouterPriority越大越优先。如果相同,RouterID大者优先。DR/BDR不能抢占。如果当前DR故障,当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR故障,则DR不变,重新选举BDR。ISISDIS与OSPFDR/BDR的不同点在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举。在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器。1.3OSPF报文类型Hello报文:用于建立和维持邻居关系DD报文:描述本地LSDB的摘要信息,用于两台路由器进行数据库同步LSR报文:用于向对方请求所需的LSA路由器只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文LSU报文:用于向对方发送其所需要的LSALSAck报文:用来对收到的LSA进行确认OSPF报文概述OSPF报文直接运行于IP之上,IP协议字段号为89。OSPF有五种报文类型,但是OSPF报文头部格式都是相同的。除Hello报文外,其它的OSPF报文都携带LSA信息。1.3.1OSPF报文头部信息所有的OSPF报文使用相同的OSPF报文头部Version:OSPF协议号,应当被设置成2。Type:OSPF报文类型,OSPF共有五种报文。Packetlength:OSPF报文总长度,包括报文头部。单位是字节。RouterID:生成此报文的路由器的RouterID。AreaID:此报文需要被通告到的区域。Checksum:是指一个对整个数据包(包括包头)的标准IP校验和。AuType:验证此报文所应当使用的验证方法。Authentication:验证此报文时所需要的密码等信息。1.3.2Hello报文格式NetworkMask:发送Hello报文的接口的网络掩码。HelloInterval:发送Hello报文的时间间隔。单位为秒。Options:标识发送此报文的OSPF路由器所支持的可选功能。RouterPriority:发送Hello报文的接口的RouterPriority,用于选举DR和BDR。RouterDeadInterval:宣告邻居路由器不继续在该网段上运行OSPF的时间间隔,单位为秒,通常为四倍HelloInterval。DesignatedRouter:发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表示未选举DR路由器。BackupDesignatedRouter:发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR路由器。ActiveNeighbor:邻居路由器的RouterID列表。表示本路由器已经从该邻居收到合法的Hello报文。1.3.3DD报文格式接口MTU:是指在数据包不分段的情况下,始发路由器接口可以发送的最大IP数据包大小。当在虚连接时,该在段为0x0000。Option:同hello报文。I位:当发送的是一系列DD报文中的第一个数据包时,该为置位为1。后续的DD报文将该位置位0。M位:当发送的数据包还不是一个系列DD报文中的最后一个数据包时,该值置为1。如果是最后一个DD报文,则将该为置为0。MS位:在数据库同步中,主要用来确认协商过程中的序列号。DDSequenceNumber:DD的序列号报文,4byteLSA头部信息。1.3.4LSR报文格式LinkStateType:用来指明LSA标识是一个路由器LSA、一个网络LSA还是其他类型的LSA。LinkStateID:不同类型LSA该字段意义不同。AdvertisingRouter:始发LSA通告的路由器的路由器ID。1.3.5LSU报文格式NumberofLSA:指出这个数据包中包含的LSA的数量。LSA:明细LSA信息1.3.6LSAck报文格式HeaderofLSA:LSA头部信息。1.3.7LSA头部信息除Hello报文外,其它的OSPF报文都携带LSA信息。LSage:此字段表示LSA已经生存的时间,单位是秒。Option:该字段指出了部分OSPF域中LSA能够支持的可选性能LStype:此字段标识了LSA的格式和功能。常用的LSA类型有五种。LinkStateID:根据LSA的不用而不同。AdvertisingRouter:始发LSA的路由器的ID。SequenceNumber:当LSA每次新的实例产生时,这个序列号就会增加。这个更新可以帮助其他路由器识别最新的LSA实例。Checksum:关于LSA的全部信息的校验和。因为Age字段,所以校验和会随着老化时间的增大而每次都需要重新进行计算。Length:是一个包含LSA头部在内的LSA的长度。1.4LSA类型和区域内路由计算与描述Router-LSA(Type1)路由器产生,描述了路由器的链路状态和开销,本区域内传播Network-LSA(Type2)DR产生,描述本网段的链路状态,本区域内传播Network-summary-LSA(Type3)ABR产生,描述区域内某个网段的路由,区域间传播(除特殊区域)ASBR-summary-LSA(Type4)ABR产生,描述到ASBR的路由,OSPF域内传播(除特殊区域)AS-external-LSA(Type5)ASBR产生,描述到AS外部的路由,OSPF域内传播(除特殊区域)NSSALSA(Type7)由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。区域内路由的计算只涉及到router-lsa和network-lsa也只有router-lsa和network-lsa参与ospf路由计算1.4.1描述拓扑结构1.4.2Router-LSARouter-LSA必须描述始发路由器所有接口或链路。区域内路由计算用到router-lsa[Q5]displayospflsdbrouterself-originateOSPFProcess1withRouterID5.5.5.5Area:0.0.0.1LinkStateDatabaseType:RouterLsid:5.5.5.5Advrtr:5.5.5.5Lsage:194Len:48Options:ASBREseq#:80000007chksum:0xacb8Linkcount:2*LinkID:4.4.4.4Data:45.0.0.5LinkType:P-2-PMetric:1562*LinkID:45.0.0.0Data:255.255.255.0LinkType:StubNetMetric:1562Priority:LowLinkStateID:是指始发路由器的路由器ID。V:设置为1时,说明始发路由器是一条或者多条具有完全邻接关系的虚链路的一个端点。E:当始发路由器是一个ASBR路由器时,该为置为1。B:当始发路由器是一个ABR路由器时,该为置为1。Linkcount:表明一个LSA所描述的路由器链路数量。LinkType:置为1表示点到点连接一台设备;置为2表示连接一个transit网络,可以理解为广播网络;置为3表示连接subnet网络,一般该地址为环回口地址;置为4表示虚链路。LinkID:LinkType置为1表示邻居路由器的路由器ID;LinkType置为2表示DR路由器的接口的IP地址;LinkType置为3表示IP网络或子网地址;LinkType置为4邻居路由器的路由器ID。LinkData:LinkType置为1表示和网络相连的始发路由器接口的IP地址;LinkType置为2表示和网络相连的始发路由器接口的IP地址;LinkType置为3网络的IP地址或子网掩码。P2P链路:描述到邻居连接Transit链路:描述到DR