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

 

 

                    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM