• 文章搜索:
  • 目录

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    OSPF中5类LSA的Forwarding Address

    作者:  |  上传时间:2009-11-18  |  关键字:

    1           RFC中对于FA的描述

    1.1          原文

    1.1.1         RFC23282.3小节

    “The "forwarding address" has one other application.  It enables routers  in the Autonomous System's interior to function as "route servers".  For example, in Figure 2 the router RT6 could become a route server, gaining external routing information through a combination of static  configuration and external routing protocols.  RT6 would then start advertising itself as an AS boundary router, and would originate a collection of OSPF AS-external-LSAs.  In each AS-external-LSA, Router RT6 would specify the correct Autonomous System exit point to use for the destination through appropriate setting of the LSA's "forwarding address" field.”[1]

     

    FA还有另一个应用,FA可以使一个AS中的某一台路由器成为一个路由服务器。这样该路由器宣告自己为一个ASBR,并且把将通过静态配置或者其它路由协议得到的路由信息以5LSA的形式引入到OSPF区域之中,并且通过设定FA来标明正确的AS出口位置。

     

    1.1.2         RFC232816.4小节

    “Call the destination described by the LSA N.  N's address is  obtained by masking the LSA's Link State ID     with the   network/subnet mask contained in the body of the LSA.  Look  up the routing table entries (potentially one per attached area) for the AS boundary router (ASBR) that originated the  LSA. If no entries exist for router    ASBR (i.e., ASBR is  unreachable), do nothing with this LSA and consider      the next  in the list.

     

    Else, this LSA describes an  AS external path to destination N.       Examine the forwarding address specified in the AS-external-LSA.  This  indicates the IP address to which  packets for the destination should be forwarded.

     

    If the forwarding address is set to 0.0.0.0, packets should be sent to the ASBR itself.   ……

     

    If the forwarding address is non-zero, look up the forwarding address in the routing table.[24] The matching routing table entry must specify an intra-area or inter-area path; if no such path exists, do nothing with the LSA and consider the next in the list.”[2]

     

    如果LSA描述的目标网络为NN的地址通过LSALS IDLSA体中的网络掩码计算而来。在路由表中查找生成该LSAASBR。如果不存在该ASBR的表项(比如ASBR不可达),那么对该LSA不做操作。

     

    否则,该LSA就描述了到达AS外部网络N的路径。检查AS-external-LSA中的转发地址,这个地址就是发往该目标网络N的数据包应该被送达的地址。

     

    如果转发地址被设为0.0.0.0,包应当被转发到ASBR……..

     

    如果转发地址不是零,那么在路由表中查找FA。匹配FA的路由表项必须是区域内或区域间路径,如果没有符合条件的表项存在,那么对该LSA不做操作。

     

    1.2          例子

    1.2.1         说明

    RFC中对于FA的定义可以看出,FA为外部路由提供了额外的转发信息。FA的重点有两个部分,一个是ASBR与外部路由器的连接必定是通过一个多点可达的网络(NBMA或者以太网);另一个重点是,FA0时,SPF计算会根据FA来计算目标网络的下一跳,因此需要对覆盖FA的路由信息做检查。从下面这个例子中可以看到FA的作用。

    见下图。RouterCOSPF区域外部的路由器,它通过一个多点可达的网络与ASBR-1RouterB连接。ASBR-1RouterC的网络引入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-1RouterB之间有多台设备,虽然只有一个ASBR,但是FA使OSPF区域中不同设备访问外部网络时,可以根据FA计算出更合理的下一跳。

    routers

                                                                                                                                                                           图1 FA的作用

    1.2.2         配置

    RouterC

    interface Ethernet0/0

     ip address 2.2.2.2 255.255.255.0

     rip version 2 multicast

    #

    interface LoopBack0

     ip address 1.1.1.1 255.255.255.255

    #

    rip

     undo summary

     network 2.0.0.0

     network 1.0.0.0

    ASBR-1

    router id 10.0.0.1

    #

    interface Ethernet2/0

     ip address 2.2.2.4 255.255.255.0

     rip version 2 multicast

    #

    interface LoopBack0

     ip address 10.0.0.1 255.255.255.255

    #

    ospf 1

     import-route rip

     area 0.0.0.1

    network 2.2.2.0 0.0.0.255

    network 10.0.0.1 0.0.0.0

    #

    rip

     undo summary

     network 2.0.0.0

     

    RouterB

    router id 10.0.0.2

    #

    interface Ethernet0/0/0

     ip address 2.2.2.3 255.255.255.0

    #

    interface LoopBack1

     ip address 10.0.0.2 255.255.255.255

    #

    ospf 1

     area 0.0.0.1

      network 2.2.2.0 0.0.0.255

      network 10.0.0.2 0.0.0.0

     


    1.2.3         结果

     

    <RouterB>display ospf lsdb ase 1.1.1.1

     

                     OSPF Process 1 with Router ID 10.0.0.2

                              Link State Database

     

    Type     : ASE

    Ls id     : 1.1.1.1

    Adv rtr   : 10.0.0.1

    Ls age    : 304

    Len      : 36

    Seq#     : 80000001

    Chksum   : 0x118a

    Options   : (DC)

    Net mask  : 255.255.255.255

       Tos 0 metric: 1

       E type    : 2

       Forwarding Address :2.2.2.2

       Tag: 1

     

     

    <RouterB>display ip routing-table

     Routing Table: public net

    Destination/Mask   Protocol Pre  Cost        Nexthop         Interface

    1.1.1.1/32         O_ASE    150  1           2.2.2.2         Ethernet0/0/0

    2.2.2.0/24         DIRECT   0    0           2.2.2.3         Ethernet0/0/0

    2.2.2.3/32         DIRECT   0    0           127.0.0.1       InLoopBack0

    10.0.0.1/32        OSPF     10   2           2.2.2.4         Ethernet0/0/0

    10.0.0.2/32        DIRECT   0    0           127.0.0.1       InLoopBack0

    127.0.0.0/8        DIRECT   0    0           127.0.0.1       InLoopBack0

    127.0.0.1/32       DIRECT   0    0           127.0.0.1       InLoopBack0

     

     


    2           FA对路由计算的影响

    2.1   CMWFA填写的规定

    CMWH3C网络产品使用的操作系统,CMWFA的填写作了如下规定:

    l         OSPFASBR的下一跳接口启用;

    l         ASBR的下一跳接口没有被设置为被动接口;

    l         ASBR的下一跳接口不是OSPF P2PP2MP类型的;

    l         ASBR的下一跳接口地址是落在OSPF协议中发布的网络范围之内;

    l         除此之外,其它情况FA都填为0.0.0.0

    2.2          覆盖FA的路由问题

    RFC中规定,覆盖FA的路由必须是区域内或区域间路由。为什么要做这样一个检查呢。我们知道OSPF是一个无环的链路状态协议,区域内的无环是依靠最短路径树来保证,而区域间的无环是依靠非骨干区域和骨干区域连接来实现,这些方法保证了AS内部路由计算的可靠性。但是OSPF无法控制AS外部的路由信息是否可靠,FA本身就是用于转发到达外部网络的地址,如果用一个外部路由来迭代查找FA并进行路由计算,那么很可能会导致路由问题。我们来看下面的例子:

    22

                                                                                                                                                                  图2 外部路由迭代FA

    先不考虑所有红色的拓扑部分。正常情况下ASBR-1RouterA获得了外部路由1.1.1.1/32并且将FA填写为2.2.2.2。在ABR处,实施了路由聚合策略,区域1的所有2网段路由被汇总了。RouterC是一个骨干区域内的路由器,它会获得3类汇总的LSA2.2.0.0/165LSA1.1.1.1/32并且计算出正确的路由,下一跳都会指向ABR。这个时候跟第一个例子基本上是完全相同的。

    当考虑到红色的拓扑部分时,就有了一些变化。在OSPF区域外部RouterARouterD之间运行IGP并且将2.2.2.0/24传递给RouterD,然后ASBR-2做路由引入,将2.2.2.0/24这样一个5类的LSA泛洪进骨干区域。这个时候骨干区域内的路由器RouterCLSA会包括这样3条:

    Ase: 1.1.1.1/32    FA=2.2.2.2

    Ase: 2.2.2.0/24    Adv router=ASBR-2

    Snet:2.2.0.0/16    Adv router=ABR

    如果按照更精确的外部路由来迭代FA,那么路由计算的结果就是1.1.1.1/32的下一跳指向ASBR-2,接着ASBR-2会将数据报文送到RouterD,而RouterD可能没有到达1.1.1.1/32的路由,于是出现问题。

    可见对于迭代FA的路由进行限制是必要的。

     

    2.3    到底在哪个路由表里查找ASBRFA

    RFC中规定,当收到5LSA并做路由计算时,要求首先看引入该5LSAASBR是否路由可达,否则就不对该LSA做处理。当FA0时,存在类似的问题,需要查找覆盖FA的区域内或者区域间路由,如果存在才进行处理。

     

    2.3.1          ASBR的可达性

    在第二个例子中,如果RouterA这里进行路由过滤,只允许1.1.1.1/32放入路由表。这时候虽然全局路由表中没有ASBR的路由,但是也会计算出正确的外部路由进入路由表,下文的配置和路由显示说明了这一点。在全局路由表中并不存在ASBR的路由(多数情况下ASBR只是作为一个LSA用于SPF计算,确实并不会产生全局路由的条目),那么是不是说只要LSA存在,能构造出正确的SPF计算树,就可以计算出正确的外部路由呢?

    RouterA

    router id 10.0.0.3

    #

    interface Ethernet0/0/0

     ip address 2.2.1.1 255.255.255.0

    #

    interface LoopBack0

     ip address 10.0.0.3 255.255.255.255

    #

    ospf 1

     filter-policy ip-prefix ase import

     area 0.0.0.0

      network 2.2.1.0 0.0.0.255 

      network 10.0.0.3 0.0.0.0

    #

     ip ip-prefix ase index 10 permit 1.1.1.1 32  


     


    [RouterA] display ip routing-table

     Routing Table: public net

    Destination/Mask   Protocol Pre  Cost        Nexthop         Interface

    1.1.1.1/32         O_ASE    150  1           2.2.1.2         Ethernet0/0/0

    2.2.1.0/24         DIRECT   0    0           2.2.1.1         Ethernet0/0/0

    2.2.1.1/32         DIRECT   0    0           127.0.0.1       InLoopBack0

    10.0.0.3/32        DIRECT   0    0           127.0.0.1       InLoopBack0

    127.0.0.0/8        DIRECT   0    0           127.0.0.1       InLoopBack0

    127.0.0.1/32       DIRECT   0    0           127.0.0.1       InLoopBack0

     

     

    RFC的定义中使用了routing table这个词来定义对ASBR可达性,或者FA迭代查找的位置。 其实这里的routing table是指OSPF的路由表。CMW中有一个专门的ABR&ASBR路由表,可以通过命令display ospf abr-asbr来显示相关的内容:

     

                     OSPF Process 1 with Router ID 104.0.0.6

     

    Routing Table to ABR and ASBR

     

     I = Intra i = Inter A = ASBR B = ABR S = SumASBR

    Destination        Area            Cost   Nexthop         Interface

    IB 104.0.0.3       0.0.0.0         1      104.1.36.1      Ethernet1/0

    iS 1.1.1.1         0.0.0.0         1563   104.1.36.1      Ethernet1/0

     

    对于ASBR可达性的查询是以这个表为依据的。

     

    2.3.2          迭代FA路由的问题

    ASBR可达性查找完成了后,就会看5LSAFA是否为0,当非0时,要在routing table中查找是否有合法的表项来迭代FA(合法的为intra&inter)。这里的routing table很显然也并非全局路由表。细心的人可能已经注意到这个问题,在1.2小节中的例子里,路由器RouterB使用了FA项作为转发ASE的下一跳,但是在RouterB的路由表中覆盖FA的只有一条直连路由而已!这说明了迭代FA的查找在这里肯定不是在全局路由表中进行的。

    CMW中,使用display ospf routing可以看到这样一张OSPF的路由表。

    [RouterB-ospf-1] display ospf routing

     

                     OSPF Process 1 with Router ID 10.0.0.2

                                  Routing Tables

     

    Routing for Network

    Destination             Cost Type NextHop         AdvRouter        Area

    2.2.2.0/24                 1 Stub 2.2.2.3         10.0.0.2        0.0.0.1

    ……….

     

     

    与全局路由表比较一下,会发现即使是直连网段,只要OSPF被使能,就会存在于OSPF路由表中。

    [RouterB-ospf-1] display ip routing-table

     Routing Table: public net

    Destination/Mask   Protocol Pre  Cost        Nexthop         Interface

    1.1.1.1/32         O_ASE    150  1           2.2.2.2         Ethernet0/0/0

    2.2.2.0/24         DIRECT   0    0           2.2.2.3         Ethernet0/0/0

    2.2.2.3/32         DIRECT   0    0           127.0.0.1       InLoopBack0

     

     

    这解释了前面对FA迭代合法性的问题。

    那么如果在直连网段上OSPF没有被使能,会出现什么情况呢?这时候在OSPF路由表中存在可迭代FAintra类型OSPF路由

                     OSPF Process 1 with Router ID 10.0.0.2

                                  Routing Tables

     

    Routing for Network

    Destination             Cost Type NextHop         AdvRouter        Area

    2.2.2.0/24                 3 Stub 104.1.23.3         10.0.0.1        0.0.0.1

    ……….(104.1.23.3ASBR-1RouterB建立OSPF邻接关系的地址)

     

    这时候路由计算的结果将变为:

    [RouterB-ospf-1] display ip routing-table

     Routing Table: public net

    Destination/Mask   Protocol Pre  Cost        Nexthop         Interface

    1.1.1.1/32         O_ASE    150  3           104.1.23.3         Ethernet0/0/1

    2.2.2.0/24         DIRECT   0    0           2.2.2.3         Ethernet0/0/0

    2.2.2.3/32         DIRECT   0    0           127.0.0.1       InLoopBack0

     

     

    前文提到CMW对于FA的迭代是直接在合法路由中进行,所以虽然2.2.2.2地址直连可达,但是因为OSPF没有在2.2.2.3接口上被使能,所以RouterBOSPF路由表中只计算出通过ASBR-1到达2.2.2.0/24的路由,按照OSPF路由表计算的结果自然是将下一跳指向了ASBR-1

    上面的内容说明如果计算ASE的路由器并不存在与ASBR的直接邻接,并且FA如果直连可达,则为了使FA实现转发的优化,必须在直连FA的接口也使能OSPF,可以同时将该接口配置为被动接口以减少对网络的影响。比如如下的拓扑。

    1111

                                                                                                                                                              图3 FA对转发的优化

     

    3           总结

    3.1          FA0

    当一个ASE中的FA0时,按照Adv Rtr(也就是ASBR)来计算该ASE的下一跳。

    3.2          FA为非0

    同时满足如下条件时,ASBR会在ASEFA域内填写转发地址。

    l         OSPFASBR与外部网络连接的下一跳接口启动;

    l         ASBR与外部网络连接的下一跳接口没有被设置为被动接口;

    l         ASBR与外部网络连接的下一跳接口不是OSPF P2PP2MP类型的;

    l         ASBR与外部网络连接的下一跳接口地址是落在OSPF协议中发布的网络范围之内;

     

    当一个ASE中的FA为非0时,就不考虑Adv Rtr了,而是用FA来计算该ASE的下一跳。

    对于CMW来说,会在OSPF路由表中寻找区域内或区域间路由迭代查找FA,如果找不到,该LSA就丢弃,不计算。

    3.3          组网中需要注意的问题

    在组网中可能遇到不同厂家的设备或者是相同厂家不同版本的设备,在对FA的处理上可能会存在不同,所以需要在配置规划中注意一些问题:

    l         尽量在ASBR处对外部路由进行聚合。

    l         如果不在ASBR处进行路由聚合,那么进行路由过滤,只引入希望引入的外部路由。

    l         如果ASBR连接外部网络的接口上使能了OSPF,并且该接口连接了一个多点可达的网络,那么在所有OSPF内的路由器,要可以通过区域内或者区域间路由访问ASBR连接外部网络的接口地址。

    l         如果路由器并不存在与ASBR的直接邻接,并且FA直连可达。为了使FA实现转发的优化,必须在直连FA的接口也使能OSPF,可以同时将该接口配置为被动接口以减少对网络的影响。