本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本文件說明邊界閘道通訊協定 (BGP) 的五個案例研究。
本文件沒有特定需求。
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
RFC 1771定義的BGP允許您在自治系統(AS)之間建立無環域間路由。AS是在單一技術管理下的一組路由器。AS中的路由器可以使用多個內部網關協定(IGP)來交換AS內部的路由資訊。路由器可以使用外部網關協定在AS外部路由資料包。
BGP在連線埠179上使用TCP作為傳輸通訊協定。兩個BGP路由器在彼此之間形成TCP連線。這些路由器是對等路由器。對等路由器交換消息以打開並確認連線引數。
BGP路由器交換網路可達性資訊。此資訊主要表示路由到達目的網路所必須採用的完整路徑。路徑是BGP AS編號。此資訊有助於構建無環的AS圖。該圖還顯示了應用路由策略的位置,以便對路由行為實施某些限制。
形成TCP連線以交換BGP路由資訊的任意兩台路由器是「對等體」或「鄰居」。BGP對等體最初交換完整的BGP路由表。交換之後,對等體會隨著路由表的變化傳送增量更新。BGP保留BGP表的版本號。所有BGP對等體的版本號都相同。每當BGP使用路由資訊更新表時,版本號都會更改。傳送keepalive資料包可以確保BGP對等體之間的連線處於活動狀態。通知封包會回應錯誤或特殊情況。
如果AS有多個BGP揚聲器,AS可以充當其他AS的中轉服務。如本節中的下圖所示,AS200是AS100和AS300的傳輸AS。
為了將資訊傳送到外部AS,必須保證網路的可達性。為確保網路可達性,需要執行以下過程:
AS內部路由器之間的內部BGP (iBGP)對等
將BGP資訊重分配到在AS中運行的IGP
當BGP在屬於兩個不同AS的路由器之間運行時,這稱為外部BGP (eBGP)。當BGP在同一AS內的路由器之間運行時,稱為iBGP。
完成以下步驟以啟用和配置BGP。
假設您想要兩台路由器(RTA和RTB)透過BGP進行通訊。在第一個示例中,RTA和RTB位於不同的AS中。在第二個示例中,兩台路由器屬於同一AS。
定義路由器進程以及路由器所屬的AS編號。
發出以下命令以在路由器上啟用BGP:
router bgp <autonomous-system>
RTA#
router bgp 100
RTB#
router bgp 200
這些語句指示RTA運行BGP並屬於AS100。RTB運行BGP並屬於AS200。
定義BGP鄰居。
BGP鄰居形成表示嘗試透過BGP進行通訊的路由器。下一節將介紹此過程。
兩台BGP路由器在彼此建立TCP連線後成為鄰居。TCP連線對於兩個對等路由器開始交換路由更新至關重要。
TCP連線啟動後,路由器會傳送開啟訊息以交換值。路由器交換的值包括AS編號、路由器運行的BGP版本、BGP路由器ID和keepalive保持時間。在確認並接受這些值之後,將會建立鄰居連線。除Established之外的任何狀態都表示兩個路由器未成為鄰居,因而無法交換BGP更新。
發出以下 neighbor 命令以建立TCP連線:
neighbor <ip-address> remote-as <number>
命令中的number 是希望透過BGP進行連線的路由器的AS編號。對於eBGP來說,ip-address 是直接連線的下一跳地址。對於iBGP來說,ip-address 是另一個路由器上的任何IP地址。
在對等路由器上,您在
neighbor 命令中使用的兩個IP地址(IP地址)必須能夠彼此通訊。檢驗可達性的一種方法是在兩個IP地址之間執行擴展ping。擴展ping強制發出ping操作的路由器使用
neighbor 命令所指定的IP地址作為源。路由器必須使用此地址,而不是資料包所來自介面的IP地址。
如果有任何BGP配置發生更改,則必須重置鄰居連線以使新引數生效。 .
-
clear ip bgp address
注意:地址是鄰居地址
-
clear ip bgp *
此命令會清除所有鄰居連線。
預設情況下,BGP會話首先使用BGP版本4,必要時向下協商到早期版本。您可以防止協商並強制路由器用於與鄰居通訊的BGP版本。在路由器配置模式下發出以下命令:
neighbor {ip address | peer-group-name} version <value>
以下是
neighbor 命令配置的示例:
RTA#
router bgp 100
neighbor 192.168.129.213 remote-as 200
RTB#
router bgp 200
neighbor 192.168.129.212 remote-as 100
neighbor 172.22.1.2 remote-as 200
RTC#
router bgp 200
neighbor 172.22.212.1 remote-as 200
在本示例中,RTA和RTB運行eBGP。RTB和RTC運行iBGP。遠端AS編號指向外部或內部AS,指示eBGP或iBGP。此外,eBGP對等體有直接連線,但iBGP對等體沒有直接連線。iBGP路由器不需要有直接連線。但是,必須運行一些IGP並允許兩個鄰居相互連線。
此部分提供 show ip bgp neighbors 命令所顯示資訊的一個示例。
注意:請特別注意BGP狀態。除Established之外的任何狀態都表示對等體未啟動。 此外,請注意以下專案:
-
BGP版本,即4
-
遠端路由器ID
此編號是路由器上最高的IP位址,或是最高的回送介面(如果有的話)。
-
表的版本
table version 提供表的狀態。每當有新資訊進入時,該表就會增加版本。繼續遞增的版本表明存在導致路由持續更新的某些路由抖動。
Router#show ip bgp neighbors
BGP neighbor is 192.168.129.213, remote AS 200, external link
BGP version 4, remote router ID 172.22.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和環回介面
iBGP通常使用環回介面定義鄰居,但eBGP並不常見。通常,使用環回介面可確保鄰居的IP地址保持正常運行並且獨立於正常工作的硬體。對於eBGP,對等路由器經常有直接連線,並且環回不適用。
如果在
neighbor 命令中使用環回介面的IP地址,則需要對鄰居路由器進行某些額外配置。鄰居路由器需要通知BGP使用環回介面而不是物理介面來發起BGP鄰居TCP連線。要指示環回介面,請發出以下命令:
neighbor <ip-address> update-source <interface>
此範例說明此命令的使用:
RTA#
router bgp 100
neighbor 10.195.225.11 remote-as 100
neighbor 10.195.225.11 update-source loopback 1
RTB#
router bgp 100
neighbor 10.212.1.1 remote-as 100
在本例中,RTA和RTB在AS100內部運行iBGP。在
neighbor 命令中,RTB使用RTA的環回介面10.212.1.1。在這種情況下,RTA必須強制BGP使用環回IP地址作為TCP鄰居連線中的源。為強制實施此操作,RTA增加
update-source interface-type interface-number 以使命令為
neighbor
10.195.225.11 update-source loopback 1。此語句在BGP與鄰居10.195.225.11通訊時強制BGP使用環回介面的IP地址。
注意:RTA已使用RTB的物理介面IP地址10.195.225.11作為鄰居。使用此IP地址是RTB不需要任何特殊配置的原因。有關完整的網路方案示例配置,請參閱使用或不使用環回地址的iBGP和eBGP的示例配置。
eBGP多重躍點
在某些情況下,Cisco路由器可以與不允許兩個外部對等體直接連線的第三方路由器運行eBGP。若要實現連線,您可以使用eBGP多跳。eBGP多重躍點允許沒有直接連線的兩個外部對等體之間建立相鄰連線。多重躍點僅適用於eBGP,不適用於iBGP。此示例說明eBGP多跳:
RTA#
router bgp 100
neighbor 10.180.225.11 remote-as 300
neighbor 10.180.225.11 ebgp-multihop
RTB#
router bgp 300
neighbor 192.168.129.212 remote-as 100
RTA表示沒有直接連線的外部鄰居。RTA需要指出自己使用neighbor ebgp-multihop命令。另一方面,RTB表示具有直接連線的鄰居,即192.168.129.212。因為有此直接連線,RTB不需要
neighbor ebgp-multihop 命令。您還必須配置IGP或靜態路由,以允許沒有連線的鄰居相互通訊。
BGP多跳(負載均衡)部分的示例演示了在並行線路上使用eBGP的情況下如何使用BGP實現負載均衡。
eBGP多重躍點(負載平衡)
RTA#
int loopback 0
ip address 10.150.1.1 255.255.255.0
router bgp 100
neighbor 172.31.160.10 remote-as 200
neighbor 172.31.160.10 ebgp-multihop
neighbor 172.31.160.10 update-source loopback 0
network 172.31.202.2
ip route 172.31.160.0 255.255.0.0 10.1.1.2
ip route 172.31.160.0 255.255.0.0 10.2.2.2
RTB#
int loopback 0
ip address 172.31.160.10 255.255.255.0
router bgp 200
neighbor 10.150.1.1 remote-as 100
neighbor 10.150.1.1 update-source loopback 0
neighbor 10.150.1.1 ebgp-multihop
network 172.31.160.0
ip route 172.31.202.2 255.255.0.0 10.1.1.1
ip route 172.31.202.2 255.255.0.0 10.2.2.1
此示例演示環回介面
update-source和
ebgp-multihop的使用。本示例是一個解決方法,旨在透過並行串列線路實現兩個eBGP揚聲器之間的負載均衡。在正常情況下,BGP會選擇一條線路來傳送資料包,但不會執行負載均衡。引入環回介面後,eBGP的下一跳是環回介面。您使用靜態路由或IGP引入兩條到達目的地的等價路徑。RTA有兩種到達下一跳172.31.160.10的選擇:一條路徑透過10.1.1.2,另一條路徑透過10.2.2.2。RTB有相同的選擇。
路由對映
BGP中大量使用路由對映。在BGP情景中,路由對映是一種控制和修改路由資訊的方法。透過定義路由從一種路由協定重分配到另一種路由協定的條件,可以控制和修改路由資訊。或者,路由資訊的控制可在注入和退出BGP時發生。路由對映的格式如下:
route-map map-tag [[permit | deny] | [sequence-number]]
對映標籤只是您為路由對映指定的名稱。您可以定義同一路由對映的多個例項,或定義相同的名稱標籤。序列號只是表明新路由對映在您已配置相同名稱的路由對映清單中的位置。
在本示例中,定義了兩個路由對映例項,其名稱為MYMAP。第一個例項的序列號為10,第二個例項的序列號為20。
-
route-map MYMAP permit 10(此處是第一組條件。)
-
route-map MYMAP permit 20(第二組條件如下。)
當您將路由對映MYMAP應用於傳入或傳出路由時,第一組條件透過例項10應用。如果不滿足第一組條件,您將進入路由對映的更高例項。
匹配和設定配置命令
每個路由對映包含一個
match 和
set 配置命令清單。匹配項指定條
match 件,set指定如果
match 命令實施的條件滿足時的
set 操作。
例如,您可以定義路由對映來檢查傳出更新。如果IP地址10.1.1.1存在匹配,則該更新的度量設定為5。以下命令說明了示例:
match ip address 10.1.1.1
set metric 5
現在,如果滿足匹配條件並且得到
permit,則會像設定操作所指定的那樣重分配或控制路由。你從名單中脫穎而出。
如果滿足匹配條件並且得到
deny,則不會重分配或控制路由。你從名單中脫穎而出。
如果不滿足匹配條件,並且受到
permit 或
deny 的影響,則檢查路由對映的下一個例項。例如,檢查例項20。此下一個例項檢查將繼續,直到您中斷或完成路由對映的所有例項。如果完成清單檢查,並且未找到匹配項,則路由為
not accepted nor forwarded。
在早於Cisco IOS軟體版本11.2的Cisco IOS®軟體版本中,當使用路由對映過濾BGP更新,而不是在協定之間進行重分配時,不能對IP地址使用match 命令進行入站過濾。可以接受出站過濾器。Cisco IOS軟體版本11.2和更新版本沒有此限制。
的相關命令
match 有:
-
matchas-path
-
match community
-
matchclns
-
match interface
-
matchip address
-
matchip nexthop
-
matchip route-source
-
matchmetric
-
match route-type
-
match tag
的相關命令
set 有:
-
set as-path
-
set clns
-
set automatic-tag
-
set community
-
set interface
-
set default interface
-
set ip default nexthop
-
set level
-
set local-preference
-
set metric
-
set metric-type
-
set nexthop
-
set origin
-
set tag
-
set weight
檢視一些路由對映示例:
範例 1
假設RTA和RTB運行路由資訊協定(RIP),而RTA和RTC運行BGP。RTA透過BGP獲取更新,並將更新重新分發到RIP。假設RTA要將度量為2的約172.16.10.0路由和度量為5的所有其他路由重分配給RTB路由。在這種情況下,您可以使用此組態:
RTA#
router rip
network 10.3.0.0
network 10.2.0.0
network 172.31.202.2
passive-interface Serial0
redistribute bgp 100 route-map SETMETRIC
router bgp 100
neighbor 10.2.2.3 remote-as 300
network 172.31.202.2
route-map SETMETRIC permit 10
match ip-address 1
set metric 2
route-map SETMETRIC permit 20
set metric 5
access-list 1 permit 172.16.10.0 0.0.255.255
在本示例中,如果路由與IP地址172.16.10.0匹配,則該路由的度量為2。然後,您將跳出路由對映清單。如果沒有匹配項,則向下顯示路由對映清單,表明其他所有項都設定為度量5。
注意:請始終詢問「What haps to route that does not match any match statements?」 預設情況下,這些路由會丟棄。
範例 2
假設在示例1中,您不希望AS100接受有關172.16.10.0的更新。當以IP地址為基礎進行匹配時,不能在入站應用路由對映。因此,您必須在RTC上使用出站路由對映:
RTC#
router bgp 300
network 172.16.10.0
neighbor 10.2.2.2 remote-as 100
neighbor 10.2.2.2 route-map STOPUPDATES out
route-map STOPUPDATES permit 10
match ip address 1
access-list 1 deny 172.16.10.0 0.0.255.255
access-list 1 permit 0.0.0.0 255.255.255.255
現在,您對如何啟動BGP和如何定義鄰居感到更加放心,請看如何啟動網路資訊交換。
使用BGP傳送網路資訊的方法有多種。這些部分逐一介紹方法:
-
網路指令
-
重分發
-
靜態路由和重新分發
網路指令
network 命令的格式為:
network <network-number> mask <network-mask>
network 命令控制源於此的網路。此概念與熟悉的內部閘道路由通訊協定(IGRP)和RIP組態不同。使用此命令時,您不會嘗試在特定介面上運行BGP。相反,您嘗試向BGP指示BGP必須源自此框的網路。此命令使用掩碼部分,因為BGP版本4 (BGP4)可以處理子網劃分和超網劃分。最多可以接受200條
network 命令。
如果路由器知道您嘗試通告的網路(無論網路狀態是已連線、靜態,還是動態獲知),
network 命令就會起作用。
以下是network 命令的一個示例:
RTA#
router bgp 1
network 192.168.213.0 mask 255.255.0.0
ip route 192.168.213.0 255.255.0.0 null 0
本示例表明路由器A為192.168.213.0/16生成一個網路條目。/16表示您使用C類地址的超網,並且通告前兩個八位組(即前16位)。
注意:您需要靜態路由才能使路由器生成192.168.213.0,因為靜態路由在路由表中放置了一個匹配的條目。
重分發
network 命令是透過BGP通告網路的一種方式。另一種方法是將IGP重新分配到BGP中。IGP可以是IGRP、開放最短路徑優先(OSPF)協定、RIP、增強型內部網關路由協定(EIGRP)或其他協定。此重分配可能看起來很可怕,因為現在您將所有內部路由都轉儲到BGP中;其中一些路由可以透過BGP獲知,您不需要再次傳送出去。過濾時請小心,確保您傳送到要通告的僅Internet路由,而不是傳送到您擁有的所有路由。以下提供範例。
RTA通告192.168.92.213,RTC通告172.22.0.0。檢視RTC配置:
如果發出
network命令,將得到如下結果:
RTC#
router eigrp 10
network 172.22.0.0
redistribute bgp 200
default-metric 1000 100 250 100 1500
router bgp 200
neighbor 10.1.1.1 remote-as 300
network 172.22.0.0 mask 255.255.0.0
!--- This limits the networks that your AS originates to 172.22.0.0.
如果您改用重分發,您可以:
RTC#
router eigrp 10
network 172.22.0.0
redistribute bgp 200
default-metric 1000 100 250 100 1500
router bgp 200
neighbor 10.1.1.1 remote-as 300
redistribute eigrp 10
!--- EIGRP injects 192.168.92.213 again into BGP.
此重分配會導致您的AS生成192.168.92.213。您不是192.168.92.213的源;AS100是源。因此,您必須使用過濾器來防止AS將源地址移出該網路。正確的配置是:
RTC#
router eigrp 10
network 172.22.0.0
redistribute bgp 200
default-metric 1000 100 250 100 1500
router bgp 200
neighbor 10.1.1.1 remote-as 300
neighbor 10.1.1.1 distribute-list 1 out
redistribute eigrp 10
access-list 1 permit 172.22.0.0 0.0.255.255
使用
access-list命令控制源於AS200的網路。
將OSPF重分配到BGP與其他IGP的重分配略有不同。
redistribute ospf 1在
router bgp下的簡單問題不起作用。重分配各自的路由需要使用特定關鍵字如
internal、
external和
nssa-external 。有關詳細資訊,請參閱瞭解將OSPF路由重分配到BGP。
靜態路由和重新分發
您始終可以使用靜態路由來發起網路或子網。唯一的區別是BGP認為這些路由的源不完整或未知。可以使用如下方法獲得與Redistributionsection中的示例相同的結果:
RTC#
router eigrp 10
network 172.22.0.0
redistribute bgp 200
default-metric 1000 100 250 100 1500
router bgp 200
neighbor 10.1.1.1 remote-as 300
redistribute static
ip route 172.22.0.0 255.255.255.0 null0
該
null0 介面表示忽略該資料包。因此,如果您收到資料包,並且存在比172.22.0.0更具體的匹配(存在),則路由器會將資料包傳送到該特定匹配。否則,路由器將忽略該資料包。這個方法是通告超網的好方法。
本文檔討論了如何使用不同的方法從AS發起路由。請記住,這些路由是除BGP透過內部或外部鄰居獲知的其他BGP路由之外生成的。BGP會將BGP從一個對等體獲取的資訊傳遞到其他對等體。區別在於源自
network 命令、重分配或靜態路由的路由表明AS是這些網路的源。
重分配始終是將BGP注入IGP的方法。
以下是範例:
RTA#
router bgp 100
neighbor 10.150.20.2 remote-as 300
network 172.31.202.2
RTB#
router bgp 200
neighbor 10.160.20.2 remote-as 300
network 172.31.160.0
RTC#
router bgp 300
neighbor 10.150.20.1 remote-as 100
neighbor 10.160.20.21 remote-as 200
network 170.10.00
注意:在RTC中不需要網路172.31.202.2或網路172.31.160.0,除非您希望RTC生成這些網路,並在這些網路從AS100和AS200進入時對其進行傳輸。區別同樣是network命令為這些網路增加一個額外的通告,表明AS300也是這些路由的源。
注意:請記住,BGP不接受源自其自己AS的更新。此拒絕可確保無環域間拓撲。
例如,假設AS200(根據本節中的示例)具有到AS100的直接BGP連線。RTA生成路由172.31.202.2並將該路由傳送到AS300。然後,RTC將此路由傳遞到AS200,並將源保留為AS100。RTB將172.31.202.2傳遞到AS100,原點仍為AS100。RTA發現更新源於自己的AS並忽略該更新。
iBGP
如果AS要充當到其他AS的傳輸系統,則使用iBGP。如果透過eBGP學習,可以執行相同操作,重新分發到IGP,然後再重新分發到另一個AS。但iBGP為AS內的資訊交換提供了更大的靈活性和更有效的方式。例如,iBGP提供了使用本地優先順序控制從AS輸出的最佳出口點的方法。「本機偏好設定屬性」一節提供了有關本機偏好設定的詳細資訊。
RTA#
router bgp 100
neighbor 192.168.10.50 remote-as 100
neighbor 172.31.20.2 remote-as 300
network 172.31.202.2
RTB#
router bgp 100
neighbor 10.150.10.30 remote-as 100
neighbor 172.16.40.1 remote-as 400
network 192.168.10.150
RTC#
router bgp 400
neighbor 172.16.40.2 remote-as 100
network 172.16.0.0
注意:請記住,當BGP揚聲器從其自身的AS (iBGP)中的其他BGP揚聲器接收更新時,接收更新的BGP揚聲器不會將該資訊重新分配到其自身的AS中的其他BGP揚聲器。接收更新的BGP揚聲器將資訊重新分發到其AS之外的其他BGP揚聲器。因此,在AS內保持iBGP揚聲器之間的完整網狀。
RTA和RTB運行iBGP。RTA和RTD也運行iBGP。從RTB到RTA的BGP更新會傳輸到AS外部的RTE。更新不會傳輸到AS內部的RTD。因此,請在RTB和RTD之間建立iBGP對等,以免中斷更新流程。
BGP決策演算法
BGP從不同的自治系統接收有關不同目標的更新後,協定必須選擇到達特定目標的路徑。BGP只會選擇一條路徑到達特定目的地。
BGP根據不同的
attributes作出決策,例如下一跳、管理權重、本地優先順序、路由源、路徑長度、原始碼、度量以及其他屬性。
BGP總是將最佳路徑傳播到鄰居。有關詳細資訊,請參閱BGP最佳路徑選擇演算法。
下一節將介紹這些屬性及其用法。
BGP案例分析2
AS_PATH屬性
每當路由更新透過AS時,AS編號會附加在該更新之前。AS_PATH屬性實際上是路由為到達目的地而經過的AS編號清單。AS_SET是已遍歷的所有AS中的有序數學集{}。本文檔的CIDR示例2 (as-set)部分提供了一個AS_SET示例。
在本節的示例中,RTB在AS200中通告網路192.168.190.0。當該路由遍歷AS300時,RTC會將自己的AS編號附加到網路。當192.168.190.0到達RTA時,網路會連線兩個AS編號:第一個200,然後是300。對於RTA,到達192.168.190.0的路徑為(300, 200)。
172.16.10.0和192.168.180.10也採用相同的流程。RTB必須採用路徑(300、100);RTB先遍歷AS300,然後再遍歷AS100,才能到達172.16.10.0。RTC必須遍歷路徑(200)才能到達192.168.190.0,而路徑(100)才能到達172.16.10.0。
原始屬性
原點是定義路徑資訊原點的必要屬性。原始屬性可以採用三個值:
-
IGP -網路層可達性資訊(NLRI)位於起始的AS內部。發出 bgp network命令時通常使用該值。BGP表中的Aniin表示IGP。
-
EGP - NLRI透過外部網關協定(EGP)獲知。BGP表中的另一個表示EGP。
-
INCOMPLETE - NLRI未知或透過其他方法獲知。當您將來自其他路由協定的路由重分配到BGP並且路由的源不完整時,通常會發生不完整。BGP表中的?表示「INCOMPLETE」。
RTA#
router bgp 100
neighbor 192.168.10.50 remote-as 100
neighbor 172.31.20.2 remote-as 300
network 172.31.202.2
redistribute static
ip route 192.168.190.0 255.255.0.0 null0
RTB#
router bgp 100
neighbor 10.150.10.30 remote-as 100
network 192.168.10.150
RTE#
router bgp 300
neighbor 172.31.20.1 remote-as 100
network 172.16.10.0
RTA透過300 i到達172.16.10.0。「300 i」表示下一個AS路徑為300,路由源為IGP。RTA也透過i到達192.168.10.150。此「i」表示條目位於同一AS中,並且源是IGP。RTE透過100 i到達172.31.202.2。「100 i」表示下一個AS為100,且來源為IGP。RTE也透過100 ?到達192.168.190.0。「100 ?」表示下一個AS為100,且源不完整且來自靜態路由。
BGP下一跳屬性
BGP下一跳屬性是用於到達特定目的地的下一跳IP地址。
對於eBGP,下一跳總是
neighbor 命令指定的鄰居的IP地址。在本節的範例中,RTC將下一躍點為172.31.20.2的通告172.16.10.0到RTA。RTA將172.31.202.2通告給RTC,下一跳為172.31.20.1。對於iBGP,協定規定eBGP通告的下一跳必須攜帶到iBGP中。由於此規則,RTA會向其iBGP對等體RTB通告172.16.10.0,下一跳為172.31.20.2。基於RTB,到達172.16.10.0的下一跳為172.31.20.2而不是10.150.10.30。
確保RTB可以透過IGP到達172.31.20.2。否則,RTB將丟棄目的地址為172.16.10.0的資料包,因為無法訪問下一跳地址。例如,如果RTB運行iGRP,您也可以在RTA網路172.16.10.0上運行iGRP。您希望在通向RTC的鏈路上將iGRP設定為被動,以便僅交換BGP。
RTA#
router bgp 100
neighbor 172.31.20.2 remote-as 300
neighbor 192.168.150.10 remote-as 100
network 172.31.202.2
RTB#
router bgp 100
neighbor 10.150.10.30 remote-as 100
RTC#
router bgp 300
neighbor 172.31.20.1 remote-as 100
network 172.16.10.0
注意:RTC將172.16.10.0通告給RTA,下一跳等於172.31.20.2。
註: RTA將172.16.10.0通告給RTB,下一跳等於172.31.20.2。eBGP下一跳在iBGP中傳輸。
當您處理多路訪問和非廣播多路訪問(NBMA)網路時,請特別小心。BGP下一跳(多路訪問網路)和BGP下一跳(NBMA)部分提供了更多詳細資訊。
BGP下一躍點(多重存取網路)
此範例顯示下一個躍點在多重存取網路(例如乙太網路)上的行為方式。
假設AS300中的RTC和RTD運行OSPF。RTC運行帶有RTA的BGP。RTC可以透過172.16.20.3到達網路192.168.180.20。當RTC向RTA傳送有關192.168.180.20的BGP更新時,RTC使用下一跳172.16.20.3。RTC不使用自己的IP地址172.31.20.2。RTC使用此地址是因為RTA、RTC和RTD之間的網路是多路訪問網路。RTA使用RTD作為到達192.168.180.20的下一跳,比透過RTC的額外跳更為合理。
注意:RTC將下一跳為172.16.20.3的通告192.168.180.20到RTA。
如果對RTA、RTC和RTD的常用介質不是多路訪問,而是NBMA,則會發生進一步的併發症。
BGP下一躍點(NBMA)
公共介質在圖中顯示為雲。如果常用介質是幀中繼或任何NBMA網雲,則確切的行為就像是透過乙太網進行連線一樣。RTC將192.168.180.20通告給RTA,下一跳為172.16.20.3。
問題在於RTA沒有通向RTD的直接永久虛電路(PVC),因此無法到達下一跳。在這種情況下,路由會失敗。
next-hop-self命令可解決此問題。
Next-hop-self命令
對於BGP下一跳(NBMA)示例中所示的下一跳問題,您可以使用
next-hop-self 命令。語法為:
neighbor {ip-address | peer-group-name} next-hop-self
next-hop-self命令允許您強制BGP使用特定IP地址作為下一跳。
對於BGP下一跳(NBMA)示例,此配置可解決以下問題:
RTC#
router bgp 300
neighbor 172.31.20.1 remote-as 100
neighbor 172.31.20.1 next-hop-self
RTC通告192.168.180.20,下一跳等於172.31.20.2。
BGP後門
在上圖中,RTA和RTC運行eBGP。RTB和RTC運行eBGP。RTA和RTB運行某種IGP,可以是RIP、IGRP或其他協定。根據定義,eBGP更新的距離為20,小於IGP距離。預設距離為:
-
RIP為120
-
IGRP為100
-
EIGRP 90
-
OSPF為110
RTA透過兩種路由協定接收有關172.31.160.0的更新:
-
距離為20的eBGP
-
距離大於20的IGP
預設情況下,BGP具有以下距離:
-
外部距離- 20
-
內部距離- 200
-
區域性距離- 200
但可以使用
distance 命令更改預設距離:
distance bgp <external-distance> <internal-distance> <local-distance>
由於距離較短,RTA透過RTC選擇eBGP。
如果您希望RTA透過RTB (IGP)瞭解關於172.31.160.0,您有兩個選擇:
-
更改eBGP的外部距離或IGP距離。
註:不建議進行此更改。
-
使用BGP後門。
BGP後門使IGP路由成為首選路由。
已配置的網路是您希望透過IGP訪問的網路。對於BGP,此網路與本地分配的網路得到相同的處理,不同之處在於BGP更新不會通告此網路。
RTA#
router eigrp 10
network 172.31.202.2
router bgp 100
neighbor 10.2.2.1 remote-as 300
network 172.31.160.0 backdoor
網路172.31.160.0被視為本地條目,但不會通告為正常網路條目。
RTA透過EIGRP從RTB獲知172.31.160.0,距離為90。RTA還透過eBGP從RTC獲取距離20的地址。通常eBGP是首選項,但因為發出了network backdoor 命令,EIGRP成為首選項。
同步
在討論同步之前,請看一下此場景。AS300中的RTC傳送有關172.16.10.0的更新。RTA和RTB運行iBGP,因此RTB獲取更新,能夠透過下一跳10.2.2.1到達172.16.10.0。請記住,下一跳是透過iBGP傳輸的。要到達下一跳,RTB必須將流量傳送到RTE。
假設RTA尚未將網路172.16.10.0重分配到IGP中。此時,RTE甚至不知道172.16.10.0存在。
如果RTB開始向AS400通告RTB可以達到172.16.10.0,則從RTD到RTB且目標為172.16.10.0的流量會在RTE時進入和丟棄。
同步宣告,如果您的AS將流量從另一個AS傳遞到第三個AS,則BGP在您的AS中的所有路由器均已透過IGP獲知該路由之前,不得通告該路由。BGP會等待,直到IGP在AS內傳播路由。然後,BGP將該路由通告給外部對等體。
在本節的示例中,RTB等待透過IGP收聽關於172.16.10.0的資訊。然後,RTB開始將更新傳送到RTD。如果在RTB中增加指向172.16.10.0的靜態路由,可以讓RTB認為IGP已傳播了該資訊。確保其它路由器可以到達172.16.10.0。
停用同步
在某些情況下,您不需要同步。如果您不將來自其他AS的流量透過AS,則可以停用同步。如果AS中的所有路由器都運行BGP,您也可以停用同步。停用此功能可讓您在IGP中承載更少的路由,並使BGP更快速地收斂。
同步的停用不是自動的。如果AS中的所有路由器都運行BGP,而您根本沒有運行IGP,則路由器無法知道。您的路由器會無限期等待有關特定路由的IGP更新,然後再將路由傳送到外部對等體。在這種情況下,您必須手動停用同步,才能讓路由正確運作:
router bgp 100
no synchronization
注意:請確保發出clear ip bgp address命令重置會話。
RTB#
router bgp 100
network 172.31.202.2
neighbor 10.1.1.2 remote-as 400
neighbor 10.3.3.3 remote-as 100
no synchronization
!--- RTB puts 172.16.10.0 in its IP routing table and advertises the network
!--- to RTD, even if RTB does not have an IGP path to 172.16.10.0.
RTD#
router bgp 400
neighbor 10.1.1.1 remote-as 100
network 172.16.0.0
RTA#
router bgp 100
network 172.31.202.2
neighbor 10.3.3.4 remote-as 100
權重屬性
weight屬性是Cisco定義的屬性。此屬性使用權重選擇最佳路徑。權重在路由器本地分配。該值只對特定路由器有意義。該值不會傳播或透過任何路由更新傳播。權重可以是0到65,535之間的一個數字。預設情況下,路由器發出的路徑的權重為32,768,其他路徑的權重為0。
當存在多條通往同一目的地的路由時,具有較高權值的路由具有優先權。請看本部分中的示例。RTA從AS4獲知了網路172.16.0.0。RTA將更新傳播到RTC。RTB還從AS4瞭解網路172.16.0.0。RTB將更新傳播到RTC。RTC現在有兩種方法可到達172.16.0.0,必須決定採用哪一種方法。如果設定來自RTA的RTC更新的權重,使其大於來自RTB的更新的權重,則強制RTC使用RTA作為下一跳,以達到172.16.0.0。多個方法可達到此權重集:
-
使用neighbor 命令。
-
neighbor {ip-address|peer-group} weight <weight>
-
使用AS_PATH存取清單。
-
ip as-path access-list <access-list-number>{permit | deny} <as-regular-expression>
-
neighbor <ip-address>filter-list <access-list-number>weight <weight>
注意:在某些場景中,可能只有極少數命令在某些軟體版本中不可用。
-
使用路由對映。
RTC#
router bgp 300
neighbor 10.1.1.1 remote-as 100
neighbor 10.1.1.1 weight 200
!--- The route to 172.16.0.0 from RTA has a 200 weight.
neighbor 10.2.2.2 remote-as 200
neighbor 10.2.2.2 weight 100
!--- The route to 172.16.0.0 from RTB has a 100 weight.
RTA的權重值較高,因此優先使用下一跳。
使用IP AS_PATH和過濾器清單可以達到相同的結果。
RTC#
router bgp 300
neighbor 10.1.1.1 remote-as 100
neighbor 10.1.1.1 filter-list 5 weight 200
neighbor 10.2.2.2 remote-as 200
neighbor 10.2.2.2 filter-list 6 weight 100
...
ip as-path access-list 5 permit ^100$
!--- This only permits path 100.
ip as-path access-list 6 permit ^200$
...
使用路由對映還可以獲得相同的結果。
RTC#
router bgp 300
neighbor 10.1.1.1 remote-as 100
neighbor 10.1.1.1 route-map setweightin in
neighbor 10.2.2.2 remote-as 200
neighbor 10.2.2.2 route-map setweightin in
...
ip as-path access-list 5 permit ^100$
...
route-map setweightin permit 10
match as-path 5
set weight 200
!--- Anything that applies to access list 5, such as packets from AS100, has weight 200.
route-map setweightin permit 20
set weight 100
!--- Anything else has weight 100.
注意:您可以修改權重以首選使用IGP路徑作為備份的MPLS VPN BGP路徑。
本機偏好設定屬性
本地優先順序是對AS的指示,表明哪條路徑優先退出AS以訪問特定網路。具有更高本地優先順序的路徑會更優先使用。本機偏好設定的預設值為100。
與只與本地路由器相關的weight屬性不同,本地優先順序是路由器在同一AS中交換的屬性。
透過發出bgp default local-preference value 命令可以設定本地優先順序。還可以使用路由對映設定本地優先順序,如本部分中的示例所示:
注意:需要執行軟重置(即清除路由器上的bgp進程)以將更改考慮在內。要清除bgp進程,請使用clear ip bgp [soft][in/out]命令,其中「soft」表示軟重置,不拆除會話,並且「[in/out]」指定入站或出站配置。如果未指定in/out,則入站和出站會話都會重置。
bgp default local-preference 命令為從路由器傳出到同一AS內的對等端的更新設定本地優先順序。在本節的圖表中,AS256從組織的兩個不同方面接收有關172.16.10.0的更新。本地優先順序可幫助您確定以哪種方式退出AS256以到達該網路。假設RTD是出口點偏好。此配置將本地優先順序設定為從AS300到200的更新以及從AS100到150的更新:
RTC#
router bgp 256
neighbor 10.1.1.1 remote-as 100
neighbor 10.213.11.2 remote-as 256
bgp default local-preference 150
RTD#
router bgp 256
neighbor 10.3.3.4 remote-as 300
neighbor 10.213.11.1 remote-as 256
bgp default local-preference 200
在此配置中,RTC將所有更新的本地優先順序設定為150。同一RTD將所有更新的本地優先順序設定為200。在AS256內交換了本地優先順序。因此,當更新來自AS300而不是AS100時,RTC和RTD都意識到網路172.16.10.0的本地優先順序更高。AS256中所有以該網路為目的地的流量都以RTD作為出口點進行傳輸。
路由對映的使用提供了更大的靈活性。在本節的範例中,當更新到達RTD時,RTD收到的所有更新都標籤有本機喜好設定200。來自AS34的更新也以本地優先順序200標籤。此標籤可能是不必要的。因此,您可以使用路由對映來指定需要使用特定本地優先順序標籤的特定更新。以下是範例:
RTD#
router bgp 256
neighbor 10.3.3.4 remote-as 300
neighbor 10.3.3.4 route-map setlocalin in
neighbor 10.213.11.1 remote-as 256
....
ip as-path access-list 7 permit ^300$
...
route-map setlocalin permit 10
match as-path 7
set local-preference 200
route-map setlocalin permit 20
set local-preference 150
使用此配置,來自AS300的任何更新都具有200的本地優先順序。任何其他更新(例如來自AS34的更新)的值為150。
測量結果屬性
此測量結果屬性也具有名稱MULTI_EXIT_DISCRIPATOR、MED (BGP4)或INTER_AS (BGP3)。屬性是提示外部鄰居進入AS的路徑首選項。當存在多個進入點進入某個AS時,該屬性提供一種動態方法以影響另一個AS到達某條路由的方式。更傾向於使用較低的指標值。
與本地優先順序不同,度量在AS之間交換。測量結果會帶入AS,但不會離開AS。當更新以特定度量輸入AS時,該度量用於在AS內部做出決策。當相同的更新傳遞到第三個AS時,該度量會返回到0。此段落中的圖表顯示測量結果集。測量結果的預設值為0。
除非路由器收到其它方向,否則路由器會比較來自同一AS中鄰居的路徑的度量。要使路由器比較來自不同AS的鄰居的度量,需要對路由器發出特殊配置命令bgp always-compare-med。
注意:有兩個BGP設定命令可影響基於多出口鑑別器(MED)的路徑選取。命令包括bgp deterministic-med命令和bgp always-compare-med命令。發出bgp deterministic-med命令將確保在同一AS內通告不同對等體時,選擇路由時會比較MED變數。發出bgp always-compare-med命令確保比較不同AS內的鄰居的MED以選擇路徑。當多個服務提供商或企業同意採用統一策略設定MED時,bgp always-compare-med命令很有用。要瞭解這些命令如何影響BGP路徑選擇,請參閱BGP Deterministic-Med命令與BGP Always-Compare-Med命令的區別。
在本部分的圖中,AS100透過三個不同的路由器(RTC、RTD和RTB)獲取有關網路192.168.180.10的資訊。RTC和RTD位於AS300中,而RTB位於AS400中。
在本示例中,已忽略透過命令bgp bestpath as-path ignore 對RTA進行AS-Path比較。它配置為強制BGP轉至下一個屬性以進行路由比較(在此情況下為度量或MED)。如果省略該命令,則BGP可以從路由器RTC安裝具有最短AS-Path的路由192.168.180.10。
假設您將來自RTC的測量結果設定為120、來自RTD的測量結果設定為200,以及來自RTB的測量結果設定為50。預設情況下,路由器會比較來自同一AS中鄰居的度量。因此,RTA只能比較來自RTC的度量與來自RTD的度量。RTA選擇RTC作為最佳下一跳,因為120小於200。當RTA從測量結果50的RTB取得更新時,RTA無法將該測量結果與120進行比較,因為RTC和RTB位於不同的AS中。RTA必須根據某些其他屬性進行選擇。
要強制RTA比較這些度量,必須針對RTA發出bgp always-compare-med 命令。這些組態會說明此程式:
RTA#
router bgp 100
neighbor 10.2.2.1 remote-as 300
neighbor 10.3.3.3 remote-as 300
neighbor 10.4.4.3 remote-as 400
bgp bestpath as-path ignore
RTC#
router bgp 300
neighbor 10.2.2.2 remote-as 100
neighbor 10.2.2.2 route-map setmetricout out
neighbor 10.1.1.2 remote-as 300
route-map setmetricout permit 10
set metric 120
RTD#
router bgp 300
neighbor 10.3.3.2 remote-as 100
neighbor 10.3.3.2 route-map setmetricout out
neighbor 10.1.1.1 remote-as 300
route-map setmetricout permit 10
set metric 200
RTB#
router bgp 400
neighbor 10.4.4.4 remote-as 100
neighbor 10.4.4.4 route-map setmetricout out
route-map setmetricout permit 10
set metric 50
在這些配置中,RTA選擇RTC作為下一跳,同時考慮所有其他屬性都相同這一事實。為了在度量比較中包括RTB,必須以下列方式配置RTA:
RTA#
router bgp 100
neighbor 2.2.21 remote-as 300
neighbor 10.3.3.3 remote-as 300
neighbor 10.4.4.3 remote-as 400
bgp always-compare-med
在本例中,RTA選擇RTB作為到達網路192.168.180.10的最佳下一跳。
如果發出default-metricnumber命令,也可以在將路由重分配到BGP時設定度量。
在本節的示例中,假設RTB透過靜態方式將網路注入到AS100中。以下是組態:
RTB#
router bgp 400
redistribute static
default-metric 50
ip route 192.168.180.10 255.255.0.0 null 0
!--- This causes RTB to send out 192.168.180.10 with a metric of 50.
社群屬性
community屬性是從0到4,294,967,200範圍內的可傳遞的可選屬性。社群屬性是對特定社群中的目標進行分組,並應用與這些社群匹配的路由決策的一種方法。路由決策包括接受、首選和重新分發等。
可以使用路由對映設定社群屬性。路由對映set 命令語法如下:
set community community-number [additive] [well-known-community]
此命令中使用的幾個預定義的公認社群是:
-
no-export -不通告給eBGP對等體。將此路由保留在AS內。
-
no-advertise — 不將此路由通告給內部或外部的任何對等體。
-
internet -將此路由通告給Internet社群。任何路由器都屬於這個社群。
-
local-as -在聯盟情況下使用,避免將資料包傳輸到本地AS之外。
以下是設定社群的兩個路由對映示例:
route-map communitymap
match ip address 1
set community no-advertise
或
route-map setcommunity
match as-path 1
set community 200 additive
如果不設定additive 關鍵字,200將替換任何已存在的舊社群。如果使用關鍵字additive,則會將200增加到該社群。即使您設定了社群屬性,預設情況下此屬性也不會傳輸到鄰居。若要將屬性傳送到鄰居,您必須使用以下命令:
neighbor {ip-address | peer-group-name} send-community
以下是範例:
RTA#
router bgp 100
neighbor 10.3.3.3 remote-as 300
neighbor 10.3.3.3 send-community
neighbor 10.3.3.3 route-map setcommunity out
在Cisco IOS軟體版本12.0及更高版本中,可以用三種不同格式配置社群:十進位制、十六進位制和AA:NN。預設情況下,Cisco IOS軟體使用較舊的小數格式。若要在AA:NN中配置和顯示,請發出ip bgp-community new-
global configuration formatcommand。AA:NN的第一部分代表AS編號,第二部分代表2位元組編號。
以下是範例:
如果全局配置中不含ip bgp-community new-format 命令,則發出show ip bgp 10.6.0.0 命令將以十進位制格式顯示社群屬性值。在本示例中,社群屬性值顯示為6553620。
Router#show ip bgp 10.6.0.0
BGP routing table entry for 10.6.0.0/8, version 7
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
1
10.10.10.1 from 10.10.10.1 (10.255.255.1)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 6553620
現在,針對此路由器全局發出ip bgp-community new-format命令。
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#ip bgp-community new-format
Router(config)#exit
使用ip bgp-community new-formatglobal 配置命令,社群值以AA:NN格式顯示。在如下示例的show ip bgp 10.6.0.0命令的輸出中,該值顯示為100:20 :
Router#show ip bgp 10.6.0.0
BGP routing table entry for 10.6.0.0/8, version 9
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
1
10.10.10.1 from 10.10.10.1 (10.255.255.1)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 100:20
BGP案例分析3
BGP過濾器
許多不同的過濾方法允許您控制BGP更新的傳送和接收。您可以基於路由資訊、或基於路徑資訊或社群過濾BGP更新。所有方法都能獲得相同的結果。根據特定的網路配置,選擇一種方法優於另一種方法。
路由過濾器
為了限制路由器獲知或通告的路由資訊,您可以使用到特定鄰居的路由更新或來自特定鄰居的路由更新來過濾BGP。您可以定義訪問清單並將訪問清單應用到與鄰居相關的更新。在路由器配置模式下發出以下命令:
neighbor {ip-address | peer-group-name} distribute-list access-list-number {in | out}
在本例中,RTB建立網路172.31.160.0,並將更新傳送到RTC。如果RTC要停止將更新傳播到AS100,您必須定義訪問清單以過濾這些更新,並在與RTA通訊期間應用訪問清單:
RTC#
router bgp 300
network 172.16.10.0
neighbor 10.3.3.3 remote-as 200
neighbor 10.2.2.2 remote-as 100
neighbor 10.2.2.2 distribute-list 1 out
access-list 1 deny 172.31.160.0 0.0.255.255
access-list 1 permit 0.0.0.0 255.255.255.255
!--- Filter out all routing updates about 160.10.x.x.
當您處理可能導致某些衝突的超網時,使用訪問清單會有點麻煩。
在本節的示例中,假設RTB具有不同的子網160.10.x.x。您的目標是過濾更新並僅通告192.168.160.0/8。
注意: /8符號表示您使用8位的子網掩碼,這些掩碼從IP地址的最左邊開始。此地址相當於192.168.160.0 255.0.0.0。
命令
access-list 1 permit 192.168.160.0 0.255.255.25
5允許192.168.160.0/8、192.168.160.0/9等。若要將更新限制為僅包含192.168.160.0/8,您必須使用以下格式的擴展訪問清單:
access-list 101 permit ip 192.168.160.0 0.255.255.255 255.0.0.0 0.0.0.0.
此清單僅允許192.168.160.0/8。
有關如何過濾來自BGP對等體的網路的示例配置,請參閱阻止來自BGP對等體的一個或多個網路。該方法使用distribute-list 命令,採用標準和擴展訪問控制清單(ACL),並能夠過濾字首清單。
路徑篩選
您也可以篩選路徑。
您可以使用BGP AS路徑資訊,對傳入和傳出更新指定訪問清單。在本節的圖表中,您可以阻止有關172.31.160.0的更新,使它們不轉至AS100。要阻止更新,請在RTC上定義一個訪問清單,阻止將源自AS200的任何更新傳輸到AS100。發出以下命令:
ip as-path access-list access-list-number {permit | deny} as-regular-expression
neighbor {ip-address | peer-group-name} filter-list access-list-number {in | out}
此示例停止將有關172.31.160.0的更新傳送到RTA:
RTC#
router bgp 300
neighbor 10.3.3.3 remote-as 200
neighbor 10.2.2.2 remote-as 100
neighbor 10.2.2.2 filter-list 1 out
!--- The 1 is the access list number below.
ip as-path access-list 1 deny ^200$
ip as-path access-list 1 permit .*
本示例中的
access-list 1命令強制拒絕任何包含以200開頭並以200結尾的路徑資訊的更新。命令中的^200$為「正規表示式」,其中^表示「starts with」,$表示「ends with」。由於RTB傳送有關172.31.160.0的更新,路徑資訊以200開頭,以200結尾,因此這些更新與訪問清單匹配。訪問清單拒絕這些更新。
.*是另一個正規表示式,其中.表示「任何字元」,*表示「該字元的重複」。So.*表示任何路徑資訊,這對於傳輸所有其他更新是必要的。
如果不使用^200$,而使用^200?使用AS400(如本節中的圖所示),AS400發出的更新具有形式(200、400)的路徑資訊。在此路徑資訊中,200是第一個,400是最後一個。這些更新與訪問清單^200相匹配,因為路徑資訊以200開頭。訪問清單可防止將這些更新傳輸到RTA,這不是要求。
要檢查使用的正規表示式是否正確,可以發出show ip bgp regexpregular-expression 命令。此命令顯示與正規表示式配置匹配的所有路徑。
AS正規表示式
本節介紹如何建立正規表示式。
規則運算式是一種比對輸入字串的模式。建立規則運算式時,請指定輸入必須相符的字串。對於BGP,您指定一個字串,該字串包含輸入必須匹配的路徑資訊。
在路徑過濾器部分的示例中,指定了字串^200$。您希望更新中包含的路徑資訊與字串匹配以便決定。
正規表示式包括:
-
範圍
範圍是左方括弧和右方括弧內的字元序列。例如[abcd]。
-
Atom
原子是一個字元。以下是一些示例:
.
-
.匹配任意單個字元。
^
-
^與輸入字串的開頭相匹配。
$
-
$與輸入字串的結尾相匹配。
\
-
\與字元相匹配。
-
-
_匹配以下項:逗號(,)、左大括弧({)、右大括弧(})、輸入字串的開頭、輸入字串的結尾或空格。
-
片段
片段是以下符號之一,位於原子之後:
*
-
*匹配零個或更多原子序列。
+
-
+匹配一個或更多原子序列。
?
-
?與atom或null字串匹配。
-
分支
分支為0個或更多串聯的片段。
下面是一些正規表示式的示例:
a*
-
此表示式表示任何出現的字母「a」,其中不含none。
a+
-
此表示式表示至少必須出現一個字母「a」。
ab?a
-
此表示式符合「aa」或「aba」。
_100_
-
此表示式表示透過AS100。
_100$
-
此表示式表示AS100的來源。
^100 .*
-
此表示式表示從AS100傳輸。
^$
-
此表示式表示來自此AS。
有關正規表示式過濾的示例配置,請參閱在BGP中使用正規表示式。
BGP社群過濾器
本文檔介紹了路由過濾和AS路徑過濾。另一種方法是社群過濾。社群屬性部分討論了社群,此部分提供了幾個有關如何使用社群的示例。
在本示例中,您希望RTB將社群屬性設定為RTB通告的BGP路由,以便RTC不將這些路由傳播給外部對等體。使用
no-export社群屬性。
RTB#
router bgp 200
network 172.31.160.0
neighbor 10.3.3.1 remote-as 300
neighbor 10.3.3.1 send-community
neighbor 10.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
注意:此示例使用route-map setcommunity命令將社群設定為無輸出。
注意:必須使用neighbor send-community 命令才能將此屬性傳送到RTC。
當RTC獲得屬性為NO_EXPORT的更新時,RTC不會將更新傳播到外部對等體RTA。
在本示例中,RTB將社群屬性設定為
100 200 additive 。此操作會將值100 200增加到傳輸到RTC之前的任何當前社群值。
RTB#
router bgp 200
network 172.31.160.0
neighbor 10.3.3.1 remote-as 300
neighbor 10.3.3.1 send-community
neighbor 10.3.3.1 route-map setcommunity out
route-map setcommunity
match ip address 2
set community 100 200 additive
access-list 2 permit 0.0.0.0 255.255.255.255
社群清單是在路由對映的match 子句中使用的社群組。社群清單允許您過濾或設定以社群編號的不同清單為基礎的屬性。
ip community-list <community-list-number> {permit | deny} <community-number>
例如,您可以定義路由對映match-on-community:
route-map match-on-community
match community 10
!--- The community list number is 10.
set weight 20
ip community-list 10 permit 200 300
!--- The community number is 200 300.
您可以使用社群清單來過濾或設定特定更新中的特定引數,例如權重和度量,以社群值為基礎。在本部分的第二個示例中,RTB向100 200社群的RTC傳送更新。如果RTC想要以這些值為基礎來設定加權,您可以執行下列作業:
RTC#
router bgp 300
neighbor 10.3.3.3 remote-as 200
neighbor 10.3.3.3 route-map check-community in
route-map check-community permit 10
match community 1
set weight 20
route-map check-community permit 20
match community 2 exact
set weight 10
route-map check-community permit 30
match community 3
ip community-list 1 permit 100
ip community-list 2 permit 200
ip community-list 3 permit internet
在本示例中,社群屬性中包含100的所有路由都與清單1匹配。此路由的權重設定為20。社群中僅有200條路由匹配清單2且權重為20的任何路由。關鍵字exact 表示社群只包含200,不包含任何其他內容。最後一個社群清單用於確保不會丟棄其他更新。請記住,預設情況下,任何不匹配的內容都會丟棄。關鍵字internet 表示所有路由,因為所有路由都是Internet社群的成員。
有關詳細資訊,請參閱使用BGP社群值配置和控制上游供應商網路。
BGP鄰居和路由對映
可以將neighbor 命令與路由對映一起使用,以針對傳入或傳出的更新過濾或設定引數。
當根據IP地址進行匹配時,與neighbor 語句關聯的路由對映對傳入的更新無效:
neighbor <ip-address> route-map <route-map-name>
假設在本節的圖表中,您希望RTC從AS200學習有關AS200本地的網路,而不學習任何其他內容。此外,您要將接受的路由的權重設定為20。請聯合使用neighbor和as-path訪問清單:
RTC#
router bgp 300
network 172.16.10.0
neighbor 10.3.3.3 remote-as 200
neighbor 10.3.3.3 route-map stamp in
route-map stamp
match as-path 1
set weight 20
ip as-path access-list 1 permit ^200$
任何源自AS200的更新都具有以200開頭並以200結尾的路徑資訊。允許這些更新。任何其它更新都會丟棄。
假設您需要:
-
接受來自AS200且權重為20的更新
-
來自AS400的更新丟棄
-
其他更新的權重為10
RTC#
router bgp 300
network 172.16.10.0
neighbor 10.3.3.3 remote-as 200
neighbor 10.3.3.3 route-map stamp in
route-map stamp permit 10
match as-path 1
set weight 20
route-map stamp permit 20
match as-path 2
set weight 10
ip as-path access-list 1 permit ^200$
ip as-path access-list 2 permit ^200 600 .*
此語句將AS200本地更新的權重設定為20。該語句還將AS400之後的更新的權重設定為10,並丟棄來自AS400的更新。
使用Set As-path Prepend命令
在某些情況下,必須處理路徑資訊才能處理BGP決策過程。與路由對映一起使用的命令是:
set as-path prepend <as-path#> <as-path#>
假設在BGP鄰居和路由對映部分的圖中,RTC將自己的網路172.16.10.0通告給兩個不同的AS,即AS100和AS200。當資訊傳播到AS600時,AS600中的路由器透過兩條不同的路由擁有關於172.16.10.0的網路可達性資訊。第一路由是經由AS100的路徑(100,300),第二路由是經由AS400的路徑(400,200,300)。如果所有其他屬性都相同,AS600將選擇最短路徑,並透過AS100選擇路由。
AS300透過AS100獲取所有流量。如果您想要從AS300端影響此決定,您可以使透過AS100的路徑看起來比透過AS400的路徑長。如果將AS編號附加到通告給AS100的當前路徑資訊,則可以執行此操作。常見的做法是以此方式重複您自己的AS編號:
RTC#
router bgp 300
network 172.16.10.0
neighbor 10.2.2.2 remote-as 100
neighbor 10.2.2.2 route-map SETPATH out
route-map SETPATH
set as-path prepend 300 300
由於此配置,AS600透過AS100接收有關172.16.10.0的更新,路徑資訊為:(100、300、300、300)。此路徑資訊比AS600從AS400接收的(400、200、300)長。
BGP對等群組
BGP對等體組是一組具有相同更新策略的BGP鄰居。路由對映、分發清單和過濾器清單通常設定更新策略。您不為每個單獨的鄰居定義相同的策略;而是定義對等體組名稱並將這些策略分配給對等體組。
對等體組的成員繼承對等體組的所有配置選項。您還可以配置成員,使其在選項不影響出站更新時覆蓋這些選項。只能覆蓋在入站上設定的選項。
要定義對等體組,請發出以下命令:
neighbor peer-group-name peer-group
此示例將對等體組應用於內部和外部BGP鄰居:
RTC#
router bgp 300
neighbor internalmap peer-group
neighbor internalmap remote-as 300
neighbor internalmap route-map SETMETRIC out
neighbor internalmap filter-list 1 out
neighbor internalmap filter-list 2 in
neighbor 10.5.5.2 peer-group internalmap
neighbor 10.6.6.2 peer-group internalmap
neighbor 10.3.3.2 peer-group internalmap
neighbor 10.3.3.2 filter-list 3 in
此配置定義一個名稱為internalmap的對等體組。 該配置為對等體組定義某些策略,如定義路由對映SETMETRIC 以將度量設定為5,並定義兩個不同的過濾器清單1和2。該配置將對等體組應用於所有內部鄰居、RTE、RTF和RTG。此外,該配置還為鄰居RTE定義單獨的過濾器清單3。此過濾器清單會覆蓋對等組內的過濾器清單2。
附註:您只能覆寫影響內送更新的選項。
現在,請看一下您如何與外部鄰居一起使用對等組。在本部分的同一個圖中,使用對等體組externalmap 配置RTC,將該對等體組應用到外部鄰居。
RTC#
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 10.2.2.2 remote-as 100
neighbor 10.2.2.2 peer-group externalmap
neighbor 10.4.4.2 remote-as 600
neighbor 10.4.4.2 peer-group externalmap
neighbor 10.1.1.2 remote-as 200
neighbor 10.1.1.2 peer-group externalmap
neighbor 10.1.1.2 filter-list 3 in
注意:在這些配置中,在對等體組之外定義remote-as語句,因為您必須定義不同的外部AS。此外,您會使用過濾器清單3的分配覆蓋鄰居10.1.1.2的入站更新。有關對等體組的詳細資訊,請參閱BGP對等體組。
注意:在Cisco IOS軟體版本12.0(24)S中,Cisco引入了BGP動態更新對等體組功能。更高的Cisco IOS軟體版本中也提供了此功能。該功能引入了一種新演算法,可動態計算和最佳化共用相同出站策略的鄰居更新組。這些鄰居可以共用相同的更新消息。在Cisco IOS軟體的早期版本中,BGP更新消息的組基於對等體組配置。這種分組更新受限出站策略和特定會話配置的方法。BGP動態更新對等體組功能將更新組複製與對等體組配置分開。這種分離提高了收斂時間和鄰居配置的靈活性。有關詳細資訊,請參閱BGP動態更新對等體組。
BGP案例分析4
CIDR和聚合地址
BGP4在BGP3上的主要增強功能之一是無類域間路由(CIDR)。CIDR或超網劃分是一種檢視IP地址的新方法。使用CIDR時,沒有類別(如A、B或C類)的概念。例如,網路192.168.213.0曾經是非法的C類網路。現在,該網路是一個合法的超級網路,192.168.213.0/16。16代表從IP地址最左邊開始計數時子網掩碼中的位數。此表示類似於192.168.213.0 255.255.0.0。
使用聚合可將路由表的大小降至最低。聚合是一種將多個不同路由的特性結合在一起的過程,這樣就可以通告單個路由。在本示例中,RTB生成網路172.31.160.0。您可以配置RTC將該路由192.168.160.0的超網傳播到RTA:
RTB#
router bgp 200
neighbor 10.3.3.1 remote-as 300
network 172.31.160.0
#RTC
router bgp 300
neighbor 10.3.3.3 remote-as 200
neighbor 10.2.2.2 remote-as 100
network 172.16.10.0
aggregate-address 192.168.160.0 255.0.0.0
RTC將聚合地址192.168.160.0傳播到RTA。
彙總命令
聚合命令範圍很廣。您必須瞭解每個元件的工作方式,才能擁有您想要的彙總行為。
第一個命令來自CIDR和聚合地址部分的示例:
aggregate-address address-mask
此命令通告字首路由和所有更具體的路由。命令aggregate-address 192.168.160.0 傳播附加網路192.168.160.0,但不阻止將172.31.160.0傳播到RTA。結果是將兩個網路192.168.160.0和172.31.160.0傳播到RTA,這是通告字首和更具體的路由。
注意:如果您在BGP路由表中沒有該地址的更具體的路由,您將無法聚合地址。
例如,如果RTB在BGP表中沒有更具體的條目192.168.160.0,則RTB無法為192.168.160.0生成聚合。可以將更具體的路由注入到BGP表中。路由注入可透過以下方式進行:
-
從其他AS傳入的更新
-
將IGP或靜態重分配到BGP中
-
network 命令,例如network 172.31.160.0
如果希望RTC只傳播網路192.168.160.0,而不傳播更具體的路由,則發出以下命令:
aggregate-address <address> <mask> summary-only
此命令僅通告字首。該命令會抑制所有更具體的路由。
命令aggregate 192.168.160.0 255.0.0.0 summary-only 傳播網路192.168.160.0,抑制更具體的路由172.31.160.0。
注意:如果聚合一個透過network語句注入BGP的網路,則該網路項始終注入BGP更新中。即使使用aggregate summary-only命令,此注入仍會進行。CIDR示例1部分中的示例討論了這種情況。
aggregate-address <address> <mask> as-set
此命令通告字首和更具體的路由。但此命令在路由更新的路徑資訊中包含as-set資訊。
aggregate 192.168.0.0 255.0.0.0 as-set
部分CIDR示例2 (as-set)討論了此命令。
如果要在執行聚合時抑制更具體的路由,請定義路由對映並將路由對映應用於聚合。該操作允許您選擇要抑制哪些更具體的路由。
aggregate-address <address> <mask> suppress-map <map-name>
此命令通告字首和更具體的路由。但該命令使用路由對映來抑制通告。假設在CIDR和聚合地址部分的圖中,希望聚合192.168.160.0,抑制更具體的路由192.168.160.20,允許傳播172.31.160.0。使用此路由對映:
route-map CHECK permit 10
match ip address 1
access-list 1 permit 192.168.160.20 0.0.255.255
access-list 1 deny 0.0.0.0 255.255.255.255
透過定義suppress-map,會抑制訪問清單所允許的所有資料包的更新。
然後,將路由對映應用到aggregate 語句。
RTC#
router bgp 300
neighbor 10.3.3.3 remote-as 200
neighbor 10.2.2.2 remote-as 100
neighbor 10.2.2.2 remote-as 100
network 172.16.10.0
aggregate-address 192.168.160.0 255.0.0.0 suppress-map CHECK
以下是另一個變體:
aggregate-address <address> <mask> attribute-map <map-name>
此命令允許您在傳送聚合時設定屬性(如度量)。要將聚合的源設定為IGP,可以將此路由對映應用到aggregate attribute-map 命令:
route-map SETMETRIC
set origin igp
aggregate-address 192.168.160.0 255.0.0.0 attribute-map SETORIGIN
有關詳細資訊,請參閱瞭解BGP中的路由聚合。
CIDR示例1
請求:允許RTB通告字首192.168.160.0並抑制所有更具體的路由。此請求的問題是網路172.31.160.0位於AS200本地,這意味著AS200是172.31.160.0的發起方。在不為172.31.160.0生成條目的情況下,RTB不能為192.168.160.0生成字首,即使使用aggregate summary-only 命令也是如此。RTB生成兩個網路,因為RTB是172.31.160.0的發起方。這個問題有兩種解決方法。
第一種解決方案是使用靜態路由並將其重分配到BGP中。結果是RTB將通告源不完整(?)的聚合。
RTB#
router bgp 200
neighbor 10.3.3.1 remote-as 300
redistribute static
!--- This generates an update for 192.168.160.0 !--- with the origin path as "incomplete".
ip route 192.168.160.0 255.0.0.0 null0
在第二個解決方法中,除靜態路由之外,還為network命令增加條目。此條目具有相同的效果,不同之處在於它會將更新的源設定為IGP。
RTB#
router bgp 200
network 192.168.160.0 mask 255.0.0.0
!--- This entry marks the update with origin IGP.
neighbor 10.3.3.1 remote-as 300
redistribute static
ip route 192.168.160.0 255.0.0.0 null0
CIDR示例2 (as-set)
在聚合中使用as-set 語句以減小路徑資訊的大小。使用as-set語句時,AS編號不管在被聚合的多條路徑中顯示過多少次,都只列出一次。在資訊聚合導致有關路徑屬性的資訊丟失時,將使用aggregate as-set 命令。在本示例中,RTC從RTA獲取有關192.168.160.20的更新,從RTB獲取有關172.31.160.0的更新。假設RTC要聚合網路192.168.160.0/8並將網路傳送到RTD。RTD不知道該路由的來源。如果增加aggregate as-set 語句,則強制RTC以集合{}形式生成路徑資訊。該集合包括所有路徑資訊,無論哪個路徑最先。
RTB#
router bgp 200
network 172.31.160.0
neighbor 10.3.3.1 remote-as 300
RTA#
router bgp 100
network 192.168.160.20
neighbor 10.2.2.1 remote-as 300
案例 1:
RTC沒有as-set 語句。RTC將包含路徑資訊(300)的更新192.168.160.0/8傳送到RTD,就像該路由源自AS300一樣。
RTC#
router bgp 300
neighbor 10.3.3.3 remote-as 200
neighbor 10.2.2.2 remote-as 100
neighbor 10.4.4.4 remote-as 400
aggregate 192.168.160.0 255.0.0.0 summary-only
!--- This command causes RTC to send RTD updates about 192.168.160.0/8
!--- with no indication that 192.168.160.0 actually comes from two different ASs.
!--- This may create loops if RTD has an entry back into AS100 or AS200.
案例 2:
RTC#
router bgp 300
neighbor 10.3.3.3 remote-as 200
neighbor 10.2.2.2 remote-as 100
neighbor 10.4.4.4 remote-as 400
aggregate 192.168.160.0 255.0.0.0 summary-only
aggregate 192.168.160.0 255.0.0.0 as-set
!--- This command causes RTC to send RTD updates about 192.168.160.0/8
!--- with an indication that 192.168.160.0 belongs to a set {100 200}.
以下兩個主題BGP聯盟和路由反射器適用於希望進一步控制其AS內iBGP對等急劇成長的Internet服務提供商(ISP)。
BGP聯盟
BGP聯盟的實現減少了AS內部的iBGP網格。訣竅是將一個AS劃分為多個AS,並將整個組分配到單個聯盟。每個AS單獨具有iBGP全網格化,並且與聯盟內的其他AS具有連線。即使這些AS在聯盟中與AS具有eBGP對等體,AS仍會像使用iBGP一樣交換路由。透過這種方式,聯盟可保留下一跳、度量和本地優先順序資訊。對外部世界而言,該聯盟似乎是單個AS。
要配置BGP聯盟,請發出以下命令:
bgp confederation identifier <autonomous-system>
聯盟識別符號是聯盟組的AS編號。
發出此命令在聯盟內的多個AS之間執行對等:
bgp confederation peers <autonomous-system> <autonomous-system>
以下是聯盟的範例:
假設您的AS500由九個BGP揚聲器組成。其他非BGP揚聲器也存在,但您只對與其他AS具有eBGP連線的BGP揚聲器感興趣。如果要在AS500內建立完整的iBGP網格,則每台路由器需要九個對等連線。您需要八個iBGP對等體和一個外部AS的eBGP對等體。
如果使用聯盟,可以將AS500劃分為多個AS:AS50、AS60和AS70。您將AS指定為聯盟識別符號500。外部世界只看到一個AS,AS500。對於AS50、AS60和AS70,您分別定義一個iBGP對等體的完整網格,並使用bgp confederation peers 命令定義聯盟對等體清單。
以下是路由器RTC、RTD和RTA的示例配置:
註:RTA不瞭解AS50、AS60或AS70。RTA只知道AS500。
RTC#
router bgp 50
bgp confederation identifier 500
bgp confederation peers 60 70
neighbor 10.128.213.10 remote-as 50 (IBGP connection within AS50)
neighbor 10.128.213.20 remote-as 50 (IBGP connection within AS50)
neighbor 10.128.213.11 remote-as 60 (BGP connection with confederation peer 60)
neighbor 10.128.213.14 remote-as 70 (BGP connection with confederation peer 70)
neighbor 10.5.5.5 remote-as 100 (EBGP connection to external AS100)
RTD#
router bgp 60
bgp confederation identifier 500
bgp confederation peers 50 70
neighbor 10.128.210.2 remote-as 60 (IBGP connection within AS60)
neighbor 10.128.213.30 remote-as 50(BGP connection with confederation peer 50)
neighbor 10.128.213.14 remote-as 70 (BGP connection with confederation peer 70)
neighbor 10.6.6.16 remote-as 600 (EBGP connection to external AS600)
RTA#
router bgp 100
neighbor 10.5.5.4 remote-as 500 (EBGP connection to confederation 500)
路由反射器
解決AS內iBGP對等急劇增加的另一個方案是路由反射器(RR)。如iBGP部分所述,BGP揚聲器不會將BGP揚聲器透過其他iBGP揚聲器獲知的路由通告給第三個iBGP揚聲器。您可以稍微放寬此限制,並提供其他控制,允許路由器向其他iBGP揚聲器通告iBGP獲知的路由,或將其反映出來。此路由反射可減少AS內的iBGP對等體數量。
在正常情況下,在AS100內維護RTA、RTB和RTC之間的完整iBGP網格。如果使用RR概念,則可以選擇RTC作為RR。透過這種方式,RTC與RTA和RTB具有部分iBGP對等。因為RTC是來自RTA和RTB的更新的RR,所以不需要在RTA和RTB之間對等。
neighbor <ip address> route-reflector-client
使用此命令的路由器是RR,命令點所在的鄰居是該RR的客戶端。在本示例中,RTC配置使用指向RTA和RTB IP地址的neighbor route-reflector-client 命令。RR和客戶端的組合是一個「集群」。在本示例中,RTA、RTB和RTC組成了一個在AS100內具有單個RR的集群。
非客戶端的路由反射器的其他iBGP對等體是非客戶端。
一個AS可以有多個路由反射器。在這種情況下,RR會像對待其他iBGP揚聲器一樣對待其他RR。其他RR可以屬於同一群集(客戶端組)或其他群集。在簡單的配置中,您可以將AS劃分為多個集群。在完全網狀拓撲中,將具有其他RR的每個RR配置為非客戶端對等體。客戶端不能與客戶端群集外部的iBGP揚聲器對等。
在上圖中,RTA、RTB和RTC組成了一個集群。RTC是路由反射器。對於RTC,RTA和RTB是客戶端,其他任何裝置都是非客戶端。請記住,neighbor route-reflector-client 命令指向路由反射器的客戶端。同一RTD是客戶端RTE和RTF的RR。RTG是第三個群集中的RR。
注意:RTD、RTC和RTG已完全網格化,但集群內的路由器未網格化。
當RR收到路由時,RR會進行路由,如以下清單所示。但是,本練習取決於對等體型別:
-
來自非客戶端對等體的路由-反映到集群中的所有客戶端。
-
來自客戶端對等體的路由-反映到所有非客戶端對等體以及客戶端對等體。
-
來自eBGP對等體的路由-將更新傳送到所有客戶端和非客戶端對等體。
以下是路由器RTC、RTD和RTB的相對BGP配置:
RTC#
router bgp 100
neighbor 10.2.2.2 remote-as 100
neighbor 10.2.2.2 route-reflector-client
neighbor 10.1.1.1 remote-as 100
neighbor 10.1.1.1 route-reflector-client
neighbor 10.7.7.7 remote-as 100
neighbor 10.4.4.4 remote-as 100
neighbor 10.8.8.8 remote-as 200
RTB#
router bgp 100
neighbor 10.3.3.3 remote-as 100
neighbor 10.12.12.12 remote-as 300
RTD#
router bgp 100
neighbor 10.6.6.16 remote-as 100
neighbor 10.6.6.16 route-reflector-client
neighbor 10.5.5.5 remote-as 100
neighbor 10.5.5.5 route-reflector-client
neighbor 10.7.7.7 remote-as 100
neighbor 10.3.3.3 remote-as 100
由於存在iBGP獲知的路由的反射,因此可能存在路由資訊環路。RR方案有幾個方法可避免此環路:
-
originator-id — 為可選的、非傳遞性的BGP屬性,長度為4個位元組。RR會建立此屬性。該屬性攜帶本地AS中路由發起方的路由器ID (RID)。如果由於配置不佳,路由資訊返回給建立者,則忽略該資訊。
-
cluster-list —「集群內的多個路由反射器」部分介紹了集群清單。
群集內的多個路由反射器
通常,客戶端群集具有單個RR。在這種情況下,RR的路由器ID標識集群。為了提高冗餘性並避免單點故障,一個集群可以具有多個RR。您需要使用4位元組群集ID配置同一群集中的所有RR,以便路由反射器能夠辨識來自同一群集中的路由反射器的更新。
集群清單是路由經過的一系列集群ID。當RR反映從RR客戶端到群集外部的非客戶端的路由時,RR會將本地群集ID附加到群集清單中。如果此更新具有空的群集清單,則RR會建立一個群集清單。透過此屬性,RR可以確定路由資訊是否由於配置不佳而環回到同一集群。如果在集群清單中找到本地集群ID,則忽略通告。
在此部分的圖中,RTD、RTE、RTF和RTH屬於一個集群。RTD和RTH都是同一集群的RR。
注意:存在冗餘的原因是RTH與所有RR之間具有全網狀對等關係。如果RTD中斷,RTH將取代RTD。
以下是RTH、RTD、RTF和RTC的配置:
RTH#
router bgp 100
neighbor 10.4.4.4 remote-as 100
neighbor 10.5.5.5 remote-as 100
neighbor 10.5.5.5 route-reflector-client
neighbor 10.6.6.16 remote-as 100
neighbor 10.6.6.16 route-reflector-client
neighbor 10.7.7.7 remote-as 100
neighbor 10.3.3.3 remote-as 100
neighbor 10.9.9.9 remote-as 300
bgp cluster-id 10
RTD#
router bgp 100
neighbor 10.10.10.10 remote-as 100
neighbor 10.5.5.5 remote-as 100
neighbor 10.5.5.5 route-reflector-client
neighbor 10.6.6.16 remote-as 100
neighbor 10.6.6.16 route-reflector-client
neighbor 10.7.7.7 remote-as 100
neighbor 10.3.3.3 remote-as 100
neighbor 10.11.11.11 remote-as 400
bgp cluster-id 10
RTF#
router bgp 100
neighbor 10.10.10.10 remote-as 100
neighbor 10.4.4.4 remote-as 100
neighbor 10.13.13.13 remote-as 500
RTC#
router bgp 100
neighbor 10.1.1.1 remote-as 100
neighbor 10.1.1.1 route-reflector-client
neighbor 10.2.2.2 remote-as 100
neighbor 10.2.2.2 route-reflector-client
neighbor 10.4.4.4 remote-as 100
neighbor 10.7.7.7 remote-as 100
neighbor 10.10.10.10 remote-as 100
neighbor 10.8.8.8 remote-as 200
注意:對於RTC,不需要bgp cluster-id命令,因為該群集中只存在一個路由反射器。
注意:此配置不使用對等體組。如果集群內的客戶端之間沒有直接的iBGP對等體,並且客戶端透過RR交換更新,則不要使用對等組。如果配置對等體組,路由反射器上路由源的潛在退出會傳輸到集群內的所有客戶端。此傳輸可能會導致問題。
預設情況下,會在路由反射器上啟用路由器子命令bgp client-to-client reflection 。如果關閉路由反射器上的BGP客戶端到客戶端反射,並在客戶端之間執行冗餘BGP對等,則可以安全地使用對等組。有關詳細資訊,請參閱對等體組的限制。
RR和傳統BGP揚聲器
AS可以有不理解RR概念的BGP揚聲器。本文檔將這些路由器稱為傳統BGP揚聲器。RR方案允許這樣的傳統BGP揚聲器共存。這些路由器可以是客戶端組或非客戶端組的成員。這些路由器的存在使得從當前iBGP模型到RR模型的遷移變得簡單而逐步。如果將單個路由器配置為RR並使其他RR和RR客戶端成為iBGP對等體,則可開始建立集群。然後,您可以逐步建立更多的叢集。
在此圖中,RTD、RTE和RTF具有路由反射的概念。RTC、RTA和RTB是傳統路由器。不能將這些路由器配置為RR。您可以在這些路由器和RTD之間執行正常的iBGP網格。稍後,當您準備好升級時,可以將RTC設定為具有客戶端RTA和RTB的RR。客戶端不必瞭解路由反射方案;僅RR需要升級。
以下是RTD和RTC的配置:
RTD#
router bgp 100
neighbor 10.6.6.16 remote-as 100
neighbor 10.6.6.16 route-reflector-client
neighbor 10.5.5.5 remote-as 100
neighbor 10.5.5.5 route-reflector-client
neighbor 10.3.3.3 remote-as 100
neighbor 10.2.2.2 remote-as 100
neighbor 10.1.1.1 remote-as 100
neighbor 10.13.13.13 remote-as 300
RTC#
router bgp 100
neighbor 10.4.4.4 remote-as 100
neighbor 10.2.2.2 remote-as 100
neighbor 10.1.1.1 remote-as 100
neighbor 10.14.14.14 remote-as 400
當您準備好升級RTC並將RTC設為RR時,請移除iBGP全網狀網路,並讓RTA和RTB成為RTC的使用者端。
避免路由資訊環路
到目前為止,本文檔已提到可用於防止潛在資訊循環的兩個屬性:originator-id 和cluster-list。
控制環路的另一個方法是對出站路由對映的set 子句進行更多限制。出站路由對映的set 子句不影響反射到iBGP對等體的路由。
也可以對next-hop-self進行更多限制,配置此選項時需要為每個鄰居進行配置。當您在RR上使用next-hop-selfo時,該子句只影響eBGP獲知的路由的下一跳,因為不能更改反射的路由的下一跳。
路由擺動抑制
Cisco IOS軟體11.0版引入了路由懲罰。路由阻尼是一種機制,用於最大限度地降低路由抖動引起的不穩定性。路由衰減還可減少網路中的振盪。您可以定義條件來辨識行為不良的路由。對於翻動的路由,每個翻動的罰分為1000。一旦累積懲罰達到預定義的抑制限制,就會抑制路由通告。罰金會根據預配置的半衰期以指數方式衰減。一旦罰金在預先定義的重複使用限制下減少,路由通告將不再被抑制。
路由衰減不適用於在AS外部並透過iBGP獲取的路由。透過這種方式,路由抑制可避免對iBGP對等體的AS外部路由進行更高懲罰。
罰金以5秒的粒度衰減。這些路由在10秒的粒度下未被抑制。路由器會保留阻尼資訊,直到懲罰變為小於重複使用限制的一半為止。此時,路由器將清除這些資訊。
最初,依預設會關閉懲罰。如果需要,將來可以預設啟用此功能。以下命令控制路由懲罰:
-
bgp dampening — 啟用懲罰。
-
no bgp dampening — 關閉懲罰。
-
bgp dampeninghalf-life-time — 更改半衰期時間。
可同時設定所有引數的指令為:
-
bgp dampeninghalf-life-timereusesuppresspmaximum-suppress-time
此清單詳細說明語法:
-
half-life-time — 範圍是1-45分鐘,當前預設值是15分鐘。
-
reuse-value — 範圍是1-20,000,預設值是750。
-
suppress-value — 範圍是1-20,000,預設值為2000。
-
max-suppress-time — 這是抑制路由的最長持續時間。範圍是1-255分鐘,預設值是半衰期時間的4倍。
RTB#
hostname RTB
interface Serial0
ip address 192.168.250.2 255.255.255.252
interface Serial1
ip address 192.168.10.6 255.255.255.252
router bgp 100
bgp dampening
network 192.168.250.15
neighbor 192.168.10.5 remote-as 300
RTD#
hostname RTD
interface Loopback0
ip address 192.168.208.174 255.255.255.192
interface Serial0/0
ip address 192.168.10.5 255.255.255.252
router bgp 300
network 192.168.10.0
neighbor 192.168.10.6 remote-as 100
RTB的配置用於使用預設引數的路由懲罰。如果假設eBGP到RTD的鏈路是穩定的,則RTB BGP表如下所示:
RTB#show ip bgp
BGP table version is 24, local router ID is 192.168.250.2 Status codes: s
suppressed, d damped, h history, * valid, > best, i - internal Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 192.168.10.0 192.168.10.5 0 0 300 i
*> 192.168.250.15 0.0.0.0 0 32768 i
要模擬路由抖動,可以對RTD發出clear ip bgp 192.168.10.6 命令。RTB BGP表如下所示:
RTB#show ip bgp
BGP table version is 24, local router ID is 192.168.250.2 Status codes: s
suppressed, d damped, h history, * valid, > best, i - internal Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
h 192.168.10.0 192.168.10.5 0 0 300 i
*> 192.168.250.15 0.0.0.0 0 32768 i
192.168.10.0的BGP條目處於ahhistorystate。此位置意味著您沒有到達路由的最佳路徑,但是有關路由擺動的資訊仍然存在。
RTB#show ip bgp 192.168.10.0
BGP routing table entry for 192.168.10.0 255.255.255.0, version 25
Paths: (1 available, no best path)
300 (history entry)
192.168.10.5 from 192.168.10.5 (192.168.208.174)
Origin IGP, metric 0, external
Dampinfo: penalty 910, flapped 1 times in 0:02:03
該路由已收到抖動的處罰,但是該處罰仍在suppress限制之下。預設值為2000。尚未發生路由抑制。如果路由再擺動幾次,您會看到:
RTB#show ip bgp
BGP table version is 32, local router ID is 192.168.250.2 Status codes:
s suppressed, d damped, h history, * valid, > best, i - internal Origin codes:
i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*d 192.168.10.0 192.168.10.5 0 0 300 i
*> 192.168.250.15 0.0.0.0 0 32768 i
RTB#show ip bgp 192.168.10.0
BGP routing table entry for 192.168.10.0 255.255.255.0, version 32
Paths: (1 available, no best path)
300, (suppressed due to dampening)
192.168.10.5 from 192.168.10.5 (192.168.208.174)
Origin IGP, metric 0, valid, external
Dampinfo: penalty 2615, flapped 3 times in 0:05:18 , reuse in 0:27:00
已抑制或抑制路由。當懲罰達到「重複使用值」時,路由將被重複使用。在這種情況下,重複使用值為預設值750。當罰金小於重複使用限制的一半時,會清除懲罰資訊。在這種情況下,當罰金變為375 (750/2=375)時,就會執行清除。以下命令顯示和清除抖動統計資訊:
-
show ip bgp flap-statistics — 顯示所有路徑的抖動統計資訊。
-
show ip bgp flap-statistics regexpregular-expression — 顯示與正規表示式相匹配的所有路徑的抖動統計資訊。
-
show ip bgp flap-statistics filter-listlist —顯示透過過濾器的所有路徑的抖動統計資訊。
-
show ip bgp flap-statisticsA.B.C.D m.m.m.m —顯示單個條目的抖動統計資訊。
-
show ip bgp flap-statisticsA.B.C.D m.m.m.mlonger-prefix — 顯示更具體的條目的抖動統計資訊。
-
show ip bgp neighbor [dampened-routes] | [flap-statistics] —顯示來自鄰居的所有路徑的抖動統計資訊。
-
clear ip bgp flap-statistics — 清除所有路由的抖動統計資訊。
-
clear ip bgp flap-statistics regexpregular-expression — 清除與正規表示式相匹配的所有路徑的抖動統計資訊。
-
clear ip bgp flap-statistics filter-listlist —清除透過過濾器的所有路徑的抖動統計資訊。
-
clear ip bgp flap-statisticsA.B.C.D m.m.m.m —清除單個條目的抖動統計資訊。
-
clear ip bgpA.B.C.Dflap-statistics — 清除來自某個鄰居的所有路徑的抖動統計資訊。
BGP如何選擇路徑
現在您已經熟悉BGP屬性和術語,接下來請參閱BGP最佳路徑選擇演算法。
BGP案例分析5
實際設計範例
本部分包含一個設計示例,該示例在表實際出現在Cisco路由器上時顯示配置和路由表。
本節介紹如何逐步構建此配置以及過程中可能出現的問題。每當AS透過eBGP連線到兩個ISP時,請始終在AS內運行iBGP,以便更好地控制路由。在本示例中,iBGP在RTA和RTB之間的AS100內部運行,OSPF作為IGP運行。假設您連線到兩個ISP,AS200和AS300。這是所有路由器配置的首次運行:
注意:這些配置不是最終配置。
RTA#
hostname RTA
ip subnet-zero
interface Loopback0
ip address 192.168.203.250 255.255.255.0
interface Ethernet0
ip address 192.168.203.14 255.255.255.0
interface Serial0
ip address 192.168.128.63 255.255.255.252
router ospf 10
network 192.168.203.25 0.0.255.255 area 0
router bgp 100
network 192.168.203.13
network 192.168.250.14
neighbor 172.31.63.250 remote-as 200
neighbor 192.168.250.2 remote-as 100
neighbor 192.168.250.2 update-source Loopback0
RTF#
hostname RTF
ip subnet-zero
interface Ethernet0
ip address 172.31.14.250 255.255.255.0
interface Serial1
ip address 172.16.15.250 255.255.255.252
router ospf 10
network 192.168.203.25 0.0.255.255 area 0
RTB#
hostname RTB
ip subnet-zero
interface Serial0
ip address 192.168.250.2 255.255.255.252
interface Serial1
ip address 192.168.10.6 255.255.255.252
router ospf 10
network 192.168.203.25 0.0.255.255 area 0
router bgp 100
network 192.168.250.15
neighbor 192.168.10.5 remote-as 300
neighbor 192.168.203.250 remote-as 100
RTC#
hostname RTC
ip subnet-zero
interface Loopback0
ip address 192.168.128.6330 255.255.255.192
interface Serial2/0
ip address 172.16.31.5 255.255.255.252
!
interface Serial2/1
ip address 172.31.63.250 255.255.255.252
router bgp 200
network 172.31.10.0
neighbor 192.168.128.63 remote-as 100
neighbor 172.31.63.213 remote-as 400
RTD#
hostname RTD
ip subnet-zero
interface Loopback0
ip address 192.168.208.174 255.255.255.192
interface Serial0/0
ip address 192.168.10.5 255.255.255.252
!
interface Serial0/1
ip address 192.168.10.2 255.255.255.252
router bgp 300
network 192.168.10.0
neighbor 192.168.10.1 remote-as 500
neighbor 192.168.10.6 remote-as 100
RTE#
hostname RTE
ip subnet-zero
interface Loopback0
ip address 192.168.200.10 255.255.255.0
interface Serial0
ip address 192.168.195.211 255.255.255.252
interface Serial1
ip address 172.31.63.213 255.255.255.252
clockrate 1000000
router bgp 400
network 192.168.10.10
neighbor 172.16.31.5 remote-as 200
neighbor 192.168.211.195 remote-as 500
RTG#
hostname RTG
ip subnet-zero
interface Loopback0
ip address 192.168.211.19574 255.255.255.192
interface Serial0
ip address 192.168.10.1 255.255.255.252
interface Serial1
ip address 192.168.211.195 255.255.255.252
router bgp 500
network 192.168.211.10
neighbor 192.168.10.2 remote-as 300
neighbor 192.168.195.211 remote-as 400
請始終使用
network 命令,或將靜態條目重分配到BGP以通告網路。此方法比將IGP重分配到BGP更好。此示例使用
network 命令將網路注入BGP。
在這裡,您從RTB關閉的s1介面開始,就好像RTB和RTD之間的鏈路不存在一樣。以下是RTB BGP表:
RTB#show ip bgp BGP
table version is 4, local router ID is 192.168.250.2 Status
codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*i172.31.10.0 172.31.63.250 0 100 0 200 i
*i192.168.10.0 172.31.63.250 100 0 200 400 500
300 i
*i192.168.211.10 172.31.63.250 100 0 200 400 500 i
*i192.168.10.10 172.31.63.250 100 0 200 400 i
*>i192.168.203.13 192.168.203.250 0 100 0 i
*>i192.168.250.14 192.168.203.250 0 100 0 i
*>192.168.250.15 0.0.0.0 0 32768 i
此表格中會顯示下列符號:
-
Aniat the beginning -表示該條目透過iBGP對等體獲知。
-
Aniat the end -指示路徑資訊的源是IGP。
-
Pathinformation -此資訊為直觀資訊。例如,網路172.31.10.0透過下一跳為172.31.63.250的路徑200獲知。
注意:任何本地生成的條目(例如192.168.250.15)的下一跳為0.0.0.0。
- An>symbol -表示BGP已選擇最佳路由。BGP使用BGP最佳路徑選擇演算法文檔所列出的決策步驟。BGP選擇一個到達目的地的最佳路徑,將該路徑安裝在IP路由表中,並將該路徑通告給其他BGP對等體。
注意:注意「下一跳」屬性。RTB透過下一跳172.31.63.250知道大約172.31.10.0,該下一跳是傳輸到iBGP中的eBGP下一跳。
檢視IP路由表:
RTB#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate
default
Gateway of last resort is not set
192.168.203.13 255.255.255.255 is subnetted, 1 subnets
O 192.168.203.250 [110/75] via 172.16.15.250, 02:50:45, Serial0
192.168.250.15 255.255.255.252 is subnetted, 1 subnets
C 192.168.250.15 is directly connected, Serial0
O 192.168.250.14 [110/74] via 172.16.15.250, 02:50:46, Serial0
顯然,所有BGP條目均未到達路由表。這裡存在兩個問題。
第一個問題是,這些專案的下一跳172.31.63.250無法到達。無法通過此IGP(即OSPF)到達下一跳。RTB尚未通過OSPF獲知192.168.213.63。您可以在RTA s0介面上運行OSPF並將其設定為被動介面;這樣,RTB便知道如何到達下一跳172.31.63.250。此RTA配置如下所示:
RTA#
hostname RTA
ip subnet-zero
interface Loopback0
ip address 192.168.203.250 255.255.255.0
interface Ethernet0
ip address 192.168.203.14 255.255.255.0
interface Serial0
ip address 192.168.128.63 255.255.255.252
router ospf 10
passive-interface Serial0
network 192.168.203.25 0.0.255.255 area 0
network 172.31.10.0 0.0.255.255 area 0
router bgp 100
network 192.168.203.25 mask 255.255.0.0
neighbor 172.31.63.250 remote-as 200
neighbor 192.168.250.2 remote-as 100
neighbor 192.168.250.2 update-source Loopback0
注意:您可以在RTA和RTB之間發出bgp nexthop self命令,以便更改下一跳。
RTB上的新BGP表如下所示:
RTB#show ip bgp
BGP table version is 10, local router ID is 192.168.250.2
Status codes: s suppressed, d damped, h history, * valid, > best,
i - internal Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>i172.31.10.0 172.31.63.250 0 100 0 200 i
*>i192.168.10.0 172.31.63.250 100 0 200 400 500
300 i
*>i192.168.211.10 172.31.63.250 100 0 200 400 500 i
*>i192.168.10.10 172.31.63.250 100 0 200 400 i
*>i192.168.203.13 192.168.203.250 0 100 0 i
*>i192.168.250.14 192.168.203.250 0 100 0 i
*> 192.168.250.15 0.0.0.0 0 32768 i
注意:所有條目都包含>,這表示BGP可以到達下一跳。
檢視路由表:
RTB#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * -
candidate default
Gateway of last resort is not set
192.168.203.13 255.255.255.255 is subnetted, 1 subnets
O 192.168.203.250 [110/75] via 172.16.15.250, 00:04:46, Serial0
192.168.250.15 255.255.255.252 is subnetted, 1 subnets
C 192.168.250.15 is directly connected, Serial0
O 192.168.250.14 [110/74] via 172.16.15.250, 00:04:46, Serial0
172.31.10.0 255.255.255.252 is subnetted, 1 subnets
O 192.168.213.63 [110/138] via 172.16.15.250, 00:04:47, Serial0
第二個問題是,您在路由表中仍看不到BGP條目。唯一的區別是現在可透過OSPF到達192.168.213.63。此問題是同步問題。由於缺乏與IGP的同步,BGP不會將這些條目放在路由表中,也不會傳送BGP更新中的條目。
注意:RTF沒有網路192.168.10.0和192.168.211.10的概念,因為您尚未將BGP重分配到OSPF中。
在此場景中,如果關閉同步,則條目會出現在路由表中。但連通性仍舊失靈。
如果關閉RTB上的同步,則會發生以下情況:
RTB#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * -
candidate default
Gateway of last resort is not set
B 192.168.10.10 [200/0] via 172.31.63.250, 00:01:07
B 192.168.211.10 [200/0] via 172.31.63.250, 00:01:07
B 192.168.10.0 [200/0] via 172.31.63.250, 00:01:07
192.168.203.13 is variably subnetted, 2 subnets, 2 masks
O 192.168.203.250 255.255.255.255
[110/75] via 172.16.15.250, 00:12:37, Serial0
B 192.168.203.13 255.255.255.0 [200/0] via 192.168.203.250, 00:01:08
192.168.250.15 255.255.255.252 is subnetted, 1 subnets
C 192.168.250.15 is directly connected, Serial0
O 192.168.250.14 [110/74] via 172.16.15.250, 00:12:37, Serial0
172.31.10.0 is variably subnetted, 2 subnets, 2 masks
B 172.31.10.0 255.255.0.0 [200/0] via 172.31.63.250, 00:01:08
O 192.168.213.63 255.255.255.252
[110/138] via 172.16.15.250, 00:12:37, Serial0
路由表看起來正常,但是沒有到達這些網路的途徑。中間的RTF不知道如何到達網路:
RTF#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * -
candidate default
Gateway of last resort is not set
192.168.203.13 255.255.255.255 is subnetted, 1 subnets
O 192.168.203.250 [110/11] via 192.168.203.14, 00:14:15, Ethernet0
192.168.250.15 255.255.255.252 is subnetted, 1 subnets
C 192.168.250.15 is directly connected, Serial1
C 192.168.250.14 is directly connected, Ethernet0
172.31.10.0 255.255.255.252 is subnetted, 1 subnets
O 192.168.213.63 [110/74] via 192.168.203.14, 00:14:15, Ethernet0
在這種情況下關閉同步時,問題仍然存在。但您稍後需要同步處理其他問題。在RTA上將BGP重分佈到OSPF中,度量為2000:
RTA#
hostname RTA
ip subnet-zero
interface Loopback0
ip address 192.168.203.250 255.255.255.0
interface Ethernet0
ip address 192.168.203.14 255.255.255.0
interface Serial0
ip address 192.168.128.63 255.255.255.252
router ospf 10
redistribute bgp 100 metric 2000 subnets
passive-interface Serial0
network 192.168.203.25 0.0.255.255 area 0
network 172.31.10.0 0.0.255.255 area 0
router bgp 100
network 192.168.203.25 mask 255.255.0.0
neighbor 172.31.63.250 remote-as 200
neighbor 192.168.250.2 remote-as 100
neighbor 192.168.250.2 update-source Loopback0
路由表如下所示:
RTB#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * -
candidate default
Gateway of last resort is not set
O E2 192.168.10.10 [110/2000] via 172.16.15.250, 00:00:14, Serial0
O E2 192.168.211.10 [110/2000] via 172.16.15.250, 00:00:14, Serial0
O E2 192.168.10.0 [110/2000] via 172.16.15.250, 00:00:14, Serial0
192.168.203.13 is variably subnetted, 2 subnets, 2 masks
O 192.168.203.250 255.255.255.255
[110/75] via 172.16.15.250, 00:00:15, Serial0
O E2 192.168.203.13 255.255.255.0
[110/2000] via 172.16.15.250, 00:00:15, Serial0
192.168.250.15 255.255.255.252 is subnetted, 2 subnets
C 172.31.250.8 is directly connected, Loopback1
C 192.168.250.15 is directly connected, Serial0
O 192.168.250.14 [110/74] via 172.16.15.250, 00:00:15, Serial0
172.31.10.0 is variably subnetted, 2 subnets, 2 masks
O E2 172.31.10.0 255.255.0.0 [110/2000] via 172.16.15.250,
00:00:15,Serial0
O 192.168.213.63 255.255.255.252
[110/138] via 172.16.15.250, 00:00:16, Serial0
BGP條目已消失,因為OSPF的距離比iBGP的要遠。OSPF距離為110,而iBGP距離為200。
關閉RTA上的同步,以便RTA可以通告192.168.250.15。由於掩碼的差異,RTA無法與OSPF同步,因此有必要執行此操作。關閉RTB上的同步,以便RTB可以通告192.168.203.13。由於相同的原因,此操作對RTB是必要的。
現在,打開RTB s1介面,檢視路由的外觀。此外,在RTB的串列介面1上啟用OSPF,使其成為被動介面。此步驟允許RTA透過IGP獲知下一跳192.168.10.5。如果不執行此步驟,則會出現路由環路,這是因為要到達下一跳192.168.10.5,您需要透過eBGP進行相反的路由。以下是RTA和RTB的新配置:
RTA#
hostname RTA
ip subnet-zero
interface Loopback0
ip address 192.168.203.250 255.255.255.0
interface Ethernet0
ip address 192.168.203.14 255.255.255.0
interface Serial0
ip address 192.168.128.63 255.255.255.252
router ospf 10
redistribute bgp 100 metric 2000 subnets
passive-interface Serial0
network 192.168.203.25 0.0.255.255 area 0
network 172.31.10.0 0.0.255.255 area 0
router bgp 100
no synchronization
network 192.168.203.13
network 192.168.250.14
neighbor 172.31.63.250 remote-as 200
neighbor 192.168.250.2 remote-as 100
neighbor 192.168.250.2 update-source Loopback0
RTB#
hostname RTB
ip subnet-zero
interface Serial0
ip address 192.168.250.2 255.255.255.252
interface Serial1
ip address 192.168.10.6 255.255.255.252
router ospf 10
redistribute bgp 100 metric 1000 subnets
passive-interface Serial1
network 192.168.203.25 0.0.255.255 area 0
network 192.168.208.0 0.0.255.255 area 0
router bgp 100
no synchronization
network 192.168.250.15
neighbor 192.168.10.5 remote-as 300
neighbor 192.168.203.250 remote-as 100
BGP表如下所示:
RTA#show ip bgp
BGP table version is 117, local router ID is 192.168.203.250
Status codes: s suppressed, d damped, h history, * valid, > best,
i -internal Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.31.10.0 172.31.63.250 0 0 200 i
*>i192.168.10.0 192.168.10.5 0 100 0 300 i
*>i192.168.211.10 192.168.10.5 100 0 300 500 i
* 172.31.63.250 0 200 400 500 i
*> 192.168.10.10 172.31.63.250 0 200 400 i
*> 192.168.203.13 0.0.0.0 0 32768 i
*> 192.168.250.14 0.0.0.0 0 32768 i
*>i192.168.250.15 192.168.250.2 0 100 0 i
RTB#show ip bgp
BGP table version is 12, local router ID is 172.16.15.2500
Status codes: s suppressed, d damped, h history, * valid, > best,
i -internal Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>i172.31.10.0 172.31.63.250 0 100 0 200 i
* 192.168.10.5 0 300 500 400
200 i
*> 192.168.10.0 192.168.10.5 0 0 300 i
*> 192.168.211.10 192.168.10.5 0 300 500 i
*>i192.168.10.10 172.31.63.250 100 0 200 400 i
* 192.168.10.5 0 300 500 400 i
*>i192.168.203.13 192.168.203.250 0 100 0 i
*>i192.168.250.14 192.168.203.250 0 100 0 i
*> 192.168.250.15 0.0.0.0 0 32768 i
有多種方法可以設計您的網路,以便與兩個不同的ISP(AS200和AS300)通訊。一種方法是擁有一個主ISP和一個備用ISP。您可以從其中一個ISP獲知部分路由,並獲知到兩個ISP的預設路由。在本示例中,您從AS200收到部分路由,只收到來自AS300的本地路由。RTA和RTB都會生成預設路由進入OSPF,RTB是首選路由,因為度量較低。透過這種方式,您可以平衡兩個ISP之間的傳出流量。
如果離開RTA的流量透過RTB返回,則可能發生潛在的不對稱。當您與兩個ISP通訊時,如果使用相同的IP地址池(即同一個主網),則可能會出現這種情況。由於採用聚合方式,您的整個AS在外觀上看起來就像是一個整體。可透過RTA或RTB進入網路。您會發現,即使您有多個Internet點,所有到AS的傳入流量都透過一個單點到達。在本例中,當您與兩個ISP通訊時,有兩個不同的主網。
非對稱性的另一個潛在原因是到達您的AS的通告路徑長度不同。也許一家服務提供商比另一家服務提供商更接近某個目的地。在示例中,由於路徑較短,因此始終透過RTA傳入以您的網路為目標的AS400流量。你可以試著做出那個決定。可以使用set as-path prepend 命令,以便將路徑編號附加到您的更新的前面,使路徑看起來更長一些。但是,使用本地優先順序、度量或權重等屬性,AS400可以將退出點設定為AS200。在這種情況下,您什麼也做不了。
此配置是所有路由器的最終配置:
RTA#
hostname RTA
ip subnet-zero
interface Loopback0
ip address 192.168.203.250 255.255.255.0
interface Ethernet0
ip address 192.168.203.14 255.255.255.0
interface Serial0
ip address 192.168.128.63 255.255.255.252
router ospf 10
redistribute bgp 100 metric 2000 subnets
passive-interface Serial0
network 192.168.203.25 0.0.255.255 area 0
network 172.31.10.0 0.0.255.255 area 0
default-information originate metric 2000
router bgp 100
no synchronization
network 192.168.203.13
network 192.168.250.14
neighbor 172.31.63.250 remote-as 200
neighbor 172.31.63.250 route-map setlocalpref in
neighbor 192.168.250.2 remote-as 100
neighbor 192.168.250.2 update-source Loopback0
ip classless
ip default-network 172.31.200.200
route-map setlocalpref permit 10
set local-preference 200
在RTA上,本地對來自AS200的路由的優先順序設定為200。此外,網路172.31.200.200是候選預設網路的選擇。使用ip default-network命令可以選擇預設網路。
此示例還對OSPF使用default-information originate 命令,將預設路由注入OSPF域。此範例也會將這個命令用於中間系統到中間系統通訊協定(IS-IS通訊協定)和BGP。對於RIP,會自動重分配到0.0.0.0的RIP,無需額外配置。對於IGRP和EIGRP,在將BGP重分配到IGRP和EIGRP之後,將預設資訊注入到IGP域。此外,使用IGRP和EIGRP,您可以將到0.0.0.0的靜態路由重分配到IGP域。
RTF#
hostname RTF
ip subnet-zero
interface Ethernet0
ip address 172.31.14.250 255.255.255.0
interface Serial1
ip address 172.16.15.250 255.255.255.252
router ospf 10
network 192.168.203.25 0.0.255.255 area 0
ip classless
RTB#
hostname RTB
ip subnet-zero
interface Loopback1
ip address 172.16.15.2500 255.255.255.252
interface Serial0
ip address 192.168.250.2 255.255.255.252
!
interface Serial1
ip address 192.168.10.6 255.255.255.252
router ospf 10
redistribute bgp 100 metric 1000 subnets
passive-interface Serial1
network 192.168.203.25 0.0.255.255 area 0
network 192.168.10.6 0.0.0.0 area 0
default-information originate metric 1000
!
router bgp 100
no synchronization
network 192.168.250.15
neighbor 192.168.10.5 remote-as 300
neighbor 192.168.10.5 route-map localonly in
neighbor 192.168.203.250 remote-as 100
!
ip classless
ip default-network 192.168.10.0
ip as-path access-list 1 permit ^300$
route-map localonly permit 10
match as-path 1
set local-preference 300
對於RTB,來自AS300的更新的本地優先順序設定為300。該值高於來自RTA的iBGP更新的本地優先順序值。透過這種方式,AS100為AS300的本地路由選擇RTB。RTB上的任何其他路由(如果存在其他路由)在內部傳輸時本地優先順序為100。此值低於來自RTA的本地優先順序200。RTA是首選項。
注意:您僅通告AS300本地路由。與^300$不匹配的任何路徑資訊都會丟棄。如果希望通告作為ISP客戶的本地路由和鄰居路由,請使用^300_[0-9]*。
以下是指示AS300本地路由的正規表示式的輸出:
RTB#show ip bgp regexp ^300$
BGP table version is 14, local router ID is 172.16.15.2500
Status codes: s suppressed, d damped, h history, * valid, > best, i -
internal
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 192.168.10.0 192.168.10.5 0 300 0 300
RTC#
hostname RTC
ip subnet-zero
interface Loopback0
ip address 192.168.128.6330 255.255.255.192
interface Serial2/0
ip address 172.16.31.5 255.255.255.252
!
interface Serial2/1
ip address 172.31.63.250 255.255.255.252
router bgp 200
network 172.31.10.0
neighbor 192.168.128.63 remote-as 100
neighbor 192.168.128.63 distribute-list 1 out
neighbor 172.31.63.213 remote-as 400
ip classless
access-list 1 deny 192.168.211.0 0.0.255.255
access-list 1 permit any
在RTC上,您將彙總172.31.10.0/16並指示要注入到AS100的特定路由。如果ISP拒絕執行此任務,則必須在AS100的傳入端進行過濾。
RTD#
hostname RTD
ip subnet-zero
interface Loopback0
ip address 192.168.208.174 255.255.255.192
!
interface Serial0/0
ip address 192.168.10.5 255.255.255.252
!
interface Serial0/1
ip address 192.168.10.2 255.255.255.252
router bgp 300
network 192.168.10.0
neighbor 192.168.10.1 remote-as 500
neighbor 192.168.10.6 remote-as 100
RTG#
hostname RTG
ip subnet-zero
interface Loopback0
ip address 192.168.211.19574 255.255.255.192
interface Serial0
ip address 192.168.10.1 255.255.255.252
interface Serial1
ip address 192.168.211.195 255.255.255.252
router bgp 500
network 192.168.211.10
aggregate-address 192.168.211.0 255.255.0.0 summary-only
neighbor 192.168.10.2 remote-as 300
neighbor 192.168.10.2 send-community
neighbor 192.168.10.2 route-map setcommunity out
neighbor 192.168.195.211 remote-as 400
!
ip classless
access-list 1 permit 192.168.211.0 0.0.255.255
access-list 2 permit any
route-map setcommunity permit 20
match ip address 2
!
route-map setcommunity permit 10
match ip address 1
set community no-export
有關如何使用社群過濾的演示位於RTG上。將社
no-export 區增加到RTD的192.168.211.0更新。透過這種方式,RTD不會將該路由導出到RTB。但是,在這種情況下,RTB無論如何都不會接受這些路由。
RTE#
hostname RTE
ip subnet-zero
interface Loopback0
ip address 192.168.200.10 255.255.255.0
interface Serial0
ip address 192.168.195.211 255.255.255.252
interface Serial1
ip address 172.31.63.213 255.255.255.252
router bgp 400
network 192.168.10.10
aggregate-address 172.31.200.200 255.255.0.0 summary-only
neighbor 172.16.31.5 remote-as 200
neighbor 192.168.211.195 remote-as 500
ip classless
RTE聚合172.31.200.200/16。以下是RTA、RTF和RTB的最終BGP和路由表:
RTA#show ip bgp
BGP table version is 21, local router ID is 192.168.203.250
Status codes: s suppressed, d damped, h history, * valid, > best, i -
internal
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.31.10.0 172.31.63.250 0 200 0 200 i
*>i192.168.10.0 192.168.10.5 0 300 0 300 i
*> 172.31.200.200/16 172.31.63.250 200 0 200 400 i
*> 192.168.203.13 0.0.0.0 0 32768 i
*> 192.168.250.14 0.0.0.0 0 32768 i
*>i192.168.250.15 192.168.250.2 0 100 0 i
RTA#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * -
candidate default
Gateway of last resort is 172.31.63.250 to network 172.31.200.200
192.168.10.0 is variably subnetted, 2 subnets, 2 masks
O E2 192.168.10.0 255.255.255.0
[110/1000] via 172.31.14.250, 00:41:25, Ethernet0
O 192.168.10.4 255.255.255.252
[110/138] via 172.31.14.250, 00:41:25, Ethernet0
C 192.168.203.13 is directly connected, Loopback0
192.168.250.15 is variably subnetted, 3 subnets, 3 masks
O 172.16.15.2500 255.255.255.255
[110/75] via 172.31.14.250, 00:41:25, Ethernet0
O 192.168.250.15 255.255.255.252
[110/74] via 172.31.14.250, 00:41:25, Ethernet0
B 192.168.250.15 255.255.255.0 [200/0] via 192.168.250.2, 00:41:25
C 192.168.250.14 is directly connected, Ethernet0
172.31.10.0 is variably subnetted, 2 subnets, 2 masks
B 172.31.10.0 255.255.0.0 [20/0] via 172.31.63.250, 00:41:26
C 192.168.213.63 255.255.255.252 is directly connected, Serial0
O*E2 0.0.0.0/0 [110/1000] via 172.31.14.250, Ethernet0/0
B* 172.31.200.200 255.255.0.0 [20/0] via 172.31.63.250, 00:02:38
RTF#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * -
candidate default
Gateway of last resort is 192.168.250.2 to network 0.0.0.0
192.168.10.0 is variably subnetted, 2 subnets, 2 masks
O E2 192.168.10.0 255.255.255.0
[110/1000] via 192.168.250.2, 00:48:50, Serial1
O 192.168.10.4 255.255.255.252
[110/128] via 192.168.250.2, 01:12:09, Serial1
192.168.203.13 is variably subnetted, 2 subnets, 2 masks
O 192.168.203.250 255.255.255.255
[110/11] via 192.168.203.14, 01:12:09, Ethernet0
O E2 192.168.203.13 255.255.255.0
[110/2000] via 192.168.203.14, 01:12:09, Ethernet0
192.168.250.15 is variably subnetted, 2 subnets, 2 masks
O 172.16.15.2500 255.255.255.255
[110/65] via 192.168.250.2, 01:12:09, Serial1
C 192.168.250.15 255.255.255.252 is directly connected, Serial1
C 192.168.250.14 is directly connected, Ethernet0
172.31.10.0 is variably subnetted, 2 subnets, 2 masks
O E2 172.31.10.0 255.255.0.0
[110/2000] via 192.168.203.14, 00:45:01, Ethernet0
O 192.168.213.63 255.255.255.252
[110/74] via 192.168.203.14, 01:12:11, Ethernet0
O E2 172.31.200.200 255.255.0.0 [110/2000] via 192.168.203.14, 00:03:47, Ethernet0
O*E2 0.0.0.0 0.0.0.0 [110/1000] via 192.168.250.2, 00:03:33, Serial1
注意:RTF路由表指示到達AS300本地網路(例如192.168.10.0)的方法是透過RTB。到達其它已知網路(例如172.31.200.200)的方法是透過RTA。最後選用網關設定為RTB。如果RTB和RTD之間的連線發生問題,RTA通告的預設值將以2000的度量開始。
RTB#show ip bgp
BGP table version is 14, local router ID is 172.16.15.2500
Status codes: s suppressed, d damped, h history, * valid, > best, i -
internal
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>i172.31.10.0 172.31.63.250 0 200 0 200 i
*> 192.168.10.0 192.168.10.5 0 300 0 300 i
*>i172.31.200.200/16 172.31.63.250 200 0 200 400 i
*>i192.168.203.13 192.168.203.250 0 100 0 i
*>i192.168.250.14 192.168.203.250 0 100 0 i
*> 192.168.250.15 0.0.0.0 0 32768 i
RTB#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * -
candidate default
Gateway of last resort is 192.168.10.5 to network 192.168.10.0
* 192.168.10.0 is variably subnetted, 2 subnets, 2 masks
B* 192.168.10.0 255.255.255.0 [20/0] via 192.168.10.5, 00:50:46
C 192.168.10.4 255.255.255.252 is directly connected, Serial1
192.168.203.13 is variably subnetted, 2 subnets, 2 masks
O 192.168.203.250 255.255.255.255
[110/75] via 172.16.15.250, 01:20:33, Serial0
O E2 192.168.203.13 255.255.255.0
[110/2000] via 172.16.15.250, 01:15:40, Serial0
192.168.250.15 255.255.255.252 is subnetted, 2 subnets
C 172.31.250.8 is directly connected, Loopback1
C 192.168.250.15 is directly connected, Serial0
O 192.168.250.14 [110/74] via 172.16.15.250, 01:20:33, Serial0
172.31.10.0 is variably subnetted, 2 subnets, 2 masks
O E2 172.31.10.0 255.255.0.0 [110/2000] via 172.16.15.250, 00:46:55, Serial0
O 192.168.213.63 255.255.255.252
[110/138] via 172.16.15.250, 01:20:34, Serial0
O*E2 0.0.0.0/0 [110/2000] via 172.16.15.250, 00:08:33, Serial0
O E2 172.31.200.200 255.255.0.0 [110/2000] via 172.16.15.250, 00:05:42, Serial0
相關資訊
修訂 | 發佈日期 | 意見 |
---|---|---|
4.0 |
08-Jun-2023 |
更換所有PII,更新所有映像以刪除PII、格式化文章和固定CCW警報。重新認證。 |
3.0 |
17-Mar-2023 |
所有PII已替換、已格式化的文章和固定CCW警報。重新認證。 |
1.0 |
27-Aug-2002 |
初始版本 |