OSPF系列:distribute-list分发列表

来源:互联网 发布:relief算法原理 编辑:程序博客网 时间:2024/05/07 08:42
一、工具概述

distribute-list分发列表是用于控制路由更新的一个工具,只能过滤路由信息,不能过滤LSA。
 
distribute-list分发列表

   如上图,R1、R2、R3运行RIP。R2在初始情况下,会将自己的路由表更新给R1,其中假设包含三条路由1.0、2.0及3.0。现在我们可以通过在R2上部署分发列表distribute-list,使得R2在更新给R1的路由信息中过滤掉3.0这条路由。这就是分发列表的一个使用示例。当然,它还有更加广泛的应用。

二、部署要点

   分发列表是用于控制路由更新的一个工具,只能过滤路由信息,不能过滤LSA。因此:分发列表在距离矢量路由协议中使用,无论是in或者是out方向,都能正常的过滤路由。但是在链路状态路由协议中的工作就有点问题了。
    The commanddistribute-list out works only on the routes being redistributed bythe Autonomous System Boundary Routers (ASBRs) into OSPF. It can beapplied to external type 2 and external type 1 routes, but not tointra-area and interarea routes.

1.对于距离矢量路由协议
 
distribute-list分发列表

   路由器之间,传递的是路由信息,分发列表对路由信息是有绝对的控制权的。因此如果是in方向,那么通过部署分发列表,可以过滤特定的路由,使得执行分发列表的本地路由路由表发生变化,同时,本地路由器在更新路由信息给下游路由器的时候,实际上更新的内容是受分发列表影响之后的条目。
同时在out方向,也是没有问题的。 

2.对于链路状态路由协议,如OSPF
 
distribute-list分发列表

   值的注意的是,对于OSPF这样的链路状态路由协议,路由器之间传递的消息不再是路由信息了,而是LSA,而分发列表是无法对LSA进行过滤的。因此,在链路状态协议中部署分发列表,就需要留意了:
  • in方向,分发列表只能在本地收到LSA后,生成路由的那一刹那进行路由的过滤,执行分发列表的路由器自己路由表会被分发列表影响(但是本地LSDB仍然是有LSA的),而且该路由器仍会将LSADB中的LSA发送给邻居,因此本地被过滤的路由,邻居还有。
  • out方向,分发列表只能工作在执行路由重发布动作的那个ASBR上,且只能针对外部引入的路由起作用。因为OSPF执行重发布时,其实这些外部路由是以路由的形式引入进来的,因此分发列表在这个场合下能够正常工作,但是如果不是本地始发的外部路由,或者是内部的OSPF路由,out方向的分发列表均束手无策。 
 
distribute-list分发列表

   例如在R1上重发布直连进OSPF,用out方向的分发列表可过滤掉1.1.1.0这条外部路由。但R1重发布进来的路由,如果在R2上用out方向的分发列表试图阻挡R3接受路由或LSA,则无法,因为这不是本地始发的外部路由。

三、配置命令

1.In方向

R1(config-router)#distribute-list 1 in ?   //都是接口
  Async            Async interface
  BVI             Bridge-Group Virtual Interface
  CDMA-Ix          CDMA Ix interface
  Dialer           Dialer interface
  FastEthernet      FastEthernet IEEE 802.3
  Multilink        Multilink-group interface
  Port-channel      Ethernet Channel ofinterfaces
  Tunnel           Tunnel interface
  Vif              PGMMulticast Host interface
  Virtual-PPP       Virtual PPPinterface
  Virtual-Template   VirtualTemplate interface
  ……

2.OUT方向
R1(config-router)#distribute-list 1 out ?  // 接口或协议
  Async            Async interface
  BVI             Bridge-Group Virtual Interface
  Dialer           Dialer interface
  FastEthernet      FastEthernet IEEE 802.3
  Loopback        Loopback interface
  Multilink        Multilink-group interface
  Port-channel      Ethernet Channel ofinterfaces
  Tunnel           Tunnel interface
  Virtual-PPP       Virtual PPPinterface
  Virtual-Template   VirtualTemplate interface
  Virtual-TokenRing  VirtualTokenRing
  bgp              BorderGateway Protocol (BGP)
  connected        Connected
  eigrp            Enhanced Interior GatewayRouting Protocol (EIGRP)
  ospf             Open Shortest Path First(OSPF)
  rip              RoutingInformation Protocol (RIP)
  static           Static routes
  ……
 


四、应用场合

1.配置示例1(单一路由协议环境下-RIP)
 
distribute-list分发列表
初始情况下,R3能够学习到R1的三条loopback路由,以及192.168.12.0/24路由。现在我们不希望R3学习到192.168.3.0/24的路由,那么可以在R2上如下配置:
R2(config)# access-list 1 deny 192.168.3.0
R2(config)# access-list 1 permit any
R2(config)# router rip
R2(config-router)# distribute-list 1 outfa 1/0
当然,在R3上,用in方向的分发列表也可以达到同样的效果。
 
2.配置示例2(单一路由协议环境下-RIP)
 
distribute-list分发列表

在R2上如果做如下配置:
R2(config)# access-list 1 deny 192.168.3.0
R2(config)# access-list 1 permit any
R2(config)# router rip
R2(config-router)# distribute-list 1 infa0/0
那么,首先R2自己的路由表会发生改变,3.0的路由被过滤掉了,同时R3也就是下游RIP路由器,3.0也学不到。

3.配置示例3(单一路由协议环境下-OSPF)
 
distribute-list分发列表

R2的配置如下:
R2(config)# access-list 1 deny 192.168.3.0
R2(config)# access-list 1 permit any
R2(config)# router ospf 1
R2(config-router)# distribute-list 1 infa0/0
注意这时候,首先在R2的路由表里,3.0的路由就被干掉了。注意,这时候实际上,area内OSPF路由器产生的LSA已经是装载到了R2的OSPFdatabase之中,而在R2从OSPFdatabase中计算路由,并准备将路由条目装载进路由表之前,in方向的分发列表发生作用了,将3.0的路由过滤掉了,因此R2的路由表中,是没有3.0的OSPF路由的。但是,虽然R2自己路由表里没3.0路由,这不妨碍R2将相关LSA泛洪给R3,因此,R3仍然是有1.0、2.0、3.0以及12.0的OSPF路由的。 

4.配置示例4(单一路由协议环境下-OSPF)
 
distribute-list分发列表

现在我们在R2上做如下配置:
R2(config)# access-list 1 deny 192.168.3.0
R2(config)# access-list 1 permit any
R2(config)# router ospf 1
R2(config-router)# distribute-list 1out 
R3的路由表会是什么情况?实际上,没有任何影响,R3能学习到全网的路由。至于为什么,我相信前面已经解释的非常清楚了。

5.配置示例5(单一路由协议环境下-OSPF out方向分发列表)
 
distribute-list分发列表

分发列表,部署在OSPF这样的链路状态路由协议中,如果要用out方向,则只能用在这样的场合。
如上图,在R1上部署,R1使用重发布直连的方式引入这三条外部路由,那么out方向的分发列表,只能在R1上部署,且对这三条路由产生作用。
R1(config)# access-list 1 deny 192.168.3.0
R1(config)# access-list 1 permit any
R1(config)# router ospf 1 
R1(config-router)# redistribute connected subnets
R1(config-router)# network 192.168.12.1 0.0.0.0 area 0
R1(config-router)# distribute-list 1out
上述配置实现后,R1将过滤掉3.0路由。


6.配置示例6 协议间重发布时部署分发列表
 
distribute-list分发列表

RIP重发布进OSPF
  • 情况1
R2的配置如下:
access-list 1 permit 1.1.1.0
router ospf 1
redistribute rip metric 10 subnets
distribute-list 1 out rip
这里这条命令的意思是,从RIP路由协议重分发过来的路由中,只允许1.1.1.0出去(到OSPF协议,没有方向,只要是运行了OSPF的接口)
R3的路由表里,只有1.1.1.0的路由

  • 情况2
在R2上开设loopback接口2.2.2.0/24,R2既重发布RIP进OSPF,又重发布直连进OSPF
access-list 1 permit 1.1.1.0
router ospf 1
redistribute connected subnets
 redistribute rip metric 10 subnets
 network 192.168.23.0 0.0.0.255 area 0
 distribute-list 1out
// 在R3上只有1.1.1.0的路由,也就是说distribute-list 1 out此处这条命令,对所有从外部注入进OSPF的路由都生效,最终只有1.1.1.0路由存活下来。而不断路由的来源是直连路由,还是RIP。

  • 情况3
在R2上开设loopback接口2.2.2.0/24,R2既重发布RIP进OSPF,又重发布直连进OSPF
access-list 1 permit 1.1.1.0
router ospf 1
redistribute connected subnets
 redistribute rip metric 10 subnets
distribute-list 1 out rip
// R3的路由表中有路由:1.1.1.0 、 2.2.2.0 、 192.168.12.0
//也就是屏蔽掉了从RIP重发布进来的除了1.1.1.0以外的路由,并重发布本地直连接口 

原文链接:http://blog.sina.com.cn/s/blog_5ec353710101ebbr.html
0 0
原创粉丝点击