前文我们了解了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路由控制的更多相关文章

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

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

  2. HCNP Routing&Switching之BGP路由过滤和AS-Path-Filter

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

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

    前文我们了解了BGP报文结构.类型以及邻居状态相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15422924.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. minix3使用轻快入门

    minix3是一款迷你的unix作业系统,但又不在at&t代码的基础上构建.当年开发这款作业系统的作者仅仅是拿来自用,给学生上课使用的. 如果你已经安装了minix3,你还需要安装openss ...

  2. dede调用文章内第一张原始图片(非缩略图)的实现方法

    第一步,修改include/extend.func.php文件,最下面插入函数,查询的是文章附加表,如需查询图片集什么的,改表名即可 //取原图地址 function GetFirstImg($arc ...

  3. Java基础系列(2)- Java开发环境搭建

    JDK下载与安装 安装JDK 1.百度搜素JDK8,找到下载地址 2.下载电脑对应的版本 3.双击安装JDK 4.记住安装的路径,可以自定义,默认路径如图 卸载JDK 删除Java安装目录 删除环境变 ...

  4. Docker系列(14)- Portainer可视化面板安装

    官网 https://documentation.portainer.io/v2.0-be/deploy/beinstalldocker/ 可视化 portainer docker run -d -p ...

  5. javascript 标签轮播

    html <div id="banner-switch"> <!-- 切换内容 --> <div class="notice-content ...

  6. requests访问页面时set-cookie获取cookie

    import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/ ...

  7. Mybatis-Plus 全局Update更新策略,和insert插入查询策略

    前言 最近在使用mybatis-plus做项目的时候,发现使用updatById方法的时候,更新某个字段时候出现了问题,一般业务操作都是更新不为空的字段,结果发现更新了所有字段,这是由于mybatis ...

  8. 看动画学算法之:doublyLinkedList

    目录 简介 doublyLinkedList的构建 doublyLinkedList的操作 头部插入 尾部插入 插入给定的位置 删除指定位置的节点 简介 今天我们来学习一下复杂一点的LinkedLis ...

  9. 前端快闪四: 拦截axios请求和响应

    马甲哥继续在同程艺龙写一点大前端: 今天我们来了解一下 如何拦截axios请求/响应? axios是一个基于 promise 的网络请求库,可以用于浏览器和 node.js, promise 类似于C ...

  10. caffe转换变量时的gflags问题

    先解决错误7,解决方式来自于http://blog.csdn.net/wishchin/article/details/51888566这篇博文,感谢博主 只需要添加上 #pragma comment ...