06-BGP配置
本章節下載: 06-BGP配置 (1.04 MB)
BGP(Border Gateway Protocol,邊界網關協議)是一種既可以用於不同AS(Autonomous System,自治係統)之間,又可以用於同一AS內部的動態路由協議。當BGP運行於同一AS內部時,被稱為IBGP(Internal BGP);當BGP運行於不同AS之間時,稱為EBGP(External BGP)。AS是擁有同一選路策略,屬於同一技術管理部門的一組路由器。
當前使用的BGP版本是BGP-4。BGP-4作為Internet外部路由協議標準,被ISP(Internet Service Provider,互聯網服務提供商)廣泛應用。
除非特殊說明,下文中的BGP均指BGP-4。
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發言者。BGP發言者接收或產生路由信息,並將路由信息發布給其它BGP發言者。
相互之間存在TCP連接、相互交換路由信息的BGP發言者互為BGP對等體。根據對等體所在的AS,對等體分為以下幾種:
· IBGP對等體:對等體與本地路由器位於同一AS。
· EBGP對等體:對等體與本地路由器位於不同AS。
BGP定義了以下幾種消息類型:
· Open:TCP連接建立後發送的第一個消息,用於在BGP對等體之間建立會話。
· Update:用於在對等體之間交換路由信息。一條Update消息可以發布具有相同路徑屬性的多條可達路由,也可以同時撤銷多條不可達路由。
· Keepalive:BGP周期性地向對等體發送Keepalive消息,以保持會話的有效性。
· Route-refresh:用來要求對等體重新發送指定地址族的路由信息。
· Notification:當BGP檢測到錯誤狀態時,就向對等體發出Notification消息,之後BGP會話會立即中斷。
BGP路由屬性是跟隨路由一起發布出去的一組參數。它對特定的路由進行了進一步的描述,使得路由接收者能夠根據路由屬性值對路由進行過濾和選擇。下麵將介紹幾種常見的路由屬性。
ORIGIN屬性定義了路由信息的來源,標記一條BGP路由是怎麼生成的。它有以下三種類型:
· IGP:優先級最高,表示路由產生於本AS內。
· EGP:優先級次之,表示路由通過EGP學到。
· Incomplete:優先級最低,表示路由的來源無法確定。例如,從其它路由協議引入的路由信息。
AS_PATH屬性記錄了某條路由從本地到目的地址所要經過的所有AS號。當BGP路由器將一條路由通告到其他AS時,會把本地AS號添加在AS_PATH列表中。收到此路由的BGP路由器根據AS_PATH屬性就可以知道到達目的地址所要經過的AS。
AS_PATH屬性有以下兩種類型:
· AS_SEQUENCE:AS號按照一定的順序排列。如圖1-1所示,離本地AS最近的相鄰AS號排在前麵,其他AS號按順序依次排列。
· AS_SET:AS號隻是經過的AS的簡單羅列,沒有順序要求。
AS_PATH屬性具有如下用途:
· 避免路由環路的形成:缺省情況下,如果BGP路由器接收到的路由的AS_PATH屬性中已經包含了本地的AS號,則BGP路由器認為出現路由環路,不會接受該路由。
· 影響路由的選擇:在其他因素相同的情況下,BGP會優先選擇路徑較短的路由。比如在圖1-1中,AS 50中的BGP路由器會選擇經過AS 40的路徑作為到目的地址8.0.0.0的最優路由。用戶可以使用路由策略來人為地增加AS路徑的長度,以便更為靈活地控製BGP路徑的選擇。
· 對路由進行過濾:通過配置AS路徑過濾列表,可以針對AS_PATH屬性中所包含的AS號來對路由進行過濾。
路由策略和AS路徑過濾列表的詳細介紹,請參見“三層技術-IP路由配置指導”中的“路由策略”。
BGP的NEXT_HOP屬性取值不一定是鄰居路由器的IP地址。如圖1-2所示,NEXT_HOP屬性取值情況分為幾種:
· BGP發言者把自己產生的路由發給所有鄰居時,將該路由信息的NEXT_HOP屬性設置為自己與對端連接的接口地址;
· BGP發言者把接收到的路由發送給EBGP對等體時,將該路由信息的NEXT_HOP屬性設置為自己與對端連接的接口地址;
· BGP發言者把從EBGP鄰居得到的路由發給IBGP鄰居時,並不改變該路由信息的NEXT_HOP屬性。如果配置了負載分擔,等價路由被發給IBGP鄰居時則會修改NEXT_HOP屬性。關於“負載分擔”的概念請參見“1.1.6 BGP負載分擔”。
MED屬性僅在相鄰兩個AS之間交換,收到此屬性的AS不會再將其通告給其它AS。
MED屬性相當於IGP使用的度量值(metrics),它用於判斷流量進入AS時的最佳路由。當一個BGP路由器通過不同的EBGP對等體得到目的地址相同但下一跳不同的多條路由時,在其它條件相同的情況下,將優先選擇MED值較小者作為最佳路由。如圖1-3所示,從AS 10到AS 20的流量將選擇Router B作為入口。
圖1-3 MED屬性
通常情況下,BGP隻比較來自同一個AS的路由的MED屬性值。在某些特殊的應用中,用戶也可以通過配置compare-different-as-med命令,強製BGP比較來自不同AS的路由的MED屬性值。
LOCAL_PREF屬性僅在IBGP對等體之間交換,不通告給其他AS。它表明BGP路由器的優先級。
LOCAL_PREF屬性用於判斷流量離開AS時的最佳路由。當BGP路由器通過不同的IBGP對等體得到目的地址相同但下一跳不同的多條路由時,將優先選擇LOCAL_PREF屬性值較高的路由。如圖1-4所示,從AS 20到AS 10的流量將選擇Router C作為出口。
BGP將具有相同特征的路由歸為一組,稱為一個團體,通過在路由中攜帶團體屬性標識路由所屬的團體。團體沒有物理上的邊界,不同AS的路由可以屬於同一個團體。
根據需要,一條路由可以攜帶一個或多個團體屬性值(每個團體屬性值用一個四字節的整數表示)。接收到該路由的路由器可以通過比較團體屬性值對路由作出適當的處理(比如決定是否發布該路由、在什麼範圍發布等),而不需要匹配複雜的過濾規則(如ACL),從而簡化路由策略的應用和降低維護管理的難度。
公認的團體屬性有:
· INTERNET:缺省情況下,所有的路由都屬於INTERNET團體。具有此屬性的路由可以被通告給所有的BGP對等體。
· NO_EXPORT:具有此屬性的路由在收到後,不能被發布到本地AS之外。如果使用了聯盟,則不能被發布到聯盟之外,但可以發布給聯盟中的其他子AS(關於聯盟的定義請參見“1.1.7 1.1.7 大規模BGP網絡所遇問題的解決方法”)。
· NO_ADVERTISE:具有此屬性的路由被接收後,不能被通告給任何其他的BGP對等體。
· NO_EXPORT_SUBCONFED:具有此屬性的路由被接收後,不能被發布到本地AS之外,也不能發布到聯盟中的其他子AS。
除了公認的團體屬性外,用戶還可以使用團體屬性列表自定義團體屬性,以便更為靈活地控製路由策略。
隨著團體屬性的應用日益廣泛,原有四字節的團體屬性無法滿足用戶的需求。因此,BGP定義了新的路由屬性——擴展團體屬性。擴展團體屬性與團體屬性有如下不同:
· 擴展團體屬性為八字節,提供了更多的屬性值。
· 擴展團體屬性可以劃分類型。在不同的組網應用中,可以使用不同類型的擴展團體屬性對路由進行過濾和控製。與不區分類型、統一使用同一個屬性值空間的團體屬性相比,擴展團體屬性的配置和管理更為簡單。
目前,設備支持的擴展團體屬性有VPN Target屬性和SOO(Site of Origin,路由源)屬性。這兩個屬性的詳細介紹,請參見“MPLS配置指導”中的“MPLS L3VPN”。
目前,BGP選擇路由的過程為:
(1) 丟棄下一跳(NEXT_HOP)不可達的路由;
(2) 優選首選值(Preferred-value)最大的路由;
(3) 優選本地優先級(LOCAL_PREF)最高的路由;
(4) 優選聚合路由;
(5) 優選AS路徑(AS_PATH)最短的路由;
(6) 依次選擇ORIGIN類型為IGP、EGP、Incomplete的路由;
(7) 優選MED值最低的路由;
(8) 依次選擇從EBGP、聯盟、IBGP學來的路由;
(9) 優選下一跳Cost值最低的路由;
(10) 優選CLUSTER_LIST長度最短的路由;
(11) 優選ORIGINATOR_ID最小的路由;
(13) 優選IP地址最小的對等體發布的路由。
· CLUSTER_ID為路由反射器的集群ID,CLUSTER_LIST由CLUSTER_ID序列組成,路由反射器將自己的CLUSTER_ID加入CLUSTER_LIST中。若路由反射器收到路由中的CLUSTER_LIST包含自己的CLUSTER_ID,則丟棄該路由,從而避免集群內發生環路。
· 如果配置了負載分擔,並且有多條到達同一目的地的路由,則根據配置的路由條數選擇多條路由進行負載分擔。
BGP發布路由時采用如下策略:
· 存在多條有效路由時,BGP發言者隻將最優路由發布給對等體;
· BGP發言者隻把自己使用的路由發布給對等體;
· BGP發言者會將從EBGP獲得的路由發布給它的所有BGP對等體(包括EBGP對等體和IBGP對等體);
· BGP發言者會將從IBGP獲得的路由發布給它的EBGP對等體,但不會發布給它的IBGP對等體;
· 會話一旦建立,BGP發言者將把滿足上述條件的所有BGP路由發布給新對等體。之後,BGP發言者隻在路由變化時,向對等體發布更新的路由。
BGP可以通過如下兩種方式實現負載分擔:
· 基於迭代路由實現負載分擔
· 通過改變BGP選路規則實現負載分擔
由於BGP協議本身的特殊性,它產生的路由的下一跳地址可能不是當前路由器直接相連的鄰居。常見的一個原因是:IBGP之間發布路由信息時不改變下一跳。這種情況下,為了能夠將報文正確轉發出去,路由器必須先找到一個直接可達的地址(查找IGP建立的路由表項),通過這個地址到達路由表中指示的下一跳。在上述過程中,去往直接可達地址的路由被稱為依賴路由,BGP路由依賴於這些路由指導報文轉發。根據下一跳地址找到依賴路由的過程就是路由迭代。
目前係統支持基於迭代的BGP負載分擔,即如果依賴路由本身是負載分擔的(假設有三個下一跳地址),則BGP也會生成與依賴路由數量相同的下一跳地址來指導報文轉發。需要說明的是,基於迭代的BGP負載分擔並不需要命令配置,這一特性在係統上始終啟用。
在實現方法上,BGP的負載分擔與IGP的負載分擔有所不同:
· IGP是通過協議定義的路由算法,對到達同一目的地址的不同路由,根據計算結果,將度量值(metric)相等的(如RIP、OSPF)路由進行負載分擔,選擇的標準很明確(按metric)。
· BGP本身並沒有路由計算的算法,它隻是一個選路的路由協議,因此,不能根據一個明確的度量值決定是否對路由進行負載分擔,但BGP有豐富的選路規則,可以在對路由進行一定的選擇後,有條件地進行負載分擔,也就是將負載分擔加入到BGP的選路規則中去。
采用本方式進行負載分擔時,BGP不再按照“1.1.4 BGP的選路規則”中的規則選擇路由,而是隻比較AS_PATH屬性、ORIGIN屬性、LOCAL_PREF屬性和MED屬性,如果路由的這四個屬性完全相同,則在這些路由間進行負載分擔。
圖1-5 BGP負載分擔示意圖
在圖1-5中,Router A和Router B是Router C的IBGP對等體。當Router D和Router E同時向Router C通告到達同一目的地的路由時,如果用戶在Router C上配置了進行負載分擔的BGP路由條數為2,則當滿足一定的選路規則後,並且兩條路由具有相同的AS_PATH屬性、ORIGIN屬性、LOCAL_PREF屬性和MED屬性時,Router C就把接收的兩條路由同時加入到轉發表中,實現BGP路由的負載分擔。Router C隻向Router A和Router B轉發一次該路由,AS_PATH不變,但NEXT_HOP屬性改變為Router C的地址,而不是原來的EBGP對等體地址。Router C通告給Router A和Router B的路由中,其它的BGP路由屬性為最佳路由的屬性。
BGP負載分擔特性適用於EBGP、IBGP以及聯盟之間。
在大規模BGP網絡中,對等體的數目眾多,路由表龐大,配置和維護極為不便。通過如下方法,可以降低管理難度,提高路由發布效率。
在大規模的網絡中,BGP路由表十分龐大,使用路由聚合(Routes Aggregation)可以大大減小BGP路由表的規模。
路由聚合實際上是將多條路由合並的過程。這樣BGP在向對等體通告路由時,可以隻通告聚合後的路由,而不是將所有的具體路由都通告出去。
目前係統支持自動聚合和手動聚合方式。使用後者還可以控製聚合路由的屬性,以及決定是否發布具體路由。
BGP路由衰減(Route Dampening)用來解決路由不穩定的問題。路由不穩定的主要表現形式是路由震蕩(Route flaps),即路由表中的某條路由反複消失和重現。
發生路由震蕩時,路由協議就會向鄰居發布路由更新,收到更新消息的路由器需要重新計算路由並修改路由表。所以頻繁的路由震蕩會消耗大量的帶寬資源和CPU資源,嚴重時會影響到網絡的正常工作。
在多數情況下,BGP協議都應用於複雜的網絡環境中,路由變化十分頻繁。為了防止持續的路由震蕩帶來的不利影響,BGP使用衰減來抑製不穩定的路由。
BGP衰減使用懲罰值來衡量一條路由的穩定性,懲罰值越高則說明路由越不穩定。路由每發生一次震蕩(路由從激活狀態變為未激活狀態,稱為一次路由震蕩),BGP便會給此路由增加一定的懲罰值(1000,此數值為係統固定,不可修改)。當懲罰值超過抑製閾值時,此路由被抑製,不加入到BGP路由表中,也不再向其他BGP對等體發布更新消息。
被抑製的路由每經過一段時間,懲罰值便會減少一半,這個時間稱為半衰期(Half-life)。當懲罰值降到再使用閾值時,此路由變為可用並被加入到BGP路由表中,同時向其他BGP對等體發布更新消息。
圖1-6 BGP衰減示意圖
在大規模BGP網絡中,對等體的數量很多,其中很多對等體具有相同的策略,在配置時會重複使用一些命令。此時,將這些對等體加入一個對等體組,可以簡化配置。
對等體組是具有某些相同屬性的對等體的集合。當一個對等體加入對等體組時,此對等體將獲得與所在對等體組相同的配置。當對等體組的配置改變時,組內成員的配置也相應改變。
在大規模的網絡中,如果通過地址前綴列表、ACL、AS_PATH等實現對路由的控製,不僅配置複雜,而且不方便維護。利用團體屬性和擴展團體屬性,可以提高路由策略配置的靈活度,簡化路由策略的管理,從而降低維護管理的難度。團體屬性和擴展團體屬性的介紹請參見“1.1.3 BGP的路由屬性”。
為保證IBGP對等體之間的連通性,需要在IBGP對等體之間建立全連接關係。假設在一個AS內部有n台路由器,那麼應該建立的IBGP連接數就為n(n-1)/2。當IBGP對等體數目很多時,對網絡資源和CPU資源的消耗都很大。
利用路由反射可以解決這一問題。在一個AS內,其中一台路由器作為RR(Route Reflector,路由反射器),其它路由器作為客戶機(Client)與路由反射器之間建立IBGP連接。路由反射器從客戶機接收到路由後,將其傳遞(反射)給所有其他的客戶機,從而保證客戶機之間不需要建立BGP連接,就可以學習到彼此的路由。
既不是反射器也不是客戶機的BGP路由器被稱為非客戶機(Non-Client)。非客戶機與路由反射器之間,以及所有的非客戶機之間仍然必須建立全連接關係。其示意圖如圖1-7所示。
路由反射器及其客戶機形成了一個集群。通常情況下,一個集群中隻有一個路由反射器,該反射器的Router ID就作為集群ID,用於識別該群。如圖1-8所示,為了提高網絡的可靠性、避免單點故障,一個集群中可以設置多個路由反射器。此時,集群中所有路由反射器上都需要配置相同的集群ID,以便集群具有統一的標識,避免路由環路的產生。
如果配置了路由反射器後,由於組網需要在路由反射器的客戶機之間又建立了全連接,則客戶機之間可以直接交換路由信息,客戶機到客戶機之間的路由反射是沒有必要的。此時,不需要修改網絡配置或改變網絡拓撲,隻需在路由反射器上通過相關命令禁止其在客戶機之間反射路由,就可以避免路由反射,減少占用的帶寬資源。
禁止客戶機之間的路由反射後,客戶機到非客戶機之間的路由仍然可以被反射。
聯盟(Confederation)是處理自治係統內部的IBGP網絡連接激增的另一種方法,它將一個自治係統劃分為若幹個子自治係統,每個子自治係統內部的IBGP對等體建立全連接關係,子自治係統之間建立聯盟內部EBGP連接關係。其示意圖如圖1-9所示。
在不屬於聯盟的BGP發言者看來,屬於同一個聯盟的多個子自治係統是一個整體,外界不需要了解內部的子自治係統情況,聯盟ID就是標識聯盟這一整體的自治係統號,如上圖中的AS 200就是聯盟ID。
聯盟的缺陷是從非聯盟方案向聯盟方案轉變時,要求路由器重新進行配置,邏輯拓撲也要改變。
在大型BGP網絡中,路由反射器和聯盟可以被同時使用。
BGP-4隻能傳遞IPv4單播的路由信息,不能傳遞其它網絡層協議(如IPv6等)的路由信息。
為了提供對多種網絡層協議的支持,IETF對BGP-4進行了擴展,形成MP-BGP(Multiprotocol Extensions for BGP-4,BGP-4的多協議擴展)。MP-BGP可以為多種網絡層協議傳遞路由信息,如IPv4組播、IPv6單播、IPv6組播、VPNv4等。
支持MP-BGP的路由器與不支持MP-BGP的路由器可以互通。
路由信息中與網絡層協議相關的關鍵信息包括路由前綴和下一跳地址。BGP-4通過Update消息中的NLRI(Network Layer Reachability Information,網絡層可達信息)字段攜帶可達路由的前綴信息,Withdrawn Routes字段攜帶不可達路由的前綴信息,NEXT_HOP屬性攜帶下一跳地址信息。NLRI字段、Withdrawn Routes字段和NEXT_HOP屬性不易於擴展,無法攜帶多種網絡層協議的信息。
為實現對多種網絡層協議的支持,MP-BGP定義了兩個新的路徑屬性:
· MP_REACH_NLRI(Multiprotocol Reachable NLRI,多協議可達NLRI):用於攜帶多種網絡層協議的可達路由前綴及下一跳地址信息,以便向鄰居發布該路由。
· MP_UNREACH_NLRI(Multiprotocol Unreachable NLRI,多協議不可達NLRI):用於攜帶多種網絡層協議的不可達路由前綴信息,以便撤銷該路由。
MP-BGP通過上述兩個路徑屬性傳遞不同網絡層協議的可達路由和不可達路由信息。不支持MP-BGP的BGP發言者接收到帶有這兩個屬性的Update消息後,忽略這兩個屬性,不把它們傳遞給其它鄰居。
目前,係統實現了多種MP-BGP擴展應用,包括對VPN的擴展、對IPv6的擴展、對組播的擴展等。
· 有關VPN的擴展應用,請參見“MPLS配置指導”中的“MPLS L3VPN”。
· 有關IPv6的擴展應用,請參見“三層技術-IP路由配置指導”中的“IPv6 BGP”。
· 有關組播的擴展應用,請參見“IP組播配置指導”中的“MBGP”和“IPv6 MBGP”。
MP-BGP采用地址族(Address Family)和子地址族(Subsequent Address Family)來區分MP_REACH_NLRI屬性、MP_UNREACH_NLRI屬性中攜帶路由信息所屬的網絡層協議。例如,如果MP_REACH_NLRI屬性中AFI(Address Family Identifier,地址族標識)為2、SAFI(Subsequent Address Family Identifier,子地址族標識)為1,則表示該屬性中攜帶的是IPv6單播路由信息。關於地址族的一些取值可以參考RFC 1700。
設備為BGP定義了多種視圖:
· 地址族相關視圖:用來管理不同地址族的路由信息。
· VPN實例相關視圖:BGP支持VPN多實例,可以為不同的VPN實例維護獨立的路由表。VPN實例相關視圖用來管理不同VPN實例的路由信息。
大多數BGP配置命令可以在多個視圖下執行,不同視圖下命令的作用範圍有所不同,詳細介紹如表1-1所示。
表1-1 BGP相關視圖介紹
視圖名稱 |
進入視圖方法 |
說明 |
BGP視圖 |
該視圖下的配置對所有地址族和VPN實例生效(如聯盟、GR、NSR的配置等),或隻對公網的IPv4單播路由生效(如發布本地路由、引入IGP路由、路由聚合、BGP路由信息發布/接收策略的配置等) |
|
BGP-VPN實例視圖 |
該視圖下的配置隻對指定VPN實例的IPv4單播路由生效 |
|
IPv6地址族視圖 |
該視圖下的配置隻對公網的IPv6單播路由生效 |
|
IPv6 BGP-VPN實例視圖 |
該視圖下的配置隻對指定VPN實例的IPv6單播路由生效 |
|
BGP-VPNv4子地址族視圖 |
該視圖下的配置隻對VPNv4路由生效 |
|
BGP-VPNv6子地址族視圖 |
該視圖下的配置隻對VPNv6路由生效 |
|
MBGP地址族視圖 |
該視圖下的配置隻對IPv4組播路由生效 |
|
IPv6 MBGP地址族視圖 |
該視圖下的配置隻對IPv6組播路由生效 |
|
BGP-L2VPN地址族視圖 |
該視圖下的配置隻對MPLS L2VPN的BGP路由生效 |
|
BGP-VPLS地址族視圖 |
該視圖下的配置隻對VPLS的BGP路由生效 |
本章隻介紹BGP視圖和BGP-VPN實例視圖下的配置,其他視圖下的配置請參考相應的配置指導手冊。
與BGP相關的協議規範有:
· RFC 1700:ASSIGNED NUMBERS
· RFC 1771:A Border Gateway Protocol 4 (BGP-4)
· RFC 2858:Multiprotocol Extensions for BGP-4
· RFC 3392:Capabilities Advertisement with BGP-4
· RFC 2918:Route Refresh Capability for BGP-4
· RFC 2439:BGP Route Flap Damping
· RFC 1997:BGP Communities Attribute
· RFC 2796:BGP Route Reflection
· RFC 3065:Autonomous System Confederations for BGP
· RFC 4271:A Border Gateway Protocol 4 (BGP-4)
· RFC 4360:BGP Extended Communities Attribute
· RFC 4724:Graceful Restart Mechanism for BGP
· RFC 4760:Multiprotocol Extensions for BGP-4
· RFC 5291:Outbound Route Filtering Capability for BGP-4
· RFC 5292:Address-Prefix-Based Outbound Route Filter for BGP-4
在最基本的BGP網絡中,隻需完成如下配置:
· 啟動BGP
· 配置BGP對等體或對等體組
· 控製BGP路由信息的生成
如果在BGP網絡中,需要對BGP路由信息的發布、BGP路徑的選擇等進行控製,則可以根據需要進行其他配置。
表1-2 BGP配置任務簡介
配置任務 |
說明 |
詳細配置 |
|
配置BGP基本功能 |
啟動BGP |
必選 |
|
配置BGP對等體 |
二者必選其一 建議在大規模的BGP網絡中選擇“配置BGP對等體組”,以便簡化配置 |
||
配置BGP對等體組 |
|||
配置建立TCP連接使用的源接口 |
可選 |
||
控製BGP路由信息的生成 |
配置BGP發布本地路由 |
二者至少選其一 |
|
配置BGP引入IGP路由 |
|||
控製BGP路由信息的發布與接收 |
配置BGP路由聚合 |
可選 |
|
配置向對等體/對等體組發送缺省路由 |
|||
配置BGP路由信息的發布/接收策略 |
|||
配置BGP與IGP路由同步 |
|||
限製從BGP對等體/對等體組接收的路由數量 |
|||
配置忽略BGP路由的ORIGINATOR_ID屬性 |
|||
配置BGP路由衰減 |
|||
控製BGP路徑的選擇 |
為接收路由分配首選值 |
可選 |
|
配置BGP的路由優先級 |
|||
配置本地優先級的缺省值 |
|||
配置MED屬性 |
|||
配置NEXT_HOP屬性 |
|||
配置AS_PATH屬性 |
|||
調整和優化BGP網絡 |
配置BGP存活時間間隔與保持時間 |
可選 |
|
配置發布同一路由的時間間隔 |
|||
配置允許同非直連鄰居建立EBGP會話 |
|||
配置BGP ORF能力 |
|||
使能4字節AS號抑製功能 |
|||
使能EBGP會話快速複位功能 |
|||
配置BGP的MD5認證 |
|||
配置BGP負載分擔 |
|||
禁止與對等體/對等體組建立會話 |
|||
配置BGP軟複位 |
|||
配置大規模BGP網絡 |
配置BGP團體 |
可選 |
|
配置BGP路由反射器 |
|||
配置BGP聯盟 |
|||
配置BGP GR |
可選 |
||
使能Guard路由引入功能 |
可選 |
||
開啟Trap功能 |
可選 |
||
使能BGP日誌功能 |
可選 |
||
配置BGP與BFD聯動 |
可選 |
如果分別對對等體組和對等體組中的對等體進行了某項BGP配置,則以最後一次配置為準。
一台路由器如果要運行BGP協議,則必須存在Router ID。Router ID用來在一個自治係統中唯一的標識一台路由器。
· 用戶可以在啟動BGP進入BGP視圖後指定Router ID,配置時,必須保證自治係統中任意兩台設備的ID都不相同。通常的做法是將設備的ID配置為與該設備某個接口的IP地址一致,為了增加網絡的可靠性,建議將Router ID配置為Loopback接口的IP地址。
· 如果沒有在BGP視圖下配置Router ID,則使用全局Router ID。
· 如果BGP使用的是全局Router ID,當Router ID所在接口被刪除時路由器會重新選擇設備的Router ID。
· 如果是在BGP視圖下手工配置的Router ID,則Router ID所在接口被刪除時路由器不會重新選擇Router ID,隻有在BGP視圖下使用undo router-id命令刪除手工配置的Router ID後,路由器才會重新選擇Router ID。
表1-3 啟動BGP
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
配置全局Router ID |
router id router-id |
可選 缺省情況下,未配置全局Router ID 如果沒有配置全局Router ID,則按照下麵的規則進行選擇: (1) 如果存在配置IP地址的Loopback接口,則選擇Loopback接口地址中最大的作為Router ID (2) 如果所有Loopback接口都沒有配置IP地址,則從其他接口的IP地址中選擇最大的作為Router ID(不考慮接口的up/down狀態) |
|
啟動BGP,進入BGP視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 缺省情況下,係統沒有運行BGP |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置Router ID |
router-id [ auto-select | router-id ] |
可選 缺省情況下,與全局Router ID相同 auto-select參數僅在BGP-VPN視圖中有效 |
一台路由器隻能位於一個AS內,一台路由器上隻能啟動一個BGP進程。
表1-4 配置BGP對等體
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
指定對等體及其AS號 |
peer ip-address as-number as-number |
必選 缺省情況下,沒有指定對等體及其AS號 |
|
配置通過peer as-number命令指定對等體後,默認使能該對等體的IPv4單播地址族能力 |
default ipv4-unicast |
可選 缺省情況下,對等體的IPv4單播地址族能力處於使能狀態,即可以與對等體交換IPv4單播地址族的路由信息 BGP-VPN實例視圖下不支持本命令 |
|
激活指定對等體 |
peer ip-address enable |
可選 缺省情況下,BGP對等體處於激活狀態 |
|
配置對等體的描述信息 |
peer ip-address description description-text |
可選 缺省情況下,對等體沒有描述信息 |
對等體組是具有相同更新策略的對等體的集合。
在大型BGP網絡中,對等體的數量會很多,其中,很多對等體需要配置相同的策略,通過配置對等體組並將對等體加入到對等體組,可以使對等體獲得與所在對等體組相同的配置,而且當對等體組的配置改變時,組內成員的配置也相應改變,從而簡化配置。
根據對等體所在的AS,對等體組可分為:
· IBGP對等體組:對等體組中的對等體與當前路由器位於同一AS。
· EBGP對等體組:對等體組中的對等體與當前路由器位於不同AS。
如果對等體組中已經存在對等體,則不能改變該對等體組的AS號,也不能使用undo命令刪除已指定的AS號。
創建IBGP對等體組後,係統在將對等體加入IBGP對等體組時,會自動在BGP視圖下創建該對等體,並設置其AS號為本地AS號。
表1-5 配置IBGP對等體組
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
創建IBGP對等體組 |
group group-name [ internal ] |
必選 |
|
向對等體組中添加對等體 |
peer ip-address group group-name [ as-number as-number ] |
必選 缺省情況下,對等體組中不存在任何對等體 as-number as-number參數可選可不選,如果選擇則必須和本地的AS號一致 |
|
激活指定對等體 |
peer ip-address enable |
可選 缺省情況下,BGP對等體處於激活狀態 |
|
配置對等體組的描述信息 |
peer group-name description description-text |
可選 缺省情況下,對等體組沒有描述信息 |
根據對等體組中的對等體是否屬於同一個外部AS,EBGP對等體組又可以分為純EBGP對等體組和混合EBGP對等體組。如果對等體組中的對等體屬於同一個外部AS,該對等體組就是純EBGP對等體組;如果對等體組中的對等體屬於不同外部AS,該對等體組就是混合EBGP對等體組。
用戶有三種方式配置EBGP對等體組:
· 第一種方式是創建對等體組後,先指定對等體組的AS號,再將對等體加入到對等體組中,該方式下加入的對等體具有相同的AS號;
· 第二種方式是創建對等體組後,先配置對等體的AS號,再將對等體加入對等體組中。
· 第三種方式是創建對等體組後,將對等體加入對等體組的同時指定AS號。
表1-6 配置EBGP對等體組(方式一)
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
創建EBGP對等體組 |
group group-name external |
必選 缺省情況下,設備上不存在任何對等體組 |
|
設置對等體組的AS號 |
peer group-name as-number as-number |
必選 缺省情況下,沒有指定對等體組的AS號 |
|
向對等體組中添加對等體 |
peer ip-address group group-name [ as-number as-number ] |
必選 缺省情況下,對等體組中不存在任何對等體 as-number as-number參數可選可不選,如果選擇則必須和peer group-name as-number as-number命令中配置的一致 |
|
激活指定對等體 |
peer ip-address enable |
可選 缺省情況下,BGP對等體處於激活狀態 |
|
配置對等體組的描述信息 |
peer group-name description description-text |
可選 缺省情況下,對等體組沒有描述信息 |
· 該方式下,對等體加入對等體之前可以配置AS號。為對等體配置的AS號必須與對等體組的AS號相同。
· 該方式下,對等體組中所有對等體的AS號都等於對等體組的AS號。
表1-7 配置EBGP對等體組(方式二)
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
創建EBGP對等體組 |
group group-name external |
必選 |
|
設置對等體的AS號 |
peer ip-address as-number as-number |
必選 |
|
向對等體組中添加對等體 |
peer ip-address group group-name [ as-number as-number ] |
必選 as-number as-number參數可選可不選,如果選擇則必須和peer ip-address as-number as-number命令中配置的一致 |
|
配置通過peer as-number命令指定對等體後,默認使能該對等體的IPv4單播地址族能力 |
default ipv4-unicast |
可選 缺省情況下,對等體的IPv4單播地址族能力處於使能狀態,即可以與對等體交換IPv4單播地址族的路由信息 BGP-VPN實例視圖下不支持本命令 |
|
激活指定對等體 |
peer ip-address enable |
可選 缺省情況下,BGP對等體處於激活狀態 |
|
配置對等體組的描述信息 |
peer group-name description description-text |
可選 缺省情況下,對等體組沒有描述信息 |
該方式下,對等體組中對等體的AS號可以相同也可以不同。
表1-8 配置EBGP對等體組(方式三)
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
創建EBGP對等體組 |
group group-name external |
必選 |
|
向對等體組中添加對等體 |
peer ip-address group group-name as-number as-number |
必選 |
|
激活指定對等體 |
peer ip-address enable |
可選 缺省情況下,BGP對等體處於激活狀態 |
|
配置對等體組的描述信息 |
peer group-name description description-text |
可選 缺省情況下,對等體組沒有描述信息 |
該方式下,對等體組中對等體的AS號可以相同也可以不同。
BGP使用TCP作為其傳輸層協議,缺省情況下,BGP使用到達對等體最佳路由的出接口作為與對等體/對等體組建立TCP連接的源接口,即采用最佳路由出接口的主IP地址與對等體/對等體組建立TCP連接。在如下場合可以通過本配置指定建立TCP連接使用的源接口(即采用指定源接口的主IP地址與對等體/對等體組建立TCP連接):
· 當指定的對等體的IP地址不是本地路由器與對等體之間直連接口的IP地址時,需要在對等體上通過本配置將建立TCP連接使用的源接口指定為對等體IP地址所在的接口。例如,本端設備通過接口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接口,以提高TCP連接的可靠性和穩定性。
· 當兩個設備之間建立多條BGP會話時,如果沒有為每個會話明確指定建立TCP連接的源接口,可能會由於無法根據到達BGP對等體的最優路由確定TCP連接源接口從而導致無法建立TCP連接,在此情況下建議用戶配置BGP對等體時明確配置BGP會話建立TCP連接的源接口。
表1-9 配置建立TCP連接使用的源接口
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置與對等體/對等體組創建BGP會話時建立TCP連接使用的源接口 |
peer { group-name | ip-address } connect-interface interface-type interface-number |
必選 缺省情況下,BGP使用到達BGP對等體的最佳路由的出接口作為與對等體/對等體組創建BGP會話時建立TCP連接的源接口 |
要生成BGP路由,可以通過以下一種或幾種途徑:
· 配置BGP發布本地路由
· 配置BGP引入IGP路由協議的路由
進行下麵的配置之前,需要先創建並配置路由策略。路由策略的詳細介紹及配置方法,請參見“三層技術-IP路由配置指導”中的“路由策略”。
通過本配置可以將本地路由表中指定網段的路由添加到BGP路由表中,以便通過BGP發布該網段路由。通過該種方式發布的路由的ORIGIN屬性為IGP。網絡管理員還可以通過使用路由策略更為靈活地控製所發布的路由。
表1-10 配置BGP發布本地路由
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
將本地路由表中指定網段的路由添加到BGP路由表中 |
network ip-address [ mask | mask-length ] [ route-policy route-policy-name ] |
必選 缺省情況下,BGP不發布任何本地的網段路由 |
本配置中指定的網段路由必須存在於本地的IP路由表中,且處於Active狀態,否則無法將該網段路由添加到BGP路由表中。
BGP可以向鄰居AS發送本地AS內部網絡的路由信息,但BGP不是自己去發現AS內部的路由信息,而是將IGP路由協議的路由信息引入到BGP路由表中,並發布給對等體。在引入IGP路由協議的路由時,可以針對不同的路由協議來對路由信息進行過濾。
缺省情況下,BGP引入IGP路由協議的路由時,不會引入該協議的缺省路由。用戶可以通過配置,指定BGP引入IGP路由協議的路由時,允許將缺省路由引入到BGP路由表中。
通過引入方式發布的路由的ORIGIN屬性為Incomplete。
表1-11 配置BGP引入IGP路由協議的路由
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
將IGP路由協議的路由信息引入到BGP路由表中 |
import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ] |
必選 缺省情況下,BGP不引入其它協議的路由 目前隻有OSPF協議支持配置allow-direct參數 |
|
允許將缺省路由引入到BGP路由表中 |
default-route imported |
可選 缺省情況下,BGP不允許將缺省路由引入到BGP路由表中 |
隻能引入路由表中狀態為active的路由,是否為active狀態可以通過display ip routing-table protocol命令來查看。display ip routing-table protocol命令的詳細介紹,請參見“三層技術-IP路由命令參考”中的“IP路由基礎”。
在中型或大型BGP網絡中,在向對等體發布路由信息時,可以需要配置路由聚合,減少發布的路由數量,並減小路由表的規模。BGP支持自動聚合和手動聚合兩種聚合方式,同時配置時,手動聚合的優先級高於自動聚合的優先級。
配置自動聚合功能後,BGP將對引入的IGP子網路由進行聚合,不再發布子網路由,而是發布聚合後的自然網段的路由。
需要注意的是,用network命令發布的路由不能進行自動聚合。
表1-12 配置路由自動聚合
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置對引入的IGP子網路由進行自動聚合 |
summary automatic |
必選 缺省情況下,不對引入的IGP子網路由進行自動聚合 |
自動聚合是按照自然網段進行聚合,而且隻能對IGP引入的子網路由進行聚合。
通過配置手動聚合,用戶可以同時對IGP引入的子網路由和用network命令發布的路由進行聚合,而且還可以根據需要定義聚合路由的子網掩碼長度。
表1-13 配置路由手動聚合
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置路由手動聚合 |
aggregate ip-address { mask | mask-length } [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ] * |
必選 缺省情況下,不進行路由聚合 |
執行本配置後,設備將向指定對等體/對等體組發布一條下一跳地址為本地地址的缺省路由。
表1-14 配置向對等體/對等體組發送缺省路由
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
向對等體/對等體組發送缺省路由 |
peer { group-name | ip-address } default-route-advertise [ route-policy route-policy-name ] |
必選 缺省情況下,不向對等體/對等體組發送缺省路由 |
配置BGP路由信息的發布/接收策略前,根據采取的策略,需要配置下列過濾器:
· 訪問控製列表
· IP地址前綴列表
· 路由策略
· AS路徑過濾列表
關於訪問控製列表的詳細配置過程,請參考“ACL和QoS配置指導”中的“ACL”。
關於IP地址前綴列表、路由策略和AS路徑過濾列表的詳細配置過程,請參考“三層技術-IP路由配置指導”中的“路由策略”。
可以通過以下幾種方式配置BGP路由信息的發布策略:
· 使用訪問控製列表或IP地址前綴列表對向所有對等體發布的路由信息進行過濾。
· 向指定對等體或對等體組發布路由時,使用路由策略、訪問控製列表、AS路徑過濾列表或IP地址前綴列表對發布給該對等體或對等體組的路由信息進行過濾。
用戶可以根據需求選擇過濾策略。如果同時配置了幾種過濾策略,則按照如下順序過濾發布的路由信息:
· filter-policy export
· peer filter-policy export
· peer as-path-acl export
· peer ip-prefix export
· peer route-policy export
隻有通過前麵的過濾策略,才能繼續執行後麵的過濾策略;隻有通過所有配置的過濾策略後,路由信息才能被發布。
表1-15 配置BGP路由信息的發布策略
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
對向所有對等體發布的路由信息進行過濾 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ direct | isis process-id | ospf process-id | rip process-id | | static ] |
至少選其一 缺省情況下,不對發布的路由信息進行過濾 |
|
為對等體/對等體組設置基於路由策略的路由發布過濾策略 |
peer { group-name | ip-address } route-policy route-policy-name export |
||
為對等體/對等體組設置基於ACL的路由發布過濾策略 |
peer { group-name | ip-address } filter-policy acl-number export |
||
為對等體/對等體組設置基於AS路徑過濾列表的路由發布過濾策略 |
peer { group-name | ip-address } as-path-acl as-path-acl-number export |
||
為對等體/對等體組設置基於IP前綴列表的路由發布過濾策略 |
peer { group-name | ip-address } ip-prefix ip-prefix-name export |
可以通過以下幾種方式配置BGP路由信息的接收策略:
· 使用訪問控製列表或IP地址前綴列表對從所有對等體接收的路由信息進行過濾。
· 從指定對等體或對等體組接收路由時,使用路由策略、訪問控製列表、AS路徑過濾列表或IP地址前綴列表對從該對等體或對等體組接收的路由信息進行過濾。
用戶可以根據需求選擇過濾策略。如果同時配置了幾種過濾策略,則按照如下順序過濾接收的路由:
· filter-policy import
· peer filter-policy import
· peer as-path-acl import
· peer ip-prefix import
· peer route-policy import
隻有通過前麵的過濾策略,才能繼續執行後麵的過濾策略;隻有通過所有配置的過濾策略後,路由信息才能被接收。
表1-16 配置BGP路由信息的接收策略
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
對從所有對等體接收的路由信息進行過濾 |
filter-policy { acl-number | ip-prefix ip-prefix-name } import |
至少選其一 缺省情況下,不對接收的路由信息進行過濾 |
|
為對等體/對等體組設置基於路由策略的路由接收過濾策略 |
peer { group-name | ip-address } route-policy route-policy-name import |
||
為對等體/對等體組設置基於ACL的路由接收過濾策略 |
peer { group-name | ip-address } filter-policy acl-number import |
||
為對等體/對等體組設置基於AS路徑過濾列表的路由接收過濾策略 |
peer { group-name | ip-address } as-path-acl as-path-acl-number import |
||
為對等體/對等體組設置基於IP前綴列表的路由接收過濾策略 |
peer { group-name | ip-address } ip-prefix ip-prefix-name import |
IBGP和IGP之間同步的目的是避免出現誤導外部AS路由器的現象。
BGP路由器收到一條IBGP路由後,缺省隻檢查該路由的下一跳是否可達。如果可達,BGP路由器就將這條IBGP路由發布給EBGP對等體。如果一個AS中有非BGP路由器提供轉發服務,經該AS轉發的IP報文將可能因為目的地址不可達而被丟棄。如圖1-10所示,Router E通過BGP從Router D可以學到Router A的一條路由8.0.0.0/8,於是將到這個目的地址的報文轉發給Router D,Router D查詢路由表,發現下一跳是Router B(通過peer next-hop-local命令手動設置)。由於Router D從IGP學到了到Router B的路由,所以通過路由迭代,Router D將報文轉發給Router C。但Router C並不知道去8.0.0.0/8的路由,於是將報文丟棄。
圖1-10 IBGP和IGP同步
如果設置了同步特性,則在IBGP路由加入路由表並發布給EBGP對等體之前,會先檢查IGP路由表。隻有在IGP也知道這條IBGP路由,即同時滿足以下條件時,BGP路由器才會將該IBGP路由發布給EBGP對等體:
· 該路由的下一跳可達;
· 在IGP路由表中存在一條active的路由,與該IBGP路由的目的網段完全相同。(IGP路由是否為active狀態可以通過display ip routing-table protocol命令來查看)
在下麵的情況中,可以關閉同步特性。
· 本AS不是過渡AS(上圖中的AS 20就屬於一個過渡AS)
· 本AS內所有路由器建立IBGP全連接
表1-17 配置BGP與IGP路由同步
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入BGP視圖 |
bgp as-number |
- |
配置BGP與IGP路由同步 |
synchronization |
必選 缺省情況下,BGP和IGP路由不同步 |
通過本配置可以避免攻擊者向路由器發送大量的BGP路由,對路由器進行攻擊。
當路由器從指定對等體/對等體組接收的路由數量超過指定的最大值時,可以選擇以下處理方式:
· 路由器中斷與該對等體/對等體組的BGP會話。
· 路由器保持與該對等體/對等體組的BGP會話,僅打印告警信息。
· 路由器中斷與該對等體/對等體組的BGP會話,經過指定的時間後自動與對等體/對等體組重建會話。
執行本配置任務時,還可以指定路由器產生提示信息的閾值,即路由器接收的路由數量與配置的最大值的百分比達到指定的閾值時,路由器將產生提示信息。
表1-18 限製從BGP對等體/對等體組接收的路由數量
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
|||
ipv4-family vpn-instance vpn-instance-name |
|||
配置允許從對等體/對等體組接收的路由的最大數量 |
peer { group-name | ip-address } route-limit prefix-number [ { alert-only | reconnect reconnect-time } | percentage-value ] * |
必選 缺省情況下,不限製從BGP對等體/對等體組接收的路由數量 |
通常情況下,BGP路由器會保存從路由反射器發來的BGP路由的ORIGINATOR_ID屬性,確保從該對等體收到的路由不會被重新發布給該路由反射器。但是對於不同RD(Route Distinguisher,路由標識符)屬性的BGP-VPN路由可能需要重新發布給原路由反射器。通過配置peer ignore-originatorid命令,可以忽略從路由反射器收到路由中的ORIGINATOR_ID屬性。
表1-19 配置忽略BGP路由的ORIGINATOR_ID屬性
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置忽略BGP路由的ORIGINATOR_ID屬性 |
peer { group-name | ip-address } ignore-originatorid |
必選 缺省情況下,BGP路由器會保存BGP路由的ORIGINATOR_ID屬性。 |
配置本命令之前,請先確認配置後的組網環境中多個路由反射器之間不會形成路由環路。
· 配置忽略BGP路由的ORIGINATOR_ID屬性後,BGP路由的CLUSTER_LIST屬性也會被忽略。
· 關於RD的詳細介紹,請參見“MPLS 配置指導”中的“MPLS L3VPN”。
通過配置BGP衰減,可以抑製不穩定的路由信息,不將這類路由加入到路由表中,也不將這類路由向其他BGP對等體發布。
表1-20 配置BGP路由衰減
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置BGP路由衰減 |
dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] * |
必選 缺省情況下,沒有配置BGP路由衰減 |
BGP具有很多路由屬性,通過配置這些屬性可以控製BGP路徑的選擇。
BGP選擇路由時首先丟棄下一跳不可達的路由,其次優選Preferred-value值最大的路由。通過本配置,可以修改路由的Preferred-value,以便控製BGP路徑的選擇。
缺省情況下,從對等體/對等體組學到的路由的首選值為0,網絡管理員可以為從某個對等體/對等體組接收的路由配置首選值,從而提高從指定對等體/對等體組學到的路由的優先級。
表1-21 為接收路由分配首選值
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
為從對等體/對等體組接收的路由分配首選值 |
peer { group-name | ip-address } preferred-value value |
可選 缺省情況下,從對等體/對等體組接收的路由的首選值為0 |
路由器上可能同時運行多個動態路由協議,就存在各個路由協議之間路由信息共享和選擇的問題。係統為每一種路由協議設置一個優先級,在不同協議發現同一條路由時,優先級高的路由將被優先選擇。
用戶可以通過preference命令修改EBGP路由、IBGP路由以及本地產生的BGP路由的路由優先級;還可以應用路由策略為匹配過濾條件的特定路由配置優先級,對於那些沒有匹配的路由,使用缺省優先級。
缺省情況下,EBGP路由的優先級低於本地產生的BGP路由的優先級。設備上存在到達某一目的網絡的EBGP路由和本地產生的BGP路由時,不會選擇EBGP路由。通過執行network shortcut命令將一條EBGP路由配置成short-cut,可以使得指定EBGP路由的優先級與本地產生的BGP路由的優先級相同,從而提高該EBGP路由成為最佳路由的可能性。
表1-22 配置BGP的路由優先級
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置BGP路由的管理優先級 |
preference { external-preference internal-preference local-preference | route-policy route-policy-name } |
可選 缺省情況下,EBGP路由的管理優先級為255,IBGP路由的管理優先級為255,本地產生的BGP路由的管理優先級為130 |
|
提高接收到的指定EBGP路由的路由優先級 |
network ip-address [ mask | mask-length ] short-cut |
可選 缺省情況下,接收到的EBGP路由的路由優先級為255 |
本地優先級的用來判斷流量離開AS時的最佳路由。當BGP路由器通過不同的IBGP對等體得到目的地址相同但下一跳不同的多條路由時,將優先選擇本地優先級的值較高的路由。
用戶可以通過本配置改變BGP路由器向IBGP對等體發送的路由本地優先級的缺省值。
表1-23 配置本地優先級的缺省值
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置本地優先級的缺省值 |
default local-preference value |
可選 缺省情況下,本地優先級的缺省值為100 |
MED用來判斷流量進入AS時的最佳路由。當一個BGP路由器通過不同的EBGP對等體得到目的地址相同但下一跳不同的多條路由時,在其它條件相同的情況下,將優先選擇MED值較小者作為最佳路由。
可以通過多種方式配置BGP路由的MED值,按照優先級從高到底的順序依次為:
(1) 通過路由策略中的apply cost命令設置的MED值;
(2) 通過import-route命令中的med參數設置的MED值;
(3) 通過default med命令配置的MED值;
(4) 學習到的BGP路由自身的MED值,或引入的IGP路由自身的metric值。
表1-24 配置MED缺省值
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置係統MED的缺省值 |
default med med-value |
可選 缺省情況下,MED的缺省值為0 |
缺省情況下,BGP隻比較來自同一個AS的路由的MED屬性值。
通過配置compare-different-as-med命令,可以強製BGP比較來自不同AS的路由的MED屬性值。
表1-25 配置允許比較來自不同AS鄰居路由的MED屬性值
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置允許比較來自不同AS鄰居的路由路徑的MED屬性值 |
compare-different-as-med |
必選 缺省情況下,不允許比較來自不同AS鄰居的路由路徑的MED屬性值 |
缺省情況下, BGP選擇最優路由時是將新的路由和當前BGP路由表中的最優路由進行比較,隻要新的路由比當前BGP路由表中的最優路由更優,新的路由將成為最優路由,路由學習的順序有可能會影響最優路由的選擇結果。
圖1-11 MED排序優選示意圖
如上圖所示,Router D分別從Router A和Router B學習到了到達網段10.0.0.0的路由,由於Router B的Router ID值較小,因此,從Router B學來的路由被選為最優路由:
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.0.0.0 2.2.2.2 50 0 300e
* i 3.3.3.3 50 0 200e
當Router D再從Router C學習到到達10.0.0.0網段的路由時,它隻和當前路由表的最優路由進行比較。由於Router C和Router B位於不同的AS,選擇路由時不會比較MED值,而Router C的Router ID值更小,相對更優,它將成為最優路由。
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.0.0.0 1.1.1.1 60 0 200e
* i 10.0.0.0 2.2.2.2 50 0 300e
* i 3.3.3.3 50 0 200e
但是如果將這條路由與從Router A學習到的路由進行比較,那麼由於兩條路由來自同一個AS,且從Router C學習到的路由MED值更大,則從Router C學習到的路由應該視為無效路由。
在Router D上配置bestroute compare-med命令後,Router D學習到新的路由時,會首先按照路由來自的AS分組,對來自同一AS的路由根據MED值的大小進行優選,選出MED值最小的路由,然後再對優選出來的、來自不同AS的路由進行優選,從而避免路由優選結果的不確定性。配置對來自同一AS的路由進行MED排序優選後,Router D上的BGP路由表如下所示,從Router B學習到的到達10.0.0.0 網段的路由將成為最優路由。
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.0.0.0 2.2.2.2 50 0 300e
* i 3.3.3.3 50 0 200e
* i 1.1.1.1 60 0 200e
表1-26 配置對來自同一AS的路由進行MED排序優選
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置對來自同一AS的路由進行MED排序優選 |
bestroute compare-med |
必選 缺省情況下,不會對來自同一AS的路由進行MED排序優選 |
表1-27 配置允許比較來自同一聯盟不同子自治係統鄰居路由的MED屬性值
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置允許比較來自同一聯盟不同子自治係統鄰居路由的MED屬性值 |
bestroute med-confederation |
必選 缺省情況下,不比較來自同一聯盟不同子自治係統鄰居路由的MED屬性值 |
隻有AS_PATH裏不包含聯盟體外的子自治係統編號時,才會比較來自同一聯盟不同子自治係統鄰居路由的MED屬性值,例如有三條路由,它們的AS-PATH值分別為65006 65009、65007 65009和65008 65009,MED值分別為2、3、1,由於第三條路由包含了聯盟體外的子自治係統編號,因此在選擇最優路由時第一條路由將成為最優路由。
缺省情況下,路由器向IBGP對等體/對等體組發布路由時,不將自身地址作為下一跳,但有的時候為了保證IBGP鄰居能夠找到下一跳,可以配置將自身地址作為下一跳。以下圖為例,Router A與Router B建立EBGP鄰居關係,Router B與Router C建立IBGP鄰居關係,Router B在向Router C發布從Router A學到的BGP路由時,如果Router C上沒有到達1.1.1.1/24的路由,可以在Router B上配置peer next-hop-local命令將3.1.1.1/24作為下一跳,這樣,Router C就能找到下一跳。
圖1-12 配置BGP NEXT_HOP屬性應用組網圖一
在一些比較特殊的組網環境中(即兩個BGP連接在同一網段的廣播網),路由器向EBGP對等體/對等體組發布路由時不會將自身地址作為下一跳,以下圖為例:Router A與Router B建立EBGP鄰居關係,Router B與Router C建立IBGP鄰居關係,兩個BGP連接都位於同一個廣播網1.1.1.0/24中,Router B向Router A發布EBGP路由時不會將自身地址1.1.1.2/24作為下一跳,但如果用戶有需要,也可以通過配置peer next-hop-local命令實現將自身地址1.1.1.2/24作為下一跳。
圖1-13 配置BGP NEXT_HOP屬性應用組網圖二
表1-28 配置BGP的NEXT_HOP屬性
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置發布路由時將自身地址作為下一跳 |
peer { group-name | ip-address } next-hop-local |
可選 缺省情況下,向EBGP對等體/對等體組發布路由時,將自身地址作為下一跳;向IBGP對等體/對等體組發布路由時,不將自身地址作為下一跳 |
如果配置了BGP負載分擔,則不論是否配置了peer next-hop-local命令,本地路由器向IBGP對等體/對等體組發布路由時都先將下一跳地址改變為自身地址。
通常情況下,BGP會檢查對等體發來的路由的AS_PATH屬性,如果其中已存在本地AS號,則BGP會忽略此路由,以免形成路由環路。
但是,在某些特殊的組網環境下(如MPLS L3VPN的Hub&Spoke組網),需要允許本地AS號在接收路由的AS_PATH屬性中出現,否則無法正確發布路由。通過本配置,可以允許本地AS號在所接收的路由的AS_PATH屬性中出現,並可同時配置允許出現的次數。
表1-29 配置允許本地AS號出現的次數
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置允許本地AS號在AS_PATH屬性中出現的次數 |
peer { group-name | ip-address } allow-as-loop [ number ] |
必選 缺省情況下,不允許本地AS在AS_PATH屬性中出現 |
路由器在選擇最優路由時會優選AS路徑最短的路由,通過如下配置可以禁止路由器將AS_PATH當作選路算法中的一個因素。
表1-30 禁止路由器將AS_PATH當作選路算法中的一個因素
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
|||
禁止路由器將AS_PATH當作選路算法中的一個因素 |
bestroute as-path-neglect |
必選 缺省情況下,路由器將AS_PATH當作選路算法中的一個因素 |
進行係統移植時,例如,Router A原來位於AS 2,現在將它移植到AS 3裏,網絡管理員需要在Router A的所有EBGP對等體上修改Router A所在的AS號。通過在Router A上為EBGP對等體/對等體組配置一個虛擬的本地自治係統號2,可以將本地真實的AS號3隱藏起來。在EBGP對等體看來Router A始終位於AS 2,EBGP對等體上的現有配置不需要改變,從而保證在係統移植過程中不中斷現有的BGP服務。
表1-31 為對等體/對等體組指定一個虛擬的自治係統號
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
為對等體/對等體組指定一個虛擬的本地自治係統號 |
peer { group-name | ip-address } fake-as as-number |
必選 缺省情況下,沒有為對等體/對等體組配置虛擬的本地自治係統號 |
peer fake-as命令隻適用於EBGP對等體/對等體組。
在MPLS L3VPN中,如果PE和CE之間運行EBGP,由於BGP使用AS號檢測路由環路,為保證路由信息的正確發送,需要為物理位置不同的站點分配不同的AS號。
如果物理分散的CE複用相同的AS號,就應該在PE上配置BGP的AS號替換功能。此功能是BGP的出口策略,在發布路由時有效。
使能了BGP的AS號替換功能後,當PE向指定對等體中的CE發布路由時,如果路由的AS_PATH中有與CE相同的AS號,將被替換成PE的AS號後再發布。
使能了BGP的AS號替換功能後,當PE向指定對等體(CE)發布路由時,如果路由的AS_PATH中存在CE所在的AS號,則PE將該AS號替換成PE的AS號後,再發布該路由。
圖1-14 BGP AS號替換應用示意圖
如圖1-14所示,CE 1和CE 2都使用AS號800,在PE 2上使能針對CE 2的AS號替換功能。當CE 1發來的Update信息從PE 2發布給CE 2時,PE 2發現AS_PATH中存在與CE 2相同的AS號800,就把它替換為自己的AS號100。如果需要完全的連接性,PE 1上也需要做類似的配置。
表1-32 配置AS號替換功能
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置用本地AS號替換AS_PATH屬性中指定對等體/對等體組的AS號 |
peer { group-name | ip-address } substitute-as |
必選 缺省情況下,沒有用本地AS號替換AS_PATH屬性中指定對等體/對等體組的AS號 |
替換AS_PATH屬性中的AS號命令僅在特定組網環境下使用,錯誤的配置會引起路由環路。
私有AS號是內部使用的AS號,範圍為64512~65535。私有AS號主要用於測試網絡,一般情況下不需要在公共網絡中傳播。
通過本配置,可以指定如果向EBGP對等體/對等體組發送的BGP更新消息中AS_PATH屬性隻包括私有AS號,則刪除私有AS號後,將BGP更新消息發送給對等體/對等體組。
表1-33 配置發送BGP更新消息時AS_PATH屬性中不攜帶私有AS號
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置發送BGP更新消息時AS_PATH屬性中不攜帶私有AS號 |
peer { group-name | ip-address } public-as-only |
必選 缺省情況下,發送BGP更新消息時,攜帶私有AS號 |
通常情況下,BGP會檢查對等體發來的路由的AS_PATH屬性。如果第一個AS號不是BGP鄰居的AS號,則丟棄此路由。
在某些組網應用中,BGP路由器不會將自己的AS號添加到AS_PATH屬性中。此時,需要在該BGP路由器的EBGP對等體上配置ignore-first-as命令,忽略對EBGP路由第一個AS號的檢測。
表1-34 配置EBGP不檢測路由的第一個AS號
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入BGP視圖 |
bgp as-number |
- |
配置不檢測EBGP路由的第一個AS號 |
ignore-first-as |
必選 缺省情況下,係統收到EBGP路由後,會檢測路由的第一個AS號 |
當對等體間建立了BGP會話後,它們定時向對端發送Keepalive消息,以防止路由器認為BGP會話已中斷。Keepalive消息的發送時間間隔稱為存活時間間隔。
若路由器在設定的會話保持時間(Holdtime)內未收到對端的Keepalive消息或Update消息,則認為此BGP會話已中斷,從而斷開此BGP會話。
用戶可以全局配置當前路由器上所有BGP會話的存活時間間隔與保持時間,也可以配置與指定對等體/對等體組建立的BGP會話的存活時間間隔和保持時間。如果同時配置了兩者,則為指定對等體/對等體組配置的值具有較高的優先級。
· 如果當前路由器上配置的保持時間與對端設備(對等體)上配置的保持時間不一致,則數值較小者作為協商後的保持時間。
· 存活時間間隔為0,協商的保持時間不為0時,以協商的保持時間的三分之一作為存活時間間隔。
· 存活時間間隔不為0時,將協商的保持時間的三分之一與配置的存活時間間隔比較,取最小值作為存活時間間隔。
表1-35 配置BGP會話的存活時間間隔與保持時間
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
全局配置路由器上所有BGP會話的存活時間間隔與保持時間 |
timer keepalive keepalive hold holdtime |
可選 缺省情況下,存活時間間隔為60秒,保持時間為180秒 |
|
配置與指定對等體/對等體組建立的BGP會話的存活時間間隔和保持時間 |
peer { group-name | ip-address } timer keepalive keepalive hold holdtime |
可選 缺省情況下,存活時間間隔為60秒,保持時間為180秒 |
· 合理的最大Keepalive消息發送間隔為保持時間的三分之一,且該發送間隔不能小於1秒,因此,保持時間如果不為0,則最小為3秒。
· 如果與對等體的BGP會話已經建立,必須要複位BGP會話才能使新配置的存活時間間隔與保持時間生效。
· 配置timer命令後,不會影響已建立的BGP會話,隻對新建立的會話生效。
· 配置peer timer命令後,如果新配置的值與之前配置的值不同,會影響已建立的BGP會話:BGP會話會直接斷開,再使用新參數重新建立會話。
BGP路由發生變化時,BGP路由器會發送Update消息通知對等體。如果同一路由頻繁變化,BGP路由器會頻繁發送Update消息更新路由,導致路由震蕩。通過本配置指定向對等體/對等體組發布同一路由的時間間隔,可以避免每次路由變化都發送Update消息,避免路由震蕩。
表1-36 配置發布同一路由的時間間隔
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
- |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置向對等體/對等體組發布同一路由的時間間隔 |
peer { group-name | ip-address } route-update-interval interval |
可選 缺省情況下,向IBGP對等體發布同一路由的時間間隔為15秒,向EBGP對等體發布同一路由的時間間隔為30秒 |
當前路由器要與另外一個路由器建立EBGP連接,它們必須具有直連的物理鏈路,如果不滿足這一要求,則必須使用peer ebgp-max-hop命令允許它們之間經過多跳建立TCP連接。
表1-37 配置允許同非直連鄰居建立EBGP連接
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖 |
|
bgp as-number |
- |
配置允許同非直接相連網絡上的鄰居建立EBGP連接 |
peer { group-name | ip-address } ebgp-max-hop [ hop-count ] |
必選 缺省情況下,不允許同非直接相連網絡上的鄰居建立EBGP連接 |
|
直連EBGP對等體不需要配置peer ebgp-max-hop命令。
如果同時通過路由策略和peer { group-name | ip-address } preferred-value value命令為從對等體|對等體組接收的路由設置首選值,通過路由策略過濾的路由信息的首選值將取路由策略中設置的首選值而不是peer { group-name | ip-address } preferred-value value命令裏設置的首選值,隻有當路由策略裏設置的首選值為0時,路由信息的首選值才會取peer { group-name | ip-address } preferred-value value命令裏設置的值;沒有通過路由策略過濾的路由信息的首選值仍取peer { group-name | ip-address } preferred-value value命令裏設置的首選值。通過路由策略配置BGP路由信息首選值的相關配置可參考命令peer { group-name | ip-address } route-policy route-policy-name { export | import }。
BGP ORF(Outbound Route Filtering,輸出路由過濾)功能是指將ORF信息(本地的路由接收策略信息)通過Route-refresh消息發送給對等體,當對等體需要向本地發送Update更新消息時,不僅要利用對等體上的路由策略對路由進行過濾,還需要利用接收到的路由接收策略對路由進行過濾,隻有通過策略過濾的路由信息才會發給本地,以達到減少BGP鄰居間Update更新消息的交互,節省網絡資源的目的。
使能BGP ORF能力後,本地和BGP對等體會通過Open消息協商ORF能力(即收發的消息裏是否允許攜帶ORF信息,如果允許攜帶,是否可以攜帶非標準的ORF信息),當協商完畢並成功建立BGP會話後,可以通過特殊的Route-refresh消息交互ORF信息。
ORF能力協商成功需要兩端的配置來保證,關於兩端參數的選擇請參見表1-39。
表1-38 配置BGP ORF能力
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
使能BGP路由刷新功能 |
peer { group-name | ip-address } capability-advertise route-refresh |
必選 缺省情況下,BGP路由刷新功能處於使能狀態 |
|
使能BGP鄰居的非標準ORF能力 |
peer { group-name | ip-address } capability-advertise orf non-standard |
可選 缺省情況下,BGP ORF能力支持RFC5291、RFC5292的標準能力 如果對端隻支持非標準值的ORF消息,則必須配置該命令 |
|
使能BGP鄰居的ORF能力 |
peer { group-name | ip-address } capability-advertise orf ip-prefix { both | receive | send } |
必選 缺省情況下,BGP對等體/對等體組不使能鄰居的ORF能力 |
表1-39 both、send、receive參數選擇以及配置效果描述表
本地選擇參數 |
對端選擇參數 |
協商成功後 |
send |
receive |
本端隻能發送ORF信息,對端隻能接收ORF信息 |
both |
||
receive |
send |
本端隻能接收ORF信息,對端隻能發送ORF信息 |
both |
||
both |
both |
本端和對端都能夠發送和接收ORF信息 |
通常情況下,設備在與對端設備建立BGP會話時會發送BGP Open消息,在消息中的Optional parameters字段攜帶信息:說明AS號取值占用4字節(即取值範圍為1~4294967295)。此時,如果對端設備不支持AS號取值為4字節(比如隻支持2字節),則會話無法建立。
為了解決上述問題,可以使能4字節AS號抑製功能:當對端設備不支持AS號取值為4字節時,設備發出的BGP Open消息仍然可以被對端設備正常識別,從而BGP會話可以成功建立。
表1-40 使能4字節AS號抑製功能
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
使能4字節AS號抑製功能 |
peer { group-name | ip-address } capability-advertise suppress-4-byte-as |
必選 缺省情況下,設備沒有使能4字節AS號抑製功能 |
如果對端設備支持4字節AS號能力時,請不要使能該功能,否則會導致對等體無法建立。
如果使能了本功能,則連接直連EBGP對等體的鏈路down後,本地路由器會立即斷開與EBGP對等體的會話,並重新與該對等體建立EBGP會話。從而,實現快速發現鏈路故障,快速重建會話。
如果沒有使能本功能,則連接直連EBGP對等體的鏈路down後,本地路由器不會立即斷開與EBGP對等體的會話,而是等待會話保持時間(Holdtime)超時後,才斷開該會話。沒有使能本功能時,鏈路震蕩不會影響EBGP會話的狀態。
表1-41 使能直連EBGP會話快速複位功能
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
使能直連EBGP會話快速複位功能 |
ebgp-interface-sensitive |
可選 缺省情況下,直連EBGP會話快速複位功能處於使能狀態 |
通過在BGP對等體上配置BGP的MD5認證,可以在以下兩方麵提高BGP的安全性:
· 為BGP建立TCP連接時進行MD5認證,隻有兩台路由器配置的密碼相同時,才能建立TCP連接,從而避免與非法的BGP路由器建立TCP連接。
· 傳遞BGP報文時,對封裝BGP報文的TCP報文段進行MD5運算,從而保證BGP報文不會被篡改。
表1-42 配置BGP建立TCP連接時進行MD5認證
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置BGP的MD5認證 |
peer { group-name | ip-address } password { cipher | simple } password |
可選 缺省情況下,BGP在建立TCP連接時不進行MD5認證 |
通過改變BGP選路規則實現負載分擔時,如果設備上存在AS_PATH屬性、ORIGIN屬性、LOCAL_PREF屬性和MED屬性相同的多條BGP路由,則根據balance命令配置的進行BGP負載分擔的路由條數,選擇指定數目的路由進行負載分擔,以提高鏈路利用率。
表1-43 配置BGP負載分擔
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置進行BGP負載分擔的路由條數 |
balance number |
必選 缺省情況下,BGP不進行路由負載分擔 |
由於網絡升級維護等原因,需要暫時斷開與某個對等體/對等體組的BGP會話時,可以通過本配置禁止與該對等體/對等體組建立會話。當網絡恢複後,通過執行undo peer ignore命令恢複與對等體/對等體組的會話。這樣,網絡管理員無需刪除並重新進行對等體/對等體組相關配置,減少了網絡維護的工作量。
表1-44 禁止與對等體/對等體組建立會話
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
禁止與對等體/對等體組建立會話 |
peer { group-name | ip-address } ignore |
可選 缺省情況下,允許與BGP對等體/對等體組建立會話 |
BGP的選路策略改變後,為了使新的策略生效,必須複位BGP會話,即刪除並重新建立BGP會話,以便重新發布路由信息,並應用新的策略對路由信息進行過濾。複位BGP會話時,會造成短暫的BGP會話中斷。
通過BGP軟複位,可以實現在不中斷BGP會話的情況下,對BGP路由表進行更新,並應用新的選路策略。
BGP軟複位的方法有以下兩種:
· 通過Route-refresh功能實現BGP軟複位:如果BGP的路由策略發生了變化,則本地路由器會向BGP對等體發送Router-refresh消息,收到此消息的對等體將其路由信息重新發給本地路由器,本地路由器根據新的路由策略對接收到的路由信息進行過濾。采用這種方式時,要求當前路由器和對等體都支持Route-refresh功能。
· 通過將所有路由更新保存在本地的方式實現BGP軟複位:將從對等體接收的所有原始路由更新保存在本地,當選路策略發生改變後,執行refresh bgp命令對保存在本地的所有路由使用新的路由策略重新進行過濾。采用這種方式時,不要求當前路由器和對等體都支持Route-Refresh功能,但是保存路由更新需要占用較多的內存資源。
表1-45 通過Route-refresh功能實現BGP軟複位
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
使能BGP路由刷新功能 |
peer { group-name | ip-address } capability-advertise route-refresh |
可選 缺省情況下,BGP路由刷新功能處於使能狀態 |
表1-46 通過將所有路由更新保存在本地實現BGP軟複位
操作 |
命令 |
說明 |
||
進入係統視圖 |
system-view |
- |
||
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
|
進入BGP-VPN實例視圖 |
bgp as-number |
|||
ipv4-family vpn-instance vpn-instance-name |
||||
禁止BGP路由刷新功能 |
禁止BGP路由刷新功能 |
undo peer { group-name | ip-address } capability-advertise route-refresh |
二者必選其一 缺省情況下,BGP路由刷新和多協議擴展功能處於使能狀態 BGP-VPN實例視圖下不支持peer capability-advertise conventional命令 |
|
禁止BGP路由刷新和多協議擴展功能 |
peer { group-name | ip-address } capability-advertise conventional |
|||
保存所有來自對等體/對等體組的原始路由更新信息 |
peer { group-name | ip-address } keep-all-routes |
必選 缺省情況下,不保存所有來自對等體/對等體組的原始路由更新信息 |
||
退回用戶視圖 |
return |
- |
||
手工對BGP會話進行軟複位 |
refresh bgp { all | ip-address | group group-name | external | internal } { export | import } |
必選 |
||
· 配置peer keep-all-routes命令後,不論是否使用了過濾策略,都將保存指定對等體/對等體組發來的所有路由更新。當軟複位BGP連接時,這些信息可以用來重新生成BGP路由
· BGP軟複位可以在不中斷BGP連接的情況下重新刷新BGP路由表,並應用新的策略。
· BGP軟複位要求網絡中的所有BGP路由器支持路由刷新能力。如果有的路由器不支持此特性,則需要配置peer keep-all-routes命令,以便保留對等體的所有原始路由信息,供BGP軟複位時使用。
· 如果對等體不支持Route-Refresh功能,同時本端又未配置peer keep-all-routes命令,那麼在修改BGP路由信息的接收策略後,需要根據策略的影響來決定是否手工斷開鄰居,重新學習路由。
在大規模BGP網絡中,對等體的數目眾多,配置和維護極為不便,可以根據組網需要,配置對等體組、團體、路由反射器或聯盟,以降低管理難度和提高路由發布效率。對等體組的配置方法,請參見“1.3.3 配置BGP對等體組”。
在配置大型BGP網絡之前,需確保相鄰節點的網絡層互通。
缺省情況下,本地路由器不向對等體/對等體組發布團體屬性和擴展團體屬性。如果接收到的路由中攜帶團體屬性或擴展團體屬性,則本地路由器刪除該團體屬性或擴展團體屬性後,再將路由發布給對等體/對等體組。
通過本配置可以允許本地路由器在向對等體發布路由時攜帶團體屬性或擴展團體屬性,以便根據團體屬性或擴展團體屬性對路由進行過濾和控製。本配置和路由策略配合使用,可以靈活地控製路由中攜帶的團體屬性和擴展團體屬性值,例如在路由中添加團體屬性或擴展團體屬性、修改路由中原有的團體屬性或擴展團體屬性值。路由策略的詳細介紹,請參見“三層技術-IP路由配置指導”中的“路由策略”。
表1-47 配置BGP團體
操作 |
命令 |
說明 |
||
進入係統視圖 |
system-view |
- |
||
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
|
進入BGP-VPN實例視圖 |
bgp as-number |
|||
ipv4-family vpn-instance vpn-instance-name |
||||
配置向對等體/對等體組發布團體屬性或擴展團體屬性 |
配置向對等體/對等體組發布團體屬性 |
peer { group-name | ip-address } advertise-community |
二者必選其一 缺省情況下,不向對等體/對等體組發布團體屬性和擴展團體屬性 |
|
配置向對等體/對等體組發布擴展團體屬性 |
peer { group-name | ip-address } advertise-ext-community |
|||
對發布給對等體/對等體組的路由應用路由策略 |
peer { group-name | ip-address } route-policy route-policy-name export |
必選 缺省情況下,不對發布給對等體/對等體組的路由應用路由策略 |
||
如果同一個AS內有多個BGP路由器,為了減少在同一AS內建立的IBGP連接數,可以把幾個BGP路由器劃分為一個集群,將其中的一台路由器配置為路由反射器,其它路由器作為客戶機。
為了增加網絡的可靠性和防止單點故障,可以在一個集群中配置一個以上的路由反射器,這時,網絡管理員必須給位於相同集群中的每個路由反射器配置相同的集群ID,以避免路由環路。
表1-48 配置BGP路由反射器
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
配置將本機作為路由反射器,並將對等體/對等體組作為路由反射器的客戶 |
peer { group-name | ip-address } reflect-client |
必選 缺省情況下,沒有配置路由反射器及其客戶 BGP視圖和BGP-VPNv4子地址族視圖下均支持peer reflect-client命令。當在BGP視圖下配置該命令時,表示本機可以反射公網路由;當在BGP-VPNv4子地址族視圖下配置該命令時,表示本機可以反射私網路由。(在BGP視圖下使用ipv4-family vpnv4命令可以進入BGP-VPNv4子地址族視圖,ipv4-family vpnv4命令的詳細介紹請參見“MPLS命令參考”中的“MPLS L3VPN”) |
|
配置允許客戶到客戶的路由反射 |
reflect between-clients |
可選 缺省情況下,允許客戶到客戶的路由反射 |
|
配置路由反射器的集群ID |
reflector cluster-id cluster-id |
可選 缺省情況下,每個路由反射器是使用自己的Router ID作為集群ID |
通常情況下,路由反射器的客戶之間不要求是全連接的,路由缺省通過反射器從一個客戶機反射到其它客戶機;如果客戶機之間是全連接的,可以禁止路由反射器在客戶機之間反射路由,以便減少開銷。
聯盟是處理AS內部的IBGP網絡連接激增的另一種方法,它將一個自治係統劃分為若幹個子自治係統,每個子自治係統內部的IBGP對等體建立全連接關係,子自治係統之間建立EBGP連接關係。
網絡管理員將一個自治係統劃分為若幹個子自治係統後,如果路由器位於聯盟中的某個子自治係統中,需要在路由器上做如下配置:
(1) 啟動BGP,並指定該路由器所屬的子自治係統號,配置方法請參見“1.3.1 啟動BGP”;
(2) 配置聯盟ID。在不屬於聯盟的BGP發言者看來,屬於同一個聯盟的多個子自治係統是一個整體,聯盟ID就是標識聯盟這一整體的自治係統號;
(3) 如果該路由器與該聯盟的其它子自治係統建立EBGP鄰居關係,需要在該路由器上指定該聯盟體中除了自己還包含哪些子自治係統。
一個聯盟最多可包括32個子自治係統,配置屬於聯盟的子自治係統時使用的as-number僅在聯盟內部有效。
表1-49 配置BGP聯盟
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入BGP視圖 |
bgp as-number |
- |
配置聯盟的ID |
confederation id as-number |
必選 缺省情況下,未配置聯盟的ID |
指定一個聯盟體中包含了哪些子自治係統 |
confederation peer-as as-number-list |
必選 缺省情況下,未指定一個聯盟體中包含了哪些子自治係統 |
如果其他路由器的聯盟實現機製不同於RFC 3065標準,可以通過如下配置與未采用RFC 3065配置的AS聯盟兼容。
表1-50 配置聯盟兼容性
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入BGP視圖 |
bgp as-number |
- |
配置與未采用RFC 3065配置的AS聯盟兼容 |
confederation nonstandard |
可選 缺省情況下,配置的聯盟與RFC 3065一致 |
BGP GR(Graceful Restart,完美重啟)是一種在主備倒換時保證轉發業務不中斷的機製。GR有兩個角色:
· GR Restarter:發生主備倒換,且具有GR能力的設備。
· GR Helper:和GR Restarter具有鄰居關係,協助完成GR流程的設備。GR Helper也具有GR能力。
BGP GR的工作過程為:
(1) GR Restarter和GR Helper通過Open消息交互GR能力。隻有雙方都具有GR能力時,建立起的BGP會話才具備GR能力。
(2) 建立具備GR能力的BGP會話後,如果GR Restarter進行主備倒換,GR Restarter不會刪除轉發表項,仍然按照原有的轉發表項轉發報文。GR Helper發現GR Restarter進行主備倒換後,GR Helper不會刪除從該GR Restarter學習到的路由,而是將這些路由標記為失效路由,仍按照這些路由轉發報文,從而確保在GR Restarter進行主備倒換的過程中,報文轉發不會中斷。
(3) GR Restarter主備倒換完成後,它會重新與GR Helper建立BGP會話。如果在graceful-restart timer restart命令指定的時間內沒有成功建立BGP會話,則GR Helper會刪除標記為失效的路由。
(4) 如果在graceful-restart timer restart命令指定的時間內成功建立BGP會話,則GR Restarter和GR Helper在建立的BGP會話上進行路由信息交互,以便GR Restarter恢複路由信息、GR Helper根據學習到的路由刪除路由的失效標記。在GR Restarter和GR Helper上可以通過graceful-restart timer wait-for-rib命令控製路由信息交互的時間。如果在該命令指定的時間內沒有完成路由信息的交互,則GR Restarter不再接收新的路由,根據已經學習到的BGP路由信息更新路由表和轉發表,完成BGP協議收斂;GR Helper則刪除標記為失效的路由。
設備既可以作為GR restarter,又可以作為GR helper。設備的角色由該設備在BGP GR過程中的作用決定。
在作為GR Restarter和GR Helper的設備上均需要進行以下配置。
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入BGP視圖 |
bgp as-number |
- |
使能BGP協議的GR能力 |
graceful-restart |
必選 缺省情況下,BGP協議的GR能力處於關閉狀態 |
配置對端重建BGP會話的最大時間 |
graceful-restart timer restart timer |
可選 缺省情況下,對端重建BGP會話的最大時間為150秒 |
配置本端等待End-Of-RIB標記的時間 |
graceful-restart timer wait-for-rib timer |
可選 缺省情況下,本端等待End-Of-RIB標記的時間為180秒 |
· GR Restarter通過Open消息將本端配置的對端等待重建BGP會話的最大時間通告給GR Helper。GR Helper檢測到與GR Restarter之間的會話中斷後,等待重新建立BGP會話的時間為該GR Restarter通告的時間。
· 通常情況下,對端等待重建BGP會話的最大時間應小於Open消息中的Holdtime時間。
· End-Of-RIB(End of Routing-Information-Base,路由信息庫結束)標記用來標定路由更新發送的結束。
· 本端配置的等待End-Of-RIB標記的時間不會通告給對端,隻用來控製本端路由信息交互的時間,即GR Restarter上配置的時間隻用來控製GR Restarter從GR Helper接收路由更新的時間,GR Helper上配置的時間隻用來控製GR Helper從GR Restarter接收路由更新的時間。
Guard路由是一種比較特殊的路由,它的出接口為Null0。
如果當前設備是一台Guard設備,網絡管理員可以使能Guard路由引入功能,當路由器上配置了Guard路由後將Guard路由引入到BGP路由表中並向對等體發布,將BGP對等體本來要發給其它設備的流量牽引到Guard設備上來,從而在Guard設備上能夠對流量進行指定的處理操作。關於Guard路由的詳細信息以及具體配置過程,請參考“三層技術-IP路由配置指導”中的“Guard路由”。
表1-52 配置BGP引入Guard路由
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入BGP視圖 |
bgp as-number |
- |
使能Guard路由引入功能 |
import-route guard [ med med-value | route-policy route-policy-name ] * |
必選 缺省情況下,Guard路由引入功能處於關閉狀態 |
· 在路由器上配置的Guard路由不會加入到FIB表,不用於指導當前路由器的IP報文轉發;
· 引入到BGP路由表中的Guard路由的ORIGIN屬性為Incomplete。
開啟BGP模塊的Trap功能後,該模塊會生成級別為level4的警告Trap報文,用於報告該模塊的重要事件。生成的Trap報文將被發送到設備的信息中心,通過設置信息中心的參數,最終決定Trap報文的輸出規則(即是否允許輸出以及輸出方向)。(有關信息中心參數的配置請參見“網絡管理和監控配置指導”中的“信息中心”。)
表1-53 開啟Trap功能
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
開啟BGP模塊的Trap功能 |
snmp-agent trap enable bgp |
可選 缺省情況下,BGP模塊的Trap功能處於開啟狀態 |
使能BGP日誌記錄功能後,BGP會記錄鄰居關係建立以及斷開事件,通過display bgp peer log-info命令可以查看記錄的日誌信息。
表1-54 使能BGP日誌功能
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入BGP視圖 |
bgp as-number |
- 缺省情況下,係統沒有運行BGP |
全局使能BGP日誌功能 |
log-peer-change |
可選 缺省情況下,全局BGP日誌功能處於使能狀態 |
進入BGP-VPN實例視圖 |
ipv4-family vpn-instance vpn-instance-name |
可選 |
記錄指定對等體/對等體組的會話狀態和事件信息 |
peer { group-name | ip-address } log-change |
可選 記錄對等體/對等體組的會話狀態和事件信息 |
BGP協議通過存活時間(Keepalive)定時器和保持時間(Holdtime)定時器來維護鄰居關係。但這些定時器都是秒級的,而且根據協議規定,設置的保持時間應該至少為存活時間間隔的三倍。這樣使得BGP鄰居關係的檢測比較慢,對於報文收發速度快的接口會導致大量報文丟失。通過配置BGP與BFD聯動,使得BFD能夠為BGP鄰居之間的鏈路提供更快速的檢測。當鄰居之間的鏈路出現故障時,能夠加快BGP協議的收斂速度。
表1-55 配置BGP與BFD聯動
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入BGP視圖或BGP-VPN實例視圖 |
進入BGP視圖 |
bgp as-number |
二者必選其一 |
進入BGP-VPN實例視圖 |
bgp as-number |
||
ipv4-family vpn-instance vpn-instance-name |
|||
在指定鄰居上使能BFD |
peer ip-address bfd |
必選 缺省情況下,BGP的所有對等體鄰居上都沒有使能BFD鏈路檢測功能 |
· 配置BFD之前,需要使能BGP功能。
· 在BGP使能GR能力後,請慎用BFD。因為當鏈路故障時,係統可能還沒來得及啟用GR處理流程,BFD已經檢測到鏈路故障了,從而導致GR失敗。如果設備上同時配置了BGP GR和BGP BFD,則在BGP GR期間請勿去使能BGP BFD,否則可能導致GR失敗。
· 有關BFD的介紹和基本功能配置,請參見“可靠性配置指導”中的“BFD”。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後BGP的運行情況,通過查看顯示信息驗證配置的效果。
表1-56 BGP配置顯示
當BGP路由策略或協議發生變化後,如果需要通過複位BGP會話使新的配置生效,請在用戶視圖下進行下列配置。
操作 |
命令 |
複位指定的BGP會話 |
reset bgp { as-number | ip-address | all | external | group group-name | internal } |
複位IPv4單播地址族下的所有BGP會話 |
reset bgp ipv4 all |
在用戶視圖下,執行reset命令可以清除BGP相關統計信息。
操作 |
命令 |
清除路由的衰減信息並釋放被抑製的路由 |
reset bgp dampening [ ip-address [ mask | mask-length ] ] |
清除路由的震蕩統計信息 |
reset bgp flap-info [ ip-address [ mask-length | mask ] | as-path-acl as-path-acl-number | regexp as-path-regular-expression ] reset bgp peer-ip-address flap-info |
缺省情況下,以太網接口、VLAN接口及聚合接口處於DOWN狀態。如果要對這些接口進行配置,請先使用undo shutdown命令使這些接口處於UP狀態。
如圖1-15所示,所有設備均運行BGP協議。要求Switch A和Switch B之間建立EBGP連接,Switch B和Switch C之間建立IBGP連接,使得Switch C能夠訪問Switch A直連的8.1.1.0/24網段。
圖1-15 BGP基本配置組網圖
(1) 配置各接口的IP地址(略)
(2) 配置IBGP連接
· 為了防止端口狀態不穩定引起路由震蕩,本舉例使用Loopback接口來創建IBGP對等體。
· 使用Loopback接口創建IBGP對等體時,因為Loopback接口不是兩對等體實際連接的接口,所以,必須使用peer connect-interface命令將Loopback接口配置為BGP連接的源接口。
· 在AS 65009內部,使用OSPF協議,保證Switch B到Switch C的Loopback接口路由可達, Switch C到Switch B的Loopback接口路由可達。
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 3.3.3.3 as-number 65009
[SwitchB-bgp] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp] quit
[SwitchB] ospf 1
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[SwitchB-ospf-1-area-0.0.0.0] network 9.1.1.1 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 65009
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 2.2.2.2 as-number 65009
[SwitchC-bgp] peer 2.2.2.2 connect-interface loopback 0
[SwitchC-bgp] quit
[SwitchC] ospf 1
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0
[SwitchC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
[SwitchC] display bgp peer
BGP local router ID : 3.3.3.3
Local AS number : 65009
Total number of peers : 1 Peers in established state : 1
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
2.2.2.2 65009 2 2 0 0 00:00:13 Established
以上顯示信息表明Switch B和Switch C之間的IBGP連接已經建立。
(3) 配置EBGP連接
· EBGP鄰居關係的兩台設備(通常屬於兩個不同運營商),處於不同的AS域,對端的Loopback接口一般路由不可達,所以一般使用直連地址建立BGP鄰居。
· 因為要求Switch C能夠訪問Switch A直連的8.1.1.0/24網段,所以,建立EBGP連接後,需要將8.1.1.0/24網段路由通告到BGP路由表中。
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 3.1.1.1 as-number 65009
[SwitchA-bgp] network 8.1.1.1 24
[SwitchA-bgp] quit
# 配置Switch B。
[SwitchB] bgp 65009
[SwitchB-bgp] peer 3.1.1.2 as-number 65008
[SwitchB-bgp] quit
# 查看Switch B的BGP對等體的連接狀態。
[SwitchB] display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 65009
Total number of peers : 2 Peers in established state : 2
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
3.3.3.3 65009 4 4 0 0 00:02:49 Established
3.1.1.2 65008 2 2 0 0 00:00:05 Established
可以看出,Switch B與Switch C、Switch B與Switch A之間的BGP連接均已建立。
# 查看Switch A的BGP路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 1.1.1.1
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.1.1.0/24 0.0.0.0 0 0 i
# 顯示Switch B的BGP路由表。
[SwitchB] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 2.2.2.2
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.1.1.0/24 3.1.1.2 0 0 65008i
# 顯示Switch C的BGP路由表。
[SwitchC] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 3.3.3.3
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 8.1.1.0/24 3.1.1.2 0 100 0 65008i
從路由表可以看出,Switch A沒有學到AS 65009內部的任何路由,Switch C雖然學到了AS 65008中的8.1.1.0的路由,但因為下一跳3.1.1.2不可達,所以也不是有效路由。
(4) 配置BGP引入直連路由
在Switch B上配置BGP引入直連路由,以便Switch A能夠獲取到網段9.1.1.0/24的路由,Switch C能夠獲取到網段3.1.1.0/24的路由。
# 配置Switch B。
[SwitchB] bgp 65009
[SwitchB-bgp] import-route direct
# 顯示Switch A的BGP路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 4
BGP Local router ID is 1.1.1.1
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? – incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 2.2.2.2/32 3.1.1.1 0 0 65009?
* 3.1.1.0/24 3.1.1.1 0 0 65009?
*> 8.1.1.0/24 0.0.0.0 0 0 i
*> 9.1.1.0/24 3.1.1.1 0 0 65009?
以上顯示信息表明,在Switch B上引入直連路由後,Switch A新增了到2.2.2.2/32和9.1.1.0/24兩條路由。
# 顯示Switch C的BGP路由表。
[SwitchC] display bgp routing-table
Total Number of Routes: 4
BGP Local router ID is 3.3.3.3
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 2.2.2.2/32 2.2.2.2 0 100 0 ?
*>i 3.1.1.0/24 2.2.2.2 0 100 0 ?
*>i 8.1.1.0/24 3.1.1.2 0 100 0 65008i
* i 9.1.1.0/24 2.2.2.2 0 100 0 ?
以上顯示信息表明,到8.1.1.0的路由變為有效路由,下一跳為Switch A的地址。
(5) 驗證配置結果
# 使用Ping進行驗證。
[SwitchC] ping 8.1.1.1
PING 8.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 8.1.1.1: bytes=56 Sequence=1 ttl=254 time=2 ms
Reply from 8.1.1.1: bytes=56 Sequence=2 ttl=254 time=2 ms
Reply from 8.1.1.1: bytes=56 Sequence=3 ttl=254 time=2 ms
Reply from 8.1.1.1: bytes=56 Sequence=4 ttl=254 time=2 ms
Reply from 8.1.1.1: bytes=56 Sequence=5 ttl=254 time=2 ms
--- 8.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 2/2/2 ms
公司A的所有設備在AS 65008內,公司B的所有設備在AS 65009內,AS 65008和AS 65009通過設備Switch A和Switch B相連。
現要求實現Switch A能夠訪問AS 65009內的網段9.1.2.0/24,Switch C能夠訪問AS 65008內的網段8.1.1.0/24。
圖1-16 BGP與IGP交互配置組網圖
(1) 配置各接口的IP地址(略)
(2) 配置OSPF
在AS 65009內配置OSPF,使得Switch B能獲取到到9.1.2.0/24網段的路由。
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf 1
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[SwitchB-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf 1
[SwitchC-ospf-1] import-route direct
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 9.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
(3) 配置EBGP連接
配置EBGP連接,並在Switch A上將8.1.1.0/24網段通告到BGP路由表中,以便Switch B獲取到網段8.1.1.0/24的路由。
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 3.1.1.1 as-number 65009
[SwitchA-bgp] network 8.1.1.0 24
[SwitchA-bgp] quit
# 配置Switch B。
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 3.1.1.2 as-number 65008
(4) 配置BGP與IGP交互
· 在Switch B上配置BGP引入OSPF路由,以便Switch A能夠獲取到到9.1.2.0/24網段的路由。
· 在Switch B上配置OSPF引入BGP路由,以便Switch C能夠獲取到到8.1.1.0/24網段的路由。
# 在Switch B上配置BGP引入OSPF路由。
[SwitchB-bgp] import-route ospf 1
[SwitchB-bgp] quit
[SwitchB] ospf 1
[SwitchB-ospf-1] import-route bgp
[SwitchB-ospf-1] quit
# 查看Switch A的BGP路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 3
BGP Local router ID is 1.1.1.1
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 3.3.3.3/32 3.1.1.1 1 0 65009?
*> 8.1.1.0/24 0.0.0.0 0 0 i
*> 9.1.2.0/24 3.1.1.1 1 0 65009?
# 查看SwitchC的路由表。
[SwitchC] display ip routing-table
Routing Tables: Public
Destinations : 9 Routes : 9
Destination/Mask Proto Pre Cost NextHop Interface
2.2.2.2/32 OSPF 10 1 9.1.1.1 Vlan300
3.3.3.3/32 Direct 0 0 127.0.0.1 InLoop0
8.1.1.0/24 O_ASE 150 1 9.1.1.1 Vlan300
9.1.1.0/24 Direct 0 0 9.1.1.2 Vlan300
9.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0
9.1.2.0/24 Direct 0 0 9.1.2.1 Vlan400
9.1.2.1/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
(5) 驗證配置結果
# 使用Ping進行驗證。
[SwitchA] ping -a 8.1.1.1 9.1.2.1
PING 9.1.2.1: 56 data bytes, press CTRL_C to break
Reply from 9.1.2.1: bytes=56 Sequence=1 ttl=254 time=15 ms
Reply from 9.1.2.1: bytes=56 Sequence=2 ttl=254 time=31 ms
Reply from 9.1.2.1: bytes=56 Sequence=3 ttl=254 time=47 ms
Reply from 9.1.2.1: bytes=56 Sequence=4 ttl=254 time=46 ms
Reply from 9.1.2.1: bytes=56 Sequence=5 ttl=254 time=47 ms
--- 9.1.2.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 15/37/47 ms
[SwitchC] ping -a 9.1.2.1 8.1.1.1
PING 8.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 8.1.1.1: bytes=56 Sequence=1 ttl=254 time=2 ms
Reply from 8.1.1.1: bytes=56 Sequence=2 ttl=254 time=2 ms
Reply from 8.1.1.1: bytes=56 Sequence=3 ttl=254 time=2 ms
Reply from 8.1.1.1: bytes=56 Sequence=4 ttl=254 time=2 ms
Reply from 8.1.1.1: bytes=56 Sequence=5 ttl=254 time=2 ms
--- 8.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 2/2/2 ms
所有交換機都配置BGP,Switch A在AS 65008中,Switch B和Switch C在AS 65009中。
Switch A與Switch B、Switch C之間運行EBGP,Switch B和Switch C之間運行IBGP。
在Switch A上配置負載分擔的路由條數為2,以提高鏈路利用率。
圖1-17 BGP負載分擔配置組網圖
(1) 配置各接口的IP地址(略)
(2) 配置BGP連接
· 在Switch A上與Switch B、Switch C分別建立EBGP連接,並將8.1.1.0/24網段的路由通告給Switch B和Switch C,以便Switch B和Switch C能夠訪問Switch A的內部網絡。
· 在Switch B上與Switch A建立EBGP連接,與Switch C建立IBGP連接,並將9.1.1.0/24網段的路由通告給Switch A,以便Switch A能夠通過Switch B訪問內部網絡。同時,在Switch B上配置一條到Switch C Loopback0接口的靜態路由(也可以用OSPF等協議來實現),以便使用Loopback接口建立IBGP連接。
· 在Switch C上與Switch A建立EBGP連接,與Switch B建立IBGP連接,並將9.1.1.0/24網段的路由通告給Switch A,以便Switch A能夠通過Switch C訪問內部網絡。同時,在Switch C上配置一條到Switch B Loopback0接口的靜態路由(也可以用OSPF等協議來實現),以便使用Loopback接口建立IBGP連接。
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 3.1.1.1 as-number 65009
[SwitchA-bgp] peer 3.1.2.1 as-number 65009
[SwitchA-bgp] network 8.1.1.1 24
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 3.1.1.2 as-number 65008
[SwitchB-bgp] peer 3.3.3.3 as-number 65009
[SwitchB-bgp] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp] network 9.1.1.0 255.255.255.0
[SwitchB-bgp] quit
[SwitchB] ip route-static 3.3.3.3 32 9.1.1.2
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 65009
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 3.1.2.2 as-number 65008
[SwitchC-bgp] peer 2.2.2.2 as-number 65009
[SwitchC-bgp] peer 2.2.2.2 connect-interface loopback 0
[SwitchC-bgp] network 9.1.1.0 255.255.255.0
[SwitchC-bgp] quit
[SwitchC] ip route-static 2.2.2.2 32 9.1.1.1
# 查看Switch A的路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 3
BGP Local router ID is 1.1.1.1
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? – incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.1.1.0/24 0.0.0.0 0 0 i
*> 9.1.1.0/24 3.1.1.1 0 0 65009i
* 3.1.2.1 0 0 65009i
· 從BGP路由表中可以看出,到目的地址9.1.1.0/24有兩條有效路由,其中下一跳為3.1.1.1的路由前有標誌“*>”,表示它是當前有效的最優路由(因為Switch B的設備ID要小一些);而下一跳為3.1.2.1的路由前隻有標誌“*”,表示它是當前有效的路由,但不是最優的。
· 使用display ip routing-table命令查看IP路由表項,可以看出到達目的地址9.1.1.0/24的路由隻有一條,下一跳地址為3.1.1.1,出接口為Vlan200。
(3) 配置負載分擔
因為Switch A有兩條路徑到達AS 65009的內部網絡,所以,在Switch A配置負載分擔的路由條數為2,以提高鏈路利用率。
# 配置Switch A。
[SwitchA] bgp 65008
[SwitchA-bgp] balance 2
[SwitchA-bgp] quit
(4) 驗證配置結果
# 查看Switch A的路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 3
BGP Local router ID is 1.1.1.1
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.1.1.0/24 0.0.0.0 0 0 i
*> 9.1.1.0/24 3.1.1.1 0 0 65009i
*> 3.1.2.1 0 0 65009i
· 從BGP路由表中可以看到,BGP路由9.1.1.0/24存在兩個下一跳,分別是3.1.1.1和3.1.2.1,兩條路由前都有標誌“*>”,表明它們都是當前有效的最優路由。
· 使用display ip routing-table命令查看IP路由表項,可以看出到達目的地址9.1.1.0/24的路由有兩條,其中一條的下一跳地址為3.1.1.1,出接口為Vlan200;另一條的下一跳地址為3.1.2.1,出接口為Vlan300。
Switch B分別與Switch A、Switch C之間建立EBGP連接。
通過在Switch A上配置NO_EXPORT團體屬性,使得AS 10發布到AS 20中的路由,不再被AS 20向其他AS發布。
圖1-18 BGP團體組網圖
(1) 配置各接口的IP地址(略)
(2) 配置EBGP
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 10
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 200.1.2.2 as-number 20
[SwitchA-bgp] network 9.1.1.0 255.255.255.0
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 20
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 200.1.2.1 as-number 10
[SwitchB-bgp] peer 200.1.3.2 as-number 30
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 30
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 200.1.3.1 as-number 20
[SwitchC-bgp] quit
# 查看Switch B的路由表。
[SwitchB] display bgp routing-table 9.1.1.0
BGP local router ID : 2.2.2.2
Local AS number : 20
Paths: 1 available, 1 best
BGP routing table entry information of 9.1.1.0/24:
From : 200.1.2.1 (1.1.1.1)
Original nexthop: 200.1.2.1
AS-path : 10
Origin : igp
Attribute value : MED 0, pref-val 0, pre 255
State : valid, external, best,
Advertised to such 1 peers:
200.1.3.2
可以看出,Switch B把收到的路由發布給了位於AS 30內的Switch C。
# 查看Switch C的路由表。
[SwitchC] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 3.3.3.3
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 9.1.1.0/24 200.1.3.1 0 0 20 10i
從路由表可以確認,Switch C從Switch B那裏學到了目的地址為9.1.1.0/24的路由。
(3) 配置BGP團體屬性
# 配置路由策略。
[SwitchA] route-policy comm_policy permit node 0
[SwitchA-route-policy] apply community no-export
[SwitchA-route-policy] quit
# 應用路由策略。
[SwitchA] bgp 10
[SwitchA-bgp] peer 200.1.2.2 route-policy comm_policy export
[SwitchA-bgp] peer 200.1.2.2 advertise-community
# 查看Switch B的路由表。
[SwitchB] display bgp routing-table 9.1.1.0
BGP local router ID : 2.2.2.2
Local AS number : 20
Paths: 1 available, 1 best
BGP routing table entry information of 9.1.1.0/24:
From : 200.1.2.1 (1.1.1.1)
Original nexthop: 200.1.2.1
Community : No-Export
AS-path : 10
Origin : igp
Attribute value : MED 0, pref-val 0, pre 255
State : valid, external, best,
Not advertised to any peers yet
在Switch B的BGP路由表中可以看到配置的團體屬性。此時在Switch C的BGP路由表中已經沒有到目的地址9.1.1.0/24的路由。
所有交換機運行BGP協議,Switch A與Switch B建立EBGP連接,Switch C與Switch B和Switch D之間建立IBGP連接。
Switch C作為路由反射器,Switch B和Switch D為Switch C的客戶機。
Switch D能夠通過Switch C學到路由1.0.0.0/8。
圖1-19 配置BGP路由反射器的組網圖
(1) 配置各接口的IP地址(略)
(2) 配置BGP連接
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 100
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 192.1.1.2 as-number 200
# 通告1.0.0.0/8網段路由到BGP路由表中。
[SwitchA-bgp] network 1.0.0.0
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 200
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 192.1.1.1 as-number 100
[SwitchB-bgp] peer 193.1.1.1 as-number 200
[SwitchB-bgp] peer 193.1.1.1 next-hop-local
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 200
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 193.1.1.2 as-number 200
[SwitchC-bgp] peer 194.1.1.2 as-number 200
[SwitchC-bgp] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp] router-id 4.4.4.4
[SwitchD-bgp] peer 194.1.1.1 as-number 200
[SwitchD-bgp] quit
(3) 配置路由反射器
# 配置Switch C。
[SwitchC] bgp 200
[SwitchC-bgp] peer 193.1.1.2 reflect-client
[SwitchC-bgp] peer 194.1.1.2 reflect-client
[SwitchC-bgp] quit
(4) 驗證配置結果
# 查看Switch B的BGP路由表。
[SwitchB] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 200.1.2.2
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.0.0.0 192.1.1.1 0 0 100i
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 200.1.2.1
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 1.0.0.0 193.1.1.2 0 100 0 100i
可以看出,Switch D從Switch C已經學到了1.0.0.0/8路由。
AS 200中有多台BGP交換機,為了減少IBGP的連接數,現將他們劃分為3個子自治係統:AS 65001、AS 65002和AS 65003。其中AS 65001內的三台交換機建立IBGP全連接。
圖1-20 配置聯盟組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
200.1.1.1/24 |
Switch D |
Vlan-int200 |
10.1.5.1/24 |
|
Vlan-int200 |
10.1.1.1/24 |
|
Vlan-int400 |
10.1.3.2/24 |
|
Vlan-int300 |
10.1.2.1/24 |
Switch E |
Vlan-int200 |
10.1.5.2/24 |
|
Vlan-int400 |
10.1.3.1/24 |
|
Vlan-int500 |
10.1.4.2/24 |
|
Vlan-int500 |
10.1.4.1/24 |
Switch F |
Vlan-int100 |
200.1.1.2/24 |
Switch B |
Vlan-int200 |
10.1.1.2/24 |
|
Vlan-int600 |
9.1.1.1/24 |
Switch C |
Vlan-int300 |
10.1.2.2/24 |
|
|
|
(1) 配置各接口的IP地址(略)
(2) 配置BGP聯盟
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65001
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] confederation id 200
[SwitchA-bgp] confederation peer-as 65002 65003
[SwitchA-bgp] peer 10.1.1.2 as-number 65002
[SwitchA-bgp] peer 10.1.1.2 next-hop-local
[SwitchA-bgp] peer 10.1.2.2 as-number 65003
[SwitchA-bgp] peer 10.1.2.2 next-hop-local
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65002
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] confederation id 200
[SwitchB-bgp] confederation peer-as 65001 65003
[SwitchB-bgp] peer 10.1.1.1 as-number 65001
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 65003
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] confederation id 200
[SwitchC-bgp] confederation peer-as 65001 65002
[SwitchC-bgp] peer 10.1.2.1 as-number 65001
[SwitchC-bgp] quit
(3) 配置AS 65001內的IBGP連接
# 配置Switch A。
[SwitchA] bgp 65001
[SwitchA-bgp] peer 10.1.3.2 as-number 65001
[SwitchA-bgp] peer 10.1.3.2 next-hop-local
[SwitchA-bgp] peer 10.1.4.2 as-number 65001
[SwitchA-bgp] peer 10.1.4.2 next-hop-local
[SwitchA-bgp] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] bgp 65001
[SwitchD-bgp] router-id 4.4.4.4
[SwitchD-bgp] confederation id 200
[SwitchD-bgp] peer 10.1.3.1 as-number 65001
[SwitchD-bgp] peer 10.1.5.2 as-number 65001
[SwitchD-bgp] quit
# 配置Switch E。
<SwitchE> system-view
[SwitchE] bgp 65001
[SwitchE-bgp] router-id 5.5.5.5
[SwitchE-bgp] confederation id 200
[SwitchE-bgp] peer 10.1.4.1 as-number 65001
[SwitchE-bgp] peer 10.1.5.1 as-number 65001
[SwitchE-bgp] quit
(4) 配置AS 100和AS 200之間的EBGP連接
# 配置Switch A。
[SwitchA] bgp 65001
[SwitchA-bgp] peer 200.1.1.2 as-number 100
[SwitchA-bgp] quit
# 配置Switch F。
<SwitchF> system-view
[SwitchF] bgp 100
[SwitchF-bgp] router-id 6.6.6.6
[SwitchF-bgp] peer 200.1.1.1 as-number 200
[SwitchF-bgp] network 9.1.1.0 255.255.255.0
[SwitchF-bgp] quit
(5) 驗證配置結果
# 查看Switch B的BGP路由表。
[SwitchB] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 2.2.2.2
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 9.1.1.0/24 10.1.1.1 0 100 0 (65001) 100i
[SwitchB] display bgp routing-table 9.1.1.0
BGP local router ID : 2.2.2.2
Local AS number : 65002
Paths: 1 available, 1 best
BGP routing table entry information of 9.1.1.0/24:
From : 10.1.1.1 (1.1.1.1)
Relay Nexthop : 0.0.0.0
Original nexthop: 10.1.1.1
AS-path : (65001) 100
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, external-confed, best,
Not advertised to any peers yet
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 4.4.4.4
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 9.1.1.0/24 10.1.3.1 0 100 0 100i
[SwitchD] display bgp routing-table 9.1.1.0
BGP local router ID : 4.4.4.4
Local AS number : 65001
Paths: 1 available, 1 best
BGP routing table entry information of 9.1.1.0/24:
From : 10.1.3.1 (1.1.1.1)
Relay Nexthop : 0.0.0.0
Original nexthop: 10.1.3.1
AS-path : 100
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, internal, best,
Not advertised to any peers yet
通過以上顯示信息可以看出:
· Switch F隻需要和Switch A建立EBGP連接,而不需要和Switch B、Switch C建立連接,同樣可以通過聯盟將路由信息傳遞給Switch B和Switch C。
· Switch B和Switch D在同一個聯盟裏,但是屬於不同的子自治域,它們都是通過Switch A來獲取外部路由信息,生成的BGP路由表項也是一致的,等效於在同一個自治域內,但是又不需要物理上全連接。
所有交換機都運行BGP協議。Switch A與Switch B和Switch C之間運行EBGP;Switch D與Switch B和Switch C之間運行IBGP。
AS 200中運行OSPF協議。
配置不同的路由策略,使得Switch D優選Switch C學到的1.0.0.0/8路由。
圖1-21 配置BGP路徑選擇的組網圖
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
|
Switch A |
Vlan-int101 |
1.0.0.0/8 |
Switch D |
Vlan-int400 |
195.1.1.1/24 |
|
Vlan-int100 |
192.1.1.1/24 |
|
Vlan-int300 |
194.1.1.1/24 |
|
Vlan-int200 |
193.1.1.1/24 |
Switch C |
Vlan-int400 |
195.1.1.2/24 |
Switch B |
Vlan-int100 |
192.1.1.2/24 |
|
Vlan-int200 |
193.1.1.2/24 |
|
Vlan-int300 |
194.1.1.2/24 |
|
|
|
(1) 配置各接口的IP地址(略)
(2) 配置Switch B、Switch C和Switch D之間運行OSPF協議
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf
[SwitchB-ospf] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 193.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] ospf
[SwitchD-ospf] area 0
[SwitchD-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] quit
[SwitchD-ospf-1] quit
(3) 配置BGP連接
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 100
[SwitchA-bgp] peer 192.1.1.2 as-number 200
[SwitchA-bgp] peer 193.1.1.2 as-number 200
# 將1.0.0.0/8網段通告到Switch A的BGP路由表中。
[SwitchA-bgp] network 1.0.0.0 8
[SwitchA-bgp] quit
# 配置Switch B。
[SwitchB] bgp 200
[SwitchB-bgp] peer 192.1.1.1 as-number 100
[SwitchB-bgp] peer 194.1.1.1 as-number 200
[SwitchB-bgp] quit
# 配置Switch C。
[SwitchC] bgp 200
[SwitchC-bgp] peer 193.1.1.1 as-number 100
[SwitchC-bgp] peer 195.1.1.1 as-number 200
[SwitchC-bgp] quit
# 配置Switch D。
[SwitchD] bgp 200
[SwitchD-bgp] peer 194.1.1.2 as-number 200
[SwitchD-bgp] peer 195.1.1.2 as-number 200
[SwitchD-bgp] quit
(4) 通過配置1.0.0.0/8路由的不同屬性值,使得Switch D優選Switch C學到的路由。
· 方法一:在Switch A上對發布給對等體192.1.1.2的1.0.0.0/8路由配置較高的MED屬性值,使得Switch D優選Switch C學到的路由。
# 定義編號為2000的ACL,允許路由1.0.0.0/8通過。
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255
[SwitchA-acl-basic-2000] quit
# 定義兩個Route-policy,一個名為apply_med_50,為路由1.0.0.0/8設置MED屬性值為50;另一個名為apply_med_100,為路由1.0.0.0/8設置MED屬性值為100。
[SwitchA] route-policy apply_med_50 permit node 10
[SwitchA-route-policy] if-match acl 2000
[SwitchA-route-policy] apply cost 50
[SwitchA-route-policy] quit
[SwitchA] route-policy apply_med_100 permit node 10
[SwitchA-route-policy] if-match acl 2000
[SwitchA-route-policy] apply cost 100
[SwitchA-route-policy] quit
# 對發布給對等體193.1.1.2(SwitchC)的路由應用名為apply_med_50的Route-policy,對發布給對等體192.1.1.2(SwitchB)的路由應用名為apply_med_100的Route-policy。
[SwitchA] bgp 100
[SwitchA-bgp] peer 193.1.1.2 route-policy apply_med_50 export
[SwitchA-bgp] peer 192.1.1.2 route-policy apply_med_100 export
[SwitchA-bgp] quit
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table
Total Number of Routes: 2
BGP Local router ID is 194.1.1.1
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.0.0.0 193.1.1.1 50 100 0 100i
* i 192.1.1.1 100 100 0 100i
可以看到,Switch D從Switch C學到1.0.0.0/8的路由是最優的。
· 方法二:在Switch B和Switch C上分別對1.0.0.0/8路由配置不同的本地優先級,使得Switch D優選Switch C學到的路由。
# 在Switch C上定義編號為2000的ACL,允許1.0.0.0/8路由通過。
[SwitchC] acl number 2000
[SwitchC-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255
[SwitchC-acl-basic-2000] quit
# 在Switch C上定義名為localpref的Route-policy,設置路由1.0.0.0/8的本地優先級為200(缺省的本地優先級為100)。
[SwitchC] route-policy localpref permit node 10
[SwitchC-route-policy] if-match acl 2000
[SwitchC-route-policy] apply local-preference 200
[SwitchC-route-policy] quit
# 為從BGP對等體193.1.1.1的路由應用名為localpref的Router-policy。
[SwitchC] bgp 200
[SwitchC-bgp] peer 193.1.1.1 route-policy localpref import
[SwitchC-bgp] quit
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table
Total Number of Routes: 2
BGP Local router ID is 194.1.1.1
Status codes: * - valid, ^ - VPNv4 best, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.0.0.0 193.1.1.1 0 200 0 100i
* i 192.1.1.1 0 100 0 100i
可以看到,Switch D從Switch C學到1.0.0.0/8的路由是最優的。
如圖1-22所示,所有設備均運行BGP協議,Switch A和Switch B之間建立EBGP連接,Switch B和Switch C之間建立IBGP全連接。現要求實現即便Switch B發生主備倒換,也不會影響Switch A和Switch C之間正在進行的數據傳輸。
圖1-22 BGP GR配置組網圖
(1) Switch A的配置
# 配置各接口的IP地址(略)。
# 配置Switch A與Switch B的EBGP連接。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 200.1.1.1 as-number 65009
# 將8.0.0.0/8網段路由通告到BGP路由表中。
[SwitchA-bgp] network 8.0.0.0
# 使能BGP GR功能。
[SwitchA-bgp] graceful-restart
(2) Switch B的配置
# 配置各接口的IP地址(略)。
# 配置Switch B與Switch A的EBGP連接。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 200.1.1.2 as-number 65008
# 配置Switch B與Switch C的IBGP連接。
[SwitchB-bgp] peer 9.1.1.2 as-number 65009
# 將200.1.1.0/24和9.1.1.0/24網段路由通告到BGP路由表中。
[SwitchB-bgp] network 200.1.1.0 24
[SwitchB-bgp] network 9.1.1.0 24
# 使能BGP GR功能。
[SwitchB-bgp] graceful-restart
(3) Switch C的配置
# 配置各接口的IP地址(略)。
# 配置Switch C與Switch B的IBGP連接。
<SwitchC> system-view
[SwitchC] bgp 65009
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 9.1.1.1 as-number 65009
# 使能BGP GR功能。
[SwitchC-bgp] graceful-restart
(4) 驗證配置結果
在Switch A上ping Switch C,同時在Switch B上觸發主備倒換,可以發現在整個倒換過程中Switch A都可以ping通Switch C。
· 在AS 200內使用OSPF作為IGP協議;
· Switch A與Switch C建立兩條IBGP連接。當Switch A與Switch C之間的兩條鏈路均連通時,Switch C與1.1.1.0/24之間的報文使用Switch A<->Switch B<->Switch C這條路徑;當Switch A<->Switch B<->Switch C鏈路故障時,BFD能夠快速檢測並通告BGP協議,使得Switch A<->Switch D<->Switch C這條路徑能夠迅速生效。
圖1-23 配置BGP與BFD聯動組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
3.0.1.1/24 |
Switch C |
Vlan-int101 |
3.0.2.2/24 |
|
Vlan-int200 |
2.0.1.1/24 |
|
Vlan-int201 |
2.0.2.2/24 |
Switch B |
Vlan-int100 |
3.0.1.2/24 |
Switch D |
Vlan-int200 |
2.0.1.2/24 |
|
Vlan-int101 |
3.0.2.1/24 |
|
Vlan-int201 |
2.0.2.1/24 |
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(略),保證Switch A和Switch C之間路由可達
(3) Switch A上的BGP配置
# 配置Switch A和Switch C建立兩條IBGP連接。
<SwitchA> system-view
[SwitchA] bgp 200
[SwitchA-bgp] peer 3.0.2.2 as-number 200
[SwitchA-bgp] peer 2.0.2.2 as-number 200
[SwitchA-bgp] quit
# 配置當Switch A與Switch C之間的兩條鏈路均連通時,Switch C與1.1.1.0/24之間的報文使用Switch A<->Switch B<->Switch C這條路徑。(在Switch A上對發布給對等體2.0.2.2的1.1.1.0/24路由配置較高的MED屬性值)
· 定義編號為2000的ACL,允許路由1.1.1.0/24通過。
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule permit source 1.1.1.0 0.0.0.255
[SwitchA-acl-basic-2000] quit
· 定義兩個Route-policy,一個名為apply_med_50,為路由1.1.1.0/24設置MED屬性值為50;另一個名為apply_med_100,為路由1.1.1.0/24設置MED屬性值為100。
[SwitchA] route-policy apply_med_50 permit node 10
[SwitchA-route-policy] if-match acl 2000
[SwitchA-route-policy] apply cost 50
[SwitchA-route-policy] quit
[SwitchA] route-policy apply_med_100 permit node 10
[SwitchA-route-policy] if-match acl 2000
[SwitchA-route-policy] apply cost 100
[SwitchA-route-policy] quit
· 對發布給對等體3.0.2.2的路由應用名為apply_med_50的Route-policy,對發布給對等體2.0.2.2的路由應用名為apply_med_100的Route-policy。
[SwitchA] bgp 200
[SwitchA-bgp] peer 3.0.2.2 route-policy apply_med_50 export
[SwitchA-bgp] peer 2.0.2.2 route-policy apply_med_100 export
# 配置當Switch A<->Switch B<->Switch C鏈路故障時,BFD能夠快速檢測並通告BGP協議,使得Switch A<->Switch D<->Switch C這條路徑能夠迅速生效。
[SwitchA-bgp] peer 3.0.2.2 bfd
[SwitchA-bgp] quit
(4) Switch C上的BGP配置。
<SwitchC> system-view
[SwitchC] bgp 200
[SwitchC-bgp] peer 3.0.1.1 as-number 200
[SwitchC-bgp] peer 3.0.1.1 bfd
[SwitchC-bgp] peer 2.0.1.1 as-number 200
[SwitchC-bgp] quit
(5) 配置各設備接口及BFD參數(該步驟可省略,使用BFD參數的缺省值即可)
# 配置Switch A。
[SwitchA] bfd session init-mode active
[SwitchA] interface vlan-interface 100
· 配置發送BFD控製報文的最小時間間隔為500毫秒。
[SwitchA-Vlan-interface100] bfd min-transmit-interval 500
· 配置接收BFD控製報文的最小時間間隔為500毫秒。
[SwitchA-Vlan-interface100] bfd min-receive-interval 500
· 配置BFD報文最大失效的個數為7。
[SwitchA-Vlan-interface100] bfd detect-multiplier 7
[SwitchA-Vlan-interface100] quit
# 配置Switch C。
[SwitchC] bfd session init-mode active
[SwitchC] interface vlan-interface 101
[SwitchC-Vlan-interface101] bfd min-transmit-interval 500
[SwitchC-Vlan-interface101] bfd min-receive-interval 500
[SwitchC-Vlan-interface101] bfd detect-multiplier 7
[SwitchC-Vlan-interface101] return
(6) 驗證配置結果
下麵以Switch C為例,Switch A和Switch C類似,不再贅述。
# 顯示Switch C的BFD信息。
<SwitchC> display bfd session verbose
Total Session Num: 1 Init Mode: Active
IP Session Working Under Ctrl Mode:
Local Discr: 17 Remote Discr: 13
Source IP: 3.0.2.2 Destination IP: 3.0.1.1
Session State: Up Interface: Vlan-interface101
Min Trans Inter: 500ms Act Trans Inter: 500ms
Min Recv Inter: 500ms Act Detect Inter: 3000ms
Recv Pkt Num: 57 Send Pkt Num: 53
Hold Time: 2200ms Connect Type: Indirect
Running Up for: 00:00:06 Auth mode: Simple
Protocol: BGP6
Diag Info: No Diagnostic
以上顯示信息表明:Switch A的VLAN接口100和Switch C的VLAN接口101之間已經建立了BFD連接,而且BFD協議運行正常。
# 在Switch C上查看BGP鄰居信息,可以看出Switch A和Switch C之間BGP鄰居處於Established狀態。
<SwitchC> display bgp peer
BGP local router ID : 1.1.1.1
Local AS number : 200
Total number of peers : 2 Peers in established state : 2
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
2.0.1.1 200 7 10 0 0 00:01:05 Established
3.0.1.1 200 7 10 0 0 00:01:34 Established
# 在Switch C上查看1.1.1.0/24的路由信息,可以看出Switch A和Switch C是通過Switch B進行通信的。
<SwitchC> display ip routing-table 1.1.1.0 24 verbose
Routing Table : Public
Summary Count : 2
Destination: 1.1.1.0/24
Protocol: BGP Process ID: 0
Preference: 0 Cost: 50
NextHop: 3.0.1.1 Interface: Vlan-interface101
BkNextHop: 0.0.0.0 BkInterface:
RelyNextHop: 3.0.2.1 Neighbor : 3.0.1.1
Tunnel ID: 0x0 Label: NULL
State: Active Adv Age: 00h08m54s
Tag: 0
Destination: 1.1.1.0/24
Protocol: BGP Process ID: 0
Preference: 0 Cost: 100
NextHop: 2.0.1.1 Interface: Vlan-interface201
BkNextHop: 0.0.0.0 BkInterface:
RelyNextHop: 2.0.2.1 Neighbor : 2.0.1.1
Tunnel ID: 0x0 Label: NULL
State: Invalid Adv Age: 00h08m54s
Tag: 0
以上顯示信息表明:Switch C到達1.1.1.0/24網段有兩條路徑:當前生效的是Switch A<->Switch B<->Switch C,Switch A<->Switch D<->Switch C這條路徑沒有生效。
# 打開Switch C的調試開關。
<SwitchC> debugging bfd scm
<SwitchC> debugging bfd event
<SwitchC> debugging bgp bfd
<SwitchC> terminal monitor
<SwitchC> terminal debugging
# Switch A和Switch B之間的鏈路發生故障後。可以看到Switch C能夠快速檢測到鏈路的變化。
%Nov 5 11:42:24:172 2009 SwitchC BFD/5/BFD_CHANGE_FSM: Sess[3.0.2.2/3.0.1.1, 13/17,VLAN101,Ctrl], Sta: UP->DOWN, Diag: 1
%Nov 5 11:42:24:172 2009 SwitchC BGP/5/BGP_STATE_CHANGED: 3.0.1.1 state is changed from ESTABLISHED to IDLE.
*Nov 5 11:42:24:187 2009 SwitchC RM/6/RMDEBUG: BGP_BFD: Recv BFD DOWN msg, Src IP 3.0.2.2, Dst IP 3.0.1.1, Instance ID 0.
*Nov 5 11:42:24:187 2009 SwitchC RM/6/RMDEBUG: BGP_BFD: Reset BGP session 3.0.1.1 for BFD session down.
*Nov 5 11:42:24:187 2009 SwitchC RM/6/RMDEBUG: BGP_BFD: Send DELETE msg to BFD, Connection type DIRECT, Src IP 3.0.2.2, Dst IP 3.0.1.1, Instance ID 0.
# 在Switch C上查看1.1.1.0/24的路由信息,可以看出Switch A和Switch C是通過Switch D進行通信的。
<SwitchC> display ip routing-table 1.1.1.0 24 verbose
Routing Table : Public
Summary Count : 1
Destination: 1.1.1.0/24
Protocol: BGP Process ID: 0
Preference: 0 Cost: 100
NextHop: 2.0.1.1 Interface: Vlan-interface201
BkNextHop: 0.0.0.0 BkInterface:
RelyNextHop: 2.0.2.1 Neighbor : 2.0.1.1
Tunnel ID: 0x0 Label: NULL
State: Active Adv Age: 00h09m54s
Tag: 0
以上顯示信息表明:Switch C到達1.1.1.0/24網段有一條路徑:Switch A<->Switch D<->Switch C。
使用display bgp peer命令查看BGP對等體的信息,發現與對端的連接無法進入Established狀態。
BGP鄰居的建立需要能夠使用179端口建立TCP會話,以及能夠正確交換Open消息。
(1) 用display current-configuration命令檢查鄰居的AS號配置是否正確。
(2) 用display bgp peer命令檢查鄰居的IP地址是否正確。
(3) 如果使用Loopback接口,檢查是否配置了peer connect-interface命令。
(4) 如果是物理上非直連的EBGP鄰居,檢查是否配置了peer ebgp-max-hop命令。
(5) 檢查路由表中是否存在到鄰居的可用路由。
(6) 使用ping命令檢查鏈路是否暢通。
(7) 使用display tcp status命令檢查TCP連接是否正常。
(8) 檢查是否配置了禁止TCP端口179的ACL。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!