首页 > 代码库 > BGP

BGP

1:路径矢量协议


2:AS:单独技术管理域控制下的网络汇聚端;范围可大可小,相对而言;

   AS no.  1-65535,   私有64512-65535

   IGP协议运行在一个相同AS内部,保证该AS的内部连通性,并负责收集该AS内有哪些可达的路由信息;

   BGP运行在不同AS之间;


3:BGP选路是基于策略设置,而不是最优路径;BGP策略可基于AS-AS来设置,也可以基于hop-hop来设置;

 

4:协议基本属性:

   基于TCP:179端口运行;

   只进行增量触发更新;

   通过周期性的发送keepalive消息,来确保两个邻居之间TCP链路的有效性;

   丰富的路径属性;


5:BGP的表:

   邻居表:放置着BGP的邻居;所有的BGP邻居关系都是“单播、双向手工邻居”

   BGP表:包含通过每个邻居学习来的每条BGP网段信息;

          到达这些目标网段的所有路径;

          每条路径的路径属性;

   IP路由表:经过BGP策略选择之后的最优路径;


6:消息类型:所有的BGP消息包都是单播包;

   *OPEN:发现并建立邻居关系;包含hold-time和BGP的RID;

   *keepalive:周期性的发送,维护邻居关系;

   *Update:到达所以目标网段的所有路径,以及每条路径的BGP属性;

   *Notification:当设备运行BGP检测到错误产生时向所有邻居发送,发送之后

                  便将本地的BGP会话关闭;



8:BGP邻居关系:所有的BGP邻居关系建立都是双向手工配置,而且所有BGP邻居之间的消息包都是单播包。

(1)EBGP:在两个位于不同AS内的路由器之间建立的邻居关系叫 EBGP

        缺省:EBGP邻居要使用直连接口地址来建立邻居关系;原因是缺省EBGP邻居之间消息包的TTL=1;

(2)IBGP:在两个位于相同AS内的路由器之间建立的邻居关系叫 IBGP;

        一个BGP路由器不会把从某个IBGP邻居学习来的路由再转发给其他IBGP邻居;目的是为了防环;



9:BGP邻居状态:

    Idle:查找本地路由表中是否存在着到达邻居目标地址的路由条目;

    Connect:已经在本地路由表中查找到相应路由条目,并开始与邻居建立TCP连接,完成3次TCP握手;

    Open send:向该邻居发送Open消息,并开始等待来自邻居的回复确认;

    Open confirm:已经收到对方回复的确认消息,向下进入established状态;

    Active:未收到对方的确认消息将停留在active状态,并有可能在idle和active之间不断循环;





BGP基本配置:

(1)router bgp AS-no.   :自治系统号范围 1-65535,65536-4294967295;

                         该AS号码直接指定了当前路由器所在的AS;

                         也决定了该路由器与其他BGP路由器的邻居关系是EBGP还是IBGP;

                         缺省在一个单独时刻,只能在一个设备上边开启一个BGP进程;


(2)bgp双向手工邻居的配置:

     -router)#neighbor ip-address remote-as as-no

       *ip-address:是邻居路由器上某个可达的IP地址;

                    该ip-address直接指定了本地路由器发往这个bgp邻居,所有BGP消息包的目标IP;

                    而发往该邻居所有BGP消息包的源ip取决于带有该目标ip-address的消息包从本地哪个接口发出去;

                   *而建邻居双方需要满足这样的地址要求:确保本地指向邻居消息包的目标IP,作为邻居向本地回包

                    的源地址;

       *as-no. :邻居路由器所在AS号码;


     -router)#neighbor 2.2.2.2 remote-as 65123

     -router)#neighbor 2.2.2.2 update-source loopbace 0 -->指定本地某个接口(loopback0)的地址作为发往邻居2.2.2.2所有BGP消息包的源地址;


      -config)#router bgp 65300

      -router)#no synchronization

      -router)#bgp log-neighbor-changes

      -router)#neighbor 2.2.2.2 remote-as 65123

      -router)#neighbor 2.2.2.2 ebgp-multihop 5 --->将发往EBGP邻居2.2.2.2的BGP消息包的TTL改成5

      -router)#neighbor 2.2.2.2 update-source Loopback0

      -router)#no auto-summary

      


(4)BGP邻居验证:

     neighbor 2.2.2.2 password 123455   只支持MD5验证



(5)关闭与某个BGP邻居的会话,但并不移除本地有关该邻居的配置信息:

     router)#neighbor 2.2.2.2 shutdown

     router)#no neighbor 2.2.2.2 shutdown



(3)向BGP内宣告路由:

      -rotuer)#network 10.1.1.0 mask 255.255.255.0    

     *只要该路由存在于设备路由表中,就可以将其network进BGP,而无需考虑该条目之前是如何进入本地路由表中;

     *必须保证向BGP内宣告的网段和当前路由表相应条目保持一致;


     缺省,EBGP路由条目在向IBGP邻居宣告时,next-hop-ip保持不变;

      -router)#neighbor 1.1.1.1 next-hop-self --->向IBGP邻居1.1.1.1宣告本地学习到的EBGP路由时,将next-hop-ip指向本地路由器自己;



(6)常见show命令

   *show ip bgp summary -->查看当前简要的BGP邻居信息

   *show ip bgp neighbor  -->查看当前详细的BGP邻居信息

   *show ip bgp  -->查看本地BGP表

   *show ip route bgp  -->查看BGP路由表

   *show ip bgp rib-filure  -->查看当前BGP表中没有最终进入路由表的路由条目有哪些,以及没有进入路由表的原因



(7)清理BGP会话:使得本地针对邻居修改的BGP策略立即生效

   *硬清:#clear ip bgp *   ----->重置与本地所有BGP邻居的会话

           clear ip bgp 2.2.2.2  ---->只重置本地与邻居2.2.2.2的BGP会话

   *软清:#clear ip bgp * soft  ---->让当前本地针对所有邻居调整的BGP策略立即生效,并不会重置邻居关系;

           clear ip bgp 2.2.2.2 soft  ---->让当前本地针对邻居2.2.2.2调整的BGP策略立即生效,并不会重置邻居关系;



(8):同步规则:当开启bgp同步规则的时候,如果将一条路由信息仅宣告进BGP,而同时没有被宣告进相应的IGP协议,

              在设备本地发生BGP数据库和IGP数据库不同步的情况,那么BGP协议不会使用所学习到的不同步的路由条目,

              也不会把它转发给其他的BGP邻居;



(9):BGP对等体组(peer-group)

    减少多个邻居相同的BGP策略设置;先创建逻辑的对等体组,然后将之前赋予每个邻居的BGP策略赋予到peer-group,

    再将具体邻居加入到peer-group;而对等体组内的成员可单独再设置与其他组成员不同的BGP策略;

    neighbor kaka peer-group

    neighbor kaka remote-as 65123

    neighbor kaka update-source Loopback0

    neighbor kaka next-hop-self

    neighbor 1.1.1.1 peer-group kaka

    neighbor 2.2.2.2 peer-group kaka



(10):BGP选路

  *最高Weight值 (Cisco Only)

  *最高本地优先级

  *本地发起路由(next-hop 0.0.0.0)(network通告的路由优先、从IGP重分布的路由次优、手工汇总路由)

  *最短AS_PATH (跳过这一步:bgp bestpath as-path ignore)

  *比较源头码:IGP优于BGP

               EBGP优于IBGP

               不完整

  *最小MED(默认只比较第一个邻接AS相同的路由;比较不同邻接AS的MED用命令bgp always-compare-med)

  *EBGP优于IBGP(IBGP优于联盟EBGP,联盟EBGP优于联盟IBGP)

         负载均衡输入:maximum-paths 6

   注:负载均衡条件:

    1:邻接关系都是EBGP,且到下一跳IGP度量相等

    2:邻接关系都是IBGP,且到下一跳IGP度量相等(可通过unequal-cost ibgp multipath忽略这步)


  *(1)如果都是EBGP,选取最早学习到的路由;

   (2)如果都是IBGP,选取到下一跳具有最低IGP度量的路由

          *最小Router-ID的下一跳路由(RR环境)

          *最小IP地址的下一跳(建邻居时所指向的IP地址)

       



(11):bgp策略    neighbor 1.1.1.1 route-map kaka in/out -->将名字为kaka的route-map应用到从邻居1.1.1.1学习到(in)的bgp路由或发向(out)邻居1.1.1.1的bgp路由

  *修改weight影响选路结果:

    ! 

    access-list 53 permit 50.1.3.0 0.0.0.255

    !

    route-map wei permit 10

     match ip address 53

     set weight 100

    !         

    route-map wei permit 20

    !



  *修改local-Prf影响选路结果:

    ! 

    access-list 53 permit 50.1.3.0 0.0.0.255

    !

    route-map lpf permit 10

     match ip address 53

     set local-preference 200

    !

    route-map lpf permit 20

    !



  *修改AS-Pathx影响选路结果:针对EBGP邻居来修改

    !

    access-list 53 permit 50.1.3.0 0.0.0.255

    !

    route-map pth permit 10

     match ip address 53

     set as-path prepend 100 200 300

    !

    route-map pth permit 20

    !



   *修改MED影响选路结果:针对EBGP邻居来修改

    !

    access-list 53 permit 50.1.3.0 0.0.0.255

    !

    route-map med permit 10

     match ip address 53

     set metric 20000

    !

    route-map med permit 20

    !

本文出自 “A man and A computer” 博客,请务必保留此出处http://juispan.blog.51cto.com/943137/1950663

BGP