distribute-list
Distribute-list(分发列表)用来过滤路由信息
Distribute-list使用方法:
Out方向distribute分发列表
Route(config-router)#distribute-list {access-list-number|name} out [interface-name|routing-process[routing-process parameter]]
in方向distribute分发列表
Route(config-router)#distribute-list {access-list-number|name} in [interface-name|routing-process[routing-process parameter]]
Distribute-list对距离矢量路由协议(RIPv1&RIPv2&EIGRP)在in和out方向都可以很好的工作,但是对于链路状态路由协议(OSPFv2&OSPFv3&IS-IS)在使用的时候要多加注意
环境一:
需求:R3路由器关于R1路由器三个Loopback接口路由信息,只能学习Loopback0的
上边全网运行RIPv2协议,R2可以在e0/1使用out方向来过滤路由信息
R2上配置:
R2(config)#access-list 10 deny 172.16.2.0
R2(config)#access-list 10 deny 172.16.3.0
R2(config)#access-list 10 permit any
R2(config)#router rip
R2(config-router)#distribute-list 10 out e0/1
R3上查看路由表只有R1路由器Loopback0路由信息
R4上查看路由表发现关于R1路由器三个Loopback接口路由都是存在的
这是因为R2在做distribute-list的时候out方向关联了e0/1接口只针对了R3路由器,没有针对R4路由器。
如果希望对R4路由器也生效,R2路由器可以在RIP进程中补一条命令
R2(config-router)#distribute-list 10 out e0/2
R2在做distribute-list时候out后边也可以不关联任何接口信息,如果不关联任何接口信息代表针对所有接口都生效
Distribute-list对链状态路由协议:
Distibute-list对于链路状态路由协议的out方向如果路由不是本地始发的,将不能起到任何效果
只有一种场合下out方向的distribute-list才能去部署,要去过滤到本地始发的外部路由。就是说比如R1上的Loopback是采用redistribute的方式注入OSPF,那么这个时候就叫本地始发的路由。这种情况如果在R1上去部署out方向distribute那么就可以起到过滤作用,因为对于redistribute来讲,redistribute这个外部路由进OSPF其实是以路由方式进来的,所以这个时候在本地做out方向Distribute-list就可以起到过滤作用。
环境二:
R1通过redistribute方式将三个Loopback接口宣告进OSPF进程,同时在R1上做out方向的distribute,过滤掉Loopback1和Loopback2两个接口路由信息
R1上配置:
R1(config)#access-list 10 deny 172.16.2.0
R1(config)#access-list 10 deny 172.16.3.0
R1(config)#access-list 10 permit any
R1(config)# router ospf 100
R1(config-router)#redistribute connected subnets
R1(config-router)#distribute-list 10 out
OSPF在做distracted out方向时候不可以关联任何接口
R2上查看路由表及OSPF database
cisco路由器查看OSPF LSDB 5类LSA命令:Router#show ip ospf database external
R3上查看路由表及OSPF database
R4 上查看路由表及OSPF database
通过观察R2、R3、R4三台路由器路由表及OSPF database可以看出R1路由器成功将自身Loopback1和Loopback2两条路由过滤掉并且连LSA信息都没有传递给邻居路由器
环境三:
R1上将环境二拓扑图中的redistribute给删掉,将三个Loopback接口通过network方式引入到OSPF进程,再次使用distribute out方向看下还会不会生效
R1上配置:
R1(config)#access-list 10 deny 172.16.2.0
R1(config)#access-list 10 deny 172.16.3.0
R1(config)#access-list 10 permit any
R1(config)#router ospf 100
R1(config-router)#no redistribute connected subnets
R1(config-router)#network 172.16.1.1 0.0.0.0 area 0
R1(config-router)#network 172.16.2.1 0.0.0.0 area 0
R1(config-router)#network 172.16.3.1 0.0.0.0 area 0
R1(config-router)#distribute-list 10 out
R2上查看路由表
R3上查看路由表
R4上查看路由表
通过观察R2、R3、R4三台路由器的路由表发现R1通过network命令将自身Loopback接口引入OSPF进程时,再次使用distribute out方向时并没有起到任何效果
环境四:
需求:R2上使用in方向distribute 观察R2、R3、R4三台路由器路由表
在R2上过滤掉R1路由器Loopback1和Loopback2路由信息,使用in方向
R1上配置:删掉network方式引入路由方式,通过redistribute方式引入R1自身Loopback信息
R1(config)#router ospf 100
R1(config-router)#no network 172.16.1.1 0.0.0.0 area 0
R1(config-router)#no network 172.16.2.1 0.0.0.0 area 0
R1(config-router)#no network 172.16.3.1 0.0.0.0 area 0
R1(config-router)#no distribute-list 10 out
R1(config-router)#redistribute connected subnets
R2上配置:
R2(config)#access-list 10 deny 172.16.2.0
R2(config)#access-list 10 deny 172.16.3.0
R2(config)#access-list 10 permit any
R2(config)#router ospf 100
R2(config-router)#distribute-list 10 in ethernet 0/0
OSPF在使用distribute in方向时可以关联接口,关联接口和不关联接口区别
如果关联某一个接口代表只是对关联的接口收到的路由信息做过滤,如果不关联某一个接口代表对自身所有接口生效
R2上路由表及OSPF database
R3上路由表及OSPF database
R4上路由表及OSPF database
通过查看R2、R3、R4三台路由器的路由表及OSPF LSDB 5类LSA信息可以发现
R2在in方向使用distribute只对自己的路由表生效,但是R2的OSPF LSDB中还是存在R1路由器三个Loopback接口5类LSA信息
R3、R4路由器的路由表及OSPF LSDB并没有受到任何影响,从这里也就可以总结出OSPF在使用distribute in方向时影响的是自身路由表,对邻居R2、R3并没有什么影响。
总结:OSPF在使用distribute时,in方向影响的是自己的路由表,out方向只有在过滤本地始发的路由才生效(例如本地通过redistribute方式引入路由时,因为重发布的时候这个动作引入的刚好是路由信息而不是LSA)。OSPF在in方向的时候实际上是在OSPF计算LSA生成路由表的时候过滤掉路由,所以distribute在in方向虽然路由表消失了路由条目,但是LSA依然存在OSPF database中的
环境五:
Distribute还可以在out方向后边关联特定的协议,distribute在in方向是不可以关联协议的
R2上配置:
R2(config)#access-list 10 deny 4.4.4.0
R2(config)#router eigrp 100
R2(config-router)#redistribute rip metric 10000 1000 1 1 1
R2(config-router)#redistribute ospf 100 metric 10000 1000 1 1 1
R2 show rip database 是有从R1学习到1.1.1.0/24路由信息
R2 show ospf database 可以看到也有从R4学习到1.1.1.0/24路由信息
R2上查看路由表发现关于1.1.1.0/24是“O”标记,此时是正常的,RIP AD值120 OSPF AD值110
R3上查看路由表同样学习到了1.1.1.0/24路由信息
如果不做distribute过滤,R1和R4任意一台路由器down掉,R2和R3都可以访问1.1.1.0/24目的地
下边在R2上做distribute,只针对从RIP路由协议过来的1.1.1.0/24做过滤,其他方式学习到的一律放行
R2上配置:
R2(config)#access-list 10 deny 4.4.4.0
R2(config)#router eigrp 100
R2(config-router)#redistribute rip metric 10000 1000 1 1 1
R2(config-router)#redistribute ospf 100 metric 10000 1000 1 1 1
R2(config-router)#distribute-list 10 out rip
R3上查看路由表,还是有关于1.1.1.0/24路由信息,说明R2上配置是生效的
可以进一步验证R2的配置,将R2连接R4的ethernet 0/2 shutdown掉
R2(config)#interface ethernet 0/0
R2(config-if)#shutdown
R3上查看路由表,发现没有1.1.1.0/24路由条目
环境六:
使用distribute还可以解决双点双向redistribute次优路径及环路问题
看下图,R4将自身Loopback0接口宣告进RIP进程,R2和R3都互相学习到该路由信息
此时R2先做RIP到OSPF的redistribute动作,R4 Loopback0路由到了R1,R1传递给R3路由器。此时R3路由器因为先前从RIP进程R4邻居学习到了该路由条目,此时从两个邻居不同路由协议学习到去往相同目的地的路由信息,R3先比较AD值,结果发现OSPF的110 AD值要小于RIP的120 AD值,R3自然而然的选择从R1到4.4.4.0/24目的地。
此时是很奇怪的,R3产生了次优路径问题,明明可以从R4直接到目的地,为什么要从R1绕了一圈到目的地。
最关键的是,R3在想做RIP到OSPF的redistribute动作是失败的,因为R3关于4.4.4.0/24路由是“OE2”的而不是“R”的
在下边我们使用distribute来解决这个次优路径问题。
IP编制规则:10.xy.xy.x/24
,其中x是较小的路由器,y为较大的路由器。例如:R2和R4的编制:R2e0/1:10.24.24.2/24
,R4e/1:10.24.24.4/24
R2上配置:
R2(config)#router ospf 100
R2(config-router)#redistribute rip subnets
查看R3上路由表关于4.4.4.0/24路由是“OE2的”
R3上配置:
R3(config)#access-list 10 deny 4.4.4.0
R3(config)#access-list 10 permit any
R3(config-router)#distribute-list 10 in
查看R3上路由表关于4.4.4.0/24的路由变成了“R”的,此时R3在做RIP到OSPF的redistribute是完全没有问题的
R2上也要做和R3相同的动作,具体原因自己好好琢磨,哈哈
R2(config)#access-list 10 deny 4.4.4.0
R2(config)#access-list 10 permit any
R2(config-router)#distribute-list 10 in
总结:其实使用distribute来解决双点双向redistribute次有路径问题并不太适合,distribute是直接把路由过滤掉了,假设R3和R4相连接的链路故障了,那么R3就没有备用路径可以走了,下边可以试验下,我们把R3的ethernet0/0口shutdown掉
R3(config)#interface ethernet 0/0
R3(config-if)#shutdown
查看R3的路由表可以看出,R3是丢失了4.4.4.0/24路由信息的
转载于:https://blog.51cto.com/13595867/2334784
distribute-list相关推荐
- windows XP下Python2.7包管理工具安装-setuptool,pip、distribute、nose、virtualenv
在Python开发中为了对项目进行管理和调试.必须安装一些特定的软件包.据说业内这个叫做yak shaving-做一个非常酷非常绚丽的Python项目之前,必须做的一些枯燥无味的准备工作.本文介绍了s ...
- Python包管理工具Distribute的安装
Python包管理工具Distribute的安装 Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看 ...
- hive中order by,sort by, distribute by, cluster by作用以及用法
1. order by Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的数据都会 ...
- hive 的分隔符、orderby sort by distribute by的优化
一.Hive 分号字符 分号是SQL语句结束标记,在HiveQL中也是,可是在HiveQL中,对分号的识别没有那么智慧,比如: select concat(cookie_id,concat(';',' ...
- 575. Distribute Candies 平均分糖果,但要求种类最多
[抄题]: Given an integer array with even length, where different numbers in this array represent diffe ...
- HiveQL之Sort by、Distribute by、Cluster by、Order By详解
在这里解释一下select语法中的order by.sort by.distribute by.cluster by.order by语法. 一.order by语法 在hiveQL中Order by ...
- HOL中的四种排序,Order By、Sort By、Distribute By、Cluster By
1.全局排序(Order By) Order By:全局排序,一个Reducer 1.使用 ORDER BY 子句排序 ASC(ascend): 升序(默认) DESC(descend): 降序 2. ...
- Linux 下安装python软件包(pip、nose、virtualenv、distribute )
在Python开发中为了对项目进行管理和调试,必须安装一些特定的软件包.据说业内这个叫做yak shaving-做一个很酷很绚丽的Python项目之前,必须做的一些枯燥无味的准备工作.本文介绍了set ...
- HDU - 1723 - Distribute Message
先上题目: Distribute Message Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- 2.12 Hivet中order by,sort by、distribute by和cluster by
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy 一.order by 对全局数据的排序,仅仅只有一个red ...
最新文章
- 刘政:别着急颠覆传统数据分析人才培养,先将落脚点放在实处
- java itemcf_大规模电商推荐数据分析-基于ItemCF的召回
- 编程之美-斐波那契(Fibonacci)数列方法整理
- C#中字段、属性、只读、构造函数赋值、反射赋值的相关
- React.js 小书 Lesson24 - PropTypes 和组件参数验证
- 苹果误用美元结算工资,中国开发者们“暴富”:感动却不敢动啊!
- Objective-C 相关Category
- c语言函数调用后必须带回返回值?
- 如何批量修改Word文档Mathtype公式字体
- 学位认证上‘学位网’办理即可
- 千万不要嫁给程序猿,我是认真的
- 小朋友把游戏藏在计算机里,如何设置孩子玩电脑游戏的时间
- 总结-空洞卷积(Dilated/Atrous Convolution)、gridding问题以及解决方案、训练技巧BN和PReLU、CReLU
- shutter截图编辑功能
- Ubuntu下安装UE和AirSim并使用UE4.27编译C++项目
- 核查清单-小程序分享功能
- Stress命令Linux性能测试,压力测试工具(Centos演示)
- 微信小程序 - 在线预览 Office 文件(doc / docx / xls / xlsx / ppt / pptx / pdf)
- react hooks学习之useState set值后,获取值没有更新
- 物联网最常见的5个核心关键技术与2种技术难点