这是本次实验的拓扑图。
三台路由器之间允许rip
本篇文章只介绍了在距离矢量路由协议上的影响过程。
1.首先我们要明确一个原理
距离矢量路由协议传递的是路由信息,距离矢量路由协议传递的是链路状态信息LSA/LSP。
在这张图中我们先做距离矢量路由协议,rip为例。
(1)我们先配置完接口ip地址
(2)开使配置rip,使R1,R2,R3互相学习路由
display ip routing-table 查看路由表
这时要注意观察哪些是通过rip协议学到的路由。
2.写策略信息
我们所用到的对路由进行影响的策略工具有ip-prefix(前缀列表)和acl
本实验我们使用ip-prefix进行编写
因为R2作为中间路由器,我们在R2上进行策略的编写和应用
R2:
ip ip-prefix aa index 10 permit 192.168.1.0 24
---只允许192.168.1.0 24的路由加入到路由表中
进到rip视图下进行调用
rip:
filter-policy ip-prefix aa export
---在该路由器向其他路由器发送路由信息时调用aa
这时候我们再次查看路由表,你会发现R1上没有通过rip学习到任何路由,R2的路由表没有发生变化,是全的,R3的路由表只接收了192.168.1.0,缺少了192.168.2.0和12.1.1.0.
造成这种现象的原因是因为,R2要向R1,R3发送路由,发送时匹配前缀列表,因为前缀列表中只允许了1.0通过,所以192.168.2.0,192.168.3.0和12.1.1.0,23.1.1.0不被允许发送出去,所以R1上不会学到3.0和23.1.1.0,R3上不会学到2.0和12.1.1.0
注:这是在export出方向上调用了前缀列表
我们返回到rip视图下,将刚刚做的在“出方向应用前缀列表”命令进行删除(undo)
undo filter-policy ip-prefix aa export
再做以下命令:
filter-policy ip-prefix aa import
---在该路由器接收其他路由器发送的路由信息时调用aa
注:这是在import接收方向上调用了前缀列表
再次查看路由表:
发现R2上只学到了192.168.1.0
R1上只学到了23.1.1.0
R3上学到了192.168.1.0和12.1.1.0
为什么会造成这个现象呢?
我们首先要知道,R1需要通过R2学习到192.168.3.0和23.1.1.0,R3需要通过R2学习到192.168.1.0,192.168.2.0,12.1.1.0这三个路由。R2需要从R1,和R3上学到192.168.1.0,192.168.2.0,192.168.3.0。
我们在前缀列表内编写的是只允许接受192.168.1.0的路由加入到路由表,并在R2的rip中进行调用,所以2.0和3.0的路由没有匹配上,默认被拒绝了,不会加入到R2的路由表中去。
R1要向R2学习3.0和23.1.1.0,R2上都没有学到3.0,就更不会发送给R1了,所以R1只能学到23.1.1.0.
R3要向R2学习1.0,2.0,12.1.1.0,R2上没有2.0的路由,被默认拒绝掉了,所以不会发送给R3,所以R3上不会有2.0的路由。
是这样的。
这是通过调用前缀列表对路由进行影响,通过写acl可以达到相同的效果
acl 2000
rule permit source 192.168.1.0 0.0.0.255
rip
filter-policy 2000 import ---在接收路由时调用acl
3.总结
①前缀列表只能影响路由的接受和发送,不能影响流量。而acl既可以影响流量,也可以影响路由。
② filter-policy 在距离矢量路由协议上的应用
export:发路由表,发的时候匹配,匹配成功为permit时,允许发送,匹配成功为deny时,拒绝发送,没有匹配成功,拒绝发送
import:接受路由表,接受路由时匹配,匹配成功为permit时,加入到路由表,deny时,拒绝接收,没有匹配成功,拒绝接收。
在接收路由时,会影响多个路由器的路由表。