分发列表与策略路由都是影响路由的路由工具。
Distribute-list:
只能过滤路由信息。
对于距离矢量协议:传递的是纯路由信息,使用分发列表毫无影响。
对于链路状态协议:
(1)in方向,分发列表只能在本地收到LSA后,生成路由的那一刹那进行路由的过滤,执行分发列表的路由器自己路由表会被分发列表影响(但是本地LSDB仍然是有LSA的),而且该路由器仍会将LSADB中的LSA发送给邻居,因此本地被过滤的路由,邻居还有。
(2)out方向,分发列表只能工作在执行路由重发布动作的那个ASBR上,且只能针对外部引入的路由起作用。因为OSPF执行重发布时,其实这些外部路由是以路由的形式引入进来的,因此分发列表在这个场合下能够正常工作,但是如果不是本地始发的外部路由,或者是内部的OSPF路由,out方向的分发列表均束手无策。
一般习惯用于路由in方向,也就是接收更新路由的接口的方向,对入站方向的路由做一个控制,筛选掉多余的、不需要的路由条目,特别是在路由条目比较多的时候,因为路由器性能的限制,路由条目比较多的时候路由器的CPU,Memory等硬件的使用率会上升,导致路由器卡顿影响用户体验甚至宕机。
注:这里有个坑,在使用向运营商购买的BGP专线时,会对BGP的数量有限制。上次被坑惨,BGP专线莫名中断,排除我们自身的问题后跟运营商报障,然后反馈说BGP路由条目超了(因为我们内网的OSPF重分布到了BGP中,该汇总的都汇总了),就断了我们的路由,超出的路由条目计算价格20rmb/条/月,一个字,坑爹!
router bgp 65430 //ce端用私有AS号
no synchronization
bgp log-neighbor-changes
network 10.118.18.0 mask 255.255.255.0
network 10.168.110.40 mask 255.255.255.252
network 192.168.0.0
network 172.16.10.0
neighbor 10.168.110.42 remote-as 4809 //电信购买的公有AS号
neighbor 10.168.110.42 description China CT PE
neighbor 10.168.110.42 distribute-list BGP65430_IN in
no auto-summary
(1)RIP环境:
路由器IP命名规则:R1-R2=12.1.1.1-12.1.1.2
R1左边为四个环回口,模拟四个网段。
R1,R2,R3都启用RIP,R1把环回口四个网段公布到RIP中,在R3的f0/0口的in方向做分发列表,使R3不接收192.168.11.1/32位路由。
做分发列表前R3的路由表:
做完分发列表后R3的路由表:
R3相关相关配置:
router rip
version 2
network 23.0.0.0
distribute-list 1 in FastEthernet0/0
no auto-summary
access-list 1 deny 192.168.11.1
access-list 1 permit any
发现做完分发列表后R3中原先192.168.11.1/32这条路由消失了。
rip作为一种距离矢量协议,传递的是纯路由信息,分发列表也只过滤路由信息。
(2)OSPF环境:
OSPF作为一种链路状态协议,传递的是LSA。
分发列表是否有效呢?
依旧是这个拓扑,各路由器no掉RIP,重新都起OSPF,起IP依旧老规矩。
依旧是拒绝192.168.11.1/32,这次在R2的f0/0口上做in方向的Distribute-list。
这次观察R2,R3做分发列表前后的路由表的变化。
((1))做之前的R2,R3路由表
((2))做之后R2,R3的路由表
很明显,在R2的f0/0做in方向的Distribute-list,对R2本身是有用的,但是对于R3没起到作用,这就是链路状态协议的特性,由于这类协议不直接传递路由,而是传递的LSA,R2将接收到的LSA整合成路由的时候Distribute-list起作用,所以R2没有192.168.11.1/32这条路由,但是R2传给R3的是LSA,R3再将收到的LSA整合成路由的时候没有任何限制,所以R3一直有192.168.11.1/32这条路由。
由此,可以知道,对于链路状态协议,在in方向的时候,Distribute-list起作用的时间是在路由器将LSA整合生成路由的一瞬间,不影响LSA的传递和后续路由器的路由生成。
至于上述情况的out方向的Distribute-list的应用,可以自行验证一下结果。