1. 程式人生 > >CCNP知識點總結——BGP

CCNP知識點總結——BGP

1、BGP介紹

      BGP(Border Gateway Protocol,邊界閘道器路由協議),為路徑向量路由協議,主要作用是在AS之間傳遞路由資訊。BGP的自治系統通過AS號區分,AS號取值範圍1-65535,其中64512-65535是私有AS號。目前BGP有4個版本:V1、V2、V4、V4+(即MBGP)。

2、BGP的路徑向量特徵

      路徑向量資訊中包含一個BGP自治系統號列表,BGP路由器不接受路徑列表中包含其AS號的路由更新,是無環路的,BGP支援對BGP自治系統路徑應用路由策略,BGP路由器只能將其使用的路由通告給鄰接自治系統中的對等體。

3、BGP的TCP傳輸

      BGP使用TCP為傳輸層協議, TCP埠號179。BGP路由器之間建立TCP連線,這些路由器稱為BGP對等體也叫BGP鄰居:EBGP、 IBGP。對等體之間交換整個BGP路由表, BGP路由器只發送增量更新。BGP通告成千上萬的路由,可採用TCP滑動視窗的機制,停止並等待確認前,可以傳送65576個位元組。

4、BGP的三張表

      (1)BGP鄰居表: 鄰居列表 show ip bgp summary。
      (2)BGP表: 包含了從鄰居學習所有路由,以及到達目的網段的多個路徑和屬性。
      (3)路由表: 列出了到達目的網段的最佳路徑。 EBGP路由AD為20, IBGP路由AD為200。
      執行BGP的路由器有一個獨立的表( BGP表)。
      路由器將BGP表中最佳路由提供給IP路由表。

5、BGP報文

6、BGP有限狀態機

7、EBGP和IBGP

      EBGP: BGP位於不同自治系統的路由器之間,稱為EBGP。建立EBGP鄰接關係,必須滿足三個條件:

     (1)EBGP之間自治系統號不同;

     (2)neighbor中指定的IP地址要可達;

     (3)定義鄰居建立TCP會話。

     IBGP:IBGP:BGP位於同一個自治系統的路由器之間執行,用於同一個AS中交換BGP資訊。建立IBGP鄰接關係,滿足的條件:

     (1)自治系統號相同;

     (2)定義鄰居建立TCP會話;

     (3)IBGP鄰居可達。

8、IBGP水平分割原則

      EBGP防環是通過AS_PATH實現的,而AS_PATH僅僅在路由離開AS才會被更改。因此在AS內, IBGP就沒有EBGP的防環能力,為了防止環路的出現, BGP路由器不會將從IBGP鄰居學習過來的路由再通告給自己其他IBGP鄰居。由於水平分割原則, BGP要求AS內,須保證IBGP全互聯( 用neighbor命令指定) 。

9、EBGP和IBGP的區別

     (1)EBGP—外部邊界閘道器協議主要作用是在不同的自治系統間交換路由資訊。

              IBGP—內部邊界閘道器協議主要作用是向內部路由器提供更多資訊。

     (2)EBGP一般情況下都要求EBGP鄰居之間存在物理連線。
              IBGP不需要IBGP鄰居之間有物理連線,只需要邏輯連線即可(IGP通告路由)。

     (3)從EBGP鄰居學到的路由通告給IBGP和EBGP;
              從IBGP鄰居學到的路由,是否通告給自己EBGP鄰居,要根據AS內的BGP和IGP路由表是否同步而定,但不會再通告給IBGP鄰居(水平分割,防止環路)。

     (4)EBGP防止環路通過AS_PATH屬性來實現。

             IBGP和EBGP使用的BGP屬性不同,例如IBGP可以傳遞LOCAL_PREF(本地優先屬性),而EBGP不行。

10、BGP配置

11、BGP同步

      (1)BGP同步規則意義:BGP路由器不應使用通過IBGP獲悉的路由或將其通告給外部鄰居,除非該路由是本地的或通過IGP獲悉的。
      (2)禁用同步,則BGP可以使用從IBGP鄰居那裡獲悉的但沒有出現在本地路由表中的路由,並將其通告給外部BGP鄰居。Cisco IOS預設禁用同步。
      (3)BGP同步規則的目的:為防止一個AS內部(非全互聯)出現路由黑洞,即向外部通告了一個本AS不可達的虛假的路由。
      (4)BGP同步規則的問題:若將BGP路由釋出到IGP中,那麼是IGP路由器要維護數以萬計的外部路由,對路由器的資源佔用將帶來巨大的開銷。
      (5)結論:通常BGP協議的執行需要關閉同步。

      (6)路由的正常傳遞:1.同步問題2.下一跳問題。

      禁用同步配置:Router(config-router)#no synchronization

      啟用同步配置:Router(config-router)#synchronization

12、Peer Group

      將更新策略相同的鄰居劃分到一個對等體組中,簡化配置,對等體組成員繼承對等體組的所有配置選項,更新對於每個對等體組值生成一次,每個成員複製該更新。

      配置:

      Router(config-router)#neighborpeer-group-namepeer-group

      Router(config-router)#neighborip-addresspeer-grouppeer-group-name

13、身份驗證

      BGP支援MD5鄰居身份驗證,啟用身份驗證後,將對通過對等體之間的TCP連線傳輸的所有資料等進行驗證,認證都是在TCP建立連線的時候完成的。

      配置:Router(config-router)#neighbor{ip-address | peer-group-name} passwordstring

14、管理性關閉

      Router(config-router)#neighbor{ip-address|peer-group-name}shutdown 

      從管理層面暫時關閉某個鄰居,而避免刪除配置

      Router(config-router)#no neighbor {ip-address|peer-group-name}shutdown

      重新啟用 

15、路由匯聚

16、路由反射器

17、聯盟

18、硬重置和軟重置

      重置BGP會話:將新策略應用於所有路由,必須觸發一個更新。主要使用2種觸發更新的方式:硬重置、軟重置。

      硬重置:斷開相應的TCP連線,通過這些會話收到的所有資訊都將失效,並從BGP表中刪除。
                    重置命令:clear ip bgp *,clear ip bgp{neighbor-address}

      軟重置:不會重置BGP會話,建立一條新的更新,並將整個BGP表傳送給指定的鄰居,需要修改策略時,建議使用該命令。
                    重置命令:clear ip bgp * soft。

19、檢視BGP表

      show ip bgp neighbors {address} routes

      show ip bgp

      show ip bgp neighbors {address} advertised-routes 

      debug ip bgp updates 

20、BGP屬性

      公認屬性Well-Known:(1)公認強制屬性Well-known mandatory;

                                              (2)公認自由屬性 Well-known discretionary;

      可選屬性 Optional:(1)可選傳遞的Optional transitive;

                                        (2)可選非傳遞的Optional non-transitive。

       (1)WEIGHT

                 在路由器本地配置,只提供本地路由策略,不會傳播給任何BGP鄰居,範圍:0~65535,越大越優先。路由器本地通告的路徑預設權重為32768,從其他BGP鄰居學習到的為0。

       (2)AS-path —公認強制屬性

                AS-path是前往目標網路的路由經過的自制系統號列表,通告該路由的自治系統號位於列表末尾。作用:確保無環,通告給EBGP時會加上自己的AS號;通告給IBGP時不修改AS-path。

       (3)Origin — 公認強制屬性

               Origin指出了路徑資訊的源頭,有下列3種可能:<1>IGP:在AS內部,用network通告路由時,用i表示;<2>EGP:路由通過EGP獲悉,用e表示;<3>Incomplete:路由的源頭未知或是通過其他方法獲悉的,用?表示。例如重發布。路由優選順序: lowest origin code (IGP < EGP < Incomplete) 。

       (4)NEXT_HOP —公認強制屬性

               NEXT_HOP指出了用於前往目的地的下一跳IP地址,BGP中的下一跳為AS。

                對EBGP會話來說, NEXT-HOP就是通告該路徑的EBGP鄰居的介面IP。對IBGP,起源AS內部的路由的NEXT-HOP就是通告該路徑的鄰居的IP。(如果有設定更新源,則為更新源地址),而從EBGP學到的路由的
NEXT-HOP,在IBGP內傳遞時不變,始終指向的是下一個AS(本AS對端的EBGP鄰居介面IP)。 

       (5)LOCAL PREFERENCE —公認自由屬性

                 LOCAL PREFERENCE告訴AS中的路由器,哪條路徑是離開AS的首選路徑。LOCAL PREFERENCE越高路徑越優。預設本地優先順序為100。只發送給IBGP鄰居,而不能傳遞給EBGP鄰居。

       (6)MED — 可選非傳遞屬性

                 MED用於向外部鄰居指出進入AS的首選路徑,即當入口有多個時,自治系統可以使用MED動態的影響其他AS如何選擇進入路徑。MED值越小越優先,Cisco定義的MED值預設值是0。MED是在AS之間交換,MED傳送給EBGP對等體,這些路由器在AS內傳播MED,不傳遞給下一個AS。預設情況下,僅當路徑來自同一個AS中的不同鄰居時,路由器才比較他們的MED屬性。MED影響進入AS的資料流;LOCAL PREFERENCE影響離開AS的資料流。
                 比較原則及配置注意事項
                 本地在將一條BGP路由通告給EBGP Peer時,是否攜帶MED值,需要根據以下條件進行判斷(不對EBGP Peer使用Route-map的情況下):
                 <1>如果該BGP路由是本地始發(network或redistribute),則攜帶MED值傳送給EBGP Peer (如果MED為空,則設定為0)。
                 <2>如果該BGP路由是從其他BGP Peer學習過來的,那麼將該路由通告給EBGPPeer時不攜帶MED。
                 <3>本地在將一條BGP路由通告給IBGP Peer時,一定會攜帶MED值。如果接收或產生的路由的MED為空,那麼在向IBGP Peer通告時,將MED設定為0。
                  總結: MED在IBGP之間傳遞不會丟失,在EBGP之間傳遞要看路由是否起源於自己。

       (7)COMMUNITY — 可選傳遞屬性

               COMMUNITY用於簡化路由策略的執行,可以將某些路由分配一個特定的COMMUNITY屬性,之後就可以基於COMMUNITY值而不是每條路由進行BGP屬性的設定了。
              route-map bgp permit 10
              set community ?
              <1-4294967295> community number
              aa:nn                community number in aa:nn format // 路由所屬as:nn標識
              additive            Add to the existing community
              internet             Internet (well-known community) // 預設所有路由都屬於該團體
              local-AS            Do not send outside local AS (well-known community)
                                        //不把這條路由傳出本AS(聯邦as中的小聯邦) 。

                                        //如果沒有聯盟,那麼這個效果和no-export是一樣的,都不會傳遞出本AS。
              no-advertise      Do not advertise to any peer (well-known community) 

                                         // 不通告給任何鄰居
              no-export          Do not export to next AS (well-known community)
                                        //不把這條路由傳給EBGP對等體(如果配置了聯邦,則針對大as)

21、BGP 13條選路原則

       前提:路由下一跳不可達或沒有解決同步問題,則不能參與路由選擇:
       1.  選擇weight值最高的路由——思科私有
       2.  選擇LOCAL_PREF較大的路由
       3.  選擇本AS路由器產生的路由
       4.  選擇AS路徑較短的路由
       5.  依次選擇origin屬性為IGP、 EGP和INCOMPLETE型別的路由
       6.  選擇MED較小的路由
       7.  優選EBGP而不是IBGP
       8.  選擇下一跳IGP度量值較小的路由
       9.  負載均衡, BGP預設不支援負載均衡。若配置負載均衡,則不比較後面的引數。( maximum-paths n)
       10.  優先選擇最老的路由(即最穩定的路由) —EBGP
       11.  選擇BGP Router ID小的BGP對等體通告的路由
       12.  優先選擇最短的cluster-list
       13.  優先選擇鄰居IP地址最小的路由(neighbor指定的地址) 

       補充說明:
       (1)第3點:意思是路由器本地network的,也就是下一跳為0.0.0.0的路由。
                本地發起的路由有多種方式,如在BGP程序下用network命令,或將其它路由協議重分佈進BGP的,或者手工彙總的。通過命令network和重分佈的優先於手工彙總的路由。
       (2)第4點:在做聚合路由時,使用as-set後產生的AS-Path列表中{ }裡的AS號長度只算一個AS號的長度,在聯盟內的AS-Path列表中()的AS號長度不做計算依據。
       (3)第9點:等價負載均衡,當前面8條選路原則都無法優選出最優路由時,並且在BGP程序下面配置了maximum-paths,那麼將執行負載均衡。
       (4)第10條,第11條:如果BGP程序下使用bgp bestpath compare-routerid命令,則忽略第10條,進行第11條的比較。

22、Local preference 使用
       IBGP鄰居之間,選擇離開本AS的出口。預設為100 ,越大越優。Local preference是公認自由屬性。

       Router(config-router)# bgp default local-preference value 

       此命令更改預設的本地優先順序,向IBGP鄰居釋出的所有路由都將本地優先順序設定指定的值。 

23、MED使用

       當EBGP之間存在多個路徑時,使用MED,Cisco的預設設定0,越小越優,MED是可選非傳遞屬性。

       Router(config-router)# default-metric number 

       此命令更改預設的MED值,通告給EBGP鄰居的所有路由都將設定為使用此命令指定的值。

24、BGP路由過濾

       neighbor 1.1.1.1 prefix-list 1 {in | out}
       用字首列表來過濾,這個是BGP的標準過濾方法,可以用in和out方向。
       neighbor 1.1.1.1 distribute-list access-list-number {in | out}
       用訪問控制列表來過濾,支援擴充套件訪問控制列表。建議用prefix-list來過濾。
       neighbor 1.1.1.1 route-map XX {in | out}
       用route-map來過濾,一般用在字首有屬性改變的時候。
       neighbor 1.1.1.1 filter-list as-path-access-list-number {in | out}
       用as-path-access-list所定義的正則表示式表示的AS-path來過濾。 

       例:
             ^123$ 表示只匹配AS 123。
             ^100 表示匹配以100打頭的字串。
             100$ 表示以100結尾的字串。
             ^$ 表示沒有經過任何AS,即本地AS的路由。
             ^12[0-3]$ 表示匹配120 121 122 123。
             ^12. 表示匹配12,120 – 129開始的AS號。
             .* 表示匹配任意。

             (1)只接收起始於AS5044的路由:
                      router bgp 65022
                            no synchronization
                            neighbor 172.16.0.1 remote-as 4
                            neighbor 172.16.0.1 filter-list 1 in
                            no auto-summary
                      ip as-path access-list 1 permit _5044$
            (2)只通告起始於本地( AS100)的字首:
                      router bgp 100
                            neighbor 10.1.1.1 remote-as 65535
                            neighbor 10.1.1.1 route-map map1 out
                      route-map map1 permit 10
                            match as-path 1
                      ip as-path access-list 1 permit ^$ 

25、移除私有AS號

       Remove private AS:過濾私有的AS號 

       neighbor{ip-address|peer-group-name}remove-private-as

26、限制BGP路由數目

       (1)Maximum-Prefix:用來限制路由器最多隻能從鄰居處接收多少條路由:
                 neighbor 10.10.1.1 maximum-prefix 100
                 neighbor 10.10.1.1 maximum-prefix 100 85(百分比)
                 neighbor 10.10.1.1 maximum-prefix 100 85 warning-only
       (2)限制路由經過的AS的數目:
                 bgp maxas-limit {1-2000}
       (3)條件路由:
                 neighbor 10.10.1.1 advertise-maproute-map-Aexist-maproute-map-B
                 當route-map-B裡面匹配的路由存在於路由表,則向鄰居10.10.1.1通告route-map-A匹配的路由 (必須要network進BGP)。
                 neighbor 10.10.1.1 advertise-map route-map-Anon-exist-maproute-map-B
                 當route-map-B裡面匹配的路由不存在於路由表,則向鄰居10.10.1.1通告route-map-A匹配的路由 (必須要network進BGP)。 

27、BGP Dampening 

        BGP利用Dampening機制,將頻繁抖動的路由有條件的加以抑制。
        router bgp 1
             bgp dampening


        Half-life Time : 15 m 半衰期
        Reuse : 750 降到這個值以下,重新開始啟用路由
        Start Suppress : 2000 升到這個值以上,開始抑制
        Max Suppress Time : 60 m (4×15) 最大抑制時間


        BGP預設不啟用Dampening,且僅對EBGP鄰居傳來的路由起效。 

28、4位元組AS號

       2位元組AS號:1-65535,其中,1-64511為公有AS號,64512-65535為私有AS號。

       4位元組AS號:最大為4,294,967,295。

       4位元組AS號分為asplain和asdot兩種寫法:

                asplain:2-byte 和 4-byte 都使用十進位制來表示,

                asdot:2-byte 使用十進位制表示, 4-byte 用點號分隔,

                             如65536=1.0,65,536,005 =1000.5,123=0.123

       啟用asdot格式:Router(router-config)# bgp asnotation dot

       禁用asdot格式:Router(router-config)# no bgp asnotation dot
       硬重置BGP會話:clear ip bgp * 
       AS 23456作為4位元組AS號路由器到2位元組AS號路由器的替代寫法。

       neighbor 10.3.4.2 remote-as 23456 

       可選傳遞屬性:NEW_AGGREGATOR 和 NEW_ASPATH


       當R2#show ip bgp neighbors 12.1.1.1 中出現Four-octets ASN Capability: advertised and received時,代表該路由器支援4位元組AS號。
https://blog.csdn.net/gongxifacai_believe/article/details/79632714