前几天在论坛上看一道na题目,貌似被称了na题库中比较难的一道题目。

题目是这样的:

 

ospf将loop设为默认端口 ospf下放默认路由_策略路由

其实就是ospf下放默认路由的问题,先废话几句,ospf下放的type 5 的lsa。ospf下放路由有2种方法:

1、必须有一条默认路由,再此基础上,进ospf进程下配置default-information originate这条命令

2、不需要默认路由,直接进ospf进程下配置default-information originate always这条命令

 

  先说说这道题目,R1是宣告明细路由与默认路由到area 0,但是默认路由的下一跳不是指向null接口,而是指向R2.R2的路由表中会有明细路由与默认路由,如果R2去访问isp(注意我这里说的是非直连R1的接口),R2是会将数据包转发给R1的,而R1查看路由表,发现没有明细路由,只有一条指向R2的默认路由,又会将数据包转发给R2的,这样就会形成环路。至于l3的环路怎么解决,当然靠time to live来解决了,当收到ttl=1或0的时候是不会转发给下一跳的,并由icmp回复一个ttl超时的差错报文给发送设备。

 

但是,如果是直连isp的接口,还是会转发给isp的,因为R1有直连的明细路由,是不需要靠默认路由来转发的。

 

好了,轮到今天的主角:策略默认路由登场了,让默认路由的下一跳问题去一边凉快去吧。

先说说路由的优先级:

明细策略路由》明细路由》默认策略路由》默认路由

 

一般策略路由都是配置在接口的,只有到达接口才能触发。(我个人理解,接口模式优先于全局模式,也许不一定对,希望有人指正啊)

好了,先上topology吧:

 

ospf将loop设为默认端口 ospf下放默认路由_策略路由_02

R1与R2:12.1.1.0/24网段

R1与R3:13.1.1.0/24网段

R1与R4:14.1.1.0/24网段

R1上面配置loopback口:1.1.1.1/24

R2上面配置loopback口:2.2.2.2/24

R3上面配置loopback口:3.3.3.3/24与33.3.3.3/24网段

R4上面配置loopback口:4.4.4.4/24

 

R1与R3与R4运行ospf,都属于传输区域。(就没配置ospf多区域了)

先看看R1上面的配置吧:

ospf将loop设为默认端口 ospf下放默认路由_ospf将loop设为默认端口_03

ospf将loop设为默认端口 ospf下放默认路由_网络_04

(这里默认路由的下一跳换了个接口,开始放在ser0/1接口的,为了给大家看看效果,就是上面题目的意思:发生loop,通信不了。

ospf将loop设为默认端口 ospf下放默认路由_策略路由_05

看R1的路由表:

 

ospf将loop设为默认端口 ospf下放默认路由_ospf将loop设为默认端口_06


有下一跳为ser0/2的默认路由。

R2的路由表

 

ospf将loop设为默认端口 ospf下放默认路由_R3_07

R3的路由表

 

ospf将loop设为默认端口 ospf下放默认路由_网络_08

R4的路由表

 

ospf将loop设为默认端口 ospf下放默认路由_路由表_09

R3与R4都没有R2上面lookback口:2.2.2.2的路由条目(明细路由),只能靠默认路由来转发。而R2上面有到达R3与R4的各个接口的静态路由。

 先来看看R3与R4访问R2,R2上面loopback口的结果:

(这里为什么要访问R2的串口,为了证明R2如果有明细路由的话,明细路由的优先级高于策略默认路由以及默认路由的)

R4的:

 

ospf将loop设为默认端口 ospf下放默认路由_ospf将loop设为默认端口_10

 

R3的:

 

ospf将loop设为默认端口 ospf下放默认路由_策略路由_11

R3 traceroute

 

ospf将loop设为默认端口 ospf下放默认路由_路由表_12

注意这里,一会比较默认路由下一跳指向R3,而且route-map作用在R1与R3直接接口上面有什么不同.这里先放放。

 

  R4 Traceroute

 

ospf将loop设为默认端口 ospf下放默认路由_路由表_13

看到结果没有,R4访问2.2.2.2,R4将数据包转发给R1,R1查看路由表将数据包返还给R4,周而复始,ttl=0才能结束。

R4发送出去的packet(traceroute为udp数据包,设置一个高的端口,如果这个端口有应用程序用就搞笑了,不过microsoft的tracert有所改进,tracert靠icmp的echo-relay查询报文来得知到达目的地。traceroute靠icmp的差错报文来得知每一跳的ip地址,到达都后靠icmp回复的端口不可达的差错报文得知达到目的地)

ospf将loop设为默认端口 ospf下放默认路由_策略路由_14

R1给予的回应:(type为11,code为0的ttl超时)

 

ospf将loop设为默认端口 ospf下放默认路由_路由表_15

R4将ttl值加+1,得知下2跳的ip地址:

 

ospf将loop设为默认端口 ospf下放默认路由_ospf将loop设为默认端口_16

R4自己给自己发的icmp差错报文(这里就是R1将该报文返还给R4了,因为这里经过R1所以ttl-1.这里就是loop了,路由器的ttl为255,想想结果吧)

 

ospf将loop设为默认端口 ospf下放默认路由_策略路由_17

结果是:默认策略路由》默认路由

 

  好了,现在将R1上面的默认路由的下一跳改为与R3直连的接口

 

ospf将loop设为默认端口 ospf下放默认路由_网络_18

再来看看R3与R4访问R2上面2.2.2.2的结果

 

ospf将loop设为默认端口 ospf下放默认路由_R3_19

ospf将loop设为默认端口 ospf下放默认路由_网络_20

 

 

看到没有R3与R4都可以访问R2上面的loopback接口了,但是2者的路由方向并不相同。

一会比较默认路由下一跳指向R3,而且route-map作用在R1与R3直接接口上面有什么不同?”

这里要分析R4的packet转发了,当R4将packet转发给R1的时候,R1查看自己的路由表发现转发给R3(这里就是13.1.1.3的来历了)。但是R1上面与R3直连的接口配置了route-map,所以R3又将packet转发回R1,(这里就是R1接口地址:13.1.1.1的来历)并由于策略默认路由优先于默认路由,packet被转发到R2了。剩下的过程由R2来处理。                                                                    

这也是我认为“一般策略路由都是配置在接口的,只有到达接口才能触发。”的由来。

 

说完了配置及原理,策略默认路由该运用在什么场合?

 

我个人认为

1、可以配置在lan内部,某些主机不想给他访问internet的权限,但是可以访问server,可以将下一跳指向与server的连接设备接口。

2、多个isp接入的网关设备上。

 


转载于:https://blog.51cto.com/fengyun/494380