在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呢?实验拓扑如下图:
基本的配置不发上来了,主要是在R3上:
- router ospf 100
- router-id 3.3.3.3
- log-adjacency-changes
- redistribute rip subnets
- network 192.168.1.3 0.0.0.0 area 1
- !
- router rip
- version 2
- network 34.0.0.0
- no auto-summary
接着:
图中显示下一跳地址是0.0.0.0,则其他路由器要发往4。4。4。0这个网络时,都必须把数据包发往该ASBR。
看看非0的实验:
首先:
- R2:
- router ospf 100
- router-id 2.2.2.2
- log-adjacency-changes
- redistribute rip subnets
- network 0.0.0.0 255.255.255.255 area 1
- !
- router rip
- version 2
- network 192.168.1.0
- no auto-summary
- !
- R3:
- router ospf 100
- router-id 3.3.3.3
- log-adjacency-changes
- redistribute rip
- network 192.168.1.3 0.0.0.0 area 1
- !
- router rip
- version 2
- network 34.0.0.0
- network 192.168.1.0
- no auto-summary
- !
看一下FA地址的变化:
但是这个LSA是R2生成的,为什么FA地址不是192。168。1。2呢?我没有找到关于这个的资料,
我认为,这是R2自己根据自己的路由表计算,去往这个网络最好的下一跳地址应该是192.168.1.3。想一想,如果是下一跳是192.168.1.2,那R1要去往4.4.4.0这个网络时,需要先发往R2,再邮R2发往R3,将产生多余的路由。
关于这个我做个实验以证明:
我在R2和R3之间加了一条链路,具体看一下配置:
- R2:
- router ospf 100
- router-id 2.2.2.2
- log-adjacency-changes
- redistribute rip subnets
- network 192.168.1.2 0.0.0.0 area 1 network 23.1.1.2 0.0.0.0 area 1 <<--这点必须注意
- !
- router rip
- version 2
- network 23.0.0.0
- no auto-summary
- R3:
- router ospf 100
- router-id 3.3.3.3
- log-adjacency-changes
- redistribute rip
- network 192.168.1.3 0.0.0.0 area 1
- network 23.1.1.3 0.0.0.0 area 1 <<--这点必须注意
- !
- router rip
- version 2
- network 23.0.0.0
- network 34.0.0.0
- no auto-summary
- !
然后我们看R2的路由表:
然后:
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这个网络的下一跳是:
这样又得到一条多余的路由了。
这里总结一个知识点:若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地址等于该引入的外部路由的下一条地址。