BGP知識手冊-華爲-華三-思科

備註:以下資料整理自以下三個網站,有華爲,華三,思科三個廠商官網的BGP相關資料。放這裏是爲了自己查看方便。同時,有需要的可以參考參考。

官方文檔BGP相關資料:

華爲:https://support.huawei.com/hedex/hdx.do?docid=EDOC1100101225&lang=zh&idPath=24030814|21782165|21782236|22318638|7542409

華三:http://www.h3c.com/cn/d_201601/909969_30005_0.htm

思科:https://www.cisco.com/c/en/us/tech/ip/ip-routing/index.html

BGP介紹

定義:

邊界網關協議BGP(Border Gateway Protocol)是一種實現自治系統AS(Autonomous System)之間的路由可達,並選擇最佳路由的距離矢量路由協議。早期發佈的三個版本分別是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年開始使用BGP-4(RFC1771),2006年之後單播IPv4網絡使用的版本是BGP-4(RFC4271),其他網絡(如IPv6等)使用的版本是MP-BGP(RFC4760)。

MP-BGP是對BGP-4進行了擴展,來達到在不同網絡中應用的目的,BGP-4原有的消息機制和路由機制並沒有改變。MP-BGP在IPv6單播網絡上的應用稱爲BGP4+,在IPv4組播網絡上的應用稱爲MBGP(Multicast BGP)。

目的:

爲方便管理規模不斷擴大的網絡,網絡被分成了不同的自治系統。1982年,外部網關協議EGP(Exterior Gateway Protocol)被用於實現在AS之間動態交換路由信息。但是EGP設計得比較簡單,只發佈網絡可達的路由信息,而不對路由信息進行優選,同時也沒有考慮環路避免等問題,很快就無法滿足網絡管理的要求。

BGP是爲取代最初的EGP而設計的另一種外部網關協議。不同於最初的EGP,BGP能夠進行路由優選、避免路由環路、更高效率的傳遞路由和維護大量的路由信息。

雖然BGP用於在AS之間傳遞路由信息,但並不是所有AS之間傳遞路由信息都需要運行BGP。比如在數據中心上行的連入Internet的出口上,爲了避免Internet海量路由對數據中心內部網絡的影響,設備採用靜態路由代替BGP與外部網絡通信。

受益:

BGP從多方面保證了網絡的安全性、靈活性、穩定性、可靠性和高效性:

BGP特點

BGP具有如下特點:

  • BGP是一種EGP(Exterior Gateway Protocol,外部網關協議),與OSPF、RIP等IGP(Interior Gateway Protocol,內部網關協議)不同,其着眼點不在於發現和計算路由,而在於控制路由的傳播和選擇最佳路由。
  • BGP使用TCP作爲其傳輸層協議(端口號179),提高了協議的可靠性。
  • BGP是一種路徑矢量(Path-Vector)路由協議,它採用到達目的地址所經過的AS列表來衡量到達目的地址的距離。
  • BGP支持CIDR(Classless Inter-Domain Routing,無類域間路由)。
  • 路由更新時,BGP只發送更新的路由,大大減少了BGP傳播路由所佔用的帶寬,適用於在Internet上傳播大量的路由信息。
  • BGP路由通過攜帶AS路徑信息徹底解決路由環路問題。
  • BGP提供了豐富的路由策略,能夠對路由實現靈活的過濾和選擇。
  • BGP易於擴展,能夠適應網絡新的發展。

BGP原理描述

BGP基本概念

自治系統AS(Autonomous System)

AS是指在一個實體管轄下的擁有相同選路策略的IP網絡。BGP網絡中的每個AS都被分配一個唯一的AS號,用於區分不同的AS。AS號分爲2字節AS號和4字節AS號,其中2字節AS號的範圍爲1至65535,4字節AS號的範圍爲1至4294967295。支持4字節AS號的設備能夠與支持2字節AS號的設備兼容。

AS號規劃:

As號分配情況:https://www.iana.org/assignments/as-numbers/as-numbers.xhtml

BGP的RFC1771裏留給AS的範圍是2個字節,所以AS的取值範圍爲1-65535,其中64512-65534爲私有AS。在RFC4893裏定義了一個BGP的新功能——4字節AS(BGP Support for Four-octet AS Number,一般用M.N來描述)。但是鑑於IPv4地址空間不夠這個前車之鑑,

4字節AS號有兩種表達方式,點分形式和整數形式,轉換關係爲:X65536+Y=X.Y, 其中(X65536+Y)爲整數形式四字節AS號;X.Y即爲點分形式的四字節AS號;

設備支持4字節的AS號,即AS號取值佔用4字節,取值範圍爲1~4294967295。

四字節的私有AS號爲:4200000000-4294967294。

BGP分類

BGP按照運行方式分爲EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)。

  • EBGP:運行於不同AS之間的BGP稱爲EBGP。爲了防止AS間產生環路,當BGP設備接收EBGP對等體發送的路由時,會將帶有本地AS號的路由丟棄。
  • IBGP:運行於同一AS內部的BGP稱爲IBGP。爲了防止AS內產生環路,BGP設備不將從IBGP對等體學到的路由通告給其他IBGP對等體,並與所有IBGP對等體建立全連接。爲了解決IBGP對等體的連接數量太多的問題,BGP設計了路由反射器BGP聯盟

BGP報文交互中的角色

BGP報文交互中分爲Speaker和Peer兩種角色。

  • Speaker:發送BGP報文的設備稱爲BGP發言者(Speaker),它接收或產生新的報文信息,併發布(Advertise)給其它BGP Speaker。
  • Peer:相互交換報文的Speaker之間互稱對等體(Peer)。若干相關的對等體可以構成對等體組(Peer Group)。

BGP的路由器號(Router ID)

BGP的Router ID是一個用於標識BGP設備的32位值,通常是IPv4地址的形式,在BGP會話建立時發送的Open報文中攜帶。對等體之間建立BGP會話時,每個BGP設備都必須有唯一的Router ID,否則對等體之間不能建立BGP連接。

BGP的Router ID在BGP網絡中必須是唯一的,可以採用手工配置,也可以讓設備自動選取。缺省情況下,BGP選擇設備上的Loopback接口的IPv4地址作爲BGP的Router ID。如果設備上沒有配置Loopback接口,系統會選擇接口中最大的IPv4地址作爲BGP的Router ID。一旦選出Router ID,除非發生接口地址刪除等事件,否則即使配置了更大的地址,也保持原來的Router ID。

BGP工作原理

BGP對等體的建立、更新和刪除等交互過程主要有5種報文、6種狀態機和5個原則。

BGP的報文

BGP對等體間通過以下5種報文進行交互,其中Keepalive報文爲週期性發送,其餘報文爲觸發式發送:

  • Open報文:用於建立BGP對等體連接。
  • Update報文:用於在對等體之間交換路由信息。
  • Notification報文:用於中斷BGP連接。
  • Keepalive報文:用於保持BGP連接。
  • Route-refresh報文:用於在改變路由策略後請求對等體重新發送路由信息。只有支持路由刷新(Route-refresh)能力的BGP設備會發送和響應此報文。

BGP狀態機

BGP對等體的交互過程中存在6種狀態機:空閒(Idle)、連接(Connect)、活躍(Active)、Open報文已發送(OpenSent)、Open報文已確認(OpenConfirm)和連接已建立(Established)。在BGP對等體建立的過程中,通常可見的3個狀態是:Idle、Active和Established。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-b83a0wQ9-1587186524389)(BGP知識手冊-華爲-華三-思科/BGP狀態機.png)]

  1. Idle狀態是BGP初始狀態。在Idle狀態下,BGP拒絕鄰居發送的連接請求。只有在收到本設備的Start事件後,BGP纔開始嘗試和其它BGP對等體進行TCP連接,並轉至Connect狀態。

在這裏插入圖片描述

  • Start事件是由一個操作者配置一個BGP過程,或者重置一個已經存在的過程或者路由器軟件重置BGP過程引起的。

  • 任何狀態中收到Notification報文或TCP拆鏈通知等Error事件後,BGP都會轉至Idle狀態。

  1. 在Connect狀態下,BGP啓動連接重傳定時器(Connect Retry),等待TCP完成連接。
  • 如果TCP連接成功,那麼BGP向對等體發送Open報文,並轉至OpenSent狀態。
  • 如果TCP連接失敗,那麼BGP轉至Active狀態。
  • 如果連接重傳定時器超時,BGP仍沒有收到BGP對等體的響應,那麼BGP繼續嘗試和其它BGP對等體進行TCP連接,停留在Connect狀態。
  1. 在Active狀態下,BGP總是在試圖建立TCP連接。
  • 如果TCP連接成功,那麼BGP向對等體發送Open報文,關閉連接重傳定時器,並轉至OpenSent狀態。
  • 如果TCP連接失敗,那麼BGP停留在Active狀態。
  • 如果連接重傳定時器超時,BGP仍沒有收到BGP對等體的響應,那麼BGP轉至Connect狀態。
  1. 在OpenSent狀態下,BGP等待對等體的Open報文,並對收到的Open報文中的AS號、版本號、認證碼等進行檢查。
  • 如果收到的Open報文正確,那麼BGP發送Keepalive報文,並轉至OpenConfirm狀態。
  • 如果發現收到的Open報文有錯誤,那麼BGP發送Notification報文給對等體,並轉至Idle狀態。
  1. 在OpenConfirm狀態下,BGP等待Keepalive或Notification報文。如果收到Keepalive報文,則轉至Established狀態,如果收到Notification報文,則轉至Idle狀態。

  2. 在Established狀態下,BGP可以和對等體交換Update、Keepalive、Route-refresh報文和Notification報文。

  • 如果收到正確的Update或Keepalive報文,那麼BGP就認爲對端處於正常運行狀態,將保持BGP連接。
  • 如果收到錯誤的Update或Keepalive報文,那麼BGP發送Notification報文通知對端,並轉至Idle狀態。
  • Route-refresh報文不會改變BGP狀態。
  • 如果收到Notification報文,那麼BGP轉至Idle狀態。
  • 如果收到TCP拆鏈通知,那麼BGP斷開連接,轉至Idle狀態。

BGP對等體之間的交互原則

華爲設備:

BGP設備將最優路由加入BGP路由表,形成BGP路由。BGP設備與對等體建立鄰居關係後,採取以下交互原則:

從IBGP對等體獲得的BGP路由,BGP設備只發布給它的EBGP對等體。

從EBGP對等體獲得的BGP路由,BGP設備發佈給它所有EBGP和IBGP對等體。

當存在多條到達同一目的地址的有效路由時,BGP設備只將最優路由發佈給對等體。

路由更新時,BGP設備只發送更新的BGP路由。

所有對等體發送的路由,BGP設備都會接收。

華三設備發佈路由的策略

BGP發佈路由時採用如下策略:

  • 存在多條有效路由時,BGP發言者只將最優路由發佈給對等體。如果配置了advertise-rib-active命令,則BGP發佈IP路由表中的最優路由;否則,發佈BGP路由表中的最優路由。
  • BGP發言者只把自己使用的路由發佈給對等體。
  • BGP發言者會將從EBGP獲得的路由發佈給它的所有BGP對等體(包括EBGP對等體和IBGP對等體)。
  • BGP發言者會將從IBGP獲得的路由發佈給它的EBGP對等體,但不會發布給它的IBGP對等體。
  • 會話一旦建立,BGP發言者將把滿足上述條件的所有BGP路由發佈給新對等體。之後,BGP發言者只在路由變化時,向對等體發佈更新的路由。

BGP與IGP進行交互

BGP與IGP在設備中使用不同的路由表,爲了實現不同AS間相互通訊,BGP需要與IGP進行交互,即BGP路由表和IGP路由表相互引入。

BGP引入IGP路由

BGP協議本身不發現路由,因此需要將其他路由引入到BGP路由表,實現AS間的路由互通。當一個AS需要將路由發佈給其他AS時,AS邊緣路由器會在BGP路由表中引入IGP的路由。爲了更好的規劃網絡,BGP在引入IGP的路由時,可以使用路由策略進行路由過濾和路由屬性設置,也可以設置MED值指導EBGP對等體判斷流量進入AS時選路。

BGP引入路由時支持Import和Network兩種方式:

  • Import方式是按協議類型,將RIP、OSPF、ISIS等協議的路由引入到BGP路由表中。爲了保證引入的IGP路由的有效性,Import方式還可以引入靜態路由和直連路由。
  • Network方式是逐條將IP路由表中已經存在的路由引入到BGP路由表中,比Import方式更精確。

IGP引入BGP路由

當一個AS需要引入其他AS的路由時,AS邊緣路由器會在IGP路由表中引入BGP的路由。爲了避免大量BGP路由對AS內設備造成影響,當IGP引入BGP路由時,可以使用路由策略,進行路由過濾和路由屬性設置。

BGP安全性

BGP使用認證、通用TTL安全保護機制GTSM(Generalized TTL Security Mechanism)和RPKI(Resource Public Key Infrastructure)三個方法保證BGP對等體間的交互安全。

BGP認證

BGP認證分爲MD5認證和Keychain認證,對BGP對等體關係進行認證是提高安全性的有效手段。MD5認證只能爲TCP連接設置認證密碼,而Keychain認證除了可以爲TCP連接設置認證密碼外,還可以對BGP協議報文進行認證。

BGP GTSM

BGP GTSM檢測IP報文頭中的TTL(time-to-live)值是否在一個預先設置好的特定範圍內,並對不符合TTL值範圍的報文進行允許通過或丟棄的操作,從而實現了保護IP層以上業務,增強系統安全性的目的。

例如將IBGP對等體的報文的TTL的範圍設爲254至255。當攻擊者模擬合法的BGP協議報文,對設備不斷的發送報文進行攻擊時,TTL值必然小於254。如果沒有使能BGP GTSM功能,設備收到這些報文後,發現是發送給本機的報文,會直接上送控制層面處理。這時將會因爲控制層面處理大量攻擊報文,導致設備CPU佔用率高,系統異常繁忙。如果使能BGP GTSM功能,系統會對所有BGP報文的TTL值進行檢查,丟棄TTL值小於254的攻擊報文,從而避免了因網絡攻擊報文導致CPU佔用率高的問題。

BGP的路由優選規則和負載分擔

在BGP路由表中,到達同一目的地可能存在多條路由。此時BGP會選擇其中一條路由作爲最佳路由,並只把此路由發送給其對等體。BGP爲了選出最佳路由,會根據BGP的路由優選規則依次比較這些路由的BGP屬性。

BGP屬性

路由屬性是對路由的特定描述,所有的BGP路由屬性都可以分爲以下4類,常見BGP屬性類型如表1所示:

  • 公認必須遵循(Well-known mandatory):所有BGP設備都可以識別此類屬性,且必須存在於Update報文中。如果缺少這類屬性,路由信息就會出錯。
  • 公認任意(Well-known discretionary):所有BGP設備都可以識別此類屬性,但不要求必須存在於Update報文中,即就算缺少這類屬性,路由信息也不會出錯。
  • 可選過渡(Optional transitive):BGP設備可以不識別此類屬性,如果BGP設備不識別此類屬性,但它仍然會接收這類屬性,並通告給其他對等體。
  • 可選非過渡(Optional non-transitive):BGP設備可以不識別此類屬性,如果BGP設備不識別此類屬性,則會被忽略該屬性,且不會通告給其他對等體。
1BGP常見屬性類型
屬性名 類型
Origin屬性 公認必須遵循
AS_Path屬性 公認必須遵循
Next_Hop屬性 公認必須遵循
Local_Pref屬性 公認任意
MED屬性 可選非過渡
團體屬性 可選過渡
Originator_ID屬性 可選非過渡
Cluster_List屬性 可選非過渡

Origin屬性

Origin屬性用來定義路徑信息的來源,標記一條路由是怎麼成爲BGP路由的。它有以下3種類型:

  • IGP:具有最高的優先級。通過network命令注入到BGP路由表的路由,其Origin屬性爲IGP。
  • EGP:優先級次之。通過EGP得到的路由信息,其Origin屬性爲EGP。
  • Incomplete:優先級最低。通過其他方式學習到的路由信息。比如BGP通過import-route命令引入的路由,其Origin屬性爲Incomplete。

AS_Path屬性

AS_Path屬性按矢量順序記錄了某條路由從本地到目的地址所要經過的所有AS編號。在接收路由時,設備如果發現AS_Path列表中有本AS號,則不接收該路由,從而避免了AS間的路由環路。

當BGP Speaker傳播自身引入的路由時:

  • 當BGP Speaker將這條路由通告到EBGP對等體時,便會在Update報文中創建一個攜帶本地AS號的AS_Path列表。
  • 當BGP Speaker將這條路由通告給IBGP對等體時,便會在Update報文中創建一個空的AS_Path列表。
  • 當BGP Speaker傳播從其他BGP Speaker的Update報文中學習到的路由時:
  • 當BGP Speaker將這條路由通告給EBGP對等體時,便會把本地AS編號添加在AS_Path列表的最前面(最左面)。收到此路由的BGP設備根據AS_Path屬性就可以知道去目的地址所要經過的AS。離本地AS最近的相鄰AS號排在前面,其他AS號按順序依次排列。
  • 當BGP Speaker將這條路由通告給IBGP對等體時,不會改變這條路由相關的AS_Path屬性。

AS_PATH屬性有以下兩種類型:

  • AS_SEQUENCE:AS號按照一定的順序排列。離本地AS最近的相鄰AS號排在前面,其他AS號按順序依次排列。
  • AS_SET:AS號只是經過的AS的簡單羅列,沒有順序要求。

AS_PATH屬性具有如下用途:

  • 避免路由環路的形成:缺省情況下,如果BGP路由器接收到的路由的AS_PATH屬性中已經包含了本地的AS號,則BGP路由器認爲出現路由環路,不會接受該路由。
  • 影響路由的選擇:在其他因素相同的情況下,BGP會優先選擇路徑較短的路由。
  • 對路由進行過濾:通過配置AS路徑過濾列表,可以針對AS_PATH屬性中所包含的AS號來對路由進行過濾

Next_Hop屬性

Next_Hop屬性記錄了路由的下一跳信息。BGP的下一跳屬性和IGP的有所不同,不一定就是鄰居設備的IP地址。通常情況下,Next_Hop屬性遵循下面的規則:

  • BGP Speaker在向EBGP對等體發佈某條路由時,會把該路由信息的下一跳屬性設置爲本地與對端建立BGP鄰居關係的接口地址。
  • BGP Speaker將本地始發路由發佈給IBGP對等體時,會把該路由信息的下一跳屬性設置爲本地與對端建立BGP鄰居關係的接口地址。
  • BGP Speaker在向IBGP對等體發佈從EBGP對等體學來的路由時,並不改變該路由信息的下一跳屬性。

Local_Pref屬性

Local_Pref屬性表明路由器的BGP優先級,用於判斷流量離開AS時的最佳路由。當BGP的設備通過不同的IBGP對等體得到目的地址相同但下一跳不同的多條路由時,將優先選擇Local_Pref屬性值較高的路由。Local_Pref****屬性僅在IBGP對等體之間有效**,不通告給其他AS。Local_Pref屬性可以手動配置,如果路由沒有配置Local_Pref屬性,BGP選路時將該路由的Local_Pref值按缺省值100來處理。

MED屬性

MED(Multi-Exit Discriminator)屬性用於判斷流量進入AS時的最佳路由,當一個運行BGP的設備通過不同的EBGP對等體得到目的地址相同但下一跳不同的多條路由時,在其它條件相同的情況下,將優先選擇MED值較小者作爲最佳路由。

MED屬性僅在相鄰兩個AS之間傳遞,收到此屬性的AS一方不會再將其通告給任何其他第三方AS。MED屬性可以手動配置,如果路由沒有配置MED屬性,BGP選路時將該路由的MED值按缺省值0來處理。

團體屬性

團體屬性(Community)用於標識具有相同特徵的BGP路由,使路由策略的應用更加靈活,同時降低了維護管理的難度。

團體屬性分爲自定義團體屬性和公認團體屬性。公認團體屬性如表2所示。

表****2 公認團體屬性
團體屬性名稱 團體屬性號 說明
Internet 0(0x00000000) 設備在收到具有此屬性的路由後,可以向任何BGP對等體發送該路由。
No_Advertise 4294967042(0xFFFFFF02) 設備收到具有此屬性的路由後,將不向任何BGP對等體發送該路由。
No_Export 4294967041(0xFFFFFF01) 設備收到具有此屬性的路由後,將不向AS外發送該路由。
No_Export_Subconfed 4294967043(0xFFFFFF03) 設備收到具有此屬性的路由後,將不向AS外發送該路由,也不向AS內其他子AS發佈此路由。

擴展團體屬性

華三文檔:

隨着團體屬性的應用日益廣泛,原有四字節的團體屬性無法滿足用戶的需求。因此,BGP定義了新的路由屬性——擴展團體屬性。擴展團體屬性與團體屬性有如下不同:

擴展團體屬性爲八字節,提供了更多的屬性值。

擴展團體屬性可以劃分類型。在不同的組網應用中,可以使用不同類型的擴展團體屬性對路由進行過濾和控制。與不區分類型、統一使用同一個屬性值空間的團體屬性相比,擴展團體屬性的配置和管理更爲簡單。

目前,設備支持的擴展團體屬性有VPN Target屬性和SoO(Site of Origin,源站點)屬性。

SoO擴展團體屬性用來標識路由的原始站點。路由器不會將帶有SoO屬性的路由發佈給該SoO標識的站點,確保來自某個站點的路由不會再被髮布到該站點,從而避免路由環路。在AS路徑信息丟失時,可以通過SoO屬性來避免發生環路。

SoO屬性有三種格式:

16位自治系統號:32位用戶自定義數,例如:101:3。

32位IP地址:16位用戶自定義數,例如:192.168.122.15:1。

32位自治系統號:16位用戶自定義數,其中的自治系統號最小值爲65536。例如:65536:1。

Originator_ID屬性

Originator_ID屬性和Cluster_List屬性用於解決路由反射器場景中的環路問題

Cluster_list屬性

Originator_ID屬性和Cluster_List屬性用於解決路由反射器場景中的環路問題

BGP選擇路由的策略

華爲設備BGP選路原則:

當到達同一目的地存在多條路由時,BGP依次對比下列屬性來選擇路由:

  1. 優選協議首選值(PrefVal)最高的路由。

    協議首選值(**PrefVal)是華爲設備的特有屬性,該屬性僅在本地有效。

  2. 優選本地優先級(Local_Pref)最高的路由。

如果路由沒有本地優先級,BGP選路時將該路由按缺省的本地優先級100來處理。

  1. 依次優選手動聚合路由、自動聚合路由、network命令引入的路由、import-route命令引入的路由、從對等體學習的路由。

  2. 優選AS路徑(AS_Path)最短的路由。

  3. 依次優選Origin類型爲IGP、EGP、Incomplete的路由。

  4. 對於來自同一AS的路由,優選MED值最低的路由。

  5. 依次優選EBGP路由、IBGP路由、LocalCross路由、RemoteCross路由。

    PE上某個VPN實例的VPNv4路由的ERT匹配其他VPN實例的IRT後複製到該VPN實例,稱爲LocalCross;從遠端PE學習到的VPNv4路由的ERT匹配某個VPN實例的IRT後複製到該VPN實例,稱爲RemoteCross。

  6. 優選到BGP下一跳IGP度量值(metric)最小的路由。

  7. 優選Cluster_List最短的路由。

  8. 優選Router ID最小的設備發佈的路由。

  9. 如果路由攜帶Originator_ID屬性,選路過程中將比較Originator_ID的大小(不再比較Router ID),並優選Originator_ID最小的路由。

  10. 優選從具有最小IP Address的對等體學來的路由。

華三BGP選路原則

目前,BGP選擇路由的過程爲:

(1) 丟棄下一跳(NEXT_HOP)不可達的路由;

(2) 優選首選值(Preferred-value)最大的路由;

(3) 優選本地優先級(LOCAL_PREF)最高的路由;

(4) 依次選擇network命令生成的路由、import-route命令引入的路由、聚合路由;

(5) 優選AS路徑(AS_PATH)最短的路由;

(6) 依次選擇ORIGIN類型爲IGP、EGP、Incomplete的路由;

(7) 優選MED值最低的路由;

(8) 依次選擇從EBGP、聯盟EBGP、聯盟IBGP、IBGP學來的路由;

(9) 優選IGP Metric值最小的路由;

(10) 優選迭代深度值小的路由;

(11) 如果路由都來自EBGP鄰居,並且Router ID不相同,優選曾經的最優路由;

(12) 優選Router ID最小的路由器發佈的路由。如果路由包含RR屬性,那麼在路由選擇過程中,就用ORIGINATOR_ID來替代Router ID;

(13) 優選CLUSTER_LIST長度最短的路由;

(14) 優選IP地址最小的對等體發佈的路由。

思科BGP選路原則:

\1. Prefer the path with the highest WEIGHT.

\2. Prefer the path with the highest LOCAL_PREF

\3. Prefer the path that was locally originated via a network or aggregate BGP subcommand or through redistribution from an IGP.

Local paths that are sourced by the network or redistribute commands are preferred over local aggregates that are sourced by the aggregate-address command.

\4. Prefer the path with the shortest AS_PATH.

\5. Prefer the path with the lowest origin type.

\6. Prefer the path with the lowest multi-exit discriminator (MED).

\7. Prefer eBGP over iBGP paths.

If bestpath is selected, go to Step 9 (multipath).

\8. Prefer the path with the lowest IGP metric to the BGP next hop.

\9. Determine if multiple paths require installation in the routing table for BGP Multipath.

\10. When both paths are external, prefer the path that was received first (the oldest one).

This step minimizes route-flap because a newer path does not displace an older one, even if the newer path would be the preferred route based on the next decision criteria (Steps 11, 12, and 13).

Skip this step if any of these items is true:

- You have enabled the bgp best path compare-routerid command.

- The router ID is the same for multiple paths because the routes were received from the same router.

- There is no current best path. The current best path can be lost when, for example, the neighbor that offers the path goes down

\11. Prefer the route that comes from the BGP router with the lowest router ID.

The router ID is the highest IP address on the router, with preference given to loopback addresses. Also, you can use the bgp router-id command to manually set the router ID.

\12. If the originator or router ID is the same for multiple paths, prefer the path with the minimum cluster list length.

This is only present in BGP RR environments. It allows clients to peer with RRs or clients in other clusters. In this scenario, the client must be aware of the RR-specific BGP attribute.

\13. Prefer the path that comes from the lowest neighbor address.

This address is the IP address that is used in the BGP neighbor configuration. The address corresponds to the remote peer that is used in the TCP connection with the local router.

BGP負載分擔

當到達同一目的地址存在多條等價路由時,可以通過BGP等價負載分擔實現均衡流量的目的。形成BGP等價負載分擔的條件是“BGP選擇路由的策略”的1至8條規則中需要比較的屬性完全相同。

華三文檔:

BGP可以通過如下兩種方式實現負載分擔:

基於迭代路由實現負載分擔

由於BGP協議本身的特殊性,它產生的路由的下一跳地址可能不是當前路由器直接相連的鄰居。常見的一個原因是:IBGP之間發佈路由信息時不改變下一跳。這種情況下,爲了能夠將報文正確轉發出去,路由器必須先找到一個直接可達的地址(查找IGP建立的路由表項),通過這個地址到達路由表中指示的下一跳。在上述過程中,去往直接可達地址的路由被稱爲依賴路由,BGP路由依賴於這些路由指導報文轉發。根據下一跳地址找到依賴路由的過程就是路由迭代。

目前系統支持基於迭代的BGP負載分擔,即如果依賴路由本身是負載分擔的(假設有三個下一跳地址),則BGP也會生成與依賴路由數量相同的下一跳地址來指導報文轉發。需要說明的是,基於迭代的BGP負載分擔並不需要命令配置,這一特性在系統上始終啓用。

通過改變BGP選路規則實現負載分擔

在實現方法上,BGP的負載分擔與IGP的負載分擔有所不同:

IGP(如RIP、OSPF)是通過協議定義的路由算法,對到達同一目的地址的不同路由,根據計算結果,將度量值(metric)相等的路由進行負載分擔,選擇的標準很明確(按metric)。

BGP本身並沒有路由計算的算法,它只是一個選路的路由協議,因此,不能根據一個明確的度量值決定是否對路由進行負載分擔,但BGP有豐富的選路規則,可以在對路由進行一定的選擇後,有條件地進行負載分擔,也就是將負載分擔加入到BGP的選路規則中去。

採用本方式進行負載分擔時,BGP不再按照“選路規則”中的規則選擇路由,當路由同時滿足如下條件時,即在這些路由間進行負載分擔:

ORIGIN屬性、LOCAL_PREF屬性和MED屬性完全相同。如果未配置balance as-path-neglect命令,則要求AS_PATH屬性也必須相同;如果配置了該命令,則AS_PATH屬性可以不同。

同爲標籤路由(具有對應MPLS標籤值的路由)或同爲非標籤路由。

如果未配置balance as-path-neglect命令,形成負載分擔的路由的AS_PATH屬性相同,則發佈路由的AS_PATH屬性就爲該值;如果配置了balance as-path-neglect命令,形成負載分擔的路由的AS_PATH屬性不同,則發佈路由的AS_PATH屬性爲最佳路由的AS_PATH屬性。

NEXT_HOP屬性改變爲Router C的地址,而不是原來的EBGP對等體地址。

其它的BGP路由屬性爲最佳路由的屬性。

思科文檔:

In order to be candidates for multipath, paths to the same destination need to have these characteristics equal to the best-path characteristics:

Weight

Local preference

AS-PATH length

Origin

MED

One of these:

Neighboring AS or sub-AS (before the addition of the eiBGP Multipath feature)

AS-PATH (after the addition of the eiBGP Multipath feature)

Some BGP Multipath features put additional requirements on multipath candidates.

These are the additional requirements for eBGP multipath:

The path should be learned from an external or confederation-external neighbor (eBGP).

The IGP metric to the BGP next hop should be equal to the best-path IGP metric.

These are the additional requirements for iBGP multipath:

The path should be learned from an internal neighbor (iBGP).

The IGP metric to the BGP next hop should be equal to the best-path IGP metric, unless the router is configured for unequal-cost iBGP multipath.

BGP inserts up to n most recently received paths from multipath candidates in the IP routing table. The maximum value of n is currently 6. The default value, when multipath is disabled, is 1.

For unequal-cost load balancing, you can also use BGP Link Bandwidth.

路由反射器

爲保證IBGP對等體之間的連通性,需要在IBGP對等體之間建立全連接關係。假設在一個AS內部有n臺設備,那麼建立的IBGP連接數就爲n(n-1)/2。當設備數目很多時,設備配置將十分複雜,而且配置後網絡資源和CPU資源的消耗都很大。在IBGP對等體間使用路由反射器可以解決以上問題。

路由反射器相關角色

在一個AS內部關於路由反射器有以下幾種角色:

在這裏插入圖片描述

  • 路由反射器RR(Route Reflector):允許把從IBGP對等體學到的路由反射到其他IBGP對等體的BGP設備,類似OSPF網絡中的DR。
  • 客戶機(Client):與RR形成反射鄰居關係的IBGP設備。在AS內部客戶機只需要與RR直連。
  • 非客戶機(Non-Client):既不是RR也不是客戶機的IBGP設備。在AS內部非客戶機與RR之間,以及所有的非客戶機之間仍然必須建立全連接關係。
  • 始發者(Originator):在AS內部始發路由的設備。Originator_ID屬性用於防止集羣內產生路由環路。
  • 集羣(Cluster):路由反射器及其客戶機的集合。Cluster_List屬性用於防止集羣間產生路由環路。

路由反射器原理

同一集羣內的客戶機只需要與該集羣的RR直接交換路由信息,因此客戶機只需要與RR之間建立IBGP連接,不需要與其他客戶機建立IBGP連接,從而減少了IBGP連接數量。如上圖所示,在AS65000內一臺設備作爲RR,三臺設備作爲客戶機,形成Cluster1。此時AS65000中IBGP的連接數從配置RR前的10條減少到4條,不僅簡化了設備的配置,也減輕了網絡和CPU的負擔。

RR突破了“從IBGP對等體獲得的BGP路由,BGP設備只發布給它的EBGP對等體。”的限制,並採用獨有的Cluster_List屬性和Originator_ID屬性防止路由環路。RR向IBGP鄰居發佈路由規則如下:

  • 從非客戶機學到的路由,發佈給所有客戶機。
  • 從客戶機學到的路由,發佈給所有非客戶機和客戶機(發起此路由的客戶機除外)。
  • 從EBGP對等體學到的路由,發佈給所有的非客戶機和客戶機。

Cluster_List屬性

路由反射器和它的客戶機組成一個集羣(Cluster),使用AS內唯一的Cluster ID作爲標識。爲了防止集羣間產生路由環路,路由反射器使用Cluster_List屬性,記錄路由經過的所有集羣的Cluster ID。

當一條路由第一次被RR反射的時候,RR會把本地Cluster ID添加到Cluster List的前面。如果沒有Cluster_List屬性,RR就創建一個。

當RR接收到一條更新路由時,RR會檢查Cluster List。如果Cluster List中已經有本地Cluster ID,丟棄該路由;如果沒有本地Cluster ID,將其加入Cluster List,然後反射該更新路由。

備份路由反射器

爲增加網絡的可靠性,防止單點故障對網絡造成影響,有時需要在一個集羣中配置一個以上的RR。由於RR打破了從IBGP對等體收到的路由不能傳遞給其他IBGP對等體的限制,所以同一集羣內的RR之間中可能存在環路。這時,該集羣中的所有RR必須使用相同的Cluster ID,以避免RR之間的路由環路。
在這裏插入圖片描述
如上圖,路由反射器RR1和RR2在同一個集羣內,配置了相同的Cluster ID。

當客戶機Client1從EBGP對等體接收到一條更新路由,它將通過IBGP向RR1和RR2通告這條路由。

RR1和RR2在接收到該更新路由後,將本地Cluster ID添加到Cluster List前面,然後向其他的客戶機(Client2、Client3)反射,同時相互反射。

RR1和RR2在接收到該反射路由後,檢查Cluster List,發現自己的Cluster ID已經包含在Cluster List中。於是RR1和RR2丟棄該更新路由,從而避免了路由環路。

多集羣路由反射器

一個AS中可以存在多個集羣,各個集羣的RR之間建立IBGP對等體。當RR所處的網絡層不同時,可以將較低網絡層次的RR配成客戶機,形成分級RR。當RR所處的網絡層相同時,可以將不同集羣的RR全連接,形成同級RR。

分級的路由反射器

在這裏插入圖片描述

在實際的RR部署中,常用的是分級RR的場景。ISP爲AS100提供Internet路由。AS100內部分爲兩個集羣,其中Cluster1內的四臺設備是核心路由器,採用備份RR的形式保證可靠性。

同級路由反射器

在這裏插入圖片描述

一個骨幹網被分成多個集羣。各集羣的RR互爲非客戶機關係,並建立全連接。此時雖然每個客戶機只與所在集羣的RR建立IBGP連接,但所有RR和客戶機都能收到全部路由信息。

BGP聯盟

解決AS內部的IBGP網絡連接激增問題,除了使用路由反射器之外,還可以使用聯盟(Confederation)。聯盟將一個AS劃分爲若干個子AS。每個子AS內部建立IBGP全連接關係,子AS之間建立聯盟EBGP連接關係,但聯盟外部AS仍認爲聯盟是一個AS。配置聯盟後,原AS號將作爲每個路由器的聯盟ID。這樣有兩個好處:一是可以保留原有的IBGP屬性,包括Local Preference屬性、MED屬性和NEXT_HOP屬性等;二是聯盟相關的屬性在傳出聯盟時會自動被刪除,即管理員無需在聯盟的出口處配置過濾子AS號等信息的操作。

在這裏插入圖片描述

如上圖,所示,AS100使用聯盟後被劃分爲3個子AS:AS65001、AS65002和AS65003,使用AS100作爲聯盟ID。此時IBGP的連接數量從10條減少到4條,不僅簡化了設備的配置,也減輕了網絡和CPU的負擔。而AS100外的BGP設備因爲僅知道AS100的存在,並不知道AS100內部的聯盟關係,所以不會增加CPU的負擔。

路由反射器和聯盟的比較

路由反射器 聯盟
不需要更改現有的網絡拓撲,兼容性好。 需要改變邏輯拓撲。
配置方便,只需要對作爲反射器的設備進行配置,客戶機並不需要知道自己是客戶機。 所有設備需要重新進行配置。
集羣與集羣之間仍然需要全連接。 聯盟的子AS之間是特殊的EBGP連接,不需要全連接。
適用於中、大規模網絡。 適用於大規模網絡。

路由聚合

在大規模的網絡中,BGP路由表十分龐大,給設備造成了很大的負擔,同時使發生路由振盪的機率也大大增加,影響網絡的穩定性。

路由聚合是將多條路由合併的機制,它通過只向對等體發送聚合後的路由而不發送所有的具體路由的方法,減小路由表的規模。並且被聚合的路由如果發生路由振盪,也不再對網絡造成影響,從而提高了網絡的穩定性。

BGP在IPv4網絡中支持自動聚合和手動聚合兩種方式,而IPv6網絡中僅支持手動聚合方式:

自動聚合:對BGP引入的路由進行聚合。配置自動聚合後,BGP將按照自然網段聚合路由(例如非自然網段A類地址10.1.1.1/24和10.2.1.1/24將聚合爲自然網段A類地址10.0.0.0/8),並且BGP向對等體只發送聚合後的路由。

手動聚合:對BGP本地路由表中存在的路由進行聚合。手動聚合可以控制聚合路由的屬性,以及決定是否發佈具體路由。

爲了避免路由聚合可能引起的路由環路,BGP設計了AS_Set屬性。AS_Set屬性是一種無序的AS_Path屬性,標明聚合路由所經過的AS號。當聚合路由重新進入AS_Set屬性中列出的任何一個AS時,BGP將會檢測到自己的AS號在聚合路由的AS_Set屬性中,於是會丟棄該聚合路由,從而避免了路由環路的形成。

路由衰減

當BGP應用於複雜的網絡環境時,路由振盪十分頻繁。爲了防止頻繁的路由振盪帶來的不利影響,BGP使用路由衰減來抑制不穩定的路由。

路由振盪指路由表中添加一條路由後,該路由又被撤銷的過程。當發生路由振盪時,設備就會向鄰居發佈路由更新,收到更新報文的設備需要重新計算路由並修改路由表。所以頻繁的路由振盪會消耗大量的帶寬資源和CPU資源,嚴重時會影響到網絡的正常工作。

BGP衰減示意圖

在這裏插入圖片描述

路由衰減使用懲罰值(Penalty value)來衡量一條路由的穩定性,懲罰值越高說明路由越不穩定。如上圖所示,路由每發生一次振盪,BGP便會給此路由增加1000的懲罰值,其餘時間懲罰值會慢慢下降。當懲罰值超過抑制閾值(suppress value)時,此路由被抑制,不加入到路由表中,也不再向其他BGP對等體發佈更新報文。被抑制的路由每經過一段時間,懲罰值便會減少一半,這個時間稱爲半衰期(half-life)。當懲罰值降到再使用閾值(reuse value)時,此路由變爲可用並被加入到路由表中,同時向其他BGP對等體發佈更新報文。從路由被抑制到路由恢復可用的時間稱爲抑制時間(suppress time)。

路由衰減只對EBGP路由起作用,對IBGP路由不起作用。這是因爲IBGP路由可能含有本AS的路由,而IGP網絡要求AS內部路由表儘可能一致。如果路由衰減對IBGP路由起作用,那麼當不同設備的衰減參數不一致時,將會導致路由表不一致。

BMP

BGP監控協議BGP Monitoring Protocol(BMP)能夠對網絡中的設備的BGP運行狀態進行實時監控,BGP運行狀態包括對等體關係的建立與解除、路由信息刷新等。

實現BMP之前,只能通過人工查詢方式來獲得設備的BGP運行狀態,效率較低;實現BMP之後,設備可通過與監控服務器的連接,向監控服務器上報其運行狀態信息,大大提升了網絡監控的效率。通過BMP瞭解BGP運行狀態,可以及時發現網絡中的安全隱患並採取規避措施,保障了網絡的穩定性。

BMP消息類型

BMP會話包含Initiation、PU、RM、PD、SR、Termination六種消息,六種消息均以報文形式發送。上報的信息主要爲BGP路由信息、BGP鄰居信息和設備的廠商信息、版本號等。

Initiation消息:初始化消息,向監控服務器通告廠商信息、版本號等。

  • PU(Peer Up Notification)消息:向監控服務器上報與對等體BGP連接的建立。
  • RM(Route Monitoring)消息:路由監控消息,向監控服務器發送從對等體收到的所有路由,並隨時向監控服務器上報路由的新增或撤銷。
  • PD(Peer Down Notification)消息:向監控服務器上報與對等體BGP連接的中斷。
  • SR(Stats Reports)消息:向監控服務器上報設備運行狀態的統計信息。
  • Termination消息:結束消息,向監控服務器通告關閉BMP會話的原因。
  • BMP會話是單向的,即設備向監控服務器上報消息但忽略監控服務器發送的任何消息。

BMP工作原理

BMP典型組網;

在這裏插入圖片描述

被監控設備(如圖中的PE1、PE2)與監控服務器建立TCP連接,監控服務器無需發送任何指令給被監控設備,被監控設備就會發送BGP運行狀態信息給監控服務器,監控服務器解析接收到的BMP報文並呈現在監控視圖中。設備發送給監控服務器的報文都帶有表示對等體信息的報文頭,從而監控服務器可以區分出報文來自哪個BGP鄰居。

設備與監控服務器建立連接時需要注意以下幾點:

  • 設備與監控服務器的連接基於TCP協議,可以指定連接端口號。
  • 設備與監控服務器的連接可以是多對多的關係。
  • 一個BMP實例僅能連接一臺監控服務器。
  • 監控服務器監控所有BGP鄰居,不可以指定需要監控的鄰居。

BGP與BFD聯動

BGP協議通過週期性的向對等體發送報文來實現鄰居檢測機制。但這種機制檢測到故障所需時間比較長,超過1秒鐘。當數據的傳輸速度達到Gbit/s級別時,這種機制的檢測時間將導致大量數據丟失,無法滿足網絡高可靠性的需求。BGP與BFD(Bidirectional Forwarding Detection)聯動可以利用BFD的毫秒級快速檢測機制解決上述問題。

BGP與BFD聯動組網圖

在這裏插入圖片描述

如上圖所示,RouterA和RouterB分別屬於AS100和AS200,兩臺路由器直接相連並建立EBGP連接,並配置BGP與BFD聯動。當RouterA和RouterB之間的鏈路發生故障時,BFD利用毫秒級檢測機制感知到BFD會話狀態由Up變爲Down,並通知RouterA和RouterB。RouterA和RouterB處理鄰居Down事件,重新進行BGP選路。

BGP Auto FRR

BGP Auto FRR(BGP Auto Fast ReRoute)是一種鏈路故障保護措施,應用於有主備鏈路的網絡拓撲結構中,可以使BGP的兩個鄰居切換或者兩個下一跳切換達到亞秒級的收斂速度。

BGP Auto FRR對於從不同對等體學到的相同前綴的路由,利用最優路由作爲主鏈路進行轉發,並自動將次優路由作爲備份鏈路。當主鏈路出現故障的時候,系統快速響應BGP路由不可達的通知,並將轉發路徑切換到備份鏈路上保證數據轉發。在BGP收斂後,BGP Auto FRR再將流量按BGP選出的最佳路由指導轉發。

應用

在這裏插入圖片描述
BGP Auto FRR示意圖:

所示,RouterD將學到的BGP路由發往AS100中的RouterB和RouterC,然後RouterB和RouterC通過反射器將路由發到RouterA上,RouterA上收到下一跳爲RouterB和RouterC的兩份路由,配置策略優選其中一條鏈路上收到的路由,這裏假設在RouterA上優選從RouterB發來的路由,主鏈路是LinkB,備份鏈路是LinkC。

在RouterA上使能Auto FRR,當域內LinkB經過的節點或者鏈路出現故障的時候,RouterA上到RouterB的下一跳信息就會失效,觸發轉發平面迅速將從RouterA到RouterD流量快速切換到LinkC上,優先保證流量不丟失。同時,RouterA重新進行BGP選路,優選從RouterC發來的路由並更新FIB。

BGP GR和NSR

BGP的平滑重啓GR(Graceful Restart)和不間斷路由NSR(Non-Stop Routing)作爲高可靠性的解決方案,其根本目的都是爲了保證用戶業務在設備故障的時候不受影響或者影響最小。

BGP GR

BGP GR技術保證了在設備重啓或者主備倒換過程中轉發層面能夠繼續指導數據的轉發,同時控制層面鄰居關係的重建以及路由計算等動作不會影響轉發層面的功能,從而避免了路由震盪引發的業務中斷,提高了整網的可靠性。

GR相關概念:

  • GR Restarter:指由管理員觸發或故障觸發後,以GR方式重啓的設備。
  • GR Helper:GR Restarter的鄰居,協助GR Restarter進行GR的設備。
  • GR Time:是GR Helper檢測到GR Restarter重啓或者主備倒換後,保持轉發信息不刪除的時間。

BGP GR的過程是:

  1. 利用BGP的能力協商機制,GR Restarter和GR Helper瞭解彼此的GR能力,建立有GR能力的會話。
  2. 當GR Helper檢查到GR Restarter重啓或者主備倒換後,不刪除和GR Restarter相關的路由和轉發表項,也不通知其他鄰居,而是等待重建BGP連接。
  3. GR Restarter在GR Time超時前與重啓前的所有GR Helper新建立好鄰居關係。

BGP NSR

NSR是一種控制平面倒換而鄰居不感知的可靠性技術,適用於設備具有主用主控板和備用主控板的場景。與GR相比,NSR具有不需要鄰居協助,不存在互通性問題的優點。

設備上NSR功能缺省使能,無需配置。

有無GR、NSR技術的比較

無GR、NSR技術的主備倒換 有GR技術的主備倒換 有NSR技術的主備倒換
BGP鄰居重建 BGP鄰居重建 BGP鄰居重建
路由重新計算 路由重新計算 路由重新計算
轉發表變化 轉發表保持不變 轉發表保持不變
轉發流量丟失,業務中斷 轉發流量零丟失,業務不受影響 轉發流量零丟失,業務不受影響
整網感知路由變化,路由短時震盪 除主備倒換設備的鄰居外的其他路由器感知不到路由變化 整網不感知路由變化
- GR Restarter需要鄰居支持GR Helper功能,GR Helper不支持多鄰居節點同時以GR方式主備倒換 不需要鄰居支持NSR功能

BGP ORF

RFC5291、RFC5292規定了BGP基於前綴的ORF(Outbound Route Filtering)能力,能將本端設備配置的基於前綴的入口策略通過路由刷新報文發送給BGP鄰居。BGP鄰居根據這些策略構造出口策略,在路由發送時對路由進行過濾。這樣不僅避免了本端設備接收大量無用的路由,降低了本端設備的CPU使用率,還有效減少了BGP鄰居的配置工作,降低了鏈路帶寬的佔用率。

應用:

當本端設備希望BGP鄰居只發送它需要的路由,而BGP鄰居又不願意針對不同設備維護不同的出口策略時,可以運用BGP ORF特性。

圖1 域間EBGP鄰居場景

在這裏插入圖片描述
圖1所示,直連BGP鄰居中,RouterA、RouterB協商基於前綴的ORF能力後,RouterA將本地配置的基於前綴的入口策略打包到Route-refresh報文中發送給RouterB。RouterB根據接收到的路由刷新報文構造出口策略,通過Route-refresh報文發送路由給RouterA。RouterA只收到它需要的路由,而RouterB不必維護路由策略,減少了配置工作。

圖2 域內RR場景

在這裏插入圖片描述
圖2所示,域內帶RR的BGP鄰居,RouterA、RouterB爲RR的客戶端,RouterA與RR、RouterB與RR,分別協商基於前綴的ORF能力,RouterA、RouterB將本地配置的基於前綴的入口策略打包到Route-refresh報文中發送給RR。RR根據接收到的前綴信息構造出口策略,通過Route-refresh報文將路由反射給RouterA、RouterB。RouterA和RouterB只收到需要的路由,RR不必維護路由策略,減少了配置工作。

BGP按組打包

目前現網路由表的快速增長,以及網絡拓撲的複雜性導致BGP需要支持更多的鄰居。特別是一些鄰居數目多且路由量大的場景下,針對路由器需要給大量的BGP鄰居發送路由,且大部分鄰居具有相同出口策略的特點,要求較高的打包發包性能。

按組打包技術將所有擁有共同出口策略的BGP鄰居當作是一個打包組。這樣每條待發送路由只被打包一次然後發給組內的所有鄰居,使打包效率指數級提升。例如,一個反射器有100個客戶機,有10萬條路由需要反射。如果按照每個鄰居分別打包的方式,反射器RR在向100個客戶機發送路由的時候,所有路由被打包的總次數是10萬×100。而按組打包技術將這個過程變爲10萬×1,性能相當於提升了100倍。

應用

在鄰居數目多、路由量大且大部分鄰居具有相同出口策略的場景下,按組打包技術極大的提高了BGP打包發包性能。按組打包的典型應用場景主要有以下三種情況:

在國際關口局場景

圖1所示,IGW Router會向所有相鄰AS發送路由。如果IGW Router支持BGP按組打包功能,那麼它的BGP的轉發性能將得到較大的提升。

圖1 國際關口局典型組網圖

在這裏插入圖片描述

路由反射器場景

圖2所示,RR會向所有Client發送路由。如果RR支持BGP按組打包功能,那麼它的BGP的轉發性能將得到較大的提升。

圖2 路由反射器典型組網圖

在這裏插入圖片描述

ASBR場景

圖3所示,作爲ASBR的RouterB從EBGP鄰居RouterA收來路由後,會向所有IBGP鄰居發送。如果RouterB支持BGP按組打包功能,那麼它的BGP的轉發性能將得到較大的提升。

圖3 PE與多個IBGP鄰居連接典型組網圖

在這裏插入圖片描述

MP-BGP

傳統的BGP-4只能管理IPv4單播路由信息,對於使用其它網絡層協議(如IPv6、組播等)的應用,在跨AS傳播時就受到一定限制。BGP多協議擴展MP-BGP(MultiProtocol BGP)就是爲了提供對多種網絡層協議的支持,對BGP-4進行的擴展。目前的MP-BGP標準是RFC4760,使用擴展屬性和地址族來實現對IPv6、組播和VPN相關內容的支持,BGP協議原有的報文機制和路由機制並沒有改變。

MP-BGP對IPv6單播網絡的支持特性稱爲BGP4+,對IPv4組播網絡的支持特性稱爲MBGP(Multicast BGP)。MP-BGP爲IPv6單播網絡和IPv4組播網絡建立獨立的拓撲結構,並將路由信息儲存在獨立的路由表中,保持單播IPv4網絡、單播IPv6網絡和組播網絡之間路由信息相互隔離,也就實現了用單獨的路由策略維護各自網絡的路由。

擴展屬性

BGP使用的報文中,與IPv4相關的三處信息都由Update報文攜帶,這三處信息分別是:NLRI字段、Next_Hop屬性、Aggregator屬性。

爲實現對多種網絡層協議的支持,BGP需要將網絡層協議的信息反映到NLRI及Next_Hop。因此MP-BGP引入了兩個新的可選非過渡路徑屬性:

  • MP_REACH_NLRI:Multiprotocol Reachable NLRI,多協議可達NLRI。用於發佈可達路由及下一跳信息。
  • MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多協議不可達NLRI。用於撤銷不可達路由。

地址族

MP-BGP採用地址族(Address Family)來區分不同的網絡層協議,目前支持的地址族視圖包括:

  • BGP-IPv4單播地址族視圖
  • BGP-IPv4組播地址族視圖
  • BGP-VPN實例IPv4地址族視圖
  • BGP-VPNv4地址族視圖
  • BGP-IPv6單播地址族視圖
  • BGP-VPN實例IPv6地址族視圖
  • BGP-VPNv6地址族視圖

BGP多進程(華三)

一臺BGP路由器上可以同時啓動多個BGP進程,每個BGP進程對應一個BGP實例。BGP爲不同的BGP實例維護獨立的路由表。

BGP對BGP實例具有如下要求:

  • 一個BGP實例下可以創建多個公網地址族,但不同BGP實例下不能創建相同的公網地址族(公網IPv4單播地址族、公網IPv6單播地址族、公網VPNv4和公網VPNv6地址族除外)。
  • 一個BGP實例下可以創建多個VPN實例,每個VPN實例下可以創建多個地址族,但不同BGP實例下不能創建相同的VPN實例。
  • 不同BGP實例對

華爲設備BGP相關配置

BGP配置任務概覽

\1. 配置BGP的基本功能:配置BGP的基本功能是組建BGP網絡的基礎,是能夠使用BGP其他功能的前提。

\2. 配置BGP安全性:在BGP網絡中,非法用戶可以通過篡改數據報文或者僞裝成認證用戶攻擊BGP網絡。爲了解決BGP網絡承載的業務的安全性問題,可以配置BGP MD5認證或BGP Keychain認證。

3. 監控IBGP網絡連接: 在BGP網絡中,非法用戶可以通過篡改數據報文或者僞裝成認證用戶攻擊BGP網絡。爲了解決BGP網絡承載的業務的安全性問題,可以配置BGP MD5認證或BGP Keychain認證。

4. 配置BGP路由選路和負載分擔: 在BGP路由表中,到達同一目的地可能存在多條路由。爲了指導路由選路,BGP規定了下一跳策略和路由選路規則,其中下一跳策略的優先級比BGP路由選路規則高。在執行完下一跳策略後,BGP使用選路規則進行路由選擇。

網絡中到達同一目的地通常會存在多條有效路由,如果BGP只將最優路由發佈給對等體,這樣就造成很多流量負載不均衡的情況。通過配置BGP負載分擔,可以使流量負載均衡,減少網絡擁塞。

5. 控制BGP路由的發佈和接收:隨着網絡的日益擴大,路由表激增導致網絡負擔越來越重,網絡安全問題也越來越多。通過路由策略來對路由進行篩選,只發送和接收需要的BGP路由,可以解決上述問題。此外,到達同一個目的地址,可能存在多條路由。如果這些路由分別需要穿越不同的AS,把業務流量引導向某些特定的AS,也可以對發佈的路由進行篩選。

6. **配置調整BGP網絡的收斂速度:**當需要BGP快速感知網絡中的變化時,可以配置加快BGP網絡的收斂速度。當需要減少防止路由振盪對網絡的影響、減輕設備負擔時,可以配置減慢BGP網絡的收斂速度。

7. **配置BGP可靠性:**爲了保證BGP網絡發生故障時的業務不長時間中斷,可以採用備份主控板和備份鏈路的方案。但BGP自帶的機制檢測到故障和主備倒換所需時間比較長,超過1秒鐘。爲了保證語音等對時延敏感的業務的用戶不感知業務中斷,可以使用BGP Tracking、BGP與BFD聯動功能實現故障快速感知,同時使用BGP Auto FRR和BGP GR功能實現故障感知後的快速主備倒換。

\8. **配置BGP路由聚合:**在中型或大型BGP網絡中,BGP路由表會變得十分龐大,存儲路由表佔用大量的設備內存資源,傳輸和處理路由信息需要佔用大量的網絡資源。使用路由聚合(Routes Aggregation)不僅可以減小路由表的規模,還可以隱藏一些具體的路由,減少路由震盪對網絡帶來的影響。其中,雖然BGP自動路由聚合配置方便,但只能將路由聚合爲自然網段的路由。BGP手動路由聚合可以結合靈活的路由策略,使BGP更有效的傳遞和控制路由。

\9. 配置向對等體發送缺省路由:在中型或大型BGP網絡中,BGP路由表會變得十分龐大,存儲路由表佔用大量的設備內存資源,傳輸和處理路由信息需要佔用大量的網絡資源。當對等體的BGP路由表中的多條路由都只是由本端發送時,可以在本端配置向對等體發送缺省路由功能。這時無論本端的路由表中是否存在缺省路由,都會向對等體發佈一條下一跳地址爲本地地址的缺省路由。再使用路由策略使本端向對等體只發送該條缺省路由後,將很大程度地減少網絡路由數量,節省對等體的內存資源與網絡資源。

10. **配置MP-BGP:**傳統的BGP-4只能管理IPv4單播網絡的路由信息,無法支持IPv6、組播等其它網絡的AS間路由的傳播。爲了提供對多種網絡層協議的支持,IETF對BGP-4進行了擴展,形成MP-BGP,目前的MP-BGP標準是RFC4760(Multiprotocol Extensions for BGP-4,BGP-4的多協議擴展)。其中MP-BGP對IPv6網絡的支持特性稱爲BGP4+,對組播網絡的支持特性稱爲MBGP(Multicast BGP)。

華爲CE系列交換機BGP默認參數

display default-parameter bgp

BGP version : 4

EBGP preference : 255

IBGP preference : 255

Local preference : 255

BGP connect-retry : 32s

BGP holdtime : 180s

BGP keepAlive : 60s

EBGP route-update-interval: 30s

IBGP route-update-interval: 15s

Default local-preference : 100

Default MED : 0

IPv4-family unicast : enable

EBGP-interface-sensitive : enable

IBGP-interface-sensitive : disable

Reflect between-clients : enable

Check-first-as : enable

Synchronization : disable

Private-4-byte-as : disable

Nexthop-resolved rules :

​ IPv4-family : unicast(ip)

​ label-route(ip)

​ multicast(ip)

​ vpn-instance(tunnel)

​ vpnv4(ip)

​ IPv6-family : unicast(ip)

​ vpn-instance(tunnel)

​ vpnv6(ip)

​ 6PE(tunnel)

BGP L2VPN-family EVPN :

​ BUM Flow Forward Mode : Ingress Replication

​ Tunnel Type : VXLAN

配置BGP的基本功能

(可選)配置BGP 4字節AS號的顯示格式

缺省情況下,BGP的4字節AS號的顯示格式爲點分形式(即x.y格式)。如果用戶習慣於使用整數形式的4字節AS號,那麼可以執行該配置任務將4字節AS號的顯示格式從點分形式切換到整數形式。

整數形式的4字節AS號和點分形式的4字節AS號的換算關係是:整數形式的4字節AS號=x65536+y,例如點分形式的4字節AS號2.3,對應的整數形式的4字節AS號爲:265536+3=131075。

as-notation plain命令用來配置BGP 4字節AS號的顯示格式爲整數形式。

undo as-notation plain命令用來配置BGP 4字節AS號的顯示格式爲點分形式。

缺省情況下,BGP 4字節AS號的顯示格式爲點分形式,即x.y格式。

啓動BGP進程

bgp命令用來啓動BGP,進入BGP視圖。

undo bgp命令用來關閉BGP。

缺省情況下,BGP是關閉的。

配置BGP對等體

peer { ipv4-address | ipv6-address } as-number as-number

配置BGP對等體組

在大型BGP網路中,對等體的數目衆多,配置和維護極爲不便。對於存在相同配置的BGP對等體,可以將它們加入一個BGP對等體組進行批量配置,簡化管理的難度,並提高路由發佈效率。

當需要將EBGP對等體加入同一對等體組時,需先配置BGP對等體,再加入組中。

group group-name [ external | internal ],創建對等體組

執行命令peer { ipv4-address | ipv6-address } group group-name,向對等體組中加入對等體。

配置BGP引入路由

BGP協議本身不發現路由,因此需要將其他路由(如IGP路由等)引入到BGP路由表中,從而將這些路由在AS之內和AS之間傳播。BGP協議支持通過以下兩種方式引入路由:

Import方式:按協議類型,將RIP路由、OSPF路由、ISIS路由等協議的路由引入到BGP路由表中。爲了保證引入的IGP路由的有效性,Import方式還可以引入靜態路由和直連路由。

Network方式:逐條將IP路由表中已經存在的路由引入到BGP路由表中,比Import方式更精確。

Bgp 100

​ Ipv4-family unicast

​ 行命令import-route protocol [ process-id ] [ med med | route-policy route-policy-name ] *,配置BGP引入其他協議的路由。

執行命令network ipv4-address [ mask | mask-length ] [ route-policy route-policy-name ],或network ipv6-address prefix-length [ route-policy route-policy-name ],配置BGP逐條引入IPv4路由表或IPv6路由表中的路由。

配置BGP安全性

配置MD5認證

BGP使用TCP作爲傳輸協議,只要TCP數據包的源地址、目的地址、源端口、目的端口和TCP序號是正確的,BGP就會認爲這個數據包有效,但數據包的大部分參數對於攻擊者來說是不難獲得的。爲了保證BGP協議免受攻擊,可以在BGP鄰居之間使用MD5認證或者Keychain認證來降低被攻擊的可能性。其中MD5算法配置簡單,配置後生成單一密碼,需要人爲干預纔可以更換密碼。

BGP使用TCP作爲傳輸層協議,爲提高BGP的安全性,可以在建立TCP連接時進行MD5認證。BGP的MD5認證並不能對BGP報文認證,它只是爲TCP連接設置MD5認證密碼,由TCP完成認證。如果認證失敗,則不建立TCP連接。

peer 10.1.1.2 password cipher Huawei

如果對等體上使用peer password命令配置了認證,對等體組也使用peer password命令配置了認證,現在要將對等體加入對等體組,並且要求對等體繼承組的認證方式,建議先使用undo peer password命令刪除對等體的配置,然後使用peer group命令講對等體加入對等體組。

配置BGP路由選路和負載負擔

配置BGP協議優先級

由於交換機上可能同時運行多個動態路由協議,就存在各個路由協議之間路由信息共享和選擇的問題。系統爲每一種路由協議設置一個缺省優先級。在不同協議發現同一條路由時,優先級高的路由將被優選。

執行命令preference { external internal local | route-policy route-policy-name },設定BGP的協議優先級。

缺省情況下,BGP的協議優先級爲255。

配置優先級的值越小,優先級越高。

BGP有三種路由:

從外部對等體學到的路由(EBGP)

從內部對等體學到的路由(IBGP)

本地產生的路由(Local Originated),是指通過聚合命令(summary automatic自動聚合和aggregate手動聚合)所聚合的路由。

可以爲這三種路由設定不同的優先級。

另外,還可以通過應用路由策略,爲符合匹配條件的特定路由配置優先級。對於不符合匹配條件的路由,則使用缺省優先級。

配置Next_Hop屬性

當ASBR將從EBGP鄰居學到的路由轉發給IBGP鄰居時,默認不修改下一跳。IBGP鄰居收到該路由後,會發現下一跳不可達,於是將該路由設爲非活躍路由,不通過該路由指導流量轉發。當希望IBGP鄰居通過該路由指導流量轉發時,可以在ASBR上配置向IBGP對等體(組)轉發路由時,將自身地址作爲下一跳。這時,IBGP鄰居收到ASBR從EBGP鄰居學習來的路由後,發現下一跳可達,於是將路由設爲活躍路由。

當BGP路由發生變化時,BGP需要對非直連的下一跳重新進行迭代。如果不對迭代後的路由進行任何限制,則BGP可能會將下一跳迭代到一個錯誤的轉發路徑上,從而造成流量丟失。此時,可配置BGP按路由策略迭代下一跳,避免流量丟失。

執行命令peer { ipv4-address | group-name | ipv6-address } next-hop-local,配置BGP設備向IBGP對等體(組)發佈路由時,把下一跳地址設爲自身的IP地址。

缺省情況下:

BGP向EBGP對等體通告路由時,將下一跳屬性設爲自身與對等體相連的接口地址。

BGP從EBGP向IBGP對等體通告非標籤路由時,不改變下一跳屬性,通告標籤路由時,將下一跳屬性改爲自身與對等體相連的接口地址。

BGP從IBGP向IBGP對等體通告路由時,不改變下一跳屬性。

BGP將本地始發路由發佈給IBGP對等體時,將下一跳屬性設爲自身與對等體相連的接口地址。

執行peer next-hop-local命令後,設備向IBGP對等體/對等體組通告路由時,把下一跳屬性設爲自身的IP地址。

peer next-hop-local命令僅應用於IBGP對等體間。

nexthop third-party命令用來配置在特定場景下,BGP Speaker向對等體發佈路由時,不修改下一跳地址。這些特定場景包括:

從直連鄰居學來的路由,發送給直連EBGP鄰居,原始下一跳與本地和對端建立BGP鄰居關係的接口地址在同一網段,且直連接口均爲廣播口;

本地引入的路由,發送給直連IBGP或EBGP鄰居,引入路由迭代下一跳與本地和對端建立BGP鄰居關係的接口地址在同一網段,且直連接口均爲廣播口。

undo nexthop third-party命令用來恢復缺省設置。

缺省情況下:

從直連鄰居學來的路由,發送給直連EBGP鄰居時,會把該路由信息的下一跳屬性設置爲本地與對端建立BGP鄰居關係的接口地址;

本地引入的路由,發送給直連IBGP或EBGP鄰居時,會把該路由信息的下一跳屬性設置爲本地與對端建立BGP鄰居關係的接口地址。

配置BGP路由信息的首選值

協議首選值(PrefVal)是華爲設備的特有屬性,該屬性僅在本地有效。當BGP路由表中存在到相同目的地址的路由時,將優先選擇協議首選值高的路由

peer { group-name | ipv4-address | ipv6-address } preferred-value value 整數形式,取值範圍是0~65535。

爲從指定對等體學來的所有路由配置首選值。

缺省情況下,從對等體學來的路由的初始首選值爲0。

配置本機缺省Local_Pref屬性

Local_Pref屬性用於判斷流量離開AS時的最佳路由。當BGP的設備通過不同的IBGP對等體得到到AS外的目的地址相同但下一跳不同的多條路由時,將優先選擇Local_Pref屬性值較高的路由。

default local-preference命令用來配置BGP的缺省本地優先級。缺省情況下,BGP本地優先級的值爲100。

配置AS_Path屬性

AS_Path屬性按矢量順序記錄了某條路由從本地到目的地址所要經過的所有AS編號。配置不同的AS_Path屬性功能,可以實現靈活的路由選路。

缺省情況下,AS_Path屬性內AS_Path數量作爲BGP選路條件。當不需要AS_Path屬性作爲選路條件時,可以配置不將AS_Path屬性作爲選路條件。

缺省情況下,BGP通過AS號檢測路由環路。但在Hub and Spoke組網方式下,爲保證路由能夠正確傳遞,從Hub-CE發佈私網路由到Spoke-CE途中經過的相關BGP對等體需要配置允許AS_Path中AS號重複1次的路由通過。

公有AS號可以直接在Internet上使用,私有AS號直接發佈到Internet上可能造成環路現象。爲了解決上述情況,可以在把路由發佈到Internet前,配置發送EBGP更新報文時,AS_Path屬性中僅攜帶公有AS編號。

在重構AS_Path或聚合生成新路由時,可以對AS_Path中的AS號最大個數予以限制。配置AS_Path屬性中AS號的最大個數後,接收路由時會檢查AS_Path屬性中的AS號是否超限,如果超限則丟棄路由。

缺省情況下,一個設備只支持一個BGP進程,即只支持一個AS號。但是在某些特殊情況下,例如網絡遷移更換AS號的時候來爲了保證網絡切換的順利進行,可以爲指定對等體設置一個僞AS號。

缺省情況下,設備會檢查所有EBGP對等體發來的更新消息中AS_Path列表的第一個AS號,確認第一個AS號必須是該EBGP對等體所在的AS。否則,該更新信息被拒絕,EBGP連接中斷。如果不需要設備檢查所有EBGP對等體發來的更新消息中AS_Path列表的第一個AS號,可以去使能此功能。

apply as-path

命令用來在路由策略中配置改變BGP路由的AS_Path屬性的動作。

apply as-path { { as-number-plain | as-number-dot } &<1-63> { additive | overwrite | delete } | none overwrite }

當BGP路由需要改變AS_Path屬性來參與路由選擇的競爭時,可以應用包含apply as-path命令的路由策略,改變匹配成功的BGP路由的AS_Path屬性。

AS_Path屬性是BGP的私有屬性,記錄了某條路由從本地到目的地址所要經過的所有AS編號,通過應用AS_Path屬性可以控制路由選擇及防止路由環路。當到達同一目的地存在多條路由時,BGP會比較路由的AS_Path屬性,AS_Path列表較短的路由將被認爲是最佳路由。

配置此命令後,符合匹配條件的BGP路由的AS_Path列表將會改變。假設原來AS_Path爲(30,40,50),在符合匹配條件的情況下:

如果配置了apply as-path 60 70 80 additive命令,則AS_Path列表更改爲(60,70,80,30,40,50)。這種配置一般用於調整使路由不被優選。

如果配置了apply as-path 60 70 80 overwrite命令,則AS_Path列表更改爲(60,70,80)。更改AS_Path的應用比較靈活,主要有以下幾種情況:

隱藏路由的真實路徑信息。比如,AS_Path列表更改爲(60,70,80)之後,路由就丟失了原來攜帶的AS_Path路徑信息(30,40,50)。

用於形成負載分擔。比如,設備收到兩條路由,目的地址都是10.1.0.0/16這個網絡,其中一條路由的AS_Path爲(60,70,80),另一條路由的AS_Path爲(30,40,50),如果把AS_Path(30,40,50)更改爲(60,70,80),那麼這兩條路由就有可能形成負載分擔。

如果配置了as-path-limit命令,接收路由時會檢查AS_Path屬性中的AS號是否超限,如果超限則丟棄路由。這樣對於AS_Path較長的路由,在接收之前,可以把AS_Path替換成較短的AS_Path。例如原來的AS_Path爲(60,70,80,65001,65002,65003),可以配置apply as-path 60 70 80 overwrite命令,把AS_Path列表更改爲(60,70,80),縮短AS_Path的長度,防止路由由於AS號超限而被丟棄。

縮短AS_Path長度,使路由被優選,把流量引導向本自治系統。

如果配置了apply as-path none overwrite命令,則AS_Path列表更改爲空。BGP在選路時,如果AS_Path列表爲空,AS_Path長度按照0來處理。通過清空AS_Path,不但可以隱藏真實的路徑信息,還可以縮短AS_Path長度,使路由被優選,把流量引導向本自治系統。

bestroute as-path-ignore

bestroute as-path-ignore命令用來配置BGP在選擇最優路由時忽略AS路徑屬性。

缺省情況下,BGP將AS路徑屬性作爲選擇最優路由的一個條件。

配置該命令後,BGP將不比較AS路徑的長度。缺省情況下,長度較小者優先。

執行命令bestroute as-path-ignore之後,AS_Path屬性不作爲BGP選路條件。

as-path-limit配置AS_Path屬性中AS號的最大個數。

缺省情況下,AS_Path屬性中AS號的最大個數是255。

配置MED屬性

MED屬性相當於IGP使用的度量值(Metrics),它用於判斷流量進入AS時的最佳路由。當一個運行BGP的設備通過不同的EBGP對等體得到目的地址相同但下一跳不同的多條路由時,在其它條件相同的情況下,將優先選擇MED值較小者作爲最佳路由。

執行命令default med med,配置缺省MED值。

缺省情況下,MED的值爲0。

執行命令bestroute med-none-as-maximum,設置當路由沒有MED值時將其作爲最大值處理。

缺省情況下,當路由屬性中沒有MED值時,BGP在選路時將使用缺省MED值。

執行命令compare-different-as-med,允許BGP比較屬於任意AS的EBGP對等體的路由的MED值。

缺省情況下,BGP只比較屬於同一AS的EBGP對等體的路由的MED屬性值

執行命令bestroute med-plus-igp [ igp-multiplier igp-multiplier | med-multiplier med-multiplier ] *,配置BGP在需要比較MED值來選擇最優路由時,將MED值與IGP Metric分別乘對應係數相加作爲結果進行比較。

缺省情況下,MED值與IGP Metric作爲單獨的BGP選路條件參與選路。

配置BGP團體屬性

團體屬性是BGP的私有屬性,在BGP對等體之間傳播,且不受AS的限制。利用團體屬性可以使多個AS中的一組BGP設備共享相同的策略,從而簡化路由策略的應用和降低維護管理的難度。BGP設備可以在發佈路由時,新增或者改變路由的團體屬性。

apply community命令用來在路由策略中配置改變BGP路由團體屬性的動作。

apply community { community-number | aa:nn | internet | no-advertise | no-export | no-export-subconfed } &<1-32> [ additive ]

表示刪除路由的所有團體屬性。 -
community-number | aa:nn 指定團體屬性中的團體號。一條命令中最多可以配置32個團體號。 如果不配置internetno-export-subconfedno-advertiseno-export,則community-numberaa:nn一共可以指定32個。 如果配置internetno-export-subconfedno-advertiseno-export中的一個,則community-numberaa:nn一共可以指定31個。 如果配置internetno-export-subconfedno-advertiseno-export中的兩個,則community-numberaa:nn一共可以指定30個。 如果配置internetno-export-subconfedno-advertiseno-export中的三個,則community-numberaa:nn一共可以指定29個。 如果配置internetno-export-subconfedno-advertiseno-export,則community-numberaa:nn一共可以指定28個。 整數形式,community-number的取值範圍是0~4294967295,aann的取值範圍都是0~65535。
internet 表示可以向任何對等體發送匹配的路由。缺省情況下,所有的路由都屬於Internet團體。 -
no-advertise 表示不向任何對等體發送匹配的路由。即收到具有此屬性的路由後,不能發佈給任何其他的BGP對等體。 -
no-export 表示不向AS外發送匹配的路由,但發佈給其它子自治系統。即收到具有此屬性的路由後,不能發佈到本地AS之外。 -
no-export-subconfed 表示不向AS外發送匹配的路由,也不發佈給其它子自治系統。即收到具有此屬性的路由後,不能發佈給任何其他的子自治系統。 -
additive 表示追加路由的團體屬性。

路由策略中配置apply community命令,則通過該策略的BGP路由,其團體屬性將按照策略中的配置進行相應變更。

假設原BGP路由的團體屬性爲30,在符合過濾條件的情況下,替換或追加AS的規則舉例如下:

如果配置了apply community 100命令,則團體屬性更改爲100。

如果配置了apply community 100 150命令,則團體屬性更改爲100,150。

如果配置了apply community 100 150 additive命令,則團體屬性更改爲30,100,150。

如果配置了apply community none命令,則BGP路由的團體屬性被刪除。

配置BGP負載分擔

在大型網路中,到達同一目的地通常會存在多條有效路由,但是BGP只將最優路由發佈給對等體,這一特點往往會造成很多流量負載不均衡的情況。通過配置BGP負載分擔,可以流量負載均衡,減少網絡擁塞。

一般情況下,只有“BGP選擇路由的策略”所描述的前8個屬性完全相同,BGP路由之間才能相互等價,實現BGP的負載分擔。但路由負載分擔的規則也可以通過配置來改變,如忽略路由AS-Path屬性的比較,但這些配置需要確保不會引起路由環路。

公私網互引路由和本地交叉路由不能進行負載分擔。

如果實現了BGP負載分擔,則不論是否配置了peer next-hop-local命令,本地設備向IBGP對等體組發佈路由時都先將下一跳地址改變爲自身地址。

maximum load-balancing命令用來設置形成負載分擔的等價路由的最大條數。

整數形式,取值範圍是1~64

應用場景

配置該命令可以使多條BGP等價路由形成負載分擔,以達到負載均衡的目的,實現網絡資源的合理利用。

配置該命令後,滿足如下所有條件的多條BGP路由會成爲等價路由,形成負載分擔:

  • 原始下一跳不相同;
  • 首選值(PrefVal)相同;
  • 本地優先級(Local_Pref)相同;
  • 都是聚合路由,或者都不是聚合路由;
  • Origin類型(IGP、EGP、Incomplete)相同;
  • MED值相同;
  • 都是EBGP路由或都是IBGP路由;
  • AS內部IGP的Metric相同;
  • AS_Path屬性完全相同。

配置maximum load-balancing ebgp number命令後,僅EBGP路由形成負載分擔;配置maximum load-balancing ibgp number命令後,僅IBGP路由形成負載分擔。不配置[ ebgp | ibgp ]參數時,EBGP路由和IBGP路由都可以形成負載分擔,且形成負載分擔的路由條數相同。

缺省情況下,執行maximum load-balancing number命令後,BGP在向對等體發佈路由時,無論該路由是否形成負載分擔,都將下一跳修改爲自己。配置ecmp-nexthop-changed參數,可以使BGP只在發佈形成負載分擔的路由時才修改下一跳爲自己;而在發佈沒有形成負載分擔的路由時,不對下一跳作特殊處理,即原始下一跳與沒有配置負載分擔時發佈的下一跳保持一致。

控制BGP路由的發佈和接收

控制BGP路由信息的發佈

BGP路由表路由數量通常比較大,傳遞大量的路由對設備來說是一個很大的負擔,爲了減小路由發送規模,需要對發佈的路由進行控制,只發送自己想要發佈的路由或者只發布對等體需要的路由。另外,到達同一個目的地址,可能存在多條路由,這些路由分別需要穿越不同的AS,爲了把業務流量引導向某些特定的AS,也需要對發佈的路由進行篩選。

配置BGP對全局發佈的路由信息進行過濾。

基於訪問控制列表ACL:filter-policy { acl-number | acl-name acl-name } export [ protocol [ process-id ] ]或者filter-policy { acl6-number | acl6-name acl6-name } export [ protocol [ process-id ] ]

基於地址前綴列表:filter-policy ip-prefix ip-prefix-name export [ protocol [ process-id ] ]或者filter-policy ipv6-prefix ipv6-prefix-name export [ protocol [ process-id ] ]

控制BGP路由信息的接收

當設備遭到惡意攻擊或者網絡中出現錯誤配置時,會導致BGP從鄰居接收到大量的路由,從而消耗大量設備的資源。因此管理員必須根據網絡規劃和設備容量,對運行時所使用的資源進行限制。BGP提供了基於對等體的路由控制,限定鄰居發來的路由數量,這樣可以避免上述問題。

置BGP對從全局接收的路由信息進行過濾。

基於訪問控制列表ACL:filter-policy { acl-number | acl-name acl-name } import或者filter-policy { acl6-number | acl6-name acl6-name } import

基於地址前綴列表:filter-policy ip-prefix ip-prefix-name import或者filter-policy ipv6-prefix ipv6-prefix-name import

配置BGP軟復位

BGP的入口策略改變後,爲了使新的策略立即生效,可以復位BGP連接,但這樣會造成短暫的BGP連接中斷。BGP支持手工對BGP連接進行軟復位,可在不中斷BGP連接情況下完成路由表的刷新。對於不支持軟復位的BGP對等體,可以同時配置保留該對等體的所有原始路由功能,在不復位BGP連接的情況下完成路由表的刷新。

對於支持Route-refresh能力的BGP對等體,同時配置手工對BGP連接進行軟復位,可在不中斷BGP連接情況下完成路由表的刷新。

peer { group-name | ipv4-address } capability-advertise { 4-byte-as | route-refresh | conventional }

peer ipv6-address capability-advertise { 4-byte-as | route-refresh }

peer capability-advertise命令用來使能BGP的發佈可選能力。缺省情況下,BGP路由刷新功能和4字節AS號功能處於使能狀態。

refresh bgp命令用來手工對BGP連接進行軟復位。

對於鄰居是支持Route-refresh的設備,可以執行refresh bgp命令手工對BGP連接進行軟復位,BGP軟復位可以在不中斷BGP連接的情況下重新刷新BGP路由表,並應用新的策略。

前置條件

配置BGP軟復位要求BGP對等體支持Route-refresh能力。

peer keep-all-routes命令用來保存自BGP連接建立起來之後的所有來自指定對等體(組)的BGP路由更新信息。

缺省情況下,只保存來自對等體的通過已配置入口策略的BGP路由更新信息。

應用場景

BGP的入口策略改變後,爲了使新的策略立即生效,可以復位BGP連接,但這樣會造成短暫的BGP連接中斷。對於不支持Route-Refresh能力的BGP對等體,可以配置peer keep-all-routes命令,保留該對等體的所有原始路由,這樣不需要復位BGP連接即可完成路由表的刷新。

注意事項

如果交換機不支持Route-refresh能力,則需要在本地和對等體上均配置該命令。第一次配置peer keep-all-routes命令後會導致與對等體會話重新連接。

如果交換機支持Route-refresh能力,配置該命令後,不會導致與對等體的會話重新連接,但交換機通過執行refresh bgp命令刷新路由表功能將不會生效。

執行keep-all-routes命令後,再執行undo peer keep-all-routes命令不會生效。此時,需要先執行undo keep-all-routes命令,再執行peer keep-all-routes命令纔可以配置此功能。

配置調整BGP網絡的收斂速度

配置BGP連接重傳定時器

BGP發起TCP連接後,如果成功建立起TCP連接,則關閉連接重傳定時器。如果TCP連接建立不成功,則會在連接重傳定時器超時後重新嘗試建立連接。

設置較小的連接重傳定時器,可以減少等待下次連接建立的時間,加快連接失敗後重新建立的速度。

設置較大的連接重傳定時器,可以減小由於鄰居反覆震盪引起的路由振盪。

BGP支持在全局或者單個對等體(組)配置連接重傳定時器。定時器生效的優先級是單個對等體高於對等體組,對等體組高於全局。

timer connect-retry命令用來配置全局連接重傳時間間隔。

缺省情況下,連接重傳時間間隔是32秒。

配置BGP存活時間和保持時間定時器

BGP的Keepalive消息用於維持BGP連接關係。

減小存活時間和保持時間,BGP可以更快速的檢測到鏈路的故障,有利於BGP網絡快速收斂。但是過短的保持時間會導致網絡中的Keepalive消息會增多,使得設備的負擔加重,並且會佔用一定的網絡帶寬。

增大存活時間和保持時間,可以減輕設備負擔和減少網絡帶寬的佔用。但是過長的保持時間會導致網絡中的Keepalive消息減少,使得BGP不能及時檢測到鏈路狀態的變化,不利於BGP網絡快速收斂,還可能會造成流量損失。

BGP支持在全局或者單個對等體(組)配置存活時間和保持時間定時器。定時器生效的優先級單個對等體高於對等體組,對等體組高於全局。

timer命令用來配置BGP的存活時間與保持時間間隔。

缺省情況下,存活時間爲60秒,保持時間爲180秒。

配置更新報文定時器

BGP協議不會定期更新路由表,當BGP路由發生變化時,會通過Update消息增量地更新路由表。

減小更新報文時間,BGP可以更快速的檢測到路由變化,有利於BGP網絡快速收斂。但是過短的更新報文時間會導致網絡中的Update消息會增多,使得設備的負擔加重,並且會佔用一定的網絡帶寬。

增大更新報文時間,可以減輕設備負擔和減少網絡帶寬的佔用,避免不必要的路由震盪。但是過長的保持時間會導致網絡中的Update消息減少,使得BGP不能及時檢測到路由的變化,不利於BGP網絡快速收斂,還可能會造成流量損失。

peer route-update-interval命令用來配置向對等體(組)發送相同路由前綴更新報文(Update報文)的時間間隔。

缺省情況下,IBGP對等體的路由更新時間間隔爲15秒,EBGP對等體的路由更新時間間隔爲30秒。

配置EBGP連接快速復位

EBGP連接快速復位功能缺省情況下是使能的,目的是爲了使BGP協議不必等待保持時間定時器超時,而立即快速響應接口故障,刪除接口上的EBGP直連會話,便於BGP快速收斂。

但是如果EBGP連接所使用的接口狀態反覆變化,EBGP會話就會反覆重建與刪除,造成網絡震盪。這時,可以去使能EBGP連接快速復位功能。BGP協議會等待保持時間定時器超時,纔會刪除接口上的EBGP直連會話,這樣就在一定程度上抑制了BGP網絡震盪,同時在一定程度上節約了網絡帶寬。

執行命令undo ebgp-interface-sensitive,去使能EBGP連接快速復位。

EBGP連接快速復位功能缺省情況下是使能的。

接口故障恢復後,BGP協議依靠自身狀態機機制來恢復會話。

該命令適用於EBGP連接所使用的接口狀態不斷變化的場合。如果接口狀態恢復穩定,建議立即執行ebgp-interface-sensitive命令恢復缺省配置,使能EBGP連接快速復位功能。

配置BGP路由震盪抑制

路由振盪(Route flapping)指路由表中的某條路由反覆消失和重現。一般情況下,BGP都應用於複雜的網絡環境中,路由變化十分頻繁。而頻繁的路由振盪會消耗大量的帶寬資源和CPU資源,嚴重時會影響到網絡的正常工作。通過配置EBGP或者IBGP路由振盪抑制功能可防止持續路由振盪帶來的不利影響。

BGP可以按策略區分路由,對不同的路由採用不同的Dampening參數進行抑制。例如,實際網絡中,對掩碼較長的路由設置較長的抑制時間,而對掩碼較短的(例如8位掩碼長度)路由,則採用相對較短的抑制時間。

dampening命令用來使能BGP路由振盪抑制或修改各種BGP路由振盪抑制參數。

缺省情況下,BGP路由振盪抑制未使能。

應用場景

BGP振盪抑制使用懲罰值來衡量一條路由的穩定性,懲罰值越高則說明路由越不穩定。路由每發生一次振盪,即交換機收到該路由的Withdraw報文時,BGP便會給此路由增加一定的懲罰值(1000),收到路由更新時也會給此路由增加一定的懲罰值(500)。

當懲罰值超過抑制閾值時,此路由被抑制,不加入到IP路由表中,交換機也不再向其他BGP對等體發佈更新報文。如果該路由被打上d標誌,說明交換機最後收到的是Update報文;如果該路由被打上h標誌,說明交換機最後收到的是Withdraw報文。懲罰值增加到一定程度之後,便不會再增加,這個值稱爲懲罰上限值。

同時,被抑制的路由每經過一段時間,懲罰值便會減少一半。如果是d標誌的路由,當懲罰值降到再使用閾值時,此路由會被去掉d標記,變爲可用並被優選後加入到IP路由表中,同時向其他BGP對等體發佈更新報文。如果是h標誌的路由,當懲罰值降爲0時,此路由會從BGP路由表中刪除。

配置BGP路由振盪抑制功能後,使用命令行中的任何參數都可以起到抑制振盪路由的作用,調整參數的目的是按照不同的抑制時間訴求進行調整。若想增加振盪路由的抑制時間,可以通過如下方式實現(反之,則可以減小抑制時間):

增加ceiling的取值;

增加half-life-reach的取值;

減小reuse的取值。

d標誌和h標誌可以通過命令display bgp routing-table label查看,分別表示該路由已經被抑制和曾經被抑制。

注意事項

dampening命令爲覆蓋式命令。

執行dampening命令後,系統抑制不穩定的路由,不將這類路由加入到BGP路由表中,也不將這類路由向其他BGP對等體發佈。

配置BGP路由振盪抑制時,需注意如下事項:

所指定的reusesuppressceiling三個閾值是依次增大的,即必須滿足:reuse<suppress<ceiling

根據公式MaxSuppressTime=half-life-reach×60×(ln(ceiling/reuse)/ln(2)),如果MaxSuppressTime小於1就不能抑制。所以要保證MaxSuppressTime大於等於1,即必須滿足:ceiling/reuse足夠大。

配置BGP可靠性

配置BFD For BGP

BGP協議通過週期性的向對等體發送Keepalive報文來實現鄰居檢測。但這種機制檢測到故障所需時間比較長,超過1秒鐘。當數據達到吉比特速率級時,這麼長的檢測時間將導致大量數據丟失,無法滿足電信級網絡高可靠性的需求。爲了解決上述問題,BGP協議引入了BGP與BFD聯動功能。BFD檢測是毫秒級,可以在50ms內通報BGP對等體間鏈路的故障,因此能夠提高BGP路由的收斂速度,保障鏈路快速切換,減少流量損失。

當對等體加入了對等體組,且這個對等體組使能了BFD特性,對等體將會繼承該對等體組的BFD特性,創建BFD會話。如果不希望對等體從對等體組繼承BFD特性,可以配置peer bfd block命令,阻止對等體從對等體組中繼承BFD功能。

默認情況下,華爲設備之間IBGP爲多跳會話。建議華爲設備和默認IBGP爲單跳會話的其他廠商設備對接時,只配置IGP與BFD聯動會話或者只配置IBGP與BFD聯動會話。

peer bfd enable命令用來使能對等體(組)的BFD功能。

缺省情況下,對等體(組)的BFD功能未使能。

BGP Auto FRR

在傳統的IP網絡上,通常從檢測到鏈路故障發生到路由系統完成路由收斂,要經歷幾秒鐘的時間。對於網絡上某些對延時、丟包等非常敏感的業務來說,秒級的收斂時間是不能忍受的,因爲這將導致當前業務的中斷。比如VoIP業務所能容忍的網絡中斷時間爲毫秒級。BGP Auto FRR功能在當物理層或鏈路層檢測到故障後,實現毫秒級收斂,降低對承載業務的影響。

auto-frr命令用來使能BGP Auto FRR功能。

配置BGP GR

當BGP協議重啓時會導致對等體關係重新建立和轉發中斷,使能平滑重啓GR(Graceful Restart)功能後可以避免流量中斷。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5aaV8Nb5-1587186524470)(file:///C:/Users/cao/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)] 說明:

目前,設備僅支持GR Helper,GR Restart的功能由新功能NSR代替,NSR無需配置。

執行命令graceful-restart,使能BGP協議的GR功能。

缺省情況下,BGP協議的GR功能未使能

配置BGP路由聚合

配置BGP自動聚合

IPv4網絡中BGP支持自動聚合和手動聚合兩種聚合方式,自動聚合的路由優先級低於手動聚合的路由優先級。

summary automatic命令用來使能對本地引入的路由進行自動聚合功能。

在BGP-IPv4單播地址族視圖下,配置summary automatic命令對公網BGP本地引入的路由進行自動聚合。

在BGP-VPN實例IPv4地址族視圖下,配置summary automatic命令對該私網BGP本地引入的路由進行自動聚合。

summary automatic命令對BGP引入的路由進行聚合,引入的路由可以是直連路由、靜態路由、RIP路由、OSPF路由、IS-IS路由。配置該命令後,BGP將按照自然網段聚合路由(如10.1.1.0/24和10.2.1.0/24將聚合爲A類地址10.0.0.0/8),並且BGP只向對等體發送聚合後的路由。這樣可以減少路由信息的數量。

配置BGP手動聚合

aggregate命令用來在BGP路由表中創建一條聚合路由。

aggregate ipv4-address { mask | mask-length } [ as-set | attribute-policy route-policy-name1 | detail-suppressed | origin-policy route-policy-name2 | suppress-policy route-policy-name3 ] *

aggregate ipv6-address prefix-length [ as-set | attribute-policy route-policy-name1 | detail-suppressed | origin-policy route-policy-name2 | suppress-policy route-policy-name3 ] *

undo aggregate ipv4-address { mask | mask-length } [ as-set | attribute-policy route-policy-name1 | detail-suppressed | origin-policy route-policy-name2 | suppress-policy route-policy-name3 ] *

undo aggregate ipv6-address prefix-length [ as-set | attribute-policy route-policy-name1 | detail-suppressed | origin-policy route-policy-name2 | suppress-policy route-policy-name3 ] *

參數 參數說明 取值
ipv4-address 指定聚合路由的IPv4地址。 點分十進制形式。
mask 指定聚合路由的網絡掩碼。 點分十進制形式。
mask-length 指定聚合路由的網絡掩碼長度。 整數形式,取值範圍是0~32。
ipv6-address 指定聚合路由的IPv6地址。 32位16進制數,格式爲X:X:X:X:X:X:X:X。
prefix-length 指定聚合IPv6路由的前綴長度。 整數形式,取值範圍是0~128。
as-set 指定生成具有AS-SET的路由。 -
attribute-policy route-policy-name1 指定設置聚合後路由的屬性策略名稱。 字符串形式,區分大小寫,不支持空格,長度範圍是1~40。當輸入的字符串兩端使用雙引號時,可在字符串中輸入空格。
detail-suppressed 指定僅通告聚合路由。 -
origin-policy route-policy-name2 指定允許生成聚合路由的策略名稱。 字符串形式,區分大小寫,不支持空格,長度範圍是1~40。當輸入的字符串兩端使用雙引號時,可在字符串中輸入空格。
suppress-policy route-policy-name3 指定抑制指定路由通告的策略名稱。 字符串形式,區分大小寫,不支持空格,長度範圍是1~40。當輸入的字符串兩端使用雙引號時,可在字符串中輸入空格。

應用場景

BGP路由聚合分爲手動聚合和自動聚合兩種,aggregate命令用於實現手動聚合。該命令可以對BGP本地路由表中的路由進行聚合。手動聚合後的路由的優先級高於自動聚合。

如果聚合路由中所包含的具體路由各Origin屬性不相同,那麼聚合路由的Origin屬性按照優先級igp > egp > incomplete爲準。聚合路由會攜帶原來所有具體路由中的團體屬性。

通過設置關鍵字as-set,可創建一條聚合路由,該路由的自治系統AS(Autonomous System)路徑包含了具體路由的AS路徑信息。若需聚合較多AS路徑時,請慎用此關鍵字,因爲當具體路由的變化較頻繁時,會導致路由振盪。

關鍵字detail-suppressed抑制該聚合路由所包含的所有具體路由,只發布該聚合路由。生成的聚合路由帶Atomic-aggregate屬性,並且不能攜帶原具體路由的團體屬性。

關鍵字suppress-policy能產生聚合路由,但抑制指定路由的通告。可以用route-policyif-match子句有選擇地抑制一些具體路由,即匹配該策略的路由將被抑制,但其他未通過策略的具體路由仍被通告。也可以通過peer route-policy命令,配置不希望發佈給對等體的策略達到相同效果。

使用關鍵字origin-policy僅在匹配route-policy時才生成聚合路由。

關鍵字attribute-policy可設置聚合路由的屬性。如果在策略中使用命令apply as-path配置了AS_Path屬性,且aggregate命令設置了關鍵字as-set,那麼策略中的apply as-path命令將不會生效。通過peer route-policy命令也可以完成同樣的工作。

配置向對等體發送缺省路由

當對等體的BGP路由表中的多條路由都只是由本端發送時,可以在本端配置向對等體發送缺省路由功能。配置向對等體發送缺省路由功能後,無論本端的路由表中是否存在缺省路由,都向對等體發佈一條下一跳地址爲本地地址的缺省路由,從而很大程度地減少網絡路由數量,節省對等體的內存資源與網絡資源。

peer default-route-advertise命令用來配置BGP設備向對等體(組)發佈缺省路由。

缺省路由一般應用於具有如下特點的網絡中:

存在多個EBGP鄰居,且從每個鄰居都會收到全網路由。

存在多個路由反射器,從每個反射器都會收到全網路由。

網絡未進行負載分擔時,BGP對等體最多隻接收一份活躍的全網路由;實現負載分擔時,BGP對等體接收的活躍路由數量就會翻倍,導致網絡路由數量劇增。在這樣的網絡中,通過配置向BGP對等體僅發佈缺省路由,用缺省路由作負載分擔,可以很大程度地減少網絡路由數量。

配置BMP

BMP(BGP Monitoring Protocol)主要應用在存在監控服務器,需要對網絡中設備的BGP運行狀態進行監控。通過配置BMP,可以對網絡中設備的BGP運行狀態進行實時監控,包括對等體關係的建立與解除、路由信息刷新等。BMP的產生改變了以往只能通過人工查詢方式來獲得設備的BGP運行狀態的狀況,大大提高了網絡監控的效率。

bmp命令用來啓動BMP並進入BMP視圖,或者直接進入BMP視圖。

statistics-timer命令用來配置BMP向監控服務器上報BGP運行狀態統計信息的時間間隔。缺省情況下,BMP向監控服務器上報BGP運行狀態統計信息的時間間隔爲3600s。

session命令用來配置BMP與監控服務器建立TCP連接的會話地址,並與監控服務器建立TCP連接。

tcp命令用來配置BMP與監控服務器建立TCP連接的連接信息。

維護BGP

復位BGP連接

當BGP路由策略(交換機不支持Router Refresh)發生變化後,需要通過復位BGP連接使新的配置生效。

在確認需要復位所有BGP連接後,請在用戶視圖下執行命令reset bgp all

在確認需要復位與指定AS之間的BGP連接後,請在用戶視圖下執行命令reset bgp { as-number-plain | as-number-dot }。

在確認需要復位與指定對等體的BGP連接後,請在用戶視圖下執行命令reset bgp ipv4-address

在確認需要復位所有EBGP連接後,請在用戶視圖下執行命令reset bgp external

在確認需要復位與指定對等體組的BGP連接後,請在用戶視圖下執行命令reset bgp group group-name

在確認需要復位所有IBGP連接後,請在用戶視圖下執行命令reset bgp internal

在確認需要復位指定對等體間的MBGP連接後,在用戶視圖下執行命令reset bgp multicast peer-address

在確認需要復位所有MBGP連接後,在用戶視圖下執行命令reset bgp multicast all

在確認需要復位同一對等體組內所有對等體間的MBGP連接後,在用戶視圖下執行命令reset bgp multicast group group-name

在確認需要復位外部連接後,在用戶視圖下執行命令reset bgp multicast external

在確認需要復位內部連接後,在用戶視圖下執行命令reset bgp multicast internal

清除BGP統計信息

在確認需要清除路由的振盪統計信息後,請在用戶視圖下執行命令reset bgp flap-info [ regexp as-path-regexp | as-path-filter { as-path-filter-number | as-path-filter-name } | network-address [ mask | mask-length ] ]。

在確認需要清除指定對等體的振盪統計信息後,請在用戶視圖下執行命令reset bgp ipv4-address flap-info

在確認需要清除路由的衰減信息並釋放被抑制的路由後,請在用戶視圖下執行命令reset bgp dampening [ ipv4-address [ mask | mask-length ] ]。

在確認需要清除MBGP路由的衰減信息後,請在用戶視圖下執行命令reset bgp multicast dampening [ ip-address [ mask | mask-length ] ]。

在確認需要清除MBGP路由的振盪統計信息後,請在用戶視圖下執行命令reset bgp multicast flap-info [ ip-address [ mask | mask-length ] | as-path-filter { as-path-list-number | as-path-list-name } | regrexp regrexp ]

華三設備BGP相關配置

配置BGP基本功能

動態創建BGP對等體

設備需要和大量的鄰居建立對等體關係時,如果逐個配置對等體關係,則配置工作量大,新增或者刪除對等體的維護、升級工作難度較大,且容易出錯。

如果設備的鄰居位於同一個網段內,則可以通過BGP動態對等體功能簡化配置。在設備上簡單地配置一個網段地址內的鄰居作爲動態對等體,就可以接受來自該網段內的所有鄰居的連接請求,並與其建立對等體關係。只有當鄰居發起連接請求時,本地纔會維護與該鄰居的對等體關係;否則,不維護對等體關係。BGP動態對等體功能既簡化了配置,又大大降低了維護和升級成本。

配置動態對等體時,設備和鄰居只能有一端配置網段地址,另一端必須配置實際IP地址。

配置EBGP對等體組

根據對等體組中的對等體是否屬於同一個外部AS,EBGP對等體組又可以分爲純EBGP對等體組和混合EBGP對等體組。如果對等體組中的對等體屬於同一個外部AS,該對等體組就是純EBGP對等體組;如果對等體組中的對等體屬於不同外部AS,該對等體組就是混合EBGP對等體組。

用戶有三種方式配置EBGP對等體組:

第一種方式是創建對等體組後,先指定對等體組的AS號,再將對等體加入到對等體組中,該方式下加入的對等體具有相同的AS號,均爲對等體組的AS號。對等體加入對等體組之前可以配置AS號,且爲對等體配置的AS號必須與對等體組的AS號相同。

第二種方式是創建對等體組後,先配置對等體的AS號,再將對等體加入對等體組中。該方式下,對等體組中對等體的AS號可以相同也可以不同。

第三種方式是創建對等體組後,將對等體加入對等體組的同時指定AS號。該方式下,對等體組中對等體的AS號可以相同也可以

group group-name external 創建EBGP對等體組

peer ipv4-address [ mask-length ] group group-name [ as-number as-number ] 向對等體組中添加指定的IPv4 BGP對等體

peer group-name description text (可選)配置對等體組的描述信息

配置建立TCP連接使用的源地址

BGP使用TCP作爲其傳輸層協議。缺省情況下,BGP使用到達BGP對等體的最佳路由出接口的主IP地址或IPv6地址與對等體/對等體組建立TCP連接。在如下場合可以通過本配置指定建立TCP連接使用的源地址或源接口(即採用指定源接口的IP地址/IPv6地址與對等體/對等體組建立TCP連接):

當指定的對等體的IP地址/IPv6地址不是本地路由器與對等體之間直連接口的IP地址/IPv6地址時,需要在對等體上通過本配置將建立TCP連接使用的源接口指定爲對等體IP地址/IPv6地址所在的接口。例如,本端設備通過接口A和對端設備的接口B相連,在本端使用peer x.x.x.x as-number as-number命令將對端指定爲自己的對等體,但是x.x.x.x不是接口B的IP地址時,需要在對端設備上使用peer connect-interface命令配置源接口,指定源接口爲IP地址x.x.x.x所在的接口。

當建立BGP會話的路由器之間存在冗餘鏈路時,如果路由器上的一個接口發生故障,鏈路狀態變爲down,建立TCP連接的源地址可能會隨之發生變化,導致BGP需要重新建立TCP連接,造成網絡震盪。爲了避免該情況的發生,建議網絡管理員將建立TCP連接所使用的源地址配置爲Loopback接口的地址,或將源接口配置爲Loopback接口,以提高TCP連接的可靠性和穩定性。

當BGP對等體之間同時建立多條BGP會話時,如果沒有明確指定建立TCP連接的源地址,可能會導致根據最優路由選擇TCP連接源地址錯誤,並影響BGP會話的建立。如果多條BGP會話基於不同接口的IP地址建立,則建議用戶在配置BGP對等體時,通過配置源接口或源地址明確指定每個BGP會話的TCP連接源地址;如果多條BGP會話基於同一接口的不同IP地址建立,則建議用戶通過配置源地址,明確指定每個BGP會話的TCP連接源地址。

peer { group-name | ipv4-address [ mask-length ] } source-address source-ipv4-address

指定與對等體/對等體組創建BGP會話時建立TCP連接使用的源IP地址

peer { group-name | ipv4-address [ mask-length ] } connect-interface interface-type interface-number

指定與對等體/對等體組創建BGP會話時建立TCP連接使用的源接口

缺省情況下,BGP使用到達BGP對等體的最佳路由出接口的主IP地址與對等體/對等體組建立TCP連接

控制BGP路由信息的發佈與接收

配置BGP路由聚合

在中型或大型BGP網絡中,在向對等體發佈路由信息時,可以配置路由聚合,減少發佈的路由數量,並減小路由表的規模。IPv4 BGP支持自動聚合和手動聚合兩種聚合方式,同時配置時,手動聚合的優先級高於自動聚合的優先級。IPv6 BGP只支持手動聚合。

BGP路由表中創建的聚合路由的出接口爲Null0接口,聚合後可以減少向BGP對等體發佈的路由數目。在使用中應注意不要使這條聚合路由成爲本設備的優選路由,否則會導致報文轉發失敗。如果聚合路由的子網掩碼長度和被聚合的某一條具體路由完全相同,且聚合路由優先級高於具體路由,則聚合路由會成爲優選路由,這種情況下需要通過修改路由優先級等方式,來確保優選的路由爲具體路由。

summary automatic 配置對引入的子網路由進行自動聚合

aggregate ipv4-address { mask-length | mask } [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ] * 在BGP路由表中創建一條聚合路由

配置發佈IP路由表中的最優路由

缺省情況下,BGP發佈BGP路由表中的最優路由,不管該路由在IP路由表中是否爲最優路由。通過本配置可以保證BGP發送出去的路由是IP路由表中的最優路由,以減少BGP發送的路由數量。

advertise-rib-active 在指定地址族視圖下,配置發佈IP路由表中的最優路由

缺省情況下,與BGP實例視圖下的配置保持一致

配置優先發送缺省路由的更新信息

BGP路由器向對等體發送路由更新消息時,不會優先發送缺省路由的更新消息。當BGP鄰居關係斷開時,無法保證優先撤銷缺省路由,如果需要撤銷的路由數量較多,那麼較長時間後才能撤銷缺省路由,造成流量中斷時間較長。配置BGP優先發送缺省路由更新,BGP路由器會將缺省路由作爲第一條更新進行發送,在BGP鄰居關係斷開時,最大限度地減少流量中斷時間。

default-route update-first 配置優先發送缺省路由的更新消息

缺省情況下,不優先發送缺省路由的更新消息

限制從BGP對等體/對等體組接收的路由數量

通過本配置可以避免攻擊者向路由器發送大量的BGP路由,對路由器進行攻擊。

當路由器從指定對等體/對等體組接收的路由數量超過指定的最大值時,可以選擇以下處理方式:

路由器中斷與該對等體/對等體組的BGP會話,不再嘗試重建會話。

路由器保持與該對等體/對等體組的BGP會話,可以繼續接收路由,僅打印日誌信息。

路由器保持與該對等體/對等體組的BGP會話,丟棄超出限制的路由,並打印日誌信息。

路由器中斷與該對等體/對等體組的BGP會話,經過指定的時間後自動與對等體/對等體組重建會話。

執行本配置任務時,還可以指定路由器產生日誌信息的閾值,即路由器接收的路由數量與配置的最大值的百分比達到指定的閾值時,路由器將產生日誌信息。

peer { group-name | ipv4-address [ mask-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] *

配置允許從對等體/對等體組接收的路由的最大數量

缺省情況下,不限制從對等體/對等體組接收的路由數量

配置BGP路由信息的發佈接收策略

配置BGP路由信息的發佈/接收策略前,根據採取的策略,需要配置下列過濾器:

  • 訪問控制列表
  • 地址前綴列表
  • 路由策略
  • AS路徑過濾列表

用戶可以根據需求選擇過濾策略。如果同時配置了幾種過濾策略,則按照如下順序過濾發佈的路由信息:

  • filter-policy export
  • peer filter-policy export
  • peer as-path-acl export
  • peer prefix-list export
  • peer route-policy export

用戶可以根據需求選擇過濾策略。如果同時配置了幾種過濾策略,則按照如下順序過濾接收的路由:

  • filter-policy import
  • peer filter-policy import
  • peer as-path-acl import
  • peer prefix-list import
  • peer route-policy import

配置BGP新增路由發佈速率

網絡中新增路由數量較大時,如果在短時間內發佈大量路由,可能會導致BGP對等體已接收到新增路由並添加對應的轉發表項,本地設備上的轉發表項卻尚未添加,從而導致流量轉發失敗。通過本功能合理地配置BGP發送新增路由的速率可以避免上述情況發生。

請根據設備的性能合理配置BGP發送新增路由的速率,如果設備的性能較高,可以將BGP發送新增路由的速率適當調大;如果設備的性能一般,建議將BGP發送新增路由的速率適當調小。

目前,僅支持對新增IPv4單播和IPv6單播路由的發送速率進行限制。

route-rate-limit rate 配置BGP新增路由發佈速率

缺省情況下,不限制BGP發送新增路由的發佈速率

配置BGP延遲發佈

通過配置當前設備在重啓後延遲發佈路由更新消息,可以保證在重啓時BGP先引入其他鄰居的所有路由信息,然後再優選並向其他設備發佈,以減少設備重啓造成的流量丟失。

配置BGP延遲發佈後,如果需要部分路由前綴不受延遲發佈控制,可以使用路由策略進行控制,通過前綴列表過濾的路由不受延遲發佈的影響。

bgp update-delay on-startup seconds 配置設備在重啓後延遲發佈路由更新消息

缺省情況下,設備重啓後立刻向BGP鄰居發佈路由更新消息

bgp update-delay on-startup prefix-list prefix-list-name

(可選)配置路由策略控制BGP延遲發佈 目前只支持IPv4地址前綴列表

配置設備啓動時爲BGP路由應用啓動策略

設備在啓動時,通過爲BGP路由應用啓動策略,修改發送的BGP路由的屬性值,使得接收端優選其他設備發送的路由,可以減少設備重啓造成的流量丟失。

bgp apply-policy on-startup duration seconds 配置設備在重啓後發送應用啓動策略的路由更新消息的時間

bgp policy on-startup med med-value 配置啓動策略中的MED值 缺省情況下,啓動策略中的MED值爲4294967295

配置BGP路徑的選擇

配置MED屬性

MED用來判斷流量進入AS時的最佳路由。當一個BGP路由器通過不同的EBGP對等體得到目的地址相同但下一跳不同的多條路由時,在其它條件相同的情況下,將優先選擇MED值較小者作爲最佳路由。

default med med-value 配置MED的缺省值 缺省情況下,MED的缺省值爲0

compare-different-as-med 配置允許比較來自不同AS路由的MED屬性值

缺省情況下,不允許比較來自不同AS路由的MED屬性值

bestroute compare-med 配置對來自同一AS的路由進行MED排序優選

缺省情況下,不會對來自同一AS的路由進行MED排序優選

配置AS_Path屬性

bestroute as-path-neglect 配置BGP在選擇最優路由時忽略AS_PATH屬性 缺省情況下,BGP將AS_PATH屬性作爲選擇最優路由的一個條件

peer { group-name | ipv4-address [ mask-length ] } fake-as as-number 爲對等體/對等體組指定一個虛擬的本地自治系統號

配置發送BGP更新消息時AS_Path屬性中不攜帶私有AS號

私有AS號是內部使用的AS號,範圍爲64512~65535。私有AS號主要用於測試網絡,一般情況下不需要在公共網絡中傳播。

通過本配置,可以指定如果向EBGP對等體/對等體組發送的BGP更新消息中AS_PATH屬性只包括私有AS號,則刪除私有AS號後,將BGP更新消息發送給對等體/對等體組。

peer { group-name | ipv4-address [ mask-length ] } public-as-only 配置向指定EBGP對等體/對等體組發送BGP更新消息時只攜帶公有AS號,不攜帶私有AS號

缺省情況下,系統收到EBGP路由後,會檢測路由的第一個AS號。如果此AS號不是EBGP對等體的AS號,且不是私有AS號,則斷開與該對等體的BGP會話。

通過配置ignore-first-as命令,可以忽略對EBGP路由第一個AS號的檢測。

表1-75 配置EBGP不檢測路由的第一個AS號

ignore-first-as 配置不檢測EBGP路由的第一個AS號

配置BGP在選擇最優路由時忽略IGP Metric的比較

從多個鄰居收到多條相同前綴但不同路徑的路由時,BGP需要選擇到達該前綴的最佳路由來指導報文轉發。缺省情況下,BGP會比較這些路由下一跳的IGP路由的Metric值,並優選IGP Metric值最小的路由。

配置了本功能後,BGP在選擇最優路由時忽略IGP Metric的比較。

bestroute igp-metric-ignore 配置BGP在選擇最優路由時忽略IGP Metric的比較

配置SoO屬性

爲BGP對等體/對等體組配置SoO屬性後,從該BGP對等體/對等體組接收路由時設備會爲路由增加SoO屬性,並且向該BGP對等體/對等體組發佈路由時設備會檢查路由的SoO屬性,如果路由中攜帶的SoO屬性與爲對等體/對等體組配置的SoO屬性相同,則不會將該路由發佈給對等體/對等體組,從而避免路由環路。

peer { group-name | ipv4-address [ mask-length ] } soo site-of-origin 爲BGP對等體/對等體組配置SoO屬性

調整和優化BGP網絡

配置BGP會話的存活時間間隔與保持時間

timer keepalive keepalive hold holdtime

peer { group-name | ipv4-address [ mask-length ] } timer keepalive keepalive hold holdtime

缺省情況下,BGP會話的存活時間間隔爲60秒,保持時間爲180秒

配置重新建立BGP會話的時間間隔

timer connect-retry retry-time

peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } timer connect-retry retry-time

缺省情況下,本地路由器與對等體/對等體組之間重新建立BGP會話的時間間隔爲32秒

配置發佈同一路由的時間間隔

peer { group-name | ipv4-address [ mask-length ] } route-update-interval interval

缺省情況下,向IBGP對等體發佈同一路由的時間間隔爲15秒,向EBGP對等體發佈同一路由的時間間隔爲30秒

使能直連EBGP會話快速復位功能

如果沒有使能本功能,則連接直連EBGP對等體的鏈路down後,本地路由器不會立即斷開與EBGP對等體的會話,而是等待會話保持時間(Holdtime)超時後,才斷開該會話。沒有使能本功能時,鏈路震盪不會影響EBGP會話的狀態。

如果使能了本功能,則連接直連EBGP對等體的鏈路down後,本地路由器會立即斷開與EBGP對等體的會話,並重新與該對等體建立EBGP會話,從而實現快速發現鏈路故障,快速重建會話。

ebgp-interface-sensitive 缺省情況下,直連EBGP會話快速復位功能處於使能狀態

使能4字節AS號抑制功能

設備支持4字節的AS號,即AS號取值佔用4字節,取值範圍爲1~4294967295。缺省情況下,設備在與對端設備建立BGP會話時,通過Open消息通告對端設備本端支持4字節的AS號。如果對端設備不支持4字節AS號(只支持2字節AS號),則會導致會話協商失敗。此時,在本端與對端設備之間使能4字節AS號抑制功能,可以使得本端設備通過Open消息向對端設備謊稱自己不支持4字節的AS號,從而確保本端和對端設備之間可以成功建立BGP會話。

peer { group-name | ipv4-address [ mask-length ] } capability-advertise suppress-4-byte-as

缺省情況下, 4字節AS號抑制功能處於關閉狀態

配置BGP的MD5認證

通過爲BGP對等體配置BGP的MD5認證,可以在以下兩方面提高BGP的安全性:

爲BGP建立TCP連接時進行MD5認證,只有兩臺路由器配置的密鑰相同時,才能建立TCP連接,從而避免與非法的BGP路由器建立TCP連接。

傳遞BGP報文時,對封裝BGP報文的TCP報文段進行MD5運算,從而保證BGP報文不會被篡改。

peer { group-name | ipv4-address [ mask-length ] } password { cipher | simple } password

配置BGP負載分擔

通過改變BGP選路規則實現負載分擔時,設備根據balance命令配置的進行BGP負載分擔的路由條數,選擇指定數目的路由進行負載分擔,以提高鏈路利用率。

balance [ ebgp | eibgp | ibgp ] number 配置進行BGP負載分擔的路由條數

缺省情況下,不會進行BGP負載分擔

balance as-path-neglect (可選)配置不同AS_PATH屬性的路由能夠形成BGP負載分擔

缺省情況下,不同AS_PATH屬性的路由之間不能形成BGP負載分擔

balance as-path-relax (可選)配置內容不同但長度相同的AS_PATH屬性的路由能夠形成BGP負載分擔

缺省情況下,內容不同但長度相同的AS_PATH屬性的路由不能形成BGP負載分擔

禁止與對等體建立會話

由於網絡升級維護等原因,需要暫時斷開與某個對等體/對等體組的BGP會話時,可以通過本配置禁止與該對等體/對等體組建立會話。當網絡恢復後,通過執行undo peer ignore命令恢復與對等體/對等體組的會話。這樣,網絡管理員無需刪除並重新進行對等體/對等體組相關配置,減少了網絡維護的工作量。

peer { group-name | ipv4-address [ mask-length ] } ignore 禁止與對等體/對等體組建立會話

配置BGP NSR

BGP NSR(Nonstop Routing,不間斷路由)是一種通過在BGP協議主備進程之間備份必要的協議狀態和數據(如BGP鄰居信息和路由信息),使得BGP協議的主進程中斷時,備份進程能夠無縫地接管主進程的工作,從而確保對等體感知不到BGP協議中斷,保持BGP路由,並保證轉發不會中斷的技術。

導致BGP主進程中斷的事件包括以下幾種:

  • BGP主進程重啓
  • BGP主進程所在的主控板發生故障
  • BGP主進程所在的主控板進行ISSU(In-Service Software Upgrade,不中斷業務升級)

BGP NSR與BGP GR具有如下區別,請根據實際情況選擇合適的方式確保數據轉發不中斷:

對設備要求不同:BGP協議的主進程和備進程運行在不同的主控板上,因此要運行BGP NSR功能,設備上必須有兩個或兩個以上的主控板。要運行BGP GR功能,設備上可以只有一個主控板。

對BGP對等體的要求不同:使用BGP NSR功能時,BGP對等體不會感知本地設備發生了BGP進程的異常重啓或主備倒換等故障,不需要BGP對等體協助恢復BGP路由信息。BGP GR要求BGP對等體具有GR能力,並且在BGP會話中斷恢復時,BGP對等體能夠作爲GR helper協助本地設備恢復BGP路由信息。

non-stop-routing 使能BGP NSR功能 缺省情況下,BGP NSR功能處於關閉狀態

華爲設備缺省處於使能狀態。

BGP功能特性

開啓告警功能

snmp-agent trap enable bgp

[ instance instance-name ]

開啓BGP模塊的告警功能

缺省情況下,BGP模塊的告警功能處於開啓狀態

使能BGP日誌功能

全局使能BGP日誌記錄功能,並使能與指定對等體/對等體組之間BGP會話的日誌記錄功能後,與該對等體/對等體組之間的BGP會話建立以及斷開時會生成日誌信息,通過display bgp peer ipv4 unicast log-info命令或display bgp peer ipv6 unicast log-info命令可以查看記錄的日誌信息。生成的日誌信息還將被髮送到設備的信息中心,通過設置信息中心的參數,決定日誌信息的輸出規則(即是否允許輸出以及輸出方向)。

log-peer-change 全局使能BGP日誌記錄功能
缺省情況下,全局BGP日誌記錄功能處於開啓狀態

使能BGP的路由抖動日誌記錄功能

使能BGP對應地址族的路由抖動日誌記錄功能後,當該地址族的路由發生抖動並滿足日誌輸出條件時會生成路由抖動日誌信息。生成的日誌信息還將被髮送到設備的信息中心,通過設置信息中心的參數,決定日誌信息的輸出規則(即是否允許輸出以及輸出方向)。

log-route-flap monitor-time monitor-count [ log-count-limit | route-policy route-policy-name ] *

缺省情況下,BGP的路由抖動日誌記錄功能處於關閉狀態

配置BGP與BFD聯動

配置BGP GR功能後,請慎用BGP與BFD聯動功能。因爲當鏈路故障時,系統可能還沒來得及啓用GR處理流程,BFD已經檢測到鏈路故障了,從而導致GR失敗。如果設備上同時配置了BGP GR和BGP BFD,則在BGP GR期間請勿去使能BGP BFD,否則可能導致GR失敗。

peer { group-name | ipv4-address [ mask-length ] } bfd [ multi-hop | single-hop ]

缺省情況下,不使用BFD檢測本地路由器和BGP對等體/對等體組之間的鏈路

配置BGP快速重路由

當BGP網絡中的鏈路或某臺路由器發生故障時,需要通過故障鏈路或故障路由器傳輸才能到達目的地的報文將會丟失或產生路由環路,數據流量將會被中斷。直到BGP根據新的網絡拓撲路由收斂後,被中斷的流量才能恢復正常的傳輸。

爲了儘可能縮短網絡故障導致的流量中斷時間,網絡管理員可以開啓BGP快速重路由功能。

開啓BGP快速重路由功能的方法有如下兩種:

在BGP地址族視圖下執行pic命令開啓當前地址族的BGP快速重路由功能。採用這種方法時,BGP會爲當前地址族的所有BGP路由自動計算備份下一跳,即只要從不同BGP對等體學習到了到達同一目的網絡的路由,且這些路由不等價,就會生成主備兩條路由。

在BGP地址族視圖下執行fast-reroute route-policy命令指定快速重路由引用的路由策略,並在引用的路由策略中,通過apply [ ipv6 ] fast-reroute backup-nexthop命令指定備份下一跳的地址。採用這種方式時,只有爲主路由計算出的備份下一跳地址與指定的地址相同時,纔會爲其生成備份下一跳;否則,不會爲主路由生成備份下一跳。在引用的路由策略中,還可以配置if-match子句,用來決定哪些路由可以進行快速重路由保護,BGP只會爲通過if-match子句過濾的路由生成備份下一跳。

引用路由策略方式的優先級高於通過pic命令開啓BGP快速重路由方式。

IPv4單播路由和IPv6單播路由支持BGP快速重路由功能;IPv4組播路由和IPv6組播路由不支持BGP快速重路由功能。

思科BGP相關配置

配置BGP基礎功能

router bgp 100 #創建BGP進程

neighbor ip-address remote-as *number #*建立鄰居

如果有任何BGP配置更改,則必須重置鄰居連接以允許新參數生效。

clear ip bgp address 重置指定鄰居的BGP連接

clear ip bgp * 重置所有鄰居的BGP連接

默認情況下,BGP會話從使用BGP版本4開始,如果需要,向下協商到較早的版本。可以阻止協商並強制路由器使用BGP版本與鄰居通信。在路由器配置模式下執行此命令

neighbor {ip address | peer-group-name} version value

BGP建立鄰居,需要注意以下幾點:

  • BGP版本是v4.
  • 遠端router id, 這個數字是路由器上最高的IP地址,或者是最高的環回接口(如果存在的話)。
  • 表版本:表版本提供了表的狀態。每當有新的信息進來時,表就會增加版本。如果一個版本在不斷增加,則表示有某個路由皮瓣導致路由的不斷更新。
show ip bgp neighbors
     BGP neighbor is 129.213.1.1, remote AS 200, external link 
     BGP version 4, remote router ID 175.220.12.1 
     BGP state = Established, table version = 3, up for 0:10:59 
     Last read 0:00:29, hold time is 180, keepalive interval is 60 seconds 
     Minimum time between advertisement runs is 30 seconds 
     Received 2828 messages, 0 notifications, 0 in queue 
     Sent 2826 messages, 0 notifications, 0 in queue 
     Connections established 11; dropped 10 

BGP的Loopback接口和EBGP多跳:

使用環回接口來定義鄰居在iBGP中很常見,但在eBGP中不常見。通常,使用環回接口來確保鄰居的IP地址不受正常運行的硬件的影響。在eBGP的情況下,對等路由器經常有直接連接,環回不適用。

neighbor ip-address update-source interface #指定更新
neighbor 180.225.11.1 ebgp-multihop #配置EBGP多跳
配置示例:
int loopback 0 
ip address 150.10.1.1 255.255.255.0 
router bgp 100 
neighbor 160.10.1.1 remote-as 200 
neighbor 160.10.1.1 ebgp-multihop 
neighbor 160.10.1.1 update-source loopback 0 
network 150.10.0.0 

使用環回口建立鄰居的情況下,如果有多跳鏈路直連,可以實現負載。

BGP中控制路由的接收與發送

route-map map-tag [[permit | deny] | [sequence-number]] 

route-map可以匹配:

  • match as-path
  • match community
  • match clns
  • match interface
  • match ip address
  • match ip next-hop
  • match ip route-source
  • match metric
  • match route-type
  • match tag

可以設置:

  • set as-path
  • set clns
  • set automatic-tag
  • set community
  • set interface
  • set default interface
  • set ip default next-hop
  • set level
  • set local-preference
  • set metric
  • set metric-type
  • set next-hop
  • set origin
  • set tag
  • set weight

路由策略配置示例:

router bgp 300
network 170.10.0.0
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 route-map STOPUPDATES out
 
route-map STOPUPDATES permit 10
match ip address 1
access-list 1 deny 170.10.0.0 0.0.255.255
access-list 1 permit 0.0.0.0 255.255.255.255

BGP宣告網絡

Network宣告網段:

network network-number [mask network-mask], 最多宣告200個。

重分發網段:

redistribute ospf 10
neighbor 1.1.1.1 distribute-list 1 out #配置BGP重分發,建議使用過濾,只重分發需要的路由。
redistribute eigrp 10

思科設備BGP選路原則

當BGP從不同的自治系統接收到關於不同目的地的更新後,協議必須選擇到達特定目的地的路徑。BGP只選擇一條路徑到達特定的目的地。

BGP總是向鄰居傳播最佳路徑。

neighbor {ip-address | peer-group-name} next-hop-self  #配置BGP下一跳爲自己
 

思科路由協議的默認管理距離:

default distances are:

  • 120 for RIP
  • 100 for IGRP
  • 90 for EIGRP
  • 110 for OSPF

By default, BGP has these distances:

  • External distance—20
  • Internal distance—200
  • Local distance—200
distance bgp external-distance internal-distance local-distance #調整BGP的默認管理距離
 

如果想要優選IGP路由,有兩種方式:

  1. 更改BGP的默認管理距離。distance bgp ,不建議改變。

  2. 使用BGP(Backdoor)後門。 BGP後門使IGP路由成爲首選路由。

所配置的網絡是希望通過IGP訪問的網絡。對於BGP,這個網絡與本地分配的網絡得到相同的處理,只是BGP更新不會公佈這個網絡

示例:

router bgp 100 
neighbor 2.2.2.1 remote-as 300 
network 160.10.0.0 backdoor 

網絡160.10.0.0僅僅在本地有效,不發佈給其他BGP鄰居。

BGP與IGP同步配置

同步狀態下,如果您的AS從另一個AS傳遞流量到第三個AS, BGP不應該在您的AS中的所有路由器通過IGP瞭解路由之前發佈路由廣告。BGP會等待,直到IGP在AS中傳播了路由。然後,BGP向外部同行宣傳路線

禁止同步狀態下,在某些情況下,不需要同步。如果您沒有通過AS傳遞來自不同AS的流量可以禁用同步。也可以禁用同步,如果所有路由器在您的AS運行BGP。禁用此功能可以讓您在IGP中攜帶更少的路由,並允許BGP更快地聚合。

同步的失效不是自動的。如果你所有的路由器在AS中運行BGP,而你根本不運行IGP,路由器就無從得知。在路由器將路由發送給外部節點之前,您的路由器無限期地等待關於某個路由的IGP更新。在這種情況下,你必須手動禁用同步,這樣路由才能正常工作:

思科設備中IGP與BGP默認同步。需要手動關閉。

router bgp 100 
no synchronization

關閉後,必須重置鄰居會話。

Weight(權重)屬性(思科私有屬性)

weight屬性是一個cisco定義的屬性。此屬性使用weight選擇最佳路徑。該weight在本地分配給路由器。該值只對特定的路由器有意義。該值不會通過任何路由更新傳播或攜帶。權重可以是0到65,535之間的數字。路由器初始化的路徑的默認權值爲32,768,其他路徑的權值爲0

當同一目的地存在多條路由時,具有較高權值的路由優先

思科的Weight與華爲PreVal值作用類似。 協議首選值(PrefVal)是華爲設備的特有屬性

Multiple mthods achieve this weight set:

Use the neighbor command.

neighbor {ip-address | peer-group} weight weight

Use AS_PATH access lists.

ip as-path access-list access-list-number {permit | deny} as-regular-expression neighbor ip-address filter-list access-list-number weight weight

Use route maps.

Local-preference,本地優先級

本地優先級用於判斷離開AS時的最佳路徑。具有較高局部首選項的路徑更受歡迎。本地首選項的默認值是100。

與僅與本地路由器相關的weight屬性不同,本地首選項是路由器交換的屬性在同一個AS中。

bgp default local-preference value #配置默認local-preference

配置完,需要重置BGP連接。 clear ip bgp [soft][in/out],使用soft不會破壞連接

Metric(MED) 屬性

用於判斷進入AS時的路徑,優選Metric(MED)值小的路徑。Metric在相鄰AS之間傳播。默認值爲0.

除非路由器接收到其他方向,否則該路由器將比較來自鄰居的路徑指標。爲了讓路由器比較來自不同ASs的鄰居的指標,您需要在路由器上發出特殊的配置命令bgp always-compare-med

bgp always-compare-med,配置從不通AS進來的路由比較MED,默認不比較。

bgp deterministic-med

default-metric 50 #調整BGP MED值
bgp bestpath as-path ignore #配置忽略as-path
 

Community屬性

set community community-number [additive] [well-known-community] 

no-export—Do not advertise to eBGP peers. Keep this route within an AS.

no-advertise—Do not advertise this route to any peer, internal or external.

internet—Advertise this route to the Internet community. Any router belongs to this community.

local-as—Use in confederation scenarios to prevent the transmit of packets outside the local AS.

neighbor {ip-address | peer-group-name} send-community #強制給鄰居發送團體屬性
 

ip bgp-community new-format 配置使用新格式顯示團體屬性AA:BB

BGP路由過濾

neighbor {ip-address | peer-group-name} distribute-list access-list-number {in | out} 

示例:

router bgp 300 
network 170.10.0.0 
neighbor 3.3.3.3 remote-as 200 
neighbor 2.2.2.2 remote-as 100 
neighbor 2.2.2.2 distribute-list 1 out 
access-list 1 deny 160.10.0.0 0.0.255.255 
access-list 1 permit 0.0.0.0 255.255.255.255 
 
ip as-path access-list access-list-number {permit | deny} as-regular-expression
#配置as-path過濾
neighbor {ip-address | peer-group-name} filter-list access-list-number {in | out}
#配置acl過濾
 
BGP團體屬性過濾:
router bgp 200 
network 160.10.0.0 
neighbor 3.3.3.1 remote-as 300 
neighbor 3.3.3.1 send-community 
neighbor 3.3.3.1 route-map setcommunity out 
 
route-map setcommunity 
match ip address 1 
set community no-export  
 
access-list 1 permit 0.0.0.0 255.255.255.255 
 
ip community-list community-list-number {permit | deny} community-number
 
 

BGP對等體組

neighbor peer-group-name peer-group 

配置示例:

router bgp 300 
   neighbor externalmap peer-group 
   neighbor externalmap route-map SETMETRIC 
   neighbor externalmap filter-list 1 out 
   neighbor externalmap filter-list 2 in 
   neighbor 2.2.2.2 remote-as 100 
   neighbor 2.2.2.2 peer-group externalmap 
   neighbor 4.4.4.2 remote-as 600 
   neighbor 4.4.4.2 peer-group externalmap 

路由聚合

aggregate-address 160.0.0.0 255.0.0.0
aggregate-address address mask summary-only #只傳輸聚合路由
 
aggregate-address address-mask as-set #通告更具體的路由信息。
 
aggregate-address address-mask suppress-map map-name #抑制更詳細路由信息
 
aggregate-address address-mask attribute-map map-name #允許在發佈路由時,設置屬性。
例如:
route-map SETMETRIC 
set origin igp 
 
aggregate-address 160.0.0.0 255.0.0.0 attribute-map SETORIGIN
 

BGP聯盟

bgp confederation identifier autonomous-system 
bgp confederation peers autonomous-system [autonomous-system]
router bgp 50
bgp confederation identifier 500
bgp confederation peers 60 70
neighbor 128.213.10.1 remote-as 50 (IBGP connection within AS50)
neighbor 128.213.20.1 remote-as 50 (IBGP connection within AS50)
neighbor 129.210.11.1 remote-as 60 (BGP connection with confederation peer 60)
neighbor 135.212.14.1 remote-as 70 (BGP connection with confederation peer 70)
neighbor 5.5.5.5 remote-as 100 (EBGP connection to external AS100)

BGP反射器

neighbor route-reflector-client
 
router bgp 100
neighbor 6.6.6.6 remote-as 100
neighbor 6.6.6.6 route-reflector-client
bgp cluster-id 10
 

BGP路由震盪

bgp dampening—Turns on dampening.

no bgp dampening—Turns off dampening.

bgp dampening half-life-time —Changes the half-life time.

bgp dampening half-life-time reuse suppress maximum-suppress-time

This list details the syntax:

half-life-time —The range is 1–45 minutes, and the current default is 15 minutes.

reuse-value —The range is 1–20,000, and the default is 750.

suppress-value —The range is 1–20,000, and the default is 2000.

max-suppress-time —This is the maximum duration for the suppression of a route. The range is 1–255 minutes, and the default is 4 times the half-life time.


備註:以上資料整理自以下三個網站,有華爲,華三,思科三個廠商官網的BGP相關資料。放這裏是爲了自己查看方便。同時,有需要的可以參考參考。

官方文檔BGP相關資料:

華爲:https://support.huawei.com/hedex/hdx.do?docid=EDOC1100101225&lang=zh&idPath=24030814|21782165|21782236|22318638|7542409

華三:http://www.h3c.com/cn/d_201601/909969_30005_0.htm

思科:https://www.cisco.com/c/en/us/tech/ip/ip-routing/index.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章