Border Gateway Protocol(BGP)边界网关协议(二)

wps999

上一篇文章中我们介绍了什么是BGP,iBGP与eBGP的区别,什么是BGP Peers。同样还介绍了在配置
BGP时的一些技巧和方法,比如为什么要使用Loopback地址,为什么要使用next-hop,以及如何宣告
路由等等。本篇我们来介绍一下BGP是如何做Best Path选择的,也就是说BGP选择最佳路径的方法,
这是BGP配置中最为重要的一部分,当一个BGP路由器收到很多条关于同一个目的地的路由时,通常
BGP只会选择一条最好的路径来使用。而选择的方法有很多种,但基本都是通过比较每条BGP路由当中
不同的属性来进行选择。在比较这些属性之前,BGP会先检查以下3个属性,符合这3个条件的路由才
会进入比较程序,不符合条件的路由则在这时就被淘汰掉了。

● Next-hop-address所在的Network必需是可达的,也就是存在于路由器的路由表之中。

● As-Path不包含路由器自身的AS编号,这是为了防止产生Loop。

● 如果开启了Synchronization,则必须符合,可以参考上一篇里的介绍。

下面我们以下图中的拓扑为例,来分类介绍一下BGP如何比较每一个属性来选出最佳路径。如下图我
们有4个AS,R1、R2和R3位于AS200,其它几个都单独位于一个AS,我们假设所有基本配置已经配置
完成,包括IP地址,BGP Peer都设定完毕。R2与R1以及R2与R3之间是iBGP连接并且配置了
Next-hop-self,R2还配置了Route Reflector,R5把Loopback0的5.5.5.0/24网络通过network命令
发布出来。

wps1000

一、比较Weight值

1、在比较Weight值时,选择较大的值,Weight是本地路由器对自己的Peer的权重值,谁的Weight值
大就用谁提供的路由条目。需要注意的是Weight是思科独有的一个属性,在其它品牌的设备上没有此
属性,但会有类似的属性。所以在上图中我们假设所有设备都是Cisco设备。

2、所有配置完成以后,我们先在R2上看一下BGP路由表,可以看到有2条路径,Weight值都是0,BGP
选择了下一跳为172.16.2.1这条路径为最佳路径,也就是经过AS100和AS300到达5.5.5.0网络。默认
情况下Weight值都是0,所以这里Weight值相同,BGP就会去比较其它属性来选择最佳路径。

wps1001

3、下面我们来更改一下Weight值,我们知道在比较Weight值时较大的值胜出,所以基于上图的状态
我们将下一跳为172.16.3.3的路径的Weight值改大。可以使用如下命令:

neighbor <ip> weight <default weight>

wps1002

4、我们将weight值改为了1000,更改完以后需要使用clear ip bgp *命令去reset一下Peer。才会使
改动生效。然后查看BGP路由表,如下图可以看到现在R2上到达5.5.5.0/24的最佳路径变成了下一跳为
172.16.3.3这条路径。这条路径的Weight值为1000,比另一条大,所以此路径变为Best Path。也只有
这条路径会被R2发布给其它Peer。

wps1003

5、有一点需要注意,Weight值是一个只适用于路由器本地的属性值,所以Weight值并不会跟随路由发
布到其它路由器,比如这时我们查看一下R1的BGP路由表,可以看到在R1上面两个Weight值仍然是0,
并且R1按自己的方式来选择最挂路径。

wps1004

二、比较Local Preference

1、如何Weight值相同,此时通过比较Weight值就无法选出最佳路径,这时BGP路由器要去比较的下
一个值就是Local Preference值,同样是较大的值胜出。一条路由的Local Preference较大的话,
它就是整个AS对于该目的地的出口。如下图,我们先将Weight值改成一样,再来调整Local Prefer
ence值。所有通过iBGP Peer传递的路由,其Local Preference默认值都是100。

wps1005

2、现在我们在R3上把从R6传来的5.5.5.0/24这条路由的Local Preference值设置为500。可以通过
Route-map来进行配置。配置完成后同样记得Reset一下Peer。

wps1006

3、由于Local Preference是整个AS的事件,所以这个属性会传递到iBGP Peer,修改完成后我们在R2
上查看BGP Route,可以看到经过R6这的这条路由的Local Preference值已经变为500,并且BGP选择
了这条路径做为最佳路径。

wps1007

三、Locally Originated

本机原生是指由本机使用指令Network、Aggregate-address生成或由本机把IGP Router
Redistribute到BGP的路由,比从其它Neighbor收回来的路由要好。

四、比较AS Path

1、AS Path是到达目的地网段所要经过的AS,BGP认为AS Path越短越好,所以在比较AS Path时,路径
较短的会胜出。如下图我们将Weight值和LocPrf都改成相同。然后再来调整AS Path来改变最佳路径。

wps1008

2、如上图,当前使用的最挂路径是第一条路径,也就是下一跳为172.16.2.1这条路径。如果现在我
们将这条路径的AS Path变长,那么BGP在重新选路时就会选择第二条路径做为Best Path。修改AS
Path可能需要在物理上对设备之间的连线进行调整,如果实际条件不允许这样做,我们也可以通过
命令来做这个修改。使用Route Map当中的Prepend可以在AS Path当中强行加入一些AS编号,让AS
Path变长,但注意这个方法只适用于eBGP Peer,iBGP Peer不允许这样修改AS Path。所以根据我
们的实验拓扑,我们在R4上进行此操作。修改完成后Reset一下BGP Peer。

wps1009

3、需要注意,为了防止出现Loop,在修改AS Path时通常使用AS Path最前面的一个AS编号做为
Prepend的AS。所以这里我们用的是100。在R2上查看BGP路由,可以看到172.16.2.1这条路径的
AS Path变长了,增加了一个Prepend AS:100。所以原本它是最佳路径,经过重新选择,最佳路
径变为下一跳为172.16.3.3这条路径,以为它的AS Path较短。

wps1010

五、比较Origin Type

1、上一篇我们介绍过Origin的三个值:”i”、”e”和”?”,因为”e”已经被淘汰了基本用不到,所以这
里我们主要来看一下”i”和”?”这两个值。”i”表示该路由的来源是IGP、使用network指令或者
Aggregate-address指令。”?”表示该路由是通过redistribute得来的。比较Origin Type选择较小
的值。

2、如下图,在测试之前我们同样先前将前面介绍过的几个属性都配置成一样。此时Best Path是下
一跳为172.16.2.1这条路径。

wps1011

3、现在我们在R4上加入一条指向5.5.5.0/24的静态路由,然后把它redistribute到BGP中。

wps1012

4、现在在R2上查看BGP路由表,可以看到第二条路由后面的Origin Type变成了”?”。但由于前面在R4
的配置的静态路由改变了AS Path,所以现在第二条路由地AS Path本身就比第一小短,所以它是最佳
路径。现在我们需要用Prepend AS Path来将其长度变成与第一条一样,从而来证明BGP是会选择”i”
还是会选择”?”。

wps1013

5、Prepend改好AS Path之后,现在两条路由的AS Path长度是相同的,这时再看BGP选择谁做为最佳
路径。如下图可以看到,BGP选择了Origin Type为”i”的这条路径做为Best Path。由前面的
172.162.1这条路变成了172.16.3.3这条路。也就是说”i”要比”?”小。

wps1014

六、比较MED值

1、接下来我们来看一下MED值,假设前面介绍的这些属性值都相同,BGP该如何做选择,那么下一个
要进行比较的就是MED(Metric)值。MED就像IGP里面的Metric,它可以传递到其它的AS。Metric值
小的路由会被选为最佳路径。不过需要注意的是,MED要求必需要在AS Path中第一个AS编号相同的时
候才会做出比较,如果AS编号不相同,又要进行比较,可以使用”bgp always-compare-med”指令进行
强制比较。

wps1015

2、另外我们也可以将AS编号进行修改,注意需要在Peer中的路由上都进行修改,来使两条路径中的
AS编号也完全相同。如下图,我们将拓扑中的AS400也修改为AS100,所以现在两条路径中的AS编号是
相同的。此时最佳路径是172.16.2.1这条路。默认两条路径的MED值都是0。

wps1016

3、现在我们将172.16.2.1这条路的MED值增大到100。我们在R4上进行操作,可以使用Route Map来
实现。同样需要Reset Peer。

wps1017

4、MED调整完成后,在R2上查看,可以看到第一条路的Metric变为100,同时最佳路径由原来的
172.16.2.1这条路变成了172.16.3.3这条路。说明BGP选择了Metric较小的这条路。

wps1018

七、iBGP与eBGP

如果以上所有比较都相同,eBGP的路径会优于iBGP,即使Best Path在这个阶段被选出,BGP仍会跳到
Multipath检查是否需要做Load Sharing,所以如果需要做Multipath,前面从一到六这些属性必须全
部相同。

八、Next-hop的IGP Metric

如果此时还是不能选出最佳路径,则比较到达next-hop的IGP Metric,较小的值胜出,就算Best
Path在这个阶段被选出,BGP扔会跳到Multipath检测是否需要做Load Sharing。

九、Multipath

1、BGP支持的是Unbalanced Load Sharing,可以参考接口的带宽去分配流量。如下图R1有3条路径可
以到达R5,R5通过BGP发布了5.5.5.0/24网络。这里假设所有配置已经完成。

wps1019

2、默认情况下,Multipath的值为1,也就是不进行Load Sharing。如下图,BGP选择了下一跳为
172.16.2.3的路径为Best Path。

wps1020

3、使用show ip protocols命令查看BGP的Maximum path为1。

wps1021

4、现在我们在R1上为BGP配置Multipath,R1有三条路径连接到AS200,所以我们将Multipath值
设置为3。

wps1022

5、配置完成后,查看BGP路由表。可以看到最佳路径之外的两条路径前面多了一个”m”标记。说明这
两条路径现在是加入到了Multipath当中。Best Path并不会发生改变,路由器只会将Best Path发布
给其它Neighbor。

wps1023

6、查看现在的流量分布情况,可以看到现在流量是1:1:1平均分布的。

wps1024

7、现实中可能会遇到链路带宽不一致的问题,比如在我们的拓扑中,R1到R4这条链路是一个
Serial链路,带宽只有1.5M。所以如果按照默认的1:1:1来分配流量显然不合理。所以这里
就要对流量分配进行调整。使用bgp dmzlink-bw让BGP根据链路带宽来自动去分配流量。

wps1025

8、配置完成后,可以看到现在的流量分配的比例是37:240:240。

wps1026

免责声明:务必仔细阅读

  • 本站为个人博客,博客所转载的一切破解、path、补丁、注册机和注册信息及软件等资源文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。

  • 本站为非盈利性站点,打赏作为用户喜欢本站捐赠打赏功能,本站不贩卖软件等资源,所有内容不作为商业行为。

  • 本博客的文章中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断.

  • 本博客的任何内容,未经许可禁止任何公众号、自媒体进行任何形式的转载、发布。

  • 博客对任何脚本资源教程问题概不负责,包括但不限于由任何脚本资源教程错误导致的任何损失或损害.

  • 间接使用相关资源或者参照文章的任何用户,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, 博客对于由此引起的任何隐私泄漏或其他后果概不负责.

  • 请勿将博客的任何内容用于商业或非法目的,否则后果自负.

  • 如果任何单位或个人认为该博客的任何内容可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明至admin@proyy.com.我们将在收到认证文件后删除相关内容.

  • 任何以任何方式查看此博客的任何内容的人或直接或间接使用该博客的任何内容的使用者都应仔细阅读此声明。博客保留随时更改或补充此免责声明的权利。一旦使用并复制了博客的任何内容,则视为您已接受此免责声明.

您必须在下载后的24小时内从计算机或手机中完全删除以上内容.

您使用或者复制了本博客的任何内容,则视为已接受此声明,请仔细阅读


更多福利请关注一一网络微信公众号或者小程序

一一网络微信公众号
打个小广告,宝塔服务器面板,我用的也是,很方便,重点是免费的也能用,没钱太难了,穷鬼一个,一键全能部署及管理,送你3188元礼包,点我领取https://www.bt.cn/?invite_code=MV9kY3ZwbXo=


一一网络 » Border Gateway Protocol(BGP)边界网关协议(二)

发表评论

发表评论

一一网络-提供最优质的文章集合

立即查看 了解详情