前文我们聊了下通过修改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. JS获取contextPath的方法

    function getContextPath() { var pathName = document.location.pathname;    var index = pathName.subst ...

  2. 我决定!墙裂推荐高清无码Python电子书(文中福利)

    @ 目录 前言 视频网站学习的优点和缺点 Python基础 游戏 网站开发 前言 近几年学了Python,查阅了不少资料,如B站,慕课网,我要自学网等等,然后自己边看学书自己整理学习资料,想分享下如何 ...

  3. 【vue】获取异步加载后的数据

    异步请求的数据,对它做一些处理,需要怎么做呢?? axios 异步请求数据,得到返回的数据, 赋值给变量 info .如果要对 info 的数据做一些处理后再赋值给 hobby ,直接在 axios ...

  4. 在Unity中渲染一个黑洞

    在Unity中渲染一个黑洞 前言 N年前观看<星际穿越>时,被其中的"卡冈图雅"黑洞所震撼.制作团队表示这是一个最贴近实际的黑洞效果,因为它是通过各种科学理论实现的.当 ...

  5. netty系列之:使用netty搭建websocket客户端

    目录 简介 浏览器客户端 netty对websocket客户端的支持 WebSocketClientHandshaker WebSocketClientCompressionHandler netty ...

  6. Java程序的执行过程

    Java程序的执行过程 编译器将 Java 源代码编译成字节码class文件 类加载到 JVM 里面后,执行引擎把字节码转为可执行代码 执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行

  7. 题解「BZOJ4310」跳蚤

    题目传送门 Description 现在有一个长度为 \(n\) 的字符串,将其划分为 \(k\) 段,使得这 \(k\) 段每一段的字典序最大子串中字典序最大的字符串字典序尽量小.求出这个字符串. ...

  8. 洛谷3348 大森林 (LCT + 虚点 + 树上差分)

    这可真是道神仙题QWQ问了好多\(dalao\)才稍微明白了一丢丢做法 首先,我们假设不存在\(1\)操作,那么对于询问的一段区间中的所有的树,他们的形态应该是一样的 甚至可以直接理解为\(0\)操作 ...

  9. Apache Dubbo理解和应用

    官网:https://dubbo.apache.org/ slogan:高性能.轻量级的开源Java RPC框架 提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和 ...

  10. python查询对像所有方法

    鉴于学习时好多参数对像都不知道是什么玩意有什么方法,搜了半天一个 """arg为一个对像,下面是打印所有对像方法"""for i, func ...