FA是Forwarding Address的简写。FA是ASBR通告的TYPE 5 LSA中的字段,它的作用是告诉OSPF域内的路由器如何能够更快捷地到达LSA 5所通告路由的下一跳地址。以免OSPF内部路由器在广播网络上以ASBR为下一跳,再由ASBR自己转发到正确的下一跳,而产生额外的路由。简单来说,FA字段的作用类似于BGP协议中的“第三方下一跳”概念,主要在广播共享网络中起作用。

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

 

5类LSA FA字段可以为全0或者非0两种选择,有以下几个规则:

1、当与引入路由的下一跳关联(互连)的接口没有启动OSPF时,FA设置为0;

例如在上面图中,R1引入直连接口E0/1的路由,此接口没有启动OSPF,因此TYPE 5的LSA中 FA字段为0。  www.2cto.com  

2、当下列所有条件均满足的情况下,TYPE 5 LSA中FA字段设置为非0:

1、在ASBR上,与引入外部路由下一跳关联的接口启动了OSPF,即位于Network

命令范围内。

2、在ASBR上,与引入外部路由下一跳关联的接口不能配置被动接口;

//前两个规则是确保LSA能够被通告。

3、在ASBR上,与引入外部路由下一跳关联的接口配置的OSPF网络类型不能是P2P或P2MP。

//确保网络类型是Broadcast或NBMA的共享网络。

在满足以上条件后,5类LSA的转发地址为连接外部路由下一跳的接口IP,如下图中的R2E0/0和R3E0/0。

 

FR是如何影响OSPF的路由选择的?

1、计算外部路由时,首先检查通告TYPE 5 LSA的ASBR是否存在,否则忽略该LSA;

2、检查TYPE 5 LSA的FA地址是否为0。如为0,说明路由必须经过ASBR转发,那么优选到ASBR metric最短的路径。当有多个最短路径时,优选从较大area ID学习到的。

3、如果FA非0,那么优选到FA地址 metric最短的路径。


20120810022700697.jpg

 

此图中R4和R1在区域0,R1通过RIP重分布学习到外部路由,R2和R3都运行RIP。中间的交换机主要用来模拟出一个总线型网络,R1 E0/1 , R2 R3 E0/0都在同一网段。

R4配置如下:  www.2cto.com  

R4(config)#router ospf 1

R4(config-router)#router-id 4.4.4.4

R4(config-router)#passive-inter de

R4(config-router)#no passive-int e0/0

R4(config-router)#network 4.4.4.4 0.0.0.0 area 0

R4(config-router)#network 10.0.1.0 0.0.0.3 area 0

R4(config-router)#network 10.1.0.0 0.0.0.255 area 0
 

R1配置如下:

R1(config-if)#router ospf 1

R1(config-router)#router-id 1.1.1.1

R1(config-router)#passive-inter de

R1(config-router)#no passive-inter e0/0

R1(config-router)#no passive-inter e0/1

R1(config-router)#network 172.16.0.0

R1(config-router)#network 172.16.1.0 0.0.0.255 area 0

R1(config-router)#network 1.1.1.1 0.0.0.0 area 0

R1(config-router)#network 10.0.1.0 0.0.0.3 area 0

R1(config-router)#redistribute rip subnets metric 1000 //将RIP重分布到OSPF中类型1开销1000

R2配置如下:
 

R2(config)#router rip

R2(config-router)#ver 2

R2(config-router)#no auto-summary

R2(config-router)#network 172.16.0.0

R2(config-router)#network 10.0.0.0

R2(config-router)#network 2.0.0.0

R2(config-router)#redistribute ospf 1 metric 5

R3配置如下:

R3(config-if)#router rip

R3(config-router)#ver 2

R3(config-router)#no auto-summary

R3(config-router)#network 172.16.0.0

R3(config-router)#network 10.0.0.0

R3(config-router)#network 3.0.0.0

当R1上没有将172.16.1.0网段发布到OSPF中时(no network 172.16.1.0 0.0.0.255 area 0)在R4上查看路由:

R4#show ip route ospf

O E1    10.2.0.0/24 [110/1010] via 10.0.1.2, 00:03:21, Ethernet0/0

O E1    10.3.0.0/24 [110/1010] via 10.0.1.2, 00:03:21, Ethernet0/0
 

查看5类LSA:  www.2cto.com  

 LS age: 271

  Options: (No TOS-capability, DC)

  LS Type: AS External Link

  Link State ID: 10.2.0.0 (External Network Number )

  Advertising Router: 1.1.1.1

  LS Seq Number: 80000003

  Checksum: 0x6610

  Length: 36

  Network Mask: /24

        Metric Type: 1 (Comparable directly to link state metric)

        TOS: 0

        Metric: 1000

        Forward Address: 0.0.0.0 //转发地址为0.0.0.0

        External Route Tag: 0
 

由此可发现但转发地址为0.0.0.0时,外部路由开销的计算就是到达ASBR的开销+外部开销=10+1000=1010

当R1上将172.16.1.0网段发布到OSPF中时(network 172.16.1.0 0.0.0.255 area 0)在R4上查看路由:

R4#show ip route ospf

O E1    10.2.0.0/24 [110/1020] via 10.0.1.2, 00:00:16, Ethernet0/0

O E1    10.3.0.0/24 [110/1020] via 10.0.1.2, 00:00:16, Ethernet0/0

 LS age: 172

  Options: (No TOS-capability, DC)

  LS Type: AS External Link

  Link State ID: 10.2.0.0 (External Network Number )

  Advertising Router: 1.1.1.1

  LS Seq Number: 80000004

  Checksum: 0x6610

  Length: 36

  Network Mask: /24

        Metric Type: 1 (Comparable directly to link state metric)

        TOS: 0

        Metric: 1000

        Forward Address: 172.16.1.2 ///转发地址为直连外部路由下跳接口IP        External Route Tag: 0

 LS age: 2796

  Options: (No TOS-capability, DC)

  LS Type: AS External Link

  Link State ID: 10.3.0.0 (External Network Number )

  Advertising Router: 2.2.2.2

  LS Seq Number: 80000002

  Checksum: 0x4E24

  Length: 36

  Network Mask: /24

        Metric Type: 1 (Comparable directly to link state metric)

        TOS: 0

        Metric: 1000  www.2cto.com  

        Forward Address: 172.16.1.3 //转发地址为直连外部路由下跳接口IP

        External Route Tag: 0Link connected to: a Stub Network

     1类LSA:

(Link ID) Network/subnet number: 172.16.1.0

     (Link Data) Network Mask: 255.255.255.0

      Number of TOS metrics: 0

       TOS 0 Metrics: 10
 

由此可发现但转发地址不为0时,外部路由开销的计算就是到达转发地址的开销+外部开销=10+10+1000=1020

在R1上配置被动接口(R1(config-router)#passive-interface e0/1):

 Routing Bit Set on this LSA

  LS age: 19

  Options: (No TOS-capability, DC)

  LS Type: AS External Link

  Link State ID: 10.2.0.0 (External Network Number )

  Advertising Router: 1.1.1.1

  LS Seq Number: 80000005

  Checksum: 0xF26

  Length: 36

  Network Mask: /24

        Metric Type: 1 (Comparable directly to link state metric)

        TOS: 0Metric: 1000

        Forward Address: 0.0.0.0  //5类LSA的转发地址全变为0.0.0.0

        External Route Tag: 0

大家思考如果是七类LSA的转发地址会怎么样?

20120810022701671.jpg

 

区域2是NSSA区域,RIP通过重发布到OSPF中,那么RT2产生的七类LSA的转发地址是怎么样的,经RT6做7转5后,转发地址会有什么变化?

关于这张拓扑的配置请见前面博文:http://tangfangxiao.blog.51cto.com/2116646/632997 

如果172.16.24.0/30的网段没有发布到OSPF中,7类LSA的转发地址会像5类那样变为0.0.0.0吗?如果是的话,在RT6上作7转5后,转发地址还是0.0.0.0,那这表示是到达RT6还是RT2这个ASBR呢?所以7类LSA的转发地址不可能为0.0.0.0,7类转5时,不会改变转发地址。
 

当172.16.24.0/24没有发布到OSPF中,转发地址为Router-id.

  LS age: 324

  Options: (No TOS-capability, Type 7/5 translation, DC)

  LS Type: AS External Link

  Link State ID: 172.16.4.0 (External Network Number )

  Advertising Router: 2.2.2.2

  LS Seq Number: 80000001

  Checksum: 0xB1BC  www.2cto.com  

  Length: 36

  Network Mask: /24

        Metric Type: 1 (Comparable directly to link state metric)

        TOS: 0 

        Metric: 1000 

        Forward Address: 2.2.2.2  //转发地址不为0

        External Route Tag: 0
 

我重新指定Router-id,重启OSPF进程:

R2(config-router)#do show ip ospf   

 Routing Process "ospf 1" with ID 10.10.10.10 //router-id为10.10.10.10

 Supports only single TOS(TOS0) routes

 Supports opaque LSA

 

Link State ID: 172.16.4.0 (External Network Number )

  Advertising Router: 2.2.2.2

  LS Seq Number: 80000002

  Checksum: 0x410C

  Length: 36

  Network Mask: /24

        Metric Type: 1 (Comparable directly to link state metric)

        TOS: 0 

        Metric: 1000 

        Forward Address: 10.10.10.10 //转发地址为10.10.10.10

        External Route Tag: 0
 

在RT6上经过7类转5类的LSA的转发地址不会改变:

LS age: 12

  Options: (No TOS-capability, DC)

  LS Type: AS External Link  //5类LSA

  Link State ID: 172.16.4.0 (External Network Number )

  Advertising Router: 6.6.6.6 //通告路由器

  LS Seq Number: 80000001

  Checksum: 0x5FE8

  Length: 36

  Network Mask: /24

        Metric Type: 1 (Comparable directly to link state metric)

        TOS: 0   www.2cto.com  

        Metric: 1000 

        Forward Address: 10.10.10.10  //转发地址不变
 

其它的跟5类LSA的转发地址一样,大家可以去验证一下,我就不写了!

最后总结一下:

5类LSA若同时满足以下三个条件:

a)引入的这条外部路由,其对应的出接口启用了OSPF

b)引入的这条外部路由,其对应的出接口未设置为passive-interface

c)引入的这条外部路由,其对应的出接口的OSPF网络类型为broadcast

则产生的Type 5 LSA,其FA地址等于该引入的外部路由的下一条地址,反之为0.0.0.0(ASBR)

7类LSA的转发地址不会为0.0.0.0,满足以上三个条件为外部路由的下一条地址,反之为Router-id。