在OSPF的TYPE-5和TYPE-7的LSA中有一个字段:转发地址,forwarding address,可以简称FA地址。在TCP/IP路由技术第一卷中P345是这样描述的:

      转发地址(Forwarding Address) --是指到达所通告的目的地的数据包 应该被转发到的地址。如果转发地址是0.0.0.0,那么数据包将被转发到始发ASBR上。

     如果是非0,那么其他路由器如果要发往该网络,则将数据包转发到这个FA地址,再用FA地址所在的路由器转发出去。

 那么什么情况下FA地址是0.0.0.0呢?实验拓扑如下图:

 

OSPF Type-5 lsa转发地址_第1张图片

基本的配置不发上来了,主要是在R3上:

 

   
   
   
   
  1. router ospf 100 
  2.  router-id 3.3.3.3 
  3.  log-adjacency-changes 
  4.  redistribute rip subnets 
  5.  network 192.168.1.3 0.0.0.0 area 1 
  6. router rip 
  7.  version 2 
  8.  network 34.0.0.0 
  9.  no auto-summary 

接着:

 

OSPF Type-5 lsa转发地址_第2张图片

图中显示下一跳地址是0.0.0.0,则其他路由器要发往4。4。4。0这个网络时,都必须把数据包发往该ASBR。

看看非0的实验:

首先:

 

OSPF Type-5 lsa转发地址_第3张图片

 

 

   
   
   
   
  1. R2: 
  2.  
  3. router ospf 100 
  4.  router-id 2.2.2.2 
  5.  log-adjacency-changes 
  6.  redistribute rip subnets 
  7.  network 0.0.0.0 255.255.255.255 area 1 
  8. router rip 
  9.  version 2 
  10.  network 192.168.1.0 
  11.  no auto-summary 
  12.  
  13. R3: 
  14.  
  15. router ospf 100 
  16.  router-id 3.3.3.3 
  17.  log-adjacency-changes 
  18.  redistribute rip 
  19.  network 192.168.1.3 0.0.0.0 area 1 
  20. router rip 
  21.  version 2 
  22.  network 34.0.0.0 
  23.  network 192.168.1.0 
  24.  no auto-summary 

看一下FA地址的变化:

 

OSPF Type-5 lsa转发地址_第4张图片

但是这个LSA是R2生成的,为什么FA地址不是192。168。1。2呢?我没有找到关于这个的资料,

  我认为,这是R2自己根据自己的路由表计算,去往这个网络最好的下一跳地址应该是192.168.1.3。想一想,如果是下一跳是192.168.1.2,那R1要去往4.4.4.0这个网络时,需要先发往R2,再邮R2发往R3,将产生多余的路由。

     关于这个我做个实验以证明:

  

OSPF Type-5 lsa转发地址_第5张图片

  我在R2和R3之间加了一条链路,具体看一下配置:

 

   
   
   
   
  1. R2: 
  2. router ospf 100 
  3.  router-id 2.2.2.2 
  4.  log-adjacency-changes 
  5.  redistribute rip subnets 
  6.   network 192.168.1.2 0.0.0.0 area 1 network 23.1.1.2 0.0.0.0 area 1 <<--这点必须注意 
  7. router rip 
  8.  version 2 
  9.  network 23.0.0.0 
  10.  no auto-summary 

 

   
   
   
   
  1. R3: 
  2.  
  3. router ospf 100 
  4.  router-id 3.3.3.3 
  5.  log-adjacency-changes 
  6.  redistribute rip 
  7.  network 192.168.1.3 0.0.0.0 area 1 
  8. network 23.1.1.3 0.0.0.0 area 1 <<--这点必须注意
  9. router rip 
  10.  version 2 
  11.  network 23.0.0.0 
  12.  network 34.0.0.0 
  13.  no auto-summary 

然后我们看R2的路由表:

 

OSPF Type-5 lsa转发地址_第6张图片

然后:

  

OSPF Type-5 lsa转发地址_第7张图片

   FA地址居然真的变成23.1.1.3,这样应该可以证明我所说的:

  R2通过自己的路由表计算出FA地址,写入type-5的FA字段,然后再通告出去。但是,必须要注意的是,R2去往23.1.1.0网络的出接口必须启用OSPF,而且,只需要出接口,另一端无所谓。

 但是如果FA地址是23.1.1.3,显然是很不好的一条路由,在R1上,显示去往4.4.4.0这个网络的下一跳是:

  

OSPF Type-5 lsa转发地址_第8张图片

这样又得到一条多余的路由了。

这里总结一个知识点:若FA地址非0,则其它路由器,如R1在考虑如何到达这个网络时,将先考虑去往这个FA地址的最优路由。

因此,当R1收到这个LSA时,将计算去往这个网络下一跳地址是192.168.1.3的路由。这是一条更优的路由。

下面引用别人所总结的一个重要的知识点:

那么OSPF中产生Type 5 LSA时,什么时候FA地址不为0.0.0.0呢?
若同时满足以下三个条件:
    a)引入的这条外部路由,其对应的出接口启用了OSPF
    b)引入的这条外部路由,其对应的出接口未设置为passive-interface
    c)引入的这条外部路由,其对应的出接口的OSPF网络类型为broadcast
则产生的Type 5 LSA,其FA地址等于该引入的外部路由的下一条地址。