通过BGP属性控制路径

2018年6月26日23:41:28

简介:BGP(Border Gateway Protocol)边界网关协议,BGP外部网关协议(EGP)这种协议用于连接不同的自治系统(AS),BGP的主旨是提供一种域间路由系统,确保自治系统能够无环路的交换路由信息,同时也可以再AS级别上实施策略。BGP与其他协议不同(如:RIP、OSPF等)BGP是建立在面向连接TCP 协议端口号为179之上,BGP和RIP协议相似是一种距离矢量协议,但BGP一种增强的距离矢量协议以自治区域为基本单位。BGP协议定义了四种消息类型和多种属性保证协议良好的运行,通过对协议属性的修改可以达到AS层面的路径控制。

 

一.BGP属性分类

BGP更新消息可以包含网络层的可达性信息和路径属性信息,前者是一个网路列表后者是一组BGP度量值,描述前往这些网络的路径。BGP使用路径属性来确定前往网络的最佳路径。

这些属性可分类为:公认的或者可选的、强制的或者自由决定的、传递的或者非传递的,这些属性可以是部分的也可能是组合的,但并非所有组合都合法,只有四种合法的组合,分别如下:公认强制、公认自由决定、可选传递、可选非传递。

1.  公认属性

公认属性是所有BGP必须能够识别的属性。

公认属性分两类:公认强制属性和公认自由决定属性。

公认强制属性必须出现在BGP更新中,在CISCO中公认强制属性包括:AS路径(AS-path)、下一跳(next-hop)、源头(origin)。

公认只有决定属性可以不出现在BGP更新中,但是所有BGP设备都需要认识这种属性,在CISCO中这种这种属性包括:本地优先级(local-preference)、原子聚合(Atomic aggregate)。

2.  可选属性

非公认属性被认为可选的,实现可选属性的BGP路由器可能更具其含义将其传播给BGP邻居。

可选属性可分为:可选传递属性和可选非传递属性。

可选传递属性对于不支持的可选传递属性,路由器将其原封不动的传递给其他的BGP路由器,并将其标记为部分的。可选传递属性包括:聚合站、共同体。

可选非传递属性对于不支持的可选非传递属性,路由器必须将其删除,并且不将其传递给其他BGP邻居。

二.BGP属性详解

BGP协议拥有多种同的BGP属性,并且每一个设备厂商BGPBGP属性类型也会存在一定的差异,接下来我们就详细的介绍一下CISCO中比较常见的BGP属性。

1.  AS路径属性(AS-path

AS路径属性是前往目标网络的路由经过的AS号列表,通告该路由器的自治系统位于列表末尾,是公认强制属性。AS路径属性的作用是保证路由无环路,当收到一条AS属性包含当前AS号的路由后,将不接收它。

     通过BGP属性控制路径详解

192.168.2.0/24到达192.168.1.0/24AS路径为(158256

2.下一跳属性(Next-hop

下一跳是公认强制属性,指出了前往目的地的下一跳IP地址。

     EBGP而言,下一跳是发送更新邻居路由器的IP地址,例如:(图一中)RA的下一跳是RCIP地址;然而IBGP规定,应在IBGP中通告EBGP的下一跳,IBGP路由器执行递归查找,根据IGP或者静态路由获取到达目的地的下一跳。

3.源头属性(Origin

源头属性的公认强制属性,它指出路径信息的源头。

源头属性可以是下列三个值。

 IGP:路由是始发AS内部的,在BGP表中IGP源头用i表示;

 EGP:路由是通过EGP获悉的用e表示。

 不完全:路由源头未知或是通过其他方法获悉的,路由被重分发到BGP中时,通常属于这种情况。

 源头编码IGP不完全。

4.本地优先级(Local-preference

它告诉自治系统中的路由器,那条路径是离开的首选路径。本地优先级越高,路径被选中的可能性也就越大。

本地优先级只发给IBGP邻居而不发送给EBGP邻居,本地优先级是公认自由决定的属性,它只在AS类比路由器直接传递。Cisco路由器默认Local-preference100

 通过BGP属性控制路径                                图二

RBlocal-preference大于RA,所以AS26AS158出口为RB

5.共同体(Communit

BGP共同体是一种用于过滤入站/出站路由的方法。BGP共同体让路由器能够用提示符(Community)来标记路由,其他路由器更具标记来做出决策。任何BGP路由器都可以对出入站路由更新做标记,任何BGP路由器都可以根据共同体来过滤更新中的路由,或者选择最优路由。

共同体是可选传递属性。BGP共同体被用于一组具有相同特征的目的地,且共同体不被限制在单个的网络或者自治系统内。

6MED

MED属性也被称为度量值,是一种可选非传递属性。

MED用于向外部邻居指出进入自治系统的首选路径。当入口有多个是,自治系统可以使用MED动态的英雄其他自治系统如何选择进入路径。

与本地优先级不同MED是在AS之间交换的,MED被发送给EBGP对等体,这些路由器在其AS内传播MED,但不再传递给下一个AS。度量值越小,路径选中可能性越大MED默认值为0

通过BGP属性控制路径详解

                                 图三

RA的度量值比RB小,AS158将吧RA作为到AS26的最佳下一跳。

6.权重(Weight

权重是Cisco专有的BGP属性一种用于选择路径的属性。权重是配置路由器本地配置的,只提供本地路由策略,不会传播给BGP邻居。如果到同一目的地有多条路径,选择权重最高的。权重取值范围0~65535,当前路由器通道的路径默认权重值为32768,其他路径默认为0

三.路由决策过程

BGP只考虑已同步,没有自治系统环路且下一跳有效的路由。Cisco选择最佳路由。

第一步:比较权重最高

         第二步:本地优先级最高

       第三步:本地优先级相同,选择当前路由器通告的的路由

      第四步:AS路径

      第五步:源头编码最小的路径

      第六步:MED最小的路径

      第七步:EBGP路径优于IBGP路径

      第八步:EBGP最老的路由

      第九步:首选BGP路由ID最小路由

      第十步:IP地址最小路由

决策过程是根据BGP属性来选择路径,到达同一个目的地有多条路由时BGP根据其属性选择出最优路径。

四.BGP路径操纵

     不同与内部路由协议,BGP并非用于选择最快的路径,而是用于控制数据流的传输路径,以最大限度的利用带宽。

1.设置权重

首先,在每一台路由器上配置BGP并建立邻居关系。

通过BGP属性控制路径详解

 

 

 

如上图,未做路径控制前R1到达R3的路径为R1->R2->R3,在修改权重过后路径将会受到变化。

命令如下:neighbor 2.2.2.2 weight min

         Neighbor 17.17.17.17 weight  max

上图中修改过后R4weight高于R2,所以修改weightR1 到达R3的路径将会变为R1->R4->R2->R3

2.设置本地优先级

修改原则,被动优先级在区域内IBGP之间传递,用来选择离开当前AS的最佳路径。本地优先级越高越优先。

 通过BGP属性控制路径详解

 

未修改前,未做路径控制前R1到达R3的路径为R1->R2->R3,修改过后路径R1->R4->R2->R3

AS65001有两个出口,默认情况选选择R2,若将R4出口的local-preference修改高于R1,或者R2低于R4

R1上做如下配置:

第一步:访问控制列表或者前缀列表;

第二步:路由映射表

Route-mapSET_LOCALPREFERNCE permit  num

          match ip add  access-list_name

          set local-preference value

第三步:引用路由映射表到BGP邻居

          Neighborx.x.x.xrote-map SET_LOCALPREFERENCE in/out

3.设置AS路径

修改原则,由于AS号越短被选中的可能性就越大,可以通过加长AS路径的方式控制路径,常见方法是添加多个当前AS号的副本,这种功能也就是常见的AS路径追加。

 通过BGP属性控制路径详解

 

  R1R3路径修改。

  配置步骤和如上local-preference相同。

  第一步:访问控制列表或前缀列表

  第二步:路由映射表

          Route-mapSET_ASPATH permit num

               Match ip add  num

               Set as-path prepend  as as as as as

   第三步:应用到邻居

          Neighborx.x.x.x route-mapSET_ASPATH in/out

3.设置MED

 修改原则,MED影响进入到当前区域的路径,MED越小越优先。

 通过BGP属性控制路径详解

 

  第一步:访问控制列表或前缀列表

  第二步:路由映射表

          Route-mapSET_MEDpermit     num

               Match ip add  num

               Set metric value

   第三步:应用到邻居

          Neighborx.x.x.x route-mapSET_MED in/out

修改过后的路径上路可以显示。

通过BGP属性的修改可以实现对路径的修改,这其中会遇到一些问题,具体情况具体分析,不同的时候选择不同的属性修改,不同的属性也可能应用于不同的场景。

 


  • 更新时间:2018年6月26日23:41:28 ,共 3892 字。