HCNP Routing&Switching之BGP路由控制
前文我们了解了BGP的路由属性和优选规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15489497.html;今天我们来聊一聊BGP路由控制相关话题;
BGP路由控制
BGP可以结合几乎所有的策略工具,并利用BGP路径属性,来影响BGP选路;我们知道BGP的优选规则,它是依次比较首选值、本地优先级、聚合方式、AS_Path、起源属性优先级、med、邻居类型、内部IGP开销、router-id、IP地址这些属性;所以我们要影响BGP选路就可以通过修改这些属性即可;当然不是所有的属性都可以手动修改,比如起源属性,这个属性就是宣告网络时就决定了;再比如邻居类型,这个也是无法修改的,这个属性和网络拓扑密切相关;一般常修改,优选值、本地优先级、as_path长度、MED;
实验:如下拓扑,按照要求配置BGP

R1的配置

sys
sys R1
int g0/0/0
ip ad 12.0.0.1 24
int g0/0/1
ip add 13.0.0.1 24
int lo 1
ip add 1.1.1.1 32
int lo 7
ip add 7.7.7.7 32
int lo 8
ip add 8.8.8.8 32 bgp 11
router-id 1.1.1.1
peer 12.0.0.2 as 234
peer 13.0.0.3 as 234
R2的配置

sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int eth1/0/0
ip add 24.0.0.2 24
int lo 2
ip add 2.2.2.2 32 ospf 1 router-id 2.2.2.2
area 0
net 2.2.2.2 0.0.0.0
net 24.0.0.2 0.0.0.0
net 12.0.0.2 0.0.0.0 bgp 234
router-id 2.2.2.2
peer 12.0.0.1 as 11
peer 4.4.4.4 as 234
peer 4.4.4.4 con lo 2
R3的配置

sys
sys R3
int g0/0/0
ip add 13.0.0.3 24
int g0/0/1
ip add 34.0.0.3 24
int lo 3
ip add 3.3.3.3 32 ospf 1 router-id 3.3.3.3
area 0
net 3.3.3.3 0.0.0.0
net 34.0.0.3 0.0.0.0
net 13.0.0.3 0.0.0.0 bgp 234
router-id 3.3.3.3
peer 13.0.0.1 as 11
peer 4.4.4.4 as 234
peer 4.4.4.4 con lo 3
R4的配置

sys
sys R4
int eth1/0/0
ip add 24.0.0.4 24
int g0/0/0
ip add 34.0.0.4 24
int g0/0/1
ip add 45.0.0.4 24
int lo 4
ip add 4.4.4.4 32 ospf 1 router-id 4.4.4.4
area 0
net 4.4.4.4 0.0.0.0
net 34.0.0.4 0.0.0.0
net 24.0.0.4 0.0.0.0 bgp 234
router-id 4.4.4.4
peer 2.2.2.2 as 234
peer 2.2.2.2 con lo 4
peer 3.3.3.3 as 234
peer 3.3.3.3 con lo4
peer 45.0.0.5 as 55
R5的配置

sys
sys R5
int g0/0/0
ip add 45.0.0.5 24
int lo 5
ip add 5.5.5.5 32
int lo 6
ip add 6.6.6.6 32
int lo 9
ip add 9.9.9.9 32 bgp 55
router-id 5.5.5.5
peer 45.0.0.4 as 234
验证各路由器bgp邻居是否正常建立?





提示:可以看到5个路由器的BGP邻居都成功建立;
在R1上使用network本地宣告lo接口网络至BGP

验证:在R4上查看bgp路由表,看看对应是否能够学习到R1宣告的网络?

提示:可以看到R4能够学习到R1宣告的网络,并且每个网络都有两个下一跳;最优的路由是通过R2到达R1;
在R4上使用命令将对应R3发送的路由修改其优选值为33,看看对应R4学习到的路由有什么变化?

提示:可以看到在R4上修改R3发送的路由的优选值以后,对应R3发送的路由就变为了最优路由;这是因为BGP优选规则里在路由下一跳可用的情况下,首先比较优选值,数字越大越优先;所以此时R3发送到更新就成为了最优路由;优选值这个属性生效范围是本地有效,一般不修改此属性来影响BGP选路;
在R4上删除R3发送的更新修改优选值

提示:删除修改优选值命令以后,对应R2发送到路由更新变为了最优路由;这是因为R2的Router-id小于R3;
在R3上修改本地优先级,看看对应对R4收到的路由会有什么变化?

提示:本地优先级这个属性只会在IBGP邻居间传递,不会在EBGP间传递,其次本地优先级是属于公认可选属性,所以在R3上配置本地优先级属性以后,在本地BGP路由表中是看不到的,原因是本地bgp路由是通过R1学习过来的(EBGP邻居不会携带本地优先级属性),但是R3再项R4传递路由时就会携带本地优先级(因为本地优先级只会在IBGP邻居间传递,默认是100);
验证:在R4上查看bgp路由表,看看对应从R3学习过来的路由,对应本地优先级是否被更改为133了呢?

提示:可以看到R4此时学习到R3发送到路由更新,对应路由的本地优先级就为我们更改后的优先级;对应路由也变为了最优路由;这是因为优选规则中,如果优选值一样的情况下,会比较本地优先级,数字越大越优先;
在R5上使用引入宣告lo接口网络至BGP

提示:可以看到在R5的bgp路由表中,对应lo接口网络都被引入至BGP里;
验证:在R1上查看bgp路由表,看看对应路由是否学习到?

提示:可以看到R1并没有学习到R5发布的更新;
验证:在R2或R3上查看是否学习到R5发布的更新?


提示:可以看到R2和R3是正常学习到R5发布的更新,但是对应路由不可用;原因是R2和R3没有去往45.0.0.5的路由;解决办法,在R4上强制修改更新源为自己;
在R4上修改发送给R2和R3的路由更新源为自己

提示:以上命令表示R4向R2和R3发布路由更新时,会将对应更新源修改为自己;即R2,R3学习通过R4学习到的路由,对应下一跳为R4;
验证:在R2和R3上查看对应路由是否更改了更新源?是否可用?


提示:可以看到现在R4修改了更新源以后,对应R2和R3学习到的路由就可用了;
验证:再次在R1上查看bgp路由表,看看是否能够正常学习到R5发布的路由更新呢?

提示:可以看到R1现在能够学习到R5发布的路由更新;
在R3上修改med值为1000

在R1上查看BGP路由表,看看对应从R3学习到的路由med是否修改为1000了呢?

提示:可以看到R1上bgp路由表,对应从R3学习到的路由并没有修改MED值;对应MED值都没有;这是因为MED属性只在EBGP邻居间传递,且只有始发的路由器才会发送MED;还有一点default med 1000这个命令只对引入的路由有效,本地宣告,或从其他邻居学习过来的路由无效,所以我们在R3上修改通过default med 1000命令修改med值其实是不生效的;
在R3和R2上新建接口lo10 并添加ip地址为10.10.10.10 32,并将lo10网络路由引入宣告至BGP


验证:在R1上查看bgp路由表,看看对应是否从R2和R3上学习到10.10.10.10/32的路由呢?

提示:可以看到此时R1学习到R2和R3发送的路由更新,对应R3发送的路由更新,对应路由的med值为1000;这是因为R3上修改了med值为1000;
验证:在R2上修改med值为2000,看看对应R1上最有路由是否发生变化?

验证:再次查看R1的bgp路由表,看看对应路由有什么变化?

提示:可以看到R1此时学习到R2发送的路由更新中10.10.10.10/32的路由,对应med值为2000,并且最优路由从原来下一跳为12.0.0.2变为了13.0.0.3;这说明med值越小越优先被优选;
在R4上查看bgp路由,看看对应路由的med值是否会有变化呢?

提示:可以看到对应R4上bgp路由表中对应路由的med值并没有发生变哈;这是因为MED值只在EBGP间传递;对于IBGP间不会传递med值;所以在R4上我们看到的med还是默认值0;
在R1上配置重复本地as号3次

提示:上述命令表示把邻居R3的as号重复3次;
在R1上查看bgp路由表看看对应as是否重复了3次?

提示:在R1上看对应as号并没有重复3次;这是模拟器bug;通常情况下我们也不会使用这个命令来重复as号;
通过上述实验,可以看到我们使用命令修改BGP属性,都是修改所有的,比如我们修改本地优先级,即打了命令以后,对应路由传递的路由都会把对应本地优先级修改为对应数字;在一定程度上这种做法是不严谨,为了更加精准的修改BGP属性,我们可以使用路由策略,精准匹配路由,精准修改对应路由属性;
如上实验要求,使用策略修改BGP路由属性,从而达到影响BGP路由选路
还原实验环境
在R1上删除重复as配置

在R2上删除med修改和路由导入配置

在R3删除本地优先级配置、med配置和路由导入配置

在R1上配置PreVal策略,确保R1通过R3到达5.5.5.5

提示:上述策略主要利用ip前缀列表把5.5.5.5的路由先匹配出来,然后通过路由策略将符合前缀列表的路由进行首选值属性修改为200;然后在R1和R3邻居的的入方向调用路由策略;
验证:在R1上查看bgp路由表,看看对应路由的优选值是否发生了变化?

提示:可以看到此时R1的bgp路由表中,对于5.5.5.5/32这个路由来说,最优的下一跳为13.0.0.3,因为对应路由的优选值为200,高于下一跳为12.0.0.2;即在ip路由表中对于5.5.5.5/32的路由,对应下一跳就为13.0.0.3;所以R1访问5.5.5.5会经过R3到达5.5.5.5;
在R1上配置AS_Path策略,确保R1通过R3到达9.9.9.9

提示:根据要求,我们要确保9.9.9.9/32的路由要经过R3,说明对应路由的下一跳为R3,即在BGP路由表中,9.9.9.9的下一跳为R3;所以我们在调用策略时,需要对应邻居R2发送的路由更新加长as-path;
验证:在R1上查看BGP路由表,看看对应9.9.9.9/32 最优下一跳是不是R3?

提示:可以看到R1的bgp路由表中,对应R2发送过来的更新中,对应as-path被策略重复了三次;对应as-path也就变长了;所以相比R3发送到更新中,as-path要略短于R2,所以此时9.9.9.9/32的路由下一跳最优为R3;
在R2和R3上配置MED策略,确保R1通过R3到达6.6.6.6
在R2上的med策略配置

提示:因为6.6.6.6/32的路由是有R2传递给R1,所以我们在R2上调用策略应该是出方向调用;需要注意的是策略里没有直接修改bgp med的命令,只有修改cost;其实MED和cost都是同样的作用;只是叫法不同;这里还需要说明一点,如果我们使用策略修改med时,R2在发出路由更新时会自动携带med属性;不管R2学习到达路由是否携带med;只要经过策略修改以后,对应传递出去都会携带对应修改的属性;
R3上的med策略配置

提示:注意策略最后需要跟空语句,表示允许放行其他未被策略匹配的路由;同样的道理R3上策略的调用也是在出方向调用;
验证:查看R1的bgp路由表,看看对应6.6.6.6/32的路由,对应med值是否被修改?对应路由下一跳最优是否是R3呢?

提示:可以看到R2发送的更新对应路由的med为1000,R3发送的是500;因为med属性在优选比较时是越小越优先,所以R3传递的更新被优选为最优路由;即ip路由表中存放6.6.6.6/32的路由,下一跳为R3的地址;
在R2上配置local Preference策略,确保R4通过R2到达1.1.1.1

提示:因为1.1.1.1/32路由是有R1发布更新,所以对于R2向R4传递是R2的出方向,所以在R2上调用策略是在R2的出方向调用;
验证:在R4上查看bgp路由表,看看对应去往1.1.1.1的路由是否下一跳为R2最优?

提示:可以看到R4对应1.1.1.1/32路由,R2传递时,对应路由的本地优先级为101,略高R3传递对应路由的本地优先级,所以此时R2传递的路由被优选;
在R4上配置local Preference策略,确保R4通过R2到达8.8.8.8

提示:对于R4来讲8.8.8.8是从R2和R3传递过来的,所以在策略调用上相对于R4就是入方向;
验证:查看R4的bgp路由表,看看对应路由的本地优先级是否被修改?

提示:可以看到此时R4BGP路由表从R2传递过来的8.8.8.8/32的路由,对应本地优先级属性为200;
HCNP Routing&Switching之BGP路由控制的更多相关文章
- HCNP Routing&Switching之BGP路由属性和优选规则
前文我们了解了BGP防环机制和路由聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15458110.html:今天我们来聊一聊BGP路由属性和选路规 ...
- HCNP Routing&Switching之BGP路由过滤和AS-Path-Filter
前文我们聊了下通过修改BGP路由属性来影响路由,从而达到控制BGP路由的目的:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15495585.html:今天我们 ...
- HCNP Routing&Switching之BGP路由宣告
前文我们了解了BGP报文结构.类型以及邻居状态相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15422924.html:今天我们来聊一聊BGP路由宣告 ...
- HCNP Routing&Switching之BGP防环机制和路由聚合
前文我们了解了BGP路由宣告相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15440860.html:今天我们来聊一聊BGP防环机制和路由聚合相关话题 ...
- HCNP Routing&Switching之BGP基础
前文我们了解了路由注入带来的问题以及解决方案相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15362604.html:今天我们来学习下新的路由协议BG ...
- HCNP Routing&Switching之BGP团体属性和团体属性过滤器
前文我们了解了BGP的路由过滤已经as-path过滤器的使用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15542559.html:今天我们来聊一聊 ...
- HCNP Routing&Switching之IS-IS路由聚合和认证
前文我们了解了IS-IS路由渗透和开销相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15302382.html:今天我们来聊一聊IS-IS路由聚合和认 ...
- HCNP Routing&Switching之BGP报文结构、类型和状态
前文我们了解了BGP的邻居建立条件.优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html:今天我们来聊一聊BGP ...
- HCNP Routing&Switching之BGP邻居建立条件、优化和认证
前文我们了解了BGP相关概念.AS相关概念以及BGP邻居类型.基础配置等,相关回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15370838.html:今天我们 ...
随机推荐
- 【noip1998】题解:2的幂次方
思路:设递归函数dfs(x)用于输出x的幂次方 最容易的思路:0不输出,1输出为2(0),2输出2,剩下的递归执行. 每一次递归:例如7,拆分为4+3,先拆出最大的是2的次方的数出来,输出4,再把3分 ...
- 关于pycharm创建django1.x和3.x项目的说明
1.我创建了两个模板文件分别代表django1.x和3.x 2.两个模板文件分别为Django1Template和Django3Template (不同模板文件中存放不同的django版本) 3.使用 ...
- 概述 .NET 6 ThreadPool 实现
目录 前言 任务的调度 基本调度单元 IThreadPoolWorkItem 实现类的实例. Task 全局队列 本地队列 偷窃机制 Worker Thread 的生命周期管理 线程生命注入实验 .N ...
- centos7 未启用swap导致内存使用率过高。
情况描述: 朋友在阿里云上有一台系统为CentOS7的VPS,内存为2GB,用于平时开发自己的项目时测试使用: 他在上面运行了5个docker实例,运行java程序:还有一个mysql服务: 上述5个 ...
- 设置自启动nginx(适用于其他软件)(LinuxDeploy里的Ubuntu)
LinuxDeploy里的Ubuntu自启动nginx(适用于其他软件) 网上的教程是这样的,基本能用 1.编写脚本(这个文件及其内容安装Nginx后自动生成,没有的话内容自己Google) $ su ...
- Shell系列(26)- 条件判断之两个文件比较
两个文件之间进行比较 测试选项 作用 文件1 -net 文件2 判断文件1的修改时间是否比文件2的新(如果新则为真) 文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧(如果旧则为真) 文件 ...
- linux 上添加多个jdk
1. 首先将你需要上传的jdk 上传并解压 2.你可以自定义解压的路径 3. alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_ ...
- [转载]php连接postgreSQL数据库及其操作(php5,postgreSQL9)
数据库连接:dbconn.php<?php$conn = pg_connect("host=localhost port=5432 dbname=myd user=postgres p ...
- 定要过python二级选择题第一套
1. 2.https://zhuanlan.zhihu.com/p/199883725 树,队列,二叉树,树的基本回忆 二叉树: 分叉为俩个; 一个是右子树一个是左子树 队列:先进先出 柞:后进先出 ...
- 鸿蒙内核源码分析(管道文件篇) | 如何降低数据流动成本 | 百篇博客分析OpenHarmony源码 | v70.01
百篇博客系列篇.本篇为: v70.xx 鸿蒙内核源码分析(管道文件篇) | 如何降低数据流动成本 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...