OSPF中5类LSA的ForwardingAddress关键词Keywords:OSPF,5类LSA,ForwardingAddress摘要Abstract:本文介绍了OSPF协议中关于ASBR产生5类LSA时,对于ForwardingAddress的处理。介绍了RFC2328中的规定,以及IOS及VRP实现的方法和条件。并对ForwardingAddress如何影响路由计算的结果及可能产生的问题做了分析。并提出了规避问题的一些方法。RFC中对于FA的描述1.1原文1.1.1RFC2328中2.3小节Theforwardingaddresshasoneotherapplication.ItenablesroutersintheAutonomousSystem'sinteriortofunctionasrouteservers.Forexample,inFigure2therouterRT6couldbecomearouteserver,gainingexternalroutinginformationthroughacombinationofstaticconfigurationandexternalroutingprotocols.RT6wouldthenstartadvertisingitselfasanASboundaryrouter,andwouldoriginateacollectionofOSPFAS-external-LSAs.IneachAS-external-LSA,RouterRT6wouldspecifythecorrectAutonomousSystemexitpointtouseforthedestinationthroughappropriatesettingoftheLSA'sforwardingaddressfield.FA还有另一个应用,FA可以使一个AS中的某一台路由器成为一个“路由服务器”。这样该路由器宣告自己为一个ASBR,并且把将通过静态配置或者其它路由协议得到的路由信息以5类LSA的形式引入到OSPF区域之中,并且通过设定FA来标明正确的AS出口位置。1.1.2RFC2328中16.4小节CallthedestinationdescribedbytheLSAN.N'saddressisobtainedbymaskingtheLSA'sLinkStateIDwiththenetwork/subnetmaskcontainedinthebodyoftheLSA.Lookuptheroutingtableentries(potentiallyoneperattachedarea)fortheASboundaryrouter(ASBR)thatoriginatedtheLSA.IfnoentriesexistforrouterASBR(i.e.,ASBRisunreachable),donothingwiththisLSAandconsiderthenextinthelist.Else,thisLSAdescribesanASexternalpathtodestinationN.ExaminetheforwardingaddressspecifiedintheAS-external-LSA.ThisindicatestheIPaddresstowhichpacketsforthedestinationshouldbeforwarded.Iftheforwardingaddressissetto0.0.0.0,packetsshouldbesenttotheASBRitself.……Iftheforwardingaddressisnon-zero,lookuptheforwardingaddressintheroutingtable.[24]Thematchingroutingtableentrymustspecifyanintra-areaorinter-areapath;ifnosuchpathexists,donothingwiththeLSAandconsiderthenextinthelist.如果LSA描述的目标网络为N。N的地址通过LSA中LSID和LSA体中的网络掩码计算而来。在路由表中查找生成该LSA的ASBR。如果不存在该ASBR的表项(比如ASBR不可达),那么对该LSA不做操作。否则,该LSA就描述了到达AS外部网络N的路径。检查AS-external-LSA中的‘转发地址’,这个地址就是发往该目标网络N的数据包应该被送达的地址。如果转发地址被设为0.0.0.0,包应当被转发到ASBR。……..如果转发地址不是零,那么在路由表中查找FA。匹配FA的路由表项必须是区域内或区域间路径,如果没有符合条件的表项存在,那么对该LSA不做操作。(如果有默认路由能不能把数据包发向FA??????????)1.2例子1.2.1说明从RFC中对于FA的定义可以看出,FA为外部路由提供了额外的转发信息。FA的重点有两个部分,一个是ASBR与外部路由器的连接必定是通过一个多点可达的网络(NBMA或者以太网);另一个重点是,FA非0时,SPF计算会根据FA来计算目标网络的下一跳,因此需要对覆盖FA的路由信息做检查。从下面这个例子中可以看到FA的作用。见下图。RouterC为OSPF区域外部的路由器,它通过一个多点可达的网络与ASBR-1和RouterB连接。ASBR-1将RouterC的网络引入OSPF。当OSPF区域内部的路由器RouterA访问外部网络时,流量会达到RouterB并转发给ASBR-1,然后到达RouterC,也就是图中红线路径。很显然,这样的转发路径在RouterB这里走了一个弯路,因为RouterB完全可以将数据直接通过多点可达网络转发给RouterC,也就是蓝色的路径。当出现这样的情况时,ASBR-1在引入RouterC的外部网络时,将FA项填写为RouterC的接口地址2.2.2.2,这样RouterB会通过SPF计算,将2.2.2.2作为这些外部网络的下一跳,就避免了数据多传一跳情况的发生。当然在实际情况中可能ASBR-1和RouterB之间有多台设备,虽然只有一个ASBR,但是FA使OSPF区域中不同设备访问外部网络时,可以根据FA计算出更合理的下一跳。RouterBASBR-1RouterCRouterAOSPF区域2.2.2.1/242.2.2.3/242.2.2.2/24Interfaceloop01.1.1.1/32Type:ASELsid:1.1.1.1Advrtr:10.0.0.1Lsage:540Len:36Seq#:80000001Chksum:0x118aOptions:(DC)Netmask:255.255.255.255Tos0metric:1Etype:2ForwardingAddress:2.2.2.2Tag:1图1FA的作用1.2.2配置RouterCinterfaceEthernet0/0ipaddress2.2.2.2255.255.255.0ripversion2multicast#interfaceLoopBack0ipaddress1.1.1.1255.255.255.255#ripundosummarynetwork2.0.0.0network1.0.0.0ASBR-1routerid10.0.0.1#interfaceEthernet2/0ipaddress2.2.2.4255.255.255.0ripversion2multicast#interfaceLoopBack0ipaddress10.0.0.1255.255.255.255#ospf1import-routeriparea0.0.0.1network2.2.2.00.0.0.255network10.0.0.10.0.0.0#ripundosummarynetwork2.0.0.0RouterBrouterid10.0.0.2#interfaceEthernet0/0/0ipaddress2.2.2.3255.255.255.0#interfaceLoopBack1ipaddress10.0.0.2255.255.255.255#ospf1area0.0.0.1network2.2.2.00.0.0.255network10.0.0.20.0.0.01.2.3结果RouterBdisplayospflsdbase1.1.1.1OSPFProcess1withRouterID10.0.0.2LinkStateDatabaseType:ASELsid:1.1.1.1Advrtr:10.0.0.1Lsage:304Len:36Seq#:80000001Chksum:0x118aOptions:(DC)Netmask:255.255.255.255Tos0metric:1Etype:2ForwardingAddress:2.2.2.2Tag:1RouterBdisplayiprouting-tableRoutingTable:publicnetDestination/MaskProtocolPreCostNexthopInterface1.1.1.1/32O_ASE15012.2.2.2Ethernet0/0/02.2.2.0/24DIRECT002.2.2.3Ethernet0/0/02.2.2.3/32DIRECT00127.0.0.1InLoopBack010.0.0.1/32OSPF1022.2.2.4Ethernet0/0/010.0.0.2/32DIRECT00127.0.0.1InLoopBack0127.0.0.0/8DIRECT00127.0.0.1InLoopBack0127.0.0.1/32DIRECT00127.0.0.1InLoopBack02FA对路由计算的影响2.1目前VRP对FA填写的规定这个规定与CISCO的IOS相同。OSPF在ASBR的下一跳接口启动;ASBR的下一跳接口没有被设置为被动接口;ASBR的下一跳接口不是OSPFP2P或P2MP类型的;ASBR的下一跳接口地址是落在OSPF协议中发布的网络范围之内;除此之外,其它情况FA都填为0.0.0.0。2.2覆盖FA的路由问题在RFC中规定,覆盖FA的路由必须是区域内或区域间路由。为什么要做这样一个检查呢。我们知道OSPF是一个无环的链路状态协议,区域内的无环是依靠最短路径树来保证,而区域间的无环是依靠非骨干区域和骨干区域连接来实现,这些方法保证了AS内部路由计算的可靠性。但是OSPF无法控制AS外部的路由信息是否可靠,FA本身就是用于转发到达外部网络的地址,如果用一个外部路由来递归查找FA并进行路由计算,那么很可能会导致路由问题。在VRP早期的版本中,对FA的查找可以递归到一个外部路由上,这样会导致问题。我们来看下面的例子。RouterBASBR-1RouterAABRASBR-2RouterDRouterC2.2.1.0/242.2.3.0/242.2.4.0/24…….area1area02.2.2.1/242.2.2.3/242.2.2.2/24Interfaceloop01.1.1.1/32summary2.2.0.0/16Ase:1.1.1.1/32ABRSnet:2.2.0.0/16ABRotherIGP2.2.2.0/24otherIGP2.2.2.0/24Ase:1.1.1.1/32ABRAse:2.2.2.0/24ASBR-2Snet:2.2.0.0/16ABR图2外部路由迭代FA先不考虑所有红色的拓扑部分。正常情况下ASBR-1从RouterA获得了外部路由1.1.1.1/32并且将FA填写为2.2.2.2。在ABR处,实施了路由聚合策略,区域1的所有2网段路由被汇总了。RouterC是一个骨干区域内的路由器,它会获得3类