前文我们聊了下通过修改BGP路由属性来影响路由,从而达到控制BGP路由的目的;回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15495585.html;今天我们来聊一聊BGP路由过滤和AS-Path-filter过滤器的使用;

  BGP路由过滤

  BGP路由过滤是指对特定的路由通过策略或者过滤器在出方向或入方向做允许或拒绝,从而来达到控制路由的收发;

  示例:通过ip 前缀列表匹配要拒绝的路由,然后使用过滤工具过滤掉满足条件的路由

[R5-bgp]dis bg r

 BGP Local router ID is 5.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn *> 1.1.1.1/32 45.0.0.4 0 234 11i
*> 7.7.7.7/32 45.0.0.4 0 234 11i
*> 8.8.8.8/32 45.0.0.4 0 234 11i
[R5-bgp]dis ip ip-prefix
Prefix-list 1.1.1.1
Permitted 2
Denied 4
index: 10 deny 1.1.1.1/32
index: 20 permit 0.0.0.0/0 le 32
[R5-bgp]filter-policy ip-prefix 1.1.1.1 import
[R5-bgp]d th
[V200R003C00]
#
bgp 55
router-id 5.5.5.5
peer 45.0.0.4 as-number 234
#
ipv4-family unicast
undo synchronization
filter-policy ip-prefix 1.1.1.1 import
peer 45.0.0.4 enable
#
return
[R5-bgp]dis bg r BGP Local router ID is 5.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn *> 7.7.7.7/32 45.0.0.4 0 234 11i
*> 8.8.8.8/32 45.0.0.4 0 234 11i
[R5-bgp]

  提示:ip前缀列表、filter-policy工具使用请参考https://www.cnblogs.com/qiuhom-1874/p/15316188.html;这里我们需要注意一点就是ip前缀列表的默认规则是拒绝,所以对于没有被ip前缀列表匹配的路由,我们应该放行;所以前缀列表里最后要添加放行其他所有路由;所以我们在BGP路由表中能够看到7.7.7.7和8.8.8.8的路由;

  示例:使用filter-policy 对某个邻居的出方向拒绝1.1.1.1的路由

  在R2上未使用filter-policy对发送给R4的路由做过滤,对应R4上bgp路由表情况

  提示:可以看到对应在R4上能够学习到1.1.1.1 /32的路由,对应下一跳分别有两个;

  在R2的出方向对发送给R4的路由中,过滤掉1.1.1.1/32的路由,对应其他路由做放行操作

  验证:在R4上查看BGP路由表,看看R2发送给R4的路由,对应1.1.1.1/32的路由是否被过滤掉了?

  提示:可以看到R4上对于1.1.1.1/32的路由只有R3为下一跳,R2发送给R4的其他路由R4上正常可以学习到;

  示例:使用前缀列表直接对某个邻居发送的路由进行过滤

  在R4上使用前缀列表对R3发送到8.8.8.8/32的路由进行入方向过滤,其他路由不做过滤

[R4]dis ip ip-prefix
Prefix-list 8.8.8.8
Permitted 0
Denied 0
index: 10 deny 8.8.8.8/32
index: 20 permit 0.0.0.0/0 le 32
[R4]bgp 234
[R4-bgp]peer 3.3.3.3 ip-prefix 8.8.8.8 imp
[R4-bgp]peer 3.3.3.3 ip-prefix 8.8.8.8 import
[R4-bgp]d th
[V200R003C00]
#
bgp 234
router-id 4.4.4.4
peer 2.2.2.2 as-number 234
peer 2.2.2.2 connect-interface LoopBack4
peer 3.3.3.3 as-number 234
peer 3.3.3.3 connect-interface LoopBack4
peer 45.0.0.5 as-number 55
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
peer 3.3.3.3 enable
peer 3.3.3.3 ip-prefix 8.8.8.8 import
peer 45.0.0.5 enable
#
return
[R4-bgp]dis bg r BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn *>i 1.1.1.1/32 13.0.0.1 0 100 0 11i
*>i 7.7.7.7/32 12.0.0.1 0 100 0 11i
* i 13.0.0.1 0 100 0 11i
*>i 8.8.8.8/32 12.0.0.1 0 100 0 11i
[R4-bgp]

  提示:可以看到此时R4上对于8.8.8.8/32的路由只有R2发送的可以正常学习到;因为R3发送的8.8.8.8/32的路由在入方向就被过滤掉了;

  示例:在R1上使用路由策略对7.7.7.7/32的路由在出方向过滤

  提示:路由策略中如果条件中是允许操作,则路由的去留取决route-policy的模式,deny就是拒绝,permit就是允许;如果条件中是拒绝操作,则路由的去留取决route-policy的默认规则;如上所示,在条件中允许7.7.7.7/32,在模式中拒绝,最终7.7.7.7/32的路由去留看模式;对于条件中没有明确允许或拒绝其他路由,最终条件的默认规则是拒绝,所以对于其他没有被条件匹配的路由,最终的去留取决于route-policy默认模式;所以我们在route-policy后面添加一条允许所有路由,则放行其他未被前缀列表匹配到的路由;所以我们配置没有问题的话,在R2上就学习不到7.7.7.7/32的路由,其他路由可以正常学习到;

  验证:在R2上查看BGP路由表,看看对应的7.7.7.7的路由它是否能够学习到?

  提示:可以看到此时R2的bgp路由表中就没有7.7.7.7/32的路由,原因是R1并没有把7.7.7.7/32的路由发送给R2;

  总结:通过上述实验可以看到BGP路由过滤主要是通过过滤器,前缀列表,路由策略等工具来进行的;都是在本地的出或入方向做过滤,最终是影响路由的收发;如果上述工具都在bgp里都使用了,则首先全局filter-policy进行过滤,然后再单个邻居使用filter-policy过滤,然后再单个邻居前缀列表,然后在路由策略的顺序进行过滤;

  BGP AS-Path过滤器

  AS-Path-Filter:从名字上就能知道该过滤器主要用于通过匹配AS-Path属性来进行路由过滤;对于满足过滤器的条件我们就做某种操作即可;对于as-path过滤器来说,它是通过正则表达式来匹配对应as-path;工作原理就是把对应路由的as-path当作字符串处理,满足正则表达式的路由进行拒绝或允许操作;

  常用正则表达式符号作用

  特殊正则表达式含义

  提示:对于本地始发地路由,对应as-path属性是空,即匹配条件就是空,正则表达式就为^$; .*表示匹配所有路由,.*是表示匹配任意字符0次或多次,即任意字符可有可无,即任意as-path都能匹配,即所有路由的as-path都能满足该正则表达式;_10_表示匹配通过as10的路由,因为as-path只要通过一个as就会记录对应as号,所以只要as-path里包含10,则该路由一定是通过as 10的路由;如果是以10结尾的as-path,则一定是始发as10的路由;如果以10开头的,则一定是相邻邻居的as一定是10,即接受相邻as10的路由;

  示例:匹配以12开头中间任意字符最后以74结尾的as-path的路由

  提示:即满足上述as-path的路由都会被允许放行;

  示例:匹配有23或43的as号的路由

  提示:并不是3或4,而是23或43;

  示例:匹配具有具有14,17,24,27,34,37的as号

  提示:【1-3】表示连续的数字,即1、2、3;【47】表示4或7,即数字4或者数字7;组合其他就是14、17、24、27、34、37;

  示例:匹配始发as170,且as34512和as170相邻且通过as34512的路由;

  示例:匹配始发as170,并通过as621的路由

  示例:使用as-path过滤器过滤掉本地始发as55路由

  新建as-path过滤器

[R1]ip as
[R1]ip as-path-filter 1 d
[R1]ip as-path-filter 1 deny 55$
[R1]dis ip as
As path filter number: 1
deny 55$
[R1]

  提示:as-path-filter 后面的1我们可以理解为是as-path过滤器的匹配次序;多条as path是与的关系,即都要满足才能被匹配;

  在BGP里调用as-path过滤器

  提示:as-path过滤器也是有默认规则的,默认规则是拒绝操作,即没有被正则匹配到的路由,统统都是拒绝操作;所以我们看到的BGP路由表中,对应始发234的路由也一并被过滤掉;

  在as-path里允许其他所有路由通过

  再次查看BGP路由表,看看对应始发234的路由是否恢复?

  提示:可以看到始发as55的路由被过滤掉了,始发234的路由恢复正常;这是因为我们只拒绝了始发as55的路由,允许了其他没有被始发as55的路由;

HCNP Routing&Switching之BGP路由过滤和AS-Path-Filter的更多相关文章

  1. HCNP Routing&Switching之BGP路由属性和优选规则

    前文我们了解了BGP防环机制和路由聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15458110.html:今天我们来聊一聊BGP路由属性和选路规 ...

  2. HCNP Routing&Switching之BGP路由宣告

    前文我们了解了BGP报文结构.类型以及邻居状态相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15422924.html:今天我们来聊一聊BGP路由宣告 ...

  3. HCNP Routing&Switching之BGP路由控制

    前文我们了解了BGP的路由属性和优选规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15489497.html:今天我们来聊一聊BGP路由控制相关话 ...

  4. HCNP Routing&Switching之BGP防环机制和路由聚合

    前文我们了解了BGP路由宣告相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15440860.html:今天我们来聊一聊BGP防环机制和路由聚合相关话题 ...

  5. HCNP Routing&Switching之BGP基础

    前文我们了解了路由注入带来的问题以及解决方案相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15362604.html:今天我们来学习下新的路由协议BG ...

  6. HCNP Routing&Switching之BGP团体属性和团体属性过滤器

    前文我们了解了BGP的路由过滤已经as-path过滤器的使用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15542559.html:今天我们来聊一聊 ...

  7. HCNP Routing&Switching之IS-IS路由聚合和认证

    前文我们了解了IS-IS路由渗透和开销相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15302382.html:今天我们来聊一聊IS-IS路由聚合和认 ...

  8. HCNP Routing&Switching之BGP报文结构、类型和状态

    前文我们了解了BGP的邻居建立条件.优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html:今天我们来聊一聊BGP ...

  9. HCNP Routing&Switching之BGP邻居建立条件、优化和认证

    前文我们了解了BGP相关概念.AS相关概念以及BGP邻居类型.基础配置等,相关回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15370838.html:今天我们 ...

随机推荐

  1. vue 主次页面区分

    1.路由设定,增加meta参数 { path: '/', name: 'Home', component: Home, meta: { index: 0, showFooter: true //由这个 ...

  2. Linux如何配置网络ip?

    Linux如何配置网络ip? 1.首先切换至root用户 su root 输入root用户密码 2.借助dhclient工具自动生成一个网络内可用的ip地址 我们可以手动配置对应的网段的ip地址,但是 ...

  3. PolarDB PostgreSQL DDL同步原理

    概述 在共享存储一写多读的架构下,数据文件实际上只有一份.得益于多版本机制,不同节点的读写实际上并不会冲突.但是有一些数据操作不具有多版本机制,其中比较有代表性的就是文件操作.多版本机制仅限于文件内的 ...

  4. kettle 多表全删全插同步数据 两种方案

    背景: 接到上级指示,要从外网某库把数据全部导入到内网,数据每天更新一次即可,大约几百万条数据,两个库结构一样,mysql的,两台数据库所在服务器都是windows server的,写个java接口实 ...

  5. IDEA连接Mysql数据库之后,在Mapper.xml编写SQL时不会自动提示表信息问题(非常详细!)

    1.首先得连接上数据库 (一)点击IDEA右侧数据库模块 (二)选择MySql进行连接 (三)填写数据库相关配置 (四)重点!!! 这个时候点击测试连接是连接不上的,需要设置时区 (按照如下设置) ( ...

  6. Vue3 如何修改端口

    build哪里去了?config哪里去了?配置都消失了? 对比之前Vue2 发现项目目录改动较大 找了很久才找到配置文件:node_modules\@vue\cli-service\lib\comma ...

  7. Redis分布式方案:集群

    Redis集群通过分片(sharding)进行数据共享,并提供复制和故障转移功能. 节点 一个Redis集群由多个node组成,连接各节点的命令格式如下: CLUSTER MEET 127.0.0.1 ...

  8. Ubuntu 20.04上安装MySQL教程,ubuntu安装mysql

    在Ubuntu 20.04上安装MySQL教程 先决条件 确保您以具有sudo特权的用户身份登录. 在Ubuntu上安装MySQL 在撰写本文时,Ubuntu存储库中可用的MySQL的最新版本是MyS ...

  9. 树莓派3B搭建NODE-RED运行环境并构建数据流

    树莓派3B搭建NODE-RED运行环境并构建数据流 树莓派搭建Node-RED环境 树莓派自2015年开始是默认就带NODE-RED的,但是如今已是2018年:)自带的版本已经很老了,可通过下面的命令 ...

  10. 题解 「ZJOI2018」历史

    题目传送门 Description 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的小说,这本小说的架空世界引起了她的兴趣. 这个世界有 \(n\) 个城市,这 \(n\) 个城市被恰 ...