BGP协议

协议概述-定义

*边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择优选路由的距离矢量路由协议。也称之为“外部网关协议 ”。早期发布的三个版本分别是BGP-1、BGP-2和BGP-3,1994年开始使用BGP-4,2006年之后单播IPv4网络使用的版本是BGP-4,其他网络(如IPv6等)使用的版本是MP-BGP

*MP-BGP是对BGP-4进行了扩展,来达到在不同网络中应用的目的,BGP-4原有的消息机制和路由机制并没有改变。MP-BGP在IPv6单播网络上的应用称为BGP4+,在IPv4组播网络上的应用称为MBGP(Multicast BGP)。

*BGP本身不产生路由,仅仅用来传递路由

*BGP的路由属性非常丰富,所以使用BGP更多的目的是为了“实现路由的灵活控制”

*BGP协议属于OSI模型的第7层,即应用层。使用的接口号是TCP 179

基本概念:

-AS号:

*任何一个运行BGP协议的路由器,都需要指定一个AS号,AS号就是用来在BGP协议中来表示不同的公司。AS号取值:0-65535

          &AS号的空间有限,随着网络的发展有可能会快速的耗尽,为了能够让AS号能够用,所以又有了“私有AS号”

          &私有AS:

                       -这类AS不需要花钱购买,可以随意使用,但是只能在公司内部使用

                       -取值范围:64512-65535

           &公有AS:

                       -这类AS需要花钱购买,需要找当地的运营商。可以在公网上运行!

                       -取值范围:0-64511

-route-id

         -作用:在BGP网络中标识唯一的路由器

        -确定方式:

                        1.手动指定

                        2.自动选举

                 

优点

BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性:
最终目的:在公司之间,以稳定的方式,长时间的,传输大量的路由,最终计算一个无环的路径同时,还能实现对路由的灵活控制。

工作原理

-建立邻居表

       包含的是BGP的邻居设备

 

-同步数据库

        包含的是自己本地宣告的BGP路由,以及从其他邻居学习过来的BGP路由

 

-计算路由表

         包含的是从数据库中按照一定的BGP选路规则,选举出来的最好的路由。

报文类型

-open报文,用于BGP邻居的建立,通过报文协商很多BGP协议的参数

-update报文:即更新报文,用于在BGP邻居之间同步数据库

-keep-alive报文:用于在BGP邻居之间周期性的发送,维护BGP的邻居关系

-notification报文:通知报文,即在BGP邻居之间传递报错信息和警告信息

-refresh报文:刷新报文。即BGP的路由策略改动之后,为了能够让策略快速生效,需要使用路由器的刷新能力,就会使用该报文。

原理详解

-邻居的类型

         1.内部邻居:如果两个BGP协议的路由器,在同一个公司

          2.外部邻居:如果两个BGP协议的路由,在不同的公司

-邻居的建立过程

          1.首先设备之间建立稳定的TCP连接

                     &TCP的建立:3次握手

                     &TCP的断开:4次挥手

           2.在TCP连接之上,互相发送open报文,比较open报文中的参数,协商成功后建立BGP邻居关系

-邻居的基本配置命令

 

 

   &需求:在R1和R2之间,建立BGP邻居关系(extended BGP)

            配置命令:

                        R1:

                               int g0/0/0

                              ip add 19.168.12.1 24

                                quit

                                 bgp 100

                                 route-id  1.1.1.1

                                 peer 192.168.12.2 as-number 234-->与 AS 号234的路由器建立邻居,邻居接口IP:192.168.12.2

                          R2:

                                  int g/0/1

                                 ip  add 192.168.12.2 24

                                 quit 

                                   bgp  234

                                   rout-id  2.2.2.2

                                    peer 192.168.12.1 as-number 100 --->与AS号100的路由器建立邻居,邻居接口IP:192.168.12.1

-邻居表的字段分析

  display  bgp  peer  //查看BGP的邻居表

 

 

 

 

-邻居之间的路由传递

   display   bgp  routing-table   //查看BGP的路由和下一跳信息

     *根据上面的拓扑图,如果R1上的loopback 0接口能与R5的loopback 0接口进行通信,我们应该怎么做?

          1. 在R1和R2之间,通过直连接口,建立EBGP邻居关系;

           2.在R1上通过network的方式,宣告路由10.10.1.1/32进入到BGP的数据库

                      命令:

                              R1

                               int loopback 0

                              ip add 10.10.1.1 32

                               BGP 100

                               network 10.10.1.1 32

           3.R1通过BGP,将路由发送给R2,放入到R2的BGP数据库,并且认为是最优的路劲

           4.在R2/R3之间运行OSPF,确保R2和R4的接口能够互通

           5.在R2和R4之间,建立BGP邻居关系(internal bgp,内部邻居关系)

           6.之前R1传递给R2的路由,对于R2而言,认为是最好的路由,所以也会发送给自己的邻居R4

           7.路由传递到R4上以后,在数据库中,并不是“最好的路由”

                      &原因:R4无法去往该BGP的下一跳IP地址,即192.168.12.1

                       &解决办法:

                                *确保R4上,有去往R1的路由条目(该方法将公司之间的路由放入到了公司内部,非常的不稳定,所以不可取)

                                    1. 在R4上配置去往192.168.12.1(R1)的静态路由

                                     2.在R4上通过OSPF协议学习该下一跳IP地址的路由(通过在R2上宣告192.168.12.0网段的路由)

                                *确保在R4设备上,该路由的下一跳IP地址变更为R2的接口IP地址

                                       1、 在R2上,针对内部邻居,发送路由时,将外部路由的下一跳地址修改为自己的IP地址

                                        2. 命令:R2

                                                           BGP 234

                                                           peer 192.168.34.1 next-hop-local

                                                      

                                           得出结论:

                                                        1. EBGP邻居之间传递路由下一跳默认是修改路由的下一条IP地址的

                                                         2.IBGP邻居之间传递路由的时候,默认是不修改路由的下一跳地址的

                8. 经过“步骤7”的解决方案,我们可以确保R2上的BGP数据库中,该路由是最好的。

                9.在R4和R5之间,建立EBGP邻居关系,希望R4将路由发送给R5.

                10.R5在和R4建立好邻居之后,可以顺利学习到R4传递的路由条目【因为EBGP邻居之间传递路由的时候,下一跳地址是自动变化的】

                11.R5也建立一个回环口,并且通过(import-route direct)宣告进入BGP,然后传递给R4

                 12.在R4上看到该路由是可用的,并且顺利发送给R2,但是在R2上因为下一跳IP地址不可达,所以R2不能使用该路由。

                               解决方案:

                                              1.在R4上针对R2,发送路由时,将下一跳ip地址设置为自己的IP

                                                   命令:

                                                              R4:

                                                                    BGP  234

                                                                     peer  192.168.23.1 next-hop-local 

                     13.R2学习到正常的下一跳ip地址后,就可以顺利的发送给R1

                      14.R1的BGP数据库中就学习到了R5的路由,并且顺利放入到了R1的路由表中

                       15.测试:在R1上ping -a 10.10.1.1  10.10.5.5看是否能够互通。

                                      结果:不通

                                      原因:因为在R3上没有运行过BGP,所以R3的路由表中没有R1和R5的路由条目。

                                      解决方法:有3种

                                                 1. 在R3上添加静态路由

                                                  2. 让R3通过IGP(OSPF)学习路由

                                                 3.让R3通过BGP学习路由

                                                             &bgp全互联

                                                             &BGP联盟

                                                             &BGP反射器

 BGP“源IP地址检测”

             通过上诉的案例最终,因为R3上没有通往R1和R5的路由,固R1和R5不能通信。

              那么,在R2和R4两个区域边界路由器之间之间增加一条线路。

             为了更好的了解BGP的特性,我们将拓扑变更如下:

      

 

               1. 取消原来R2和R4之间建立的BGP邻居,再将R2和R5通过直连线路接口建立BGP邻居关系,为了使拓扑更加稳定,我们使用路由器的loopback0接口地址作为

                    发送bgp  open报文的源地址。然后我们尝试R2和R5之间建立BGP邻居关系。

                 配置R2和R5建立bgp邻居关系,命令如下:

                      R2:

                            bgp  200

                             route-id  2.2.2.2

                            peer  10.10.5.5 as-number   200

                      R5:

                              bgp  200

                               route-id  5.5.5.5

                                peer  10.10.2.2 as-number 200

                     2. R2和R5配置完后,我们查看R2和R5的bgp邻居关系,但是并未建立bgp邻居关系。

                            原因:

                                       *R2作为源,主动向10.10.5.5的TCP  179端口,发起一个连接;

                                        【注意】:

                                                    -任何一个设备,向特定目标IP地址发送数据包的时候,如果不明确说明“源IP地址”是多少,那么这个数据包的源IP地址就是:

                                                      该设备去往特定目标地址时,所使用的那个'出接口”IP地址。

                                                    -在该案例中,R2使用的接口时“g0/0/2”,所以源地址:192.168.25.2

                                                      此时选择端口的依据是:路由器去往10.10.5.5时,查找路由表来确定的出接口

                                        *R2要求,邻居向自己发送BGP报文时,源IP地址必须是10.10.5.5;

                                        *R2要求,邻居向自己发送BGP报文时,所携带的AS号必须是200;

                                        *R2建立的TCP连接:

                                                  192.168.25.2:源端口(随机的)---------->10.10.5.5:179, tcp;

                                        *R5要求,邻居向自己发送BGP报文是,源IP地址必须是10.10.2.2

                                        *R5要求,邻居向自己发送BGP报文时,所携带的AS号必须是200;

                                        *R5建立的TCP 连接:

                                                      192.168.25..5:源端口(随机的)  ---------->10.10.2.2:179,tcp;

                                         【注意】:

                                                       1.在建立TCP连接的过程中,通常会有这种说法“主动建立TCP连接”和“被动建立TCP 连接”;

                                                        2.通常情况下。凡是端口是“随机端口”的一端,称之为“主动发起方”

                  -经过上述分析我们知道:

                           1.R2发的连接,源IP地址,满足不了R5的要求,所以连接无法建立;

                           2.R5发的连接,源IP地址,满足不了R2的要求,所以连接无法建立;

                           最终:R2---R5之间的bgp邻居,就无法建立

                            那么:上述这个“原则”,就称之为“源IP地址检测”

                            所以,解决办法:更改“发送的BGP”连接的源IP地址。

                                          修改命令:

                                                           R2:

                                                               bgp  200

                                                                  peer  10.10.5.5  connect-interface   loopback 0

                                                                 //即R2向10.10.5.5发送的报文的时候,使用的源IP地址是loopback 0(10.10.2.2)

                                                            R5:

                                                                   bgp   200

                                                                   peer   10.10.2.2 connect-interface  loopback 0

                                                                   //即R2向10.10.5.5发送的报文的时候,使用的源IP地址是loopback 0(10.10.5.5)

             -上述的案例,称之为:更新源检测机制

                 即:对方BGP设备发送的报文的源IP地址,必须和自己的peer命令后面的IP地址是相同的。

                总结:当bgp设备有多个出接口的时候,就必须要开启“源IP地址检测”功能,即:peer  x.x.x.x connect-interface  loopback  x 

                            //建议建立BGP邻居关系时尽量使用loopback接口,运维使用这种口的特点就是:稳定,即:任何时候改端口的状态都是up,不会down。除非设备关机了

直连检测机制

接下来思考:

          以上是IBGP之间可以通过“稳定的回环接口”建立邻居关系,那么EBGP是否也可以使用“回环接口”建立邻居关系呢?

        答:不可以

 案例:

 

 

 

  实验环境说明:

         1.在R5和R6之间新增一条线路(右),接口IP:192.168.66.0/24。

             R5新建loopback 66接口,IP地址:10.10.66.5/32

             R6新建loopback 66接口,IP地址:10.10.66.6/32

          2.建立邻居关系

               命令:

                         R5:

                             bgp 200 

                             peer   10.10.66.6 as-number  600

                             peer 10.10.66.6 connect-interface loopback 66

                          R6:

                               BGP  600

                              peer  10.10.66.5 as-number 200

                              peer  10.10.65.5 connect-interface loopback 66

            3.因为R5的loopback 66接口去往R6的loopback 66接口有两条路径,我们需要分别在R5和R6上创建静态路由指定去往对方的路径:

                   命令:

                           R5:

                                     ip  router-static   10.10.66.6 32  192.168.56.6

                                     ip router-static     10.10.66.6 32  192.168.66.6

                            R6:

                                      ip  router-static   10.10.66.5 32    192.168.56.5

                                      ip  router-static    10.10.66.5 32   192.168.66.5

 -在上诉的配置中,我们已经为了满足对方设备上的“更新源检测机制”,修改了自己的源IP地址。

但是,此时R5和R6作为EBGP邻居关系,依然无法建立!

因为,在EBGP邻居之间,还存在着另外一个机制:直连检测机制。

即:

      互为EBGP邻居的两个设备,在建立邻居关系的时候,去往对方的接口地址时,所使用的路由必须是“直连路由”

但是:

        在该案例中,我们在R5和R6之间是通过loopback 66建立的邻居,并且两者之间的通信是依靠“静态路由”

所以:

         此时R5和R6之间的邻居关系,是不满足“直连检测机制”的

解决办法:

       * 我们知道:

                  1. 邻居关系得是“EBGP邻居”

                  2.两个设备之间发送的BGP报文的TTL必须是1,如果TTL不是1,那么就不检查该机制。 

                     【注意】:

                                  -默认情况下,IBGP邻居之间发送的BGP报文的IP头部中的TTL值是255

                                  -默认情况下,EBGP邻居之间发送的BGP报文的IP头部中的TTL值是 1

          *那么,解决“EBGP邻居”之间通过回环口建立邻居关系的方法:修改EBGP邻居之间的BGP报文的TTL值大于1

                配置命令:

                                R5:

                                       bgp  600

                                       peer 10.10.66.6 ebgp-max-hop-->如果不指定任何具体的数值,那么久表示将TTL修改为255

                                 R6:

                                       bgp  200

                                        peer  10.10.66.5 ebgp-max-hop 2

              *此时,“非直连接口建立EBGP邻居关系”成功。

----------------------------------------------------------------------------------------------------------------------------------

邻居建立的影响因素

1. 两边的IP地址必须互通

2.两边的IP地址之间的TCP 179 端口流量必须放行

3.两边设备的router-id 不能相同

4.两边设备的AS号,必须是对方期望的

5.两边设备必须满足“更新源检测机制”

6.如果是EBGP邻居,还得满足“直连检测机制”

7.BGP邻居的认证,必须成功

 IBGP水平分割机制

     *在上面的拓扑中我们的目的是R1能够与R6之间互相通信。

     *通过上面的案例我们知道,此拓扑中R3和R4没有去往R1和R6的路由。

      *解决办法:

               1. 手动添加静态路由,配置太麻烦,且不灵活,不建议用

               2.配置动态路由协议-OSPF协议

                     配置命令:

                           R2/R5:

                               ospf  1

                               import-route   bgp  //将R2/R5通过BGP协议协议到的路由,引入到ospf协议;这些路由通过5类LSA的形式,在AS200内部进行传递,发送给R3和R4

                        &缺点:

                                 BGP协议通常传递的是大量的路由条目,但是OSPF协议呢,是为企业内部而开发的;

                                  所以OSPF协议的处理能力,非常有限

                                 所以不建议将BGP协议的路由,引入到OSPF;

                                 【通常,如果非得将bgp引入到ospf,我们必须在import-route后面结合使用route-policy来控制引入的路由数量】

                   3.通过动态路由协议-BGP学习

                                1.我们在AS 200内部所有的路由器上,都运行bgp,让每个路由器都能学习到路由。

                                2.配置:

                                        在R2/R3/R4/R5上都建立邻居关系,让彼此传递路由【注意:IBGP传递时,下一跳不会改变,所以,要修改下一跳地址为自己的地址。peer X.X.X.X  nedt-hop-local 】

                                3.遇见的问题

                                         R1--->R2---->R3,但是R3学习到的路由,虽然是最优的,但是没办法发给自己的邻居R4

                                     原因:

                                           BGP协议在设计的时候,为了防止IBGP邻居之间的路由环路,所以设计了一个“IBGP水平分割机制”;

                                           即,从IBGP邻居路由器学习到的路由,不会再次发送给另外一个IBGP邻居路由器   

                                     解决方案:

                                             1. IBGP路由器之间,全互联;

                                                   -优点:简单

                                                   -缺点:每个BGP路由器。都会和剩余的其他所有路由建立BGP邻居关系;

                                                               配置量非常大,管理不灵活,并且每个BGP路由器都需要维护大量的TCP连接。

                                                               消耗大量的系统资源。

                                                2.BGP联盟(在AS内部,将原来的内部邻居,想尽一切办法,变成外部邻居)

                                                引用拓扑说明:

 

 

 

 

 

                                                    -R1-R6首先配置各接口IP地址,以及loopback接口地址【配置省略】

                                                    -R2/R3/R4/R5内部使用OSPF    area0互通【配置省略】 

                                                     -R2/R3组成一个AS 64512;   R4/R5组成一个AS 64513【去掉之前的bgp 200】

                                                    -将AS 64512和 AS 645组成 联盟, 联盟 AS 200

                                                    命令:

                                                          R1:

                                                                bgp  100

                                                                router-id   1.1.1.1

                                                                peer  192.168.12.2 as-number  200

                                                                entwork 10.10.1.1 32

                                                           R2:

                                                               undo   bgp   200

                                                                bgp   64512

                                                                 route-id  2.2.2.2

                                                                 confederation   id  200

                                                                 confederation  peer-as 64513

                                                                 peer 192.168.12.1  as-number  100

                                                                 peer 10.10.3.3 as-number 64512

                                                                  peer 10.10.3.3 connect-interface   loopback 0

                                                                   peer 10.10.3.3 next-hop-local

                                                                   quit

                                                                 R3:

                                                                       undo bgp  200

                                                                         bgp  64512

                                                                         router-id     3.3.3.3

                                                                          confederation   id  200

                                                                          confederation  peer-as  64513

                                                                          peer 10.10.2.2  as-number  64512

                                                                          peer 10.10.2.2  connect-interface  loopback 0

                                                                           peer 10.10.4.4  as -number  64513

                                                                           peer 10.10.4.4  connect-interface loopback 0

                                                                           peer  10.10.4.4 ebgp-max-hop

                                                                           quit

                                                                    R4:

                                                                          undo bgp 200

                                                                          bgp  64513  

                                                                        route-id  4.4.4.4

                                                                        confederation   id  200

                                                                        confederation  peer-as 64512

                                                                       peer 10.10.5.5  as-number  64513

                                                                       peer 10.10.5.5  connect-interface   loopback 0

                                                                        peer 10.10.3.3 as-number  64512

                                                                        peer 10.10.3.3 connect-interface loopback 0

                                                                        peer 10.10.3.3 ebgp-max-hop

                                                                          quit

                                                                   R5:

                                                                         undo bgp  200

                                                                          bgp   64513

                                                                          router-id  5.5.5.5

                                                                          confederation   id   200

                                                                           confederation  peer-as  64512

                                                                           peer  10.10.4.4 as-number  64513

                                                                           peer 10.10.4.4  connect-interface   loopback 0

                                                                           peer 10.10.4.4  next-hop-local

                                                                           peer 192.168.56.6 as-number  600

                                                                           peer 192.168.56.6  connect-interface   loopback 56

                                                                           peer  192.168.56.6  ebgp-max-hop

                                                                           quit

                                                                  R6:

                                                                       bgp 600

                                                                       router-id 6.6.6.6

                                                                       peer 192.168.56.5 as-number 200

                                                                       peer 192.168.56.5 ebgp-max-hop

                                                                       network 10.10.6.6 32  或  import-route  direct

                                                           测试:

                                                                    R1---->ping  -a   10.10.1.1  10.10.6.6

                                             *R5:

                                                   display  bgp routing-table peer  10.10.4.4  advertised-routes

                                                    //查看10.10.5.5是否将从R6那里获得的外部路由发送给10.10.4.4

                              问题:

                                       但是,经过上面的“BGP”联盟配置,在AS 200内部,依然容易出现问题。

                               比如:

                                       当每个小AS内部的路由器的数量超过2的时候,即此案例中AS 64512 或者AS 64513的IBGP中的邻居关系数量超过1个。

                                       在每个小AS内部依然存在“IBGP水平分割”的问题,导致 IBGP 邻居设备之间无法正常传递路由。

                                所以,此时我们就需要考虑另外一个技术,即:BGP反射器!

 

                                            3.BGP反射器(route  reflector:路由  反射器)

                                                     本质:

                                                            将一个设备配置成路由反射器以后,这个设备就会临时的针对“反射器客户端”关闭“IBGP水平分割”原则

                                                             在“IBGP反射器”的解决方案中,设备分为三种类型:

                                                                  -路由器反射器

                                                                 -反射器客户端

                                                                 -非客户端

                                                             BGP路由反射器转发路由的原则:

                                                                   除了非客户端与非客户端之间的路由不能传递

                                                                    其他角色的设备之间的路由,都可以传递

                                                                    比如:

                                                                          客户端给反射器,反射器可以给客户端,  可以给非客户端。

                                                                          非客户端给反射器,反射器可以给客户端。

                                                            那么,现在我们改变上面的拓扑,将R4移动到AS 64512中,确保AS 64512中存在2个IBGP邻居,

                                                                      从而让R2的路由不会通过R3传递给R4

                                                                      R4的路由不会通过R3传递给R2,就是所谓的“IBGP水平分割”       

 

 

 

 

                                                          解决办法:

                                                                      将R3配置为反射器,将R4配置为反射器的客户端。                   

                                                                       配置命令:

                                                                               -取消R4原来的配置,然后加入AS 64512中【配置省略】

                                                                         R3:

                                                                                bgp 64512

                                                                                peer 10.10.4.4   reflect-client

                                                        【注意】:做完反射器之后如果出现R3只将R1的外部路由传给了R4,而并未将R6的外部路由传给R2,说明R5在引入R6的外部路由之后,

                                                                         传给R4时,未将下一跳路径修改为自己的出口IP地址(peer 10.10.4.4  next-hop-local),路径不是最优的,所以R4是不会将路

                                                                         由传给R3的。

                                                   ***【扩展】在最开始未创建联盟时的拓扑中,仅仅使用“路由反射器技术”,不配置联盟技术,也是可以的,

                          

                                                                                 1. R3配置为反射器,R4配置为客户端

                                                                                           bgp  200

                                                                                          peer  10.10.4.4  reflect-client

                                                                                  2.R4配置为反射器,R5是客户端/R3是客户端也可以。

                                                                                       R4:

                                                                                             bgp 200

                                                                                              peer 10.10.5.5 reflect-flient  

路由管理

-BGP的路由属性:

         display  bgp   routing-table   //查看BGP数据库

       

 

 下面路由条目中:

 * ,  表示路由条目是有效的

> ,    表示该路由是最优的

i , 表示该路由条目的类型,是内部的意思

 network , 表示路由的前缀和掩码

next-hop , 表示路由条的下一跳是IP地址;

MED , BGP的路由属性,表示的是本地路由器去往该路由的距离

Locprf , BGP的路由属性(local preference) - 本地优先级;数值越大越好;默认是100;

PrefVal , BGP的路由属性(preffered  value) - 优选值:数值越大越好;默认是0;但是,是华为的私有属性;

                  【该属性,只在一个路由器本地起作用,不会随着路由条目传递】             

path , BGP的路由属性(as-path)- as路径,该属性包含的as号越少越好;

Ogn , BGP的路由属性(Origin  code) - 起源代码 ,表示该路由当年是以怎样的方式进入到BGP协议的(i>e>?)

当一个路由器去往同一个路由条目具有多个路径的时候,此时BGP协议就会依靠自己的“选择原则”

在多个“路径”中,选择出一个“最好的路径”,这个选路原则是:

 1. 比较preffered  value,数值越大越好;默认值为0;【该属性为华为私有属性,类似思科设备上的weight(权重)】

                                         该属性只能在设备本地起作用(即:该属性不会随着路由进行传递出去)

                                          所以,当我们修改这个属性的时候,只能在设备上使用“入向策略”

 2. 比较local  preference, 数值越大越好;默认是100;                                      

 3.比较该路由是否本地生产的;本地产生的,要比从其他路由器学习过来的,优先级要高

4.比较as-path 属性的长度,越短越好

5. 比较起源属性,i>e>?

6.比较MED,数值越小越好;

7. 比较BGP邻居关系的类型,EBGP路由的优先级高于IBGP路由;

8.比较去往BGP路由的下一跳IP地址时的cost,数值越小越好;

9.比较cluster-list的长度,越小越好;

10.比较router-id,越小越好;

11.比较 peer 后面的IP地址,越小越好;       

~~~~~~~~~~~~~~~~~~~~~~~~~~~~路由选路~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 上面的拓扑需求1(preffered-value属性修改):

   在R1上,希望去往40走R3;去44走 R2;

 配置:

       -抓取路由

                R1:

               acl 2040

                      rule 10 permit  source  10.10.40.40 0.0.0.0

                       quit

         -配置策略

                R1:

                 route-policy  R1-R3-IN  permit  node  10

                      if-match   acl  2040

                      apply   preffered-value  300

                      quit

                      route-policy  R1-R3-IN  permit  node  20   //就是 route-policy  中的“允许所有”;

       -调用策略

                  R1:

                bgp  100

                   peer 10.10.3.3 route-policy  R1-R3-IN     import  //当R1从R3收路由的时候,执行该策略

        -验证结果

                 

                

 

 

              

 注意:

          1.在任何一个常见的路由管理工具中,最后都有一个隐含的拒绝所有的命令

           2. 很多场景下,我们需要在工具的最后添加一个“允许所有”

                    acl  **

                           rule  #  permit  source any---->#表示步长,编号。

                    ip-prefix:

                           ip  ip-prefix  {名字}  index  #  permit      0.0.0.0 0  less-equal   32

                    route-policy:

                           route-policy  {名字}   permit  node  #  --->里面不写任何的if-match,就是“match”所有的意思;          

需求2(local-preference属性修改):

希望AS100 的所有内部路由器,

               去往10.10.44.44都通过R2转发;

               去往10.10.40.40都通过R3转发;                                    

分析:

        *如果我们调整BGP路由的preferred-value 属性,那么久必须在AS100的每个路由器配置策略,修改preferred-value属性,非常的麻烦;

           所以,我们建议:在 AS100的边界路由上,调整路由的local-preference属性,从而影响AS100 内部的所有路由器。

          *同时我们知道:

                         在IBGP邻居之间,该属性是可以随意传递的

                         所以,我们只要想尽办法:让R2/R3上面的两个路由的local  preference 的属性被修改了,就可以了。

                         并且,这两个路由针对R2/R3而言,都是从R4接收过来的

                        所以,我们分析的结果是:

                                  1.要么在R2/R3上,对R4做一个入向策略,修改特定路由的local-preference:方案 YES

                                  2.要么在R4上,对R2/R3做一个出向策略,修改特定路由的local-preference;方案 NO

                                          &该方案无法实施成功,因为:local-preference属性只能在IBGP邻居之间传递

                                          &在EBGP邻居之间传递的时候,该属性就会丢失,但是,该属性在每个BGP路由条目都得有

                                          &所以,针对那些没有或者丢失了local-preference属性的路由,通常都会使用一个路由器本地默认的local-preference取值,

                                               而该数值默认情况下是100.

                                           &但是该属性的默认取值,是可以修改的:bgp 100-->default   local-preference   ***

                                           &一个路由器本地的默认的local-preference 取值,通常是对“学习过来的EBGP路由”以及本地宣告的路由

                                           &当然,如果我们在宣告的时候,直接跟上route-policy ,也是可以修改该属性的

                                            【总结】:

                                                        该属性可以在“宣告路由的时候”,“内部邻居之间”,“外部邻居之间的入向”,都可以通过策略修改

命令:

     -抓取路由:

              R3:

                    acl  2001

                    rule  10 permit source  10.10.40.40 0

                    quit

                    acl  2002

                     rule  10 permit  10.10.44.44 0

                     quit

                R2:

                    acl  2001

                    rule  10 permit source  10.10.40.40 0

                    quit

                    acl  2002

                     rule  10 permit  10.10.44.44 0

                     quit

       -配置策略:

                  R3:

                         route-policy  R3-R4-IN permit node 10

                         if-math acl  2001

                         apply  local-preffered  300

                         quit

                         route-policy  R3-R4-IN permit  node  20

                         if-match  acl 2002

                          apply local-preffered  200

                           quit

                            route-policy R3-R4-IN permit node 30-->默认允许所有

                    R2:

                         route-policy  R2-R4-IN permit node 10

                         if-math acl  2001

                         apply  local-preffered  200

                         quit

                         route-policy  R3-R4-IN permit  node  20

                         if-match  acl 2002

                          apply local-preffered  300

                           quit

                          route-policy R2-R4-IN permit node 30-->默认允许所有路由条目

       -应用策略:

                   R3:

                        bgp 100

                        peer 192.168.34.4  route-policy  R3-R4-IN    import 

                 R2:

                        bgp 100

                        peer 192.168.24.4  route-policy  R2-R4-IN    import 

    -验证:

               通过上述的配置:

                      在R2:《会将这些路由发送给自己的内部邻居,比如R1》   

                            10.10.40.40/32   ------   200

                             10.10.44.44/32  ------   300

                        在R3:《会将这些路由发送给自己的内部邻居,比如R1》               

                              10.10.40.40/32   ------   300

                               10.10.44.44/32  ------   200

                所以,最终在AS100内部的所有BGP路由器上,比如R1,数据库应该是:

                                 10.10.40.40/32    via    10.10.2.2  ,   200

                                                             via     10.10.3.3 ,   300---->OK

                                  10.10.44.44/32    via     10.10.2.2 ,   300--->OK

                                                              via      10.10.3.3 ,   200

该属性的应用场景:

                 当一个公司/运营商 有多个出口设备的时候,

                 为了能够让内网的路由器,选择一个去往外网地址的合适的出口设备。

                 我们就可以在:

                                  边界设备上,对外网来的路由,修改local-preference 属性

                                  从而,影响内网设备的选路。

案例3:

          希望R4去往R1的时候,选择的路径是R3;

         并且修改的属性是 BGP 的 as-path属性;

分析  :

           1. AS-PATH 属性中,包含的是BGP 路由在传递过程中,前后一次经过的每一个AS的AS号的有序组合。

                                             所以,如果一个AS-PATH 中包含的as号很多,说明这个BGP 路由在传递过程中经过了很多个AS;

           2.AS-PATH 的作用,是用于在 EBGP邻居之间放置路由环路的发送

                                             即,当收到一个EBGP邻居的路由时,会检查该路由的AS-PATH中是否包含了自己的AS号;

                                             如果包含了自己的AS号,则说明这个路径曾经穿越过自己的AS,此时拒绝接受该路由;

                                             如果不包含自己的AS号,则允许接收该EBTP邻居的路由条目。 

            3.该属性的变化默认仅仅是发生在EBGP邻居之间;也就是在EBGP邻居之间“发送”路由的时候;

               此时的as-path 属性才会变化,将离开的这个as 号码添加到as-path 中,并且是位于as-path的最左边。

     *所以,为了满足上述的需求,我们可以在R2上向R4发送路由的时候,通过策略来增加as-path 的长度。

       配置:【在R2上,配置出向策略,增加as-path】

               acl   2001

                      rule  10 permit  source 10.10.10.10 0

                      quit

                     route-policy R2-R4-OUT permit   node  10

                       if-match  acl  2001

                       apply as-path 11 additive  --->将AS号 11,添加到路由的原有的as-path属性中;

                        quit

                       route-policy  R2-R4-OUT permit  node  20--->允许所有路由通过

                        bgp 100

                        peer  192.168.24.4 route-policy R2-R4-OUT export

        -验证结果:      

                 ***<R2> refresh bgp all import    //立即刷新从邻居发送进来的路由,不用去等待刷新时间,R4---->R2

                 ***<R4>refresh bgp all export    //立即给邻居路由器发送bgp路由表

                 

但是,如果我们将同样的策略,配置在R4上,然后对R2进行“入向策略”

最终,在R4上看到的路由的AS-PATH长什么样子呢?

配置:【先删除R2上的配置】

      R4:

          ACL  2001

               rule  10 permit  source 10.10.10.10 0

                quit

                 route-policy   R4-R2-IN  permit  node 10

                  if-match  acl 2001

                  quit

                   route-policy  R4-R2-IN permit node 20

                   bgp 400

                   peer 192.168.24.2  route-policy  R4-R2-IN  import    --->R4对R2入向的路由使用此策略

-验证结果:

  

 总结:

       1.EBGP邻居之间发送路由的时候,一旦离开路由器,就会将自己的AS号添加到as-path 属性中。

       2.EBGP邻居之间接收路由的时候,一旦进入路由器,就会检查“as-path”防环机制。

               -as-path 中包含了自己的as,则拒接接收该路由;

               -as-path 中没有包含自己的as,则接收该路由,进入到“入向缓冲区”

       3.EBGP邻居之间,增加AS号,如果是配置出现策略:先执行策略,再执行“系统默认行为”

       4.EBGP邻居之间,增加AS号,如果配置入向策略:先执行“系统默认行为”,则执行“策略”

       5.无论是入向,还是出向的策略,每次添加AS号的时候,都只能添加“自己的AS号”

       6.在IBGP邻居之间传递路由的时候,as-path属性是不会变化的。

案例4:

        希望 R4 去往 R1 的时候,选择的路径是 R3;

        并且修改的属性是BGP的 origin  code  属性。

分析:

        在R4上配置,针对R2发送过来的10.10.10.10/32,修改它的属性为 incomplete,

        并且其他的路由的属性是不能修改的;

配置:

      acl   2010

      rule   10   permit   source   10.10.10.10 0.0.0.0

      quit

       route-policy  R4-R2-IN  permit   node  10

          if-match  acl  2010

          apply  origin  incomplete

         quit

         route-policy  R4-R2-IN  permit  node  20

         quit

           bgp   400

           peer  192.168.24.2 route-policy  R4-R2-IN  import

因为,BGP的“起源代码”属性,可以随着路由传递到网络的任何地方。

所以,我们也可以在R2上,对R4配置为一个出向策略

    命令:

          R2:

              ACL  2010

             rule 10 permit  source  10.10.10.10  0.0.0.0

             quit

             route-policy  R2-R4-OUT  permit  node 10

             if-match acl 2010

            apply origin incomplete

              quit

               route-policy R2-R4-OUT  permit node  20

              quit

               bgp  100

                peer   192.168.24.4  route-policy  R2-R4-OUT  export

  案例5:

        R4希望通过R3去访问R1;

        并且,是通过调整MED 属性来实现

  分析:

         R4去往R1的时候,可以通过R2和R3;

          并且,对于R4而言,R2和R3属于同一个AS

          那么此时,R4再去选择路径的时候,就可以比较MED属性

          该属性表示的是“去往一个路由的距离”,数值越小越好

          但是,我们作为AS 100的网络工程师,是没有资格去修改R4的相关配置的;

           所以,我们希望能够通过修改R2和R3的配置,从而影响R4的选路

           所以,我们在R2/R3上针对R4配置了一个“出向策略”,修改MED,从而影响/决定R4的选路。

 配置:

         R2:

             acl  2011

            rule 10 permit  source   10.10.11.11 0.0.0.0

            quit

             route-policy R2-R4-OUT permit node 10

             if-match  acl 2011

             apply cost 2000

              quit

              route-policy R2-R4-OUT permit node 20

             quit

               bgp  100

                peer  192.168.24.4 route-policy R2-R4-OUT export

          R3:

                 acl  2011

                  rule 10 permit source  10.10.11.11 0.0.0.0

                  quit

                   route-policy  R3-R4-OUT permit  node  10

                   if-match   acl  2011

                   apply  cost  300

                   quit

                    route-policy  R3-R4-OUT permit node 20

                     bgp  100

                     peer 192.168.34.4 rout-policy R3-R4-OUT export

最终,我们在R4上看到的结果是:

 

 但是,MED属性的比较,是存在一个前提的:

           R4认为两个路由条目是来自于同一个“邻居AS”。

          即,这两个路由的as-path 属性的最左边这个as号,必须相同

           如果as-path的最左边这个as号码不相同的话,就不比较该属性,直接比较下一个“路由属性”

同时,BGP路由的MED属性,只在两个直接相邻的AS之间有作用;

即,BGP路由从AS100传递到AS200,此时他们的MED属性是可以携带的;

  但是,该路由条目再次从AS200发送到AS300的时候,

  对于AS 300的路由器而言,该路由的MED就丢失了,此时就会分配给该路由一个默认的MED,即 0

cluster:簇

       在解决EBGP水平分割时,我们曾经使用了一个解决方案----路由器反射器

       该技术中,设备的角色分为路由反射器以及反射器客户端。他们两者组合在一起,就叫做“簇”

* 当BGP路由在传递过程中,经过很多个反射器反射的时候,为了防止这些路由在传递过程中,出现环路。

 我们再次引入了一个属性----cluster-list,即“簇列表”。

 该表中,包含的是,路由在传递过程中所经过的每一个簇的“簇ID”,默认情况下就等于路由反射器的router-id,

即:

      一旦一个反射器接收到一个路由器的时候,就会检查这个路由的簇列表,看看其中是否包含了自己的簇ID,

     如果包含了,则说明该路由器在之前的传递过程中,已经经过自己这个簇了,所以为了防止环路,此时就不接收该路由。

*BGP路由在传递过程中,经过的反射器的个数越多,那么cluster-list就越长;反射的次数越少,长度就越短。

---------------------------------------------BGP路由表----------------------------------------------------

-路由类型:

        *内部路由,内部邻居之间传递的路由;

       *外部路由。外部邻居之间传递的路由;

-路由属性:

        *优先级,默认是内部255,外部255,本地产生的也是255:数值越小越好;

        *开销值,表示是该设备去往该路由的距离,数值等于MED属性的取值;

  -路由过滤

            1.进行路由匹配

                     *acl  

                     *prefix

                     *as-path-list

              2.指定路由过滤策略

                      *filter-policy   {acl}

                      *ip-prefix  {prefix-list}

                      *as-path-filter {as-path-list}

                       *route-policy {上述的三个工具都可以调用}

              3.调用路由过滤策略

              4.验证结果

举例:

         在R7干掉那些曾经属于as 400 的路由

分析:

           凡是属于as 400的路由,他们的as-path 属性中,最右边的AS号,肯定都是400

方案:

          ip as-path-list  deny400 dengy  _400$  --->表示的是空格:$表示的是结束;^表示的是as-path的开始

          ip as-path-list  deny400 permit  .*     --->表示允许所有。【.表示任意字符,*表示前面的字符的任意倍数】

          bgp   700

          peer   192.168.17.1 as-path-filter   deny400 import

或者其他需求【正则表达式】:

          1.R7想干掉所有从AS 100发送过来的路由;

             deny   ^100

           2.R7想干掉所有从AS 100发送过来,并且原先属于AS 100的路由:

              deny  ^100$

           3.R7想干掉所有从AS 100发送过来,并且在传输过程中,经过as 9的那些路由;

              deny  ^100_.*_9_

           4..R7想干掉所有从AS 100发送过来,并且在传输过程中,经过as 9,并且曾经属于AS 400的路由:

                   deny  ^100_.*_9_.*_400$

-BGP匹配路由,还可以使用“团体属性”

抓取/匹配路由的时候,我们除了可以抓取路由的网段或者掩码,还可以为路由分配在一个标记。

那么,以后抓取的时候,直接抓取这些标记就可以了

在动态路由协议中,每种协议都支持为路由条目添加标记。

RIPv1-不支持标记

RIPv2-支持标记

OSPFv2-支持标记(仅有外部路由,支持标记,例如5类LSA和7类LSA)

OSPFV3-支持标记(仅有外部路由,支持标记,例如5类LSA和7类LSA)

ISIS-支持标记(协议的cost-tyle 必须配置为wide;但是协议默认情况下使用的narrow)

但是,在BGP协议中,传递路由的时候,是没有标记(tag)的;

但是,有一个属性,它的功能完全和Tag相同,叫:团体属性-community

-BGP团体属性:

          类型:

                1.私有团体属性,这种类型的团体属性数值,是认为的随意的指定的

                2.公有团体属性,这种类型的团体属性,是早就规定好的。任何一个BGP路由器收到这种公有团体属性以后,

                   都知道该如何处理。

                    &常见的“公有团体属性”有:

                           internet  ,说明该BGP路由可以随意传递;

                           no-export ,说明该BGP路由不能传递给EBGP邻居路由器

                           no-advertise , 说明该BGP路由不能传递给任何BGP邻居路由器

                           no-export-subconfed , 说明该BGP路由不能传递给联盟内的小AS之间的外部邻居

                默认情况下,每个BGP路由,都包含了一个隐含的“internet”团体属性。

   关于“团体属性”:

            1.该属性可以在“宣告路由”,“发送路由”,“接收路由”的时候,进行添加,修改;

            2.一个BGP路由,可以同时拥有多个“团体属性”;并且他们之间是“或”的关系;

                -如果同时包含了多个“公有团体属性”;那么此时的路由传递范围是按照“最小范围”来进行传输;

             3.匹配团体属性的时候,使用的工具叫做:团体属性列表,即 ip  community-filter

                 分配两种类型的团体属性列表:

                      &基本的团体属性列表,在匹配的时候,是逐个匹配;表示的方法是:ID的取值范围是1-99;

                      &高级的团体属性列表,在匹配的时候,是通过“正则表达式”来表示“团体属性”的;表示方法是:ID取值范围是100-199

               4.在创建团体属性列表时:

                       &如果同一个列表中的多个团体属性是一次性写完,那么他们之间的关系是“与”的关系,

                          即,所陪陪的路由,必须同时包含列表中写的多个“团体属性”

                       &如果同一个列表中的多个团体属性,是分别通过多次写的,那么他们之间的关系是“或”的关系;

                          即,所匹配的路由,只要满足其中任何一个条件都可以;

                          例如:

                                 ip  community-filter   5   permit   500:5

                                 ip community-filter   5    permit   500:50

                  5.在团体属性列表这个工具中,和其他匹配路由的工具是类似的:最后都包含一个隐含的拒绝所有。

                     表示“允许所有”的方法如下:

                                  -ip  community   {ID}  permit    internet   --->允许所有

                                  -ip  community   {ID}  permit                   --->允许所有

                  6.最最重要的是:

                            团体属性的传递,是有方向的

                            即,默认情况下,一个路由的团体属性,不会随着路由在BGP邻居之间传递

                             我们必须得在邻居之间使用命令:peer   x.x.x.x   advertise-community

                             【互为邻居的两个设备,都得互相配置:advertise-community】

案例:

         

 

 

 

 

 

 

 

 

 

团体属性的应用:

案例1:

        1.给路由添加团体属性

        2.创建团体属性列表,并写上抓取团体属性的条件,

        3.创建策略,if-match绑定团体属性列表,执行动作(允许/拒绝)

*在R5上添加两个loopback接口
1.loopback 0:10.10.5.5/32
2.loopback 50::1.10.50.50/32
3.宣告路由
命令:
    btp 500
    network 10.10.5.5 32
    network 10.10.50.50

给路由添加团体属性

*R5 loopback接口宣告后是没有团体属性的,那么如何给他们添加团体属性
*命令:R5
route-policy L50 permit node 10
apply community 500:50
bgp 500
network 10.10.50.50 route-policy L50
*现在查看R5上的10.10.50.50就有团体属性了
*但是在传递给R4后,R4在传递给R2的时候也需要在R4上通告团体属性
*命令:R4
BGP 234
peer 10.10.2.2 advertise-community
*然后快速更新,在R2上查看10.10.50.50的团体属性,就有了。

利用团体属性抓取路由

*要求1:

抓取10.10.50.50的路由,也就是团体属性为:500:50,不让R2将这个路由传给R1。
*方法:
1.在R2上抓取团体属性列表:
[R2]ip commnuity-filter 50 permit 500:50 -->抓取团体属性为500:50的列表。这里的50是基本的团体属性列表;
【1-99为基本团体属性列表,100-199为高级团体属性列表】

2.创建一个策略,调用团体属性列表,动作为拒绝。
R2:
route-policy R2-R1-OUT deny node 10
if-match community-filter 50
route-policy R2-R1-OUT permit node 20-->允许其他的路由。
3.应用策略:
R2:
BGP 234
peer 192.168.12.1 route-policy R2-R1-OUT export
4.验证:
在R1上快速刷新,然后查看是否还有10.10.50.50的路由。

要求2:

1.抓取R4传给R2的BGP路由,然后再给10.10.50.50加一个团体属性。

  *命令:R2

       ip ip-prefix 50 permit 10.10.50.50   32

        route-policy  R4-R2-IN permit node 10

        if-match  ip-prefix 50

        apply community  234:2  additive

       quit

        route-policy  R4-R2-IN permit  node 20

        bgp 234

         peer 10.10.4.4 route-filter R4-R2-IN import

   2.在R4上:refresh  bgp  all  import 出向刷新路由。

   3.验证:

             在R2上查看团体属性:display  bgp  routing-table  10.10.50.50.是否有234:2的团体属性,应该如下。

           

 

  *那么思考:

            10.10.50.50现在有两个团体属性,  即,500:50  ;  234:2  

             那么,这两个团体属性的关系是什么?

        *我们现在只抓取一个团体属性,看一下是否能够有效?

             1.上面已经在R2上已经做了拒绝团体属性500:50的路由10.10.50.50,我们去R1上看R2是否将10.10.50.50的路由给R1了。

              2.结果,R1上是看不到10.10.50.50的路由的。

                    所以,他们之间是“或”的关系

     *那么我们改变策略:

                 1.我们再给这个团体属性列表 添加一个团体属性的条件,如下:

                      ip  community-filter 50 permit  500:555

                           

                2. 如果两个条件同时写在一行

                    ip  community-filter  50  permit  500:50  500:555

                 

 

               *那么以上这两个写法有什么区别?

                    1.如果团体属性列表的两个属性分开两次写,那么他们之间是“或”的关系,

                        即,匹配一个就可以

                      2. 如果团体属性列表的两个属性写在一行,那么他们之间是“与”的关系,

                          即,需要同时匹配这两个团体属性才可以。

                 *那么我们如何匹配到所有的团体属性路由

                      方法1:

                                 ip  community-filter  5 permit  --->后面什么都不写,表示包括所有属性

                                  route-policy R2-R1-OUT deny  node 10

                                   if-match  community-filter 5

                                      quit

                                  route-policy  R2-R1-OUT permit  node  20

                                    bgp  234

                                   peer  192.168.12.1 route-policy  R2-R1-OUT  export

                      方法2:

                                 ip community-filter 5 permit  internet -->因为任何路由都有internet属性,所以匹配internet就可以匹配所有路由

                                  route-policy  R2-R1-OUT   deny  node  10

                                   if-match  community-filter 5

                                      quit

                                   route-policy  R2-R1-OUT  permit  node 20  ---->如果第一条匹配则拒绝,如果第一条没有匹配则执行第二条允许。

                                   bgp 192.168.12.1  route-policy R2-R1-OUT export

BGP的默认路由

       -针对所有邻居产生默认路由

                步骤:

                       1.确保本地设备上存在默认路由{即前提条件}

                       2.将默认路由,宣告进入到BGP数据

       -针对特定邻居产生默认路由

               步骤:

                        1.确保自己本地存在“条件路由”{条件路由:可以是默认路由,也可以是其他类型的路由}

                        2.针对特定的邻居使用下面的命令

                       peer  x.x.x.x  default-route-advertise   conditional-route-match-any {条件路由1}...{条件路由n}  --->满足一个就可以

                                                                                   conditional-route-match-all {条件路由1}...{条件路由n}   --->完全匹配

              举例:R4

                     &peer  192.168.45.5  adfault-route-advertise conditional-route-match-all 10.10.3.0 24 

                        //R4向邻居R5产生一个默认路由,前提条件是:R4本地有一个10.10.3.0/24的路由。

BGP的路由汇总

       -作用

              和其他协议中的“路由汇总的作用”是相同的。比如节省系统/链路的资源:提高网络的稳定性

      -本地:

             1. 发送路由的时候,一旦汇总了,就:只发汇总,不发明细

              2.但是,在IGP协议中,一旦汇总了,就:只发汇总,不发明细:

                 在BGP协议中,一旦汇总了,就:即发汇总,也发明细:

                         但是,我们可以认为的灵活控制BGP发送路由的条目的多少【哪些IP能汇总,哪些IP不能汇总】;

 

      -举例:R5

            BGP   500

           1、 aggregate   10.10.0.0  255.255.0.0 

                 ------>直接回车那么他的邻居就会得到一个10.10.0.0的汇总路由,但是,其他的明细路由还都存在,没有达到汇总的效果。

             那么,在后面加一个参数 aggregate  10.10.0.0  255.255.0.0 detail-supressed,然后再查看邻居的bgp路由,就没有明细路由了。

             而,R5本身的明细路由后面有的条目会带一个S,表示汇总被抑制的路由,也就是不会发送给邻居的路由。

           2. aggregate 10.10.0.0 255.255.0.0 detail-suppressed suppress-policy  ABC

                 ------>后面再跟一个 suppress-policy 参数,可以控制被汇总的路由添加条件,允许哪些路由被抑制汇总,ABC表示策略名称。

                          那,我们再来创建一个策略来抓取路由。

                route-policy  ABC  permit  node  10

                if-match ip-prefix  53

               quit

               ip ip-prefix  53  permit  10.10.53.0 24   

              ------>最后被抑制的就是10.10.53.0 24这些路由,汇总为10.10.0.0/16 的路由了。

             3.路由被汇总后路由的优先级默认是255,但是也是可以修改的

                   R5

                    BGP  500

                  preference   x   x    x 

                 ---->这里的三个参数分别依次表示 EBGP路由的优先级   IBGP路由的优先级   本地产生的(local created)路由优先级。

              4. as-set :

                  R4

                  bgp  234

                  aggregate   10.0.0.0 255.0.0.0

                  --->回车后在本地形成一个路由如下:

                     

 

 

                  ---->在path中是一个 ?,并没有显示被汇总路由的AS号,那再加上as-set参数,

                  aggregate   10.0.0.0 255.0.0.0  as-set

                     ------>表示的是形成汇总的路由时,那些明细路由的AS号,都会放到本地BGP的AS-path属性中,并且放在大括号中

 

 

                   

 扩展命令;

1. 查看邻居是否接收到邻居的发送过来的路由

display bgp routing-table peer x.x.x.x  received-routes

2.在本地路由上常看是否将路由发送给对等体。

display bgp routing-table peer x.x.x.x  vdvertised-routes

 

 

                    

posted @ 2021-06-09 18:01  园来是伱  阅读(1369)  评论(0编辑  收藏  举报